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: 548
10    host: ""
11    body: '{"messages":[{"content":"You are a helpful assistant","role":"system"},{"content":"What''s the weather in Florence,Italy?","role":"user"}],"model":"google/gemini-3-pro-preview","max_tokens":4000,"stream_options":{"include_usage":true},"tool_choice":"auto","tools":[{"function":{"name":"weather","strict":false,"description":"Get weather information for a location","parameters":{"properties":{"location":{"description":"the city","type":"string"}},"required":["location"],"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      - OpenAI/Go 2.7.1
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      data: {"id":"gen-1773323973-ijsbVGP7klYwXuHnZ7oB","object":"chat.completion.chunk","created":1773323973,"model":"google/gemini-3-pro-preview-20251117","provider":"Google","choices":[{"index":0,"delta":{"content":"","role":"assistant","reasoning":"**Analyzing the Request**\n\nI've homed in on the user's need: weather data for Florence, Italy. My primary action now is identifying a suitable function, which, based on its name, is `weather`. A key parameter, `location`, is also clear. I plan to use the `weather` function with \"Florence, Italy\" as the location.\n\n\n","reasoning_details":[{"type":"reasoning.text","text":"**Analyzing the Request**\n\nI've homed in on the user's need: weather data for Florence, Italy. My primary action now is identifying a suitable function, which, based on its name, is `weather`. A key parameter, `location`, is also clear. I plan to use the `weather` function with \"Florence, Italy\" as the location.\n\n\n","format":"google-gemini-v1","index":0}]},"finish_reason":null,"native_finish_reason":null}]}
28
29      data: {"id":"gen-1773323973-ijsbVGP7klYwXuHnZ7oB","object":"chat.completion.chunk","created":1773323973,"model":"google/gemini-3-pro-preview-20251117","provider":"Google","choices":[{"index":0,"delta":{"content":"","role":"assistant","reasoning":null,"reasoning_details":[{"type":"reasoning.encrypted","data":"CiQBjz1rXy/d6pcsxX2eeGAFJcWLwFKD8Fq7tzM4znpEy3uK6hkKcAGPPWtfdI2OUC5gBrFwuxgrbLbk84CqxKEqAPN0KZYOWFW3qoz1mSztFR+VVmJ4sdMXeAd0F5mAxvMcYzOGdgfmxAnygICxzhVEhnMiG2s+kCdESJ9gfqxZsDvVMS+HZq8hpfrjvwd7c/AYVxjdOYUKggEBjz1rXzlW5UTYY0QFoD2RsMgcdZ6TA3RCMoaED8q41ltANatdDbKN5OFS82APPTPbqvLl/3HrMh5zqIkZWzhLbDrR+jDznhGoWxgoobAk2HRV6cHyi35TMSvIziLWiGq2u9Etp1Uai2IVTDCmjiEsugdu156W4MXitiaGzPr8EhMpCooBAY89a1/mr6bY7W14FUhSese7Cw9/SlEuV2fcfx4xdINH6j7eP0PVqD295H01svPNvrIiFNY9/VA4/wR7StYvBt0GtTk3a7ScA+ZPydvE5E5QM0aUGvX6NGkAka1T55vwWFbnZKwy/vvxq9kZVUsWkIfvThQS1XIlZ5g9g/fOrQbo/Q0lqhka2MCc","format":"google-gemini-v1","id":"tool_weather_UjtAnUhPX2w8d0BXNCVK","index":0}]},"finish_reason":null,"native_finish_reason":null}]}
30
31      data: {"id":"gen-1773323973-ijsbVGP7klYwXuHnZ7oB","object":"chat.completion.chunk","created":1773323973,"model":"google/gemini-3-pro-preview-20251117","provider":"Google","choices":[{"index":0,"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":"tool_weather_UjtAnUhPX2w8d0BXNCVK","type":"function","function":{"name":"weather","arguments":""}}]},"finish_reason":null,"native_finish_reason":null}]}
32
33      data: {"id":"gen-1773323973-ijsbVGP7klYwXuHnZ7oB","object":"chat.completion.chunk","created":1773323973,"model":"google/gemini-3-pro-preview-20251117","provider":"Google","choices":[{"index":0,"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"function":{"arguments":"{\"location\":\"Florence, Italy\"}"}}]},"finish_reason":null,"native_finish_reason":null}]}
34
35      data: {"id":"gen-1773323973-ijsbVGP7klYwXuHnZ7oB","object":"chat.completion.chunk","created":1773323973,"model":"google/gemini-3-pro-preview-20251117","provider":"Google","choices":[{"index":0,"delta":{"content":"","role":"assistant","reasoning":null},"finish_reason":"tool_calls","native_finish_reason":"STOP"}]}
36
37      data: {"id":"gen-1773323973-ijsbVGP7klYwXuHnZ7oB","object":"chat.completion.chunk","created":1773323973,"model":"google/gemini-3-pro-preview-20251117","provider":"Google","choices":[],"usage":{"prompt_tokens":28,"completion_tokens":73,"total_tokens":101,"cost":0.000932,"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.000932,"upstream_inference_prompt_cost":0.000056,"upstream_inference_completions_cost":0.000876},"completion_tokens_details":{"reasoning_tokens":64,"image_tokens":0,"audio_tokens":0}}}
38
39      data: [DONE]
40
41    headers:
42      Content-Type:
43      - text/event-stream
44    status: 200 OK
45    code: 200
46    duration: 10.279697125s
47- id: 1
48  request:
49    proto: HTTP/1.1
50    proto_major: 1
51    proto_minor: 1
52    content_length: 1915
53    host: ""
54    body: '{"messages":[{"content":"You are a helpful assistant","role":"system"},{"content":"What''s the weather in Florence,Italy?","role":"user"},{"tool_calls":[{"id":"tool_weather_UjtAnUhPX2w8d0BXNCVK","function":{"arguments":"{\"location\":\"Florence, Italy\"}","name":"weather"},"type":"function"}],"role":"assistant","reasoning_details":[{"format":"google-gemini-v1","index":0,"text":"**Analyzing the Request**\n\nI''ve homed in on the user''s need: weather data for Florence, Italy. My primary action now is identifying a suitable function, which, based on its name, is `weather`. A key parameter, `location`, is also clear. I plan to use the `weather` function with \"Florence, Italy\" as the location.\n\n\n","type":"reasoning.text"},{"data":"CiQBjz1rXy/d6pcsxX2eeGAFJcWLwFKD8Fq7tzM4znpEy3uK6hkKcAGPPWtfdI2OUC5gBrFwuxgrbLbk84CqxKEqAPN0KZYOWFW3qoz1mSztFR+VVmJ4sdMXeAd0F5mAxvMcYzOGdgfmxAnygICxzhVEhnMiG2s+kCdESJ9gfqxZsDvVMS+HZq8hpfrjvwd7c/AYVxjdOYUKggEBjz1rXzlW5UTYY0QFoD2RsMgcdZ6TA3RCMoaED8q41ltANatdDbKN5OFS82APPTPbqvLl/3HrMh5zqIkZWzhLbDrR+jDznhGoWxgoobAk2HRV6cHyi35TMSvIziLWiGq2u9Etp1Uai2IVTDCmjiEsugdu156W4MXitiaGzPr8EhMpCooBAY89a1/mr6bY7W14FUhSese7Cw9/SlEuV2fcfx4xdINH6j7eP0PVqD295H01svPNvrIiFNY9/VA4/wR7StYvBt0GtTk3a7ScA+ZPydvE5E5QM0aUGvX6NGkAka1T55vwWFbnZKwy/vvxq9kZVUsWkIfvThQS1XIlZ5g9g/fOrQbo/Q0lqhka2MCc","format":"google-gemini-v1","id":"tool_weather_UjtAnUhPX2w8d0BXNCVK","index":0,"type":"reasoning.encrypted"}]},{"content":"40 C","tool_call_id":"tool_weather_UjtAnUhPX2w8d0BXNCVK","role":"tool"}],"model":"google/gemini-3-pro-preview","max_tokens":4000,"stream_options":{"include_usage":true},"tool_choice":"auto","tools":[{"function":{"name":"weather","strict":false,"description":"Get weather information for a location","parameters":{"properties":{"location":{"description":"the city","type":"string"}},"required":["location"],"type":"object"}},"type":"function"}],"usage":{"include":true},"stream":true}'
55    headers:
56      Accept:
57      - application/json
58      Content-Type:
59      - application/json
60      User-Agent:
61      - OpenAI/Go 2.7.1
62    url: https://openrouter.ai/api/v1/chat/completions
63    method: POST
64  response:
65    proto: HTTP/2.0
66    proto_major: 2
67    proto_minor: 0
68    content_length: -1
69    body: |+
70      data: {"id":"gen-1773323994-kEA21hVoQ2WnDw9kiW6h","object":"chat.completion.chunk","created":1773323994,"model":"google/gemini-3-pro-preview-20251117","provider":"Google","choices":[{"index":0,"delta":{"content":"The weather in Florence","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
71
72      data: {"id":"gen-1773323994-kEA21hVoQ2WnDw9kiW6h","object":"chat.completion.chunk","created":1773323994,"model":"google/gemini-3-pro-preview-20251117","provider":"Google","choices":[{"index":0,"delta":{"content":", Italy is currently 40°C.","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
73
74      data: {"id":"gen-1773323994-kEA21hVoQ2WnDw9kiW6h","object":"chat.completion.chunk","created":1773323994,"model":"google/gemini-3-pro-preview-20251117","provider":"Google","choices":[{"index":0,"delta":{"content":"","role":"assistant"},"finish_reason":"stop","native_finish_reason":"STOP"}]}
75
76      data: {"id":"gen-1773323994-kEA21hVoQ2WnDw9kiW6h","object":"chat.completion.chunk","created":1773323994,"model":"google/gemini-3-pro-preview-20251117","provider":"Google","choices":[],"usage":{"prompt_tokens":54,"completion_tokens":14,"total_tokens":68,"cost":0.000276,"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.000276,"upstream_inference_prompt_cost":0.000108,"upstream_inference_completions_cost":0.000168},"completion_tokens_details":{"reasoning_tokens":0,"image_tokens":0,"audio_tokens":0}}}
77
78      data: [DONE]
79
80    headers:
81      Content-Type:
82      - text/event-stream
83    status: 200 OK
84    code: 200
85    duration: 10.188124458s