使用Google的PaLM API构建聊天机器人

最新资讯1年前 (2023)发布 AI观察员
205 0 0

vertexai.preview.language_models,该库有多个类,包括ChatModel,TextEmbedding和TextGenerationModel。在本文中,我们将重点介绍 ChatModel 库,其中 PaLM 模型将充当物理老师回答我们的问题。

作为第一步,让我们从库中导入相应的类。

from vertexai.preview.language_models import ChatModel, InputOutputTextPair

类负责接受提示并返回答案。InputOutputTextPair可以轻松创建一对问题和答案,为聊天机器人提供示例。

然后,我们将根据预先训练的模型 chat-bison@001 初始化对象,该模型针对类似聊天的对话进行了优化。

model = ChatModel.from_pretrained("chat-bison@001")

下一步是定义一个函数,该函数接受提示作为输入,并将模型生成的响应作为输出返回。

def get_completion(msg):
   
    ctx="My name is Jani. You are a physics teacher, knowledgeable about the gravitational theory"   
   
    exp=[
        InputOutputTextPair(
            input_text="How you define gravity?",
            output_text="Gravity is a force that attracts a body towards the centre of the earth or any other physical body having mass."
        ),
    ]   
    chat = model.start_chat(context=ctx,examples=exp)

    response = chat.send_message(msg,max_output_tokens=256,temperature=0.2)

    return response
使用Google的PaLM API构建聊天机器人

IDG

这种方法抓住了构建聊天机器人的本质。它包含三个要素,对于生成有意义且相关的响应至关重要:

  • 上下文:这有助于我们自定义聊天模型的行为。它用于添加其他上下文,以指导模型有关对话的关键主题或主题。虽然是可选的,但上下文在生成准确的响应方面起着重要作用。
  • 示例:演示给定输入的示例模型输出的输入-输出对列表是聊天提示的示例。您可以使用示例来更改模型响应特定问题的方式。
  • 消息:聊天提示的消息是作者内容对的列表。模型响应最新的消息,这是消息列表中的最后一对。聊天会话历史记录由最后一对之前的对组成。

请注意我们如何定义上下文和示例。由于我们正在构建一个专门研究引力理论的物理聊天机器人,因此上下文和示例都引用了该主题。

PaLM 模型接受令牌作为定义提示和响应大小的输入参数。令牌大约为四个字符。100 个标记大约相当于 60 到 80 个单词。对于此对话,我们将 max_output_tokens 参数设置为 250。您可以根据您的使用案例增加此值。请注意,令牌限制决定了聊天会话历史记录中保留的消息数。

模型的创造力由下一个参数温度定义。此选项确定令牌选择的随机性。对于需要特定且创意较少的响应的提示,温度越低越好,而较高的温度可以产生更多样化和创造性的响应。该值的范围为 0 到 1。我们将其设置为 0.2,因为我们需要准确性。

方法就绪后,让我们构造提示。

prompt="What is the relationship between gravity and weight?"

Invoke the method by passing the prompt.
response=get_completion(prompt)
print(response)
response=get_completion(prompt)
使用Google的PaLM API构建聊天机器人

IDG

让我们问另一个与重力有关的问题。

prompt="What is gravity according to Einstein?"

response=get_completion(prompt)
print(response.text)
使用Google的PaLM API构建聊天机器人

IDG

以下是完整的代码供您参考。

from vertexai.preview.language_models import ChatModel, InputOutputTextPair

model = ChatModel.from_pretrained("chat-bison@001")

def get_completion(msg):
   
    ctx="My name is Jani. You are a physics teacher, knowledgeable about the gravitational theory"   

    exp=[
        InputOutputTextPair(
            input_text="How you define gravity?",
            output_text="Gravity is a force that attracts a body towards the centre of the earth or any other physical body having mass."
        ),
    ]   
    chat = model.start_chat(context=ctx,examples=exp)

    response = chat.send_message(msg,max_output_tokens=256,temperature=0.2)

    return response

prompt="What is the relationship between gravity and weight?"
response=get_completion(prompt)
print(response.text)

prompt="What is gravity according to Einstein?"
response=get_completion(prompt)
print(response.text)

我们仅用几行代码构建了一个基于 PaLM 2 大型语言模型的聊天机器人。

© 版权声明

相关文章

天猫U特购  京东优惠购        京东优惠    天猫优惠