面包屑图标 当前位置: 首页
AI资讯
热点详情

Agent核心能力之工具使用详解

AI热点日报
AI热点日报时间:2026-06-23
热点解读

智能体工具集成:核心能力与实战指南 先说一个核心判断:工具使用是让智能体真正“支棱起来”的关键能力。它不仅让AI能处理实时信息、做复杂数据分析这些高级活儿,更直接提升了任务精度和用户体验。更重要的是——工具集成赋予了智能体适应性和可扩展性,让它在不断变化的环境中始终能保持更新,满足多样化的用户需求。

智能体工具集成:核心能力与实战指南

先说一个核心判断:工具使用是让智能体真正“支棱起来”的关键能力。它不仅让AI能处理实时信息、做复杂数据分析这些高级活儿,更直接提升了任务精度和用户体验。更重要的是——工具集成赋予了智能体适应性和可扩展性,让它在不断变化的环境中始终能保持更新,满足多样化的用户需求。

Agent 核心能力:工具使用详解

工具使用(也叫函数调用),说白了就是通过定义和调用外部工具或函数来扩展大模型的能力。具体做法是让大模型访问一组预定义的工具,模型可以在任何时候调用这些工具。工具的本质是让我们编写代码,去执行那些大模型自己搞不定的特定任务或计算。简单总结:工具就是给大模型“开挂”的方式。

工具使用的重要性

工具使用是能改变游戏规则的功能——它真正释放了大模型的潜能,打开了一个充满可能性的世界。它是关键组件,能显著提升应用的价值和影响力。

  • 扩展大模型的功能:通过工具使用,可以把大模型的能力拓展到其内置功能之外。定义并调用外部工具,模型就能完成它原本做不到的任务。这意味着你可以打造功能更强、用途更广的应用,去覆盖更广泛的用户需求。
  • 与现有系统集成:工具使用让大模型能无缝对接现有系统、数据库或API。你可以定义那些与后端服务交互、从数据库检索数据、或触发应用操作的工具。有了这个集成,既能借力大模型的强大能力,又不浪费已有的基础设施和数据。
  • 自动执行复杂任务:有了工具使用,涉及多个步骤或需要专门计算的复杂工作流就能跑起来了。封装好这些任务的工具,流程就简化了,人工操作减少了,效率自然上来了。大模型可以根据用户的输入或预设条件,在恰当的时机智能调用正确的工具。
  • 增强用户体验:工具使用能大大提升应用的体验感。给大模型提供相关工具的访问权限,它就能为用户查询给出更准确、更切合实际、也更个性化的回应。用户可以用自然语言与应用交互,而大模型则通过工具提供丰富信息或代表用户执行所需操作。
  • 扩展和定制:通过工具使用,你可以扩展和定制应用,以匹配用户不断变化的需求。用户群扩大或需求变化时,你可以轻松添加新工具或修改现有工具,来扩展大模型的功能。这种灵活性让应用能快速适应和迭代,始终保持相关性和竞争力。

应用案例举例

在客户实践中,我们看到一些通用主题:

  • 检索信息:工具可以从数据库、API或网络服务等外部来源获取数据。比如根据用户输入检索天气信息、股票价格或新闻文章。
  • 执行计算:工具可以执行复杂的计算或数学运算,这些可能超出了大模型的内置能力。包括财务计算、科学计算或统计分析。
  • 操作数据:工具可以处理、转换或操作各种格式的数据,比如数据格式化、数据提取或数据转换等任务。
  • 与外部系统交互:工具可以促进与外部系统或服务的交互,比如发送邮件、触发通知或控制物联网设备。
  • 生成内容:工具可以根据用户输入或预定义模板,协助生成特定类型的内容,如图像、图表或格式化文档。

更具体的用例包括:

  • 企业数据集成:将大模型与CRM、ERP和ITSM等企业系统集成,检索客户数据、自动执行工作流并提供个性化支持。
  • 财务分析和报告:用大模型和工具分析财务数据、生成投资报告、评估风险并确保合规。
  • 医疗诊断和治疗规划:将大模型与电子健康记录(EHR)和医学知识库整合,协助医疗专业人员做出诊断并制定个性化治疗计划。
  • 教育辅导和内容创建:将大模型与教育资源和工具结合,提供个性化辅导、生成学习材料并匹配个人学习风格。
  • 法律文件分析和审查:用大模型和工具分析法律文件、提取关键信息、识别潜在问题并生成摘要,简化法律流程。
  • 客户支持自动化:将大模型与知识库和支持票务系统集成,提供自动化客户支持、排除故障并缩短响应时间。
  • 销售和营销自动化:将大模型与各种工具结合,分析客户数据、生成个性化营销内容、筛选潜在客户并优化销售流程。
  • 软件开发协助:将大模型与集成开发环境、版本控制系统和项目管理工具结合,协助开发人员编写代码、识别错误并管理项目。
  • 研究与创新:利用大模型和工具进行市场调研、分析专利数据、生成新想法并推动各行业的创新。
  • 内容创建和优化:利用大模型和工具为网站、社交媒体和营销活动等平台生成、优化和个性化内容。

