Skip to main content
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-3.7-flash",
  "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-3.7-flash
  • step-3.5-flash
  • step-3.5-flash-2603

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: root type must be object. The content follows a subset of JSON Schema; keys follow the same naming rule. See JSON Schema for supported type values. description explains 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-3.7-flash",
    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)
{
  "id": "b7b56af0-52a6-483f-a589-948182676a1b",
  "object": "chat.completion",
  "created": 1717744611,
  "model": "step-3.7-flash",
  "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
  }
}