欢迎各位点赞**👍** 评论**✍收藏⭐**
1. LangChain快速上手
LangChain ,就是一个用于开发由大模型语言(LLM)驱动的应用程序框架
LangChain 通过将自然语言处理流程拆解为标准化组件
2.LanguageChain简单使用
2.1环境说明
python
Python 3.13
requirements.txt(文件包,后续都会用到)
langchain-openai==0.3.33
langchain==0.3.27
langchain-deepseek==0.1.4
langchain-ollama==0.3.6
langchain-tavily==0.2.12
langchain-chroma==0.2.5
langchain-community==0.3.22
nltk==3.9.2
langchain-redis==0.2.4
unstructured==0.18.15
markdown==3.9
redisvl==0.10.0
2.2 定义大模型
- 安装OpenAI包
python
pip install -U langchain-openai
- 定义大模型(API_KEY 是敏感数据,做了敏感处理)
python
from langchain_openai import ChatOpenAI
model = ChatOpenAI(
base_url = "https://dashscope.aliyuncs.com/compatible-mode/v1",
model = "qwen3.7-max",
api_key = "sk-a159****************fa09f" #敏感处理
)
2.3 定义消息列表
python
from langchain_core.messages import SystemMessage, HumanMessage
message = [
SystemMessage(content="你现在是一名医生!"),
HumanMessage(content="你是谁!")
]
SystemMessage :为系统消息,作为消息列表中第一条传入,启动 AI 行为的消息,可省略
HumanMessage:为用户消息,来自用户,传递到大模型的消息
2.4 调用大模型
moder 是 LangChain Runnable 接口的实例,说明moder提供一个标准可交互的接口,简单调用模型,将消息传递给 .invoke 方法,由 .invoke 方法进行大模型调用,返回 AIMessage 类型的结果
python
result = model.invoke(message)
print(result)
输出结果(json格式化后,方便观察)
python
{
"content": "您好!我是一名医生(AI医疗助手)。请问您今天有什么身体不适,或者有什么医疗健康方面的问题需要咨询吗?\n\n无论是症状分析、疾病科普、用药指导还是日常健康管理,我都会尽力为您提供专业的建议和帮助。您可以详细告诉我您的症状、持续时间或是想了解的健康知识。\n\n*(温馨提示:虽然我会为您提供专业的医学建议,但线上咨询不能完全替代线下医院的面对面诊断和检查。如果遇到紧急或严重的情况,请务必及时前往医院就诊。)*\n\n请问有什么我可以帮您的?",
"additional_kwargs": {
"refusal": null
},
"response_metadata": {
"token_usage": {
"completion_tokens": 461,
"prompt_tokens": 21,
"total_tokens": 482,
"completion_tokens_details": {
"accepted_prediction_tokens": null,
"audio_tokens": null,
"reasoning_tokens": 355,
"rejected_prediction_tokens": null
},
"prompt_tokens_details": {
"audio_tokens": null,
"cached_tokens": 0
}
},
"model_name": "qwen3.7-max",
"system_fingerprint": null,
"id": "chatcmpl-87e796d4-3d72-90de-a8b7-db8fedfec68c",
"service_tier": null,
"finish_reason": "stop",
"logprobs": null
},
"id": "run--019e8852-cec4-7fc3-b88f-0755584ab379-0",
"usage_metadata": {
"input_tokens": 21,
"output_tokens": 461,
"total_tokens": 482,
"input_token_details": {
"cache_read": 0
},
"output_token_details": {
"reasoning": 355
}
}
}
我们通过调试可以知道,result 的类型是 AIMessage

AIMessage :来自AI的消息,从聊天模型中返回,作为对输入的响应
- content:消息的内容
- additional_kwargs:与消息关联的负载数据,编码工具等
- response_metadata:响应元数据,请求ID,响应标头,令牌计数,模型名称
- usage_metadata:消息的使用元数据,令牌计数,token 消耗,计算成本
2.5 输出解析器
输出这么多的数据不易查看,我们可以使用 StrOutputParser 输出解析器组件,将大模型输出结果解析为最可能的字符串
python
from langchain_core.output_parsers import StrOutputParser
paser = StrOutputParser()
result = model.invoke(message)
print(paser.invoke(result))
输出结果

2.6 链式执行
上述发现,不论是调用大模型,还是输出解析,都使用了 .invoke 方法,对于这种,LangChain 提供链式的执行能力,将各个组件链起来,一次执行即可得出效果
python
# 定义链
chain = model | paser
python
from langchain_core.output_parsers import StrOutputParser
from langchain_openai import ChatOpenAI
from langchain_core.messages import SystemMessage, HumanMessage
# 定义大模型
model = ChatOpenAI(
base_url = "https://dashscope.aliyuncs.com/compatible-mode/v1",
model = "qwen3.7-max",
api_key = "sk-a159ea*****************fa09f"
)
# 定义消息
message = [
SystemMessage(content="你现在是一名医生!"),
HumanMessage(content="你是谁!")
]
#解析器
parser = StrOutputParser()
# 定义链
chain = model | parser
# 大模型调用
result = model.invoke(message)
print(chain.invoke(message))
3. LangChain 相关概念
3.1 Runnable 接口
Runnable 接口是使用 LangChain Components (组件)的基础
Runnable 定义了一个标准接口,允许Runnable组件
- Invoke(调用):将单个输入转为输出
- Bachde (批处理):多个输入转为多个输出
- Streamed(流式传输):输出在生成时进行流式传输
- Inspected(检查):可以访问有关Runnable的输入、输出和配置的原理图信息
- Composed(组合):多个Runnable组合,用LCEL协同工作
之前使用的语言模型(model),输出解析器(StrOutputParser),都是Runnable接口的实例,他们都调用Invoke方法
3.2 LangChain Expression Language
LangChain Expression Language (LCEL):采用声明性方法,从现有的Runnable对象构建新的Runnable对象,调试后
重点是,RunnableSequence 也是 Runnable 接口的实例,也可具备调用组件的能力
LCEL 是一种编排解决方案,将两个 Runnable 接口的实例,链在一起,使上一个可运行对象的invoke() 调用的输出作为输入传递给下一个可运行对象,方法使用就是用 | (管道/运算符)
| 通过两个Runnable接口的实例去创建一个RunnableSequence,实际是LangChain重载了 | 运算符
python
# 定义链
chain = model | parser
# 完全相等
chain = RunnableSequence(first=model, last=parser)
除此之外,还可以用 .pipe 方法代替 |
python
# 定义链
chain = model | parser
# 完全相等
chain = RunnableSequence(first=model, last=parser)
# 完全相等
chain = model.pippe(parser)

