【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)
相关推荐
孙启超2 分钟前
【AI应用开发】LangChain 中 Chain 和 Agent 核心区别?
java·人工智能·langchain·llm·rag·ai应用开发·agent loop
Wang's Blog3 小时前
AI Agent白手起家28: LangChain 五种提示词模板实战解析
大数据·人工智能·langchain
GuWenyue4 小时前
大模型幻觉无解?7步搭建Milvus+LangChain电子书RAG,私有小说精准问答零编造
人工智能·langchain·ai编程
'pi%'4 小时前
多 Agent 协同方案实践:基于 LangGraph 搭建能源领域智能调度工作流
人工智能·爬虫·microsoft·langchain·ocr·能源
春水碧于天,画船听雨眠5 小时前
LangChain学习笔记(一)
笔记·学习·langchain
扯蛋4381 天前
1.x 时代的记忆系统 (一)
langchain·llm·aigc
梦想三三1 天前
LangChain RAG PDF 智能问答实战:用 Streamlit 构建本地知识库(完整代码)
人工智能·python·langchain·大模型·rag
ganjiee00071 天前
langchain.messages引用报错
langchain
大模型真好玩1 天前
LangChain DeepAgents 速通指南(十二)——一文详解生产级智能体的命令体系和工程设计
人工智能·langchain·agent
用户3126874877201 天前
AI Agent 开发实战(十):Agent 设计模式(ReAct / Plan-Execute / Reflection)
langchain