一.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_communityfrom langchain_community.llms.tongyi import Tongyi# 不用qwen3-max因为qwen3-max是聊天模型qwen-max是大语言模型model Tongyi(modelqwen-max)# 调用invoke向模型提问res model.stream(input你是谁呀能做什么)for chunk in res:print(chunk, end, flushTrue)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.通用Prompts4.1zero-shotLangChain提供了PromptTemplate类用来协助优化提示词。PromptTemplate表示提示词模板可以构建一个自定义的基础提示词模板支持变量的注入最终生成所需的提示词。4.2FewShotPromptTemplate4.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接口的子类如下类的继承关系