从0到1开发AI Agent(智能体)(六)| 智能体1 :通过LangChain中的ReAct框架实现自动定价

-正文-

推理与行动的协同

通过一个具体的业务场景,使用ReAct的思路来创建一个智能体

  • \1. 业务需求

  • \2. ReAct框架是什么

  • \3. LangChain 中 ReAct Agent 的实现

    • 3.1 大模型(LLM)
    • 3.2 提示词(prompt)
    • 3.3 外部工具(external tools)
    • 3.4 Agent执行器(Agent executor)
  • \4. Agent的完整代码

    • 4.1 运行环境Python 3.10.11, LangChain 0.3
    • 4.2 代码
    • 4.3 运行日志
  • \5. 使用LangSmith跟踪智能体的执行过程

  • 参考

智能体是一种能够感知环境、做出决策并采取行动的系统。这些系统能够执行被动的任务,也能够主动寻找解决问题的方法,适应环境的变化,并在没有人类直接干预的情况下做出决策。

智能体见 : 一文说清楚什么是AI Agent(智能体)]

1. 业务需求

现在有一个生意很好的鲜花店

在运营花店的过程中,我们经常遇到天气变化导致鲜花售价变化的情况。那么,每天早上你会如何为当日的鲜花定价呢?

我们创建一个Agent,让Agent可以根据实时的天气和交通状况自动调整产品价格.

人类解决这个问题的一般过程是:

首先看看这个事该怎么办(思考),其次通过搜索引擎查阅网络上今天鲜花的成本价(行动),据此我可预估鲜花的进货价格,然后根据这个价格的高低(观察)来确定要加价多少(思考),最后得出售价(行动)。

人类为鲜花定价的过程如图所示:

img

这就是我们人类在接到一个新任务时做出决策并完成下一步行动的过程。

在这个简单的例子中,人类首先思考或者观察后再思考,然后采取行动

这里的观察和思考被统称为**“推理”(Reasoning)过程,而“推理”指导人们的“行动”(Acting)**。

在Agent开发中,这个动态决策能力可以由 ReAct 来实现

2. ReAct框架是什么

ReAct框架在2022年论文中被引入《ReAct: Synergizing Reasoning and Acting in Language Models》。

它是生成式 AI 应用中广泛使用的提示策略之一。

ReAct 框架的灵感来自“推理”和“行动”之间的协同作用。这种协同作用使得我们能够学习新任务并做出决策。而在大模型应用中,尤其是与 Agent 相关的应用开发中,我们通过提示工程向大模型植入这个思维框架,明确地告诉它们,要循序渐进地、交错地生成推理轨迹和采取行动,将推理和行动融入解决问题的过程中。

img

ReAct 框架鼓励LLM模型使用提示词的思维过程为:提问、行动、行动输入和观察。(见3.2章:提示词)

3. LangChain 中 ReAct Agent 的实现

在 LangChain 中使用 Agent 时,我们只需要理解下面 4 个元素。

大模型(LLM) :

提供逻辑的引擎,负责生成预测和处理输入。

提示(prompt) :

负责指导模型,形成推理框架。(ReAct风格的提示词)

外部工具(external tools) :

包括数据清洗工具、搜索引擎、应用程序等。

Agent执行器(Agent executor) :

负责调用合适的外部工具,并管理整个流程。(通过create_react_agent生成的Agent)

根据用户的输入(接收任务),Agent会首先决定调用哪些工具,然后通过相应的工具给出答案。Agent不仅可以同时使用多种工具,而且可以将一个工具的输出数据作为另一个工具的输入数据。

3.1 大模型(LLM)

在整个流程中,大模型经常需要自主判断下一步的行动。如果不施加额外的引导,大模型则可能无法自主判断下一步的行动。

例如,任务是查询库存,如果库存不足,就搜索合适的商家并进货。完成这个任务需要考虑一系列的操作。

  • 什么时候开始在本地数据库中进行检索?
  • 如何确定检索本地数据库的步骤已经完成,可以开始进行下一步?
  • 调用哪个外部搜索工具(例如:百度)?
  • 外部搜索工具是否返回想要的内容?
  • 如何确定外部信息的真实性并执行下一步?

