用 ReAct 框架打造一个具备实时搜索能力的 AI Agent(基于通义千问)
1. 背景与目标
随着大语言模型(LLM)的发展,AI Agent 在智能问答、自动化任务等领域得到了广泛应用。然而,LLM 受限于其训练数据的时效性,无法获取最新信息。例如,如果你问 GPT-4:「2025 年奥运会在哪里举行?」它可能无法提供准确答案。
如何让 AI 具备实时搜索能力? 这正是 ReAct(Reasoning + Acting)框架的优势。通过 结合推理(Reasoning)与行动(Acting),AI 可以在回答问题前先分析是否需要查询最新信息,再通过工具获取外部数据,最后整合结果给出回答。
本篇文章的目标是:
✅ 实现一个 AI Agent,能基于 ReAct 框架进行两次任务调度
✅ 结合 SerpAPIWrapper,让 AI 具备实时搜索能力
✅ 让 AI 能够判断何时需要调用搜索工具,何时直接回答
2. ReAct 框架简介
2.1 什么是 ReAct?
ReAct(Reasoning + Acting)是一种让 AI 既能思考(Reasoning)又能执行任务(Acting)的方法。它的核心思路是:
1. 观察(Observe):接收用户问题。
2. 思考(Think):分析问题,决定下一步行动。
3. 执行(Act):调用工具(如搜索 API)获取数据。
4. 总结(Reflect):基于所有信息,生成最终回答。
2.2 ReAct 在 AI Agent 中的应用场景
• 信息查询:调用搜索 API,获取最新数据。
• 自动化任务:如计算、代码执行、数据库查询等。
• 复杂决策:结合多种工具,分析和推理最佳方案。
3. 让 AI 具备搜索能力:SerpAPIWrapper 介绍
3.1 为什么要使用 SerpAPI?
SerpAPI 是一个用于调用 Google/Bing 搜索的 API,可以让 AI 获取最新的网页数据。相比于 LLM 的静态知识库,SerpAPI 能帮助 AI 实时查询外部世界的信息。
3.2 安装与配置
在代码实现前,先安装 langchain,
安装 langchainhub:从langchainhub拉取标准提示词
安装 dashscope:使用Tongyi大模型
安装 google-search-results:使用serpapi进行搜索
API KEY获取:Google Search Engine Results API - SerpApi
pip install langchain langchainhub dashscope google-search-results
完整代码如下
import os
os.environ["SERPAPI_API_KEY"] = ''
# 导入LangChain Hub
from langchain import hub
# 从hub中获取React的Prompt
prompt = hub.pull("hwchase17/react")
print(prompt)
# 导入ChatOpenAI
from langchain_community.llms import Tongyi
# 选择要使用的LLM
llm = Tongyi(
api_key = "",
base_url = "https://dashscope.aliyuncs.com/compatible-mode/v1"
)
# 导入SerpAPIWrapper即工具包
from langchain_community.utilities import SerpAPIWrapper
from langchain_core.tools.simple import Tool
# 实例化SerpAPIWrapper
search = SerpAPIWrapper()
# 准备工具列表
search_tool = Tool(
name="Search",
func=search.run,
description="用于查询最新信息,如新闻、事实验证等"
)
from langchain.agents import initialize_agent
from langchain.agents import AgentType
# 初始化 Agent
agent = initialize_agent(
tools=[search_tool], # 让 AI 具备搜索能力
llm=llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, # 使用 ReAct 进行推理
verbose=True
)
# 运行示例
question = "2025 年奥运会在哪里举行?"
response = agent.run(question)
print(response)
运行 verbose=True 时,可以看到 AI Agent 任务调度的完整日志。例如,当用户问**「2025 年奥运会在哪里?」**时,AI 的思考过程可能是:
1️⃣ 思考:「这涉及 2025 年的最新信息,可能需要搜索。」
2️⃣ 行动:「调用 SerpAPI 进行 Google 搜索。」
3️⃣ 获取搜索结果:「SerpAPI 返回了最新新闻和维基百科信息。」
4️⃣ 总结并回答:「2025 年奥运会将在 XXX 地点举行。」
这样,AI 就能像人类一样,先分析问题,再利用工具,最终给出准确答案。
6. 代码优化与扩展方向
6.1 增强 Agent 记忆功能
目前的 AI 只是处理单个问题,可以增加记忆功能,让 AI 记住上下文。
• 方法 1:使用 langchain.memory.ConversationBufferMemory() 存储对话历史。
• 方法 2:使用 FAISS 向量数据库,让 AI 具备长期记忆能力。
6.2 增加更多工具
目前 AI 只能进行搜索查询,可以扩展:
• 计算工具(math tool):让 AI 能计算复杂数学问题。
• 数据库查询工具:让 AI 查询业务数据库,实现自动化办公。
• API 调用工具:让 AI 访问外部 API,如天气、金融数据等。
6.3 结合 RAG(检索增强生成)优化回答质量
可以使用 RAG(Retrieval-Augmented Generation) 结合企业内部知识库,让 AI 具备更强的知识查询能力,例如:
• 结合 企业文档(PDF, Word) 进行问答。
• 使用 向量数据库(如 FAISS, Chroma) 检索业务信息。
7. 总结:打造一个能实时搜索的 AI Agent
本篇文章,我们实现了一个 基于 ReAct 任务调度 + SerpAPIWrapper 的智能 AI Agent,能够:
✅ 判断问题是否需要搜索
✅ 调用 SerpAPI 进行 Google 查询
✅ 结合搜索结果,生成精准答案
这样,AI 具备了类似人类的思考 + 搜索 + 总结能力,而不是单纯依赖静态训练数据。
未来可以优化哪些方面?
📌 增加记忆,让 AI 记住上下文。
📌 增加工具,让 AI 具备计算、API 调用、数据库查询能力。
📌 结合 RAG,增强 AI 在特定领域的知识检索能力。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)