LangChain文档 语言模型-对话模型

388 阅读2分钟

聊天模型

聊天模型是语言模型的一种变体。虽然聊天模型在底层使用语言模型,但它们所暴露的接口略有不同。它们不像“输入文本,输出文本”的API那样,而是提供了一个以“聊天消息”为输入和输出的接口。

由于聊天模型API相对较新,因此我们仍在探索正确的抽象方法。

以下部分提供了相关文档:

操作指南:核心功能(如流式传输、创建聊天提示等)的详细说明。

集成:如何使用不同的聊天模型提供者(OpenAI、Anthropic等)。

入门

设置

要开始,我们需要安装OpenAI的Python包:

!pip install openai

接下来,我们需要获取API密钥,您可以通过创建一个帐户并在此处获取API密钥。获取到API密钥后,我们需要将其设置为环境变量:

import os
os.environ["OPENAI_API_KEY"] = "YOUR_API_KEY"

如果您不想设置环境变量,您可以直接在初始化ChatOpenAI类时传递API密钥:

from langchain.chat_models import ChatOpenAI

chat = ChatOpenAI(openai_api_key="YOUR_API_KEY")

或者,您可以在初始化时不传递任何参数:

from langchain.chat_models import ChatOpenAI

chat = ChatOpenAI()

消息

Chat模型的接口是基于消息而不是原始文本的。

目前在LangChain中支持的消息类型有AIMessage、HumanMessage、SystemMessage和ChatMessage,其中ChatMessage接受一个任意的角色参数。大多数情况下,您只需要使用HumanMessage、AIMessage和SystemMessage。

call

将消息传递给Chat模型,即可获得聊天结果。响应将是一个消息。

from langchain.schema import AIMessage, HumanMessage, SystemMessage

result = chat([HumanMessage(content="Translate this sentence from English to French: I love programming.")])
print(result)

OpenAI的Chat模型支持将多个消息作为输入。有关更多信息,请参阅此处

下面是一个将系统消息和用户消息发送到Chat模型的示例:

messages = [    SystemMessage(content="You are a helpful assistant that translates English to French."),    HumanMessage(content="I love programming.")]

result = chat(messages)
print(result)

生成

您还可以使用generate方法为多组消息生成聊天结果。这将返回一个LLMResult对象,其中包含额外的消息参数。

batch_messages = [    [        SystemMessage(content="You are a helpful assistant that translates English to French."),        HumanMessage(content="I love programming.")    ],
    [        SystemMessage(content="You are a helpful assistant that translates English to French."),        HumanMessage(content="I love artificial intelligence.")    ],
]

result = chat.generate(batch_messages)
print(result)

您可以从LLMResult对象中获取诸如token使用情况等信息。

print(result.llm_output['token_usage'])

结果将类似于:

result.llm_output
{'prompt_tokens': 57, 'completion_tokens': 20, 'total_tokens': 77}

以上是使用Chat模型进行翻译的示例代码。