通过对 ReAct 框架进行完美封装和实现,LangChain 可以赋予大模型极大的自主性。

应用 ReAct框架后,你的大模型将从一个仅仅可以借助自己内部知识进行对话聊天的机器人飞升为一个能使用工具的智能 Agent。

大模型见 :一文说清楚什么是AI大模型

3.2 提示词(prompt)

提示词可能包含 Agent的性格(也就是给它分配角色,让它以特定方式进行响应)、任务的背景(用于提供更多任务类型的上下文)以及用于激发更好推理能力的提示策略 (如 ReAct 框架)

尽你所能回答以下问题,你可以访问以下工具:
    
{tools}

请使用以下格式回答:

问题 : 你必须回答的输入问题
思考 : 你每次都应该思考接下来怎么做
行动 : 要采取的行动,应该是[tool_names}中的一个
行动输人 : 行动的输入
观察 : 行动的结果
......(这个思考 一 行动 一 行动输入 一 观察 过程可以重复N次)
思考 : 我现在知道最终答案了
最终答案 : 原始输入问题的最终答案
                
开始!
                
问题 : {input}
思考 : {agent_scratchpad}

在这个提示中,有三个占位符 {tool}、{input} 和 {agent_scratchpad}。这些将在发送到 LLM 之前被适当文本替换。

tool - 代理可用的工具

input - 原始问题(通常为用户提出的问题)

agent_scratchpad - 存储之前的想法/行动/行动输入/观察 的历史记录(思考过程)

参考:https://smith.langchain.com/hub/hwchase17/react?organizationId=099ea035-86e1-4ed7-bc0c-fd43b7039d50

3.3 外部工具(external tools)

ReAct框架会提示大模型为任务生成推理轨迹和行动,这使得Agent能系统地执行动态推理以创建、维护和调整操作计划,同时还支持与外部环境(例如 Google 搜索、维基百科)进行交互,以将额外信息合并到推理中。

这个和外部环境交的过程其实就是我们见过多次的调用并执行工具的行动过程。上面所说的本地知识库或搜索引擎都不是封装在大模型内部的知识,我们把它们称为“外部工具”,见图。

img

工具的使用见:LangChain实战 | Tool Calling :让AI真正动起来的关键技术

LangChain内置完整工具列表见:https://python.langchain.com/docs/integrations/tools/

3.4 Agent执行器(Agent executor)

如何在我们的人工智能应用中执行需要多个步骤的复杂任务,一个答案是 Agent Executor

LangChain AgentExecutor 构建 Agent,对于入门来说是不错的选择,但当我们需要更多的灵活性和控制,需要创建更高级的 Agent,我们可以使用 LangGraph Agent

Agent Executor负责协调Agent 的执行。它调用Agent ,执行Agent返回的操作,然后再次调用Agent ,将执行操作的结果传递给Agent 。这个过程一直持续到从Agent 那里收到最终答案。

img图:执行流程

4. Agent的完整代码

4.1 运行环境 Python 3.10.11, LangChain 0.3

4.2 代码

准备环境变量:

import os

# OpenAI 环境变量
os.environ['OpenAI_API_KEY'] = 'hk-iwtb1e427'

# 搜索工具环境变量
os.environ['SERPAPI_API_KEY'] = '66bebeb6a334'

# LangSmith 环境变量 (可选) ,如果需要使用 LangSmith 功能,请在环境变量中设置以下变量
os.environ['LANGCHAIN_TRACING_V2'] = "true"
os.environ['LANGCHAIN_ENDPOINT'] = "https://api.smith.langchain.com"
os.environ['LANGCHAIN_API_KEY'] = "lsv2_pt1c9e"
os.environ['LANGCHAIN_PROJECT'] = "hello-agent"

初始化大模型:

# 初始化大模型
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model="gpt-4o-mini",
    temperature=1,
    base_url="https://api.openai-hk.com/v1"
)

设置工具:

# 设置工具
from langchain_core.tools import tool

