Claude教程
Claude旧版工具使用教程
在旧版工具使用格式中,函数是在提示本身内定义的。当你向Claude提供工具和函数的描述时,Claude能够智能地决定何时以及如何使用这些工具来回答问题和完成任务。以下是一个工作流程示例:
- 函数定义和用户问题都在单个提示中传递给Claude。
- Claude评估用户的问题,并决定使用哪些函数以及使用什么参数。
- Claude构造格式正确的函数调用。
- 函数调用通过客户端代码使用明确的stop_sequence进行拦截,实际函数在客户端执行。
- 函数结果传回给Claude。
- Claude使用函数结果来制定对用户的最终响应。
定义函数
你可以通过向Claude提供包含在XML标签中的函数描述来定义函数。描述应包括:
- 函数名称
- 函数功能的纯文本说明
- 预期的参数、它们的类型和描述
- 返回值和类型
- 可能引发的任何异常
以下是函数定义的示例:
xml
<tool_description>
<tool_name>get_weather</tool_name>
<description>
检索指定位置的当前天气。
返回一个包含两个字段的字典:
- temperature:float,当前温度(华氏度)
- conditions:string,当前天气状况的简要描述
如果找不到提供的位置,则引发 ValueError。
</description>
<parameters>
<parameter>
<name>location</name>
<type>string</type>
<description>城市和州,例如 San Francisco, CA</description>
</parameter>
</parameters>
</tool_description>
旧版工具使用格式
为了让Claude调用函数,它必须输出一个非常特定格式的XML块。格式如下所示:
xml
<function_calls>
<invoke>
<tool_name>function_name</tool_name>
<parameters>
<param1>value1</param1>
<param2>value2</param2>
</parameters>
</invoke>
</function_calls>
如果Claude同时调用多个函数,<function_calls>
块可以包含多个 <invoke>
块。每个 <invoke>
包含被调用函数的名称和传入的参数。
在 <function_calls>
块之后,并假设你有适当的停止序列,Claude将停止生成并等待函数结果在 <function_results>
块中传回,如下所示:
xml
<function_results>
<result>
<tool_name>function_name</tool_name>
<stdout>
function result goes here
</stdout>
</result>
</function_results>
如果函数引发异常,应返回如下内容:
xml
<function_results>
<error>
error message goes here
</error>
</function_results>
示例
以下是一个完整的提示示例,它为Claude提供了两个函数和一个需要使用它们的问题:
xml
<tools>
<tool_description>
<tool_name>get_current_stock_price</tool_name>
<description>
获取公司的当前股票价格。返回 float:当前股票价格。
引发 ValueError:如果输入的符号无效/未知。
</description>
<parameters>
<parameter>
<name>symbol</name>
<type>string</type>
<description>要获取价格的公司的股票代码。</description>
</parameter>
</parameters>
</tool_description>
<tool_description>
<tool_name>get_ticker_symbol</tool_name>
<description>
通过公司名称搜索获取其股票代码。返回 str:公司股票的代码。如果未找到匹配的股票代码,则引发 TickerNotFound。
</description>
<parameters>
<parameter>
<name>company_name</name>
<type>string</type>
<description>公司名称。</description>
</parameter>
</parameters>
</tool_description>
</tools>
用户询问“通用汽车公司目前的股票价格是多少?”时,Claude的响应如下:
xml
<function_calls>
<invoke>
<tool_name>get_ticker_symbol</tool_name>
<parameters>
<company_name>General Motors</company_name>
</parameters>
</invoke>
</function_calls>
获取股票代码后,Claude随后调用获取当前价格:
xml
<function_calls>
<invoke>
<tool_name>get_current_stock_price</tool_name>
<parameters>
<symbol>GM</symbol>
</parameters>
</invoke>
</function_calls>
旧版工具使用的局限性
旧版工具使用格式未针对Claude 3进行优化,可能会导致比新版工具使用格式更差的性能。我们强烈建议尽快切换到新版工具使用结构,它更加可靠,并能实现更高质量的性能,特别是对于更复杂的工具使用任务。
结论
切换到新版工具使用结构将大幅提升性能和可靠性。理解旧版工具使用的工作原理有助于顺利过渡到新版结构,从而充分利用Claude API的优势。
阅读全文
×
初次访问:反爬虫,人机识别