Overview
Toolcall (Function Calling) is an advanced capability on the StepFun platform. It lets models decide which external tools or functions to invoke to satisfy a user request. By using the Toolcall API, you can extend model capabilities to cover more use cases and offer richer features. Below is a minimal JSON request example that must include three key parameters:
{
"model": "step-1-8k",
"messages": [
{
"role": "user",
"content": "Hey, can you calculate (80 + 20) / 5 for me?"
}
],
"tools": [
{
"type": "function",
"function": {
"name": "Calculator",
"description": "This StepFun API provides basic arithmetic: addition, subtraction, multiplication, and division.",
"parameters": {
"properties": {
"formula": {
"type": "string",
"description": "Expression to evaluate. Only integers are supported. Operators: +, -, *, /, and parentheses. Example: (1 + 2) * 3."
}
},
"type": "object"
}
}
}
]
}model: model name
The following models support Toolcall requests:
- step-1-8k
- step-1-32k
- step-1v-8k
- step-1v-32k
- step-1-128k
- step-1-256k
Official tools
StepFun provides these built-in tools; configure them to enable the capability directly:
- Web search: call a search engine to fetch the latest information.
- Knowledge base search: upload text to a knowledge base and search it to reduce hallucinations.
tools: list of functions
Use tools to describe the functions available locally. Up to 128 tools are allowed. Each entry has type function and contains a function object with the name, description, and parameters.
name: letters, numbers,-,_; ideally under 64 characters. Use a clear English name so the model understands it (regex guideline:^[a-zA-Z*][a-zA-Z0-9-_]63$).parameters: roottypemust beobject. The content follows a subset of JSON Schema; keys follow the same naming rule. See JSON Schema for supportedtypevalues.descriptionexplains each parameter.description: explains what the function does so the model can choose it; English or Chinese is supported.
messages: conversation context
See Chat Completion request object.
Examples
from openai import OpenAI
client = OpenAI(api_key = "STEP_API_KEY", base_url = "https://api.stepfun.ai/v1")
completion = client.chat.completions.create(
model = "step-1-8k",
messages = [
{
"role": "user",
"content": "Can you calculate (80 + 20) / 5 for me?"
}],
tools = [
{
"type": "function",
"function":
{
"name": "Calculator",
"description": "This StepFun API provides basic arithmetic: addition, subtraction, multiplication, and division.",
"parameters":
{
"type": "object",
"properties":
{
"formula":
{
"type": "string",
"description": "Expression to evaluate. Only integers are supported. Operators: +, -, *, /, and parentheses. Example: '(1 + 2) * 3'."
}
}
}
}
}]
)
print(completion)
Response
{
"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
}
}Last updated on