Langchain-快速入门篇
1.认识LangChain
LangChain是智能体开发平台,包含一套各种帮助开发、测试、评估智能体的框架。核心包括:
- LangChain:用于快速构建智能体,可兼容任何模型提供商。
- LangGraph:从底层一步步控制智能体的构建,包括记忆(Memory)、人机协同(HITL)等
- Deep Agents:用于构建复杂的、处理多步骤的任务的智能体
- LangSmith:用于测试、观察、评估、部署智能体
2.什么是Agent
在人工智能领域,Agent(通常翻译为智能体或代理)是指一种能够感知环境、进行推理、自主决策并采取行动以实现特定目标的智能系统。如果说大模型(LLM)是“大脑”,那么 Agent 就是“拥有手脚和思维逻辑的独立个体”。它不再只是被动地回答问题,而是能主动拆解任务并调用各种工具来完成工作。
|
特性 |
传统聊天机器人/LLM |
AI Agent |
|
交互模式 |
被动响应,问一句答一句 |
主动规划,以目标为导向 |
|
执行力 |
停留在文本生成层面 |
能操作软件、发送邮件、分析数据 |
|
自主性 |
需要人类给出详细步骤 |
只需给定最终目标,自主寻找路径 |
总结如下:
- LLM = 聪明的大脑
- Agent = 聪明的大脑 + 手脚
当然,Agent的模式也是在不断演进的:
- 阶段一:ReAct + Tool Calling
- 阶段二:Reflection + Long Memory
- 阶段三:Multi Agent System,MAS
快速入门
导入对应的依赖,直接通过pycharm进行安装即可
import os from dotenv import load_dotenv from langchain.agents import create_agent from langchain_openai import ChatOpenAI from langchain.tools import tool from langchain_core.prompts import PromptTemplate # 这个也换了!
Langchain提供了create_agent方法用来快速创建Agent,我们只需要提供好Agent所需的模型(Models)、工具(Tools)即可。
定义工具
# 用 @tool 装饰器快速定义工具,Agent 会自动识别使用
@tool
def calculator(expression: str) -> str:
"""
计算器工具,用于计算数学表达式
:param expression: 数学表达式字符串,例如 "2+3*5"
:return: 计算结果
"""
try:
# 安全计算简单数学公式
result = eval(expression, {"__builtins__": None}, {})
return f"计算结果:{result}"
except Exception as e:
return f"计算失败:{str(e)}"
# 把工具打包成列表
tools = [calculator]
创建大模型
llm = ChatOpenAI(
model="qwen-plus", # 可替换为国产模型:deepseek-chat/qwen-turbo 等
api_key=os.getenv("OPENAI_API_KEY"),
base_url=os.getenv("OPENAI_BASE_URL", "https://dashscope.aliyuncs.com/compatible-mode/v1"), # 国内模型需改此地址
temperature=0 # 0 让回答更稳定、更适合做工具调用
)
创建agent并调用
# 创建 ReAct Agent
agent = create_agent(llm, tools)
# Agent 执行器(负责运行 Agent、管理工具调用、处理循环)
# agent_executor = AgentExecutor(
# agent=agent,
# tools=tools,
# verbose=True, # 打印思考过程(非常重要!能看到 Agent 怎么思考)
# handle_parsing_errors=True # 自动处理解析错误
# )
# ---------------------- 4. 测试你的 Agent ----------------------
if __name__ == "__main__":
# 测试问题:需要计算的问题,Agent 会自动调用计算器
question = "3的5次方加上100等于多少?"
# 运行 Agent
response = agent.invoke({
"messages": [
{"role": "user", "content": question}
]
})
# 输出最终答案
print("\n===== Agent 最终回答 =====")
print(response["messages"])
Agent的工作流程
传统的LLM应用都是一问一答的形式,模型只能根据自己的训练数据来回答,流程非常简单:

而智能体则可以调用工具与外界交互,获取实时信息,工作流程则要复杂很多,是这样的:

- 用户提问(Input):杭州今天天气如何?
- 模型分析(Reasoning):用户询问杭州天气,我不知道,需要调用查询天气的工具get_weather
- 调用工具(Action):调用工具,get_weather,传入城市"杭州"
- 分析结果(Observation):工具返回结果,模型分析结果,判断是否足以回答用户问题
- 是:整理生成响应结果
- 否:重复前面步骤
- 生成结果(Output):根据工具的结果生成响应给用户
工具
在大模型提供的API接口中,有一个tools参数,描述了工具的详细信息,LangChain会帮助我们把tool的信息封装为此tool参数,与message一起发送给大模型,大模型就了解tool的详细信息,根据用户需求判断是否需要调用tool,需要调用哪个tool。
模型不能直接调用tool,只能返回字符串。但是它可以把要调用的tool信息、参数信息都以Json格式返回,LangChain就会帮我们解析响应结果中的Function信息,也就是tool信息,就知道了要调用哪个函数,以及参数是什么了。LangChain就会执行该函数,再把得到的结果再次发送给大模型。

Agent中最重要的两个部分,就是:
- Model:负责推理分析、思考,相当于Agent的大脑
- Tools:负责执行任务,相当于Agent与外界交互的手脚
模型
完整叫法是大语言模型(LLM)。它能够理解人类语言,使用人类语言生成内容、翻译、提取摘要、回答问题等。不仅如此,现在大多数的模型还有一些特别能力:
- Tool calling - 调用外部工具(例如查询数据库或调用 API),并在其回复中使用这些工具返回的结果。
- Structured output - 将模型的响应结果约束为遵循已定义的格式,例如:json
- Multimodality - 可以处理和返回文本以外的数据,如图像、音频和视频。
- Reasoning - 模型可以执行多步推理来得出结论。
使用Model类初始化模型
llm = ChatOpenAI(
model="qwen-plus", # 可替换为国产模型:deepseek-chat/qwen-turbo 等
api_key=os.getenv("OPENAI_API_KEY"),
base_url=os.getenv("OPENAI_BASE_URL", "https://dashscope.aliyuncs.com/compatible-mode/v1"), # 国内模型需改此地址
temperature=0 # 0 让回答更稳定、更适合做工具调用
)
消息
在调用模型时,发送给LLM的消息、LLM返回的消息都包含以下几部分内容:
- role:消息所属角色,可以是system、user、assistant
- content:消息的内容
- metadata(可选):消息的元数据,例如:消息的ID、消耗的token等
消息类型
在LangChain中,我们并不需要自己创建BaseMessage对象,LangChain已经把常见消息根据角色(Role)创建了对应的BaseMessage的子类:
- SystemMessage:role是system,代表系统消息,用于设定模型角色和交互背景
- HumanMessage:role是user,代表用户输入的消息
- AIMessage:role是assistant,代表LLM生成的响应,包含:文本、工具调用、元数据
- ToolMessage:role是tool,代表工具调用时产生的结果
采用对象封装的方式来传递消息,框架自动解析是用户消息还是其他
from langchain.messages import HumanMessage, AIMessage from langchain.agents import create_agent # 创建Agent agent = create_agent(model="deepseek-chat") # 调用Agent,发送消息 response = agent.invoke({ "messages": [ HumanMessage(content="你好,我是虎哥"), AIMessage(content="你好,虎哥,很高兴认识你。"), HumanMessage(content="我的名字是什么?") ] }) print(response)
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)