接下来,我们以Claude中的工具使用为例,详细介绍相关要点。

如何使用工具

来看看工具的实际使用方法。最重要的一点是:Claude不会自己运行任何代码。我们告诉Claude一组它可以要求我们调用的工具,然后我们的职责就是实际运行底层的工具代码,并把结果回传给Claude。

Claude没有任何内置的服务器端工具。所有工具都必须由用户在每个API请求中明确提供。这意味着你需要定义可用的工具,提供清晰的描述和输入模式,同时实现和执行工具逻辑——比如根据Claude的请求运行特定函数或查询API。这样你就能完全控制Claude可用的工具,并灵活运用。

具体来说,Claude工具使用包括以下步骤:

1. 为Claude提供工具和用户提示词(API请求)

  • 定义希望Claude访问的工具集,包括工具名称、描述和输入模式。
  • 提供用户提示词,可能需要使用其中一个或多个工具来回答,比如“我用500美元可以买多少股通用汽车的股票?”

2. Claude工具使用(API响应)

  • Claude会评估用户提示,决定是否有任何可用工具可以帮助完成查询或任务。如果有,它还决定使用哪种工具以及输入什么内容。
  • Claude输出格式正确的工具使用请求。
  • API响应的stop_reason会变为tool_use,表示Claude希望使用外部工具。

3. 提取工具输入、运行代码并返回结果(API请求)

  • 在客户端,从Claude的工具使用请求中提取工具名称和输入。
  • 在客户端运行实际的工具代码。
  • 用包含tool_result内容块的新用户消息继续对话,将结果返回给Claude。

4. Claude使用工具结果响应(API响应)

  • 收到工具结果后,Claude用该信息来制定对原始用户提示的最终响应。

步骤(3)和(4)是可选的——对某些工作流来说,Claude用工具就能提供所需的全部信息,可能不需要把工具结果返给Claude。这点我们下一节详述。

假设工具使用场景

为了更好地理解工具的使用流程,假设我们正在构建一个聊天应用,允许用户和Claude聊股票市场并检索当前股价。

Claude当然不知道任何特定时间点的股市行情和价格,所以我们需要给Claude提供一个get_stock_price工具,用来检索某家公司当前的股价。

这是一个简单的示意图,展示我们的应用和Claude之间的信息流:

详细流程分解

以下是工具使用步骤的详细分解:

第0步:编写工具功能

在告诉Claude它可以访问的特定工具之前,我们首先需要编写该工具的功能。以get_stock_price工具为例,我们会写一个函数,将公司名称或股票代码作为参数,然后向股票市场API发送请求,以获取实时股票数据。类似这样:

def get_stock_price(company):
#Send a request to a stock market API to lookup current stock price for a given company

#Returns a dictionary containing current stock price information for the specified company

如果完全实现并调用它,比如get_stock_price("General Motors"),可能会得到类似这样的返回值:

{
"symbol": "GM",
"price": 43.09
}

第1步:为Claude提供工具和用户提示(API请求)

接下来需要定义get_stock_price工具的名称、描述和输入模式。下面是假设的工具定义:

tool_definition = {
"name": "get_stock_price",
"description": "Retrieves the current stock price for a given company",
"input_schema": {
"type": "object",
"properties": {
"company": {
"type": "string",
"description": "The company name to fetch stock data for"
}
},
"required": ["company"]
}
}

然后告诉Claude这个工具,并通过提示提出可能需要这个工具的请求:

response = client.messages.create(
model="claude-3-opus-20240229",
messages=[{"role": "user", "content": "How many shares of General Motors can I buy with $500?"}],
max_tokens=500,
tools=[tool_definition]
)

步骤2:Claude使用工具(API响应)

Claude收到API请求并评估用户提示。它认为get_stock_price工具有助于回答关于购买通用汽车股票的问题。

Claude响应格式正确的工具使用请求。

