使用介绍
Toolcall(或叫Function Calling)是阶跃星辰开放平台提供的一项高级功能,它使模型能够根据用户的需求,智能地选择并调用合适的外部工具或函数来完成特定的任务。通过Toolcall API,开发者可以扩展模型的能力,使其能够处理更广泛的应用场景,并提供更丰富的功能和服务。下面是一个简单的工具调用的请求JSON例子, 在这个对象中,必须包含三个关键参数:
{
"model": "step-1-8k",
"messages": [
{
"role": "user",
"content": "小跃跃,你能为我计算(80 + 20) / 5 吗?"
}
],
"tools": [
{
"type": "function",
"function": {
"name": "Calculator",
"description": "这个阶跃星辰开放平台API提供基本的算术运算:加法、减法、乘法和除法。",
"parameters": {
"properties": {
"formula": {
"type": "string",
"description": "需要计算的公式。仅支持整数。有效的运算符包括+、-、*、/和括号。例如,(1 + 2) * 3。"
}
},
"type": "object"
}
}
}
]
}
model,模型名称
下面的几个模型支持处理Toolcall请求数据
- step-1-8k
- step-1-32k
- step-1v-8k
- step-1v-32k
- step-1-128k
- step-1-256k
官方工具列表
以下是由阶跃星辰支持的官方工具,仅需配置即可实现相关能力:
- 互联网搜索:调用搜索引擎,获取互联网上的最新信息。
tools,工具函数列表
通过tools参数告知模型本地支持的函数列表,函数列表不能超过128个,成员对象包含类型type和function对象,其中类型type仅支持function
, 函数对象包含名称name、功能介绍description和参数parameters。
- 函数名称name需要是纯英文、数字和_-符号,建议不要超过64个字符长度,这样容易被大模型所理解,遵守这样的正则表达式作为规范:
^[a-zA-Z_][a-zA-Z0-9-_]63$)
,这个名字如果是一个容易理解的英文,可能会更加被模型所识别和理解。 - 函数参数parameters 字段,根结点类型type必须是一个 object,内容是一个 json schema 的子集,每个子集的key遵循函数名称的规则,类型type支持参见json schema (opens in a new tab),description 跟函数功能介绍类似。
- 功能介绍 description,支持中英文,它用于告诉模型函数实现何种功能和目的,方便模型来判断和选择。
messages,上下文消息体
示例
from openai import OpenAI
client = OpenAI(api_key="STEP_API_KEY", base_url="https://api.stepfun.com/v1")
completion = client.chat.completions.create(
model = "step-1-8k",
messages = [
{
"role": "user",
"content": "你能为我计算(80 + 20) / 5 吗?"
}
],
tools = [{
"type": "function",
"function": {
"name": "Calculator",
"description": "这个阶跃星辰开放平台API提供基本的算术运算:加法、减法、乘法和除法。",
"parameters": {
"type": "object",
"properties": {
"formula": {
"type": "string",
"description": "需要计算的公式。仅支持整数。有效的运算符包括+、-、*、/和括号。例如,'(1 + 2) * 3'。"
}
}
}
}
}]
)
print(completion)
返回
{
"id": "b7b56af0-52a6-483f-a589-948182676a1b",
"object": "chat.completion",
"created": 1717744611,
"model": "step-1-8k",
"choices":
[
{
"index": 0,
"message":
{
"role": "assistant",
"content": "",
"tool_calls":
[
{
"id": "call_ybVBO_JASgipgJH8xWbhKg",
"type": "function",
"function":
{
"name": "Calculator",
"arguments": "{\"formula\": \"(80 + 20) / 5\"}"
}
}
]
},
"finish_reason": "stop"
}
],
"usage":
{
"prompt_tokens": 151,
"completion_tokens": 25,
"total_tokens": 176
}
}