一架梯子,一头程序猿,仰望星空!
LangChain教程(Python版本) > 内容正文

LangChain 聊天模型


聊天模型(Chat Models)

聊天模型是语言模型的一种变体。虽然聊天模型在底层使用的也是语言模型(LLM),但它们所公开的接口有些不同。它们不是通过 “输入文本,输出文本” API 公开接口,而是通过 “聊天消息” 作为输入和输出的接口,聊天模型的整个交互过程类似互相发送聊天消息的过程。

聊天模型入门

本章节基于OpenAI模型进行讲解。

配置

langChain默认没有安装模型依赖,这里首先安装 OpenAI 的 Python 包:

pip install langchain-openai

访问 API 需要一个 API 密钥,可以通过环境变量配置,下面是linux环境变量设置方式

export OPENAI_API_KEY="..."

如果您不想设置环境变量,可以通过在初始化 OpenAI LLM 类时直接通过 openai_api_key 命名参数传递密钥:

from langchain_openai import ChatOpenAI

chat = ChatOpenAI(openai_api_key="...")

否则,可以不带任何参数初始化:

from langchain_openai import ChatOpenAI
chat = ChatOpenAI()

消息

聊天模型接口基于消息而不是原始文本。LangChain 当前支持的消息类型包括 AIMessageHumanMessageSystemMessageFunctionMessageChatMessage,其中 ChatMessage 需要一个任意的角色参数。大多数情况下,你只会处理 HumanMessageAIMessageSystemMessage

LCEL

聊天模型(Chat model)实现了Runnable interface接口,支持支持invoke, ainvoke, stream, astream, batch, abatch, astream_log等方法调用,因此聊天模型(Chat model)也可以用于LangChain Expression Language (LCEL)表达式。

聊天模型接受List[BaseMessage]作为输入,或接受可以强制为消息的对象,包括str(转换为HumanMessage)和PromptValue

from langchain_core.messages import HumanMessage, SystemMessage

# 定义消息数组,这里包含两条消息,一个system消息告诉ai扮演什么角色,一个humen消息,代表用户的问题。
messages = [
    SystemMessage(content="你是个乐于助人的助手"),
    HumanMessage(content="模型正则化的目的是什么?"),
]

通过消息数组调用模型

chat.invoke(messages)

返回示例

AIMessage(content="AI返回内容...详情忽略..")

流式输出AI响应结果

for chunk in chat.stream(messages):
    print(chunk.content, end="", flush=True)


关联主题