Langchain-快速入门篇

Langchain-快速入门篇 1.认识LangChainLangChain是智能体开发平台包含一套各种帮助开发、测试、评估智能体的框架。核心包括LangChain用于快速构建智能体可兼容任何模型提供商。LangGraph从底层一步步控制智能体的构建包括记忆Memory、人机协同HITL等Deep Agents用于构建复杂的、处理多步骤的任务的智能体LangSmith用于测试、观察、评估、部署智能体2.什么是Agent在人工智能领域Agent通常翻译为智能体或代理是指一种能够感知环境、进行推理、自主决策并采取行动以实现特定目标的智能系统。如果说大模型LLM是“大脑”那么 Agent 就是“拥有手脚和思维逻辑的独立个体”。它不再只是被动地回答问题而是能主动拆解任务并调用各种工具来完成工作。特性传统聊天机器人/LLMAI Agent交互模式被动响应问一句答一句主动规划以目标为导向执行力停留在文本生成层面能操作软件、发送邮件、分析数据自主性需要人类给出详细步骤只需给定最终目标自主寻找路径总结如下LLM 聪明的大脑Agent 聪明的大脑 手脚当然Agent的模式也是在不断演进的阶段一ReAct Tool Calling阶段二Reflection Long Memory阶段三Multi Agent SystemMAS快速入门导入对应的依赖直接通过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: 数学表达式字符串例如 23*5 :return: 计算结果 try: # 安全计算简单数学公式 result eval(expression, {__builtins__: None}, {}) return f计算结果{result} except Exception as e: return f计算失败{str(e)} # 把工具打包成列表 tools [calculator]创建大模型llm ChatOpenAI( modelqwen-plus, # 可替换为国产模型deepseek-chat/qwen-turbo 等 api_keyos.getenv(OPENAI_API_KEY), base_urlos.getenv(OPENAI_BASE_URL, https://dashscope.aliyuncs.com/compatible-mode/v1), # 国内模型需改此地址 temperature0 # 0 让回答更稳定、更适合做工具调用 )创建agent并调用# 创建 ReAct Agent agent create_agent(llm, tools) # Agent 执行器负责运行 Agent、管理工具调用、处理循环 # agent_executor AgentExecutor( # agentagent, # toolstools, # verboseTrue, # 打印思考过程非常重要能看到 Agent 怎么思考 # handle_parsing_errorsTrue # 自动处理解析错误 # ) # ---------------------- 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 - 将模型的响应结果约束为遵循已定义的格式例如jsonMultimodality - 可以处理和返回文本以外的数据如图像、音频和视频。Reasoning - 模型可以执行多步推理来得出结论。使用Model类初始化模型llm ChatOpenAI( modelqwen-plus, # 可替换为国产模型deepseek-chat/qwen-turbo 等 api_keyos.getenv(OPENAI_API_KEY), base_urlos.getenv(OPENAI_BASE_URL, https://dashscope.aliyuncs.com/compatible-mode/v1), # 国内模型需改此地址 temperature0 # 0 让回答更稳定、更适合做工具调用 )消息在调用模型时发送给LLM的消息、LLM返回的消息都包含以下几部分内容role消息所属角色可以是system、user、assistantcontent消息的内容metadata可选消息的元数据例如消息的ID、消耗的token等消息类型在LangChain中我们并不需要自己创建BaseMessage对象LangChain已经把常见消息根据角色Role创建了对应的BaseMessage的子类SystemMessagerole是system代表系统消息用于设定模型角色和交互背景HumanMessagerole是user代表用户输入的消息AIMessagerole是assistant代表LLM生成的响应包含文本、工具调用、元数据ToolMessagerole是tool代表工具调用时产生的结果采用对象封装的方式来传递消息框架自动解析是用户消息还是其他from langchain.messages import HumanMessage, AIMessage from langchain.agents import create_agent # 创建Agent agent create_agent(modeldeepseek-chat) # 调用Agent发送消息 response agent.invoke({ messages: [ HumanMessage(content你好我是虎哥), AIMessage(content你好虎哥很高兴认识你。), HumanMessage(content我的名字是什么) ] }) print(response)