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: 466
10 host: ""
11 body: '{"messages":[{"content":"You are a helpful assistant","role":"system"},{"content":"What''s the weather in Florence, Italy?","role":"user"}],"model":"openai/gpt-5","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"}],"reasoning":{"enabled":true}}'
12 headers:
13 Accept:
14 - application/json
15 Content-Type:
16 - application/json
17 User-Agent:
18 - Charm-Fantasy/0.12.2 (https://charm.land/fantasy)
19 url: https://ai-gateway.vercel.sh/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 uncompressed: true
27 body: '{"id":"gen_01KKHTTA1DCN018DY9V8QKWPKR","object":"chat.completion","created":1773346311,"model":"openai/gpt-5","choices":[{"index":0,"message":{"role":"assistant","content":null,"reasoning":"**Deciding on the weather tool**\n\nI need to figure out whether to call the weather tool for the user’s request about Florence, Italy. Since they’ve asked for weather info, it makes sense to use the functions.weather tool targeting that location. Since there''s only one tool involved, I think I should call functions.weather directly. Using multi_tool_use.parallel seems unnecessary here because we only need this one tool. So, I''ll proceed with calling functions.weather for Florence, Italy.","reasoning_details":[{"type":"reasoning.summary","summary":"**Deciding on the weather tool**\n\nI need to figure out whether to call the weather tool for the user’s request about Florence, Italy. Since they’ve asked for weather info, it makes sense to use the functions.weather tool targeting that location. Since there''s only one tool involved, I think I should call functions.weather directly. Using multi_tool_use.parallel seems unnecessary here because we only need this one tool. So, I''ll proceed with calling functions.weather for Florence, Italy.","id":"rs_00d2f6810bafb8e40169b31dfe9384819092696410f3668856","format":"openai-responses-v1","index":0},{"type":"reasoning.encrypted","data":"gAAAAABpsx4H2XPLIGMjLXTKKE3tMMj5N_K6bCl-bKPuPQIa1yJCBxhXG_ttUlpbM74yKj9nnhAVciny2to3wHBSfjbj3fn20yJavilIW_sFeARllHgBl9dVWaQ8pmGsHBpryThxIrl-iXrYGka2JA21nhNVN1m_UE3yz1qdfLAAGKyKBHVmo0UlBCwPG6bA_PisxWdRebjJrEB1oEzl7WhWMN2T6SjEKykKF4z8bSiOpx8rxgI4vn0SinBw556RaNU9cgKtUR4CC2u4E7700zVSicSKSoqB7FlWCgKFvjO_vGJ5uWsVqm50VGQK9h2R4DS2ZOddfsWjJfqo32h9Pz6VBmru2DKil7DSVhgP--1p9b9gzjeGYPrgqBpxt-XO9i7loUhrwgo3k42fjJ8itaoFqLkloX882-HbxZwgsVgcyM95WWwBrUlPuR3MpVVZ7sqGo5K9MSX1PUiBQt7qdfxLnLJSmOpgJUW65XU2RCOR9wGQ3ZqIsQ0-gmvLk5QrlrCegrF1DGgSCND3DSiyEwkmBP21FJEk6Yzr2JB4vSPp9WUW6XbHi3tyJbXQZlwfg64JDT378xowgAkBDF6utYhMQbOswQ1FJa0RTSM9iI3jmBeZs9ka5PdHtlieWZfGMZ5OoCVj48J_mrv9cfEJi1rHmKiFNP90tdeW0JJ-fcBaET-mWFEJtRy7yg1twEfE__3CUhYqGDPUI7IB_8o2-oZ3l6SfaRHuXsVkLq3t2K8qFgdj-njeEH5_pIC8Hi1oipNkaTngSDFNmskkD7L1Tz8v36vDV-p686KL7qFrHaBtMDc62hx2WM1tgrxngTwPbfeH2BYCw7r1fvCIpxxLpt1aS3u3fGPDRed9QP7DlS7bCbjexMR0RIR_Npegt-bRps1btWfvpuAVcEPRAv6IHW3ahaNKHtJ-mUddZxISngosiyI27xdf8PtQSLSjIoW-w6cn2lAPXauS-FCVgHIGci76p0vZm9oW1TZ9J1S4Cyj9E8rwRiThrp60L4Ey1KbervfOEPhRJMFNIifJgp3sGBKWXKatIcqC5-aHMjWsn5AzBV440zHDAbEqaJ_VzgOEQ72rNUyXIw3Wm3kRqS9dheG9dCMAdQmHchzr4sQw7N66u-vAgqd6nBMAwtdxni4E4LMhl_ndfVV7FV-bBg1W0iRN3CPlL9ksCxqgmPPCI5v40PJvypF_VMxR8GP4qBTziMtqIF505z7NaAiYAXQul_djMUkn6UkQQMkzj6Dboe7Yk3ymZbWkRyoVwWciU6F2WsaT6qX5V4Ao5aQdg2V3_zjIIlpWWuSA7o7JXX8GvUzj6jGfx4PCPNbIco5l0Jv8IaBQlF0t6P4IdpgT55ESMUdx0U_oR0i1urKsmTmydoCWKJKVvTetSLigniRRS2BfZN3NCRRwBT9N518UuqgjikdQ4fNewfgru9V5zdGnddRxaFUDYlkmok-lwA6LUhZsheFOBrnXra38gDfyqUn-QOIaUAw5R-3HakXIR13-jl99hTCuvxIlYtbJkPauZtfJxuZiG-VcAIKyQStO_UArWTsFv_lj4W1lTw==","id":"rs_00d2f6810bafb8e40169b31dfe9384819092696410f3668856","format":"openai-responses-v1","index":0}],"tool_calls":[{"id":"call_SmeBZtwDeWEKUJC6ead03JoS","type":"function","function":{"name":"weather","arguments":"{\"location\":\"Florence, Italy\"}"}}],"provider_metadata":{"openai":{"responseId":"resp_00d2f6810bafb8e40169b31dfe12208190b20f1737de071c6a","serviceTier":"default"},"gateway":{"routing":{"originalModelId":"openai/gpt-5","resolvedProvider":"openai","resolvedProviderApiModelId":"gpt-5-2025-08-07","internalResolvedModelId":"openai:gpt-5-2025-08-07","fallbacksAvailable":["azure"],"internalReasoning":"Selected openai as preferred provider for gpt-5. 1 fallback(s) available: azure","planningReasoning":"System credentials planned for: openai, azure. Total execution order: openai(system) → azure(system)","canonicalSlug":"openai/gpt-5","finalProvider":"openai","attempts":[{"provider":"openai","internalModelId":"openai:gpt-5-2025-08-07","providerApiModelId":"gpt-5-2025-08-07","credentialType":"system","success":true,"startTime":373697.894945,"endTime":382770.366758,"statusCode":200,"providerResponseId":"resp_00d2f6810bafb8e40169b31dfe12208190b20f1737de071c6a"}],"modelAttemptCount":1,"modelAttempts":[{"modelId":"openai:gpt-5-2025-08-07","canonicalSlug":"openai/gpt-5","success":true,"providerAttemptCount":1,"providerAttempts":[{"provider":"openai","internalModelId":"openai:gpt-5-2025-08-07","providerApiModelId":"gpt-5-2025-08-07","credentialType":"system","success":true,"startTime":373697.894945,"endTime":382770.366758,"statusCode":200,"providerResponseId":"resp_00d2f6810bafb8e40169b31dfe12208190b20f1737de071c6a"}]}],"totalProviderAttemptCount":1},"cost":"0.00205875","marketCost":"0.00205875","generationId":"gen_01KKHTTA1DCN018DY9V8QKWPKR","billableWebSearchCalls":0}}},"logprobs":null,"finish_reason":"tool_calls"}],"usage":{"prompt_tokens":63,"completion_tokens":134,"total_tokens":197,"cost":0.00205875,"is_byok":false,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0,"video_tokens":0},"cost_details":{"upstream_inference_cost":null,"upstream_inference_prompt_cost":0,"upstream_inference_completions_cost":0},"completion_tokens_details":{"reasoning_tokens":64,"image_tokens":0},"cache_creation_input_tokens":0,"market_cost":0.00205875},"system_fingerprint":"fp_9oouf2om06","service_tier":"default","generationId":"gen_01KKHTTA1DCN018DY9V8QKWPKR"}'
28 headers:
29 Content-Type:
30 - application/json
31 status: 200 OK
32 code: 200
33 duration: 9.264108209s
34- id: 1
35 request:
36 proto: HTTP/1.1
37 proto_major: 1
38 proto_minor: 1
39 content_length: 3035
40 host: ""
41 body: '{"messages":[{"content":"You are a helpful assistant","role":"system"},{"content":"What''s the weather in Florence, Italy?","role":"user"},{"tool_calls":[{"id":"call_SmeBZtwDeWEKUJC6ead03JoS","function":{"arguments":"{\"location\":\"Florence, Italy\"}","name":"weather"},"type":"function"}],"role":"assistant","reasoning_details":[{"format":"openai-responses-v1","index":0,"summary":"**Deciding on the weather tool**\n\nI need to figure out whether to call the weather tool for the user’s request about Florence, Italy. Since they’ve asked for weather info, it makes sense to use the functions.weather tool targeting that location. Since there''s only one tool involved, I think I should call functions.weather directly. Using multi_tool_use.parallel seems unnecessary here because we only need this one tool. So, I''ll proceed with calling functions.weather for Florence, Italy.","type":"reasoning.summary"},{"data":"gAAAAABpsx4H2XPLIGMjLXTKKE3tMMj5N_K6bCl-bKPuPQIa1yJCBxhXG_ttUlpbM74yKj9nnhAVciny2to3wHBSfjbj3fn20yJavilIW_sFeARllHgBl9dVWaQ8pmGsHBpryThxIrl-iXrYGka2JA21nhNVN1m_UE3yz1qdfLAAGKyKBHVmo0UlBCwPG6bA_PisxWdRebjJrEB1oEzl7WhWMN2T6SjEKykKF4z8bSiOpx8rxgI4vn0SinBw556RaNU9cgKtUR4CC2u4E7700zVSicSKSoqB7FlWCgKFvjO_vGJ5uWsVqm50VGQK9h2R4DS2ZOddfsWjJfqo32h9Pz6VBmru2DKil7DSVhgP--1p9b9gzjeGYPrgqBpxt-XO9i7loUhrwgo3k42fjJ8itaoFqLkloX882-HbxZwgsVgcyM95WWwBrUlPuR3MpVVZ7sqGo5K9MSX1PUiBQt7qdfxLnLJSmOpgJUW65XU2RCOR9wGQ3ZqIsQ0-gmvLk5QrlrCegrF1DGgSCND3DSiyEwkmBP21FJEk6Yzr2JB4vSPp9WUW6XbHi3tyJbXQZlwfg64JDT378xowgAkBDF6utYhMQbOswQ1FJa0RTSM9iI3jmBeZs9ka5PdHtlieWZfGMZ5OoCVj48J_mrv9cfEJi1rHmKiFNP90tdeW0JJ-fcBaET-mWFEJtRy7yg1twEfE__3CUhYqGDPUI7IB_8o2-oZ3l6SfaRHuXsVkLq3t2K8qFgdj-njeEH5_pIC8Hi1oipNkaTngSDFNmskkD7L1Tz8v36vDV-p686KL7qFrHaBtMDc62hx2WM1tgrxngTwPbfeH2BYCw7r1fvCIpxxLpt1aS3u3fGPDRed9QP7DlS7bCbjexMR0RIR_Npegt-bRps1btWfvpuAVcEPRAv6IHW3ahaNKHtJ-mUddZxISngosiyI27xdf8PtQSLSjIoW-w6cn2lAPXauS-FCVgHIGci76p0vZm9oW1TZ9J1S4Cyj9E8rwRiThrp60L4Ey1KbervfOEPhRJMFNIifJgp3sGBKWXKatIcqC5-aHMjWsn5AzBV440zHDAbEqaJ_VzgOEQ72rNUyXIw3Wm3kRqS9dheG9dCMAdQmHchzr4sQw7N66u-vAgqd6nBMAwtdxni4E4LMhl_ndfVV7FV-bBg1W0iRN3CPlL9ksCxqgmPPCI5v40PJvypF_VMxR8GP4qBTziMtqIF505z7NaAiYAXQul_djMUkn6UkQQMkzj6Dboe7Yk3ymZbWkRyoVwWciU6F2WsaT6qX5V4Ao5aQdg2V3_zjIIlpWWuSA7o7JXX8GvUzj6jGfx4PCPNbIco5l0Jv8IaBQlF0t6P4IdpgT55ESMUdx0U_oR0i1urKsmTmydoCWKJKVvTetSLigniRRS2BfZN3NCRRwBT9N518UuqgjikdQ4fNewfgru9V5zdGnddRxaFUDYlkmok-lwA6LUhZsheFOBrnXra38gDfyqUn-QOIaUAw5R-3HakXIR13-jl99hTCuvxIlYtbJkPauZtfJxuZiG-VcAIKyQStO_UArWTsFv_lj4W1lTw==","format":"openai-responses-v1","id":"rs_00d2f6810bafb8e40169b31dfe9384819092696410f3668856","index":0,"type":"reasoning.encrypted"}]},{"content":"40 C","tool_call_id":"call_SmeBZtwDeWEKUJC6ead03JoS","role":"tool"}],"model":"openai/gpt-5","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"}],"reasoning":{"enabled":true}}'
42 headers:
43 Accept:
44 - application/json
45 Content-Type:
46 - application/json
47 User-Agent:
48 - Charm-Fantasy/0.12.2 (https://charm.land/fantasy)
49 url: https://ai-gateway.vercel.sh/v1/chat/completions
50 method: POST
51 response:
52 proto: HTTP/2.0
53 proto_major: 2
54 proto_minor: 0
55 content_length: -1
56 uncompressed: true
57 body: '{"id":"gen_01KKHTTK2W8P9CZKMV03VRJETZ","object":"chat.completion","created":1773346320,"model":"openai/gpt-5","choices":[{"index":0,"message":{"role":"assistant","content":"It’s currently about 40°C (104°F) in Florence, Italy. Want the forecast or details like humidity and wind?","reasoning":"**Presenting weather information**\n\nThe tool returned a terse output of 40°C, which is very hot. I want to phrase it as: \"The current temperature in Florence, Italy, is 40°C.\" It might be helpful to warn the user about staying hydrated or mention that it’s likely sunny. I''ll report the temperature and highlight its extremity without inventing details. Including the Fahrenheit conversion could be useful, stating: \"40°C is about 104°F.\" So, my final response will be: \"Current temperature in Florence, Italy, is about 40°C (104°F).\"**Clarifying user needs**\n\nI want to check if the user wants more details like a forecast or information on humidity and wind. Keeping it simple is key, so I plan to avoid heavy formatting and be concise in my response. I think asking them if they need additional details will help ensure I''m providing the information they''re looking for without overwhelming them. Let''s finalize this and make sure it’s straightforward and user-friendly!","reasoning_details":[{"type":"reasoning.summary","summary":"**Presenting weather information**\n\nThe tool returned a terse output of 40°C, which is very hot. I want to phrase it as: \"The current temperature in Florence, Italy, is 40°C.\" It might be helpful to warn the user about staying hydrated or mention that it’s likely sunny. I''ll report the temperature and highlight its extremity without inventing details. Including the Fahrenheit conversion could be useful, stating: \"40°C is about 104°F.\" So, my final response will be: \"Current temperature in Florence, Italy, is about 40°C (104°F).\"**Clarifying user needs**\n\nI want to check if the user wants more details like a forecast or information on humidity and wind. Keeping it simple is key, so I plan to avoid heavy formatting and be concise in my response. I think asking them if they need additional details will help ensure I''m providing the information they''re looking for without overwhelming them. Let''s finalize this and make sure it’s straightforward and user-friendly!","id":"rs_00d2f6810bafb8e40169b31e07d96881908f86723c28e3ade8","format":"openai-responses-v1","index":0},{"type":"reasoning.encrypted","data":"gAAAAABpsx4QjPXFs7MBZyi4wDhhkb4F_sS54UJUyocsvBfRCnLCaVJ66WzB0x-t60C_oXSlGCYZHUP0bs2jJtAGG6n6vRv4m_HZS1gIFDiMfPuWlg_C4sxA9sK4JmOA00bU7ZQkwniQ9ngeYUai-M_IP7vHT-02MvM45F5rlrkugPMJtyXgH_9qhlI_yHVWvEhviNrS9Fc39WJT1qquGgQCt6hTPiimO9IQ-XYf8UYGXeu2-CdYl3Lq4r-gxOopJbOImJAjzVBbS2Wx0z88rZP28X0f_hyfIcx6GOTtnsyTrloxD9Jsx3mdyWCrpZ3wyOfYELiDE1Bbm0umG2hDaNq83oRYoJOtQ_VanSharqc-pjblXdnaQs6jnINnH3hkJCrEVcQsTFnThY3tS2DU1wPFq92WIzTey4A1kMa3_ZmEJGFtkBaAgoNL2ls8d-Nc18C8spSYTS-Cu3joOWVkRsEj5ODLxGWUqNLh0HH-cjj9EEAYLuUScI6J5S_bCuWrUl-7uDnIY9HT_h-IUlp5Cfh58-vHMOSYwTXPMgUUN2BNL9v5Ral1tykgqaHzUXToKYnC9unQb6wwVO1WleHDBaroC_0JzTN4cT_KN8vbVVEAYkN92ghGkrsdZOw_fkvX7SZE0fHcWpndG5gRQUCClsVuYQLgp_IWmbovDifxRyQb3AOe5gupgcU5xSlD8btZTWolfn8IGXiSNC30W2gYcHBttCOGEhIG1l1hc-UTavNVUuNwGLxpkonZZ7E3luxJ4CHMgxaiZccdzcJvixNxmFs8mq2KSAdrm89uIA6W1zfg5yEUbT6HVfliLm67HkXWmRMQVsftdmpZnTmxg6q2KUQEwXKqLZAauorHyNiehEA8sCzxR03g3uKS9owBrHU-lCNNClY4szsIjTOGI7UO9WCxrYJV0Ec6m_gg_0sUwpTJukReY3euz-684jvBhVg1FTwb2wu1DanVLEyB7bzWcaCc8p-zkebPxCww3Dqf_NFdqRXIOmoKl8oFL9t4EuqnB9wLp01QhcJ7aiKc2RGXLhh4MO8_9sNdgGVHyjkP3zOQ8b8ASm0Zun3CMzzl_F6EHPC7-Dkk6GVJQOTrM5EzjANV0hd0ZFmsDKw4eWNzFln3CRZ1WgZFbqJcRmMwJh3SFGUZtbNjX2s9s1msPf4FgUCdAJWqpfuyeC6KbfWj88voj3w0ezImLKN6ZxlRI3YRiLMTE4osHkROoYBaKok0qlJSe7Cn2VaRtVT2HWNRt0H6I_-lTT5G3xInpRWGSzJq89k9zhTAKuq2ZgCkUKrEEZEMH2HXjp559h1YbP7PZOxAEXoAylb16tgfSYozHtWfHjabpv4CeN_JKoVGifoyGrJxPmC4ORsiqaVDmjxyVmA-B6cVoBPLi8cXRSpIfm4_lAc0C3gE-AH5FuCoj-Inj1kd2lYNyagfx3y7-_--gMsyS9V1lajY1UU96J_cXOIlNlQVHTQ4MpAICQKHMljsQuBzNy_tsjGWTqm3WB9YObO6rTE8SH5jDtxWfRN148oKTMfXPvAJBl1GwjusjkpluqZD0cw3FzDj3p6ALhlFp6MpkRk4EMWZ6LrVOmvp1mbfiX4R2_OWtArrsu4kIznTD3Cd1qw72jxhHszAEeGjCUvorhg4-EujPAvuVUE00G_6GX80nSxei2zABX4yf926P-lrYcD_vi8LwfBDuH_40vNe7yXSyX6cCxbPR6MCJErvE-RzR_XZO5kjKhMYFMh4P_-4x7WZTlGS-ysB2_o_B_FR5AUSG-3MLyVIqfQk5iOxAYVHsQi1z66xjuUacIAA9QLtFK9qs9jBkwzF7gf6QJmO4llo7Y9MIukCjcjXTsK20GcOQkz9eIUddxDYc4iPy3-mtUUy-GfzVpWPUFgzPKrMzOM39YfGT5kn2SMwvN_O3QUUk5C2XrQZNC0BDowN4vNo97x1m5CHf2gRIZKz1Od4bHCYzXO0fMl3a-0Y4yoLxSMxmSG2QdsapnWZMr5A-LC14VIKYgEydtOSSQPcN7KMitmAXXi3NkM8mnKw3htH7hSJ2Jq5gywadfKGt1dMYDBsWZF0ZSbF7P3Otz3oYS5YtHu3RanSjAjtAKRjuNTueUfxB4jhA69tiXlKOrrQcyxm_7CfMhRPJEeuZ3T93s2fXaTT4huvxyfvitc9zvyIk6n_gazYoodc7gDlr94VrbD1H5Bi4a84PtKTmsXWrk1IaBYG_fFfGtb1xaHavXt6xtlGwYX1PoAP","id":"rs_00d2f6810bafb8e40169b31e07d96881908f86723c28e3ade8","format":"openai-responses-v1","index":0}],"provider_metadata":{"openai":{"responseId":"resp_00d2f6810bafb8e40169b31e0754448190a8f85e1dd376a88f","serviceTier":"default"},"gateway":{"routing":{"originalModelId":"openai/gpt-5","resolvedProvider":"openai","resolvedProviderApiModelId":"gpt-5-2025-08-07","internalResolvedModelId":"openai:gpt-5-2025-08-07","fallbacksAvailable":["azure"],"internalReasoning":"Selected openai as preferred provider for gpt-5. 1 fallback(s) available: azure","planningReasoning":"System credentials planned for: openai, azure. Total execution order: openai(system) → azure(system)","canonicalSlug":"openai/gpt-5","finalProvider":"openai","attempts":[{"provider":"openai","internalModelId":"openai:gpt-5-2025-08-07","providerApiModelId":"gpt-5-2025-08-07","credentialType":"system","success":true,"startTime":1327619.961347,"endTime":1337223.544461,"statusCode":200,"providerResponseId":"resp_00d2f6810bafb8e40169b31e0754448190a8f85e1dd376a88f"}],"modelAttemptCount":1,"modelAttempts":[{"modelId":"openai:gpt-5-2025-08-07","canonicalSlug":"openai/gpt-5","success":true,"providerAttemptCount":1,"providerAttempts":[{"provider":"openai","internalModelId":"openai:gpt-5-2025-08-07","providerApiModelId":"gpt-5-2025-08-07","credentialType":"system","success":true,"startTime":1327619.961347,"endTime":1337223.544461,"statusCode":200,"providerResponseId":"resp_00d2f6810bafb8e40169b31e0754448190a8f85e1dd376a88f"}]}],"totalProviderAttemptCount":1},"cost":"0.0047375","marketCost":"0.0047375","generationId":"gen_01KKHTTK2W8P9CZKMV03VRJETZ","billableWebSearchCalls":0}}},"logprobs":null,"finish_reason":"stop"}],"usage":{"prompt_tokens":206,"completion_tokens":256,"total_tokens":462,"cost":0.0047375,"is_byok":false,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0,"video_tokens":0},"cost_details":{"upstream_inference_cost":null,"upstream_inference_prompt_cost":0,"upstream_inference_completions_cost":0},"completion_tokens_details":{"reasoning_tokens":192,"image_tokens":0},"cache_creation_input_tokens":0,"market_cost":0.0047375},"system_fingerprint":"fp_9rir8dou27","service_tier":"default","generationId":"gen_01KKHTTK2W8P9CZKMV03VRJETZ"}'
58 headers:
59 Content-Type:
60 - application/json
61 status: 200 OK
62 code: 200
63 duration: 9.769461541s