第二讲 | LangChain快速入门:模型调用、流式输出与Embedding
一、前言
理论铺垫完成,正式进入LangChain框架学习。LangChain作为大应用开发主流框架,封装了模型、向量、链路等大量组件。本讲从最基础功能入手,演示原生大模型、对话模型调用方式,同时讲解流式输出实现打字机效果,并上手嵌入模型Embedding,理解文本如何转变为向量,这是后续向量检索必不可少的基础能力。
二、LangChain框架定位
LangChain本身不是大语言模型,而是一套开发工具库。
核心能力一览:统一对接各类大模型、标准化提示词管理、文档加载与分割、向量数据库适配、链路编排、对话记忆、智能Agent开发。
三、LangChain调用大语言模型
LLM(大语言模型):是技术范畴的统称,指基于大参数量、海量文本训练的Transformer架构模型,核心能力是理解和生成自然语言,主要服务于文本生成场景,输入纯文本,输出纯文本。
⭐阿里云大语言模型的访问(以通义千问为例)
from langchain_community.llms.tongyi import Tongyi
# 实例化模型
llm = Tongyi(model='qwen-max')
# 模型推理
res = llm.invoke("简单介绍LangChain框架)
print(res)
⭐Ollama本地大语言模型的访问
如果要访问本地Ollama的模型,简单更改一下代码。
通过langchain_ollama包导入OllamaLLM类即可(请确保Ollama已经启动并提前下载好要使用的模型)。
from langchain_ollama import OllamaLLM
model = OllamaLLM(model="qwen3:4b")
# 通过invoke方法去调用模型
res = model.invoke(input="简单介绍LangChain框架)
print(res)
四、LangChain调用聊天模型(ChatModel)
日常开发、问答场景优先使用ChatModel,针对对话场景优化。返回结果需要读取.content获取文本。
聊天消息包含下面几种类型,使用时需要按照约定传入合适的值:
-AIMessage:就是AI输出的消息,可以是针对问题的回答(OpenAI库中的assistant角色)
-HumanMessage:人类消息就是用户消息,由人给出的信息发送给LLM的提示信息,比如“实现一个快速排序方法”(OpenAI库中的user角色)
-SystemMessage:可以用于指定模型具体所处的环境和背景,如角色扮演等。你可以在这里给出具体的指示,比如“作为一个代码专家”,或者“返回json格式”(OpenAI库中的system角色)
演示单独使用HumanMessage
from langchain_community.chat_models.tongyi import ChatTongyi
from langchain_core.messages import HumanMessage
# 初始化模型
chat = ChatTongyi(model="qwen3-max")
# 准备消息list
messages = [
HumanMessage(content="给我写一首唐诗")
]
# 流式输出
for chunk in chat.stream(input=messages):
print(chunk.content, end="", flush=True)
演示SystemMessage+HumanMessage
from langchain_community.chat_models.tongyi import ChatTongyi
from langchain_core.messages import HumanMessage
# 初始化模型
chat = ChatTongyi(model="qwen3-max")
# 准备消息list
messages = [
SystemMessage(content="你是一名边塞诗人"),
HumanMessage(content="给我写一首唐诗")
]
# 流式输出
for chunk in chat.stream(input=messages):
print(chunk.content, end="", flush=True)
演示SystemMessage+HumanMessage+AIMessage
from langchain_community.chat_models.tongyi import ChatTongyi
from langchain_core.messages import HumanMessage
# 初始化模型
chat = ChatTongyi(model="qwen3-max")
# 准备消息list
messages = [
SystemMessage(content="你是一名边塞诗人"),
HumanMessage(content="给我写一首唐诗"),
AIMessage(content="锄禾日当午,汗滴禾下土,谁知盘中餐,粒粒皆辛苦。"),
HumanMessage(content="给予你上一首的格式,再来一首")
]
# 流式输出
for chunk in chat.stream(input=messages):
print(chunk.content, end="", flush=True)
五、LangChain模型的流式输出
模型对象有2个方法去调用模型,如果需要流式输出结果,需要将模型的invoke方法改为stream方法即可。
-invoke,调用模型,一次性返回完整结果
-stream,调用模型,逐段流式输出
# langchain_community
from langchain_community.llms.tongyi import Tongyi
# 不用qwen3-max,因为qwen3-max是聊天模型,qwen-max是大语言模型
model = Tongyi(model="qwen-max")
# 调用stream向模型提问
res = model.stream(input="你是谁能做什么?")
for chunk in res:
print(chunk, end="", flush=True)
六、LangChain调用嵌入模型(Embedding)
Embedding Models嵌入模型的特点:将字符串作为输入,返回一个浮点数的列表(向量)。
在NPL中,Embedding的作用就是将数据进行文本向量化。
阿里云千问模型访问方式:
from langchain_community.embeddings import DashScopeEmbeddings
# 初始化嵌入模型对象,其默认使用模型是:text-embedding-v1
embed = DashScopeEmbeddings()
# 测试
print(embed.embed_query("我喜欢你"))
print(embed.embed_documents(['我喜欢你', '晚上吃啥', '你睡了吗']))
本地Ollama模型访问方式:
通过langchain_ollama导入OllamaEmbeddings使用,其余不变。
from langchain_ollama import OllamaEmbeddings
# 初始化嵌入模型对象,其默认使用模型是:text-embedding-v1
embed = OllamaEmbeddings(model="qwen3-embedding")
# 测试
print(embed.embed_query("我喜欢你"))
print(embed.embed_documents(['我喜欢你', '晚上吃啥', '你睡了吗']))
目前所掌握的LangChain API如下:
| 方式 | 大语言模型 | 聊天模型 | 文本嵌入模型 |
| 阿里云千问 |
from langchain_community.llms.tongyi import Tongyi |
from langchain_community.chat_models.tongyi import ChatTongyi |
from langchain_community.embeddings import DashScopeEmbeddings |
| Ollama本地模型 |
from langchain_ollama import OllamaLLM |
from langchain_ollama import ChatOllama |
from langchain_ollama import OllamaEmbeddings |
| 方法 | invoke批量/stream流式 | invoke批量/stream流式 |
embed_query单次转换/ embed_documents批量转换 |
七、LangChain消息的简写模式
messages = [
SystemMessage(content="内容"),
HumanMessage(content="内容"),
AIMessage(content="内容"),
]
是静态的,一步到位直接得到Message类对象
messages = [
("system", "内容"),
("human", "内容"),
("ai", "内容"),
]
简写模式如上,是动态的,需要在运行时由LangChain内部机制转换为Message类对象
由于是动态,需要转换步骤,所以简写形式支持内部填充{变量}占位,可在运行时填充具体值。
八、结语
本讲正式进入LangChain实操,掌握了大模型、对话模型、流式输出、Embedding嵌入模型四大基础能力。理解了文本→向量的转换过程,熟悉框架最核心的调用范式。所有RAG项目的底层调用逻辑,都在本讲完成铺垫。
更多推荐



所有评论(0)