{
"stop_reason": "tool_use",
"tool_use": {
"name": "get_stock_price",
"input": {
"company": "General Motors"
}
}
}

第3步:提取工具输入、运行代码并返回结果(API请求)

在客户端,从Claude的工具使用请求中提取工具名称(get_stock_price)和输入的公司名称(General Motors)。

执行实际的get_stock_price函数,从API获取实时股票数据。函数返回的数据可能如下:

{
"symbol": "GM",
"price": 43.09
}

然后通过包含tool_result内容块的新用户消息,将工具结果返回给Claude。

第4步:Claude使用工具结果做出响应(API响应)

Claude接收到股价工具的结果,将实时股票信息纳入对原始用户提示的最终回复:

目前通用汽车股价为43.09,你可以用500美元购买大约11股通用汽车的股票。

第一个简单工具

前面介绍了工具使用的4步工作流。现在实际操作一个简单示例。

我们会从一个简单演示开始,只和Claude“对话”一次(别担心,后面会有更精彩的示例!)。这意味着先不考虑第4步。我们要求Claude回答一个问题,Claude要求用工具回答,然后我们提取工具的输入,运行代码,并返回结果。

如今的大型语言模型在数学运算方面都很吃力,下面的代码就是明证。

我们要求Claude“用1984135乘以9343116”:

from anthropic import Anthropic
from dotenv import load_dotenv

load_dotenv()

client = Anthropic()

# A relatively simple math problem
response = client.messages.create(
model="claude-3-haiku-20240307",
messages=[{"role": "user", "content":"Multiply 1984135 by 9343116. Only respond with the result"}],
max_tokens=400
)
print(response.content[0].text)

18593367726060

多次运行可能会得到不同答案,但实际正确结果是18538003464660——Claude偏差了55364261400!

用工具来解决!

Claude并不擅长复杂数学运算,所以让我们提供计算器工具来增强它的能力。

第一步是定义实际的计算器函数,确保它能独立于Claude运行。写一个非常简单的函数,需要三个参数:

  • 一个操作,比如“加法”或“乘法”
  • 两个操作数
def calculator(operation, operand1, operand2):
if operation == "add":
return operand1 + operand2
elif operation == "subtract":
return operand1 - operand2
elif operation == "multiply":
return operand1 * operand2
elif operation == "divide":
if operand2 == 0:
raise ValueError("Cannot divide by zero.")
return operand1 / operand2
else:
raise ValueError(f"Unsupported operation: {operation}")

这个简单函数功能有限,只能处理234 + 2133 * 9这样的简单表达式。重点是通过非常简单的教学示例介绍工具使用过程。

测试一下我们的函数,确保它能正常工作:

calculator("add", 10, 3)输出13,calculator("divide", 200, 25)输出8.0

下一步是定义工具并向Claude介绍它。每个工具定义都包括名称、描述和输入模式。

{
"name": "send_email",
"description": "Sends an email to the specified recipient with the given subject and body.",
"input_schema": {
"type": "object",
"properties": {
"to": {
"type": "string",
"description": "The email address of the recipient"
},
"subject": {
"type": "string",
"description": "The subject line of the email"
},
"body": {
"type": "string",
"description": "The content of the email message"
}
},
"required": ["to", "subject", "body"]
}
}

计算器工具定义

为计算器函数定义相应的工具:

calculator_tool = {
"name": "calculator",
"description": "A simple calculator that performs basic arithmetic operations.",
"input_schema": {
"type": "object",
"properties": {
"operation": {
"type": "string",
"enum": ["add", "subtract", "multiply", "divide"],
"description": "The arithmetic operation to perform."
},
"operand1": {
"type": "number",
"description": "The first operand."
},
"operand2": {
"type": "number",
"description": "The second operand."
}
},
"required": ["operation", "operand1", "operand2"]
}
}

为Claude提供工具

回到计算器函数。此时Claude对计算器工具一无所知!它只是一个小小的Python字典。在向Claude提出请求时,传递工具列表来告诉Claude:

response = client.messages.create(
model="claude-3-haiku-20240307",
messages=[{"role": "user", "content": "Multiply 1984135 by 9343116. Only respond with the result"}],
max_tokens=300,
# Tell Claude about our tool
tools=[calculator_tool]
)

查看Claude的回复:

响应看起来和平时不同!现在收到的是ToolsMessage,可以检查response.stop_reason,发现Claude停止是因为它认为是时候用工具了:

'tool_use'

