Skip to content

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-max with 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:

bash
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 ​

SymptomCauseFix
Inspector page shows no rowsModel doesn't support tool calling OR no chats have been made with toolsUse 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 toolClarify 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 invalidcat .env | grep BIGWAVE_TOKEN and use the correct value
Tool call result is nullThe tool was called but the result wasn't captured in the databaseCheck api container logs to verify the tool execution completed; this is a data integrity issue

Dual-licensed: MIT OR Apache-2.0