【LangChain框架入门级】1

🔥 博客主页**🔥** :【 坊钰_CSDN博客

欢迎各位点赞**👍** 评论**✍收藏⭐**

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)
相关推荐
yumgpkpm1 小时前
华为HUAWEI昇腾910B下千问Qwen3.6-27B在的推理加速实践
sql·华为·langchain·json·ai编程·ai写作·gpu算力
lhxcc_fly2 小时前
5.LangChain--输出解析器
langchain·llm·输出解析器
SuniaWang3 小时前
《AgentX 专栏》07-全链路可观测:用OpenTelemetry+Jaeger让每次AI对话都可追踪可复盘
java·人工智能·spring·架构·langchain·opentelemetry·agenx
糖果店的幽灵3 小时前
LangChain 1.3 完全教程:从入门到精通-Part 9: RAG(检索增强生成)
人工智能·langchain
星浩AI17 小时前
项目实战:合同智能审批 · LangGraph + HITL 人机协同方案 [有源码]
后端·langchain·agent
兆。19 小时前
LangChain大模型服务集成指南:面向AI应用开发者
人工智能·langchain
wuhen_n20 小时前
LangChain 核心:Chain 链式调用实现复杂 AI 任务
前端·langchain·ai编程
兆。21 小时前
LangChain向量数据库集成指南:面向RAG开发者
数据库·langchain