您的位置:首页 > 健康 > 养生 > 手机下载网页上的视频_好用的在线客服系统_佛山疫情最新消息_长尾词挖掘工具

手机下载网页上的视频_好用的在线客服系统_佛山疫情最新消息_长尾词挖掘工具

2025/4/6 5:15:38 来源:https://blog.csdn.net/leread/article/details/146977584  浏览:    关键词:手机下载网页上的视频_好用的在线客服系统_佛山疫情最新消息_长尾词挖掘工具
手机下载网页上的视频_好用的在线客服系统_佛山疫情最新消息_长尾词挖掘工具

在 AI 发展过程中,如何让大模型不仅能理解问题,还能与外部工具交互,甚至像人类一样“思考-行动-反馈-再思考”,一直是核心研究方向。Function Calling 和 ReAct(Reason + Act)正是实现这一目标的关键机制。

本文将深入解析 Function Calling 和 ReAct 的工作原理,并通过一个 查询股票收盘价的实战案例 展示如何改进提示词(Prompt)以提升 AI 交互的智能性。


1. Function Calling & ReAct 让大模型更智能

🔹 Function Calling:让大模型能调用外部工具

Function Calling(函数调用)允许 LLM 通过 API 请求与外部工具交互,比如:
✅ 调用数据库查询实时数据(如股票价格、天气)
✅ 控制硬件设备(如智能家居)
✅ 调用计算 API 进行数学运算

大厂 LLM(如 OpenAI GPT-4-turbo、Claude 3)已经支持 Function Calling,使 AI 具备“工具使用能力”。

示例:GPT-4 Function Calling

{"name": "get_stock_price","description": "查询股票的最新价格","parameters": {"symbol": {"type": "string","description": "股票代码,例如 AAPL"}}
}

🔹 ReAct(Reason + Act):让大模型具备思考 + 反馈 + 行动的能力

ReAct 是 "Reasoning + Acting"(推理 + 行动) 的结合,让 LLM 不仅能生成答案,还能思考、调用工具、分析反馈,像 Agent 一样分步解决问题。

ReAct 通过以下步骤完成任务:

  1. Reason(推理):分析问题,规划解决方案

  2. Act(行动):调用 API / 数据库 / 计算工具

  3. Observe(观察):接收外部工具返回结果

  4. Reflect(反思):调整策略,继续调用工具或直接回答

示例:ReAct 交互流程

Question: "今天苹果公司(AAPL)的收盘价是多少?"Reasoning: "需要获取最新的股票数据,调用股票 API 查询 AAPL 价格"Action: 调用 `get_stock_price(symbol="AAPL")`Observation: "返回价格:$180.32"Final Answer: "苹果公司今天的收盘价是 $180.32"

🔹 ReAct 比 Function Calling 更高级

  • Function Calling 只执行外部 API,但不会自主思考如何使用这些 API

  • ReAct 结合 Function Calling + 反思,让 AI 动态调整策略,变成 Agent


2. AI Agent:让大模型主动决策

Agent = LLM + 记忆 + 规划 + 工具调用
AI Agent 具备 主动思考 + 交互能力,能处理复杂任务。

Agent 框架(如 LangChain)基于 ReAct,结合工具增强 AI 能力: ✅ LangChain Agent
✅ OpenAI Function Calling
✅ AutoGPT / BabyAGI

Agent 示例:查询 & 记录用户历史提问

用户提问:「AAPL 的收盘价?」
Agent 思考:「调用 API 查询 AAPL 价格」
Agent 记录:「用户问了 AAPL,可能后续会问 TSLA / GOOG」
Agent 决策:「建议用户查询其他科技股?」

📌 这样,Agent 不仅查询数据,还能预测用户意图,提升交互体验


3. ReAct Prompt:让 LLM 学会思考 + 行动

ReAct Prompt 设计规定了 AI 的思维方式,指导其拆解问题并调用工具。

ReAct Prompt 模板

Question: {用户输入的问题}Thought: 需要获取相关信息,选择合适的工具
Action: {调用的工具 + 参数}
Observation: {工具返回的结果}
...(可能重复多次)
Final Answer: {最终答案}

案例:查询 AAPL 股票收盘价

Question: "苹果公司的最新收盘价是多少?"Thought: "我需要调用股票查询 API 获取 AAPL 的最新价格"
Action: get_stock_price("AAPL")
Observation: "返回:$180.32"Final Answer: "苹果公司今天的收盘价是 $180.32"

🔹 修改 Prompt 提高 AI 智能性 默认 ReAct Prompt 可能只会调用 API 一次,但我们希望 AI: ✅ 如果数据有误,能 自动重试
✅ 如果股票代码错误,能 建议用户修改

优化后的 Prompt:

Question: {用户输入的问题}Thought: 需要获取最新股票价格,但如果 API 失败,我会重新尝试或请求用户提供更详细信息。
Action: {调用的工具 + 参数}
Observation: {工具返回的结果}
Thought: 结果是否正确?是否需要进一步查询?
...(循环)
Final Answer: {最终答案}

这样,AI 变得更智能,不会因为 API 失败就直接输出错误答案。


4. 实战案例:基于 Function Calling + ReAct 查询股票价格

技术栈:OpenAI GPT-4 + FastAPI + Alpha Vantage API(股票查询)

🔹 实现 Function Calling

import openaifunctions = [{"name": "get_stock_price","description": "获取股票的最新收盘价","parameters": {"type": "object","properties": {"symbol": {"type": "string","description": "股票代码,例如 AAPL"}}}}
]def get_stock_price(symbol):# 调用 Alpha Vantage API 获取股票价格url = f"https://www.alphavantage.co/query?function=GLOBAL_QUOTE&symbol={symbol}&apikey=YOUR_API_KEY"response = requests.get(url).json()return response["Global Quote"]["05. price"]response = openai.ChatCompletion.create(model="gpt-4-turbo",messages=[{"role": "user", "content": "查询 AAPL 的收盘价"}],functions=functions,function_call="auto"
)

🔹 整合 ReAct 机制

def query_stock_price(symbol):thought = "我需要调用 API 查询股票价格"print(f"Thought: {thought}")action = f"调用 get_stock_price({symbol})"print(f"Action: {action}")try:price = get_stock_price(symbol)observation = f"返回价格:${price}"except Exception as e:observation = "API 查询失败,可能是股票代码错误"print(f"Observation: {observation}")if "API 查询失败" in observation:return "请检查股票代码是否正确"else:return f"Final Answer: {symbol} 的最新收盘价是 ${price}"

5. 总结

Function Calling 和 ReAct 让 LLM 不再是“死记硬背的模型”,而是具备主动思考和交互能力的智能体

Function Calling 让 LLM 具备调用外部工具的能力(API、数据库等)
ReAct 让 LLM 能 拆解问题、思考、调用工具、调整策略
结合 Function Calling + ReAct,可以构建智能 AI Agent,适用于搜索、金融、医疗等场景

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com