langchain中的chat models介绍和使用实例实用指南
平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“langchain中的ch@t models介绍和采用实例”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。
目录
- 简介
- ch@t models的采用
- 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功能详解
-
08.22
天外世界2尸体变态者成就如何做-天外世界2如何做尸体变态者成就
-
08.22
刀剑缭乱神剑如何进行PK-刀剑缭乱神剑PK的做法
-
08.22
神奇海洋4月4日今日答案2026
-
08.22
蚂蚁新村4月4日答案更新2026
-
08.22
《红色沙漠》牧场牲畜购买来源一览 牧场牲畜在哪买
-
08.22
DNF2026春节守护者VP有哪些改动-2026春节DNF守护者VP改动详情
-
-
下载
- |
-
-
下载
- 《行尸走肉第一章》免安装中文汉化硬盘版下载
- 单机|436 MB
- 一款以动作冒险为主题的游戏
-
-
下载
- 《街头霸王X铁拳》免安装中文汉化硬盘版下载
- 单机|111MB
- 一款非常好玩的格斗游戏
-
-
下载
- |
-
-
下载
- 《暗黑破坏神3》免安装繁体中文正式版下载
- 单机|7630 MB
- 一款以角色扮演为主题的游戏
-
-
下载
- 《马克思佩恩3》免安装硬盘版下载
- 单机|27033 MB
- 一款以第三人称射击为主题的游戏