详情

首页手游攻略 langchain中的chat models介绍和使用实例实用指南

langchain中的chat models介绍和使用实例实用指南

佚名 2026-08-22 16:10:01

平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“langchain中的ch@t models介绍和采用实例”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。

简介

之前我们介绍了LLM模式,这种模式是就是文本输入,随后文本输出。

理解这一步时,ch@t models是基于LLM模式的更加高级的模式。他的输入和输出是格式化的ch@t messages。

一起来看看如何在langchain中采用caht models吧。

ch@t models的采用

落到代码里,首先langchain对ch@t models下兼容的模型就少很多了。一方面是可能有些语言模型本身是不兼容ch@t models的。另外一方面langchain也还是在一个发展中的过程,所以有些模型还需适配。

实际处理时,目前看来langchain兼容的ch@t models有:ChatAnthropic,AzureChatOpenAI,ChatVertexAI,JinaChat,ChatOpenAI和PromptLayerChatOpenAI这几种。

实际处理时,langchain把ch@t消息分成了这几种:AIMessage, HumanMessage, SystemMessage 和 ChatMessage。

理解这一步时,HumanMessage就是用户输入的消息,AIMessage是大语言模型的消息,SystemMessage是系统的消息。ChatMessage是一种能够自定义类型的消息。

在采用的时候,只需在ch@t中传入对应的消息即可:

from langchain.ch@t_models import ChatOpenAI
ch@t = ChatOpenAI()
messages = [
    SystemMessage(content="你是一个小说家"),
    HumanMessage(content="帮我写篇小说")
]
ch@t(messages)

当然和LLM一样,你也能够采用批量模式如下所示:

batch_messages = [
    [
        SystemMessage(content="你是一个小说家"),
        HumanMessage(content="帮我写篇小说")
    ],
    [
        SystemMessage(content="你是一个诗人"),
        HumanMessage(content="帮我写首诗")
    ],
]
result = [email protected](batch_messages)
result

ch@t models的高级功能

其实和LLM类似,基本上LLM有的高级功能ch@t models都有。

实际处理时,比如有用的比如缓存功能,能够缓存之前的输入和输出,避免每次都调用LLM,从而能够减少token的开销。

以InMemoryCache为例子:

from langchain.cache import InMemoryCache
langchain.llm_cache = InMemoryCache()
# 第一次调用,不是用cache
llm.predict("Tell me a joke")
# 第二次调用,使用cache
llm.predict("Tell me a joke")

理解这一步时,除了InMemoryCache,langchain还兼容FullLLMCache,SQLAlchemyCache,SQLiteCache和RedisCache等等。

同样的,ch@t models也是兼容流模式的:

from langchain.ch@t_models import ChatOpenAI
from langchain.schema import (
    HumanMessage,
)
from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler
ch@t = ChatOpenAI(streaming=True, callbacks=[StreamingStdOutCallbackHandler()], temperature=0)
resp = ch@t([HumanMessage(content="帮忙我写首诗")])

落到代码里,只需在构建ChatOpenAI的时候,把StreamingStdOutCallbackHandler传入callbacks即可。

在这个场景下,若要在ch@t models中采用PromptTemplate,因为ch@t models的消息格式跟LLM是不一样的,所以对应的PromptTemplate也是不一样的。

和对应的ch@t models消息对应的PromptTemplate是ChatPromptTemplate,SystemMessagePromptTemplate,
从实现思路看,AIMessagePromptTemplate和HumanMessagePromptTemplate。

我们看下是如何采用prompt template来构建prompt:

from langchain import PromptTemplate
from langchain.prompts.ch@t import (
    ChatPromptTemplate,
    SystemMessagePromptTemplate,
    AIMessagePromptTemplate,
    HumanMessagePromptTemplate,
)
# 构建各种prompt
template="You are a helpful assistant that translates {input_language} to {output_language}."
system_message_prompt = SystemMessagePromptTemplate.from_template(template)
human_template="{text}"
human_message_prompt = HumanMessagePromptTemplate.from_template(human_template)
ch@t_prompt = ChatPromptTemplate.from_messages([system_message_prompt, human_message_prompt])
# 使用format_prompt把prompt传给ch@t
ch@t(ch@t_prompt.format_prompt(input_language="English", output_language="French", text="I love programming.").to_messages())

从实现思路看,ch@t models下消息构建确实比直接采用LLM要复杂点,大家在采用的时候需留意。

总结

从实现思路看,ch@t models是LLM的高阶表现形式。如果我们需进行对话模型的话,就能够考虑采用这个。

您可能感兴趣的文章:
  • langchain中LLM模型采用详解
  • langchain采用自定义example selector示例解析
  • 大语言模型的开发利器langchainan安装采用更快入门学习
  • langchain Prompt大语言模型采用技巧详解
  • Javascript版Langchain入门教程解析
  • ChatGLM 集成LangChain工具详解
  • LangChain简化ChatGPT工程复杂度采用详解
  • Langchain集成管理prompt功能详解
点击查看更多
推荐专题
热门阅读