一.LangChain组件

1.Models:大语言模型的使用

LangChain模型组件提供了与各种模型的集成,并为所有模型提供一个精简的统一接口。 LangChain目前支持三种类型的模型:LLMs(大语言模型)、Chat Models(聊天模型)、Embeddings Models(嵌入模型)

  • LLMs:是技术范畴的统称,指基于大参数量、海量文本训练的 Transformer 架构模型,核心能力是理解和生成自然语言,主要服务于文本生成场景
  • 聊天模型:是应用范畴的细分,是专为对话场景优化的 LLMs,核心能力是模拟人类对话的轮次交互,主要服务于聊天场景
  • 文本嵌入模型: 文本嵌入模型接收文本作为输入, 得到文本的向量.

通过: from langchain_community.llm.tongyi import Tongyi 导入通义千问系列的支持

           from langchain_ollama import OllamaLLM 导入Ollama系列的支持

          创建好模型对象后,通过invoke对模型发起提问 并可以直接打印输出结果

 1.1.Models的流式输出

如果需要流式输出结果,需要将模型的invoke方法改为stream方法即可。

  • invoke方法:一次型返回完整结果
  • stream方法:逐段返回结果,流式输出

# langchain_community

from langchain_community.llms.tongyi import Tongyi

# 不用qwen3-max,因为qwen3-max是聊天模型,qwen-max是大语言模型

model = Tongyi(model="qwen-max")

# 调用invoke向模型提问

res = model.stream(input="你是谁呀能做什么?")

for chunk in res:    

         print(chunk, end="", flush=True)

2.Models:聊天模型的使用Chat Models (聊天模型)

聊天消息包含下面几种类型,使用时需要按照约定传入合适的值:

  • AIMessage: 就是 AI 输出的消息,可以是针对问题的回答. (OpenAI库中的assistant角色)
  • HumanMessage: 人类消息就是用户信息,由人给出的信息发送给LLMs的提示信息,比如“实现一个快速排序方法”. (OpenAI库中的user角色)
  • SystemMessage: 可以用于指定模型具体所处的环境和背景,如角色扮演等。你可以在这里给出具体的指示,比如“作为一个代码专家”,或者“返回json格式”. (OpenAI库中的system角色)

messages = [    
          SystemMessage(content="你是一名来自边塞的诗人"),  

          HumanMessage(content="给我写一首唐诗"),    

          AIMessage(content="锄禾日当午,汗滴禾下土,谁知盘中餐,粒粒皆辛苦。"),                                HumanMessage(content="给予你上一首的格式,再来一首")

]

2.1Models:消息的简写形式

SystemMessage、HumanMessage、AIMessage可以有如下的简写形式

是动态的,需要在运行时 由LangChain内部机制转换为Message类对象

由于是动态,需要转换步骤 所以简写形式支持内部填充{变量}占位 可在运行时填充具体值(后续学习提示词模板时用到)

3.Models:嵌入模型的使用Embeddings Models(文本嵌入模型)

Embeddings Models嵌入模型的特点:将字符串作为输入,返回一个浮点数的列表(向量)。 在NLP中,Embedding的作用就是将数据进行文本向量化。

阿里云千问模型访问方式:

总结:

4.通用Prompts

4.1zero-shot

LangChain提供了PromptTemplate类,用来协助优化提示词。

PromptTemplate表示提示词模板,可以构建一个自定义的基础提示词模板,支持变量的注入,最终生成所需的提示词。

4.2FewShotPromptTemplate

4.3ChatPromptTemplate的使用

  • PromptTemplate:通用提示词模板,支持动态注入信息。
  • FewShotPromptTemplate:支持基于模板注入任意数量的示例信息。
  • ChatPromptTemplate:支持注入任意数量的历史会话信息。

通过from_messages方法,从列表中获取多轮次会话作为聊天的基础模板

PS: 前面PromptTemplate类用的from_template仅能接入一条消息,而from_messages可以接入一个list的消息

五.模板类的format和invoke方法

PromptTemplate、FewShotPromptTemplate、ChatPromptTemplate都拥有format和invoke这2类方法。

六.chains 链的基础使用

「将组件串联,上一个组件的输出作为下一个组件的输入」是 LangChain 链的核心工作原理,这也是链式调用的核心价值:实现数据的自动化流转与组件的协同工作,如下。

chain = prompt_template | model

核心前提:即Runnable子类对象才能入链(以及Callable、Mapping接口子类对象也可加入(后续了解用的不多))。 我们目前所学习到的组件,均是Runnable接口的子类,如下类的继承关系:

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