聊天模型
聊天模型是语言模型的一种变体。虽然聊天模型在底层使用语言模型,但它们所暴露的接口略有不同。它们不像“输入文本,输出文本”的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模型进行翻译的示例代码。