Tool calls inspector
What it does
The Tool Calls Inspector filters the inference log to show only rows where the model made function calls (tool_calls is populated). You can inspect the call arguments, return values, and intermediate results. This is useful for debugging agent-style workflows where the model calls tools (functions) and iterates on the results.
Prerequisites
- A model that supports tool calling (e.g.
gpt-4-turbo,qwen-maxwith tool support enabled). - At least one chat where the model made tool calls.
Steps
1. Open the Tool Calls Inspector page
Click Tool Calls in the left rail (bottom of the icon grid). The page lists inferences where tool_calls is non-empty.
2. Send a tool-calling chat (if you haven't already)
Send a chat with a tools/functions schema in the request:
curl -s -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $BIGWAVE_TOKEN" \
-d '{
"model": "qwen2.5:3b",
"messages": [
{"role": "user", "content": "What time is it in Tokyo right now?"}
],
"tools": [
{
"type": "function",
"function": {
"name": "get_current_time",
"description": "Get the current time in a given timezone",
"parameters": {
"type": "object",
"properties": {
"timezone": {"type": "string"}
}
}
}
}
]
}' \
"http://localhost:8080/v1/chat/completions"The model responds with a choice of finish_reason: tool_calls and an array of tool calls in the tool_calls field.
3. View the tool calls list
The inspector page shows a table of inferences with:
- Model id — the model that made the calls.
- Tool — name of the function called (e.g.
get_current_time). - Called at — timestamp (relative, e.g. "2 minutes ago").
- Status — blue if pending/running, green if succeeded, red if failed.
4. Expand an inference row
Click a row to open a side drawer with:
- Tool call details — name, arguments (as JSON), and return value (if available).
- Full context — the assembled prompt, system message, user turn, and tool response.
- Metadata — model, adapter, workspace, token counts.
5. Inspect arguments and results
In the drawer, review:
- Arguments — what the model tried to pass to the function (e.g.
{"timezone": "Asia/Tokyo"}). - Result — what the tool returned (e.g.
{"time": "2024-04-15T14:32:00Z"}).
If the call failed, the result shows the error message.
Verify
- Send a chat with a tools schema; the model should make at least one call.
- Open the Tool Calls Inspector; your inference appears in the list.
- Click the row; the drawer shows the tool call details.
- Verify the arguments match what you expected the model to infer.
- If tool results are present, verify they were correctly passed back to the model in a tool response message.
Common issues
| Symptom | Cause | Fix |
|---|---|---|
| Inspector page shows no rows | Model doesn't support tool calling OR no chats have been made with tools | Use a model with tool-calling support; send a chat with a tools array in the request |
Tool call arguments are empty {} | Model ignored the function schema or didn't need to call the tool | Clarify the user prompt to encourage the model to use the tool (e.g. "You must call a function to answer this") |
| Tool call status is stuck on "pending" | Tool result hasn't been returned to the model (incomplete agent loop) | Multi-turn tool calling is in progress; wait for the agent to complete or check logs for errors |
| "401 Unauthorized" | Bearer token is missing or invalid | cat .env | grep BIGWAVE_TOKEN and use the correct value |
| Tool call result is null | The tool was called but the result wasn't captured in the database | Check api container logs to verify the tool execution completed; this is a data integrity issue |
Related
- Send a chat message — prerequisite for tool-calling chats.
- Inspect inferences (Observability page) — the full inference log; Tool Calls Inspector is a filtered view.
- Model catalog — find models that support tool calling.