# 自定义计算器工具,用于计算鲜花的价格
@tool
def calculator(expression: str) -> str:
    """使用 Python 的 numexpr 库计算数学表达式

    表达式应该是一个单行的数学表达式

    例如:
        "352 * 493" 表示 "352 乘以 493"
    """
    import numexpr
    import math  # 确保导入 math 库
    local_dict = {"pi": math.pi, "e": math.e}
    result = str(
        numexpr.evaluate(
            expression.strip(),
            global_dict={},  # 限制访问全局变量
            local_dict=local_dict,  # 添加常用数学函数
        )
    )
    print(f"The result of {expression} is {result}")
    return result  # 确保返回结果为字符串


from langchain_community.agent_toolkits.load_tools import load_tools

tools = [calculator]

loaded_tools = load_tools(["serpapi"], llm=llm)
tools += loaded_tools

设置提示词模板:

# 设置提示模板
from langchain.prompts import PromptTemplate

template = '''
    尽你所能用中文回答以下问题。如果能力不够你可以使用以下工具:
    
    {tools}
    
    Use the following format:
    
    Question: the input question you must answer
    Thought: you should always think about what to do
    Action: the action to take, should be one of [{tool_names}]
    Action Input: the input to the action
    Observation: the result of the action
    ... (this Thought/Action/Action Input/Observation can repeat N times)
    Thought: I now know the final answer
    Final Answer: the final answer to the original input question
    
    Begin!
    
    Question: {input}
    Thought:{agent_scratchpad}
    '''

prompt = PromptTemplate.from_template(template)

# from langsmith import Client
#
# client = Client()
# prompt  = client.pull_prompt("hwchase17/react")

print("提示词:")
print(prompt)

使用create_react_agent初始化Agent:

# 初始化Agent
from langchain.agents import create_react_agent

agent = create_react_agent(llm, tools, prompt)

# 构建AgentExecutor
from langchain.agents import AgentExecutor

agent_executor = AgentExecutor(agent=agent, tools=tools, handle_parsing_errors=False, verbose=True)

执行Agent:

# 执行AgentExecutor
agent_executor.invoke({"input":
                           """今天市场上玫瑰花的一般进货价格是多少?
                           如果我在此基础上加价5%,应该如何定价?"""})

4.3 运行日志

img

5. 使用LangSmith跟踪智能体的执行过程

LangSmith 是一个用于构建生产级LLM应用的平台。

它让您调试、测试、评估和监控基于任何LLM框架构建的链和智能代理,并与 LangChain 无缝集成

非常简单就可以开启 langsmith 日志记录

1.在官网注册,smith.langchain.com

2.新建Tracing projects

3.配置环境变量

os.environ['LANGCHAIN_TRACING_V2'] ="true"
os.environ['LANGCHAIN_ENDPOINT'] ="https://api.smith.langchain.com"
os.environ['LANGCHAIN_API_KEY'] ="你自己的KEY"
os.environ['LANGCHAIN_PROJECT'] ="hello-agent"

完整过程:

img

在智能体执行完成后,官网控制台就能看到hello-agent这个项目的执行过程:

左边是当前智能体的所有执行环节,右边是对应环节的输入和输出

img

关于AI大模型技术储备

学好 AI大模型 不论是就业还是在工作技能提升上都不错,但要学会 AI大模型 还是要有一个学习规划。最后大家分享一份全套的 AI大模型 学习资料,给那些想学习 AI大模型 的小伙伴们一点帮助!

感兴趣的小伙伴,赠送全套AI大模型学习资料和安装工具,包含Agent行业报告、精品AI大模型学习书籍手册、视频教程、最新实战学习等录播视频,具体看下方。

需要的可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

一、大模型风口已至:月薪30K+的AI岗正在批量诞生

在这里插入图片描述

2025年大模型应用呈现爆发式增长,根据工信部最新数据:

国内大模型相关岗位缺口达47万

初级工程师平均薪资28K(数据来源:BOSS直聘报告)

70%企业存在"能用模型不会调优"的痛点

