multi_tool_streaming.yaml

  1---
  2version: 2
  3interactions:
  4- id: 0
  5  request:
  6    proto: HTTP/1.1
  7    proto_major: 1
  8    proto_minor: 1
  9    content_length: 897
 10    host: ""
 11    body: '{"messages":[{"content":"You are a helpful assistant. Always use both add and multiply at the same time.","role":"system"},{"content":"Add and multiply the number 2 and 3","role":"user"}],"model":"openai/gpt-5.4-nano","max_completion_tokens":4000,"stream_options":{"include_usage":true},"tool_choice":"auto","tools":[{"function":{"name":"add","strict":false,"description":"Add two numbers","parameters":{"properties":{"a":{"description":"first number","type":"integer"},"b":{"description":"second number","type":"integer"}},"required":["a","b"],"type":"object"}},"type":"function"},{"function":{"name":"multiply","strict":false,"description":"Multiply two numbers","parameters":{"properties":{"a":{"description":"first number","type":"integer"},"b":{"description":"second number","type":"integer"}},"required":["a","b"],"type":"object"}},"type":"function"}],"usage":{"include":true},"stream":true}'
 12    headers:
 13      Accept:
 14      - application/json
 15      Content-Type:
 16      - application/json
 17      User-Agent:
 18      - Charm-Fantasy/0.21.0 (https://charm.land/fantasy)
 19    url: https://openrouter.ai/api/v1/chat/completions
 20    method: POST
 21  response:
 22    proto: HTTP/2.0
 23    proto_major: 2
 24    proto_minor: 0
 25    content_length: -1
 26    body: |+
 27      : OPENROUTER PROCESSING
 28
 29      : OPENROUTER PROCESSING
 30
 31      data: {"id":"gen-1777319818-QPRmQjcRi7f0czNVMFzC","object":"chat.completion.chunk","created":1777319818,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","choices":[{"index":0,"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":"call_8I6muAnyFaBjKyotk1gPRTwU","type":"function","function":{"name":"add","arguments":""}}]},"finish_reason":null,"native_finish_reason":null}]}
 32
 33      data: {"id":"gen-1777319818-QPRmQjcRi7f0czNVMFzC","object":"chat.completion.chunk","created":1777319818,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","choices":[{"index":0,"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"function":{"arguments":""}}]},"finish_reason":null,"native_finish_reason":null}]}
 34
 35      data: {"id":"gen-1777319818-QPRmQjcRi7f0czNVMFzC","object":"chat.completion.chunk","created":1777319818,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","choices":[{"index":0,"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"function":{"arguments":"{\"a\":2,\"b\":3}"}}]},"finish_reason":null,"native_finish_reason":null}]}
 36
 37      data: {"id":"gen-1777319818-QPRmQjcRi7f0czNVMFzC","object":"chat.completion.chunk","created":1777319818,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","choices":[{"index":0,"delta":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":"call_pKAAv6bKX2qLYJ85RW4Hxqfp","type":"function","function":{"name":"multiply","arguments":""}}]},"finish_reason":null,"native_finish_reason":null}]}
 38
 39      data: {"id":"gen-1777319818-QPRmQjcRi7f0czNVMFzC","object":"chat.completion.chunk","created":1777319818,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","choices":[{"index":0,"delta":{"content":null,"role":"assistant","tool_calls":[{"index":1,"function":{"arguments":""}}]},"finish_reason":null,"native_finish_reason":null}]}
 40
 41      data: {"id":"gen-1777319818-QPRmQjcRi7f0czNVMFzC","object":"chat.completion.chunk","created":1777319818,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","choices":[{"index":0,"delta":{"content":null,"role":"assistant","tool_calls":[{"index":1,"function":{"arguments":"{\"a\":2,\"b\":3}"}}]},"finish_reason":null,"native_finish_reason":null}]}
 42
 43      data: {"id":"gen-1777319818-QPRmQjcRi7f0czNVMFzC","object":"chat.completion.chunk","created":1777319818,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","service_tier":"default","choices":[{"index":0,"delta":{"content":"","role":"assistant"},"finish_reason":"tool_calls","native_finish_reason":"completed"}]}
 44
 45      data: {"id":"gen-1777319818-QPRmQjcRi7f0czNVMFzC","object":"chat.completion.chunk","created":1777319818,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","service_tier":"default","choices":[{"index":0,"delta":{"content":"","role":"assistant"},"finish_reason":"tool_calls","native_finish_reason":"completed"}],"usage":{"prompt_tokens":109,"completion_tokens":54,"total_tokens":163,"cost":0.0000893,"is_byok":false,"prompt_tokens_details":{"cached_tokens":0,"cache_write_tokens":0,"audio_tokens":0,"video_tokens":0},"cost_details":{"upstream_inference_cost":0.0000893,"upstream_inference_prompt_cost":0.0000218,"upstream_inference_completions_cost":0.0000675},"completion_tokens_details":{"reasoning_tokens":0,"image_tokens":0,"audio_tokens":0}}}
 46
 47      data: [DONE]
 48
 49    headers:
 50      Content-Type:
 51      - text/event-stream
 52    status: 200 OK
 53    code: 200
 54    duration: 637.342791ms
 55- id: 1
 56  request:
 57    proto: HTTP/1.1
 58    proto_major: 1
 59    proto_minor: 1
 60    content_length: 1322
 61    host: ""
 62    body: '{"messages":[{"content":"You are a helpful assistant. Always use both add and multiply at the same time.","role":"system"},{"content":"Add and multiply the number 2 and 3","role":"user"},{"tool_calls":[{"id":"call_8I6muAnyFaBjKyotk1gPRTwU","function":{"arguments":"{\"a\":2,\"b\":3}","name":"add"},"type":"function"},{"id":"call_pKAAv6bKX2qLYJ85RW4Hxqfp","function":{"arguments":"{\"a\":2,\"b\":3}","name":"multiply"},"type":"function"}],"role":"assistant"},{"content":"5","tool_call_id":"call_8I6muAnyFaBjKyotk1gPRTwU","role":"tool"},{"content":"6","tool_call_id":"call_pKAAv6bKX2qLYJ85RW4Hxqfp","role":"tool"}],"model":"openai/gpt-5.4-nano","max_completion_tokens":4000,"stream_options":{"include_usage":true},"tool_choice":"auto","tools":[{"function":{"name":"add","strict":false,"description":"Add two numbers","parameters":{"properties":{"a":{"description":"first number","type":"integer"},"b":{"description":"second number","type":"integer"}},"required":["a","b"],"type":"object"}},"type":"function"},{"function":{"name":"multiply","strict":false,"description":"Multiply two numbers","parameters":{"properties":{"a":{"description":"first number","type":"integer"},"b":{"description":"second number","type":"integer"}},"required":["a","b"],"type":"object"}},"type":"function"}],"usage":{"include":true},"stream":true}'
 63    headers:
 64      Accept:
 65      - application/json
 66      Content-Type:
 67      - application/json
 68      User-Agent:
 69      - Charm-Fantasy/0.21.0 (https://charm.land/fantasy)
 70    url: https://openrouter.ai/api/v1/chat/completions
 71    method: POST
 72  response:
 73    proto: HTTP/2.0
 74    proto_major: 2
 75    proto_minor: 0
 76    content_length: -1
 77    body: |+
 78      : OPENROUTER PROCESSING
 79
 80      data: {"id":"gen-1777319819-JeJtDeCKjjHTt8hFk9TD","object":"chat.completion.chunk","created":1777319819,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","choices":[{"index":0,"delta":{"content":"-","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
 81
 82      data: {"id":"gen-1777319819-JeJtDeCKjjHTt8hFk9TD","object":"chat.completion.chunk","created":1777319819,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","choices":[{"index":0,"delta":{"content":" Addition","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
 83
 84      data: {"id":"gen-1777319819-JeJtDeCKjjHTt8hFk9TD","object":"chat.completion.chunk","created":1777319819,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","choices":[{"index":0,"delta":{"content":":","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
 85
 86      data: {"id":"gen-1777319819-JeJtDeCKjjHTt8hFk9TD","object":"chat.completion.chunk","created":1777319819,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","choices":[{"index":0,"delta":{"content":" \\(","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
 87
 88      data: {"id":"gen-1777319819-JeJtDeCKjjHTt8hFk9TD","object":"chat.completion.chunk","created":1777319819,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","choices":[{"index":0,"delta":{"content":"2","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
 89
 90      data: {"id":"gen-1777319819-JeJtDeCKjjHTt8hFk9TD","object":"chat.completion.chunk","created":1777319819,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","choices":[{"index":0,"delta":{"content":" +","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
 91
 92      data: {"id":"gen-1777319819-JeJtDeCKjjHTt8hFk9TD","object":"chat.completion.chunk","created":1777319819,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","choices":[{"index":0,"delta":{"content":" ","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
 93
 94      data: {"id":"gen-1777319819-JeJtDeCKjjHTt8hFk9TD","object":"chat.completion.chunk","created":1777319819,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","choices":[{"index":0,"delta":{"content":"3","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
 95
 96      data: {"id":"gen-1777319819-JeJtDeCKjjHTt8hFk9TD","object":"chat.completion.chunk","created":1777319819,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","choices":[{"index":0,"delta":{"content":" =","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
 97
 98      data: {"id":"gen-1777319819-JeJtDeCKjjHTt8hFk9TD","object":"chat.completion.chunk","created":1777319819,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","choices":[{"index":0,"delta":{"content":" ","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
 99
100      data: {"id":"gen-1777319819-JeJtDeCKjjHTt8hFk9TD","object":"chat.completion.chunk","created":1777319819,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","choices":[{"index":0,"delta":{"content":"5","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
101
102      data: {"id":"gen-1777319819-JeJtDeCKjjHTt8hFk9TD","object":"chat.completion.chunk","created":1777319819,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","choices":[{"index":0,"delta":{"content":"\\","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
103
104      data: {"id":"gen-1777319819-JeJtDeCKjjHTt8hFk9TD","object":"chat.completion.chunk","created":1777319819,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","choices":[{"index":0,"delta":{"content":")","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
105
106      data: {"id":"gen-1777319819-JeJtDeCKjjHTt8hFk9TD","object":"chat.completion.chunk","created":1777319819,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","choices":[{"index":0,"delta":{"content":"  \n","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
107
108      data: {"id":"gen-1777319819-JeJtDeCKjjHTt8hFk9TD","object":"chat.completion.chunk","created":1777319819,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","choices":[{"index":0,"delta":{"content":"-","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
109
110      data: {"id":"gen-1777319819-JeJtDeCKjjHTt8hFk9TD","object":"chat.completion.chunk","created":1777319819,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","choices":[{"index":0,"delta":{"content":" Multip","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
111
112      data: {"id":"gen-1777319819-JeJtDeCKjjHTt8hFk9TD","object":"chat.completion.chunk","created":1777319819,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","choices":[{"index":0,"delta":{"content":"lication","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
113
114      data: {"id":"gen-1777319819-JeJtDeCKjjHTt8hFk9TD","object":"chat.completion.chunk","created":1777319819,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","choices":[{"index":0,"delta":{"content":":","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
115
116      data: {"id":"gen-1777319819-JeJtDeCKjjHTt8hFk9TD","object":"chat.completion.chunk","created":1777319819,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","choices":[{"index":0,"delta":{"content":" \\(","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
117
118      data: {"id":"gen-1777319819-JeJtDeCKjjHTt8hFk9TD","object":"chat.completion.chunk","created":1777319819,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","choices":[{"index":0,"delta":{"content":"2","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
119
120      data: {"id":"gen-1777319819-JeJtDeCKjjHTt8hFk9TD","object":"chat.completion.chunk","created":1777319819,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","choices":[{"index":0,"delta":{"content":" \\","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
121
122      data: {"id":"gen-1777319819-JeJtDeCKjjHTt8hFk9TD","object":"chat.completion.chunk","created":1777319819,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","choices":[{"index":0,"delta":{"content":"times","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
123
124      data: {"id":"gen-1777319819-JeJtDeCKjjHTt8hFk9TD","object":"chat.completion.chunk","created":1777319819,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","choices":[{"index":0,"delta":{"content":" ","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
125
126      data: {"id":"gen-1777319819-JeJtDeCKjjHTt8hFk9TD","object":"chat.completion.chunk","created":1777319819,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","choices":[{"index":0,"delta":{"content":"3","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
127
128      data: {"id":"gen-1777319819-JeJtDeCKjjHTt8hFk9TD","object":"chat.completion.chunk","created":1777319819,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","choices":[{"index":0,"delta":{"content":" =","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
129
130      data: {"id":"gen-1777319819-JeJtDeCKjjHTt8hFk9TD","object":"chat.completion.chunk","created":1777319819,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","choices":[{"index":0,"delta":{"content":" ","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
131
132      data: {"id":"gen-1777319819-JeJtDeCKjjHTt8hFk9TD","object":"chat.completion.chunk","created":1777319819,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","choices":[{"index":0,"delta":{"content":"6","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
133
134      data: {"id":"gen-1777319819-JeJtDeCKjjHTt8hFk9TD","object":"chat.completion.chunk","created":1777319819,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","choices":[{"index":0,"delta":{"content":"\\","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
135
136      data: {"id":"gen-1777319819-JeJtDeCKjjHTt8hFk9TD","object":"chat.completion.chunk","created":1777319819,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","choices":[{"index":0,"delta":{"content":")","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
137
138      : OPENROUTER PROCESSING
139
140      : OPENROUTER PROCESSING
141
142      data: {"id":"gen-1777319819-JeJtDeCKjjHTt8hFk9TD","object":"chat.completion.chunk","created":1777319819,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","service_tier":"default","choices":[{"index":0,"delta":{"content":"","role":"assistant"},"finish_reason":"stop","native_finish_reason":"completed"}]}
143
144      data: {"id":"gen-1777319819-JeJtDeCKjjHTt8hFk9TD","object":"chat.completion.chunk","created":1777319819,"model":"openai/gpt-5.4-nano-20260317","provider":"OpenAI","service_tier":"default","choices":[{"index":0,"delta":{"content":"","role":"assistant"},"finish_reason":"stop","native_finish_reason":"completed"}],"usage":{"prompt_tokens":183,"completion_tokens":33,"total_tokens":216,"cost":0.00007785,"is_byok":false,"prompt_tokens_details":{"cached_tokens":0,"cache_write_tokens":0,"audio_tokens":0,"video_tokens":0},"cost_details":{"upstream_inference_cost":0.00007785,"upstream_inference_prompt_cost":0.0000366,"upstream_inference_completions_cost":0.00004125},"completion_tokens_details":{"reasoning_tokens":0,"image_tokens":0,"audio_tokens":0}}}
145
146      data: [DONE]
147
148    headers:
149      Content-Type:
150      - text/event-stream
151    status: 200 OK
152    code: 200
153    duration: 579.374708ms