当前位置: 首页 > news >正文

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)
http://www.gsyq.cn/news/1484928.html

相关文章:

  • 别再只会调API了!深入理解weixin-js-sdk分享背后的签名与安全机制
  • CH32V307开发板串口服务器实战:基于RT-Thread和LWIP的UART转TCP通信
  • AI 回答又臭又长?原因竟然在于 Markdown
  • 水质监测新趋势:在线光谱仪实时守护碧水蓝天
  • Uber的OED实验智能系统:用贝叶斯优化替代p值决策
  • 告别CAN的奢侈:一文搞懂LIN总线如何用UART接口搞定汽车低速通信
  • 2025-2026年北京管道疏通公司推荐:五大评测专业指南市政管网养护选择指南价格 - 品牌推荐
  • STC89C52等51单片机直连DHT22的可烧录工程合集(含DHT11/DHT21兼容代码)
  • R语言实战:用lm()和手动计算两种方法搞定回归模型的MSE评估(附mtcars数据集案例)
  • 哪家南昌全屋定制品牌靠谱?2026年6月推荐TOP5对比空间利用评测案例选择指南 - 品牌推荐
  • 视频理解新范式:TimeSformer如何用‘分而治之’的注意力机制,在Something-Something数据集上超越CNN?
  • 2026年众智商学院400热线怎么核对?报名咨询和班期确认入口 - 众智商学院职业教育
  • 千万不能错过!这家两联供产品厂家为何让同行都震惊了?
  • 给自动驾驶算法工程师的仿真利器:用MATLAB Simulink控制UE4虚拟环境完整流程
  • 哪家北京房产纠纷律师靠谱?2026年6月推荐TOP5对比合同陷阱评测案例适用场景专业 - 品牌推荐
  • SuperMap iDesktop进阶技巧:没有公开参数?手把手教你从已有数据‘炼’出坐标系转换秘籍
  • 避坑指南:用R语言mediation包做中介分析,这3个细节错了结果全白费
  • 2026年6月北京十大装修公司推荐:专业评测排名选择指南价格 - 品牌推荐
  • 团队协作必看:用Git和IDEA彻底告别Windows/Mac混用导致的代码历史混乱
  • Tensorboard使用
  • Sqribble深度解析:云原生文档出版流水线的架构与实践
  • 告别Triplet Loss的纠结:用Circle Loss在PyTorch里轻松搞定人脸识别模型
  • 避坑指南:ESP32驱动ST7789/ILI9341屏,LVGL移植中那些配置菜单(menuconfig)里容易踩的坑
  • 2025-2026年北京装修公司排行榜推荐:十大排名大户型全案评测专业注意事项价格 - 品牌推荐
  • 2026年6月南昌全屋定制品牌推荐:TOP5评测专业对比适用场景价格 - 品牌推荐
  • Cityscapes不够用?试试5倍数据量的Mapillary Vistas:自动驾驶数据增强实战指南
  • 实验5-2:浏览器市场分析-大屏静态布局制作
  • 别再浪费频谱了!用USRP X410和正交上变频,手把手教你搭建高效射频发射链路
  • 一千条用户反馈要打标分类,我没人肉,让 Agent 批量跑完了
  • 哪家韩国留学机构专业?2026年6月推荐TOP5评测性价比高案例适用场景 - 品牌推荐