✗ WRONG

any-llm 1.40.2

tools.parallel-calls-stream · ollama

Back to results · Scenario

Requirements

IdLevelStatusEvidence
calls-reportedMUSTCONTRADICTEDtool_calls[0] id="4e8b9dda-3fa3-4763-af44-dcab08600e3f", name="get_weather", args={"city": "São Paulo"}, parsed=true; truth id="call_8uaqob2r", name="get_weather", args={"city": "São Paulo"}, parsed=true; tool_calls[1] id="babaee2f-2591-4efd-bafd-5af506b87982", name="get_weather", args={"city": "Zürich"}, parsed=true; truth id="call_nyjtbrz4", name="get_weather", args={"city": "Zürich"}, parsed=true

What the provider sent

Finish
tool_calls
Raw finish
stop
Text
Tool calls
[
  {
    "arguments": {
      "city": "São Paulo"
    },
    "arguments_parsed_ok": true,
    "arguments_raw": "{\"city\":\"São Paulo\"}",
    "id": "call_8uaqob2r",
    "name": "get_weather"
  },
  {
    "arguments": {
      "city": "Zürich"
    },
    "arguments_parsed_ok": true,
    "arguments_raw": "{\"city\":\"Zürich\"}",
    "id": "call_nyjtbrz4",
    "name": "get_weather"
  }
]
Usage
{
  "alternatives": {},
  "cached_input": 0,
  "input": 292,
  "output": 55,
  "raw": {
    "eval_count": 55,
    "prompt_eval_cached_count": 0,
    "prompt_eval_count": 292
  },
  "reasoning": null,
  "total": 347
}
Stream completed
true
Error
null
Wire excerpt
status: 200
content-type: application/x-ndjson
body (ndjson):
{"model":"qwen3.5:0.8b","created_at":"2026-10-12T19:01:10.221707224Z","message":{"role":"assistant","content":"","tool_calls":[{"id":"call_8uaqob2r","function":{"index":0,"name":"get_weather","arguments":{"city":"São Paulo"}}}]},"done":false}
{"model":"qwen3.5:0.8b","created_at":"2026-10-12T19:01:11.273204818Z","message":{"role":"assistant","content":"","tool_calls":[{"id":"call_nyjtbrz4","function":{"index":1,"name":"get_weather","arguments":{"city":"Zürich"}}}]},"done":false}
{"model":"qwen3.5:0.8b","created_at":"2026-10-12T19:01:11.38933263Z","message":{"role":"assistant","content":""},"done":true,"done_reason":"stop","total_duration":5044967438,"load_duration":2849216,"prompt_eval_count":292,"prompt_eval_cached_count":0,"prompt_eval_duration":2830672000,"eval_count":55,"eval_duration":2201672000}

What the library reported

Outcome
returned
Finish
{
  "raw": "stop",
  "source": "choices[0].finish_reason",
  "surface": "primary",
  "value": "stop"
}
Text
Value
Surface
primary
Tool calls
[
  {
    "arguments": {
      "city": "São Paulo"
    },
    "arguments_parsed_ok": true,
    "arguments_raw": "{\"city\": \"S\\u00e3o Paulo\"}",
    "id": "4e8b9dda-3fa3-4763-af44-dcab08600e3f",
    "name": "get_weather"
  },
  {
    "arguments": {
      "city": "Zürich"
    },
    "arguments_parsed_ok": true,
    "arguments_raw": "{\"city\": \"Z\\u00fcrich\"}",
    "id": "babaee2f-2591-4efd-bafd-5af506b87982",
    "name": "get_weather"
  }
]
Usage
{
  "cached_input": null,
  "input": 292,
  "output": 55,
  "reasoning": null,
  "surface": {
    "cached_input": "absent",
    "input": "primary",
    "output": "primary",
    "reasoning": "absent",
    "total": "primary"
  },
  "total": 347
}
Stream
{
  "chunks_seen": 3,
  "completed": null,
  "used": true
}
Error
null
Unsupported reason
null
Full observation JSON
{
  "elapsed_ms": 192.92589463293552,
  "error": null,
  "finish": {
    "raw": "stop",
    "source": "choices[0].finish_reason",
    "surface": "primary",
    "value": "stop"
  },
  "format": "wiretruth.observation/v1",
  "library": {
    "api": "any_llm.completion",
    "language": "python",
    "name": "any-llm",
    "version": "1.40.2"
  },
  "notes": [],
  "outcome": "returned",
  "stream": {
    "chunks_seen": 3,
    "completed": null,
    "used": true
  },
  "structured": {
    "attempted": false,
    "returned_as_success": false,
    "value": null
  },
  "text": {
    "surface": "primary",
    "value": ""
  },
  "tool_calls": [
    {
      "arguments": {
        "city": "São Paulo"
      },
      "arguments_parsed_ok": true,
      "arguments_raw": "{\"city\": \"S\\u00e3o Paulo\"}",
      "id": "4e8b9dda-3fa3-4763-af44-dcab08600e3f",
      "name": "get_weather"
    },
    {
      "arguments": {
        "city": "Zürich"
      },
      "arguments_parsed_ok": true,
      "arguments_raw": "{\"city\": \"Z\\u00fcrich\"}",
      "id": "babaee2f-2591-4efd-bafd-5af506b87982",
      "name": "get_weather"
    }
  ],
  "unsupported_reason": null,
  "usage": {
    "cached_input": null,
    "input": 292,
    "output": 55,
    "reasoning": null,
    "surface": {
      "cached_input": "absent",
      "input": "primary",
      "output": "primary",
      "reasoning": "absent",
      "total": "primary"
    },
    "total": 347
  }
}

Fixture

recorded ollama/tools.parallel-calls-stream

ProvenanceValue
Recorded at2026-10-12T19:01:06Z
Requested modelqwen3.5:0.8b
Returned modelqwen3.5:0.8b
CI runhttps://github.com/kartsan03/wiretruth/actions/runs/38294709109

Reproduce

wiretruth serve ollama/tools.parallel-calls-stream

Plain-library snippet from the shim manifest.

any_llm.completion(model=model, provider='ollama', api_base=WIRETRUTH_BASE_URL_OLLAMA, api_key=WIRETRUTH_API_KEY)

Upstream

reported Issue

Fixed in: not specified

Existing upstream issue, not opened by wiretruth. Ollama sends an id on each tool call, but the ollama Python client (0.6.3, latest) has no field for it, so any-llm's native provider generates UUIDs instead (providers/ollama/utils.py).

History

VersionGrade
1.40.2✗ WRONG
1.38.0✗ WRONG
1.33.0✗ WRONG