提示技术系列(11)——自动推理并使用工具

什么是提示技术?

        提示技术是实现提示工程目标的具体技术手段,是提示工程中的“工具库”

什么又是提示工程?

        提示工程是指通过设计、优化和迭代输入到大语言模型(LLM)的提示(Prompt),系统性提升模型输出质量(如相关性、准确性、可控性)的实践领域。它是一个覆盖全流程方法论,包括:

  • 明确目标任务(如生成教学内容、问答、翻译);
  • 设计提示结构(如指令、上下文、示例);
  • 选择模型与参数(如温度、top_p);
  • 验证与迭代(根据输出调整提示)。

其核心是“通过工程化方法控制大语言模型(LLM)的行为”


概念

        自动推理并使用工具(Automatic Reasoning and Tool-use,ART) ,是一种让大语言模型自主规划任务调用工具并整合结果的技术框架,其核心思想是通过【任务分解】-> 【工具调用】-> 【结果整合】的闭环,扩展模型的推理和执行能力。

工作原理:

  1. 接到一个新任务的时候,从任务库中选择多步推理和使用工具的示范;
  2. 在运行过程中,调用外部工具时,先暂停生成,将工具输出整合后继续接着生成。

其他特征:

  • 自动推理并使用工具(Automatic Reasoning and Tool-use)引导模型总结示范,将新任务进行拆分并在恰当的地方使用工具。
  • ART 采用的是零样本形式。
  • ART 还可以手动扩展,只要简单地更新任务和工具库就可以修正推理步骤中的错误或是添加新工具。

概念图解

应用场景

  1. 复杂问答。比如:回答需特定领域知识或实时信息的问题,如查询最新股票价格、获取最新的科研成果等。通过搜索引擎、数据库等工具,获取信息并整合到答案中;
  2. 任务自动化。自动执行各种任务,如自动发送邮件、自动预定机票、自动处理客服工单等。通过调用相应的 API,实现业务流程的自动化;
  3. 智能助手。构建能够执行各种任务的智能助手,如回答问题、执行计算、查询信息、安排日常等。根据用户的需求,自动选择合适的工具来完成任务。
  4. 科学研究。在科学研究中,ART 可以帮助科研人员进行文献检索、数据分析、实验设计等工作。如自动分析实验数据、生成实验报告等;
  5. 法律领域。在法律文档解析、合同审查等任务中,调用自然语言处理工具和法律数据库,帮助律师快速准确地处理法律文件;
  6. ……

案例实操

使用工具:扣子

实现方式:扣子智能体

完整智能体如下图:

测试 prompt:

明天 2025 年 7 月 3 日,我想去昆明玩,从广州出发,有什么车次的动车或高铁呢

运行结果:

        这个案例,更多依赖的是扣子智能体的一个能力,从而体现出了自动推理并使用工具。用户输入问题(prompt),模型自主规划并调用工具,然后整合结果并回复。

大家若有编程基础的话,可以参考下面的代码案例来实现与体验不同场景下使用自动推理并使用工具提示。

代码实现自动推理并使用工具提示

技术栈:Python;LangChain

代码引用包导入:

pip install langchain_community==0.3.26;
pip install langchain==0.3.26;
pip install langchain_core==0.3.66;

具体代码:

import os

from dotenv import load_dotenv
from langchain.agents import AgentExecutor, create_react_agent
from langchain_community.chat_models import ChatZhipuAI
from langchain_core.tools import Tool
from langchain import hub

# 加载环境变量
load_dotenv()

# 1. 初始化 GLM-4 模型
zhipu_chat = ChatZhipuAI(
    model="glm-4",
    api_key=os.getenv("ZHIPUAI_API_KEY")
)


# 2. 定义工具(模拟计算器)
def calculator_tool(expression: str) -> str:
    """模拟计算器工具,计算数学表达式"""
    try:
        res = eval(expression)
        return f"计算结果: {res}"
    except Exception as e:
        return f"计算错误: {str(e)}"


calculator = Tool(
    name="calculator",
    func=calculator_tool,
    description="用于计算数学表达式(如 '2 + 3 * 4')",
)

# 3. 加载标准的 ReAct 提示模板
prompt = hub.pull("hwchase17/react")

# 4. 创建 React Agent
agent = create_react_agent(zhipu_chat, [calculator], prompt)

# 5. 构建 Agent 执行器
agent_executor = AgentExecutor(agent=agent, tools=[calculator], verbose=True)

# 6. 测试运行
query = "计算 2 + 3 * 4 的结果"
result = agent_executor.invoke({"input": query})

# 打印结果
print("用户输入:", query)
print("模型输出:", result["output"])

总结与思考

        自动推理并使用工具提示,与之前的少样本、CoT、自我一致性、方向性刺激、思维树等提示技术都不一样的地方在于——它靠 LLM 本身来实现任务的自主规划并且还有自行判断是否调用工具,这对 LLM 的要求就不低了。因此,在使用到这个技术的时候,就要格外注意 LLM 的选择。毕竟,还有 LLM 是不支持工具调用的。

LLM 在调用工具的过程,就是我们常说的 Function Calling。 Function Calling 工作流程如下:

 

        一般在有老系统的存在下,在新开发 AI 项目中,由于业务的关系会调用到老系统已存在且稳定的功能来实现新AI 系统的需求,这个时候往往会用到自动推理并使用工具提示技术。

        想必大家从上文多多少少也了解到要让LLM能准确调用到对应的工具且传递的参数无误,这件事情并不容易,需要我们清晰地告知 LLM 已存在的这些工具或功能函数等。在内部系统对接中,这个事情还相对好办,而在涉及外部多个系统对接的情况下,这种维护工作是比较复杂的,尤其是在接口的变更的情况下,更为复杂与困难。

        为此,大佬们提出了一种范式——MCP(Model Context Protocol,模型上下文协议),它的提出标志着AI竞争从单一模型能力转向生态协作效能

其核心价值在于:

  • ​标准化​​:像USB-C统一设备接口一样,统一AI与外部世界的连接方式。
  • ​动态化​​:支持Agent自主发现和调用未预设的工具(如新上线的数据库服务)。
  • ​安全化​​:通过协议级权限控制,避免敏感数据泄露(如企业财务系统接入)。

好了,似乎扯远了。技术的发展就是这样,根据实际的问题出发,逐渐地找到问题的解决方案,然后就有可能会遇到新的需求、新的问题,又继续推动着科研、技术的发展。

OK,到此。


提示技术系列,接下来分享:程序辅助语言模型(PAL);ReAct 框架等等。

为了方便大家学习,这里给出专栏链接:https://blog.youkuaiyun.com/quf2zy/category_12995183.html

欢迎大家一起来学习与交流……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值