response.content包含一个ToolUseBlock,包含工具名称和输入信息:

tool_name = response.content[0].name
tool_inputs = response.content[0].input

print("The Tool Name Claude Wants To Call:", tool_name)
print("The Inputs Claude Wants To Call It With:", tool_inputs)

Claude希望调用的工具名称:calculator,输入:{'operand1': 1984135, 'operand2': 9343116, 'operation': 'multiply'}

下一步,使用提供的工具名称和输入,调用之前编写的计算器函数,得出正确答案:18538003464660

重要提示

问Claude不需要用工具的问题时,比如和数学或计算无关的,可能希望它能正常回答。但有时Claude会很渴望用它的工具!比如问“祖母绿是什么颜色的?”时,Claude可能会尝试使用计算器。

一个简单的解决方法是调整提示或添加系统提示,大致如:“You ha ve access to tools, but only use them when necessary. If a tool is not required, respond as normal”。加了之后,Claude就能正常回复了。

练习

利用Claude帮助建立一个研究助手。用户输入一个主题,获得保存到标记文件中的维基百科文章链接列表。任务是为generate_wikipedia_reading_list函数编写工具定义,并实现get_research_help函数。

结构化输出

工具使用的一种更有趣的方式是强制Claude响应JSON等结构化内容。只要Claude想用某个工具,它就会用定义时告诉它的结构完美的格式进行响应。利用这一点,定义描述特定JSON结构的工具,然后告诉Claude,它就会响应结构化的JSON数据。

情感分析示例

定义print_sentiment_scores工具,强制Claude生成包含positive_score、negative_score、neutral_score的JSON对象。通过tool_choice={"type": "tool", "name": "print_sentiment_scores"}参数强制Claude始终使用特定工具。

实体提取示例

用类似方法让Claude生成包含人员、组织和地点等实体的JSON数据。定义print_entities工具,输入模式中包含entities数组,每个实体有name、type和context属性。

完整的工具使用工作流

介绍完整的4步工具使用工作流程。包括定义维基百科搜索函数、编写工具定义、提供工具和用户提示、处理Claude的工具使用请求并返回结果。

工具选择

Claude API支持tool_choice参数,允许指定Claude调用工具的方式。三种选项:

  • Auto:让Claude自动决定是否调用任何提供的工具。
  • Any:告诉Claude必须调用一个工具,但可以选择哪一个。
  • Tool:强制Claude始终使用某一特定工具。

使用多种工具

为虚构的电子公司TechNova构建简单的客户支持聊天机器人。提供四个工具:get_user、get_order_by_id、get_customer_orders和cancel_order。通过系统提示增强聊天体验,并提示Claude将用户面向的响应放在XML标签中。

- END -

热点追踪提示词
你是一名 AI 行业编辑,请围绕下面这条热点输出一份资讯解读:
热点:Agent核心能力之工具使用详解要求:
1. 先用一句话解释这条热点在讲什么
2. 再总结它为什么重要
3. 说明会影响哪些 AI 产品或内容方向
4. 最后给出 3 个适合资讯站使用的标题
来源:https://www.53ai.com/news/LargeLanguageModel/2024091235721.html
ai 人工智能

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关热点
AI热点2026-07-09 21:03
VSona推出AI伴侣开发新方案

VSona是一个开发AI伴侣的平台,提供聊天、角色扮演、创意表达等功能。用户可自定义头像和声线,支持文字或语音互动。AI伴侣具备动画反馈和语音响应,营造安全、沉浸的个性化互动空间。

AI热点2026-07-09 21:03
AI音频母带处理工具Mastermallow

MastermallowAI音频母带处理适用于音乐、播客及内容创作者。可将原始录音一键转为专业音频,提升播客音质,为音乐作品添加母带效果。特色包括智能音频分析与增强、原音与母带实时对比、高质量成品下载。

AI热点2026-07-09 21:03
MyCharacter.ai:创建收藏互动AI角色的dApp

MyCharacter AI是基于Polygon链的去中心化应用,通过CharacterGPTV2多模态AI系统生成具有独特形象和性格的AI角色。用户可与角色实时互动,并将其作为NFT收藏、交易或转让,实现AI角色生成、互动与资产化的一体化。

AI热点2026-07-09 21:03
ToMate AI自动回复客户消息

ToMate基于AI智能高效处理客户消息,适用于客服、销售及市场营销等场景。它能及时贴心回复,支持解析多种文件格式,并采用灵活定价方案,显著提升工作效率与客户满意度。

延伸阅读