【LangChain&LangGraph】LangChain快速上手

目标如下:

1.通过LangChain接入LLM

2.通过代码理解,如何定义链式结构

3.链式结构的底层逻辑

一:快速上手编码

调用LLM的流程:

接入并定义大模型->定义消息->调用大模型->输出结果

举个例子:

python 复制代码
import os
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage, SystemMessage

# 1. 初始化模型(和你之前格式一模一样,只是换了提示场景)
model = ChatOpenAI(
    model="deepseek-v4-pro",
    base_url="https://api.deepseek.com/v1",
    api_key=os.getenv("DEEPSEEK_API_KEY"),
)

# 2. 定义消息:系统提示 + 用户消息
messages = [
    SystemMessage(content="你是一位耐心的学习助手,每次回答前都要先说'同学你好',然后再解答问题。"),
    HumanMessage(content="Python 是什么?用一句话解释。"),
]

# 3. 调用模型
result = model.invoke(messages)

# 4. 输出结果
print(result.content)

这段代码是基于 LangChain 框架调用 DeepSeek 大模型的基础示例,首先实现了库的导入与环境配置。代码引入了 os 模块用于读取环境变量,同时从 langchain_openai 导入 ChatOpenAI 模型类,再从 langchain_core.messages 导入会话所需的消息类型,为后续调用大模型做好了工具准备。

其次完成了大模型实例的初始化配置。借助 ChatOpenAI 兼容 OpenAI 接口的特性,通过指定模型名称、DeepSeek 专属接口地址,再从系统环境变量中读取密钥,既成功连接了 DeepSeek 大模型,又遵循了开发安全规范,避免将 API 密钥直接写在代码中,保护接口信息安全。

再者学习了 LangChain 中会话消息的定义规则。代码运用了两种核心消息格式,SystemMessage 作为系统提示消息,用于提前给人工智能设定角色身份和回复规则;HumanMessage 代表用户输入的对话内容,两种消息以列表形式组合,构成完整的对话上下文,能够精准引导模型的回复风格。

最后掌握了大模型的调用与结果输出方式。通过 model.invoke () 方法传入消息列表,即可向大模型发起请求并获取返回结果,直接打印结果能够查看模型完整的返回对象,包含回复文本、角色信息等元数据,也可以提取 content 属性单独获取纯文字回复,这是 LangChain 同步调用大模型最基础且通用的使用方式。

整体而言,这段代码完整演示了第三方兼容接口大模型的调用流程,涵盖环境变量密钥管理、系统提示词设置、结构化消息定义、模型基础调用等核心知识点,是入门 LangChain 对接国产大模型的基础范例。

然后我们可以交给链去执行,这样子就可以注释掉那些了

python 复制代码
import os
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage, SystemMessage
from langchain_core.output_parsers import StrOutputParser
model = ChatOpenAI(
    model="deepseek-v4-pro",
    base_url="https://api.deepseek.com/v1",
    api_key=os.getenv("DEEPSEEK_API_KEY"),
)

#定义消息
#用户消息HumanMessage
#系统提示消息,通常作为第一条消息传入
messages=[
    SystemMessage(content="请叫我刘总,然后再回复"),
    HumanMessage(content="hi!"),
]

#调用大模型
#result=model.invoke(messages)
#print(result)

#定义输出解析器,这个也是组件
parser=StrOutputParser()
#print(parser.invoke(result))
#定义链
#执行链
chain=model|parser
print(chain.invoke(messages))

二:Runnable和LCEL

Runnable接口是使用Langchain Component(组件)的基础,它提供了一系列的标准接口

接入原生大模型存在一个问题就是,切换大模型困难。

invoke:单次同步调用,输入单个参数,返回最终完整结果。

batch:批量同步调用,一次性传入多组参数,批量返回结果。

stream:流式同步调用,逐段返回输出,适合打字机实时效果。

ainvoke:异步单次调用,不阻塞主线程,适合并发场景。 abatch:异步批量调用,多组任务异步并行执行,效率更高。

astream:异步流式调用,异步 + 逐段输出,对话场景最常用。

LCEL是采用声明性方法,从现有的Runnalbe对象构建新的Runnalbe对象,称为RunnalbeSequence,表示可运行序列。是一个编排解决方案,上一个执行的结果作为下一个的输入。

相关推荐
Aision_2 小时前
OpenClaw和Hermes的记忆有什么区别
人工智能·gpt·langchain·prompt·aigc·agi
花千树-0103 小时前
Proposer-Critic 多轮辩论:两个 LLM Agent 用 loop() 逼近共识
langchain·agent·ai编程·skill·multi-agent·claude code·ai 工程化
Daydream.V5 小时前
从零搭建 AI Agent:LLM Agent+Function Calling+Dify 本地部署 + Coze 实战全攻略
人工智能·langchain·ollama·functioncalling·大模型部署
JaydenAI6 小时前
[Deep Agents:LangChain的Agent Harness-06]通过HumanInTheLoopMiddleware引入人机交互
langchain·人机交互·hitl·deep agents·harness
H_unique8 小时前
LangChain:提示词模板
ai·langchain
Zfox_9 小时前
【LangGraph】持久化(Persistence)
开发语言·人工智能·redis·langchain·ai编程·langgraph
Allnadyy18 小时前
【LangChain&LangGraph】LangChain与LangGraph介绍
langchain
qq_283720051 天前
LangChain+FAISS 向量数据库搭建轻量化 RAG 应用
数据库·langchain·faiss
情绪总是阴雨天~1 天前
LangChain 核心技术全解析:从入门到实战
langchain