真实案例:某二本机械专业学员,通过4个月系统学习,成功拿到某AI医疗公司大模型优化岗offer,薪资直接翻3倍!

二、如何学习大模型 AI ?

🔥AI取代的不是人类,而是不会用AI的人!麦肯锡最新报告显示:掌握AI工具的从业者生产效率提升47%,薪资溢价达34%!🚀

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

1️⃣ 提示词工程:把ChatGPT从玩具变成生产工具
2️⃣ RAG系统:让大模型精准输出行业知识
3️⃣ 智能体开发:用AutoGPT打造24小时数字员工

📦熬了三个大夜整理的《AI进化工具包》送你:
✔️ 大厂内部LLM落地手册(含58个真实案例)
✔️ 提示词设计模板库(覆盖12大应用场景)
✔️ 私藏学习路径图(0基础到项目实战仅需90天)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

这份完整版的学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

<think>好的,用户想了解或使用LangChain智能体框架,询问相关的教程或文档。我需要根据之前提供的引用内容来回答这个问题。首先,用户可能是一个开发者,想要集成LangChain到自己的项目中,或者在学习如何使用这个框架来构建智能体应用。他们可能需要知道从哪里开始,有哪些关键模块,以及具体的步骤。 首先,我应该确认LangChain的主要模块,尤其是智能体相关的部分。根据引用[1],LangChain的功能通过多个模块实现,其中LLMs是核心,还有智能体、工具链等。引用[3]提到了初始化智能体的代码示例,这可能对用户有帮助。用户可能需要知道如何初始化智能体,选择合适的工具和模型。 接下来,用户可能需要教程或文档的链接。引用[1]提到了GitHub仓库和官方文档,所以需要提供这些链接。同时,引用[3]中的实战例子可以作为一个学习资源。此外,可能还需要提到社区资源,比如Discord或论坛,这对解决问题很有用。 然后,用户的问题可能涉及到具体的使用步骤,比如安装、初始化、添加工具、执行任务。需要分步骤说明,确保结构清晰。代码示例也很重要,比如如何初始化智能体,使用哪种代理类型,如ZERO_SHOT_REACT_DESCRIPTION。 可能还需要提到智能体的应用场景,如结合计算器或搜索引擎,这在引用[2]中提到过。用户可能想知道LangChain智能体能做什么,以及如何评估其性能。 最后,生成相关问题,帮助用户深入探索,比如安装方法、支持的模型、调试技巧和应用场景。这些都需要基于已有的引用内容,确保信息准确。</think>以下是关于LangChain智能体框架的使用指南,结合官方文档和实战案例整理: ### 一、LangChain智能体核心架构 LangChain智能体通过协调语言模型(LLMs)、工具链和记忆系统实现任务处理[^1][^3],主要组件包括: $$ Agent = LLM + Tools + Memory + Control\ Flow $$ 其中控制流负责决策如何组合工具使用顺序 ### 二、快速入门步骤 1. **安装环境** ```bash pip install langchain openai ``` 2. **初始化智能体**(基于引用[3]的代码示例) ```python from langchain.agents import initialize_agent, Tool from langchain.llms import OpenAI # 1. 准备工具集 tools = [ Tool( name="Search", func=search_api, # 需替换为实际工具函数 description="用于信息检索" ), # 可添加更多工具... ] # 2. 初始化智能体 llm = OpenAI(temperature=0) agent = initialize_agent( tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True ) ``` 3. **执行任务** ```python response = agent.run("请搜索2023年诺贝尔文学奖得主") print(response) ``` ### 三、关键配置参数 | 参数 | 说明 | 示例值 | |------|------|-------| | agent_type | 智能体推理模式 | `ZERO_SHOT_REACT_DESCRIPTION` | | max_iterations | 最大思考次数 | 5 | | return_intermediate_steps | 返回中间步骤 | True | ### 四、官方学习资源 1. [官方文档](https://python.langchain.com/docs/) - 含API参考和概念说明 2. [GitHub仓库](https://github.com/langchain-ai/langchain) - 查看最新源码和示例 3. [LangChain中文社区](https://langchain.com.cn/) - 本地化教程和案例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值