Tool calls and function calls
HiWay is tool-calling transparent across every supported provider.
Every supported provider implements tool calling differently under the hood (Anthropic uses tool_use blocks, OpenAI uses tool_calls arrays). HiWay accepts the OpenAI wire format on input and hands whatever the provider returns back to you - unchanged.
Routing implications
Requests with tools in the body are detected by the scoring engine as higher complexity - we bias the routing toward standard or heavy automatically. Simple classification queries that don't declare tools stay in light.
Model compatibility
Not every model supports tool use. If routing lands on a tool-incompatible model, provider fallback kicks in and we retry against the next same-tier model that does. Check X-HiWay-Routed-Model in the response to confirm which model answered.
Example
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get current weather for a city",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
},
}]
response = client.chat.completions.create(
model="auto",
messages=[{"role": "user", "content": "What's the weather in Paris?"}],
tools=tools,
)
# tool_calls comes back in the exact OpenAI format, regardless of which
# provider answered (Anthropic, Google, Mistral, etc.)
print(response.choices[0].message.tool_calls)