写点什么

LangChain 系列 -03. LLM 聊天模型

作者:无人之路
  • 2023-09-12
    浙江
  • 本文字数:845 字

    阅读完需:约 3 分钟

LangChain系列-03. LLM聊天模型

LangChain系列-03. LLM聊天模型


Chat Models


上面的 LLM 例子都是使用的 text in, text out 方式,直接向 LLM 输入 prompt text,让其返回 generation text.

此外,LangChain 还提供对话模型,它是 LLM 的一个变种,其底层还是 OpenAI 这样的 LLM,只是其编程接口与 text in, text out 的风格有所不同,它使用的是 chat messages 作为输入和输出。

我们先看一下原来的 OpenAI 模型:



注意上面的代码运行时会有一个 warning:

UserWarning: You are trying to use a chat model. This way of initializing it is no longer supported. Instead, please use: from langchain.chat_models import ChatOpenAI

也就是说 gpt-3.5-turbo 本身是一个对话模型,需要用 chat_models 的接口来调用。下面是对应的代码:




对话模型接受一个 Message 的数组作为输入,现在支持的 Message 类型包括:

  • AIMessage: AI 模型输出的 Message

  • HumanMessage: 用户输入的 Message,往往作为 in-context learning 的输入,给 AI 做 few-shot

  • SystemMessage: 设定 AI 模型的 role 用到的 Message

  • ChatMessage: 接受任意角色参数

一般只用到 AIMessage、HumanMessage 和 SystemMessage。下面是一个例子:



可以一次传多组信息





同样可以通过 llm_output 获取 token 使用情况:



用 PromptTemplate 来生成 Prompt


可以借助 PromptTemplate 来生成对话的 Prompt。下面是一个例子:想要将一种语言翻译成另一种语言。



将"I love programming." 从英语翻译成意大利语,得到:"Amo programmare."



我也不知道是否正确,为了验证,将其从意大利语再翻译成中文,得到“我喜欢编程。”,这就对了!



上面使用了 SystemMessagePromptTemplate、HumanMessagePromptTemplate、ChatPromptTemplate 来使用 PromptTemplate,还能更直接使用 PromptTemplate 来创建:



后续会有更详尽的教程来探讨 Prompt 的生成。


使用 LLMChain 来对话


可以直接使用 LLMChain 这个 Chain 来与 LLM 对话,它将 llm 与 prompt 串联起来。



Streaming 返回


可以通过 ChatOpenAI 的回调出来实现对话流式输出,它会逐个字符输出结果:



未完待续。。。

LangChain系列-02. LLM基础

LangChain系列-01 是什么

发布于: 刚刚阅读数: 3
用户头像

无人之路

关注

无人之路,自己领航。 2018-04-25 加入

喜欢写点东西的数据人,自动驾驶从业者。公众号同名,欢迎加微信yangls06交流。

评论

发布
暂无评论
LangChain系列-03. LLM聊天模型_大模型_无人之路_InfoQ写作社区