halkyon/packages/halkyon_llm/test/fixtures/documented/openai-responses/text.http
Tizian 「ティツィアーン」 038aca5439
feat(llm): halkyon_llm, language models' APIs streamed over plain HTTP (ADR 0021, step 2)
A pure Dart package, no SDKs, one interface (LlmClient) over Anthropic's
Messages API, OpenAI's chat completions, in each known host's dialect and
the local servers' (D45), and OpenAI's Responses API, stateless (D46). A
model's turn keeps what its provider wants back with the tools' results:
Anthropic's thinking blocks, the Responses API's reasoning items and
message phase, Gemini's thought signatures. Failures come by kind, the
provider's words cut and without keys.

Tested on replies written from the providers' documentation, replayed in
pieces of 1, 7 and 4,096 bytes; tool/record_llm.dart records real ones
with a key of one's own, which the tests then run on too (D36).
FakeLlmClient for the code that uses it. BSD-3-Clause, as halkyon_oidc.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-26 07:17:06 +01:00

44 lines
5 KiB
HTTP

HTTP 200
content-type: text/event-stream; charset=utf-8
event: response.created
data: {"type":"response.created","sequence_number":0,"response":{"id":"resp_0f3a91c2d4e5b6a7","object":"response","created_at":1761400200,"status":"in_progress","background":false,"error":null,"incomplete_details":null,"instructions":"Du hilfst beim Japanischlernen.","max_output_tokens":4096,"model":"gpt-6-astra-2026-09-30","output":[],"parallel_tool_calls":true,"previous_response_id":null,"reasoning":{"effort":"medium","summary":null},"safety_identifier":"p_8Zq3","store":false,"text":{"format":{"type":"text"},"verbosity":"medium"},"tool_choice":"auto","tools":[],"truncation":"disabled","usage":null,"metadata":{}}}
event: response.in_progress
data: {"type":"response.in_progress","sequence_number":1,"response":{"id":"resp_0f3a91c2d4e5b6a7","object":"response","created_at":1761400200,"status":"in_progress","background":false,"error":null,"incomplete_details":null,"instructions":"Du hilfst beim Japanischlernen.","max_output_tokens":4096,"model":"gpt-6-astra-2026-09-30","output":[],"parallel_tool_calls":true,"previous_response_id":null,"reasoning":{"effort":"medium","summary":null},"safety_identifier":"p_8Zq3","store":false,"text":{"format":{"type":"text"},"verbosity":"medium"},"tool_choice":"auto","tools":[],"truncation":"disabled","usage":null,"metadata":{}}}
event: response.output_item.added
data: {"type":"response.output_item.added","sequence_number":2,"output_index":0,"item":{"id":"rs_0f3a91c2aa01","type":"reasoning","encrypted_content":"gAAAAABo_Rk1","summary":[]}}
event: response.output_item.done
data: {"type":"response.output_item.done","sequence_number":3,"output_index":0,"item":{"id":"rs_0f3a91c2aa01","type":"reasoning","encrypted_content":"gAAAAABo_Rk1nQ2xv8WcTq0Lz3HfJ5yV7aBdE9gKmPuRtY1sXo4iC6eNlA2vB8jM0zQwU=","summary":[]}}
event: response.output_item.added
data: {"type":"response.output_item.added","sequence_number":4,"output_index":1,"item":{"id":"msg_0f3a91c2bb02","type":"message","status":"in_progress","role":"assistant","content":[],"phase":"final_answer"}}
event: response.content_part.added
data: {"type":"response.content_part.added","sequence_number":5,"item_id":"msg_0f3a91c2bb02","output_index":1,"content_index":0,"part":{"type":"output_text","text":"","annotations":[],"logprobs":[]}}
event: response.output_text.delta
data: {"type":"response.output_text.delta","sequence_number":6,"item_id":"msg_0f3a91c2bb02","output_index":1,"content_index":0,"delta":"„Hund“ heißt","logprobs":[],"obfuscation":"q8Zr"}
: keep-alive
event: response.output_text.delta
data: {"type":"response.output_text.delta","sequence_number":7,"item_id":"msg_0f3a91c2bb02","output_index":1,"content_index":0,"delta":" auf Japanisch 犬","logprobs":[],"obfuscation":"Lm"}
event: response.output_text.delta
data: {"type":"response.output_text.delta","sequence_number":8,"item_id":"msg_0f3a91c2bb02","output_index":1,"content_index":0,"delta":" (いぬ, inu).","logprobs":[],"obfuscation":"x0Tq3Wv"}
event: response.output_text.done
data: {"type":"response.output_text.done","sequence_number":9,"item_id":"msg_0f3a91c2bb02","output_index":1,"content_index":0,"text":"„Hund“ heißt auf Japanisch 犬 (いぬ, inu).","logprobs":[]}
event: response.content_part.done
data: {"type":"response.content_part.done","sequence_number":10,"item_id":"msg_0f3a91c2bb02","output_index":1,"content_index":0,"part":{"type":"output_text","text":"„Hund“ heißt auf Japanisch 犬 (いぬ, inu).","annotations":[],"logprobs":[]}}
event: response.output_item.done
data: {"type":"response.output_item.done","sequence_number":11,"output_index":1,"item":{"id":"msg_0f3a91c2bb02","type":"message","status":"completed","role":"assistant","content":[{"type":"output_text","text":"„Hund“ heißt auf Japanisch 犬 (いぬ, inu).","annotations":[],"logprobs":[]}],"phase":"final_answer"}}
event: response.completed
data: {"type":"response.completed","sequence_number":12,"response":{"id":"resp_0f3a91c2d4e5b6a7","object":"response","created_at":1761400200,"status":"completed","background":false,"error":null,"incomplete_details":null,"instructions":"Du hilfst beim Japanischlernen.","max_output_tokens":4096,"model":"gpt-6-astra-2026-09-30","output":[{"id":"rs_0f3a91c2aa01","type":"reasoning","encrypted_content":"gAAAAABo_Rk1nQ2xv8WcTq0Lz3HfJ5yV7aBdE9gKmPuRtY1sXo4iC6eNlA2vB8jM0zQwU=","summary":[]},{"id":"msg_0f3a91c2bb02","type":"message","status":"completed","role":"assistant","content":[{"type":"output_text","text":"„Hund“ heißt auf Japanisch 犬 (いぬ, inu).","annotations":[],"logprobs":[]}],"phase":"final_answer"}],"parallel_tool_calls":true,"previous_response_id":null,"reasoning":{"effort":"medium","summary":null},"safety_identifier":"p_8Zq3","store":false,"text":{"format":{"type":"text"},"verbosity":"medium"},"tool_choice":"auto","tools":[],"truncation":"disabled","usage":{"input_tokens":412,"input_tokens_details":{"cached_tokens":256},"output_tokens":62,"output_tokens_details":{"reasoning_tokens":24},"total_tokens":474},"metadata":{}}}