✓ PASS
any-llm 1.40.2
stream.utf8-split · ollama
Requirements
| Id | Level | Status | Evidence |
|---|---|---|---|
| text-reported | MUST | SATISFIED | text.value="Café Zürich — καλημέρα! 東京で会いましょう 🌸🎉" (primary); truth.text="Café Zürich — καλημέρα! 東京で会いましょう 🌸🎉" |
| no-replacement-chars | MUST | SATISFIED | text.value="Café Zürich — καλημέρα! 東京で会いましょう 🌸🎉" (primary); U+FFFD count=0 |
What the provider sent
- Finish
- stop
- Raw finish
- stop
- Text
- Café Zürich — καλημέρα! 東京で会いましょう 🌸🎉
- Tool calls
[]
- Usage
{ "alternatives": {}, "cached_input": 0, "input": 35, "output": 22, "raw": { "eval_count": 22, "prompt_eval_cached_count": 0, "prompt_eval_count": 35 }, "reasoning": null, "total": 57 }- Stream completed
true
- Error
null
Wire excerpt
status: 200 content-type: application/x-ndjson body (chunks_b64): eyJtb2RlbCI6InF3ZW4zLjU6MC44YiIsImNyZWF0ZWRfYXQiOiIyMDI2LTEwLTEyVDE5OjAxOjA1LjQxNjE4ODkzNVoiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjoiQyJ9LCJkb25lIjpmYWxzZX0KeyJtb2RlbCI6InF3ZW4zLjU6MC44YiIsImNyZWF0ZWRfYXQiOiIyMDI2LTEwLTEyVDE5OjAxOjA1LjUzMDA3ODI0M1oiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjoiYWYifSwiZG9uZSI6ZmFsc2V9CnsibW9kZWwiOiJxd2VuMy41OjAuOGIiLCJjcmVhdGVkX2F0IjoiMjAyNi0xMC0xMlQxOTowMTowNS41MzAxMTE1NDZaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6IsM= qSJ9LCJkb25lIjpmYWxzZX0KeyJtb2RlbCI6InF3ZW4zLjU6MC44YiIsImNyZWF0ZWRfYXQiOiIyMDI2LTEwLTEyVDE5OjAxOjA1LjY0MzU2Mjk4NloiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjoiIFrDvHJpY2gifSwiZG9uZSI6ZmFsc2V9CnsibW9kZWwiOiJxd2VuMy41OjAuOGIiLCJjcmVhdGVkX2F0IjoiMjAyNi0xMC0xMlQxOTowMTowNS42NDM4Mzg5NjFaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6IiDi gJQifSwiZG9uZSI6ZmFsc2V9CnsibW9kZWwiOiJxd2VuMy41OjAuOGIiLCJjcmVhdGVkX2F0IjoiMjAyNi0xMC0xMlQxOTowMTowNS43NTg4MTc4MjRaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6IiDO us6xIn0sImRvbmUiOmZhbHNlfQp7Im1vZGVsIjoicXdlbjMuNTowLjhiIiwiY3JlYXRlZF9hdCI6IjIwMjYtMTAtMTJUMTk6MDE6MDUuNzU4ODc3MzA1WiIsIm1lc3NhZ2UiOnsicm9sZSI6ImFzc2lzdGFudCIsImNvbnRlbnQiOiLOu863In0sImRvbmUiOmZhbHNlfQp7Im1vZGVsIjoicXdlbjMuNTowLjhiIiwiY3JlYXRlZF9hdCI6IjIwMjYtMTAtMTJUMTk6MDE6MDUuNzU5MDk5NTJaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6Is68zq0ifSwiZG9uZSI6ZmFsc2V9CnsibW9kZWwiOiJxd2VuMy41OjAuOGIiLCJjcmVhdGVkX2F0IjoiMjAyNi0xMC0xMlQxOTowMTowNS44NzQzNjAyM1oiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50Ijoiz4HOsSJ9LCJkb25lIjpmYWxzZX0KeyJtb2RlbCI6InF3ZW4zLjU6MC44YiIsImNyZWF0ZWRfYXQiOiIyMDI2LTEwLTEyVDE5OjAxOjA1Ljg3NDQxNjI3NFoiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjoiISJ9LCJkb25lIjpmYWxzZX0KeyJtb2RlbCI6InF3ZW4zLjU6MC44YiIsImNyZWF0ZWRfYXQiOiIyMDI2LTEwLTEyVDE5OjAxOjA1Ljk4ODk1MDM5N1oiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjoiIOY= nbHkuqwifSwiZG9uZSI6ZmFsc2V9CnsibW9kZWwiOiJxd2VuMy41OjAuOGIiLCJjcmVhdGVkX2F0IjoiMjAyNi0xMC0xMlQxOTowMTowNS45ODg5NzY0MDVaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6IuOBpyJ9LCJkb25lIjpmYWxzZX0KeyJtb2RlbCI6InF3ZW4zLjU6MC44YiIsImNyZWF0ZWRfYXQiOiIyMDI2LTEwLTEyVDE5OjAxOjA1Ljk4OTA2MjQ3NloiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50Ijoi5Lya44GEIn0sImRvbmUiOmZhbHNlfQp7Im1vZGVsIjoicXdlbjMuNTowLjhiIiwiY3JlYXRlZF9hdCI6IjIwMjYtMTAtMTJUMTk6MDE6MDYuMTA0MjA4MTNaIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6IuOBvuOBl+OCh+OBhiJ9LCJkb25lIjpmYWxzZX0KeyJtb2RlbCI6InF3ZW4zLjU6MC44YiIsImNyZWF0ZWRfYXQiOiIyMDI2LTEwLTEyVDE5OjAxOjA2LjIxOTA2MjUyWiIsIm1lc3NhZ2UiOnsicm9sZSI6ImFzc2lzdGFudCIsImNvbnRlbnQiOiIg8A== n4y4In0sImRvbmUiOmZhbHNlfQp7Im1vZGVsIjoicXdlbjMuNTowLjhiIiwiY3JlYXRlZF9hdCI6IjIwMjYtMTAtMTJUMTk6MDE6MDYuMzM0MDgzOTQzWiIsIm1lc3NhZ2UiOnsicm9sZSI6ImFzc2lzdGFudCIsImNvbnRlbnQiOiLwn46JIn0sImRvbmUiOmZhbHNlfQp7Im1vZGVsIjoicXdlbjMuNTowLjhiIiwiY3JlYXRlZF9hdCI6IjIwMjYtMTAtMTJUMTk6MDE6MDYuMzM0MjM5Nzg0WiIsIm1lc3NhZ2UiOnsicm9sZSI6ImFzc2lzdGFudCIsImNvbnRlbnQiOiIifSwiZG9uZSI6dHJ1ZSwiZG9uZV9yZWFzb24iOiJzdG9wIiwidG90YWxfZHVyYXRpb24iOjEzMTE0NTAwMzgsImxvYWRfZHVyYXRpb24iOjIxNzIyODQsInByb21wdF9ldmFsX2NvdW50IjozNSwicHJvbXB0X2V2YWxfY2FjaGVkX2NvdW50IjowLCJwcm9tcHRfZXZhbF9kdXJhdGlvbiI6MzgyNjQ5MDAwLCJldmFsX2NvdW50IjoyMiwiZXZhbF9kdXJhdGlvbiI6OTE3ODE0MDAwfQo=
What the library reported
- Outcome
- returned
- Finish
{ "raw": "stop", "source": "choices[0].finish_reason", "surface": "primary", "value": "stop" }- Text
- Value
- Café Zürich — καλημέρα! 東京で会いましょう 🌸🎉
- Surface
- primary
- Tool calls
[]
- Usage
{ "cached_input": null, "input": 35, "output": 22, "reasoning": null, "surface": { "cached_input": "absent", "input": "primary", "output": "primary", "reasoning": "absent", "total": "primary" }, "total": 57 }- Stream
{ "chunks_seen": 17, "completed": null, "used": true }- Error
null
- Unsupported reason
null
Full observation JSON
{
"elapsed_ms": 156.69403038918972,
"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": 17,
"completed": null,
"used": true
},
"structured": {
"attempted": false,
"returned_as_success": false,
"value": null
},
"text": {
"surface": "primary",
"value": "Café Zürich — καλημέρα! 東京で会いましょう 🌸🎉"
},
"tool_calls": [],
"unsupported_reason": null,
"usage": {
"cached_input": null,
"input": 35,
"output": 22,
"reasoning": null,
"surface": {
"cached_input": "absent",
"input": "primary",
"output": "primary",
"reasoning": "absent",
"total": "primary"
},
"total": 57
}
}Fixture
derived ollama/stream.utf8-split
| Provenance | Value |
|---|---|
| Transform | rechunk_inside_utf8 |
| Source fixture | ollama/stream.utf8 |
| Rationale | A network chunk boundary splits a multi-byte UTF-8 character. |
| Evidence | https://github.com/langchain-ai/langchainjs/issues/5285 |
Reproduce
wiretruth serve ollama/stream.utf8-splitPlain-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
No matching upstream report.
History
| Version | Grade |
|---|---|
| 1.40.2 | ✓ PASS |
| 1.38.0 | ✓ PASS |
| 1.33.0 | ✓ PASS |