From 00c2258898fe2bf26ee747b3d0355fd55edb848f Mon Sep 17 00:00:00 2001 From: lforst <8118419+lforst@users.noreply.github.com> Date: Thu, 17 Sep 2026 11:52:25 +0000 Subject: [PATCH 1/5] feat: Add AI SDK instrumentation for typesafe ai jev --- e2e/config/pr-comment-scenarios.json | 4 +- ...64c1ad41fd7d47fe63606d39e6da1e58f3a0bc.bin | 0 .../ai-sdk-v7-latest.cassette.json | 645 +++-- ...7e012522d5b7d515c6311656914ec416d3fce8.bin | 0 .../__cassettes__/ai-sdk-v7.cassette.json | 2243 +++++++++-------- .../ai-sdk-v7-auto-hook.span-tree.json | 368 ++- .../ai-sdk-v7-auto-hook.span-tree.txt | 352 ++- .../ai-sdk-v7-explicit.span-tree.json | 368 ++- .../ai-sdk-v7-explicit.span-tree.txt | 352 ++- .../ai-sdk-v7-latest-auto-hook.span-tree.json | 338 ++- .../ai-sdk-v7-latest-auto-hook.span-tree.txt | 322 ++- .../ai-sdk-v7-latest-explicit.span-tree.json | 338 ++- .../ai-sdk-v7-latest-explicit.span-tree.txt | 322 ++- .../ai-sdk-instrumentation/assertions.ts | 71 + .../ai-sdk-instrumentation/package.json | 6 +- .../ai-sdk-instrumentation/pnpm-lock.yaml | 63 +- .../scenario.ai-sdk-v7-explicit.mjs | 2 + .../scenario.ai-sdk-v7.mjs | 1 + .../scenario.ai-sdk-v7.ts | 4 +- .../ai-sdk-instrumentation/scenario.impl.mjs | 161 ++ .../ai-sdk-instrumentation/scenario.test.ts | 2 + .../auto-instrumentations/configs/ai-sdk.ts | 14 + .../plugins/ai-sdk-channels.ts | 10 + .../instrumentation/plugins/ai-sdk-plugin.ts | 100 + js/src/vendor-sdk-types/ai-sdk-common.ts | 25 + js/src/vendor-sdk-types/ai-sdk.ts | 6 + js/src/wrappers/ai-sdk-evaluate.test.ts | 244 ++ js/src/wrappers/ai-sdk/ai-sdk.ts | 16 + 28 files changed, 4726 insertions(+), 1651 deletions(-) rename e2e/scenarios/ai-sdk-instrumentation/__cassettes__/{ai-sdk-v7.cassette.blobs => ai-sdk-v7-latest.cassette.blobs}/9a14a7a518e93b520c904dd30764c1ad41fd7d47fe63606d39e6da1e58f3a0bc.bin (100%) rename e2e/scenarios/ai-sdk-instrumentation/__cassettes__/{ai-sdk-v7-latest.cassette.blobs => ai-sdk-v7.cassette.blobs}/92f733cbd438775e360279f4737e012522d5b7d515c6311656914ec416d3fce8.bin (100%) create mode 100644 js/src/wrappers/ai-sdk-evaluate.test.ts diff --git a/e2e/config/pr-comment-scenarios.json b/e2e/config/pr-comment-scenarios.json index 0540d6c3a..26b4ada1d 100644 --- a/e2e/config/pr-comment-scenarios.json +++ b/e2e/config/pr-comment-scenarios.json @@ -601,11 +601,11 @@ }, { "variantKey": "ai-sdk-v7", - "label": "v7 pinned" + "label": "v7 pinned (including evaluate)" }, { "variantKey": "ai-sdk-v7-latest", - "label": "v7 latest" + "label": "v7 latest (including evaluate)" } ] }, diff --git a/e2e/scenarios/ai-sdk-instrumentation/__cassettes__/ai-sdk-v7.cassette.blobs/9a14a7a518e93b520c904dd30764c1ad41fd7d47fe63606d39e6da1e58f3a0bc.bin b/e2e/scenarios/ai-sdk-instrumentation/__cassettes__/ai-sdk-v7-latest.cassette.blobs/9a14a7a518e93b520c904dd30764c1ad41fd7d47fe63606d39e6da1e58f3a0bc.bin similarity index 100% rename from e2e/scenarios/ai-sdk-instrumentation/__cassettes__/ai-sdk-v7.cassette.blobs/9a14a7a518e93b520c904dd30764c1ad41fd7d47fe63606d39e6da1e58f3a0bc.bin rename to e2e/scenarios/ai-sdk-instrumentation/__cassettes__/ai-sdk-v7-latest.cassette.blobs/9a14a7a518e93b520c904dd30764c1ad41fd7d47fe63606d39e6da1e58f3a0bc.bin diff --git a/e2e/scenarios/ai-sdk-instrumentation/__cassettes__/ai-sdk-v7-latest.cassette.json b/e2e/scenarios/ai-sdk-instrumentation/__cassettes__/ai-sdk-v7-latest.cassette.json index e8de5ae83..304a94807 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/__cassettes__/ai-sdk-v7-latest.cassette.json +++ b/e2e/scenarios/ai-sdk-instrumentation/__cassettes__/ai-sdk-v7-latest.cassette.json @@ -1,10 +1,153 @@ { "entries": [ + { + "callIndex": 0, + "id": "3bd9e1df6d2ae887", + "matchKey": "POST api.typesafe.ai/v1/systemone", + "recordedAt": "2026-09-17T10:42:07.445Z", + "request": { + "body": { + "kind": "json", + "value": { + "model": "jev-latest", + "questions": { + "category": { + "criteria": { + "billing": "Payments and refunds", + "technical": "Software problems" + }, + "instructions": "Which team should handle this request?", + "type": "choice" + }, + "duplicate": { + "instructions": "Does the customer report a duplicate charge?", + "type": "noul" + }, + "urgency": { + "criteria": ["Low", "Medium", "High"], + "instructions": "How urgent is this request?", + "type": "score" + } + }, + "state": { + "message": "I was charged twice for my subscription. Please refund the duplicate charge." + } + } + }, + "headers": {}, + "method": "POST", + "url": "https://api.typesafe.ai/v1/systemone" + }, + "response": { + "body": { + "kind": "json", + "value": { + "answers": { + "category": { + "choice": "billing", + "confidence": 1, + "probabilities": { + "billing": 1, + "technical": 0 + }, + "type": "choice" + }, + "duplicate": { + "noul": 0.99, + "type": "noul" + }, + "urgency": { + "confidence": 0.74, + "legend": { + "0": "Low", + "1": "Medium", + "2": "High" + }, + "probabilities": { + "0": 0.03, + "1": 0.82, + "2": 0.15 + }, + "score": 1.12, + "type": "score" + } + }, + "model": "jev-1.13.0", + "usage": { + "input_tokens": 382, + "output_tokens": 62 + } + } + }, + "headers": { + "content-length": "383", + "content-type": "application/json", + "date": "Thu, 17 Sep 2026 10:42:06 GMT", + "server": "istio-envoy", + "x-envoy-upstream-service-time": "58", + "x-typesafe-request-id": "req_01a0aef59d817d5d99ccd8b515e2b87f" + }, + "status": 200, + "statusText": "OK" + } + }, + { + "callIndex": 1, + "id": "477ce75c8278a6a0", + "matchKey": "POST api.typesafe.ai/v1/systemone", + "recordedAt": "2026-09-17T10:42:07.580Z", + "request": { + "body": { + "kind": "json", + "value": { + "model": "jev-latest", + "questions": { + "positive": { + "instructions": "Was the delivery successful?", + "type": "noul" + } + }, + "state": "The package arrived intact and on time." + } + }, + "headers": {}, + "method": "POST", + "url": "https://api.typesafe.ai/v1/systemone" + }, + "response": { + "body": { + "kind": "json", + "value": { + "answers": { + "positive": { + "noul": 0.97, + "type": "noul" + } + }, + "model": "jev-1.13.0", + "usage": { + "input_tokens": 279, + "output_tokens": 20 + } + } + }, + "headers": { + "content-length": "121", + "content-type": "application/json", + "date": "Thu, 17 Sep 2026 10:42:06 GMT", + "server": "istio-envoy", + "x-envoy-upstream-service-time": "61", + "x-typesafe-request-id": "req_01a0aef59e067af691296075c09726d7" + }, + "status": 200, + "statusText": "OK" + } + }, { "callIndex": 0, "id": "9aa262365558ebc2", "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-08-12T03:24:22.135Z", + "recordedAt": "2026-09-17T10:42:08.271Z", "request": { "body": { "kind": "json", @@ -37,11 +180,11 @@ "billing": { "payer": "developer" }, - "completed_at": 1786505061, - "created_at": 1786505061, + "completed_at": 1789641728, + "created_at": 1789641727, "error": null, "frequency_penalty": 0, - "id": "resp_0709f2747f8ef0ed006a7be7657ad4819cbc7091fc3df09960", + "id": "resp_00c533ba50419219006aabc3ffaa9087d2a3e139caec7e609d", "incomplete_details": null, "instructions": null, "max_output_tokens": 24, @@ -60,7 +203,7 @@ "type": "output_text" } ], - "id": "msg_0709f2747f8ef0ed006a7be765e890819caee04be7abb9b472", + "id": "msg_00c533ba50419219006aabc4000a3887d2a489fa170b4bff28", "role": "assistant", "status": "completed", "type": "message" @@ -129,13 +272,13 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a29c5dd9fb5155c5-IAD", + "cf-ray": "a3c7809d89b79adc-IAD", "connection": "keep-alive", "content-encoding": "gzip", "content-type": "application/json", - "date": "Wed, 12 Aug 2026 03:24:22 GMT", + "date": "Thu, 17 Sep 2026 10:42:08 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "581", + "openai-processing-ms": "580", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -149,7 +292,7 @@ "x-ratelimit-remaining-tokens": "149999962", "x-ratelimit-reset-requests": "2ms", "x-ratelimit-reset-tokens": "0s", - "x-request-id": "req_2983574f34804e86a2e78b79f46c3e99" + "x-request-id": "req_9b47047b57114af696c3c035fdcba572" }, "status": 200, "statusText": "OK" @@ -159,7 +302,7 @@ "callIndex": 1, "id": "9e077c56377ca81c", "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-08-12T03:24:22.713Z", + "recordedAt": "2026-09-17T10:42:09.054Z", "request": { "body": { "kind": "json", @@ -210,11 +353,11 @@ "billing": { "payer": "developer" }, - "completed_at": 1786505062, - "created_at": 1786505062, + "completed_at": 1789641728, + "created_at": 1789641728, "error": null, "frequency_penalty": 0, - "id": "resp_0e52fb4afdc09ad5006a7be7663474819c99d935cea2afc6ff", + "id": "resp_01e910f2e5e4882e006aabc4005b9c87d2b3a52acb19672ad3", "incomplete_details": null, "instructions": null, "max_output_tokens": 32, @@ -233,7 +376,7 @@ "type": "output_text" } ], - "id": "msg_0e52fb4afdc09ad5006a7be7668508819cb1a45c98a13a2873", + "id": "msg_01e910f2e5e4882e006aabc400dadc87d28fa99203896e4b04", "role": "assistant", "status": "completed", "type": "message" @@ -315,13 +458,13 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a29c5dde78d855c5-IAD", + "cf-ray": "a3c780a1eff39adc-IAD", "connection": "keep-alive", "content-encoding": "gzip", "content-type": "application/json", - "date": "Wed, 12 Aug 2026 03:24:22 GMT", + "date": "Thu, 17 Sep 2026 10:42:09 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "485", + "openai-processing-ms": "676", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -335,7 +478,7 @@ "x-ratelimit-remaining-tokens": "149999935", "x-ratelimit-reset-requests": "2ms", "x-ratelimit-reset-tokens": "0s", - "x-request-id": "req_a479f4aae8bc4aa995d9a94b54705af1" + "x-request-id": "req_6b7ccaed98a244c5a3907f866af5eeec" }, "status": 200, "statusText": "OK" @@ -345,7 +488,7 @@ "callIndex": 2, "id": "bdbf85bb8f9015c8", "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-08-12T03:24:23.359Z", + "recordedAt": "2026-09-17T10:42:09.696Z", "request": { "body": { "kind": "json", @@ -374,20 +517,20 @@ "response": { "body": { "chunks": [ - "event: response.created\ndata: {\"type\":\"response.created\",\"response\":{\"id\":\"resp_0b461e807f507f5a006a7be766c314819e971536b9d17a845a\",\"object\":\"response\",\"created_at\":1786505062,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":32,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":0}", - "event: response.in_progress\ndata: {\"type\":\"response.in_progress\",\"response\":{\"id\":\"resp_0b461e807f507f5a006a7be766c314819e971536b9d17a845a\",\"object\":\"response\",\"created_at\":1786505062,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":32,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":1}", - "event: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"msg_0b461e807f507f5a006a7be7672a94819ebf4c83669ccbd33b\",\"type\":\"message\",\"status\":\"in_progress\",\"content\":[],\"role\":\"assistant\"},\"output_index\":0,\"sequence_number\":2}", - "event: response.content_part.added\ndata: {\"type\":\"response.content_part.added\",\"content_index\":0,\"item_id\":\"msg_0b461e807f507f5a006a7be7672a94819ebf4c83669ccbd33b\",\"output_index\":0,\"part\":{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"\"},\"sequence_number\":3}", - "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"One\",\"item_id\":\"msg_0b461e807f507f5a006a7be7672a94819ebf4c83669ccbd33b\",\"logprobs\":[],\"obfuscation\":\"bR5ffufXFQwbj\",\"output_index\":0,\"sequence_number\":4}", - "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\",\",\"item_id\":\"msg_0b461e807f507f5a006a7be7672a94819ebf4c83669ccbd33b\",\"logprobs\":[],\"obfuscation\":\"woakZFJNGB30XQw\",\"output_index\":0,\"sequence_number\":5}", - "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\" two\",\"item_id\":\"msg_0b461e807f507f5a006a7be7672a94819ebf4c83669ccbd33b\",\"logprobs\":[],\"obfuscation\":\"WBTJazPXE7qj\",\"output_index\":0,\"sequence_number\":6}", - "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\",\",\"item_id\":\"msg_0b461e807f507f5a006a7be7672a94819ebf4c83669ccbd33b\",\"logprobs\":[],\"obfuscation\":\"Uh5jd8CUlpbpOFu\",\"output_index\":0,\"sequence_number\":7}", - "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\" three\",\"item_id\":\"msg_0b461e807f507f5a006a7be7672a94819ebf4c83669ccbd33b\",\"logprobs\":[],\"obfuscation\":\"O6bS6HBhMO\",\"output_index\":0,\"sequence_number\":8}", - "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\".\",\"item_id\":\"msg_0b461e807f507f5a006a7be7672a94819ebf4c83669ccbd33b\",\"logprobs\":[],\"obfuscation\":\"YiPt8q1AE09bmz2\",\"output_index\":0,\"sequence_number\":9}", - "event: response.output_text.done\ndata: {\"type\":\"response.output_text.done\",\"content_index\":0,\"item_id\":\"msg_0b461e807f507f5a006a7be7672a94819ebf4c83669ccbd33b\",\"logprobs\":[],\"output_index\":0,\"sequence_number\":10,\"text\":\"One, two, three.\"}", - "event: response.content_part.done\ndata: {\"type\":\"response.content_part.done\",\"content_index\":0,\"item_id\":\"msg_0b461e807f507f5a006a7be7672a94819ebf4c83669ccbd33b\",\"output_index\":0,\"part\":{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"One, two, three.\"},\"sequence_number\":11}", - "event: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"msg_0b461e807f507f5a006a7be7672a94819ebf4c83669ccbd33b\",\"type\":\"message\",\"status\":\"completed\",\"content\":[{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"One, two, three.\"}],\"role\":\"assistant\"},\"output_index\":0,\"sequence_number\":12}", - "event: response.completed\ndata: {\"type\":\"response.completed\",\"response\":{\"id\":\"resp_0b461e807f507f5a006a7be766c314819e971536b9d17a845a\",\"object\":\"response\",\"created_at\":1786505062,\"status\":\"completed\",\"background\":false,\"completed_at\":1786505063,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":32,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[{\"id\":\"msg_0b461e807f507f5a006a7be7672a94819ebf4c83669ccbd33b\",\"type\":\"message\",\"status\":\"completed\",\"content\":[{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"One, two, three.\"}],\"role\":\"assistant\"}],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"default\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":{\"input_tokens\":22,\"input_tokens_details\":{\"cache_write_tokens\":0,\"cached_tokens\":0},\"output_tokens\":7,\"output_tokens_details\":{\"reasoning_tokens\":0},\"total_tokens\":29},\"user\":null,\"metadata\":{}},\"sequence_number\":13}" + "event: response.created\ndata: {\"type\":\"response.created\",\"response\":{\"id\":\"resp_0c44aab4abfb26e1006aabc40125e887d2a7ad07cac9c94d4e\",\"object\":\"response\",\"created_at\":1789641729,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":32,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":0}", + "event: response.in_progress\ndata: {\"type\":\"response.in_progress\",\"response\":{\"id\":\"resp_0c44aab4abfb26e1006aabc40125e887d2a7ad07cac9c94d4e\",\"object\":\"response\",\"created_at\":1789641729,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":32,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":1}", + "event: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"msg_0c44aab4abfb26e1006aabc401767087d28c9b3148ea8550b1\",\"type\":\"message\",\"status\":\"in_progress\",\"content\":[],\"role\":\"assistant\"},\"output_index\":0,\"sequence_number\":2}", + "event: response.content_part.added\ndata: {\"type\":\"response.content_part.added\",\"content_index\":0,\"item_id\":\"msg_0c44aab4abfb26e1006aabc401767087d28c9b3148ea8550b1\",\"output_index\":0,\"part\":{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"\"},\"sequence_number\":3}", + "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"One\",\"item_id\":\"msg_0c44aab4abfb26e1006aabc401767087d28c9b3148ea8550b1\",\"logprobs\":[],\"obfuscation\":\"aHkzRRR9Cmx4P\",\"output_index\":0,\"sequence_number\":4}", + "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\",\",\"item_id\":\"msg_0c44aab4abfb26e1006aabc401767087d28c9b3148ea8550b1\",\"logprobs\":[],\"obfuscation\":\"4461QQFpCjw7awG\",\"output_index\":0,\"sequence_number\":5}", + "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\" two\",\"item_id\":\"msg_0c44aab4abfb26e1006aabc401767087d28c9b3148ea8550b1\",\"logprobs\":[],\"obfuscation\":\"Q9N3IYPlSsUI\",\"output_index\":0,\"sequence_number\":6}", + "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\",\",\"item_id\":\"msg_0c44aab4abfb26e1006aabc401767087d28c9b3148ea8550b1\",\"logprobs\":[],\"obfuscation\":\"926XdYzuVPJi5al\",\"output_index\":0,\"sequence_number\":7}", + "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\" three\",\"item_id\":\"msg_0c44aab4abfb26e1006aabc401767087d28c9b3148ea8550b1\",\"logprobs\":[],\"obfuscation\":\"fr10nCjWgN\",\"output_index\":0,\"sequence_number\":8}", + "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\".\",\"item_id\":\"msg_0c44aab4abfb26e1006aabc401767087d28c9b3148ea8550b1\",\"logprobs\":[],\"obfuscation\":\"Mby88vgBkMYK4Yl\",\"output_index\":0,\"sequence_number\":9}", + "event: response.output_text.done\ndata: {\"type\":\"response.output_text.done\",\"content_index\":0,\"item_id\":\"msg_0c44aab4abfb26e1006aabc401767087d28c9b3148ea8550b1\",\"logprobs\":[],\"output_index\":0,\"sequence_number\":10,\"text\":\"One, two, three.\"}", + "event: response.content_part.done\ndata: {\"type\":\"response.content_part.done\",\"content_index\":0,\"item_id\":\"msg_0c44aab4abfb26e1006aabc401767087d28c9b3148ea8550b1\",\"output_index\":0,\"part\":{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"One, two, three.\"},\"sequence_number\":11}", + "event: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"msg_0c44aab4abfb26e1006aabc401767087d28c9b3148ea8550b1\",\"type\":\"message\",\"status\":\"completed\",\"content\":[{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"One, two, three.\"}],\"role\":\"assistant\"},\"output_index\":0,\"sequence_number\":12}", + "event: response.completed\ndata: {\"type\":\"response.completed\",\"response\":{\"id\":\"resp_0c44aab4abfb26e1006aabc40125e887d2a7ad07cac9c94d4e\",\"object\":\"response\",\"created_at\":1789641729,\"status\":\"completed\",\"background\":false,\"completed_at\":1789641729,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":32,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[{\"id\":\"msg_0c44aab4abfb26e1006aabc401767087d28c9b3148ea8550b1\",\"type\":\"message\",\"status\":\"completed\",\"content\":[{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"One, two, three.\"}],\"role\":\"assistant\"}],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"default\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":{\"input_tokens\":22,\"input_tokens_details\":{\"cache_write_tokens\":0,\"cached_tokens\":0},\"output_tokens\":7,\"output_tokens_details\":{\"reasoning_tokens\":0},\"total_tokens\":29},\"user\":null,\"metadata\":{}},\"sequence_number\":13}" ], "kind": "sse" }, @@ -395,12 +538,12 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a29c5de209e655c5-IAD", + "cf-ray": "a3c780a6ce149adc-IAD", "connection": "keep-alive", "content-type": "text/event-stream; charset=utf-8", - "date": "Wed, 12 Aug 2026 03:24:22 GMT", + "date": "Thu, 17 Sep 2026 10:42:09 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "105", + "openai-processing-ms": "340", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -408,7 +551,13 @@ "strict-transport-security": "max-age=31536000; includeSubDomains; preload", "transfer-encoding": "chunked", "x-content-type-options": "nosniff", - "x-request-id": "req_83929d202a77445d825c9dcc51084e5a" + "x-ratelimit-limit-requests": "30000", + "x-ratelimit-limit-tokens": "150000000", + "x-ratelimit-remaining-requests": "29999", + "x-ratelimit-remaining-tokens": "149999957", + "x-ratelimit-reset-requests": "2ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_96c0de4f268042b9ad3bb11fe05c35ec" }, "status": 200, "statusText": "OK" @@ -418,7 +567,7 @@ "callIndex": 0, "id": "49a95bf2b3466013", "matchKey": "POST api.openai.com/v1/embeddings", - "recordedAt": "2026-08-12T03:24:23.521Z", + "recordedAt": "2026-09-17T10:42:09.961Z", "request": { "body": { "kind": "json", @@ -1009,13 +1158,13 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a29c5de61c9d55c5-IAD", + "cf-ray": "a3c780aaea3d9adc-IAD", "connection": "keep-alive", "content-encoding": "gzip", "content-type": "application/json", - "date": "Wed, 12 Aug 2026 03:24:23 GMT", + "date": "Thu, 17 Sep 2026 10:42:09 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "76", + "openai-processing-ms": "157", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -1030,7 +1179,7 @@ "x-ratelimit-remaining-tokens": "9999993", "x-ratelimit-reset-requests": "6ms", "x-ratelimit-reset-tokens": "0s", - "x-request-id": "req_d807b25c33844f76a9dcbc5db7f89105" + "x-request-id": "req_45c1b917a89f4ec78b93b2c0675a11bc" }, "status": 200, "statusText": "OK" @@ -1040,7 +1189,7 @@ "callIndex": 1, "id": "fcc3d17c88f1552b", "matchKey": "POST api.openai.com/v1/embeddings", - "recordedAt": "2026-08-12T03:24:23.688Z", + "recordedAt": "2026-09-17T10:42:10.144Z", "request": { "body": { "kind": "json", @@ -1062,18 +1211,18 @@ "body": { "contentType": "application/json", "kind": "binary", - "path": "ai-sdk-v7-latest.cassette.blobs/92f733cbd438775e360279f4737e012522d5b7d515c6311656914ec416d3fce8.bin", - "sha256": "92f733cbd438775e360279f4737e012522d5b7d515c6311656914ec416d3fce8" + "path": "ai-sdk-v7-latest.cassette.blobs/9a14a7a518e93b520c904dd30764c1ad41fd7d47fe63606d39e6da1e58f3a0bc.bin", + "sha256": "9a14a7a518e93b520c904dd30764c1ad41fd7d47fe63606d39e6da1e58f3a0bc" }, "headers": { "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a29c5de6fedf55c5-IAD", + "cf-ray": "a3c780ac5e499adc-IAD", "connection": "keep-alive", "content-encoding": "gzip", "content-type": "application/json", - "date": "Wed, 12 Aug 2026 03:24:23 GMT", + "date": "Thu, 17 Sep 2026 10:42:10 GMT", "openai-organization": "braintrust-data", "openai-processing-ms": "104", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", @@ -1090,7 +1239,7 @@ "x-ratelimit-remaining-tokens": "9999985", "x-ratelimit-reset-requests": "6ms", "x-ratelimit-reset-tokens": "0s", - "x-request-id": "req_dda99c3184654cbead2e1f4be4091853" + "x-request-id": "req_8591c46b74fd4940a5f6f4d4e0a81151" }, "status": 200, "statusText": "OK" @@ -1100,7 +1249,7 @@ "callIndex": 0, "id": "064d11f1077567e7", "matchKey": "POST api.cohere.com/v2/rerank", - "recordedAt": "2026-08-12T03:24:23.792Z", + "recordedAt": "2026-09-17T10:42:10.232Z", "request": { "body": { "kind": "json", @@ -1123,7 +1272,7 @@ "body": { "kind": "json", "value": { - "id": "c3756d1b-0c2c-48d0-9ee6-fdc9051eca8b", + "id": "32f25b83-a9e6-4362-a8ad-13891ac45127", "meta": { "api_version": { "version": "2" @@ -1135,7 +1284,7 @@ "results": [ { "index": 1, - "relevance_score": 0.06657539 + "relevance_score": 0.06664825 }, { "index": 0, @@ -1150,7 +1299,7 @@ "cache-control": "no-cache, no-store, no-transform, must-revalidate, private, max-age=0", "content-encoding": "gzip", "content-type": "application/json", - "date": "Wed, 12 Aug 2026 03:24:23 GMT", + "date": "Thu, 17 Sep 2026 10:42:10 GMT", "expires": "Thu, 01 Jan 1970 00:00:00 GMT", "pragma": "no-cache", "server": "envoy", @@ -1158,8 +1307,8 @@ "vary": "Origin,Accept-Encoding", "via": "1.1 google", "x-accel-expires": "0", - "x-debug-trace-id": "0ea7d8d5533b26e40523546284652961", - "x-envoy-upstream-service-time": "45" + "x-debug-trace-id": "5a3d147f9db7749b1fb2c312dbd383fb", + "x-envoy-upstream-service-time": "35" }, "status": 200, "statusText": "OK" @@ -1169,7 +1318,7 @@ "callIndex": 3, "id": "e09f32cc805b35e9", "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-08-12T03:24:24.571Z", + "recordedAt": "2026-09-17T10:42:10.824Z", "request": { "body": { "kind": "json", @@ -1226,11 +1375,11 @@ "billing": { "payer": "developer" }, - "completed_at": 1786505064, - "created_at": 1786505063, + "completed_at": 1789641730, + "created_at": 1789641730, "error": null, "frequency_penalty": 0, - "id": "resp_07b5933bf6fadff7006a7be767d5e881a38547fd767852b95b", + "id": "resp_015d012871fccb26006aabc4024e3487d2b395f572dbb72c94", "incomplete_details": null, "instructions": null, "max_output_tokens": 128, @@ -1242,8 +1391,8 @@ "output": [ { "arguments": "{\"location\":\"Paris, France\"}", - "call_id": "call_9VV8FnA3IsKGS7OY7w7VIeM0", - "id": "fc_07b5933bf6fadff7006a7be76844a881a3aee46f85e131d282", + "call_id": "call_wtL2XgiH24I5mTwFyRHB386c", + "id": "fc_015d012871fccb26006aabc4029f5487d2988f065037856713", "name": "get_weather", "status": "completed", "type": "function_call" @@ -1332,13 +1481,13 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a29c5de8bb2355c5-IAD", + "cf-ray": "a3c780ae1bc39adc-IAD", "connection": "keep-alive", "content-encoding": "gzip", "content-type": "application/json", - "date": "Wed, 12 Aug 2026 03:24:24 GMT", + "date": "Thu, 17 Sep 2026 10:42:10 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "658", + "openai-processing-ms": "508", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -1349,10 +1498,10 @@ "x-ratelimit-limit-requests": "30000", "x-ratelimit-limit-tokens": "150000000", "x-ratelimit-remaining-requests": "29999", - "x-ratelimit-remaining-tokens": "149999687", + "x-ratelimit-remaining-tokens": "149999690", "x-ratelimit-reset-requests": "2ms", "x-ratelimit-reset-tokens": "0s", - "x-request-id": "req_a76af6a5a297434d95ade0bce1479263" + "x-request-id": "req_102e9e632770473488def3045871fb2a" }, "status": 200, "statusText": "OK" @@ -1360,9 +1509,9 @@ }, { "callIndex": 4, - "id": "a66751ca0e851033", + "id": "8030a04a7ebfff30", "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-08-12T03:24:25.266Z", + "recordedAt": "2026-09-17T10:42:11.556Z", "request": { "body": { "kind": "json", @@ -1383,12 +1532,12 @@ }, { "arguments": "{\"location\":\"Paris, France\"}", - "call_id": "call_9VV8FnA3IsKGS7OY7w7VIeM0", + "call_id": "call_wtL2XgiH24I5mTwFyRHB386c", "name": "get_weather", "type": "function_call" }, { - "call_id": "call_9VV8FnA3IsKGS7OY7w7VIeM0", + "call_id": "call_wtL2XgiH24I5mTwFyRHB386c", "output": "{\"condition\":\"sunny\",\"location\":\"Paris, France\",\"temperatureC\":22}", "type": "function_call_output" } @@ -1430,11 +1579,11 @@ "billing": { "payer": "developer" }, - "completed_at": 1786505065, - "created_at": 1786505064, + "completed_at": 1789641731, + "created_at": 1789641730, "error": null, "frequency_penalty": 0, - "id": "resp_0ebfe244cd23fb94006a7be7689d2481a3876c49d94beb49ab", + "id": "resp_04df60a53e5c9a8c006aabc402e9c887d288411d6f75ea38f3", "incomplete_details": null, "instructions": null, "max_output_tokens": 128, @@ -1446,8 +1595,8 @@ "output": [ { "arguments": "{\"location\":\"Paris, France\"}", - "call_id": "call_OAeh7LZtnoGtKsFOsYLCwm70", - "id": "fc_0ebfe244cd23fb94006a7be769025881a3aee9b3a189067158", + "call_id": "call_lvwSPizCBpDpEa0we9kKtAVN", + "id": "fc_04df60a53e5c9a8c006aabc40344b887d2affdcdb022af0eed", "name": "get_weather", "status": "completed", "type": "function_call" @@ -1536,13 +1685,13 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a29c5ded981655c5-IAD", + "cf-ray": "a3c780b1ce669adc-IAD", "connection": "keep-alive", "content-encoding": "gzip", "content-type": "application/json", - "date": "Wed, 12 Aug 2026 03:24:25 GMT", + "date": "Thu, 17 Sep 2026 10:42:11 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "621", + "openai-processing-ms": "607", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -1556,7 +1705,7 @@ "x-ratelimit-remaining-tokens": "149999650", "x-ratelimit-reset-requests": "2ms", "x-ratelimit-reset-tokens": "0s", - "x-request-id": "req_537aa11064dc4d01a34e0789e484985b" + "x-request-id": "req_e6b9a5dde6024f0ea10543cf9ea027ba" }, "status": 200, "statusText": "OK" @@ -1564,9 +1713,9 @@ }, { "callIndex": 5, - "id": "411caa88a9e7de7e", + "id": "48358abcfdc93bf0", "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-08-12T03:24:25.899Z", + "recordedAt": "2026-09-17T10:42:12.246Z", "request": { "body": { "kind": "json", @@ -1587,23 +1736,23 @@ }, { "arguments": "{\"location\":\"Paris, France\"}", - "call_id": "call_9VV8FnA3IsKGS7OY7w7VIeM0", + "call_id": "call_wtL2XgiH24I5mTwFyRHB386c", "name": "get_weather", "type": "function_call" }, { - "call_id": "call_9VV8FnA3IsKGS7OY7w7VIeM0", + "call_id": "call_wtL2XgiH24I5mTwFyRHB386c", "output": "{\"condition\":\"sunny\",\"location\":\"Paris, France\",\"temperatureC\":22}", "type": "function_call_output" }, { "arguments": "{\"location\":\"Paris, France\"}", - "call_id": "call_OAeh7LZtnoGtKsFOsYLCwm70", + "call_id": "call_lvwSPizCBpDpEa0we9kKtAVN", "name": "get_weather", "type": "function_call" }, { - "call_id": "call_OAeh7LZtnoGtKsFOsYLCwm70", + "call_id": "call_lvwSPizCBpDpEa0we9kKtAVN", "output": "{\"condition\":\"sunny\",\"location\":\"Paris, France\",\"temperatureC\":22}", "type": "function_call_output" } @@ -1645,11 +1794,11 @@ "billing": { "payer": "developer" }, - "completed_at": 1786505065, - "created_at": 1786505065, + "completed_at": 1789641732, + "created_at": 1789641731, "error": null, "frequency_penalty": 0, - "id": "resp_0fa39da86c50662a006a7be76950b481a09cf5016f85f97d07", + "id": "resp_0a8d34207c3abad0006aabc403abfc87d2a949351074bfe4e5", "incomplete_details": null, "instructions": null, "max_output_tokens": 128, @@ -1661,8 +1810,8 @@ "output": [ { "arguments": "{\"location\":\"Paris, France\"}", - "call_id": "call_FizzZsptY3i7nervXBEE9r9M", - "id": "fc_0fa39da86c50662a006a7be769a79c81a0b61c8b804531e9d3", + "call_id": "call_zZ7VEnI66wx7U24hCY8sKu79", + "id": "fc_0a8d34207c3abad0006aabc404041887d2806bae3f86becec7", "name": "get_weather", "status": "completed", "type": "function_call" @@ -1751,13 +1900,13 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a29c5df1ee1955c5-IAD", + "cf-ray": "a3c780b65bfe9adc-IAD", "connection": "keep-alive", "content-encoding": "gzip", "content-type": "application/json", - "date": "Wed, 12 Aug 2026 03:24:25 GMT", + "date": "Thu, 17 Sep 2026 10:42:12 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "561", + "openai-processing-ms": "566", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -1768,10 +1917,10 @@ "x-ratelimit-limit-requests": "30000", "x-ratelimit-limit-tokens": "150000000", "x-ratelimit-remaining-requests": "29999", - "x-ratelimit-remaining-tokens": "149999610", + "x-ratelimit-remaining-tokens": "149999612", "x-ratelimit-reset-requests": "2ms", "x-ratelimit-reset-tokens": "0s", - "x-request-id": "req_568ce6bb861a4dbabe41c498aba1a8b6" + "x-request-id": "req_f6c3732a60274149865ee0a0026a4400" }, "status": 200, "statusText": "OK" @@ -1779,9 +1928,9 @@ }, { "callIndex": 6, - "id": "9ce566381453e42f", + "id": "64fa80afb31d0c20", "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-08-12T03:24:26.756Z", + "recordedAt": "2026-09-17T10:42:12.988Z", "request": { "body": { "kind": "json", @@ -1802,34 +1951,34 @@ }, { "arguments": "{\"location\":\"Paris, France\"}", - "call_id": "call_9VV8FnA3IsKGS7OY7w7VIeM0", + "call_id": "call_wtL2XgiH24I5mTwFyRHB386c", "name": "get_weather", "type": "function_call" }, { - "call_id": "call_9VV8FnA3IsKGS7OY7w7VIeM0", + "call_id": "call_wtL2XgiH24I5mTwFyRHB386c", "output": "{\"condition\":\"sunny\",\"location\":\"Paris, France\",\"temperatureC\":22}", "type": "function_call_output" }, { "arguments": "{\"location\":\"Paris, France\"}", - "call_id": "call_OAeh7LZtnoGtKsFOsYLCwm70", + "call_id": "call_lvwSPizCBpDpEa0we9kKtAVN", "name": "get_weather", "type": "function_call" }, { - "call_id": "call_OAeh7LZtnoGtKsFOsYLCwm70", + "call_id": "call_lvwSPizCBpDpEa0we9kKtAVN", "output": "{\"condition\":\"sunny\",\"location\":\"Paris, France\",\"temperatureC\":22}", "type": "function_call_output" }, { "arguments": "{\"location\":\"Paris, France\"}", - "call_id": "call_FizzZsptY3i7nervXBEE9r9M", + "call_id": "call_zZ7VEnI66wx7U24hCY8sKu79", "name": "get_weather", "type": "function_call" }, { - "call_id": "call_FizzZsptY3i7nervXBEE9r9M", + "call_id": "call_zZ7VEnI66wx7U24hCY8sKu79", "output": "{\"condition\":\"sunny\",\"location\":\"Paris, France\",\"temperatureC\":22}", "type": "function_call_output" } @@ -1871,11 +2020,11 @@ "billing": { "payer": "developer" }, - "completed_at": 1786505066, - "created_at": 1786505065, + "completed_at": 1789641732, + "created_at": 1789641732, "error": null, "frequency_penalty": 0, - "id": "resp_0dfcdb17acb512cc006a7be769f25c819293cd64bb86148604", + "id": "resp_033a4da77b35e3de006aabc40452f087d28fbb826056b1b9bc", "incomplete_details": null, "instructions": null, "max_output_tokens": 128, @@ -1887,8 +2036,8 @@ "output": [ { "arguments": "{\"location\":\"Paris, France\"}", - "call_id": "call_GnZKr3NQH6kq24PDxVaaYPmF", - "id": "fc_0dfcdb17acb512cc006a7be76a72e0819286699448e6af2b1a", + "call_id": "call_G8cUzwixd9CkJblhZMK4Jdtc", + "id": "fc_033a4da77b35e3de006aabc404afac87d2be9eb6371a068335", "name": "get_weather", "status": "completed", "type": "function_call" @@ -1977,13 +2126,13 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a29c5df5d90855c5-IAD", + "cf-ray": "a3c780baa8a39adc-IAD", "connection": "keep-alive", "content-encoding": "gzip", "content-type": "application/json", - "date": "Wed, 12 Aug 2026 03:24:26 GMT", + "date": "Thu, 17 Sep 2026 10:42:12 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "727", + "openai-processing-ms": "644", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -1997,7 +2146,7 @@ "x-ratelimit-remaining-tokens": "149999570", "x-ratelimit-reset-requests": "2ms", "x-ratelimit-reset-tokens": "0s", - "x-request-id": "req_f1ecd8fd919740acb2ebb65472923aca" + "x-request-id": "req_f255f5c844ee4b469d8b216cf3a18a34" }, "status": 200, "statusText": "OK" @@ -2007,7 +2156,7 @@ "callIndex": 0, "id": "04d8f7db5dc7b0b8", "matchKey": "POST api.anthropic.com/v1/messages", - "recordedAt": "2026-07-21T08:02:56.484Z", + "recordedAt": "2026-09-17T10:42:13.644Z", "request": { "body": { "kind": "json", @@ -2039,13 +2188,14 @@ "body": { "kind": "json", "value": { + "container": null, "content": [ { "text": "CACHE_OK", "type": "text" } ], - "id": "msg_011CdErU9JFjKLQu9AXL4FBx", + "id": "msg_011Cf8sXkdtbdQJhcor262uJ", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -2070,27 +2220,28 @@ "anthropic-organization-id": "27796668-7351-40ac-acc4-024aee8995a5", "anthropic-ratelimit-input-tokens-limit": "10000000", "anthropic-ratelimit-input-tokens-remaining": "10000000", - "anthropic-ratelimit-input-tokens-reset": "2026-07-21T08:02:56Z", + "anthropic-ratelimit-input-tokens-reset": "2026-09-17T10:42:13Z", "anthropic-ratelimit-output-tokens-limit": "2000000", "anthropic-ratelimit-output-tokens-remaining": "2000000", - "anthropic-ratelimit-output-tokens-reset": "2026-07-21T08:02:56Z", + "anthropic-ratelimit-output-tokens-reset": "2026-09-17T10:42:13Z", "anthropic-ratelimit-requests-limit": "20000", "anthropic-ratelimit-requests-remaining": "19999", - "anthropic-ratelimit-requests-reset": "2026-07-21T08:02:55Z", + "anthropic-ratelimit-requests-reset": "2026-09-17T10:42:13Z", "anthropic-ratelimit-tokens-limit": "12000000", "anthropic-ratelimit-tokens-remaining": "12000000", - "anthropic-ratelimit-tokens-reset": "2026-07-21T08:02:56Z", + "anthropic-ratelimit-tokens-reset": "2026-09-17T10:42:13Z", + "anthropic-workspace-id": "wrkspc_018bFG1FgNVWqx5pthtdGTzS", "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8afab39b7fbc5-IAD", + "cf-ray": "a3c780bf6d022d22-IAD", "connection": "keep-alive", "content-encoding": "gzip", "content-security-policy": "default-src 'none'; frame-ancestors 'none'", "content-type": "application/json", - "date": "Tue, 21 Jul 2026 08:02:56 GMT", - "request-id": "req_011CdErU8vBjrSS4tuL6nACN", + "date": "Thu, 17 Sep 2026 10:42:13 GMT", + "request-id": "req_011Cf8sXkJ42Tv8iXuFYkPCE", "server": "cloudflare", "strict-transport-security": "max-age=31536000; includeSubDomains; preload", - "traceresponse": "00-a8d331082efb9442793af9b36b59295d-0845e3377ec3bd74-01", + "traceresponse": "00-8c14997d5becb397bc3f8f25f39f2590-a702e683dddfdd49-01", "transfer-encoding": "chunked", "vary": "Accept-Encoding", "x-robots-tag": "none" @@ -2103,7 +2254,7 @@ "callIndex": 1, "id": "f51018468a0f5811", "matchKey": "POST api.anthropic.com/v1/messages", - "recordedAt": "2026-07-21T08:03:02.171Z", + "recordedAt": "2026-09-17T10:42:19.279Z", "request": { "body": { "kind": "json", @@ -2135,13 +2286,14 @@ "body": { "kind": "json", "value": { + "container": null, "content": [ { "text": "CACHE_OK", "type": "text" } ], - "id": "msg_011CdErUZU4bagcjcqoDbytF", + "id": "msg_011Cf8sYAjEZ6rVdEvyNXYVE", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -2166,27 +2318,28 @@ "anthropic-organization-id": "27796668-7351-40ac-acc4-024aee8995a5", "anthropic-ratelimit-input-tokens-limit": "10000000", "anthropic-ratelimit-input-tokens-remaining": "10000000", - "anthropic-ratelimit-input-tokens-reset": "2026-07-21T08:03:02Z", + "anthropic-ratelimit-input-tokens-reset": "2026-09-17T10:42:19Z", "anthropic-ratelimit-output-tokens-limit": "2000000", "anthropic-ratelimit-output-tokens-remaining": "2000000", - "anthropic-ratelimit-output-tokens-reset": "2026-07-21T08:03:02Z", + "anthropic-ratelimit-output-tokens-reset": "2026-09-17T10:42:19Z", "anthropic-ratelimit-requests-limit": "20000", "anthropic-ratelimit-requests-remaining": "19999", - "anthropic-ratelimit-requests-reset": "2026-07-21T08:03:01Z", + "anthropic-ratelimit-requests-reset": "2026-09-17T10:42:18Z", "anthropic-ratelimit-tokens-limit": "12000000", "anthropic-ratelimit-tokens-remaining": "12000000", - "anthropic-ratelimit-tokens-reset": "2026-07-21T08:03:02Z", + "anthropic-ratelimit-tokens-reset": "2026-09-17T10:42:19Z", + "anthropic-workspace-id": "wrkspc_018bFG1FgNVWqx5pthtdGTzS", "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8afce6bdb0de2-IAD", + "cf-ray": "a3c780e2d8810556-IAD", "connection": "keep-alive", "content-encoding": "gzip", "content-security-policy": "default-src 'none'; frame-ancestors 'none'", "content-type": "application/json", - "date": "Tue, 21 Jul 2026 08:03:02 GMT", - "request-id": "req_011CdErUYwZQqvksXhBFrGV5", + "date": "Thu, 17 Sep 2026 10:42:19 GMT", + "request-id": "req_011Cf8sYAP9B2p8gNVNbZ4uy", "server": "cloudflare", "strict-transport-security": "max-age=31536000; includeSubDomains; preload", - "traceresponse": "00-ee50b99963970848365dd0c25abfdc77-7f2f0639821c5fee-01", + "traceresponse": "00-cc6c628279c84d8567313fc005d8208f-b91483183f4ef7eb-01", "transfer-encoding": "chunked", "vary": "Accept-Encoding", "x-robots-tag": "none" @@ -2199,7 +2352,7 @@ "callIndex": 2, "id": "c440f9309e7fff40", "matchKey": "POST api.anthropic.com/v1/messages", - "recordedAt": "2026-07-21T08:03:08.128Z", + "recordedAt": "2026-09-17T10:42:24.849Z", "request": { "body": { "kind": "json", @@ -2231,13 +2384,14 @@ "body": { "kind": "json", "value": { + "container": null, "content": [ { "text": "CACHE_OK", "type": "text" } ], - "id": "msg_011CdErUz7sz8hBbgtbsV2Dv", + "id": "msg_011Cf8sYafeQGZSpfPX6w5NB", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -2262,27 +2416,28 @@ "anthropic-organization-id": "27796668-7351-40ac-acc4-024aee8995a5", "anthropic-ratelimit-input-tokens-limit": "10000000", "anthropic-ratelimit-input-tokens-remaining": "10000000", - "anthropic-ratelimit-input-tokens-reset": "2026-07-21T08:03:08Z", + "anthropic-ratelimit-input-tokens-reset": "2026-09-17T10:42:24Z", "anthropic-ratelimit-output-tokens-limit": "2000000", "anthropic-ratelimit-output-tokens-remaining": "2000000", - "anthropic-ratelimit-output-tokens-reset": "2026-07-21T08:03:08Z", + "anthropic-ratelimit-output-tokens-reset": "2026-09-17T10:42:24Z", "anthropic-ratelimit-requests-limit": "20000", "anthropic-ratelimit-requests-remaining": "19999", - "anthropic-ratelimit-requests-reset": "2026-07-21T08:03:07Z", + "anthropic-ratelimit-requests-reset": "2026-09-17T10:42:24Z", "anthropic-ratelimit-tokens-limit": "12000000", "anthropic-ratelimit-tokens-remaining": "12000000", - "anthropic-ratelimit-tokens-reset": "2026-07-21T08:03:08Z", + "anthropic-ratelimit-tokens-reset": "2026-09-17T10:42:24Z", + "anthropic-workspace-id": "wrkspc_018bFG1FgNVWqx5pthtdGTzS", "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8aff1fcc8d6b3-IAD", + "cf-ray": "a3c78105fb7eaf04-IAD", "connection": "keep-alive", "content-encoding": "gzip", "content-security-policy": "default-src 'none'; frame-ancestors 'none'", "content-type": "application/json", - "date": "Tue, 21 Jul 2026 08:03:08 GMT", - "request-id": "req_011CdErUyEYr1bK58woZ1nLQ", + "date": "Thu, 17 Sep 2026 10:42:24 GMT", + "request-id": "req_011Cf8sYaNmqYC5atFgL4HTm", "server": "cloudflare", "strict-transport-security": "max-age=31536000; includeSubDomains; preload", - "traceresponse": "00-c6ffe122df55bf7a8a3597b5925922ce-804dad9bafb9a34b-01", + "traceresponse": "00-b3bb3cf1633bc9fc4a810655719d38a7-ce278f377154c591-01", "transfer-encoding": "chunked", "vary": "Accept-Encoding", "x-robots-tag": "none" @@ -2295,7 +2450,7 @@ "callIndex": 7, "id": "d22bae6c42006c81", "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-07-21T08:04:33.632Z", + "recordedAt": "2026-09-17T10:42:25.654Z", "request": { "body": { "kind": "json", @@ -2346,11 +2501,11 @@ "billing": { "payer": "developer" }, - "completed_at": 1784621073, - "created_at": 1784621073, + "completed_at": 1789641745, + "created_at": 1789641745, "error": null, "frequency_penalty": 0, - "id": "resp_09e1a9d23cdd3f90006a5f28110004819fb4d2f019bdc584a0", + "id": "resp_0cf4ea43ffeb391b006aabc4110f1487d28220d279dccbb6d8", "incomplete_details": null, "instructions": null, "max_output_tokens": 32, @@ -2369,7 +2524,7 @@ "type": "output_text" } ], - "id": "msg_09e1a9d23cdd3f90006a5f28117088819faa935cf76dbcefa7", + "id": "msg_0cf4ea43ffeb391b006aabc411685887d2953624cfb2caf57c", "role": "assistant", "status": "completed", "type": "message" @@ -2451,13 +2606,13 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8b209f94081ed-IAD", + "cf-ray": "a3c781097be4c946-IAD", "connection": "keep-alive", "content-encoding": "gzip", "content-type": "application/json", - "date": "Tue, 21 Jul 2026 08:04:33 GMT", + "date": "Thu, 17 Sep 2026 10:42:25 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "641", + "openai-processing-ms": "704", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -2471,7 +2626,7 @@ "x-ratelimit-remaining-tokens": "149999945", "x-ratelimit-reset-requests": "2ms", "x-ratelimit-reset-tokens": "0s", - "x-request-id": "req_c36e75054343432c9f32a81af32c43b6" + "x-request-id": "req_0bfa694f4ff042e29beeabaf1b1732cf" }, "status": 200, "statusText": "OK" @@ -2481,7 +2636,7 @@ "callIndex": 8, "id": "6d0eec1cfcef015d", "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-07-21T08:04:35.420Z", + "recordedAt": "2026-09-17T10:42:26.363Z", "request": { "body": { "kind": "json", @@ -2528,19 +2683,19 @@ "response": { "body": { "chunks": [ - "event: response.created\ndata: {\"type\":\"response.created\",\"response\":{\"id\":\"resp_042801f563fbb1d7006a5f2811b15c81919b2a76b14703a3d4\",\"object\":\"response\",\"created_at\":1784621073,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":32,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"json_schema\",\"description\":null,\"name\":\"response\",\"schema\":{\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"}},\"required\":[\"city\"],\"additionalProperties\":false},\"strict\":true},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":0}", - "event: response.in_progress\ndata: {\"type\":\"response.in_progress\",\"response\":{\"id\":\"resp_042801f563fbb1d7006a5f2811b15c81919b2a76b14703a3d4\",\"object\":\"response\",\"created_at\":1784621073,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":32,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"json_schema\",\"description\":null,\"name\":\"response\",\"schema\":{\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"}},\"required\":[\"city\"],\"additionalProperties\":false},\"strict\":true},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":1}", - "event: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"msg_042801f563fbb1d7006a5f28133a9881918d33855ad9da313a\",\"type\":\"message\",\"status\":\"in_progress\",\"content\":[],\"role\":\"assistant\"},\"output_index\":0,\"sequence_number\":2}", - "event: response.content_part.added\ndata: {\"type\":\"response.content_part.added\",\"content_index\":0,\"item_id\":\"msg_042801f563fbb1d7006a5f28133a9881918d33855ad9da313a\",\"output_index\":0,\"part\":{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"\"},\"sequence_number\":3}", - "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"{\\\"\",\"item_id\":\"msg_042801f563fbb1d7006a5f28133a9881918d33855ad9da313a\",\"logprobs\":[],\"obfuscation\":\"fEOorHmDsTHteo\",\"output_index\":0,\"sequence_number\":4}", - "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"city\",\"item_id\":\"msg_042801f563fbb1d7006a5f28133a9881918d33855ad9da313a\",\"logprobs\":[],\"obfuscation\":\"MuPeb5KEPGkV\",\"output_index\":0,\"sequence_number\":5}", - "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"\\\":\\\"\",\"item_id\":\"msg_042801f563fbb1d7006a5f28133a9881918d33855ad9da313a\",\"logprobs\":[],\"obfuscation\":\"6EDrwlLb4uJYQ\",\"output_index\":0,\"sequence_number\":6}", - "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"Paris\",\"item_id\":\"msg_042801f563fbb1d7006a5f28133a9881918d33855ad9da313a\",\"logprobs\":[],\"obfuscation\":\"Ha8lIn5yoyG\",\"output_index\":0,\"sequence_number\":7}", - "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"\\\"}\",\"item_id\":\"msg_042801f563fbb1d7006a5f28133a9881918d33855ad9da313a\",\"logprobs\":[],\"obfuscation\":\"8vtQoIgvlMg7bg\",\"output_index\":0,\"sequence_number\":8}", - "event: response.output_text.done\ndata: {\"type\":\"response.output_text.done\",\"content_index\":0,\"item_id\":\"msg_042801f563fbb1d7006a5f28133a9881918d33855ad9da313a\",\"logprobs\":[],\"output_index\":0,\"sequence_number\":9,\"text\":\"{\\\"city\\\":\\\"Paris\\\"}\"}", - "event: response.content_part.done\ndata: {\"type\":\"response.content_part.done\",\"content_index\":0,\"item_id\":\"msg_042801f563fbb1d7006a5f28133a9881918d33855ad9da313a\",\"output_index\":0,\"part\":{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"{\\\"city\\\":\\\"Paris\\\"}\"},\"sequence_number\":10}", - "event: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"msg_042801f563fbb1d7006a5f28133a9881918d33855ad9da313a\",\"type\":\"message\",\"status\":\"completed\",\"content\":[{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"{\\\"city\\\":\\\"Paris\\\"}\"}],\"role\":\"assistant\"},\"output_index\":0,\"sequence_number\":11}", - "event: response.completed\ndata: {\"type\":\"response.completed\",\"response\":{\"id\":\"resp_042801f563fbb1d7006a5f2811b15c81919b2a76b14703a3d4\",\"object\":\"response\",\"created_at\":1784621073,\"status\":\"completed\",\"background\":false,\"completed_at\":1784621075,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":32,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[{\"id\":\"msg_042801f563fbb1d7006a5f28133a9881918d33855ad9da313a\",\"type\":\"message\",\"status\":\"completed\",\"content\":[{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"{\\\"city\\\":\\\"Paris\\\"}\"}],\"role\":\"assistant\"}],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"default\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"json_schema\",\"description\":null,\"name\":\"response\",\"schema\":{\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"}},\"required\":[\"city\"],\"additionalProperties\":false},\"strict\":true},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":{\"input_tokens\":38,\"input_tokens_details\":{\"cache_write_tokens\":0,\"cached_tokens\":0},\"output_tokens\":6,\"output_tokens_details\":{\"reasoning_tokens\":0},\"total_tokens\":44},\"user\":null,\"metadata\":{}},\"sequence_number\":12}" + "event: response.created\ndata: {\"type\":\"response.created\",\"response\":{\"id\":\"resp_0d578f06b67bd5c3006aabc411c0d487d29dd904e04e79efc8\",\"object\":\"response\",\"created_at\":1789641745,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":32,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"json_schema\",\"description\":null,\"name\":\"response\",\"schema\":{\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"}},\"required\":[\"city\"],\"additionalProperties\":false},\"strict\":true},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":0}", + "event: response.in_progress\ndata: {\"type\":\"response.in_progress\",\"response\":{\"id\":\"resp_0d578f06b67bd5c3006aabc411c0d487d29dd904e04e79efc8\",\"object\":\"response\",\"created_at\":1789641745,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":32,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"json_schema\",\"description\":null,\"name\":\"response\",\"schema\":{\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"}},\"required\":[\"city\"],\"additionalProperties\":false},\"strict\":true},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":1}", + "event: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"msg_0d578f06b67bd5c3006aabc4122b0087d2adb6ea66d2f46f2c\",\"type\":\"message\",\"status\":\"in_progress\",\"content\":[],\"role\":\"assistant\"},\"output_index\":0,\"sequence_number\":2}", + "event: response.content_part.added\ndata: {\"type\":\"response.content_part.added\",\"content_index\":0,\"item_id\":\"msg_0d578f06b67bd5c3006aabc4122b0087d2adb6ea66d2f46f2c\",\"output_index\":0,\"part\":{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"\"},\"sequence_number\":3}", + "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"{\\\"\",\"item_id\":\"msg_0d578f06b67bd5c3006aabc4122b0087d2adb6ea66d2f46f2c\",\"logprobs\":[],\"obfuscation\":\"mb8EBwC0ugUytw\",\"output_index\":0,\"sequence_number\":4}", + "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"city\",\"item_id\":\"msg_0d578f06b67bd5c3006aabc4122b0087d2adb6ea66d2f46f2c\",\"logprobs\":[],\"obfuscation\":\"MJCaLQWnrb8H\",\"output_index\":0,\"sequence_number\":5}", + "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"\\\":\\\"\",\"item_id\":\"msg_0d578f06b67bd5c3006aabc4122b0087d2adb6ea66d2f46f2c\",\"logprobs\":[],\"obfuscation\":\"3CqkIpCdixLzR\",\"output_index\":0,\"sequence_number\":6}", + "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"Paris\",\"item_id\":\"msg_0d578f06b67bd5c3006aabc4122b0087d2adb6ea66d2f46f2c\",\"logprobs\":[],\"obfuscation\":\"jSRpgKScZ1A\",\"output_index\":0,\"sequence_number\":7}", + "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"\\\"}\",\"item_id\":\"msg_0d578f06b67bd5c3006aabc4122b0087d2adb6ea66d2f46f2c\",\"logprobs\":[],\"obfuscation\":\"Gwipj5ci1cAV8P\",\"output_index\":0,\"sequence_number\":8}", + "event: response.output_text.done\ndata: {\"type\":\"response.output_text.done\",\"content_index\":0,\"item_id\":\"msg_0d578f06b67bd5c3006aabc4122b0087d2adb6ea66d2f46f2c\",\"logprobs\":[],\"output_index\":0,\"sequence_number\":9,\"text\":\"{\\\"city\\\":\\\"Paris\\\"}\"}", + "event: response.content_part.done\ndata: {\"type\":\"response.content_part.done\",\"content_index\":0,\"item_id\":\"msg_0d578f06b67bd5c3006aabc4122b0087d2adb6ea66d2f46f2c\",\"output_index\":0,\"part\":{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"{\\\"city\\\":\\\"Paris\\\"}\"},\"sequence_number\":10}", + "event: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"msg_0d578f06b67bd5c3006aabc4122b0087d2adb6ea66d2f46f2c\",\"type\":\"message\",\"status\":\"completed\",\"content\":[{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"{\\\"city\\\":\\\"Paris\\\"}\"}],\"role\":\"assistant\"},\"output_index\":0,\"sequence_number\":11}", + "event: response.completed\ndata: {\"type\":\"response.completed\",\"response\":{\"id\":\"resp_0d578f06b67bd5c3006aabc411c0d487d29dd904e04e79efc8\",\"object\":\"response\",\"created_at\":1789641745,\"status\":\"completed\",\"background\":false,\"completed_at\":1789641746,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":32,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[{\"id\":\"msg_0d578f06b67bd5c3006aabc4122b0087d2adb6ea66d2f46f2c\",\"type\":\"message\",\"status\":\"completed\",\"content\":[{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"{\\\"city\\\":\\\"Paris\\\"}\"}],\"role\":\"assistant\"}],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"default\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"json_schema\",\"description\":null,\"name\":\"response\",\"schema\":{\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"}},\"required\":[\"city\"],\"additionalProperties\":false},\"strict\":true},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":{\"input_tokens\":38,\"input_tokens_details\":{\"cache_write_tokens\":0,\"cached_tokens\":0},\"output_tokens\":6,\"output_tokens_details\":{\"reasoning_tokens\":0},\"total_tokens\":44},\"user\":null,\"metadata\":{}},\"sequence_number\":12}" ], "kind": "sse" }, @@ -2548,12 +2703,12 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8b20e3c2d81ed-IAD", + "cf-ray": "a3c7810e7db2c946-IAD", "connection": "keep-alive", "content-type": "text/event-stream; charset=utf-8", - "date": "Tue, 21 Jul 2026 08:04:33 GMT", + "date": "Thu, 17 Sep 2026 10:42:26 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "106", + "openai-processing-ms": "453", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -2561,7 +2716,13 @@ "strict-transport-security": "max-age=31536000; includeSubDomains; preload", "transfer-encoding": "chunked", "x-content-type-options": "nosniff", - "x-request-id": "req_9a2c6961c1324c0fa424a8b76faa8974" + "x-ratelimit-limit-requests": "30000", + "x-ratelimit-limit-tokens": "150000000", + "x-ratelimit-remaining-requests": "29999", + "x-ratelimit-remaining-tokens": "149999942", + "x-ratelimit-reset-requests": "2ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_f1ccfdae200d48ad8155918e11409292" }, "status": 200, "statusText": "OK" @@ -2571,7 +2732,7 @@ "callIndex": 9, "id": "3f08b53881e505ce", "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-07-21T08:04:36.561Z", + "recordedAt": "2026-09-17T10:42:27.026Z", "request": { "body": { "kind": "json", @@ -2607,11 +2768,11 @@ "billing": { "payer": "developer" }, - "completed_at": 1784621076, - "created_at": 1784621075, + "completed_at": 1789641746, + "created_at": 1789641746, "error": null, "frequency_penalty": 0, - "id": "resp_0187d099e886eba5006a5f28137be8819c900ab8210e3f1e49", + "id": "resp_0838b470c857edca006aabc412736087d2a4e06718f87d29d7", "incomplete_details": null, "instructions": null, "max_output_tokens": 24, @@ -2630,7 +2791,7 @@ "type": "output_text" } ], - "id": "msg_0187d099e886eba5006a5f28145670819c84348b849f16ae12", + "id": "msg_0838b470c857edca006aabc412d2f087d2aad5db1a622f5414", "role": "assistant", "status": "completed", "type": "message" @@ -2699,13 +2860,13 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8b2197bd381ed-IAD", + "cf-ray": "a3c78112eda0c946-IAD", "connection": "keep-alive", "content-encoding": "gzip", "content-type": "application/json", - "date": "Tue, 21 Jul 2026 08:04:36 GMT", + "date": "Thu, 17 Sep 2026 10:42:27 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "1079", + "openai-processing-ms": "562", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -2719,7 +2880,7 @@ "x-ratelimit-remaining-tokens": "149999955", "x-ratelimit-reset-requests": "2ms", "x-ratelimit-reset-tokens": "0s", - "x-request-id": "req_75b2e8e773a04c4e98ca8896a8c49a82" + "x-request-id": "req_7be8a3340df44aa6ab68709fe561eede" }, "status": 200, "statusText": "OK" @@ -2729,7 +2890,7 @@ "callIndex": 10, "id": "d026123ce87dfbca", "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-07-21T08:04:37.639Z", + "recordedAt": "2026-09-17T10:42:27.620Z", "request": { "body": { "kind": "json", @@ -2761,17 +2922,17 @@ "response": { "body": { "chunks": [ - "event: response.created\ndata: {\"type\":\"response.created\",\"response\":{\"id\":\"resp_0c4e11d5392812df006a5f2814df98819dab1465e5c2fdf319\",\"object\":\"response\",\"created_at\":1784621076,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":24,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":1,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":0}", - "event: response.in_progress\ndata: {\"type\":\"response.in_progress\",\"response\":{\"id\":\"resp_0c4e11d5392812df006a5f2814df98819dab1465e5c2fdf319\",\"object\":\"response\",\"created_at\":1784621076,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":24,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":1,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":1}", - "event: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"msg_0c4e11d5392812df006a5f281569dc819d957845e74053d90b\",\"type\":\"message\",\"status\":\"in_progress\",\"content\":[],\"role\":\"assistant\"},\"output_index\":0,\"sequence_number\":2}", - "event: response.content_part.added\ndata: {\"type\":\"response.content_part.added\",\"content_index\":0,\"item_id\":\"msg_0c4e11d5392812df006a5f281569dc819d957845e74053d90b\",\"output_index\":0,\"part\":{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"\"},\"sequence_number\":3}", - "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"STREAM\",\"item_id\":\"msg_0c4e11d5392812df006a5f281569dc819d957845e74053d90b\",\"logprobs\":[],\"obfuscation\":\"0FlHYRZirM\",\"output_index\":0,\"sequence_number\":4}", - "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\" HEL\",\"item_id\":\"msg_0c4e11d5392812df006a5f281569dc819d957845e74053d90b\",\"logprobs\":[],\"obfuscation\":\"0lQQFtbuZlt2\",\"output_index\":0,\"sequence_number\":5}", - "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"LO\",\"item_id\":\"msg_0c4e11d5392812df006a5f281569dc819d957845e74053d90b\",\"logprobs\":[],\"obfuscation\":\"Wn9a0fuoBjrlPB\",\"output_index\":0,\"sequence_number\":6}", - "event: response.output_text.done\ndata: {\"type\":\"response.output_text.done\",\"content_index\":0,\"item_id\":\"msg_0c4e11d5392812df006a5f281569dc819d957845e74053d90b\",\"logprobs\":[],\"output_index\":0,\"sequence_number\":7,\"text\":\"STREAM HELLO\"}", - "event: response.content_part.done\ndata: {\"type\":\"response.content_part.done\",\"content_index\":0,\"item_id\":\"msg_0c4e11d5392812df006a5f281569dc819d957845e74053d90b\",\"output_index\":0,\"part\":{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"STREAM HELLO\"},\"sequence_number\":8}", - "event: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"msg_0c4e11d5392812df006a5f281569dc819d957845e74053d90b\",\"type\":\"message\",\"status\":\"completed\",\"content\":[{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"STREAM HELLO\"}],\"role\":\"assistant\"},\"output_index\":0,\"sequence_number\":9}", - "event: response.completed\ndata: {\"type\":\"response.completed\",\"response\":{\"id\":\"resp_0c4e11d5392812df006a5f2814df98819dab1465e5c2fdf319\",\"object\":\"response\",\"created_at\":1784621076,\"status\":\"completed\",\"background\":false,\"completed_at\":1784621077,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":24,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[{\"id\":\"msg_0c4e11d5392812df006a5f281569dc819d957845e74053d90b\",\"type\":\"message\",\"status\":\"completed\",\"content\":[{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"STREAM HELLO\"}],\"role\":\"assistant\"}],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"default\",\"store\":true,\"temperature\":1,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":{\"input_tokens\":27,\"input_tokens_details\":{\"cache_write_tokens\":0,\"cached_tokens\":0},\"output_tokens\":4,\"output_tokens_details\":{\"reasoning_tokens\":0},\"total_tokens\":31},\"user\":null,\"metadata\":{}},\"sequence_number\":10}" + "event: response.created\ndata: {\"type\":\"response.created\",\"response\":{\"id\":\"resp_038c6ae8832cd510006aabc4131ce087d2aab8e74fd815d725\",\"object\":\"response\",\"created_at\":1789641747,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":24,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":1,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":0}", + "event: response.in_progress\ndata: {\"type\":\"response.in_progress\",\"response\":{\"id\":\"resp_038c6ae8832cd510006aabc4131ce087d2aab8e74fd815d725\",\"object\":\"response\",\"created_at\":1789641747,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":24,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":1,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":1}", + "event: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"msg_038c6ae8832cd510006aabc4136e6487d29ed12686f460e3c0\",\"type\":\"message\",\"status\":\"in_progress\",\"content\":[],\"role\":\"assistant\"},\"output_index\":0,\"sequence_number\":2}", + "event: response.content_part.added\ndata: {\"type\":\"response.content_part.added\",\"content_index\":0,\"item_id\":\"msg_038c6ae8832cd510006aabc4136e6487d29ed12686f460e3c0\",\"output_index\":0,\"part\":{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"\"},\"sequence_number\":3}", + "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"STREAM\",\"item_id\":\"msg_038c6ae8832cd510006aabc4136e6487d29ed12686f460e3c0\",\"logprobs\":[],\"obfuscation\":\"ZDlxsapcRB\",\"output_index\":0,\"sequence_number\":4}", + "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\" HEL\",\"item_id\":\"msg_038c6ae8832cd510006aabc4136e6487d29ed12686f460e3c0\",\"logprobs\":[],\"obfuscation\":\"hOx4pZC61qOs\",\"output_index\":0,\"sequence_number\":5}", + "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"LO\",\"item_id\":\"msg_038c6ae8832cd510006aabc4136e6487d29ed12686f460e3c0\",\"logprobs\":[],\"obfuscation\":\"U8yvl5ubtFhJXt\",\"output_index\":0,\"sequence_number\":6}", + "event: response.output_text.done\ndata: {\"type\":\"response.output_text.done\",\"content_index\":0,\"item_id\":\"msg_038c6ae8832cd510006aabc4136e6487d29ed12686f460e3c0\",\"logprobs\":[],\"output_index\":0,\"sequence_number\":7,\"text\":\"STREAM HELLO\"}", + "event: response.content_part.done\ndata: {\"type\":\"response.content_part.done\",\"content_index\":0,\"item_id\":\"msg_038c6ae8832cd510006aabc4136e6487d29ed12686f460e3c0\",\"output_index\":0,\"part\":{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"STREAM HELLO\"},\"sequence_number\":8}", + "event: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"msg_038c6ae8832cd510006aabc4136e6487d29ed12686f460e3c0\",\"type\":\"message\",\"status\":\"completed\",\"content\":[{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"STREAM HELLO\"}],\"role\":\"assistant\"},\"output_index\":0,\"sequence_number\":9}", + "event: response.completed\ndata: {\"type\":\"response.completed\",\"response\":{\"id\":\"resp_038c6ae8832cd510006aabc4131ce087d2aab8e74fd815d725\",\"object\":\"response\",\"created_at\":1789641747,\"status\":\"completed\",\"background\":false,\"completed_at\":1789641747,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":24,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[{\"id\":\"msg_038c6ae8832cd510006aabc4136e6487d29ed12686f460e3c0\",\"type\":\"message\",\"status\":\"completed\",\"content\":[{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"STREAM HELLO\"}],\"role\":\"assistant\"}],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"default\",\"store\":true,\"temperature\":1,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":{\"input_tokens\":27,\"input_tokens_details\":{\"cache_write_tokens\":0,\"cached_tokens\":0},\"output_tokens\":4,\"output_tokens_details\":{\"reasoning_tokens\":0},\"total_tokens\":31},\"user\":null,\"metadata\":{}},\"sequence_number\":10}" ], "kind": "sse" }, @@ -2779,12 +2940,12 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8b220885a81ed-IAD", + "cf-ray": "a3c781170da3c946-IAD", "connection": "keep-alive", "content-type": "text/event-stream; charset=utf-8", - "date": "Tue, 21 Jul 2026 08:04:37 GMT", + "date": "Thu, 17 Sep 2026 10:42:27 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "439", + "openai-processing-ms": "342", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -2792,7 +2953,13 @@ "strict-transport-security": "max-age=31536000; includeSubDomains; preload", "transfer-encoding": "chunked", "x-content-type-options": "nosniff", - "x-request-id": "req_b8bf2e688f6243eeba5c2a4b10431846" + "x-ratelimit-limit-requests": "30000", + "x-ratelimit-limit-tokens": "150000000", + "x-ratelimit-remaining-requests": "29999", + "x-ratelimit-remaining-tokens": "149999952", + "x-ratelimit-reset-requests": "2ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_2eb4567d38db4cba9752ad874a69ee74" }, "status": 200, "statusText": "OK" @@ -2802,7 +2969,7 @@ "callIndex": 11, "id": "34ad62d7c96775e7", "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-07-21T08:04:39.041Z", + "recordedAt": "2026-09-17T10:42:28.579Z", "request": { "body": { "kind": "json", @@ -2902,11 +3069,11 @@ "billing": { "payer": "developer" }, - "completed_at": 1784621078, - "created_at": 1784621077, + "completed_at": 1789641748, + "created_at": 1789641747, "error": null, "frequency_penalty": 0, - "id": "resp_03e7cc3a04c36e1a006a5f2815b44881a19f6e6f7ab8fb009c", + "id": "resp_099a04e639fe46f9006aabc413b24887d29f45b34b73c1eb19", "incomplete_details": null, "instructions": null, "max_output_tokens": 256, @@ -2918,16 +3085,16 @@ "output": [ { "arguments": "{\"item\":\"laptop\",\"store\":\"StoreA\"}", - "call_id": "call_Sbvn5IpyZQ87RYFs54LTQOsT", - "id": "fc_03e7cc3a04c36e1a006a5f2816e51881a1918a87d07e38d225", + "call_id": "call_QEMX7d4XI6CMz6L9xvhJ8nON", + "id": "fc_099a04e639fe46f9006aabc41467dc87d2860e5178d826e1a5", "name": "get_store_price", "status": "completed", "type": "function_call" }, { "arguments": "{\"item\":\"laptop\",\"store\":\"StoreB\"}", - "call_id": "call_hnJAlz8hGRJ4087mPHkHomzU", - "id": "fc_03e7cc3a04c36e1a006a5f2816e52c81a18374619829b9c65f", + "call_id": "call_hMTvb4g3We2WoNGU9kaIMKXO", + "id": "fc_099a04e639fe46f9006aabc41467ec87d2993a799fcc1b45e9", "name": "get_store_price", "status": "completed", "type": "function_call" @@ -3043,13 +3210,13 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8b2275cce81ed-IAD", + "cf-ray": "a3c7811accacc946-IAD", "connection": "keep-alive", "content-encoding": "gzip", "content-type": "application/json", - "date": "Tue, 21 Jul 2026 08:04:39 GMT", + "date": "Thu, 17 Sep 2026 10:42:28 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "1339", + "openai-processing-ms": "854", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -3063,7 +3230,7 @@ "x-ratelimit-remaining-tokens": "149999610", "x-ratelimit-reset-requests": "2ms", "x-ratelimit-reset-tokens": "0s", - "x-request-id": "req_011b18d1f0304e07aa7ecd26e882a51b" + "x-request-id": "req_6ed7c05c29cc4387bbc8794baedf7ed8" }, "status": 200, "statusText": "OK" @@ -3071,9 +3238,9 @@ }, { "callIndex": 12, - "id": "391a88c0949ca46c", + "id": "57f3678501877210", "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-07-21T08:04:41.075Z", + "recordedAt": "2026-09-17T10:42:29.410Z", "request": { "body": { "kind": "json", @@ -3112,23 +3279,23 @@ }, { "arguments": "{\"item\":\"laptop\",\"store\":\"StoreA\"}", - "call_id": "call_Sbvn5IpyZQ87RYFs54LTQOsT", + "call_id": "call_QEMX7d4XI6CMz6L9xvhJ8nON", "name": "get_store_price", "type": "function_call" }, { "arguments": "{\"item\":\"laptop\",\"store\":\"StoreB\"}", - "call_id": "call_hnJAlz8hGRJ4087mPHkHomzU", + "call_id": "call_hMTvb4g3We2WoNGU9kaIMKXO", "name": "get_store_price", "type": "function_call" }, { - "call_id": "call_Sbvn5IpyZQ87RYFs54LTQOsT", + "call_id": "call_QEMX7d4XI6CMz6L9xvhJ8nON", "output": "{\"item\":\"laptop\",\"price\":999,\"store\":\"StoreA\"}", "type": "function_call_output" }, { - "call_id": "call_hnJAlz8hGRJ4087mPHkHomzU", + "call_id": "call_hMTvb4g3We2WoNGU9kaIMKXO", "output": "{\"item\":\"laptop\",\"price\":1099,\"store\":\"StoreB\"}", "type": "function_call_output" } @@ -3195,11 +3362,11 @@ "billing": { "payer": "developer" }, - "completed_at": 1784621080, - "created_at": 1784621079, + "completed_at": 1789641749, + "created_at": 1789641748, "error": null, "frequency_penalty": 0, - "id": "resp_03e7cc3a04c36e1a006a5f28174d0c81a196ec72c9be153eb6", + "id": "resp_0529c71fb6b55877006aabc414aa9087d29eef93170680b3fd", "incomplete_details": null, "instructions": null, "max_output_tokens": 256, @@ -3211,8 +3378,8 @@ "output": [ { "arguments": "{\"discountCode\":\"SAVE20\",\"total\":999}", - "call_id": "call_vdhe3VvCry0zQD8sqTnxwSu9", - "id": "fc_03e7cc3a04c36e1a006a5f2818727c81a1bd86af2d77f7f1c4", + "call_id": "call_hPOXVOVq7Tmodi0urJ1FoWS6", + "id": "fc_0529c71fb6b55877006aabc41526c487d293540782ce959e14", "name": "apply_discount", "status": "completed", "type": "function_call" @@ -3328,13 +3495,13 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8b2300b6f81ed-IAD", + "cf-ray": "a3c78120bf74c946-IAD", "connection": "keep-alive", "content-encoding": "gzip", "content-type": "application/json", - "date": "Tue, 21 Jul 2026 08:04:41 GMT", + "date": "Thu, 17 Sep 2026 10:42:29 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "1947", + "openai-processing-ms": "739", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -3348,7 +3515,7 @@ "x-ratelimit-remaining-tokens": "149999522", "x-ratelimit-reset-requests": "2ms", "x-ratelimit-reset-tokens": "0s", - "x-request-id": "req_0199866052cf470693456494505431b5" + "x-request-id": "req_f88537dbbe33459a8e9d1d835be326e1" }, "status": 200, "statusText": "OK" @@ -3356,9 +3523,9 @@ }, { "callIndex": 13, - "id": "e5e7abe751025f13", + "id": "5b7c8e75e1916969", "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-07-21T08:04:43.001Z", + "recordedAt": "2026-09-17T10:42:31.334Z", "request": { "body": { "kind": "json", @@ -3397,34 +3564,34 @@ }, { "arguments": "{\"item\":\"laptop\",\"store\":\"StoreA\"}", - "call_id": "call_Sbvn5IpyZQ87RYFs54LTQOsT", + "call_id": "call_QEMX7d4XI6CMz6L9xvhJ8nON", "name": "get_store_price", "type": "function_call" }, { "arguments": "{\"item\":\"laptop\",\"store\":\"StoreB\"}", - "call_id": "call_hnJAlz8hGRJ4087mPHkHomzU", + "call_id": "call_hMTvb4g3We2WoNGU9kaIMKXO", "name": "get_store_price", "type": "function_call" }, { - "call_id": "call_Sbvn5IpyZQ87RYFs54LTQOsT", + "call_id": "call_QEMX7d4XI6CMz6L9xvhJ8nON", "output": "{\"item\":\"laptop\",\"price\":999,\"store\":\"StoreA\"}", "type": "function_call_output" }, { - "call_id": "call_hnJAlz8hGRJ4087mPHkHomzU", + "call_id": "call_hMTvb4g3We2WoNGU9kaIMKXO", "output": "{\"item\":\"laptop\",\"price\":1099,\"store\":\"StoreB\"}", "type": "function_call_output" }, { "arguments": "{\"discountCode\":\"SAVE20\",\"total\":999}", - "call_id": "call_vdhe3VvCry0zQD8sqTnxwSu9", + "call_id": "call_hPOXVOVq7Tmodi0urJ1FoWS6", "name": "apply_discount", "type": "function_call" }, { - "call_id": "call_vdhe3VvCry0zQD8sqTnxwSu9", + "call_id": "call_hPOXVOVq7Tmodi0urJ1FoWS6", "output": "{\"discountCode\":\"SAVE20\",\"finalTotal\":799.2,\"originalTotal\":999}", "type": "function_call_output" } @@ -3491,11 +3658,11 @@ "billing": { "payer": "developer" }, - "completed_at": 1784621082, - "created_at": 1784621081, + "completed_at": 1789641750, + "created_at": 1789641749, "error": null, "frequency_penalty": 0, - "id": "resp_03e7cc3a04c36e1a006a5f2819407081a1a3b652bfc67ced3b", + "id": "resp_08c88c39c3377071006aabc415831487d29fc5527961b17b54", "incomplete_details": null, "instructions": null, "max_output_tokens": 256, @@ -3514,7 +3681,7 @@ "type": "output_text" } ], - "id": "msg_03e7cc3a04c36e1a006a5f2819ef0c81a18eae394da74b07f8", + "id": "msg_08c88c39c3377071006aabc415fca087d29a987c88f016f4db", "role": "assistant", "status": "completed", "type": "message" @@ -3612,7 +3779,7 @@ "top_p": 1, "truncation": "disabled", "usage": { - "input_tokens": 308, + "input_tokens": 305, "input_tokens_details": { "cache_write_tokens": 0, "cached_tokens": 0 @@ -3621,7 +3788,7 @@ "output_tokens_details": { "reasoning_tokens": 0 }, - "total_tokens": 370 + "total_tokens": 367 }, "user": null } @@ -3630,13 +3797,13 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8b23cbd5981ed-IAD", + "cf-ray": "a3c78125e910c946-IAD", "connection": "keep-alive", "content-encoding": "gzip", "content-type": "application/json", - "date": "Tue, 21 Jul 2026 08:04:42 GMT", + "date": "Thu, 17 Sep 2026 10:42:31 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "1867", + "openai-processing-ms": "1794", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -3647,10 +3814,10 @@ "x-ratelimit-limit-requests": "30000", "x-ratelimit-limit-tokens": "150000000", "x-ratelimit-remaining-requests": "29999", - "x-ratelimit-remaining-tokens": "149999475", + "x-ratelimit-remaining-tokens": "149999477", "x-ratelimit-reset-requests": "2ms", "x-ratelimit-reset-tokens": "0s", - "x-request-id": "req_d4349b4c19654e04ada901f4233222c3" + "x-request-id": "req_5e04276e7c5443a9b68e4d72fa456338" }, "status": 200, "statusText": "OK" diff --git a/e2e/scenarios/ai-sdk-instrumentation/__cassettes__/ai-sdk-v7-latest.cassette.blobs/92f733cbd438775e360279f4737e012522d5b7d515c6311656914ec416d3fce8.bin b/e2e/scenarios/ai-sdk-instrumentation/__cassettes__/ai-sdk-v7.cassette.blobs/92f733cbd438775e360279f4737e012522d5b7d515c6311656914ec416d3fce8.bin similarity index 100% rename from e2e/scenarios/ai-sdk-instrumentation/__cassettes__/ai-sdk-v7-latest.cassette.blobs/92f733cbd438775e360279f4737e012522d5b7d515c6311656914ec416d3fce8.bin rename to e2e/scenarios/ai-sdk-instrumentation/__cassettes__/ai-sdk-v7.cassette.blobs/92f733cbd438775e360279f4737e012522d5b7d515c6311656914ec416d3fce8.bin diff --git a/e2e/scenarios/ai-sdk-instrumentation/__cassettes__/ai-sdk-v7.cassette.json b/e2e/scenarios/ai-sdk-instrumentation/__cassettes__/ai-sdk-v7.cassette.json index 4f104ac6c..2736fb648 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/__cassettes__/ai-sdk-v7.cassette.json +++ b/e2e/scenarios/ai-sdk-instrumentation/__cassettes__/ai-sdk-v7.cassette.json @@ -1,10 +1,153 @@ { "entries": [ + { + "callIndex": 0, + "id": "3bd9e1df6d2ae887", + "matchKey": "POST api.typesafe.ai/v1/systemone", + "recordedAt": "2026-09-17T10:41:06.459Z", + "request": { + "body": { + "kind": "json", + "value": { + "model": "jev-latest", + "questions": { + "category": { + "criteria": { + "billing": "Payments and refunds", + "technical": "Software problems" + }, + "instructions": "Which team should handle this request?", + "type": "choice" + }, + "duplicate": { + "instructions": "Does the customer report a duplicate charge?", + "type": "noul" + }, + "urgency": { + "criteria": ["Low", "Medium", "High"], + "instructions": "How urgent is this request?", + "type": "score" + } + }, + "state": { + "message": "I was charged twice for my subscription. Please refund the duplicate charge." + } + } + }, + "headers": {}, + "method": "POST", + "url": "https://api.typesafe.ai/v1/systemone" + }, + "response": { + "body": { + "kind": "json", + "value": { + "answers": { + "category": { + "choice": "billing", + "confidence": 1, + "probabilities": { + "billing": 1, + "technical": 0 + }, + "type": "choice" + }, + "duplicate": { + "noul": 0.99, + "type": "noul" + }, + "urgency": { + "confidence": 0.76, + "legend": { + "0": "Low", + "1": "Medium", + "2": "High" + }, + "probabilities": { + "0": 0.03, + "1": 0.84, + "2": 0.13 + }, + "score": 1.1, + "type": "score" + } + }, + "model": "jev-1.13.0", + "usage": { + "input_tokens": 382, + "output_tokens": 62 + } + } + }, + "headers": { + "content-length": "382", + "content-type": "application/json", + "date": "Thu, 17 Sep 2026 10:41:05 GMT", + "server": "istio-envoy", + "x-envoy-upstream-service-time": "76", + "x-typesafe-request-id": "req_01a0aef4af337e09806f839175da8118" + }, + "status": 200, + "statusText": "OK" + } + }, + { + "callIndex": 1, + "id": "477ce75c8278a6a0", + "matchKey": "POST api.typesafe.ai/v1/systemone", + "recordedAt": "2026-09-17T10:41:06.615Z", + "request": { + "body": { + "kind": "json", + "value": { + "model": "jev-latest", + "questions": { + "positive": { + "instructions": "Was the delivery successful?", + "type": "noul" + } + }, + "state": "The package arrived intact and on time." + } + }, + "headers": {}, + "method": "POST", + "url": "https://api.typesafe.ai/v1/systemone" + }, + "response": { + "body": { + "kind": "json", + "value": { + "answers": { + "positive": { + "noul": 0.98, + "type": "noul" + } + }, + "model": "jev-1.13.0", + "usage": { + "input_tokens": 279, + "output_tokens": 20 + } + } + }, + "headers": { + "content-length": "121", + "content-type": "application/json", + "date": "Thu, 17 Sep 2026 10:41:06 GMT", + "server": "istio-envoy", + "x-envoy-upstream-service-time": "84", + "x-typesafe-request-id": "req_01a0aef4afd27f5e86397a4d774c274a" + }, + "status": 200, + "statusText": "OK" + } + }, { "callIndex": 0, "id": "9aa262365558ebc2", "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-07-21T08:03:46.237Z", + "recordedAt": "2026-09-17T10:41:08.300Z", "request": { "body": { "kind": "json", @@ -37,11 +180,11 @@ "billing": { "payer": "developer" }, - "completed_at": 1784621026, - "created_at": 1784621025, + "completed_at": 1789641668, + "created_at": 1789641666, "error": null, "frequency_penalty": 0, - "id": "resp_07c409bfa4f24784006a5f27e18b1881a3875c5c744e40a317", + "id": "resp_07789e3e7717e4a4006aabc3c2b3d487d2a8a2ab14648c7357", "incomplete_details": null, "instructions": null, "max_output_tokens": 24, @@ -60,7 +203,7 @@ "type": "output_text" } ], - "id": "msg_07c409bfa4f24784006a5f27e2132881a3bf55193e99621e2f", + "id": "msg_07789e3e7717e4a4006aabc3c4094c87d2b71db7789ed50465", "role": "assistant", "status": "completed", "type": "message" @@ -129,13 +272,13 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8b0e1583881ed-IAD", + "cf-ray": "a3c77f208c108970-IAD", "connection": "keep-alive", "content-encoding": "gzip", "content-type": "application/json", - "date": "Tue, 21 Jul 2026 08:03:46 GMT", + "date": "Thu, 17 Sep 2026 10:41:08 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "698", + "openai-processing-ms": "1579", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -146,10 +289,10 @@ "x-ratelimit-limit-requests": "30000", "x-ratelimit-limit-tokens": "150000000", "x-ratelimit-remaining-requests": "29999", - "x-ratelimit-remaining-tokens": "149999962", + "x-ratelimit-remaining-tokens": "149999965", "x-ratelimit-reset-requests": "2ms", "x-ratelimit-reset-tokens": "0s", - "x-request-id": "req_9d498b0ca19449368f9d74c69f09aeaf" + "x-request-id": "req_52b1de3627e2450ea2cbb0a405823464" }, "status": 200, "statusText": "OK" @@ -159,7 +302,7 @@ "callIndex": 1, "id": "9e077c56377ca81c", "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-07-21T08:03:46.923Z", + "recordedAt": "2026-09-17T10:41:08.938Z", "request": { "body": { "kind": "json", @@ -210,11 +353,11 @@ "billing": { "payer": "developer" }, - "completed_at": 1784621026, - "created_at": 1784621026, + "completed_at": 1789641668, + "created_at": 1789641668, "error": null, "frequency_penalty": 0, - "id": "resp_03091d6b80b06ae4006a5f27e24dd481a0b86f97c8103058fe", + "id": "resp_0e707da66f441ad6006aabc3c462bc87d2aca0bd8ffe47d52c", "incomplete_details": null, "instructions": null, "max_output_tokens": 32, @@ -233,7 +376,7 @@ "type": "output_text" } ], - "id": "msg_03091d6b80b06ae4006a5f27e2b29481a0b6fa124fdc6c21e2", + "id": "msg_0e707da66f441ad6006aabc3c4bdac87d2a58452ce928e7a2b", "role": "assistant", "status": "completed", "type": "message" @@ -315,13 +458,13 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8b0e62b3681ed-IAD", + "cf-ray": "a3c77f2b1b708970-IAD", "connection": "keep-alive", "content-encoding": "gzip", "content-type": "application/json", - "date": "Tue, 21 Jul 2026 08:03:46 GMT", + "date": "Thu, 17 Sep 2026 10:41:08 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "622", + "openai-processing-ms": "533", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -335,7 +478,7 @@ "x-ratelimit-remaining-tokens": "149999935", "x-ratelimit-reset-requests": "2ms", "x-ratelimit-reset-tokens": "0s", - "x-request-id": "req_6970a7f3d38a4065923d521144bc4b40" + "x-request-id": "req_d76e127b1c014b08a04e130901286a4e" }, "status": 200, "statusText": "OK" @@ -345,7 +488,7 @@ "callIndex": 2, "id": "bdbf85bb8f9015c8", "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-07-21T08:03:48.498Z", + "recordedAt": "2026-09-17T10:41:09.791Z", "request": { "body": { "kind": "json", @@ -374,20 +517,20 @@ "response": { "body": { "chunks": [ - "event: response.created\ndata: {\"type\":\"response.created\",\"response\":{\"id\":\"resp_0ff9f4031479740b006a5f27e354b48192b4118225ad8cba3a\",\"object\":\"response\",\"created_at\":1784621027,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":32,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":0}", - "event: response.in_progress\ndata: {\"type\":\"response.in_progress\",\"response\":{\"id\":\"resp_0ff9f4031479740b006a5f27e354b48192b4118225ad8cba3a\",\"object\":\"response\",\"created_at\":1784621027,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":32,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":1}", - "event: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"msg_0ff9f4031479740b006a5f27e3fa648192b550e235d5be8f95\",\"type\":\"message\",\"status\":\"in_progress\",\"content\":[],\"role\":\"assistant\"},\"output_index\":0,\"sequence_number\":2}", - "event: response.content_part.added\ndata: {\"type\":\"response.content_part.added\",\"content_index\":0,\"item_id\":\"msg_0ff9f4031479740b006a5f27e3fa648192b550e235d5be8f95\",\"output_index\":0,\"part\":{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"\"},\"sequence_number\":3}", - "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"One\",\"item_id\":\"msg_0ff9f4031479740b006a5f27e3fa648192b550e235d5be8f95\",\"logprobs\":[],\"obfuscation\":\"LnwWW6rF0FbTG\",\"output_index\":0,\"sequence_number\":4}", - "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\",\",\"item_id\":\"msg_0ff9f4031479740b006a5f27e3fa648192b550e235d5be8f95\",\"logprobs\":[],\"obfuscation\":\"YxajuKmGIyH8EMZ\",\"output_index\":0,\"sequence_number\":5}", - "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\" two\",\"item_id\":\"msg_0ff9f4031479740b006a5f27e3fa648192b550e235d5be8f95\",\"logprobs\":[],\"obfuscation\":\"xvmvrFB8mIje\",\"output_index\":0,\"sequence_number\":6}", - "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\",\",\"item_id\":\"msg_0ff9f4031479740b006a5f27e3fa648192b550e235d5be8f95\",\"logprobs\":[],\"obfuscation\":\"emfm8hpw99UDabN\",\"output_index\":0,\"sequence_number\":7}", - "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\" three\",\"item_id\":\"msg_0ff9f4031479740b006a5f27e3fa648192b550e235d5be8f95\",\"logprobs\":[],\"obfuscation\":\"HvJmRblJXA\",\"output_index\":0,\"sequence_number\":8}", - "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\".\",\"item_id\":\"msg_0ff9f4031479740b006a5f27e3fa648192b550e235d5be8f95\",\"logprobs\":[],\"obfuscation\":\"IIxNBIbrN7Ueg3s\",\"output_index\":0,\"sequence_number\":9}", - "event: response.output_text.done\ndata: {\"type\":\"response.output_text.done\",\"content_index\":0,\"item_id\":\"msg_0ff9f4031479740b006a5f27e3fa648192b550e235d5be8f95\",\"logprobs\":[],\"output_index\":0,\"sequence_number\":10,\"text\":\"One, two, three.\"}", - "event: response.content_part.done\ndata: {\"type\":\"response.content_part.done\",\"content_index\":0,\"item_id\":\"msg_0ff9f4031479740b006a5f27e3fa648192b550e235d5be8f95\",\"output_index\":0,\"part\":{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"One, two, three.\"},\"sequence_number\":11}", - "event: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"msg_0ff9f4031479740b006a5f27e3fa648192b550e235d5be8f95\",\"type\":\"message\",\"status\":\"completed\",\"content\":[{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"One, two, three.\"}],\"role\":\"assistant\"},\"output_index\":0,\"sequence_number\":12}", - "event: response.completed\ndata: {\"type\":\"response.completed\",\"response\":{\"id\":\"resp_0ff9f4031479740b006a5f27e354b48192b4118225ad8cba3a\",\"object\":\"response\",\"created_at\":1784621027,\"status\":\"completed\",\"background\":false,\"completed_at\":1784621028,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":32,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[{\"id\":\"msg_0ff9f4031479740b006a5f27e3fa648192b550e235d5be8f95\",\"type\":\"message\",\"status\":\"completed\",\"content\":[{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"One, two, three.\"}],\"role\":\"assistant\"}],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"default\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":{\"input_tokens\":22,\"input_tokens_details\":{\"cache_write_tokens\":0,\"cached_tokens\":0},\"output_tokens\":7,\"output_tokens_details\":{\"reasoning_tokens\":0},\"total_tokens\":29},\"user\":null,\"metadata\":{}},\"sequence_number\":13}" + "event: response.created\ndata: {\"type\":\"response.created\",\"response\":{\"id\":\"resp_042fb70d8bbdad24006aabc3c505a487d280bbec9e638eb752\",\"object\":\"response\",\"created_at\":1789641669,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":32,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":0}", + "event: response.in_progress\ndata: {\"type\":\"response.in_progress\",\"response\":{\"id\":\"resp_042fb70d8bbdad24006aabc3c505a487d280bbec9e638eb752\",\"object\":\"response\",\"created_at\":1789641669,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":32,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":1}", + "event: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"msg_042fb70d8bbdad24006aabc3c5785487d2a91e065831dd9d9b\",\"type\":\"message\",\"status\":\"in_progress\",\"content\":[],\"role\":\"assistant\"},\"output_index\":0,\"sequence_number\":2}", + "event: response.content_part.added\ndata: {\"type\":\"response.content_part.added\",\"content_index\":0,\"item_id\":\"msg_042fb70d8bbdad24006aabc3c5785487d2a91e065831dd9d9b\",\"output_index\":0,\"part\":{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"\"},\"sequence_number\":3}", + "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"One\",\"item_id\":\"msg_042fb70d8bbdad24006aabc3c5785487d2a91e065831dd9d9b\",\"logprobs\":[],\"obfuscation\":\"3lUQJPgZ0xRLK\",\"output_index\":0,\"sequence_number\":4}", + "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\",\",\"item_id\":\"msg_042fb70d8bbdad24006aabc3c5785487d2a91e065831dd9d9b\",\"logprobs\":[],\"obfuscation\":\"dY3z6uLSfASAyxU\",\"output_index\":0,\"sequence_number\":5}", + "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\" two\",\"item_id\":\"msg_042fb70d8bbdad24006aabc3c5785487d2a91e065831dd9d9b\",\"logprobs\":[],\"obfuscation\":\"YchnSeSi75dL\",\"output_index\":0,\"sequence_number\":6}", + "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\",\",\"item_id\":\"msg_042fb70d8bbdad24006aabc3c5785487d2a91e065831dd9d9b\",\"logprobs\":[],\"obfuscation\":\"upYS7bel0YxhHkV\",\"output_index\":0,\"sequence_number\":7}", + "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\" three\",\"item_id\":\"msg_042fb70d8bbdad24006aabc3c5785487d2a91e065831dd9d9b\",\"logprobs\":[],\"obfuscation\":\"sKPAUcEtsh\",\"output_index\":0,\"sequence_number\":8}", + "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\".\",\"item_id\":\"msg_042fb70d8bbdad24006aabc3c5785487d2a91e065831dd9d9b\",\"logprobs\":[],\"obfuscation\":\"UTz1GLinsK3zDFc\",\"output_index\":0,\"sequence_number\":9}", + "event: response.output_text.done\ndata: {\"type\":\"response.output_text.done\",\"content_index\":0,\"item_id\":\"msg_042fb70d8bbdad24006aabc3c5785487d2a91e065831dd9d9b\",\"logprobs\":[],\"output_index\":0,\"sequence_number\":10,\"text\":\"One, two, three.\"}", + "event: response.content_part.done\ndata: {\"type\":\"response.content_part.done\",\"content_index\":0,\"item_id\":\"msg_042fb70d8bbdad24006aabc3c5785487d2a91e065831dd9d9b\",\"output_index\":0,\"part\":{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"One, two, three.\"},\"sequence_number\":11}", + "event: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"msg_042fb70d8bbdad24006aabc3c5785487d2a91e065831dd9d9b\",\"type\":\"message\",\"status\":\"completed\",\"content\":[{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"One, two, three.\"}],\"role\":\"assistant\"},\"output_index\":0,\"sequence_number\":12}", + "event: response.completed\ndata: {\"type\":\"response.completed\",\"response\":{\"id\":\"resp_042fb70d8bbdad24006aabc3c505a487d280bbec9e638eb752\",\"object\":\"response\",\"created_at\":1789641669,\"status\":\"completed\",\"background\":false,\"completed_at\":1789641669,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":32,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[{\"id\":\"msg_042fb70d8bbdad24006aabc3c5785487d2a91e065831dd9d9b\",\"type\":\"message\",\"status\":\"completed\",\"content\":[{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"One, two, three.\"}],\"role\":\"assistant\"}],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"default\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":{\"input_tokens\":22,\"input_tokens_details\":{\"cache_write_tokens\":0,\"cached_tokens\":0},\"output_tokens\":7,\"output_tokens_details\":{\"reasoning_tokens\":0},\"total_tokens\":29},\"user\":null,\"metadata\":{}},\"sequence_number\":13}" ], "kind": "sse" }, @@ -395,12 +538,12 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8b0ea5e0281ed-IAD", + "cf-ray": "a3c77f2f0f108970-IAD", "connection": "keep-alive", "content-type": "text/event-stream; charset=utf-8", - "date": "Tue, 21 Jul 2026 08:03:47 GMT", + "date": "Thu, 17 Sep 2026 10:41:09 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "599", + "openai-processing-ms": "500", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -408,7 +551,13 @@ "strict-transport-security": "max-age=31536000; includeSubDomains; preload", "transfer-encoding": "chunked", "x-content-type-options": "nosniff", - "x-request-id": "req_287d0203976948afb2874e8d815dab3a" + "x-ratelimit-limit-requests": "30000", + "x-ratelimit-limit-tokens": "150000000", + "x-ratelimit-remaining-requests": "29999", + "x-ratelimit-remaining-tokens": "149999960", + "x-ratelimit-reset-requests": "2ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_5d9086d9b4b74b78b4a3934063bf91cf" }, "status": 200, "statusText": "OK" @@ -418,7 +567,7 @@ "callIndex": 0, "id": "49a95bf2b3466013", "matchKey": "POST api.openai.com/v1/embeddings", - "recordedAt": "2026-07-21T08:03:48.760Z", + "recordedAt": "2026-09-17T10:41:10.005Z", "request": { "body": { "kind": "json", @@ -1009,13 +1158,13 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8b0f44d2881ed-IAD", + "cf-ray": "a3c77f347ee78970-IAD", "connection": "keep-alive", "content-encoding": "gzip", "content-type": "application/json", - "date": "Tue, 21 Jul 2026 08:03:48 GMT", + "date": "Thu, 17 Sep 2026 10:41:10 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "151", + "openai-processing-ms": "113", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -1030,7 +1179,7 @@ "x-ratelimit-remaining-tokens": "9999993", "x-ratelimit-reset-requests": "6ms", "x-ratelimit-reset-tokens": "0s", - "x-request-id": "req_92051347d29c4c36a84847a3f46afb99" + "x-request-id": "req_64c1866397bb487b925304c8477d828a" }, "status": 200, "statusText": "OK" @@ -1040,7 +1189,7 @@ "callIndex": 1, "id": "fcc3d17c88f1552b", "matchKey": "POST api.openai.com/v1/embeddings", - "recordedAt": "2026-07-21T08:03:48.898Z", + "recordedAt": "2026-09-17T10:41:10.237Z", "request": { "body": { "kind": "json", @@ -1062,20 +1211,20 @@ "body": { "contentType": "application/json", "kind": "binary", - "path": "ai-sdk-v7.cassette.blobs/9a14a7a518e93b520c904dd30764c1ad41fd7d47fe63606d39e6da1e58f3a0bc.bin", - "sha256": "9a14a7a518e93b520c904dd30764c1ad41fd7d47fe63606d39e6da1e58f3a0bc" + "path": "ai-sdk-v7.cassette.blobs/92f733cbd438775e360279f4737e012522d5b7d515c6311656914ec416d3fce8.bin", + "sha256": "92f733cbd438775e360279f4737e012522d5b7d515c6311656914ec416d3fce8" }, "headers": { "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8b0f5ce1a81ed-IAD", + "cf-ray": "a3c77f35ab0c8970-IAD", "connection": "keep-alive", "content-encoding": "gzip", "content-type": "application/json", - "date": "Tue, 21 Jul 2026 08:03:48 GMT", + "date": "Thu, 17 Sep 2026 10:41:10 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "66", + "openai-processing-ms": "146", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -1090,7 +1239,76 @@ "x-ratelimit-remaining-tokens": "9999985", "x-ratelimit-reset-requests": "6ms", "x-ratelimit-reset-tokens": "0s", - "x-request-id": "req_baf14eb71bc040aeab739c38e510570d" + "x-request-id": "req_c6006ee97ed44f869e2d773c066dca8b" + }, + "status": 200, + "statusText": "OK" + } + }, + { + "callIndex": 0, + "id": "064d11f1077567e7", + "matchKey": "POST api.cohere.com/v2/rerank", + "recordedAt": "2026-09-17T10:41:10.417Z", + "request": { + "body": { + "kind": "json", + "value": { + "documents": [ + "Athens is in Greece.", + "Paris is in France.", + "Lima is in Peru." + ], + "model": "rerank-v3.5", + "query": "Which document is about France?", + "top_n": 2 + } + }, + "headers": {}, + "method": "POST", + "url": "https://api.cohere.com/v2/rerank" + }, + "response": { + "body": { + "kind": "json", + "value": { + "id": "a7fc02f5-90ca-4876-b16d-3199d69c54b0", + "meta": { + "api_version": { + "version": "2" + }, + "billed_units": { + "search_units": 1 + } + }, + "results": [ + { + "index": 1, + "relevance_score": 0.06657539 + }, + { + "index": 0, + "relevance_score": 0.015062517 + } + ] + } + }, + "headers": { + "access-control-expose-headers": "X-Debug-Trace-ID", + "alt-svc": "h3=\":443\"; ma=2592000", + "cache-control": "no-cache, no-store, no-transform, must-revalidate, private, max-age=0", + "content-encoding": "gzip", + "content-type": "application/json", + "date": "Thu, 17 Sep 2026 10:41:10 GMT", + "expires": "Thu, 01 Jan 1970 00:00:00 GMT", + "pragma": "no-cache", + "server": "envoy", + "transfer-encoding": "chunked", + "vary": "Origin,Accept-Encoding", + "via": "1.1 google", + "x-accel-expires": "0", + "x-debug-trace-id": "726e3bf04f6f8560d6ba64d0369aafdc", + "x-envoy-upstream-service-time": "117" }, "status": 200, "statusText": "OK" @@ -1100,7 +1318,7 @@ "callIndex": 3, "id": "e09f32cc805b35e9", "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-07-21T08:03:49.649Z", + "recordedAt": "2026-09-17T10:41:11.015Z", "request": { "body": { "kind": "json", @@ -1157,11 +1375,11 @@ "billing": { "payer": "developer" }, - "completed_at": 1784621029, - "created_at": 1784621028, + "completed_at": 1789641670, + "created_at": 1789641670, "error": null, "frequency_penalty": 0, - "id": "resp_090bb5c218164489006a5f27e4f4008192a085975060fec820", + "id": "resp_06de6e7324745c0e006aabc3c67df887d2a897f2ba01dde665", "incomplete_details": null, "instructions": null, "max_output_tokens": 128, @@ -1173,8 +1391,8 @@ "output": [ { "arguments": "{\"location\":\"Paris, France\"}", - "call_id": "call_EKOO5Hn3MTSQzNcIuDjca7Aw", - "id": "fc_090bb5c218164489006a5f27e576a88192a7b9184af5fa34eb", + "call_id": "call_lkGtEBxePAGvBONZrnT1ZMT6", + "id": "fc_06de6e7324745c0e006aabc3c6c5e487d2bf17c873ab7c6797", "name": "get_weather", "status": "completed", "type": "function_call" @@ -1263,13 +1481,13 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8b0f6aeb581ed-IAD", + "cf-ray": "a3c77f383b558970-IAD", "connection": "keep-alive", "content-encoding": "gzip", "content-type": "application/json", - "date": "Tue, 21 Jul 2026 08:03:49 GMT", + "date": "Thu, 17 Sep 2026 10:41:10 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "700", + "openai-processing-ms": "503", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -1280,10 +1498,10 @@ "x-ratelimit-limit-requests": "30000", "x-ratelimit-limit-tokens": "150000000", "x-ratelimit-remaining-requests": "29999", - "x-ratelimit-remaining-tokens": "149999690", + "x-ratelimit-remaining-tokens": "149999687", "x-ratelimit-reset-requests": "2ms", "x-ratelimit-reset-tokens": "0s", - "x-request-id": "req_c4a67ea53f204c5599de7198a31e3348" + "x-request-id": "req_f2ed49355cc44c54a8d026952a5854f8" }, "status": 200, "statusText": "OK" @@ -1291,9 +1509,9 @@ }, { "callIndex": 4, - "id": "0fd7c12ff9a9dec4", + "id": "8030a04a7ebfff30", "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-07-21T08:03:50.315Z", + "recordedAt": "2026-09-17T10:41:11.577Z", "request": { "body": { "kind": "json", @@ -1314,12 +1532,12 @@ }, { "arguments": "{\"location\":\"Paris, France\"}", - "call_id": "call_EKOO5Hn3MTSQzNcIuDjca7Aw", + "call_id": "call_lkGtEBxePAGvBONZrnT1ZMT6", "name": "get_weather", "type": "function_call" }, { - "call_id": "call_EKOO5Hn3MTSQzNcIuDjca7Aw", + "call_id": "call_lkGtEBxePAGvBONZrnT1ZMT6", "output": "{\"condition\":\"sunny\",\"location\":\"Paris, France\",\"temperatureC\":22}", "type": "function_call_output" } @@ -1361,11 +1579,11 @@ "billing": { "payer": "developer" }, - "completed_at": 1784621030, - "created_at": 1784621029, + "completed_at": 1789641671, + "created_at": 1789641671, "error": null, "frequency_penalty": 0, - "id": "resp_090bb5c218164489006a5f27e5b51c819286d5a67d2f0c0794", + "id": "resp_0a2b12e3d26b5309006aabc3c7150c87d2ac5bac46266c262d", "incomplete_details": null, "instructions": null, "max_output_tokens": 128, @@ -1377,8 +1595,8 @@ "output": [ { "arguments": "{\"location\":\"Paris, France\"}", - "call_id": "call_n0DLmcb240rqgOPKQKAUJx1u", - "id": "fc_090bb5c218164489006a5f27e61d74819282f688766aa8bea0", + "call_id": "call_fyIFMl74I8jt9YNHKcneiNiC", + "id": "fc_0a2b12e3d26b5309006aabc3c75d5087d286b3784d4483c4a8", "name": "get_weather", "status": "completed", "type": "function_call" @@ -1467,13 +1685,13 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8b0fb59d681ed-IAD", + "cf-ray": "a3c77f3bfdfd8970-IAD", "connection": "keep-alive", "content-encoding": "gzip", "content-type": "application/json", - "date": "Tue, 21 Jul 2026 08:03:50 GMT", + "date": "Thu, 17 Sep 2026 10:41:11 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "612", + "openai-processing-ms": "477", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -1484,10 +1702,10 @@ "x-ratelimit-limit-requests": "30000", "x-ratelimit-limit-tokens": "150000000", "x-ratelimit-remaining-requests": "29999", - "x-ratelimit-remaining-tokens": "149999652", + "x-ratelimit-remaining-tokens": "149999650", "x-ratelimit-reset-requests": "2ms", "x-ratelimit-reset-tokens": "0s", - "x-request-id": "req_9697abcfbc8d4996af5a12e85e21549f" + "x-request-id": "req_9e04d63c39c44aedb8fb73c75dd7f75f" }, "status": 200, "statusText": "OK" @@ -1495,9 +1713,9 @@ }, { "callIndex": 5, - "id": "c70678b871237e43", + "id": "48358abcfdc93bf0", "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-07-21T08:03:51.030Z", + "recordedAt": "2026-09-17T10:41:12.435Z", "request": { "body": { "kind": "json", @@ -1518,23 +1736,23 @@ }, { "arguments": "{\"location\":\"Paris, France\"}", - "call_id": "call_EKOO5Hn3MTSQzNcIuDjca7Aw", + "call_id": "call_lkGtEBxePAGvBONZrnT1ZMT6", "name": "get_weather", "type": "function_call" }, { - "call_id": "call_EKOO5Hn3MTSQzNcIuDjca7Aw", + "call_id": "call_lkGtEBxePAGvBONZrnT1ZMT6", "output": "{\"condition\":\"sunny\",\"location\":\"Paris, France\",\"temperatureC\":22}", "type": "function_call_output" }, { "arguments": "{\"location\":\"Paris, France\"}", - "call_id": "call_n0DLmcb240rqgOPKQKAUJx1u", + "call_id": "call_fyIFMl74I8jt9YNHKcneiNiC", "name": "get_weather", "type": "function_call" }, { - "call_id": "call_n0DLmcb240rqgOPKQKAUJx1u", + "call_id": "call_fyIFMl74I8jt9YNHKcneiNiC", "output": "{\"condition\":\"sunny\",\"location\":\"Paris, France\",\"temperatureC\":22}", "type": "function_call_output" } @@ -1576,11 +1794,11 @@ "billing": { "payer": "developer" }, - "completed_at": 1784621030, - "created_at": 1784621030, + "completed_at": 1789641672, + "created_at": 1789641671, "error": null, "frequency_penalty": 0, - "id": "resp_090bb5c218164489006a5f27e65f548192bd688665b682d0bc", + "id": "resp_0121426f456d9757006aabc3c7a73487d2abe2d52c7967c09f", "incomplete_details": null, "instructions": null, "max_output_tokens": 128, @@ -1592,8 +1810,8 @@ "output": [ { "arguments": "{\"location\":\"Paris, France\"}", - "call_id": "call_CqbaTgLUcYKFmpM44r2PYobK", - "id": "fc_090bb5c218164489006a5f27e6dc5081928f573b5067818f58", + "call_id": "call_kKj0LfjwSxgdxbFrFCS2iuZV", + "id": "fc_0121426f456d9757006aabc3c8204c87d28b189ec6aa013d42", "name": "get_weather", "status": "completed", "type": "function_call" @@ -1682,13 +1900,13 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8b0ff8c8b81ed-IAD", + "cf-ray": "a3c77f3f78bc8970-IAD", "connection": "keep-alive", "content-encoding": "gzip", "content-type": "application/json", - "date": "Tue, 21 Jul 2026 08:03:51 GMT", + "date": "Thu, 17 Sep 2026 10:41:12 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "669", + "openai-processing-ms": "751", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -1699,10 +1917,10 @@ "x-ratelimit-limit-requests": "30000", "x-ratelimit-limit-tokens": "150000000", "x-ratelimit-remaining-requests": "29999", - "x-ratelimit-remaining-tokens": "149999612", + "x-ratelimit-remaining-tokens": "149999610", "x-ratelimit-reset-requests": "2ms", "x-ratelimit-reset-tokens": "0s", - "x-request-id": "req_3bdb2008bc194cfdb3f0f543a48e20dc" + "x-request-id": "req_54ba3d7a626e48338fb1943dddf8710a" }, "status": 200, "statusText": "OK" @@ -1710,9 +1928,9 @@ }, { "callIndex": 6, - "id": "eb4c00950628aeed", + "id": "64fa80afb31d0c20", "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-07-21T08:03:51.860Z", + "recordedAt": "2026-09-17T10:41:13.220Z", "request": { "body": { "kind": "json", @@ -1733,34 +1951,34 @@ }, { "arguments": "{\"location\":\"Paris, France\"}", - "call_id": "call_EKOO5Hn3MTSQzNcIuDjca7Aw", + "call_id": "call_lkGtEBxePAGvBONZrnT1ZMT6", "name": "get_weather", "type": "function_call" }, { - "call_id": "call_EKOO5Hn3MTSQzNcIuDjca7Aw", + "call_id": "call_lkGtEBxePAGvBONZrnT1ZMT6", "output": "{\"condition\":\"sunny\",\"location\":\"Paris, France\",\"temperatureC\":22}", "type": "function_call_output" }, { "arguments": "{\"location\":\"Paris, France\"}", - "call_id": "call_n0DLmcb240rqgOPKQKAUJx1u", + "call_id": "call_fyIFMl74I8jt9YNHKcneiNiC", "name": "get_weather", "type": "function_call" }, { - "call_id": "call_n0DLmcb240rqgOPKQKAUJx1u", + "call_id": "call_fyIFMl74I8jt9YNHKcneiNiC", "output": "{\"condition\":\"sunny\",\"location\":\"Paris, France\",\"temperatureC\":22}", "type": "function_call_output" }, { "arguments": "{\"location\":\"Paris, France\"}", - "call_id": "call_CqbaTgLUcYKFmpM44r2PYobK", + "call_id": "call_kKj0LfjwSxgdxbFrFCS2iuZV", "name": "get_weather", "type": "function_call" }, { - "call_id": "call_CqbaTgLUcYKFmpM44r2PYobK", + "call_id": "call_kKj0LfjwSxgdxbFrFCS2iuZV", "output": "{\"condition\":\"sunny\",\"location\":\"Paris, France\",\"temperatureC\":22}", "type": "function_call_output" } @@ -1802,11 +2020,11 @@ "billing": { "payer": "developer" }, - "completed_at": 1784621031, - "created_at": 1784621031, + "completed_at": 1789641673, + "created_at": 1789641672, "error": null, "frequency_penalty": 0, - "id": "resp_090bb5c218164489006a5f27e7136481928b5c9059bbad68c1", + "id": "resp_091a2f4768416c15006aabc3c8838087d2b2ff0e1510581105", "incomplete_details": null, "instructions": null, "max_output_tokens": 128, @@ -1818,8 +2036,8 @@ "output": [ { "arguments": "{\"location\":\"Paris, France\"}", - "call_id": "call_bYJHupK899SYM418tjcrlx0u", - "id": "fc_090bb5c218164489006a5f27e78458819299ebca742db4b359", + "call_id": "call_Ee9RbFjL2lOTQTuC8epIfdDm", + "id": "fc_091a2f4768416c15006aabc3c8f39c87d282abaa085b80d948", "name": "get_weather", "status": "completed", "type": "function_call" @@ -1908,13 +2126,13 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8b103f80281ed-IAD", + "cf-ray": "a3c77f44dfc08970-IAD", "connection": "keep-alive", "content-encoding": "gzip", "content-type": "application/json", - "date": "Tue, 21 Jul 2026 08:03:51 GMT", + "date": "Thu, 17 Sep 2026 10:41:13 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "783", + "openai-processing-ms": "687", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -1928,390 +2146,436 @@ "x-ratelimit-remaining-tokens": "149999572", "x-ratelimit-reset-requests": "2ms", "x-ratelimit-reset-tokens": "0s", - "x-request-id": "req_f269fa4238f340839795b5ebf662d640" + "x-request-id": "req_d10c7087bbd8400bad8a773081fad8de" }, "status": 200, "statusText": "OK" } }, { - "callIndex": 7, - "id": "d22bae6c42006c81", - "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-07-21T08:03:52.808Z", + "callIndex": 0, + "id": "04d8f7db5dc7b0b8", + "matchKey": "POST api.anthropic.com/v1/messages", + "recordedAt": "2026-09-17T10:41:13.799Z", "request": { "body": { "kind": "json", "value": { - "input": [ + "max_tokens": 24, + "messages": [ { "content": [ { - "text": "Return JSON with {\"city\":\"Paris\"}.", - "type": "input_text" + "cache_control": { + "type": "ephemeral" + }, + "text": "braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix\n\nReply with exactly CACHE_OK and nothing else.", + "type": "text" } ], "role": "user" } ], - "max_output_tokens": 32, - "model": "gpt-4o-mini-2024-07-18", - "temperature": 0, - "text": { - "format": { - "name": "response", - "schema": { - "$schema": "http://json-schema.org/draft-07/schema#", - "additionalProperties": false, - "properties": { - "city": { - "type": "string" - } - }, - "required": ["city"], - "type": "object" - }, - "strict": true, - "type": "json_schema" - } - } + "model": "claude-haiku-4-5", + "temperature": 0 } }, "headers": {}, "method": "POST", - "url": "https://api.openai.com/v1/responses" + "url": "https://api.anthropic.com/v1/messages" }, "response": { "body": { "kind": "json", "value": { - "background": false, - "billing": { - "payer": "developer" - }, - "completed_at": 1784621032, - "created_at": 1784621031, - "error": null, - "frequency_penalty": 0, - "id": "resp_0f984a353206ed43006a5f27e7ef98819c8b651358791954a4", - "incomplete_details": null, - "instructions": null, - "max_output_tokens": 32, - "max_tool_calls": null, - "metadata": {}, - "model": "gpt-4o-mini-2024-07-18", - "moderation": null, - "object": "response", - "output": [ + "container": null, + "content": [ { - "content": [ - { - "annotations": [], - "logprobs": [], - "text": "{\"city\":\"Paris\"}", - "type": "output_text" - } - ], - "id": "msg_0f984a353206ed43006a5f27e89840819cb2d6fb2049f1a782", - "role": "assistant", - "status": "completed", - "type": "message" + "text": "CACHE_OK", + "type": "text" } ], - "parallel_tool_calls": true, - "presence_penalty": 0, - "previous_response_id": null, - "prompt_cache_key": "[REDACTED]", - "prompt_cache_retention": "in_memory", - "reasoning": { - "context": null, - "effort": null, - "summary": null - }, - "safety_identifier": null, - "service_tier": "default", - "status": "completed", - "store": true, - "temperature": 0, - "text": { - "format": { - "description": null, - "name": "response", - "schema": { - "additionalProperties": false, - "properties": { - "city": { - "type": "string" - } - }, - "required": ["city"], - "type": "object" - }, - "strict": true, - "type": "json_schema" + "id": "msg_011Cf8sTM1itR4iw19eiYGcS", + "model": "claude-haiku-4-5-20251001", + "role": "assistant", + "stop_details": null, + "stop_reason": "end_turn", + "stop_sequence": null, + "type": "message", + "usage": { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 0 }, - "verbosity": "medium" - }, - "tool_choice": "auto", - "tool_usage": { - "image_gen": { - "input_tokens": 0, - "input_tokens_details": { - "image_tokens": 0, - "text_tokens": 0 - }, - "output_tokens": 0, - "output_tokens_details": { - "image_tokens": 0, - "text_tokens": 0 - }, - "total_tokens": 0 - }, - "web_search": { - "num_requests": 0 - } - }, - "tools": [], - "top_logprobs": 0, - "top_p": 1, - "truncation": "disabled", - "usage": { - "input_tokens": 38, - "input_tokens_details": { - "cache_write_tokens": 0, - "cached_tokens": 0 - }, - "output_tokens": 6, - "output_tokens_details": { - "reasoning_tokens": 0 - }, - "total_tokens": 44 - }, - "user": null + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 4516, + "inference_geo": "not_available", + "input_tokens": 3, + "output_tokens": 7, + "service_tier": "standard" + } } }, "headers": { - "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", - "alt-svc": "h3=\":443\"; ma=86400", + "anthropic-organization-id": "27796668-7351-40ac-acc4-024aee8995a5", + "anthropic-ratelimit-input-tokens-limit": "10000000", + "anthropic-ratelimit-input-tokens-remaining": "10000000", + "anthropic-ratelimit-input-tokens-reset": "2026-09-17T10:41:13Z", + "anthropic-ratelimit-output-tokens-limit": "2000000", + "anthropic-ratelimit-output-tokens-remaining": "2000000", + "anthropic-ratelimit-output-tokens-reset": "2026-09-17T10:41:13Z", + "anthropic-ratelimit-requests-limit": "20000", + "anthropic-ratelimit-requests-remaining": "19999", + "anthropic-ratelimit-requests-reset": "2026-09-17T10:41:13Z", + "anthropic-ratelimit-tokens-limit": "12000000", + "anthropic-ratelimit-tokens-remaining": "12000000", + "anthropic-ratelimit-tokens-reset": "2026-09-17T10:41:13Z", + "anthropic-workspace-id": "wrkspc_018bFG1FgNVWqx5pthtdGTzS", "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8b1093b7d81ed-IAD", + "cf-ray": "a3c77f49dd609db4-IAD", "connection": "keep-alive", "content-encoding": "gzip", + "content-security-policy": "default-src 'none'; frame-ancestors 'none'", "content-type": "application/json", - "date": "Tue, 21 Jul 2026 08:03:52 GMT", - "openai-organization": "braintrust-data", - "openai-processing-ms": "890", - "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", - "openai-version": "2020-10-01", + "date": "Thu, 17 Sep 2026 10:41:13 GMT", + "request-id": "req_011Cf8sTLaRcwuzd8NwssAZ2", "server": "cloudflare", - "set-cookie": "[REDACTED]", "strict-transport-security": "max-age=31536000; includeSubDomains; preload", + "traceresponse": "00-f4c62cf667242a85de8270c86e2b8503-fe0cac059822d837-01", "transfer-encoding": "chunked", - "x-content-type-options": "nosniff", - "x-ratelimit-limit-requests": "30000", - "x-ratelimit-limit-tokens": "150000000", - "x-ratelimit-remaining-requests": "29999", - "x-ratelimit-remaining-tokens": "149999942", - "x-ratelimit-reset-requests": "2ms", - "x-ratelimit-reset-tokens": "0s", - "x-request-id": "req_baebb6f6d6994cc796eedf3f48d1c37f" + "vary": "Accept-Encoding", + "x-robots-tag": "none" }, "status": 200, "statusText": "OK" } }, { - "callIndex": 8, - "id": "6d0eec1cfcef015d", - "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-07-21T08:03:53.627Z", + "callIndex": 1, + "id": "f51018468a0f5811", + "matchKey": "POST api.anthropic.com/v1/messages", + "recordedAt": "2026-09-17T10:41:19.465Z", "request": { "body": { "kind": "json", "value": { - "input": [ + "max_tokens": 24, + "messages": [ { "content": [ { - "text": "Stream JSON with {\"city\":\"Paris\"}.", - "type": "input_text" + "cache_control": { + "type": "ephemeral" + }, + "text": "braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix\n\nReply with exactly CACHE_OK and nothing else.", + "type": "text" } ], "role": "user" } ], - "max_output_tokens": 32, - "model": "gpt-4o-mini-2024-07-18", - "stream": true, - "temperature": 0, - "text": { - "format": { - "name": "response", - "schema": { - "$schema": "http://json-schema.org/draft-07/schema#", - "additionalProperties": false, - "properties": { - "city": { - "type": "string" - } - }, - "required": ["city"], - "type": "object" - }, - "strict": true, - "type": "json_schema" - } - } + "model": "claude-haiku-4-5", + "temperature": 0 } }, "headers": {}, "method": "POST", - "url": "https://api.openai.com/v1/responses" + "url": "https://api.anthropic.com/v1/messages" }, "response": { "body": { - "chunks": [ - "event: response.created\ndata: {\"type\":\"response.created\",\"response\":{\"id\":\"resp_0cc2fdc47b68ed64006a5f27e8dd348192a4e8677944794471\",\"object\":\"response\",\"created_at\":1784621032,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":32,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"json_schema\",\"description\":null,\"name\":\"response\",\"schema\":{\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"}},\"required\":[\"city\"],\"additionalProperties\":false},\"strict\":true},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":0}", - "event: response.in_progress\ndata: {\"type\":\"response.in_progress\",\"response\":{\"id\":\"resp_0cc2fdc47b68ed64006a5f27e8dd348192a4e8677944794471\",\"object\":\"response\",\"created_at\":1784621032,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":32,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"json_schema\",\"description\":null,\"name\":\"response\",\"schema\":{\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"}},\"required\":[\"city\"],\"additionalProperties\":false},\"strict\":true},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":1}", - "event: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"msg_0cc2fdc47b68ed64006a5f27e95a388192bf96c4af4aeaf8a0\",\"type\":\"message\",\"status\":\"in_progress\",\"content\":[],\"role\":\"assistant\"},\"output_index\":0,\"sequence_number\":2}", - "event: response.content_part.added\ndata: {\"type\":\"response.content_part.added\",\"content_index\":0,\"item_id\":\"msg_0cc2fdc47b68ed64006a5f27e95a388192bf96c4af4aeaf8a0\",\"output_index\":0,\"part\":{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"\"},\"sequence_number\":3}", - "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"{\\\"\",\"item_id\":\"msg_0cc2fdc47b68ed64006a5f27e95a388192bf96c4af4aeaf8a0\",\"logprobs\":[],\"obfuscation\":\"ADqhlGWfS7T9ZT\",\"output_index\":0,\"sequence_number\":4}", - "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"city\",\"item_id\":\"msg_0cc2fdc47b68ed64006a5f27e95a388192bf96c4af4aeaf8a0\",\"logprobs\":[],\"obfuscation\":\"NYzu4pqkxUg3\",\"output_index\":0,\"sequence_number\":5}", - "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"\\\":\\\"\",\"item_id\":\"msg_0cc2fdc47b68ed64006a5f27e95a388192bf96c4af4aeaf8a0\",\"logprobs\":[],\"obfuscation\":\"MpOHeLGIMnrly\",\"output_index\":0,\"sequence_number\":6}", - "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"Paris\",\"item_id\":\"msg_0cc2fdc47b68ed64006a5f27e95a388192bf96c4af4aeaf8a0\",\"logprobs\":[],\"obfuscation\":\"RLY01I2Ezdf\",\"output_index\":0,\"sequence_number\":7}", - "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"\\\"}\",\"item_id\":\"msg_0cc2fdc47b68ed64006a5f27e95a388192bf96c4af4aeaf8a0\",\"logprobs\":[],\"obfuscation\":\"CWCTu458OptLhE\",\"output_index\":0,\"sequence_number\":8}", - "event: response.output_text.done\ndata: {\"type\":\"response.output_text.done\",\"content_index\":0,\"item_id\":\"msg_0cc2fdc47b68ed64006a5f27e95a388192bf96c4af4aeaf8a0\",\"logprobs\":[],\"output_index\":0,\"sequence_number\":9,\"text\":\"{\\\"city\\\":\\\"Paris\\\"}\"}", - "event: response.content_part.done\ndata: {\"type\":\"response.content_part.done\",\"content_index\":0,\"item_id\":\"msg_0cc2fdc47b68ed64006a5f27e95a388192bf96c4af4aeaf8a0\",\"output_index\":0,\"part\":{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"{\\\"city\\\":\\\"Paris\\\"}\"},\"sequence_number\":10}", - "event: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"msg_0cc2fdc47b68ed64006a5f27e95a388192bf96c4af4aeaf8a0\",\"type\":\"message\",\"status\":\"completed\",\"content\":[{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"{\\\"city\\\":\\\"Paris\\\"}\"}],\"role\":\"assistant\"},\"output_index\":0,\"sequence_number\":11}", - "event: response.completed\ndata: {\"type\":\"response.completed\",\"response\":{\"id\":\"resp_0cc2fdc47b68ed64006a5f27e8dd348192a4e8677944794471\",\"object\":\"response\",\"created_at\":1784621032,\"status\":\"completed\",\"background\":false,\"completed_at\":1784621033,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":32,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[{\"id\":\"msg_0cc2fdc47b68ed64006a5f27e95a388192bf96c4af4aeaf8a0\",\"type\":\"message\",\"status\":\"completed\",\"content\":[{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"{\\\"city\\\":\\\"Paris\\\"}\"}],\"role\":\"assistant\"}],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"default\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"json_schema\",\"description\":null,\"name\":\"response\",\"schema\":{\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"}},\"required\":[\"city\"],\"additionalProperties\":false},\"strict\":true},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":{\"input_tokens\":38,\"input_tokens_details\":{\"cache_write_tokens\":0,\"cached_tokens\":0},\"output_tokens\":6,\"output_tokens_details\":{\"reasoning_tokens\":0},\"total_tokens\":44},\"user\":null,\"metadata\":{}},\"sequence_number\":12}" - ], - "kind": "sse" + "kind": "json", + "value": { + "container": null, + "content": [ + { + "text": "CACHE_OK", + "type": "text" + } + ], + "id": "msg_011Cf8sTksRTRNRutH2rkCwh", + "model": "claude-haiku-4-5-20251001", + "role": "assistant", + "stop_details": null, + "stop_reason": "end_turn", + "stop_sequence": null, + "type": "message", + "usage": { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 0 + }, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 4516, + "inference_geo": "not_available", + "input_tokens": 3, + "output_tokens": 7, + "service_tier": "standard" + } + } }, "headers": { - "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", - "alt-svc": "h3=\":443\"; ma=86400", + "anthropic-organization-id": "27796668-7351-40ac-acc4-024aee8995a5", + "anthropic-ratelimit-input-tokens-limit": "10000000", + "anthropic-ratelimit-input-tokens-remaining": "10000000", + "anthropic-ratelimit-input-tokens-reset": "2026-09-17T10:41:19Z", + "anthropic-ratelimit-output-tokens-limit": "2000000", + "anthropic-ratelimit-output-tokens-remaining": "2000000", + "anthropic-ratelimit-output-tokens-reset": "2026-09-17T10:41:19Z", + "anthropic-ratelimit-requests-limit": "20000", + "anthropic-ratelimit-requests-remaining": "19999", + "anthropic-ratelimit-requests-reset": "2026-09-17T10:41:18Z", + "anthropic-ratelimit-tokens-limit": "12000000", + "anthropic-ratelimit-tokens-remaining": "12000000", + "anthropic-ratelimit-tokens-reset": "2026-09-17T10:41:19Z", + "anthropic-workspace-id": "wrkspc_018bFG1FgNVWqx5pthtdGTzS", "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8b10f1f4c81ed-IAD", + "cf-ray": "a3c77f6cc831c953-IAD", "connection": "keep-alive", - "content-type": "text/event-stream; charset=utf-8", - "date": "Tue, 21 Jul 2026 08:03:52 GMT", - "openai-organization": "braintrust-data", - "openai-processing-ms": "129", - "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", - "openai-version": "2020-10-01", + "content-encoding": "gzip", + "content-security-policy": "default-src 'none'; frame-ancestors 'none'", + "content-type": "application/json", + "date": "Thu, 17 Sep 2026 10:41:19 GMT", + "request-id": "req_011Cf8sTkb3jg5WVnhQWbrYy", "server": "cloudflare", - "set-cookie": "[REDACTED]", "strict-transport-security": "max-age=31536000; includeSubDomains; preload", + "traceresponse": "00-b06de3d91a6cf7133ce12dbfd864b83a-6460e356f10f0354-01", "transfer-encoding": "chunked", - "x-content-type-options": "nosniff", - "x-request-id": "req_c8a2de601c394feeb68e49b1e7a2ed78" + "vary": "Accept-Encoding", + "x-robots-tag": "none" }, "status": 200, "statusText": "OK" } }, { - "callIndex": 9, - "id": "3f08b53881e505ce", - "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-07-21T08:03:54.321Z", + "callIndex": 2, + "id": "c440f9309e7fff40", + "matchKey": "POST api.anthropic.com/v1/messages", + "recordedAt": "2026-09-17T10:41:25.043Z", "request": { "body": { "kind": "json", "value": { - "input": [ - { - "content": "You are a terse assistant.", - "role": "system" - }, + "max_tokens": 24, + "messages": [ { "content": [ { - "text": "Reply with exactly HELLO and no punctuation.", - "type": "input_text" + "cache_control": { + "type": "ephemeral" + }, + "text": "braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix\n\nReply with exactly CACHE_OK and nothing else.", + "type": "text" } ], "role": "user" } ], - "max_output_tokens": 24, - "model": "gpt-4o-mini-2024-07-18" + "model": "claude-haiku-4-5", + "temperature": 0 } }, "headers": {}, "method": "POST", - "url": "https://api.openai.com/v1/responses" + "url": "https://api.anthropic.com/v1/messages" }, "response": { "body": { "kind": "json", "value": { - "background": false, - "billing": { - "payer": "developer" - }, - "completed_at": 1784621034, - "created_at": 1784621033, - "error": null, - "frequency_penalty": 0, - "id": "resp_09c24a4f0844ea2c006a5f27e9af0481a3bcee5c238cb5cae7", - "incomplete_details": null, - "instructions": null, - "max_output_tokens": 24, - "max_tool_calls": null, - "metadata": {}, - "model": "gpt-4o-mini-2024-07-18", - "moderation": null, - "object": "response", - "output": [ + "container": null, + "content": [ { - "content": [ - { - "annotations": [], - "logprobs": [], - "text": "HELLO", - "type": "output_text" - } - ], - "id": "msg_09c24a4f0844ea2c006a5f27ea27a481a3822e2cd6ea39b328", - "role": "assistant", - "status": "completed", - "type": "message" + "text": "CACHE_OK", + "type": "text" } ], - "parallel_tool_calls": true, - "presence_penalty": 0, - "previous_response_id": null, - "prompt_cache_key": "[REDACTED]", - "prompt_cache_retention": "in_memory", - "reasoning": { - "context": null, - "effort": null, - "summary": null - }, - "safety_identifier": null, - "service_tier": "default", - "status": "completed", - "store": true, - "temperature": 1, - "text": { - "format": { - "type": "text" + "id": "msg_011Cf8sUB1UpiYJGpsXLj1de", + "model": "claude-haiku-4-5-20251001", + "role": "assistant", + "stop_details": null, + "stop_reason": "end_turn", + "stop_sequence": null, + "type": "message", + "usage": { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 0 }, - "verbosity": "medium" - }, - "tool_choice": "auto", - "tool_usage": { - "image_gen": { - "input_tokens": 0, - "input_tokens_details": { - "image_tokens": 0, - "text_tokens": 0 - }, - "output_tokens": 0, - "output_tokens_details": { - "image_tokens": 0, - "text_tokens": 0 + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 4516, + "inference_geo": "not_available", + "input_tokens": 3, + "output_tokens": 7, + "service_tier": "standard" + } + } + }, + "headers": { + "anthropic-organization-id": "27796668-7351-40ac-acc4-024aee8995a5", + "anthropic-ratelimit-input-tokens-limit": "10000000", + "anthropic-ratelimit-input-tokens-remaining": "10000000", + "anthropic-ratelimit-input-tokens-reset": "2026-09-17T10:41:24Z", + "anthropic-ratelimit-output-tokens-limit": "2000000", + "anthropic-ratelimit-output-tokens-remaining": "2000000", + "anthropic-ratelimit-output-tokens-reset": "2026-09-17T10:41:25Z", + "anthropic-ratelimit-requests-limit": "20000", + "anthropic-ratelimit-requests-remaining": "19999", + "anthropic-ratelimit-requests-reset": "2026-09-17T10:41:24Z", + "anthropic-ratelimit-tokens-limit": "12000000", + "anthropic-ratelimit-tokens-remaining": "12000000", + "anthropic-ratelimit-tokens-reset": "2026-09-17T10:41:24Z", + "anthropic-workspace-id": "wrkspc_018bFG1FgNVWqx5pthtdGTzS", + "cf-cache-status": "DYNAMIC", + "cf-ray": "a3c77f901ef81585-IAD", + "connection": "keep-alive", + "content-encoding": "gzip", + "content-security-policy": "default-src 'none'; frame-ancestors 'none'", + "content-type": "application/json", + "date": "Thu, 17 Sep 2026 10:41:25 GMT", + "request-id": "req_011Cf8sUAgdhc8dxWmdhZo7c", + "server": "cloudflare", + "strict-transport-security": "max-age=31536000; includeSubDomains; preload", + "traceresponse": "00-4286652b4e1939a8ab0eeda228dbbc46-44ca127a30587c0e-01", + "transfer-encoding": "chunked", + "vary": "Accept-Encoding", + "x-robots-tag": "none" + }, + "status": 200, + "statusText": "OK" + } + }, + { + "callIndex": 7, + "id": "d22bae6c42006c81", + "matchKey": "POST api.openai.com/v1/responses", + "recordedAt": "2026-09-17T10:41:27.045Z", + "request": { + "body": { + "kind": "json", + "value": { + "input": [ + { + "content": [ + { + "text": "Return JSON with {\"city\":\"Paris\"}.", + "type": "input_text" + } + ], + "role": "user" + } + ], + "max_output_tokens": 32, + "model": "gpt-4o-mini-2024-07-18", + "temperature": 0, + "text": { + "format": { + "name": "response", + "schema": { + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "city": { + "type": "string" + } + }, + "required": ["city"], + "type": "object" + }, + "strict": true, + "type": "json_schema" + } + } + } + }, + "headers": {}, + "method": "POST", + "url": "https://api.openai.com/v1/responses" + }, + "response": { + "body": { + "kind": "json", + "value": { + "background": false, + "billing": { + "payer": "developer" + }, + "completed_at": 1789641686, + "created_at": 1789641686, + "error": null, + "frequency_penalty": 0, + "id": "resp_074997f6b7cf0692006aabc3d6386487d29f5fee29e2e05bcf", + "incomplete_details": null, + "instructions": null, + "max_output_tokens": 32, + "max_tool_calls": null, + "metadata": {}, + "model": "gpt-4o-mini-2024-07-18", + "moderation": null, + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "logprobs": [], + "text": "{\"city\":\"Paris\"}", + "type": "output_text" + } + ], + "id": "msg_074997f6b7cf0692006aabc3d6c54087d28020673ac6c6df8d", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "parallel_tool_calls": true, + "presence_penalty": 0, + "previous_response_id": null, + "prompt_cache_key": "[REDACTED]", + "prompt_cache_retention": "in_memory", + "reasoning": { + "context": null, + "effort": null, + "summary": null + }, + "safety_identifier": null, + "service_tier": "default", + "status": "completed", + "store": true, + "temperature": 0, + "text": { + "format": { + "description": null, + "name": "response", + "schema": { + "additionalProperties": false, + "properties": { + "city": { + "type": "string" + } + }, + "required": ["city"], + "type": "object" + }, + "strict": true, + "type": "json_schema" + }, + "verbosity": "medium" + }, + "tool_choice": "auto", + "tool_usage": { + "image_gen": { + "input_tokens": 0, + "input_tokens_details": { + "image_tokens": 0, + "text_tokens": 0 + }, + "output_tokens": 0, + "output_tokens_details": { + "image_tokens": 0, + "text_tokens": 0 }, "total_tokens": 0 }, @@ -2324,16 +2588,16 @@ "top_p": 1, "truncation": "disabled", "usage": { - "input_tokens": 26, + "input_tokens": 38, "input_tokens_details": { "cache_write_tokens": 0, "cached_tokens": 0 }, - "output_tokens": 3, + "output_tokens": 6, "output_tokens_details": { "reasoning_tokens": 0 }, - "total_tokens": 29 + "total_tokens": 44 }, "user": null } @@ -2342,13 +2606,13 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8b1143acd81ed-IAD", + "cf-ray": "a3c77f93bae7cd76-IAD", "connection": "keep-alive", "content-encoding": "gzip", "content-type": "application/json", - "date": "Tue, 21 Jul 2026 08:03:54 GMT", + "date": "Thu, 17 Sep 2026 10:41:27 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "645", + "openai-processing-ms": "1779", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -2359,42 +2623,57 @@ "x-ratelimit-limit-requests": "30000", "x-ratelimit-limit-tokens": "150000000", "x-ratelimit-remaining-requests": "29999", - "x-ratelimit-remaining-tokens": "149999955", + "x-ratelimit-remaining-tokens": "149999945", "x-ratelimit-reset-requests": "2ms", "x-ratelimit-reset-tokens": "0s", - "x-request-id": "req_5e3c1fe1420f492585dc22c7ec71a052" + "x-request-id": "req_385e03b9a52f4529bb668013638eecc4" }, "status": 200, "statusText": "OK" } }, { - "callIndex": 10, - "id": "d026123ce87dfbca", + "callIndex": 8, + "id": "6d0eec1cfcef015d", "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-07-21T08:03:55.156Z", + "recordedAt": "2026-09-17T10:41:27.925Z", "request": { "body": { "kind": "json", "value": { "input": [ - { - "content": "You are a terse assistant.", - "role": "system" - }, { "content": [ { - "text": "Reply with exactly STREAM HELLO and no punctuation.", + "text": "Stream JSON with {\"city\":\"Paris\"}.", "type": "input_text" } ], "role": "user" } ], - "max_output_tokens": 24, + "max_output_tokens": 32, "model": "gpt-4o-mini-2024-07-18", - "stream": true + "stream": true, + "temperature": 0, + "text": { + "format": { + "name": "response", + "schema": { + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "city": { + "type": "string" + } + }, + "required": ["city"], + "type": "object" + }, + "strict": true, + "type": "json_schema" + } + } } }, "headers": {}, @@ -2404,17 +2683,19 @@ "response": { "body": { "chunks": [ - "event: response.created\ndata: {\"type\":\"response.created\",\"response\":{\"id\":\"resp_0aa3b6ffa313a619006a5f27ea6188819c8e28c923c766d62a\",\"object\":\"response\",\"created_at\":1784621034,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":24,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":1,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":0}", - "event: response.in_progress\ndata: {\"type\":\"response.in_progress\",\"response\":{\"id\":\"resp_0aa3b6ffa313a619006a5f27ea6188819c8e28c923c766d62a\",\"object\":\"response\",\"created_at\":1784621034,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":24,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":1,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":1}", - "event: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"msg_0aa3b6ffa313a619006a5f27eaef2c819cb00c3931c9091519\",\"type\":\"message\",\"status\":\"in_progress\",\"content\":[],\"role\":\"assistant\"},\"output_index\":0,\"sequence_number\":2}", - "event: response.content_part.added\ndata: {\"type\":\"response.content_part.added\",\"content_index\":0,\"item_id\":\"msg_0aa3b6ffa313a619006a5f27eaef2c819cb00c3931c9091519\",\"output_index\":0,\"part\":{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"\"},\"sequence_number\":3}", - "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"STREAM\",\"item_id\":\"msg_0aa3b6ffa313a619006a5f27eaef2c819cb00c3931c9091519\",\"logprobs\":[],\"obfuscation\":\"knrAzjNRZa\",\"output_index\":0,\"sequence_number\":4}", - "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\" HEL\",\"item_id\":\"msg_0aa3b6ffa313a619006a5f27eaef2c819cb00c3931c9091519\",\"logprobs\":[],\"obfuscation\":\"GefBzUb0UvFk\",\"output_index\":0,\"sequence_number\":5}", - "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"LO\",\"item_id\":\"msg_0aa3b6ffa313a619006a5f27eaef2c819cb00c3931c9091519\",\"logprobs\":[],\"obfuscation\":\"HrpbINaP6JZLat\",\"output_index\":0,\"sequence_number\":6}", - "event: response.output_text.done\ndata: {\"type\":\"response.output_text.done\",\"content_index\":0,\"item_id\":\"msg_0aa3b6ffa313a619006a5f27eaef2c819cb00c3931c9091519\",\"logprobs\":[],\"output_index\":0,\"sequence_number\":7,\"text\":\"STREAM HELLO\"}", - "event: response.content_part.done\ndata: {\"type\":\"response.content_part.done\",\"content_index\":0,\"item_id\":\"msg_0aa3b6ffa313a619006a5f27eaef2c819cb00c3931c9091519\",\"output_index\":0,\"part\":{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"STREAM HELLO\"},\"sequence_number\":8}", - "event: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"msg_0aa3b6ffa313a619006a5f27eaef2c819cb00c3931c9091519\",\"type\":\"message\",\"status\":\"completed\",\"content\":[{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"STREAM HELLO\"}],\"role\":\"assistant\"},\"output_index\":0,\"sequence_number\":9}", - "event: response.completed\ndata: {\"type\":\"response.completed\",\"response\":{\"id\":\"resp_0aa3b6ffa313a619006a5f27ea6188819c8e28c923c766d62a\",\"object\":\"response\",\"created_at\":1784621034,\"status\":\"completed\",\"background\":false,\"completed_at\":1784621035,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":24,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[{\"id\":\"msg_0aa3b6ffa313a619006a5f27eaef2c819cb00c3931c9091519\",\"type\":\"message\",\"status\":\"completed\",\"content\":[{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"STREAM HELLO\"}],\"role\":\"assistant\"}],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"default\",\"store\":true,\"temperature\":1,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":{\"input_tokens\":27,\"input_tokens_details\":{\"cache_write_tokens\":0,\"cached_tokens\":0},\"output_tokens\":4,\"output_tokens_details\":{\"reasoning_tokens\":0},\"total_tokens\":31},\"user\":null,\"metadata\":{}},\"sequence_number\":10}" + "event: response.created\ndata: {\"type\":\"response.created\",\"response\":{\"id\":\"resp_0f4872987e966cb9006aabc3d7315087d2b294515a0ad95c12\",\"object\":\"response\",\"created_at\":1789641687,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":32,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"json_schema\",\"description\":null,\"name\":\"response\",\"schema\":{\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"}},\"required\":[\"city\"],\"additionalProperties\":false},\"strict\":true},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":0}", + "event: response.in_progress\ndata: {\"type\":\"response.in_progress\",\"response\":{\"id\":\"resp_0f4872987e966cb9006aabc3d7315087d2b294515a0ad95c12\",\"object\":\"response\",\"created_at\":1789641687,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":32,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"json_schema\",\"description\":null,\"name\":\"response\",\"schema\":{\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"}},\"required\":[\"city\"],\"additionalProperties\":false},\"strict\":true},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":1}", + "event: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"msg_0f4872987e966cb9006aabc3d7a7c487d2a6ed7eb46200a842\",\"type\":\"message\",\"status\":\"in_progress\",\"content\":[],\"role\":\"assistant\"},\"output_index\":0,\"sequence_number\":2}", + "event: response.content_part.added\ndata: {\"type\":\"response.content_part.added\",\"content_index\":0,\"item_id\":\"msg_0f4872987e966cb9006aabc3d7a7c487d2a6ed7eb46200a842\",\"output_index\":0,\"part\":{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"\"},\"sequence_number\":3}", + "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"{\\\"\",\"item_id\":\"msg_0f4872987e966cb9006aabc3d7a7c487d2a6ed7eb46200a842\",\"logprobs\":[],\"obfuscation\":\"dpMLGUlse73ppf\",\"output_index\":0,\"sequence_number\":4}", + "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"city\",\"item_id\":\"msg_0f4872987e966cb9006aabc3d7a7c487d2a6ed7eb46200a842\",\"logprobs\":[],\"obfuscation\":\"x474yzMzDzsL\",\"output_index\":0,\"sequence_number\":5}", + "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"\\\":\\\"\",\"item_id\":\"msg_0f4872987e966cb9006aabc3d7a7c487d2a6ed7eb46200a842\",\"logprobs\":[],\"obfuscation\":\"6Hb7OMirSptsu\",\"output_index\":0,\"sequence_number\":6}", + "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"Paris\",\"item_id\":\"msg_0f4872987e966cb9006aabc3d7a7c487d2a6ed7eb46200a842\",\"logprobs\":[],\"obfuscation\":\"praxSegJqLe\",\"output_index\":0,\"sequence_number\":7}", + "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"\\\"}\",\"item_id\":\"msg_0f4872987e966cb9006aabc3d7a7c487d2a6ed7eb46200a842\",\"logprobs\":[],\"obfuscation\":\"VRcaMAhOqFSaoc\",\"output_index\":0,\"sequence_number\":8}", + "event: response.output_text.done\ndata: {\"type\":\"response.output_text.done\",\"content_index\":0,\"item_id\":\"msg_0f4872987e966cb9006aabc3d7a7c487d2a6ed7eb46200a842\",\"logprobs\":[],\"output_index\":0,\"sequence_number\":9,\"text\":\"{\\\"city\\\":\\\"Paris\\\"}\"}", + "event: response.content_part.done\ndata: {\"type\":\"response.content_part.done\",\"content_index\":0,\"item_id\":\"msg_0f4872987e966cb9006aabc3d7a7c487d2a6ed7eb46200a842\",\"output_index\":0,\"part\":{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"{\\\"city\\\":\\\"Paris\\\"}\"},\"sequence_number\":10}", + "event: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"msg_0f4872987e966cb9006aabc3d7a7c487d2a6ed7eb46200a842\",\"type\":\"message\",\"status\":\"completed\",\"content\":[{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"{\\\"city\\\":\\\"Paris\\\"}\"}],\"role\":\"assistant\"},\"output_index\":0,\"sequence_number\":11}", + "event: response.completed\ndata: {\"type\":\"response.completed\",\"response\":{\"id\":\"resp_0f4872987e966cb9006aabc3d7315087d2b294515a0ad95c12\",\"object\":\"response\",\"created_at\":1789641687,\"status\":\"completed\",\"background\":false,\"completed_at\":1789641687,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":32,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[{\"id\":\"msg_0f4872987e966cb9006aabc3d7a7c487d2a6ed7eb46200a842\",\"type\":\"message\",\"status\":\"completed\",\"content\":[{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"{\\\"city\\\":\\\"Paris\\\"}\"}],\"role\":\"assistant\"}],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"default\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"json_schema\",\"description\":null,\"name\":\"response\",\"schema\":{\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"}},\"required\":[\"city\"],\"additionalProperties\":false},\"strict\":true},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":{\"input_tokens\":38,\"input_tokens_details\":{\"cache_write_tokens\":0,\"cached_tokens\":0},\"output_tokens\":6,\"output_tokens_details\":{\"reasoning_tokens\":0},\"total_tokens\":44},\"user\":null,\"metadata\":{}},\"sequence_number\":12}" ], "kind": "sse" }, @@ -2422,12 +2703,12 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8b1189dbc81ed-IAD", + "cf-ray": "a3c77fa02ac6cd76-IAD", "connection": "keep-alive", "content-type": "text/event-stream; charset=utf-8", - "date": "Tue, 21 Jul 2026 08:03:54 GMT", + "date": "Thu, 17 Sep 2026 10:41:27 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "134", + "openai-processing-ms": "567", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -2435,51 +2716,294 @@ "strict-transport-security": "max-age=31536000; includeSubDomains; preload", "transfer-encoding": "chunked", "x-content-type-options": "nosniff", - "x-request-id": "req_5af7a349596b4a228bc17a4de061df36" + "x-ratelimit-limit-requests": "30000", + "x-ratelimit-limit-tokens": "150000000", + "x-ratelimit-remaining-requests": "29999", + "x-ratelimit-remaining-tokens": "149999942", + "x-ratelimit-reset-requests": "2ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_c59889724ba945338c7063282f469680" }, "status": 200, "statusText": "OK" } }, { - "callIndex": 11, - "id": "34ad62d7c96775e7", + "callIndex": 9, + "id": "3f08b53881e505ce", "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-07-21T08:03:57.632Z", + "recordedAt": "2026-09-17T10:41:28.628Z", "request": { "body": { "kind": "json", "value": { "input": [ { - "content": "You are a shopping assistant. Use the tools before answering pricing questions.", + "content": "You are a terse assistant.", "role": "system" }, { "content": [ { - "text": "I need help comparing laptop prices before checkout.", + "text": "Reply with exactly HELLO and no punctuation.", "type": "input_text" } ], "role": "user" - }, + } + ], + "max_output_tokens": 24, + "model": "gpt-4o-mini-2024-07-18" + } + }, + "headers": {}, + "method": "POST", + "url": "https://api.openai.com/v1/responses" + }, + "response": { + "body": { + "kind": "json", + "value": { + "background": false, + "billing": { + "payer": "developer" + }, + "completed_at": 1789641688, + "created_at": 1789641688, + "error": null, + "frequency_penalty": 0, + "id": "resp_0455ad432300de38006aabc3d8079487d29bc021972ac2e662", + "incomplete_details": null, + "instructions": null, + "max_output_tokens": 24, + "max_tool_calls": null, + "metadata": {}, + "model": "gpt-4o-mini-2024-07-18", + "moderation": null, + "object": "response", + "output": [ { "content": [ { - "text": "I can compare store prices and apply a discount code.", + "annotations": [], + "logprobs": [], + "text": "HELLO", "type": "output_text" } ], - "role": "assistant" - }, - { - "content": [ - { - "text": "Call get_store_price for a laptop at StoreA and StoreB, then call apply_discount with code SAVE20 for the cheaper price. Finish with the discounted total.", - "type": "input_text" - } - ], + "id": "msg_0455ad432300de38006aabc3d86ec087d29b32151ac6defb34", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "parallel_tool_calls": true, + "presence_penalty": 0, + "previous_response_id": null, + "prompt_cache_key": "[REDACTED]", + "prompt_cache_retention": "in_memory", + "reasoning": { + "context": null, + "effort": null, + "summary": null + }, + "safety_identifier": null, + "service_tier": "default", + "status": "completed", + "store": true, + "temperature": 1, + "text": { + "format": { + "type": "text" + }, + "verbosity": "medium" + }, + "tool_choice": "auto", + "tool_usage": { + "image_gen": { + "input_tokens": 0, + "input_tokens_details": { + "image_tokens": 0, + "text_tokens": 0 + }, + "output_tokens": 0, + "output_tokens_details": { + "image_tokens": 0, + "text_tokens": 0 + }, + "total_tokens": 0 + }, + "web_search": { + "num_requests": 0 + } + }, + "tools": [], + "top_logprobs": 0, + "top_p": 1, + "truncation": "disabled", + "usage": { + "input_tokens": 26, + "input_tokens_details": { + "cache_write_tokens": 0, + "cached_tokens": 0 + }, + "output_tokens": 3, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 29 + }, + "user": null + } + }, + "headers": { + "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", + "alt-svc": "h3=\":443\"; ma=86400", + "cf-cache-status": "DYNAMIC", + "cf-ray": "a3c77fa5a91acd76-IAD", + "connection": "keep-alive", + "content-encoding": "gzip", + "content-type": "application/json", + "date": "Thu, 17 Sep 2026 10:41:28 GMT", + "openai-organization": "braintrust-data", + "openai-processing-ms": "573", + "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", + "openai-version": "2020-10-01", + "server": "cloudflare", + "set-cookie": "[REDACTED]", + "strict-transport-security": "max-age=31536000; includeSubDomains; preload", + "transfer-encoding": "chunked", + "x-content-type-options": "nosniff", + "x-ratelimit-limit-requests": "30000", + "x-ratelimit-limit-tokens": "150000000", + "x-ratelimit-remaining-requests": "29999", + "x-ratelimit-remaining-tokens": "149999952", + "x-ratelimit-reset-requests": "2ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_7a69d6c2ba8341538efcb0209475c1cf" + }, + "status": 200, + "statusText": "OK" + } + }, + { + "callIndex": 10, + "id": "d026123ce87dfbca", + "matchKey": "POST api.openai.com/v1/responses", + "recordedAt": "2026-09-17T10:41:29.215Z", + "request": { + "body": { + "kind": "json", + "value": { + "input": [ + { + "content": "You are a terse assistant.", + "role": "system" + }, + { + "content": [ + { + "text": "Reply with exactly STREAM HELLO and no punctuation.", + "type": "input_text" + } + ], + "role": "user" + } + ], + "max_output_tokens": 24, + "model": "gpt-4o-mini-2024-07-18", + "stream": true + } + }, + "headers": {}, + "method": "POST", + "url": "https://api.openai.com/v1/responses" + }, + "response": { + "body": { + "chunks": [ + "event: response.created\ndata: {\"type\":\"response.created\",\"response\":{\"id\":\"resp_06a1683a2692bbe7006aabc3d8b44c87d287d48bf19903b6aa\",\"object\":\"response\",\"created_at\":1789641688,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":24,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":1,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":0}", + "event: response.in_progress\ndata: {\"type\":\"response.in_progress\",\"response\":{\"id\":\"resp_06a1683a2692bbe7006aabc3d8b44c87d287d48bf19903b6aa\",\"object\":\"response\",\"created_at\":1789641688,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":24,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":1,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":1}", + "event: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"msg_06a1683a2692bbe7006aabc3d9014887d2878a4467d06dc996\",\"type\":\"message\",\"status\":\"in_progress\",\"content\":[],\"role\":\"assistant\"},\"output_index\":0,\"sequence_number\":2}", + "event: response.content_part.added\ndata: {\"type\":\"response.content_part.added\",\"content_index\":0,\"item_id\":\"msg_06a1683a2692bbe7006aabc3d9014887d2878a4467d06dc996\",\"output_index\":0,\"part\":{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"\"},\"sequence_number\":3}", + "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"STREAM\",\"item_id\":\"msg_06a1683a2692bbe7006aabc3d9014887d2878a4467d06dc996\",\"logprobs\":[],\"obfuscation\":\"x0cEn7Q2Uu\",\"output_index\":0,\"sequence_number\":4}", + "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\" HEL\",\"item_id\":\"msg_06a1683a2692bbe7006aabc3d9014887d2878a4467d06dc996\",\"logprobs\":[],\"obfuscation\":\"kZcGEMT6Mgj8\",\"output_index\":0,\"sequence_number\":5}", + "event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"LO\",\"item_id\":\"msg_06a1683a2692bbe7006aabc3d9014887d2878a4467d06dc996\",\"logprobs\":[],\"obfuscation\":\"Lp6R4tkG3W2rzA\",\"output_index\":0,\"sequence_number\":6}", + "event: response.output_text.done\ndata: {\"type\":\"response.output_text.done\",\"content_index\":0,\"item_id\":\"msg_06a1683a2692bbe7006aabc3d9014887d2878a4467d06dc996\",\"logprobs\":[],\"output_index\":0,\"sequence_number\":7,\"text\":\"STREAM HELLO\"}", + "event: response.content_part.done\ndata: {\"type\":\"response.content_part.done\",\"content_index\":0,\"item_id\":\"msg_06a1683a2692bbe7006aabc3d9014887d2878a4467d06dc996\",\"output_index\":0,\"part\":{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"STREAM HELLO\"},\"sequence_number\":8}", + "event: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"msg_06a1683a2692bbe7006aabc3d9014887d2878a4467d06dc996\",\"type\":\"message\",\"status\":\"completed\",\"content\":[{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"STREAM HELLO\"}],\"role\":\"assistant\"},\"output_index\":0,\"sequence_number\":9}", + "event: response.completed\ndata: {\"type\":\"response.completed\",\"response\":{\"id\":\"resp_06a1683a2692bbe7006aabc3d8b44c87d287d48bf19903b6aa\",\"object\":\"response\",\"created_at\":1789641688,\"status\":\"completed\",\"background\":false,\"completed_at\":1789641689,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":24,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[{\"id\":\"msg_06a1683a2692bbe7006aabc3d9014887d2878a4467d06dc996\",\"type\":\"message\",\"status\":\"completed\",\"content\":[{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"STREAM HELLO\"}],\"role\":\"assistant\"}],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"default\",\"store\":true,\"temperature\":1,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":{\"input_tokens\":27,\"input_tokens_details\":{\"cache_write_tokens\":0,\"cached_tokens\":0},\"output_tokens\":4,\"output_tokens_details\":{\"reasoning_tokens\":0},\"total_tokens\":31},\"user\":null,\"metadata\":{}},\"sequence_number\":10}" + ], + "kind": "sse" + }, + "headers": { + "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", + "alt-svc": "h3=\":443\"; ma=86400", + "cf-cache-status": "DYNAMIC", + "cf-ray": "a3c77faa0c99cd76-IAD", + "connection": "keep-alive", + "content-type": "text/event-stream; charset=utf-8", + "date": "Thu, 17 Sep 2026 10:41:29 GMT", + "openai-organization": "braintrust-data", + "openai-processing-ms": "329", + "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", + "openai-version": "2020-10-01", + "server": "cloudflare", + "set-cookie": "[REDACTED]", + "strict-transport-security": "max-age=31536000; includeSubDomains; preload", + "transfer-encoding": "chunked", + "x-content-type-options": "nosniff", + "x-ratelimit-limit-requests": "30000", + "x-ratelimit-limit-tokens": "150000000", + "x-ratelimit-remaining-requests": "29999", + "x-ratelimit-remaining-tokens": "149999955", + "x-ratelimit-reset-requests": "2ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_0730bee203ac4777ada0a85298145448" + }, + "status": 200, + "statusText": "OK" + } + }, + { + "callIndex": 11, + "id": "34ad62d7c96775e7", + "matchKey": "POST api.openai.com/v1/responses", + "recordedAt": "2026-09-17T10:41:30.256Z", + "request": { + "body": { + "kind": "json", + "value": { + "input": [ + { + "content": "You are a shopping assistant. Use the tools before answering pricing questions.", + "role": "system" + }, + { + "content": [ + { + "text": "I need help comparing laptop prices before checkout.", + "type": "input_text" + } + ], + "role": "user" + }, + { + "content": [ + { + "text": "I can compare store prices and apply a discount code.", + "type": "output_text" + } + ], + "role": "assistant" + }, + { + "content": [ + { + "text": "Call get_store_price for a laptop at StoreA and StoreB, then call apply_discount with code SAVE20 for the cheaper price. Finish with the discounted total.", + "type": "input_text" + } + ], "role": "user" } ], @@ -2545,11 +3069,11 @@ "billing": { "payer": "developer" }, - "completed_at": 1784621037, - "created_at": 1784621035, + "completed_at": 1789641690, + "created_at": 1789641689, "error": null, "frequency_penalty": 0, - "id": "resp_0bc34b37f36070e3006a5f27eb783c81a3bb4c5a2b86dad179", + "id": "resp_06da380fc702b258006aabc3d94b6087d28ba0877a0a2b75e5", "incomplete_details": null, "instructions": null, "max_output_tokens": 256, @@ -2561,16 +3085,16 @@ "output": [ { "arguments": "{\"item\":\"laptop\",\"store\":\"StoreA\"}", - "call_id": "call_TjPPIKKVTTeVRRCfm4ZN1Y8v", - "id": "fc_0bc34b37f36070e3006a5f27ed333881a399b741a36c0b301e", + "call_id": "call_l5AyNNXOWSUPonxORZfgGvrQ", + "id": "fc_06da380fc702b258006aabc3da1c1c87d2bbbbf8f1fb652259", "name": "get_store_price", "status": "completed", "type": "function_call" }, { "arguments": "{\"item\":\"laptop\",\"store\":\"StoreB\"}", - "call_id": "call_ope2842MEXxBBvRf2BJXrS7d", - "id": "fc_0bc34b37f36070e3006a5f27ed334481a3875f8ac116afe562", + "call_id": "call_mmK6ormkEj5QzEq30KT7FRaV", + "id": "fc_06da380fc702b258006aabc3da1c3087d2b380069e9ad1b3f2", "name": "get_store_price", "status": "completed", "type": "function_call" @@ -2686,13 +3210,13 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8b11dc9cc81ed-IAD", + "cf-ray": "a3c77fadbedecd76-IAD", "connection": "keep-alive", "content-encoding": "gzip", "content-type": "application/json", - "date": "Tue, 21 Jul 2026 08:03:57 GMT", + "date": "Thu, 17 Sep 2026 10:41:30 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "2397", + "openai-processing-ms": "948", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -2706,7 +3230,7 @@ "x-ratelimit-remaining-tokens": "149999610", "x-ratelimit-reset-requests": "2ms", "x-ratelimit-reset-tokens": "0s", - "x-request-id": "req_d147ee0203bf46cb9bec2b8c4f358145" + "x-request-id": "req_2d3a534d30c049dda3103392e4ef44e1" }, "status": 200, "statusText": "OK" @@ -2714,9 +3238,9 @@ }, { "callIndex": 12, - "id": "9ddc3c641337677d", + "id": "57f3678501877210", "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-07-21T08:03:58.550Z", + "recordedAt": "2026-09-17T10:41:31.063Z", "request": { "body": { "kind": "json", @@ -2755,23 +3279,23 @@ }, { "arguments": "{\"item\":\"laptop\",\"store\":\"StoreA\"}", - "call_id": "call_TjPPIKKVTTeVRRCfm4ZN1Y8v", + "call_id": "call_l5AyNNXOWSUPonxORZfgGvrQ", "name": "get_store_price", "type": "function_call" }, { "arguments": "{\"item\":\"laptop\",\"store\":\"StoreB\"}", - "call_id": "call_ope2842MEXxBBvRf2BJXrS7d", + "call_id": "call_mmK6ormkEj5QzEq30KT7FRaV", "name": "get_store_price", "type": "function_call" }, { - "call_id": "call_TjPPIKKVTTeVRRCfm4ZN1Y8v", + "call_id": "call_l5AyNNXOWSUPonxORZfgGvrQ", "output": "{\"item\":\"laptop\",\"price\":999,\"store\":\"StoreA\"}", "type": "function_call_output" }, { - "call_id": "call_ope2842MEXxBBvRf2BJXrS7d", + "call_id": "call_mmK6ormkEj5QzEq30KT7FRaV", "output": "{\"item\":\"laptop\",\"price\":1099,\"store\":\"StoreB\"}", "type": "function_call_output" } @@ -2838,11 +3362,11 @@ "billing": { "payer": "developer" }, - "completed_at": 1784621038, - "created_at": 1784621037, + "completed_at": 1789641690, + "created_at": 1789641690, "error": null, "frequency_penalty": 0, - "id": "resp_0bc34b37f36070e3006a5f27edb03481a3a3a6ce7cbaf1e953", + "id": "resp_009530944f501ff2006aabc3da54e487d2b8c72c780167e091", "incomplete_details": null, "instructions": null, "max_output_tokens": 256, @@ -2854,8 +3378,8 @@ "output": [ { "arguments": "{\"discountCode\":\"SAVE20\",\"total\":999}", - "call_id": "call_IN20AE9uVzVHjg5jO7D2LjdA", - "id": "fc_0bc34b37f36070e3006a5f27ee431081a3a5e08cd3679cd665", + "call_id": "call_R3zLa7gyP92eDF80u8hkIiy9", + "id": "fc_009530944f501ff2006aabc3dacd4087d2ad998d9ee7c72cda", "name": "apply_discount", "status": "completed", "type": "function_call" @@ -2971,13 +3495,13 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8b12d3c7581ed-IAD", + "cf-ray": "a3c77fb43fb5cd76-IAD", "connection": "keep-alive", "content-encoding": "gzip", "content-type": "application/json", - "date": "Tue, 21 Jul 2026 08:03:58 GMT", + "date": "Thu, 17 Sep 2026 10:41:31 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "865", + "openai-processing-ms": "707", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -2991,7 +3515,7 @@ "x-ratelimit-remaining-tokens": "149999522", "x-ratelimit-reset-requests": "2ms", "x-ratelimit-reset-tokens": "0s", - "x-request-id": "req_2e1eb16536784848a008f90e3be1ad66" + "x-request-id": "req_7a273039444448c0a02c765f6b8c9554" }, "status": 200, "statusText": "OK" @@ -2999,9 +3523,9 @@ }, { "callIndex": 13, - "id": "a8aa46bb39b31187", + "id": "5b7c8e75e1916969", "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-07-21T08:04:00.139Z", + "recordedAt": "2026-09-17T10:41:32.219Z", "request": { "body": { "kind": "json", @@ -3040,34 +3564,34 @@ }, { "arguments": "{\"item\":\"laptop\",\"store\":\"StoreA\"}", - "call_id": "call_TjPPIKKVTTeVRRCfm4ZN1Y8v", + "call_id": "call_l5AyNNXOWSUPonxORZfgGvrQ", "name": "get_store_price", "type": "function_call" }, { "arguments": "{\"item\":\"laptop\",\"store\":\"StoreB\"}", - "call_id": "call_ope2842MEXxBBvRf2BJXrS7d", + "call_id": "call_mmK6ormkEj5QzEq30KT7FRaV", "name": "get_store_price", "type": "function_call" }, { - "call_id": "call_TjPPIKKVTTeVRRCfm4ZN1Y8v", + "call_id": "call_l5AyNNXOWSUPonxORZfgGvrQ", "output": "{\"item\":\"laptop\",\"price\":999,\"store\":\"StoreA\"}", "type": "function_call_output" }, { - "call_id": "call_ope2842MEXxBBvRf2BJXrS7d", + "call_id": "call_mmK6ormkEj5QzEq30KT7FRaV", "output": "{\"item\":\"laptop\",\"price\":1099,\"store\":\"StoreB\"}", "type": "function_call_output" }, { "arguments": "{\"discountCode\":\"SAVE20\",\"total\":999}", - "call_id": "call_IN20AE9uVzVHjg5jO7D2LjdA", + "call_id": "call_R3zLa7gyP92eDF80u8hkIiy9", "name": "apply_discount", "type": "function_call" }, { - "call_id": "call_IN20AE9uVzVHjg5jO7D2LjdA", + "call_id": "call_R3zLa7gyP92eDF80u8hkIiy9", "output": "{\"discountCode\":\"SAVE20\",\"finalTotal\":799.2,\"originalTotal\":999}", "type": "function_call_output" } @@ -3134,11 +3658,11 @@ "billing": { "payer": "developer" }, - "completed_at": 1784621040, - "created_at": 1784621038, + "completed_at": 1789641691, + "created_at": 1789641691, "error": null, "frequency_penalty": 0, - "id": "resp_0bc34b37f36070e3006a5f27ee986881a3bd2aaaa2a3eb11b4", + "id": "resp_067a41ebe70a352b006aabc3db262487d2af3ce91c996dff43", "incomplete_details": null, "instructions": null, "max_output_tokens": 256, @@ -3153,11 +3677,11 @@ { "annotations": [], "logprobs": [], - "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A** at $999. After applying the discount code **SAVE20**, the final total is **$799.20**.", + "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A**. After applying the discount code **SAVE20**, the final total is **$799.20**.", "type": "output_text" } ], - "id": "msg_0bc34b37f36070e3006a5f27ef28b881a3a754aa42ea8c32af", + "id": "msg_067a41ebe70a352b006aabc3db92e887d29ecc6f67510fcec1", "role": "assistant", "status": "completed", "type": "message" @@ -3255,16 +3779,16 @@ "top_p": 1, "truncation": "disabled", "usage": { - "input_tokens": 308, + "input_tokens": 305, "input_tokens_details": { "cache_write_tokens": 0, "cached_tokens": 0 }, - "output_tokens": 62, + "output_tokens": 59, "output_tokens_details": { "reasoning_tokens": 0 }, - "total_tokens": 370 + "total_tokens": 364 }, "user": null } @@ -3273,13 +3797,13 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8b132f8c981ed-IAD", + "cf-ray": "a3c77fb93d12cd76-IAD", "connection": "keep-alive", "content-encoding": "gzip", "content-type": "application/json", - "date": "Tue, 21 Jul 2026 08:04:00 GMT", + "date": "Thu, 17 Sep 2026 10:41:32 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "1539", + "openai-processing-ms": "1030", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -3290,10 +3814,10 @@ "x-ratelimit-limit-requests": "30000", "x-ratelimit-limit-tokens": "150000000", "x-ratelimit-remaining-requests": "29999", - "x-ratelimit-remaining-tokens": "149999475", + "x-ratelimit-remaining-tokens": "149999477", "x-ratelimit-reset-requests": "2ms", "x-ratelimit-reset-tokens": "0s", - "x-request-id": "req_bb15dbd2ec974b8a9f14c85aae552b18" + "x-request-id": "req_092b799628874c48b6d88c02776f1b73" }, "status": 200, "statusText": "OK" @@ -3303,7 +3827,7 @@ "callIndex": 14, "id": "cab5f9a41efafafd", "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-07-21T08:04:01.223Z", + "recordedAt": "2026-09-17T10:41:32.929Z", "request": { "body": { "kind": "json", @@ -3356,19 +3880,19 @@ "response": { "body": { "chunks": [ - "event: response.created\ndata: {\"type\":\"response.created\",\"response\":{\"id\":\"resp_0752ed7506f427ba006a5f27f03cf081918fcc7ec16d163e12\",\"object\":\"response\",\"created_at\":1784621040,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":0}", - "event: response.in_progress\ndata: {\"type\":\"response.in_progress\",\"response\":{\"id\":\"resp_0752ed7506f427ba006a5f27f03cf081918fcc7ec16d163e12\",\"object\":\"response\",\"created_at\":1784621040,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":1}", - "event: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"fc_0752ed7506f427ba006a5f27f0e58081918bd609110bf7c62b\",\"type\":\"function_call\",\"status\":\"in_progress\",\"arguments\":\"\",\"call_id\":\"call_mpfOztOhNBpNtHgrfO78vncQ\",\"name\":\"get_weather\"},\"output_index\":0,\"sequence_number\":2}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"{\\\"\",\"item_id\":\"fc_0752ed7506f427ba006a5f27f0e58081918bd609110bf7c62b\",\"obfuscation\":\"pS6mlNDVsg40VK\",\"output_index\":0,\"sequence_number\":3}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"location\",\"item_id\":\"fc_0752ed7506f427ba006a5f27f0e58081918bd609110bf7c62b\",\"obfuscation\":\"x97e29cR\",\"output_index\":0,\"sequence_number\":4}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"\\\":\\\"\",\"item_id\":\"fc_0752ed7506f427ba006a5f27f0e58081918bd609110bf7c62b\",\"obfuscation\":\"VkSY0yaEfBuSL\",\"output_index\":0,\"sequence_number\":5}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"Paris\",\"item_id\":\"fc_0752ed7506f427ba006a5f27f0e58081918bd609110bf7c62b\",\"obfuscation\":\"RdmVjHvZK0Y\",\"output_index\":0,\"sequence_number\":6}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\",\",\"item_id\":\"fc_0752ed7506f427ba006a5f27f0e58081918bd609110bf7c62b\",\"obfuscation\":\"TKB9MNT89CVKufc\",\"output_index\":0,\"sequence_number\":7}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\" France\",\"item_id\":\"fc_0752ed7506f427ba006a5f27f0e58081918bd609110bf7c62b\",\"obfuscation\":\"TeFIScLVS\",\"output_index\":0,\"sequence_number\":8}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"\\\"}\",\"item_id\":\"fc_0752ed7506f427ba006a5f27f0e58081918bd609110bf7c62b\",\"obfuscation\":\"ebJ4OB0rnOo2TJ\",\"output_index\":0,\"sequence_number\":9}", - "event: response.function_call_arguments.done\ndata: {\"type\":\"response.function_call_arguments.done\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"item_id\":\"fc_0752ed7506f427ba006a5f27f0e58081918bd609110bf7c62b\",\"output_index\":0,\"sequence_number\":10}", - "event: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"fc_0752ed7506f427ba006a5f27f0e58081918bd609110bf7c62b\",\"type\":\"function_call\",\"status\":\"completed\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"call_id\":\"call_mpfOztOhNBpNtHgrfO78vncQ\",\"name\":\"get_weather\"},\"output_index\":0,\"sequence_number\":11}", - "event: response.completed\ndata: {\"type\":\"response.completed\",\"response\":{\"id\":\"resp_0752ed7506f427ba006a5f27f03cf081918fcc7ec16d163e12\",\"object\":\"response\",\"created_at\":1784621040,\"status\":\"completed\",\"background\":false,\"completed_at\":1784621041,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[{\"id\":\"fc_0752ed7506f427ba006a5f27f0e58081918bd609110bf7c62b\",\"type\":\"function_call\",\"status\":\"completed\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"call_id\":\"call_mpfOztOhNBpNtHgrfO78vncQ\",\"name\":\"get_weather\"}],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"default\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":{\"input_tokens\":84,\"input_tokens_details\":{\"cache_write_tokens\":0,\"cached_tokens\":0},\"output_tokens\":8,\"output_tokens_details\":{\"reasoning_tokens\":0},\"total_tokens\":92},\"user\":null,\"metadata\":{}},\"sequence_number\":12}" + "event: response.created\ndata: {\"type\":\"response.created\",\"response\":{\"id\":\"resp_09b06818adeb1c88006aabc3dc5d7c87d28b8eb92e478c2923\",\"object\":\"response\",\"created_at\":1789641692,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":0}", + "event: response.in_progress\ndata: {\"type\":\"response.in_progress\",\"response\":{\"id\":\"resp_09b06818adeb1c88006aabc3dc5d7c87d28b8eb92e478c2923\",\"object\":\"response\",\"created_at\":1789641692,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":1}", + "event: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"fc_09b06818adeb1c88006aabc3dcb82c87d2a3cc99410f7c1d2e\",\"type\":\"function_call\",\"status\":\"in_progress\",\"arguments\":\"\",\"call_id\":\"call_NLfwcFdv32aNkIJGMeshRH3c\",\"name\":\"get_weather\"},\"output_index\":0,\"sequence_number\":2}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"{\\\"\",\"item_id\":\"fc_09b06818adeb1c88006aabc3dcb82c87d2a3cc99410f7c1d2e\",\"obfuscation\":\"jVehK6Hwh6tZ1S\",\"output_index\":0,\"sequence_number\":3}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"location\",\"item_id\":\"fc_09b06818adeb1c88006aabc3dcb82c87d2a3cc99410f7c1d2e\",\"obfuscation\":\"TX0qMHdP\",\"output_index\":0,\"sequence_number\":4}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"\\\":\\\"\",\"item_id\":\"fc_09b06818adeb1c88006aabc3dcb82c87d2a3cc99410f7c1d2e\",\"obfuscation\":\"U76B8r3fh5O4r\",\"output_index\":0,\"sequence_number\":5}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"Paris\",\"item_id\":\"fc_09b06818adeb1c88006aabc3dcb82c87d2a3cc99410f7c1d2e\",\"obfuscation\":\"x0iPpSOyZmV\",\"output_index\":0,\"sequence_number\":6}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\",\",\"item_id\":\"fc_09b06818adeb1c88006aabc3dcb82c87d2a3cc99410f7c1d2e\",\"obfuscation\":\"19zkNMcc5fU88MT\",\"output_index\":0,\"sequence_number\":7}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\" France\",\"item_id\":\"fc_09b06818adeb1c88006aabc3dcb82c87d2a3cc99410f7c1d2e\",\"obfuscation\":\"6q4cfsgqk\",\"output_index\":0,\"sequence_number\":8}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"\\\"}\",\"item_id\":\"fc_09b06818adeb1c88006aabc3dcb82c87d2a3cc99410f7c1d2e\",\"obfuscation\":\"D3tJlr2lZVPlex\",\"output_index\":0,\"sequence_number\":9}", + "event: response.function_call_arguments.done\ndata: {\"type\":\"response.function_call_arguments.done\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"item_id\":\"fc_09b06818adeb1c88006aabc3dcb82c87d2a3cc99410f7c1d2e\",\"output_index\":0,\"sequence_number\":10}", + "event: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"fc_09b06818adeb1c88006aabc3dcb82c87d2a3cc99410f7c1d2e\",\"type\":\"function_call\",\"status\":\"completed\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"call_id\":\"call_NLfwcFdv32aNkIJGMeshRH3c\",\"name\":\"get_weather\"},\"output_index\":0,\"sequence_number\":11}", + "event: response.completed\ndata: {\"type\":\"response.completed\",\"response\":{\"id\":\"resp_09b06818adeb1c88006aabc3dc5d7c87d28b8eb92e478c2923\",\"object\":\"response\",\"created_at\":1789641692,\"status\":\"completed\",\"background\":false,\"completed_at\":1789641692,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[{\"id\":\"fc_09b06818adeb1c88006aabc3dcb82c87d2a3cc99410f7c1d2e\",\"type\":\"function_call\",\"status\":\"completed\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"call_id\":\"call_NLfwcFdv32aNkIJGMeshRH3c\",\"name\":\"get_weather\"}],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"default\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":{\"input_tokens\":84,\"input_tokens_details\":{\"cache_write_tokens\":0,\"cached_tokens\":0},\"output_tokens\":8,\"output_tokens_details\":{\"reasoning_tokens\":0},\"total_tokens\":92},\"user\":null,\"metadata\":{}},\"sequence_number\":12}" ], "kind": "sse" }, @@ -3376,12 +3900,12 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8b13d18a781ed-IAD", + "cf-ray": "a3c77fc0c89bcd76-IAD", "connection": "keep-alive", "content-type": "text/event-stream; charset=utf-8", - "date": "Tue, 21 Jul 2026 08:04:00 GMT", + "date": "Thu, 17 Sep 2026 10:41:32 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "240", + "openai-processing-ms": "405", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -3389,7 +3913,13 @@ "strict-transport-security": "max-age=31536000; includeSubDomains; preload", "transfer-encoding": "chunked", "x-content-type-options": "nosniff", - "x-request-id": "req_b415aef93fdf43eda4ef1481da980e64" + "x-ratelimit-limit-requests": "30000", + "x-ratelimit-limit-tokens": "150000000", + "x-ratelimit-remaining-requests": "29999", + "x-ratelimit-remaining-tokens": "149999697", + "x-ratelimit-reset-requests": "2ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_59119e26112a442ca32cc83bd68f795c" }, "status": 200, "statusText": "OK" @@ -3397,9 +3927,9 @@ }, { "callIndex": 15, - "id": "98dd9cbba78781cc", + "id": "d81bd60f80937c81", "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-07-21T08:04:01.927Z", + "recordedAt": "2026-09-17T10:41:33.771Z", "request": { "body": { "kind": "json", @@ -3420,12 +3950,12 @@ }, { "arguments": "{\"location\":\"Paris, France\"}", - "call_id": "call_mpfOztOhNBpNtHgrfO78vncQ", + "call_id": "call_NLfwcFdv32aNkIJGMeshRH3c", "name": "get_weather", "type": "function_call" }, { - "call_id": "call_mpfOztOhNBpNtHgrfO78vncQ", + "call_id": "call_NLfwcFdv32aNkIJGMeshRH3c", "output": "{\"condition\":\"sunny\",\"location\":\"Paris, France\",\"temperatureC\":22}", "type": "function_call_output" } @@ -3463,19 +3993,19 @@ "response": { "body": { "chunks": [ - "event: response.created\ndata: {\"type\":\"response.created\",\"response\":{\"id\":\"resp_093b8446f19989be006a5f27f14adc81a1b6be0e69179546da\",\"object\":\"response\",\"created_at\":1784621041,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":0}", - "event: response.in_progress\ndata: {\"type\":\"response.in_progress\",\"response\":{\"id\":\"resp_093b8446f19989be006a5f27f14adc81a1b6be0e69179546da\",\"object\":\"response\",\"created_at\":1784621041,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":1}", - "event: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"fc_093b8446f19989be006a5f27f1b30481a19d836b3c87ee45fa\",\"type\":\"function_call\",\"status\":\"in_progress\",\"arguments\":\"\",\"call_id\":\"call_ZzKVc3iSosMbTRLVAG4b24Bu\",\"name\":\"get_weather\"},\"output_index\":0,\"sequence_number\":2}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"{\\\"\",\"item_id\":\"fc_093b8446f19989be006a5f27f1b30481a19d836b3c87ee45fa\",\"obfuscation\":\"LrNHQiRWMe58dE\",\"output_index\":0,\"sequence_number\":3}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"location\",\"item_id\":\"fc_093b8446f19989be006a5f27f1b30481a19d836b3c87ee45fa\",\"obfuscation\":\"jNvwJQPI\",\"output_index\":0,\"sequence_number\":4}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"\\\":\\\"\",\"item_id\":\"fc_093b8446f19989be006a5f27f1b30481a19d836b3c87ee45fa\",\"obfuscation\":\"kPhXfi52UTwJu\",\"output_index\":0,\"sequence_number\":5}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"Paris\",\"item_id\":\"fc_093b8446f19989be006a5f27f1b30481a19d836b3c87ee45fa\",\"obfuscation\":\"Fd3txPnh4bP\",\"output_index\":0,\"sequence_number\":6}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\",\",\"item_id\":\"fc_093b8446f19989be006a5f27f1b30481a19d836b3c87ee45fa\",\"obfuscation\":\"u1K4VhePtTkiS0S\",\"output_index\":0,\"sequence_number\":7}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\" France\",\"item_id\":\"fc_093b8446f19989be006a5f27f1b30481a19d836b3c87ee45fa\",\"obfuscation\":\"nUEVuDEk5\",\"output_index\":0,\"sequence_number\":8}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"\\\"}\",\"item_id\":\"fc_093b8446f19989be006a5f27f1b30481a19d836b3c87ee45fa\",\"obfuscation\":\"bjdKRhbzm8KSUg\",\"output_index\":0,\"sequence_number\":9}", - "event: response.function_call_arguments.done\ndata: {\"type\":\"response.function_call_arguments.done\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"item_id\":\"fc_093b8446f19989be006a5f27f1b30481a19d836b3c87ee45fa\",\"output_index\":0,\"sequence_number\":10}", - "event: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"fc_093b8446f19989be006a5f27f1b30481a19d836b3c87ee45fa\",\"type\":\"function_call\",\"status\":\"completed\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"call_id\":\"call_ZzKVc3iSosMbTRLVAG4b24Bu\",\"name\":\"get_weather\"},\"output_index\":0,\"sequence_number\":11}", - "event: response.completed\ndata: {\"type\":\"response.completed\",\"response\":{\"id\":\"resp_093b8446f19989be006a5f27f14adc81a1b6be0e69179546da\",\"object\":\"response\",\"created_at\":1784621041,\"status\":\"completed\",\"background\":false,\"completed_at\":1784621041,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[{\"id\":\"fc_093b8446f19989be006a5f27f1b30481a19d836b3c87ee45fa\",\"type\":\"function_call\",\"status\":\"completed\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"call_id\":\"call_ZzKVc3iSosMbTRLVAG4b24Bu\",\"name\":\"get_weather\"}],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"default\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":{\"input_tokens\":123,\"input_tokens_details\":{\"cache_write_tokens\":0,\"cached_tokens\":0},\"output_tokens\":8,\"output_tokens_details\":{\"reasoning_tokens\":0},\"total_tokens\":131},\"user\":null,\"metadata\":{}},\"sequence_number\":12}" + "event: response.created\ndata: {\"type\":\"response.created\",\"response\":{\"id\":\"resp_06b21c31b64294c6006aabc3dd062087d287467a11a7b9c607\",\"object\":\"response\",\"created_at\":1789641693,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":0}", + "event: response.in_progress\ndata: {\"type\":\"response.in_progress\",\"response\":{\"id\":\"resp_06b21c31b64294c6006aabc3dd062087d287467a11a7b9c607\",\"object\":\"response\",\"created_at\":1789641693,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":1}", + "event: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"fc_06b21c31b64294c6006aabc3dd8ab887d2b05c9c2383bc124a\",\"type\":\"function_call\",\"status\":\"in_progress\",\"arguments\":\"\",\"call_id\":\"call_5mhCV13928bzsQtRLS9Bwa71\",\"name\":\"get_weather\"},\"output_index\":0,\"sequence_number\":2}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"{\\\"\",\"item_id\":\"fc_06b21c31b64294c6006aabc3dd8ab887d2b05c9c2383bc124a\",\"obfuscation\":\"FNcWklU8dOAYFW\",\"output_index\":0,\"sequence_number\":3}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"location\",\"item_id\":\"fc_06b21c31b64294c6006aabc3dd8ab887d2b05c9c2383bc124a\",\"obfuscation\":\"iWYqziOK\",\"output_index\":0,\"sequence_number\":4}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"\\\":\\\"\",\"item_id\":\"fc_06b21c31b64294c6006aabc3dd8ab887d2b05c9c2383bc124a\",\"obfuscation\":\"bg23QN5SIuqxR\",\"output_index\":0,\"sequence_number\":5}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"Paris\",\"item_id\":\"fc_06b21c31b64294c6006aabc3dd8ab887d2b05c9c2383bc124a\",\"obfuscation\":\"5LtOYjE5Hye\",\"output_index\":0,\"sequence_number\":6}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\",\",\"item_id\":\"fc_06b21c31b64294c6006aabc3dd8ab887d2b05c9c2383bc124a\",\"obfuscation\":\"Ti9d0HJJnCSOELY\",\"output_index\":0,\"sequence_number\":7}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\" France\",\"item_id\":\"fc_06b21c31b64294c6006aabc3dd8ab887d2b05c9c2383bc124a\",\"obfuscation\":\"umEpPuce8\",\"output_index\":0,\"sequence_number\":8}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"\\\"}\",\"item_id\":\"fc_06b21c31b64294c6006aabc3dd8ab887d2b05c9c2383bc124a\",\"obfuscation\":\"hfgyUaNegGu1Eq\",\"output_index\":0,\"sequence_number\":9}", + "event: response.function_call_arguments.done\ndata: {\"type\":\"response.function_call_arguments.done\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"item_id\":\"fc_06b21c31b64294c6006aabc3dd8ab887d2b05c9c2383bc124a\",\"output_index\":0,\"sequence_number\":10}", + "event: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"fc_06b21c31b64294c6006aabc3dd8ab887d2b05c9c2383bc124a\",\"type\":\"function_call\",\"status\":\"completed\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"call_id\":\"call_5mhCV13928bzsQtRLS9Bwa71\",\"name\":\"get_weather\"},\"output_index\":0,\"sequence_number\":11}", + "event: response.completed\ndata: {\"type\":\"response.completed\",\"response\":{\"id\":\"resp_06b21c31b64294c6006aabc3dd062087d287467a11a7b9c607\",\"object\":\"response\",\"created_at\":1789641693,\"status\":\"completed\",\"background\":false,\"completed_at\":1789641693,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[{\"id\":\"fc_06b21c31b64294c6006aabc3dd8ab887d2b05c9c2383bc124a\",\"type\":\"function_call\",\"status\":\"completed\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"call_id\":\"call_5mhCV13928bzsQtRLS9Bwa71\",\"name\":\"get_weather\"}],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"default\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":{\"input_tokens\":123,\"input_tokens_details\":{\"cache_write_tokens\":0,\"cached_tokens\":0},\"output_tokens\":8,\"output_tokens_details\":{\"reasoning_tokens\":0},\"total_tokens\":131},\"user\":null,\"metadata\":{}},\"sequence_number\":12}" ], "kind": "sse" }, @@ -3483,12 +4013,12 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8b143cdbb81ed-IAD", + "cf-ray": "a3c77fc50aa2cd76-IAD", "connection": "keep-alive", "content-type": "text/event-stream; charset=utf-8", - "date": "Tue, 21 Jul 2026 08:04:01 GMT", + "date": "Thu, 17 Sep 2026 10:41:33 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "106", + "openai-processing-ms": "543", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -3496,7 +4026,13 @@ "strict-transport-security": "max-age=31536000; includeSubDomains; preload", "transfer-encoding": "chunked", "x-content-type-options": "nosniff", - "x-request-id": "req_e7c7d32a2e8a4fa79792d199008f4457" + "x-ratelimit-limit-requests": "30000", + "x-ratelimit-limit-tokens": "150000000", + "x-ratelimit-remaining-requests": "29999", + "x-ratelimit-remaining-tokens": "149999660", + "x-ratelimit-reset-requests": "2ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_5f79916ec74b4d66958aa99bf9e8662b" }, "status": 200, "statusText": "OK" @@ -3504,9 +4040,9 @@ }, { "callIndex": 16, - "id": "1c7358a637076721", + "id": "5abf175da2e93c5d", "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-07-21T08:04:02.738Z", + "recordedAt": "2026-09-17T10:41:34.687Z", "request": { "body": { "kind": "json", @@ -3527,23 +4063,23 @@ }, { "arguments": "{\"location\":\"Paris, France\"}", - "call_id": "call_mpfOztOhNBpNtHgrfO78vncQ", + "call_id": "call_NLfwcFdv32aNkIJGMeshRH3c", "name": "get_weather", "type": "function_call" }, { - "call_id": "call_mpfOztOhNBpNtHgrfO78vncQ", + "call_id": "call_NLfwcFdv32aNkIJGMeshRH3c", "output": "{\"condition\":\"sunny\",\"location\":\"Paris, France\",\"temperatureC\":22}", "type": "function_call_output" }, { "arguments": "{\"location\":\"Paris, France\"}", - "call_id": "call_ZzKVc3iSosMbTRLVAG4b24Bu", + "call_id": "call_5mhCV13928bzsQtRLS9Bwa71", "name": "get_weather", "type": "function_call" }, { - "call_id": "call_ZzKVc3iSosMbTRLVAG4b24Bu", + "call_id": "call_5mhCV13928bzsQtRLS9Bwa71", "output": "{\"condition\":\"sunny\",\"location\":\"Paris, France\",\"temperatureC\":22}", "type": "function_call_output" } @@ -3581,19 +4117,19 @@ "response": { "body": { "chunks": [ - "event: response.created\ndata: {\"type\":\"response.created\",\"response\":{\"id\":\"resp_01283687032ff7a9006a5f27f1fe5c819c926420d6fd6567bc\",\"object\":\"response\",\"created_at\":1784621042,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":0}", - "event: response.in_progress\ndata: {\"type\":\"response.in_progress\",\"response\":{\"id\":\"resp_01283687032ff7a9006a5f27f1fe5c819c926420d6fd6567bc\",\"object\":\"response\",\"created_at\":1784621042,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":1}", - "event: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"fc_01283687032ff7a9006a5f27f270b0819ca0a4edf839bd0931\",\"type\":\"function_call\",\"status\":\"in_progress\",\"arguments\":\"\",\"call_id\":\"call_sd8P6cB4Y4WNcSaamfMbCbUg\",\"name\":\"get_weather\"},\"output_index\":0,\"sequence_number\":2}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"{\\\"\",\"item_id\":\"fc_01283687032ff7a9006a5f27f270b0819ca0a4edf839bd0931\",\"obfuscation\":\"NndYQkdvqCdsuv\",\"output_index\":0,\"sequence_number\":3}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"location\",\"item_id\":\"fc_01283687032ff7a9006a5f27f270b0819ca0a4edf839bd0931\",\"obfuscation\":\"NzT8VZ1j\",\"output_index\":0,\"sequence_number\":4}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"\\\":\\\"\",\"item_id\":\"fc_01283687032ff7a9006a5f27f270b0819ca0a4edf839bd0931\",\"obfuscation\":\"v2xQAykOmdQsQ\",\"output_index\":0,\"sequence_number\":5}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"Paris\",\"item_id\":\"fc_01283687032ff7a9006a5f27f270b0819ca0a4edf839bd0931\",\"obfuscation\":\"4LufcQcEvFE\",\"output_index\":0,\"sequence_number\":6}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\",\",\"item_id\":\"fc_01283687032ff7a9006a5f27f270b0819ca0a4edf839bd0931\",\"obfuscation\":\"KGZFHJZREf0esN0\",\"output_index\":0,\"sequence_number\":7}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\" France\",\"item_id\":\"fc_01283687032ff7a9006a5f27f270b0819ca0a4edf839bd0931\",\"obfuscation\":\"XIvsW1pTf\",\"output_index\":0,\"sequence_number\":8}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"\\\"}\",\"item_id\":\"fc_01283687032ff7a9006a5f27f270b0819ca0a4edf839bd0931\",\"obfuscation\":\"N4rVFplTazvRNk\",\"output_index\":0,\"sequence_number\":9}", - "event: response.function_call_arguments.done\ndata: {\"type\":\"response.function_call_arguments.done\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"item_id\":\"fc_01283687032ff7a9006a5f27f270b0819ca0a4edf839bd0931\",\"output_index\":0,\"sequence_number\":10}", - "event: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"fc_01283687032ff7a9006a5f27f270b0819ca0a4edf839bd0931\",\"type\":\"function_call\",\"status\":\"completed\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"call_id\":\"call_sd8P6cB4Y4WNcSaamfMbCbUg\",\"name\":\"get_weather\"},\"output_index\":0,\"sequence_number\":11}", - "event: response.completed\ndata: {\"type\":\"response.completed\",\"response\":{\"id\":\"resp_01283687032ff7a9006a5f27f1fe5c819c926420d6fd6567bc\",\"object\":\"response\",\"created_at\":1784621042,\"status\":\"completed\",\"background\":false,\"completed_at\":1784621042,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[{\"id\":\"fc_01283687032ff7a9006a5f27f270b0819ca0a4edf839bd0931\",\"type\":\"function_call\",\"status\":\"completed\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"call_id\":\"call_sd8P6cB4Y4WNcSaamfMbCbUg\",\"name\":\"get_weather\"}],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"default\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":{\"input_tokens\":162,\"input_tokens_details\":{\"cache_write_tokens\":0,\"cached_tokens\":0},\"output_tokens\":8,\"output_tokens_details\":{\"reasoning_tokens\":0},\"total_tokens\":170},\"user\":null,\"metadata\":{}},\"sequence_number\":12}" + "event: response.created\ndata: {\"type\":\"response.created\",\"response\":{\"id\":\"resp_0d5648b99567abfc006aabc3dde11887d289da806616f018fc\",\"object\":\"response\",\"created_at\":1789641693,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":0}", + "event: response.in_progress\ndata: {\"type\":\"response.in_progress\",\"response\":{\"id\":\"resp_0d5648b99567abfc006aabc3dde11887d289da806616f018fc\",\"object\":\"response\",\"created_at\":1789641693,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":1}", + "event: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"fc_0d5648b99567abfc006aabc3de5d8087d2ad111b6e256ecab7\",\"type\":\"function_call\",\"status\":\"in_progress\",\"arguments\":\"\",\"call_id\":\"call_nXlz7j2IQxPuQ9kT4htFX3jm\",\"name\":\"get_weather\"},\"output_index\":0,\"sequence_number\":2}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"{\\\"\",\"item_id\":\"fc_0d5648b99567abfc006aabc3de5d8087d2ad111b6e256ecab7\",\"obfuscation\":\"Sj1bWKH9eSxv0m\",\"output_index\":0,\"sequence_number\":3}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"location\",\"item_id\":\"fc_0d5648b99567abfc006aabc3de5d8087d2ad111b6e256ecab7\",\"obfuscation\":\"ouztlMoL\",\"output_index\":0,\"sequence_number\":4}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"\\\":\\\"\",\"item_id\":\"fc_0d5648b99567abfc006aabc3de5d8087d2ad111b6e256ecab7\",\"obfuscation\":\"vZJtatM8HAN55\",\"output_index\":0,\"sequence_number\":5}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"Paris\",\"item_id\":\"fc_0d5648b99567abfc006aabc3de5d8087d2ad111b6e256ecab7\",\"obfuscation\":\"nYuW5IDRcWt\",\"output_index\":0,\"sequence_number\":6}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\",\",\"item_id\":\"fc_0d5648b99567abfc006aabc3de5d8087d2ad111b6e256ecab7\",\"obfuscation\":\"8iwzhLxQmnIfB0Y\",\"output_index\":0,\"sequence_number\":7}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\" France\",\"item_id\":\"fc_0d5648b99567abfc006aabc3de5d8087d2ad111b6e256ecab7\",\"obfuscation\":\"OdqtK9RC3\",\"output_index\":0,\"sequence_number\":8}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"\\\"}\",\"item_id\":\"fc_0d5648b99567abfc006aabc3de5d8087d2ad111b6e256ecab7\",\"obfuscation\":\"VSTjhYtgvNEkiQ\",\"output_index\":0,\"sequence_number\":9}", + "event: response.function_call_arguments.done\ndata: {\"type\":\"response.function_call_arguments.done\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"item_id\":\"fc_0d5648b99567abfc006aabc3de5d8087d2ad111b6e256ecab7\",\"output_index\":0,\"sequence_number\":10}", + "event: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"fc_0d5648b99567abfc006aabc3de5d8087d2ad111b6e256ecab7\",\"type\":\"function_call\",\"status\":\"completed\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"call_id\":\"call_nXlz7j2IQxPuQ9kT4htFX3jm\",\"name\":\"get_weather\"},\"output_index\":0,\"sequence_number\":11}", + "event: response.completed\ndata: {\"type\":\"response.completed\",\"response\":{\"id\":\"resp_0d5648b99567abfc006aabc3dde11887d289da806616f018fc\",\"object\":\"response\",\"created_at\":1789641693,\"status\":\"completed\",\"background\":false,\"completed_at\":1789641694,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[{\"id\":\"fc_0d5648b99567abfc006aabc3de5d8087d2ad111b6e256ecab7\",\"type\":\"function_call\",\"status\":\"completed\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"call_id\":\"call_nXlz7j2IQxPuQ9kT4htFX3jm\",\"name\":\"get_weather\"}],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"default\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":{\"input_tokens\":162,\"input_tokens_details\":{\"cache_write_tokens\":0,\"cached_tokens\":0},\"output_tokens\":8,\"output_tokens_details\":{\"reasoning_tokens\":0},\"total_tokens\":170},\"user\":null,\"metadata\":{}},\"sequence_number\":12}" ], "kind": "sse" }, @@ -3601,12 +4137,12 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8b14828b681ed-IAD", + "cf-ray": "a3c77fca4f21cd76-IAD", "connection": "keep-alive", "content-type": "text/event-stream; charset=utf-8", - "date": "Tue, 21 Jul 2026 08:04:02 GMT", + "date": "Thu, 17 Sep 2026 10:41:34 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "108", + "openai-processing-ms": "559", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -3614,7 +4150,13 @@ "strict-transport-security": "max-age=31536000; includeSubDomains; preload", "transfer-encoding": "chunked", "x-content-type-options": "nosniff", - "x-request-id": "req_71ea8f7d167b44489c4920c1ad0f8a5e" + "x-ratelimit-limit-requests": "30000", + "x-ratelimit-limit-tokens": "150000000", + "x-ratelimit-remaining-requests": "29999", + "x-ratelimit-remaining-tokens": "149999622", + "x-ratelimit-reset-requests": "2ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_5fc2de9fe4fb45ce9bda7bcba69b9933" }, "status": 200, "statusText": "OK" @@ -3622,9 +4164,9 @@ }, { "callIndex": 17, - "id": "b1fe0db3feace8a3", + "id": "ab5af7ee08740dd7", "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-07-21T08:04:03.387Z", + "recordedAt": "2026-09-17T10:41:35.526Z", "request": { "body": { "kind": "json", @@ -3645,34 +4187,34 @@ }, { "arguments": "{\"location\":\"Paris, France\"}", - "call_id": "call_mpfOztOhNBpNtHgrfO78vncQ", + "call_id": "call_NLfwcFdv32aNkIJGMeshRH3c", "name": "get_weather", "type": "function_call" }, { - "call_id": "call_mpfOztOhNBpNtHgrfO78vncQ", + "call_id": "call_NLfwcFdv32aNkIJGMeshRH3c", "output": "{\"condition\":\"sunny\",\"location\":\"Paris, France\",\"temperatureC\":22}", "type": "function_call_output" }, { "arguments": "{\"location\":\"Paris, France\"}", - "call_id": "call_ZzKVc3iSosMbTRLVAG4b24Bu", + "call_id": "call_5mhCV13928bzsQtRLS9Bwa71", "name": "get_weather", "type": "function_call" }, { - "call_id": "call_ZzKVc3iSosMbTRLVAG4b24Bu", + "call_id": "call_5mhCV13928bzsQtRLS9Bwa71", "output": "{\"condition\":\"sunny\",\"location\":\"Paris, France\",\"temperatureC\":22}", "type": "function_call_output" }, { "arguments": "{\"location\":\"Paris, France\"}", - "call_id": "call_sd8P6cB4Y4WNcSaamfMbCbUg", + "call_id": "call_nXlz7j2IQxPuQ9kT4htFX3jm", "name": "get_weather", "type": "function_call" }, { - "call_id": "call_sd8P6cB4Y4WNcSaamfMbCbUg", + "call_id": "call_nXlz7j2IQxPuQ9kT4htFX3jm", "output": "{\"condition\":\"sunny\",\"location\":\"Paris, France\",\"temperatureC\":22}", "type": "function_call_output" } @@ -3710,19 +4252,19 @@ "response": { "body": { "chunks": [ - "event: response.created\ndata: {\"type\":\"response.created\",\"response\":{\"id\":\"resp_07b3f092b7e5985f006a5f27f2cb88819cb7b0fb2740059842\",\"object\":\"response\",\"created_at\":1784621042,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":0}", - "event: response.in_progress\ndata: {\"type\":\"response.in_progress\",\"response\":{\"id\":\"resp_07b3f092b7e5985f006a5f27f2cb88819cb7b0fb2740059842\",\"object\":\"response\",\"created_at\":1784621042,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":1}", - "event: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"fc_07b3f092b7e5985f006a5f27f32e9c819cb2fc83d923f2a513\",\"type\":\"function_call\",\"status\":\"in_progress\",\"arguments\":\"\",\"call_id\":\"call_yNca6wEvID6ZYv9euyQsxdok\",\"name\":\"get_weather\"},\"output_index\":0,\"sequence_number\":2}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"{\\\"\",\"item_id\":\"fc_07b3f092b7e5985f006a5f27f32e9c819cb2fc83d923f2a513\",\"obfuscation\":\"R2R9bUsISaBOPG\",\"output_index\":0,\"sequence_number\":3}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"location\",\"item_id\":\"fc_07b3f092b7e5985f006a5f27f32e9c819cb2fc83d923f2a513\",\"obfuscation\":\"IuL3tlpq\",\"output_index\":0,\"sequence_number\":4}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"\\\":\\\"\",\"item_id\":\"fc_07b3f092b7e5985f006a5f27f32e9c819cb2fc83d923f2a513\",\"obfuscation\":\"tC1AXgsghYkLb\",\"output_index\":0,\"sequence_number\":5}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"Paris\",\"item_id\":\"fc_07b3f092b7e5985f006a5f27f32e9c819cb2fc83d923f2a513\",\"obfuscation\":\"VZcQrBYPG5W\",\"output_index\":0,\"sequence_number\":6}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\",\",\"item_id\":\"fc_07b3f092b7e5985f006a5f27f32e9c819cb2fc83d923f2a513\",\"obfuscation\":\"AY1xZ7ULG2hy1UG\",\"output_index\":0,\"sequence_number\":7}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\" France\",\"item_id\":\"fc_07b3f092b7e5985f006a5f27f32e9c819cb2fc83d923f2a513\",\"obfuscation\":\"DUkgAADhB\",\"output_index\":0,\"sequence_number\":8}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"\\\"}\",\"item_id\":\"fc_07b3f092b7e5985f006a5f27f32e9c819cb2fc83d923f2a513\",\"obfuscation\":\"P9q2pDuzkP8L0M\",\"output_index\":0,\"sequence_number\":9}", - "event: response.function_call_arguments.done\ndata: {\"type\":\"response.function_call_arguments.done\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"item_id\":\"fc_07b3f092b7e5985f006a5f27f32e9c819cb2fc83d923f2a513\",\"output_index\":0,\"sequence_number\":10}", - "event: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"fc_07b3f092b7e5985f006a5f27f32e9c819cb2fc83d923f2a513\",\"type\":\"function_call\",\"status\":\"completed\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"call_id\":\"call_yNca6wEvID6ZYv9euyQsxdok\",\"name\":\"get_weather\"},\"output_index\":0,\"sequence_number\":11}", - "event: response.completed\ndata: {\"type\":\"response.completed\",\"response\":{\"id\":\"resp_07b3f092b7e5985f006a5f27f2cb88819cb7b0fb2740059842\",\"object\":\"response\",\"created_at\":1784621042,\"status\":\"completed\",\"background\":false,\"completed_at\":1784621043,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[{\"id\":\"fc_07b3f092b7e5985f006a5f27f32e9c819cb2fc83d923f2a513\",\"type\":\"function_call\",\"status\":\"completed\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"call_id\":\"call_yNca6wEvID6ZYv9euyQsxdok\",\"name\":\"get_weather\"}],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"default\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":{\"input_tokens\":201,\"input_tokens_details\":{\"cache_write_tokens\":0,\"cached_tokens\":0},\"output_tokens\":8,\"output_tokens_details\":{\"reasoning_tokens\":0},\"total_tokens\":209},\"user\":null,\"metadata\":{}},\"sequence_number\":12}" + "event: response.created\ndata: {\"type\":\"response.created\",\"response\":{\"id\":\"resp_038a1c71c2055724006aabc3decd4087d2b1f0a6eca314090e\",\"object\":\"response\",\"created_at\":1789641694,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":0}", + "event: response.in_progress\ndata: {\"type\":\"response.in_progress\",\"response\":{\"id\":\"resp_038a1c71c2055724006aabc3decd4087d2b1f0a6eca314090e\",\"object\":\"response\",\"created_at\":1789641694,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":1}", + "event: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"fc_038a1c71c2055724006aabc3df3a8c87d2a0a8a89023f63f04\",\"type\":\"function_call\",\"status\":\"in_progress\",\"arguments\":\"\",\"call_id\":\"call_mxrE2sKGJLarGmw1vQpb62L8\",\"name\":\"get_weather\"},\"output_index\":0,\"sequence_number\":2}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"{\\\"\",\"item_id\":\"fc_038a1c71c2055724006aabc3df3a8c87d2a0a8a89023f63f04\",\"obfuscation\":\"zhUtKmlMcxSuMc\",\"output_index\":0,\"sequence_number\":3}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"location\",\"item_id\":\"fc_038a1c71c2055724006aabc3df3a8c87d2a0a8a89023f63f04\",\"obfuscation\":\"0OC6dYCc\",\"output_index\":0,\"sequence_number\":4}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"\\\":\\\"\",\"item_id\":\"fc_038a1c71c2055724006aabc3df3a8c87d2a0a8a89023f63f04\",\"obfuscation\":\"KED4rJ4N2a0OJ\",\"output_index\":0,\"sequence_number\":5}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"Paris\",\"item_id\":\"fc_038a1c71c2055724006aabc3df3a8c87d2a0a8a89023f63f04\",\"obfuscation\":\"lxieItAnEWZ\",\"output_index\":0,\"sequence_number\":6}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\",\",\"item_id\":\"fc_038a1c71c2055724006aabc3df3a8c87d2a0a8a89023f63f04\",\"obfuscation\":\"ANtbKwWhHppcE41\",\"output_index\":0,\"sequence_number\":7}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\" France\",\"item_id\":\"fc_038a1c71c2055724006aabc3df3a8c87d2a0a8a89023f63f04\",\"obfuscation\":\"v7OePNfjA\",\"output_index\":0,\"sequence_number\":8}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"\\\"}\",\"item_id\":\"fc_038a1c71c2055724006aabc3df3a8c87d2a0a8a89023f63f04\",\"obfuscation\":\"fsRFEYkwMbfWX3\",\"output_index\":0,\"sequence_number\":9}", + "event: response.function_call_arguments.done\ndata: {\"type\":\"response.function_call_arguments.done\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"item_id\":\"fc_038a1c71c2055724006aabc3df3a8c87d2a0a8a89023f63f04\",\"output_index\":0,\"sequence_number\":10}", + "event: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"fc_038a1c71c2055724006aabc3df3a8c87d2a0a8a89023f63f04\",\"type\":\"function_call\",\"status\":\"completed\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"call_id\":\"call_mxrE2sKGJLarGmw1vQpb62L8\",\"name\":\"get_weather\"},\"output_index\":0,\"sequence_number\":11}", + "event: response.completed\ndata: {\"type\":\"response.completed\",\"response\":{\"id\":\"resp_038a1c71c2055724006aabc3decd4087d2b1f0a6eca314090e\",\"object\":\"response\",\"created_at\":1789641694,\"status\":\"completed\",\"background\":false,\"completed_at\":1789641695,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[{\"id\":\"fc_038a1c71c2055724006aabc3df3a8c87d2a0a8a89023f63f04\",\"type\":\"function_call\",\"status\":\"completed\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"call_id\":\"call_mxrE2sKGJLarGmw1vQpb62L8\",\"name\":\"get_weather\"}],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"default\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":{\"input_tokens\":201,\"input_tokens_details\":{\"cache_write_tokens\":0,\"cached_tokens\":0},\"output_tokens\":8,\"output_tokens_details\":{\"reasoning_tokens\":0},\"total_tokens\":209},\"user\":null,\"metadata\":{}},\"sequence_number\":12}" ], "kind": "sse" }, @@ -3730,12 +4272,12 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8b14d3cea81ed-IAD", + "cf-ray": "a3c77fcffd04cd76-IAD", "connection": "keep-alive", "content-type": "text/event-stream; charset=utf-8", - "date": "Tue, 21 Jul 2026 08:04:02 GMT", + "date": "Thu, 17 Sep 2026 10:41:35 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "109", + "openai-processing-ms": "502", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -3743,7 +4285,13 @@ "strict-transport-security": "max-age=31536000; includeSubDomains; preload", "transfer-encoding": "chunked", "x-content-type-options": "nosniff", - "x-request-id": "req_c5b68daa66b04b3ba0b692fb1b5eca06" + "x-ratelimit-limit-requests": "30000", + "x-ratelimit-limit-tokens": "150000000", + "x-ratelimit-remaining-requests": "29999", + "x-ratelimit-remaining-tokens": "149999580", + "x-ratelimit-reset-requests": "2ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_00fa8c65e55540068d43c409b45b3af1" }, "status": 200, "statusText": "OK" @@ -3753,7 +4301,7 @@ "callIndex": 18, "id": "68b95c3d415edc61", "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-07-21T08:04:04.316Z", + "recordedAt": "2026-09-17T10:41:36.199Z", "request": { "body": { "kind": "json", @@ -3806,19 +4354,19 @@ "response": { "body": { "chunks": [ - "event: response.created\ndata: {\"type\":\"response.created\",\"response\":{\"id\":\"resp_0c97206e7a743588006a5f27f3793481a290d7f6ce0ab9df88\",\"object\":\"response\",\"created_at\":1784621043,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":0}", - "event: response.in_progress\ndata: {\"type\":\"response.in_progress\",\"response\":{\"id\":\"resp_0c97206e7a743588006a5f27f3793481a290d7f6ce0ab9df88\",\"object\":\"response\",\"created_at\":1784621043,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":1}", - "event: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"fc_0c97206e7a743588006a5f27f409d481a2afba2201e60e7187\",\"type\":\"function_call\",\"status\":\"in_progress\",\"arguments\":\"\",\"call_id\":\"call_G7BpSR4eq5zaxlN0EK5JnoFz\",\"name\":\"get_weather\"},\"output_index\":0,\"sequence_number\":2}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"{\\\"\",\"item_id\":\"fc_0c97206e7a743588006a5f27f409d481a2afba2201e60e7187\",\"obfuscation\":\"YsES7JLaswYhHz\",\"output_index\":0,\"sequence_number\":3}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"location\",\"item_id\":\"fc_0c97206e7a743588006a5f27f409d481a2afba2201e60e7187\",\"obfuscation\":\"xQYGRs87\",\"output_index\":0,\"sequence_number\":4}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"\\\":\\\"\",\"item_id\":\"fc_0c97206e7a743588006a5f27f409d481a2afba2201e60e7187\",\"obfuscation\":\"AN1Jtvx07yuUl\",\"output_index\":0,\"sequence_number\":5}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"Paris\",\"item_id\":\"fc_0c97206e7a743588006a5f27f409d481a2afba2201e60e7187\",\"obfuscation\":\"ZKfHY1EmcPC\",\"output_index\":0,\"sequence_number\":6}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\",\",\"item_id\":\"fc_0c97206e7a743588006a5f27f409d481a2afba2201e60e7187\",\"obfuscation\":\"rmr3HEMMxlYXAEu\",\"output_index\":0,\"sequence_number\":7}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\" France\",\"item_id\":\"fc_0c97206e7a743588006a5f27f409d481a2afba2201e60e7187\",\"obfuscation\":\"Y5JptrC1g\",\"output_index\":0,\"sequence_number\":8}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"\\\"}\",\"item_id\":\"fc_0c97206e7a743588006a5f27f409d481a2afba2201e60e7187\",\"obfuscation\":\"xzBpOA62MabdgP\",\"output_index\":0,\"sequence_number\":9}", - "event: response.function_call_arguments.done\ndata: {\"type\":\"response.function_call_arguments.done\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"item_id\":\"fc_0c97206e7a743588006a5f27f409d481a2afba2201e60e7187\",\"output_index\":0,\"sequence_number\":10}", - "event: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"fc_0c97206e7a743588006a5f27f409d481a2afba2201e60e7187\",\"type\":\"function_call\",\"status\":\"completed\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"call_id\":\"call_G7BpSR4eq5zaxlN0EK5JnoFz\",\"name\":\"get_weather\"},\"output_index\":0,\"sequence_number\":11}", - "event: response.completed\ndata: {\"type\":\"response.completed\",\"response\":{\"id\":\"resp_0c97206e7a743588006a5f27f3793481a290d7f6ce0ab9df88\",\"object\":\"response\",\"created_at\":1784621043,\"status\":\"completed\",\"background\":false,\"completed_at\":1784621044,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[{\"id\":\"fc_0c97206e7a743588006a5f27f409d481a2afba2201e60e7187\",\"type\":\"function_call\",\"status\":\"completed\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"call_id\":\"call_G7BpSR4eq5zaxlN0EK5JnoFz\",\"name\":\"get_weather\"}],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"default\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":{\"input_tokens\":70,\"input_tokens_details\":{\"cache_write_tokens\":0,\"cached_tokens\":0},\"output_tokens\":8,\"output_tokens_details\":{\"reasoning_tokens\":0},\"total_tokens\":78},\"user\":null,\"metadata\":{}},\"sequence_number\":12}" + "event: response.created\ndata: {\"type\":\"response.created\",\"response\":{\"id\":\"resp_013ae44d7084419f006aabc3df9d6087d2a435b1736abd6b48\",\"object\":\"response\",\"created_at\":1789641695,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":0}", + "event: response.in_progress\ndata: {\"type\":\"response.in_progress\",\"response\":{\"id\":\"resp_013ae44d7084419f006aabc3df9d6087d2a435b1736abd6b48\",\"object\":\"response\",\"created_at\":1789641695,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":1}", + "event: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"fc_013ae44d7084419f006aabc3dff5f887d2af9dad02ca1eb115\",\"type\":\"function_call\",\"status\":\"in_progress\",\"arguments\":\"\",\"call_id\":\"call_ZuS8MQPaeFhwkBzxOZicxPIV\",\"name\":\"get_weather\"},\"output_index\":0,\"sequence_number\":2}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"{\\\"\",\"item_id\":\"fc_013ae44d7084419f006aabc3dff5f887d2af9dad02ca1eb115\",\"obfuscation\":\"TFaOvkHsIEHKFn\",\"output_index\":0,\"sequence_number\":3}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"location\",\"item_id\":\"fc_013ae44d7084419f006aabc3dff5f887d2af9dad02ca1eb115\",\"obfuscation\":\"lJd0rYVZ\",\"output_index\":0,\"sequence_number\":4}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"\\\":\\\"\",\"item_id\":\"fc_013ae44d7084419f006aabc3dff5f887d2af9dad02ca1eb115\",\"obfuscation\":\"mZUwOmHvDKwaT\",\"output_index\":0,\"sequence_number\":5}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"Paris\",\"item_id\":\"fc_013ae44d7084419f006aabc3dff5f887d2af9dad02ca1eb115\",\"obfuscation\":\"hY30yLkb7b8\",\"output_index\":0,\"sequence_number\":6}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\",\",\"item_id\":\"fc_013ae44d7084419f006aabc3dff5f887d2af9dad02ca1eb115\",\"obfuscation\":\"8o8wxsDgjtLRYzO\",\"output_index\":0,\"sequence_number\":7}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\" France\",\"item_id\":\"fc_013ae44d7084419f006aabc3dff5f887d2af9dad02ca1eb115\",\"obfuscation\":\"M9kU6kk3I\",\"output_index\":0,\"sequence_number\":8}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"\\\"}\",\"item_id\":\"fc_013ae44d7084419f006aabc3dff5f887d2af9dad02ca1eb115\",\"obfuscation\":\"tIRlpftnEQLtbO\",\"output_index\":0,\"sequence_number\":9}", + "event: response.function_call_arguments.done\ndata: {\"type\":\"response.function_call_arguments.done\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"item_id\":\"fc_013ae44d7084419f006aabc3dff5f887d2af9dad02ca1eb115\",\"output_index\":0,\"sequence_number\":10}", + "event: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"fc_013ae44d7084419f006aabc3dff5f887d2af9dad02ca1eb115\",\"type\":\"function_call\",\"status\":\"completed\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"call_id\":\"call_ZuS8MQPaeFhwkBzxOZicxPIV\",\"name\":\"get_weather\"},\"output_index\":0,\"sequence_number\":11}", + "event: response.completed\ndata: {\"type\":\"response.completed\",\"response\":{\"id\":\"resp_013ae44d7084419f006aabc3df9d6087d2a435b1736abd6b48\",\"object\":\"response\",\"created_at\":1789641695,\"status\":\"completed\",\"background\":false,\"completed_at\":1789641696,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[{\"id\":\"fc_013ae44d7084419f006aabc3dff5f887d2af9dad02ca1eb115\",\"type\":\"function_call\",\"status\":\"completed\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"call_id\":\"call_ZuS8MQPaeFhwkBzxOZicxPIV\",\"name\":\"get_weather\"}],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"default\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":{\"input_tokens\":70,\"input_tokens_details\":{\"cache_write_tokens\":0,\"cached_tokens\":0},\"output_tokens\":8,\"output_tokens_details\":{\"reasoning_tokens\":0},\"total_tokens\":78},\"user\":null,\"metadata\":{}},\"sequence_number\":12}" ], "kind": "sse" }, @@ -3826,12 +4374,12 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8b1514fd081ed-IAD", + "cf-ray": "a3c77fd53a12cd76-IAD", "connection": "keep-alive", "content-type": "text/event-stream; charset=utf-8", - "date": "Tue, 21 Jul 2026 08:04:03 GMT", + "date": "Thu, 17 Sep 2026 10:41:35 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "211", + "openai-processing-ms": "377", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -3839,7 +4387,13 @@ "strict-transport-security": "max-age=31536000; includeSubDomains; preload", "transfer-encoding": "chunked", "x-content-type-options": "nosniff", - "x-request-id": "req_78f40bfc432b4b3b80f2ffdca4ebcc3b" + "x-ratelimit-limit-requests": "30000", + "x-ratelimit-limit-tokens": "150000000", + "x-ratelimit-remaining-requests": "29999", + "x-ratelimit-remaining-tokens": "149999715", + "x-ratelimit-reset-requests": "2ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_04ca423b35f74a7d92f2033b9d565220" }, "status": 200, "statusText": "OK" @@ -3847,9 +4401,9 @@ }, { "callIndex": 19, - "id": "6539538d3fca3525", + "id": "908ce2b955306d2c", "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-07-21T08:04:05.625Z", + "recordedAt": "2026-09-17T10:41:36.846Z", "request": { "body": { "kind": "json", @@ -3870,12 +4424,12 @@ }, { "arguments": "{\"location\":\"Paris, France\"}", - "call_id": "call_G7BpSR4eq5zaxlN0EK5JnoFz", + "call_id": "call_ZuS8MQPaeFhwkBzxOZicxPIV", "name": "get_weather", "type": "function_call" }, { - "call_id": "call_G7BpSR4eq5zaxlN0EK5JnoFz", + "call_id": "call_ZuS8MQPaeFhwkBzxOZicxPIV", "output": "{\"condition\":\"sunny\",\"location\":\"Paris, France\",\"temperatureC\":22}", "type": "function_call_output" } @@ -3913,19 +4467,19 @@ "response": { "body": { "chunks": [ - "event: response.created\ndata: {\"type\":\"response.created\",\"response\":{\"id\":\"resp_09df10ad86f8a96f006a5f27f4611481a3a28f4450ec2fa74f\",\"object\":\"response\",\"created_at\":1784621044,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":0}", - "event: response.in_progress\ndata: {\"type\":\"response.in_progress\",\"response\":{\"id\":\"resp_09df10ad86f8a96f006a5f27f4611481a3a28f4450ec2fa74f\",\"object\":\"response\",\"created_at\":1784621044,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":1}", - "event: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"fc_09df10ad86f8a96f006a5f27f4f71081a3896d07506544897d\",\"type\":\"function_call\",\"status\":\"in_progress\",\"arguments\":\"\",\"call_id\":\"call_zlDm9q5XtPBHUdtV2HwDqPBh\",\"name\":\"get_weather\"},\"output_index\":0,\"sequence_number\":2}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"{\\\"\",\"item_id\":\"fc_09df10ad86f8a96f006a5f27f4f71081a3896d07506544897d\",\"obfuscation\":\"kJqPvhfWDcITHr\",\"output_index\":0,\"sequence_number\":3}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"location\",\"item_id\":\"fc_09df10ad86f8a96f006a5f27f4f71081a3896d07506544897d\",\"obfuscation\":\"Lr2nHfcW\",\"output_index\":0,\"sequence_number\":4}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"\\\":\\\"\",\"item_id\":\"fc_09df10ad86f8a96f006a5f27f4f71081a3896d07506544897d\",\"obfuscation\":\"YCdjFpsfWMlPm\",\"output_index\":0,\"sequence_number\":5}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"Paris\",\"item_id\":\"fc_09df10ad86f8a96f006a5f27f4f71081a3896d07506544897d\",\"obfuscation\":\"Alp8QPsWAhE\",\"output_index\":0,\"sequence_number\":6}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\",\",\"item_id\":\"fc_09df10ad86f8a96f006a5f27f4f71081a3896d07506544897d\",\"obfuscation\":\"sfcPivqGRhkXrhe\",\"output_index\":0,\"sequence_number\":7}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\" France\",\"item_id\":\"fc_09df10ad86f8a96f006a5f27f4f71081a3896d07506544897d\",\"obfuscation\":\"IYScghhX9\",\"output_index\":0,\"sequence_number\":8}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"\\\"}\",\"item_id\":\"fc_09df10ad86f8a96f006a5f27f4f71081a3896d07506544897d\",\"obfuscation\":\"chqHf3EJOJGXuU\",\"output_index\":0,\"sequence_number\":9}", - "event: response.function_call_arguments.done\ndata: {\"type\":\"response.function_call_arguments.done\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"item_id\":\"fc_09df10ad86f8a96f006a5f27f4f71081a3896d07506544897d\",\"output_index\":0,\"sequence_number\":10}", - "event: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"fc_09df10ad86f8a96f006a5f27f4f71081a3896d07506544897d\",\"type\":\"function_call\",\"status\":\"completed\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"call_id\":\"call_zlDm9q5XtPBHUdtV2HwDqPBh\",\"name\":\"get_weather\"},\"output_index\":0,\"sequence_number\":11}", - "event: response.completed\ndata: {\"type\":\"response.completed\",\"response\":{\"id\":\"resp_09df10ad86f8a96f006a5f27f4611481a3a28f4450ec2fa74f\",\"object\":\"response\",\"created_at\":1784621044,\"status\":\"completed\",\"background\":false,\"completed_at\":1784621045,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[{\"id\":\"fc_09df10ad86f8a96f006a5f27f4f71081a3896d07506544897d\",\"type\":\"function_call\",\"status\":\"completed\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"call_id\":\"call_zlDm9q5XtPBHUdtV2HwDqPBh\",\"name\":\"get_weather\"}],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"default\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":{\"input_tokens\":109,\"input_tokens_details\":{\"cache_write_tokens\":0,\"cached_tokens\":0},\"output_tokens\":8,\"output_tokens_details\":{\"reasoning_tokens\":0},\"total_tokens\":117},\"user\":null,\"metadata\":{}},\"sequence_number\":12}" + "event: response.created\ndata: {\"type\":\"response.created\",\"response\":{\"id\":\"resp_0bdd8e89009a207a006aabc3e04fe087d2a592335eeca0c9cf\",\"object\":\"response\",\"created_at\":1789641696,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":0}", + "event: response.in_progress\ndata: {\"type\":\"response.in_progress\",\"response\":{\"id\":\"resp_0bdd8e89009a207a006aabc3e04fe087d2a592335eeca0c9cf\",\"object\":\"response\",\"created_at\":1789641696,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":1}", + "event: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"fc_0bdd8e89009a207a006aabc3e09b8c87d28fe9f2ae21231a9f\",\"type\":\"function_call\",\"status\":\"in_progress\",\"arguments\":\"\",\"call_id\":\"call_16yJGyXsPqQNCxZjIVftQqqq\",\"name\":\"get_weather\"},\"output_index\":0,\"sequence_number\":2}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"{\\\"\",\"item_id\":\"fc_0bdd8e89009a207a006aabc3e09b8c87d28fe9f2ae21231a9f\",\"obfuscation\":\"8lgNQehnJsfwme\",\"output_index\":0,\"sequence_number\":3}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"location\",\"item_id\":\"fc_0bdd8e89009a207a006aabc3e09b8c87d28fe9f2ae21231a9f\",\"obfuscation\":\"NclWu1Uc\",\"output_index\":0,\"sequence_number\":4}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"\\\":\\\"\",\"item_id\":\"fc_0bdd8e89009a207a006aabc3e09b8c87d28fe9f2ae21231a9f\",\"obfuscation\":\"J4LOMMrY7jCCE\",\"output_index\":0,\"sequence_number\":5}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"Paris\",\"item_id\":\"fc_0bdd8e89009a207a006aabc3e09b8c87d28fe9f2ae21231a9f\",\"obfuscation\":\"jbB1hYXYbz7\",\"output_index\":0,\"sequence_number\":6}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\",\",\"item_id\":\"fc_0bdd8e89009a207a006aabc3e09b8c87d28fe9f2ae21231a9f\",\"obfuscation\":\"OveQ8hp5YZ3JCbJ\",\"output_index\":0,\"sequence_number\":7}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\" France\",\"item_id\":\"fc_0bdd8e89009a207a006aabc3e09b8c87d28fe9f2ae21231a9f\",\"obfuscation\":\"cbLwRiuEJ\",\"output_index\":0,\"sequence_number\":8}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"\\\"}\",\"item_id\":\"fc_0bdd8e89009a207a006aabc3e09b8c87d28fe9f2ae21231a9f\",\"obfuscation\":\"XIpq1BdbqlKcjk\",\"output_index\":0,\"sequence_number\":9}", + "event: response.function_call_arguments.done\ndata: {\"type\":\"response.function_call_arguments.done\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"item_id\":\"fc_0bdd8e89009a207a006aabc3e09b8c87d28fe9f2ae21231a9f\",\"output_index\":0,\"sequence_number\":10}", + "event: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"fc_0bdd8e89009a207a006aabc3e09b8c87d28fe9f2ae21231a9f\",\"type\":\"function_call\",\"status\":\"completed\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"call_id\":\"call_16yJGyXsPqQNCxZjIVftQqqq\",\"name\":\"get_weather\"},\"output_index\":0,\"sequence_number\":11}", + "event: response.completed\ndata: {\"type\":\"response.completed\",\"response\":{\"id\":\"resp_0bdd8e89009a207a006aabc3e04fe087d2a592335eeca0c9cf\",\"object\":\"response\",\"created_at\":1789641696,\"status\":\"completed\",\"background\":false,\"completed_at\":1789641696,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[{\"id\":\"fc_0bdd8e89009a207a006aabc3e09b8c87d28fe9f2ae21231a9f\",\"type\":\"function_call\",\"status\":\"completed\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"call_id\":\"call_16yJGyXsPqQNCxZjIVftQqqq\",\"name\":\"get_weather\"}],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"default\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":{\"input_tokens\":109,\"input_tokens_details\":{\"cache_write_tokens\":0,\"cached_tokens\":0},\"output_tokens\":8,\"output_tokens_details\":{\"reasoning_tokens\":0},\"total_tokens\":117},\"user\":null,\"metadata\":{}},\"sequence_number\":12}" ], "kind": "sse" }, @@ -3933,12 +4487,12 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8b1571c3081ed-IAD", + "cf-ray": "a3c77fd96bb2cd76-IAD", "connection": "keep-alive", "content-type": "text/event-stream; charset=utf-8", - "date": "Tue, 21 Jul 2026 08:04:04 GMT", + "date": "Thu, 17 Sep 2026 10:41:36 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "146", + "openai-processing-ms": "325", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -3946,7 +4500,13 @@ "strict-transport-security": "max-age=31536000; includeSubDomains; preload", "transfer-encoding": "chunked", "x-content-type-options": "nosniff", - "x-request-id": "req_dad7db28123f4a4295018e4a5ac36ca7" + "x-ratelimit-limit-requests": "30000", + "x-ratelimit-limit-tokens": "150000000", + "x-ratelimit-remaining-requests": "29999", + "x-ratelimit-remaining-tokens": "149999675", + "x-ratelimit-reset-requests": "2ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_f0d89c7f4ec840f8a427ca7d04621acc" }, "status": 200, "statusText": "OK" @@ -3954,9 +4514,9 @@ }, { "callIndex": 20, - "id": "e524b35823448775", + "id": "d7cddb2ab70dabf6", "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-07-21T08:04:06.596Z", + "recordedAt": "2026-09-17T10:41:37.462Z", "request": { "body": { "kind": "json", @@ -3977,23 +4537,23 @@ }, { "arguments": "{\"location\":\"Paris, France\"}", - "call_id": "call_G7BpSR4eq5zaxlN0EK5JnoFz", + "call_id": "call_ZuS8MQPaeFhwkBzxOZicxPIV", "name": "get_weather", "type": "function_call" }, { - "call_id": "call_G7BpSR4eq5zaxlN0EK5JnoFz", + "call_id": "call_ZuS8MQPaeFhwkBzxOZicxPIV", "output": "{\"condition\":\"sunny\",\"location\":\"Paris, France\",\"temperatureC\":22}", "type": "function_call_output" }, { "arguments": "{\"location\":\"Paris, France\"}", - "call_id": "call_zlDm9q5XtPBHUdtV2HwDqPBh", + "call_id": "call_16yJGyXsPqQNCxZjIVftQqqq", "name": "get_weather", "type": "function_call" }, { - "call_id": "call_zlDm9q5XtPBHUdtV2HwDqPBh", + "call_id": "call_16yJGyXsPqQNCxZjIVftQqqq", "output": "{\"condition\":\"sunny\",\"location\":\"Paris, France\",\"temperatureC\":22}", "type": "function_call_output" } @@ -4031,19 +4591,19 @@ "response": { "body": { "chunks": [ - "event: response.created\ndata: {\"type\":\"response.created\",\"response\":{\"id\":\"resp_044cfd7e728f5439006a5f27f5b65c81918e3628ce6bbd2412\",\"object\":\"response\",\"created_at\":1784621045,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":0}", - "event: response.in_progress\ndata: {\"type\":\"response.in_progress\",\"response\":{\"id\":\"resp_044cfd7e728f5439006a5f27f5b65c81918e3628ce6bbd2412\",\"object\":\"response\",\"created_at\":1784621045,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":1}", - "event: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"fc_044cfd7e728f5439006a5f27f631108191a931cfad2f50953e\",\"type\":\"function_call\",\"status\":\"in_progress\",\"arguments\":\"\",\"call_id\":\"call_jvUCbKtBTfkQp008o6TWfGAj\",\"name\":\"get_weather\"},\"output_index\":0,\"sequence_number\":2}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"{\\\"\",\"item_id\":\"fc_044cfd7e728f5439006a5f27f631108191a931cfad2f50953e\",\"obfuscation\":\"kAiclp2ugAeqiS\",\"output_index\":0,\"sequence_number\":3}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"location\",\"item_id\":\"fc_044cfd7e728f5439006a5f27f631108191a931cfad2f50953e\",\"obfuscation\":\"AsDKxmxr\",\"output_index\":0,\"sequence_number\":4}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"\\\":\\\"\",\"item_id\":\"fc_044cfd7e728f5439006a5f27f631108191a931cfad2f50953e\",\"obfuscation\":\"X7n9skCYMJGvv\",\"output_index\":0,\"sequence_number\":5}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"Paris\",\"item_id\":\"fc_044cfd7e728f5439006a5f27f631108191a931cfad2f50953e\",\"obfuscation\":\"putcKyOGBtE\",\"output_index\":0,\"sequence_number\":6}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\",\",\"item_id\":\"fc_044cfd7e728f5439006a5f27f631108191a931cfad2f50953e\",\"obfuscation\":\"IqjHIpJyJr3KmYg\",\"output_index\":0,\"sequence_number\":7}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\" France\",\"item_id\":\"fc_044cfd7e728f5439006a5f27f631108191a931cfad2f50953e\",\"obfuscation\":\"7sj8Tkmhs\",\"output_index\":0,\"sequence_number\":8}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"\\\"}\",\"item_id\":\"fc_044cfd7e728f5439006a5f27f631108191a931cfad2f50953e\",\"obfuscation\":\"7ZGKFx6kr5EuED\",\"output_index\":0,\"sequence_number\":9}", - "event: response.function_call_arguments.done\ndata: {\"type\":\"response.function_call_arguments.done\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"item_id\":\"fc_044cfd7e728f5439006a5f27f631108191a931cfad2f50953e\",\"output_index\":0,\"sequence_number\":10}", - "event: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"fc_044cfd7e728f5439006a5f27f631108191a931cfad2f50953e\",\"type\":\"function_call\",\"status\":\"completed\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"call_id\":\"call_jvUCbKtBTfkQp008o6TWfGAj\",\"name\":\"get_weather\"},\"output_index\":0,\"sequence_number\":11}", - "event: response.completed\ndata: {\"type\":\"response.completed\",\"response\":{\"id\":\"resp_044cfd7e728f5439006a5f27f5b65c81918e3628ce6bbd2412\",\"object\":\"response\",\"created_at\":1784621045,\"status\":\"completed\",\"background\":false,\"completed_at\":1784621046,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[{\"id\":\"fc_044cfd7e728f5439006a5f27f631108191a931cfad2f50953e\",\"type\":\"function_call\",\"status\":\"completed\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"call_id\":\"call_jvUCbKtBTfkQp008o6TWfGAj\",\"name\":\"get_weather\"}],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"default\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":{\"input_tokens\":148,\"input_tokens_details\":{\"cache_write_tokens\":0,\"cached_tokens\":0},\"output_tokens\":8,\"output_tokens_details\":{\"reasoning_tokens\":0},\"total_tokens\":156},\"user\":null,\"metadata\":{}},\"sequence_number\":12}" + "event: response.created\ndata: {\"type\":\"response.created\",\"response\":{\"id\":\"resp_0595877256a528fb006aabc3e0ebdc87d2b6a87f165622ac35\",\"object\":\"response\",\"created_at\":1789641696,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":0}", + "event: response.in_progress\ndata: {\"type\":\"response.in_progress\",\"response\":{\"id\":\"resp_0595877256a528fb006aabc3e0ebdc87d2b6a87f165622ac35\",\"object\":\"response\",\"created_at\":1789641696,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":1}", + "event: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"fc_0595877256a528fb006aabc3e1468887d2963f3e08140d9b02\",\"type\":\"function_call\",\"status\":\"in_progress\",\"arguments\":\"\",\"call_id\":\"call_GCZplhYdQhQ6AhXJIqHc92c1\",\"name\":\"get_weather\"},\"output_index\":0,\"sequence_number\":2}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"{\\\"\",\"item_id\":\"fc_0595877256a528fb006aabc3e1468887d2963f3e08140d9b02\",\"obfuscation\":\"qQJXr3SZASRVFH\",\"output_index\":0,\"sequence_number\":3}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"location\",\"item_id\":\"fc_0595877256a528fb006aabc3e1468887d2963f3e08140d9b02\",\"obfuscation\":\"9DuV5uLG\",\"output_index\":0,\"sequence_number\":4}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"\\\":\\\"\",\"item_id\":\"fc_0595877256a528fb006aabc3e1468887d2963f3e08140d9b02\",\"obfuscation\":\"OSmHdoQuZ7iK0\",\"output_index\":0,\"sequence_number\":5}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"Paris\",\"item_id\":\"fc_0595877256a528fb006aabc3e1468887d2963f3e08140d9b02\",\"obfuscation\":\"WAiCH9uCBgW\",\"output_index\":0,\"sequence_number\":6}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\",\",\"item_id\":\"fc_0595877256a528fb006aabc3e1468887d2963f3e08140d9b02\",\"obfuscation\":\"Zd29sN7ZDYC1tNP\",\"output_index\":0,\"sequence_number\":7}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\" France\",\"item_id\":\"fc_0595877256a528fb006aabc3e1468887d2963f3e08140d9b02\",\"obfuscation\":\"FLQrSMgGw\",\"output_index\":0,\"sequence_number\":8}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"\\\"}\",\"item_id\":\"fc_0595877256a528fb006aabc3e1468887d2963f3e08140d9b02\",\"obfuscation\":\"CZ1MgVlgZtHjn8\",\"output_index\":0,\"sequence_number\":9}", + "event: response.function_call_arguments.done\ndata: {\"type\":\"response.function_call_arguments.done\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"item_id\":\"fc_0595877256a528fb006aabc3e1468887d2963f3e08140d9b02\",\"output_index\":0,\"sequence_number\":10}", + "event: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"fc_0595877256a528fb006aabc3e1468887d2963f3e08140d9b02\",\"type\":\"function_call\",\"status\":\"completed\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"call_id\":\"call_GCZplhYdQhQ6AhXJIqHc92c1\",\"name\":\"get_weather\"},\"output_index\":0,\"sequence_number\":11}", + "event: response.completed\ndata: {\"type\":\"response.completed\",\"response\":{\"id\":\"resp_0595877256a528fb006aabc3e0ebdc87d2b6a87f165622ac35\",\"object\":\"response\",\"created_at\":1789641696,\"status\":\"completed\",\"background\":false,\"completed_at\":1789641697,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[{\"id\":\"fc_0595877256a528fb006aabc3e1468887d2963f3e08140d9b02\",\"type\":\"function_call\",\"status\":\"completed\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"call_id\":\"call_GCZplhYdQhQ6AhXJIqHc92c1\",\"name\":\"get_weather\"}],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"default\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":{\"input_tokens\":148,\"input_tokens_details\":{\"cache_write_tokens\":0,\"cached_tokens\":0},\"output_tokens\":8,\"output_tokens_details\":{\"reasoning_tokens\":0},\"total_tokens\":156},\"user\":null,\"metadata\":{}},\"sequence_number\":12}" ], "kind": "sse" }, @@ -4051,12 +4611,12 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8b15f4a2c81ed-IAD", + "cf-ray": "a3c77fdd7ce0cd76-IAD", "connection": "keep-alive", "content-type": "text/event-stream; charset=utf-8", - "date": "Tue, 21 Jul 2026 08:04:05 GMT", + "date": "Thu, 17 Sep 2026 10:41:37 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "197", + "openai-processing-ms": "377", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -4064,7 +4624,13 @@ "strict-transport-security": "max-age=31536000; includeSubDomains; preload", "transfer-encoding": "chunked", "x-content-type-options": "nosniff", - "x-request-id": "req_16435c0ec21f4f428d10ea748cd25dd4" + "x-ratelimit-limit-requests": "30000", + "x-ratelimit-limit-tokens": "150000000", + "x-ratelimit-remaining-requests": "29999", + "x-ratelimit-remaining-tokens": "149999635", + "x-ratelimit-reset-requests": "2ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_e4584f26627e487ba366ad4f772ef41e" }, "status": 200, "statusText": "OK" @@ -4072,9 +4638,9 @@ }, { "callIndex": 21, - "id": "d2a237298ef1bc25", + "id": "6c0ba2d129d33637", "matchKey": "POST api.openai.com/v1/responses", - "recordedAt": "2026-07-21T08:04:07.588Z", + "recordedAt": "2026-09-17T10:41:38.096Z", "request": { "body": { "kind": "json", @@ -4095,34 +4661,34 @@ }, { "arguments": "{\"location\":\"Paris, France\"}", - "call_id": "call_G7BpSR4eq5zaxlN0EK5JnoFz", + "call_id": "call_ZuS8MQPaeFhwkBzxOZicxPIV", "name": "get_weather", "type": "function_call" }, { - "call_id": "call_G7BpSR4eq5zaxlN0EK5JnoFz", + "call_id": "call_ZuS8MQPaeFhwkBzxOZicxPIV", "output": "{\"condition\":\"sunny\",\"location\":\"Paris, France\",\"temperatureC\":22}", "type": "function_call_output" }, { "arguments": "{\"location\":\"Paris, France\"}", - "call_id": "call_zlDm9q5XtPBHUdtV2HwDqPBh", + "call_id": "call_16yJGyXsPqQNCxZjIVftQqqq", "name": "get_weather", "type": "function_call" }, { - "call_id": "call_zlDm9q5XtPBHUdtV2HwDqPBh", + "call_id": "call_16yJGyXsPqQNCxZjIVftQqqq", "output": "{\"condition\":\"sunny\",\"location\":\"Paris, France\",\"temperatureC\":22}", "type": "function_call_output" }, { "arguments": "{\"location\":\"Paris, France\"}", - "call_id": "call_jvUCbKtBTfkQp008o6TWfGAj", + "call_id": "call_GCZplhYdQhQ6AhXJIqHc92c1", "name": "get_weather", "type": "function_call" }, { - "call_id": "call_jvUCbKtBTfkQp008o6TWfGAj", + "call_id": "call_GCZplhYdQhQ6AhXJIqHc92c1", "output": "{\"condition\":\"sunny\",\"location\":\"Paris, France\",\"temperatureC\":22}", "type": "function_call_output" } @@ -4160,19 +4726,19 @@ "response": { "body": { "chunks": [ - "event: response.created\ndata: {\"type\":\"response.created\",\"response\":{\"id\":\"resp_0ea132227f0cb0ef006a5f27f6a768819c94e42a575dfc6d14\",\"object\":\"response\",\"created_at\":1784621046,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":0}", - "event: response.in_progress\ndata: {\"type\":\"response.in_progress\",\"response\":{\"id\":\"resp_0ea132227f0cb0ef006a5f27f6a768819c94e42a575dfc6d14\",\"object\":\"response\",\"created_at\":1784621046,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":1}", - "event: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"fc_0ea132227f0cb0ef006a5f27f74ae0819cb3f3d72e2a1a9e5e\",\"type\":\"function_call\",\"status\":\"in_progress\",\"arguments\":\"\",\"call_id\":\"call_FR20EjGFspAP7TzT1y4SiMCS\",\"name\":\"get_weather\"},\"output_index\":0,\"sequence_number\":2}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"{\\\"\",\"item_id\":\"fc_0ea132227f0cb0ef006a5f27f74ae0819cb3f3d72e2a1a9e5e\",\"obfuscation\":\"Fft5hWvIjbTADx\",\"output_index\":0,\"sequence_number\":3}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"location\",\"item_id\":\"fc_0ea132227f0cb0ef006a5f27f74ae0819cb3f3d72e2a1a9e5e\",\"obfuscation\":\"0rnBrMvc\",\"output_index\":0,\"sequence_number\":4}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"\\\":\\\"\",\"item_id\":\"fc_0ea132227f0cb0ef006a5f27f74ae0819cb3f3d72e2a1a9e5e\",\"obfuscation\":\"ply0UyeclycXX\",\"output_index\":0,\"sequence_number\":5}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"Paris\",\"item_id\":\"fc_0ea132227f0cb0ef006a5f27f74ae0819cb3f3d72e2a1a9e5e\",\"obfuscation\":\"3J81gEM3GTa\",\"output_index\":0,\"sequence_number\":6}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\",\",\"item_id\":\"fc_0ea132227f0cb0ef006a5f27f74ae0819cb3f3d72e2a1a9e5e\",\"obfuscation\":\"7UVA5qftbt5FSec\",\"output_index\":0,\"sequence_number\":7}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\" France\",\"item_id\":\"fc_0ea132227f0cb0ef006a5f27f74ae0819cb3f3d72e2a1a9e5e\",\"obfuscation\":\"jaPJ9VyzI\",\"output_index\":0,\"sequence_number\":8}", - "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"\\\"}\",\"item_id\":\"fc_0ea132227f0cb0ef006a5f27f74ae0819cb3f3d72e2a1a9e5e\",\"obfuscation\":\"4Epiy7yS9Zbhqh\",\"output_index\":0,\"sequence_number\":9}", - "event: response.function_call_arguments.done\ndata: {\"type\":\"response.function_call_arguments.done\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"item_id\":\"fc_0ea132227f0cb0ef006a5f27f74ae0819cb3f3d72e2a1a9e5e\",\"output_index\":0,\"sequence_number\":10}", - "event: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"fc_0ea132227f0cb0ef006a5f27f74ae0819cb3f3d72e2a1a9e5e\",\"type\":\"function_call\",\"status\":\"completed\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"call_id\":\"call_FR20EjGFspAP7TzT1y4SiMCS\",\"name\":\"get_weather\"},\"output_index\":0,\"sequence_number\":11}", - "event: response.completed\ndata: {\"type\":\"response.completed\",\"response\":{\"id\":\"resp_0ea132227f0cb0ef006a5f27f6a768819c94e42a575dfc6d14\",\"object\":\"response\",\"created_at\":1784621046,\"status\":\"completed\",\"background\":false,\"completed_at\":1784621047,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[{\"id\":\"fc_0ea132227f0cb0ef006a5f27f74ae0819cb3f3d72e2a1a9e5e\",\"type\":\"function_call\",\"status\":\"completed\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"call_id\":\"call_FR20EjGFspAP7TzT1y4SiMCS\",\"name\":\"get_weather\"}],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"default\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":{\"input_tokens\":187,\"input_tokens_details\":{\"cache_write_tokens\":0,\"cached_tokens\":0},\"output_tokens\":8,\"output_tokens_details\":{\"reasoning_tokens\":0},\"total_tokens\":195},\"user\":null,\"metadata\":{}},\"sequence_number\":12}" + "event: response.created\ndata: {\"type\":\"response.created\",\"response\":{\"id\":\"resp_088361d8040e0f7f006aabc3e18a0887d2a9ab48b56f4d37e0\",\"object\":\"response\",\"created_at\":1789641697,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":0}", + "event: response.in_progress\ndata: {\"type\":\"response.in_progress\",\"response\":{\"id\":\"resp_088361d8040e0f7f006aabc3e18a0887d2a9ab48b56f4d37e0\",\"object\":\"response\",\"created_at\":1789641697,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":1}", + "event: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"fc_088361d8040e0f7f006aabc3e1e3c887d2a90f81cc51750796\",\"type\":\"function_call\",\"status\":\"in_progress\",\"arguments\":\"\",\"call_id\":\"call_falhsyQ51P2nyBFHhXBfi8DY\",\"name\":\"get_weather\"},\"output_index\":0,\"sequence_number\":2}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"{\\\"\",\"item_id\":\"fc_088361d8040e0f7f006aabc3e1e3c887d2a90f81cc51750796\",\"obfuscation\":\"g91QNMDQpQgDul\",\"output_index\":0,\"sequence_number\":3}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"location\",\"item_id\":\"fc_088361d8040e0f7f006aabc3e1e3c887d2a90f81cc51750796\",\"obfuscation\":\"rQnjW7Ds\",\"output_index\":0,\"sequence_number\":4}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"\\\":\\\"\",\"item_id\":\"fc_088361d8040e0f7f006aabc3e1e3c887d2a90f81cc51750796\",\"obfuscation\":\"EQukSHQ891fuu\",\"output_index\":0,\"sequence_number\":5}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"Paris\",\"item_id\":\"fc_088361d8040e0f7f006aabc3e1e3c887d2a90f81cc51750796\",\"obfuscation\":\"a0RzVkdpNL2\",\"output_index\":0,\"sequence_number\":6}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\",\",\"item_id\":\"fc_088361d8040e0f7f006aabc3e1e3c887d2a90f81cc51750796\",\"obfuscation\":\"sxTdZrxcO3W7Kz4\",\"output_index\":0,\"sequence_number\":7}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\" France\",\"item_id\":\"fc_088361d8040e0f7f006aabc3e1e3c887d2a90f81cc51750796\",\"obfuscation\":\"IpoReciDc\",\"output_index\":0,\"sequence_number\":8}", + "event: response.function_call_arguments.delta\ndata: {\"type\":\"response.function_call_arguments.delta\",\"delta\":\"\\\"}\",\"item_id\":\"fc_088361d8040e0f7f006aabc3e1e3c887d2a90f81cc51750796\",\"obfuscation\":\"Msux59t3sgBXIE\",\"output_index\":0,\"sequence_number\":9}", + "event: response.function_call_arguments.done\ndata: {\"type\":\"response.function_call_arguments.done\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"item_id\":\"fc_088361d8040e0f7f006aabc3e1e3c887d2a90f81cc51750796\",\"output_index\":0,\"sequence_number\":10}", + "event: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"fc_088361d8040e0f7f006aabc3e1e3c887d2a90f81cc51750796\",\"type\":\"function_call\",\"status\":\"completed\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"call_id\":\"call_falhsyQ51P2nyBFHhXBfi8DY\",\"name\":\"get_weather\"},\"output_index\":0,\"sequence_number\":11}", + "event: response.completed\ndata: {\"type\":\"response.completed\",\"response\":{\"id\":\"resp_088361d8040e0f7f006aabc3e18a0887d2a9ab48b56f4d37e0\",\"object\":\"response\",\"created_at\":1789641697,\"status\":\"completed\",\"background\":false,\"completed_at\":1789641697,\"error\":null,\"frequency_penalty\":0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":96,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[{\"id\":\"fc_088361d8040e0f7f006aabc3e1e3c887d2a90f81cc51750796\",\"type\":\"function_call\",\"status\":\"completed\",\"arguments\":\"{\\\"location\\\":\\\"Paris, France\\\"}\",\"call_id\":\"call_falhsyQ51P2nyBFHhXBfi8DY\",\"name\":\"get_weather\"}],\"parallel_tool_calls\":true,\"presence_penalty\":0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"default\",\"store\":true,\"temperature\":0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"required\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Get the weather for a location\",\"name\":\"get_weather\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and country\"}},\"required\":[\"location\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"},\"strict\":true}],\"top_logprobs\":0,\"top_p\":1,\"truncation\":\"disabled\",\"usage\":{\"input_tokens\":187,\"input_tokens_details\":{\"cache_write_tokens\":0,\"cached_tokens\":0},\"output_tokens\":8,\"output_tokens_details\":{\"reasoning_tokens\":0},\"total_tokens\":195},\"user\":null,\"metadata\":{}},\"sequence_number\":12}" ], "kind": "sse" }, @@ -4180,12 +4746,12 @@ "access-control-expose-headers": "X-Request-ID, CF-Ray, CF-Ray", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8b1655e3d81ed-IAD", + "cf-ray": "a3c77fe14e58cd76-IAD", "connection": "keep-alive", "content-type": "text/event-stream; charset=utf-8", - "date": "Tue, 21 Jul 2026 08:04:06 GMT", + "date": "Thu, 17 Sep 2026 10:41:37 GMT", "openai-organization": "braintrust-data", - "openai-processing-ms": "107", + "openai-processing-ms": "373", "openai-project": "proj_vsCSXafhhByzWOThMrJcZiw9", "openai-version": "2020-10-01", "server": "cloudflare", @@ -4193,364 +4759,13 @@ "strict-transport-security": "max-age=31536000; includeSubDomains; preload", "transfer-encoding": "chunked", "x-content-type-options": "nosniff", - "x-request-id": "req_0e748e344505492fb6f7b9917d1ebd2c" - }, - "status": 200, - "statusText": "OK" - } - }, - { - "callIndex": 0, - "id": "04d8f7db5dc7b0b8", - "matchKey": "POST api.anthropic.com/v1/messages", - "recordedAt": "2026-07-21T08:01:17.173Z", - "request": { - "body": { - "kind": "json", - "value": { - "max_tokens": 24, - "messages": [ - { - "content": [ - { - "cache_control": { - "type": "ephemeral" - }, - "text": "braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix\n\nReply with exactly CACHE_OK and nothing else.", - "type": "text" - } - ], - "role": "user" - } - ], - "model": "claude-haiku-4-5", - "temperature": 0 - } - }, - "headers": {}, - "method": "POST", - "url": "https://api.anthropic.com/v1/messages" - }, - "response": { - "body": { - "kind": "json", - "value": { - "content": [ - { - "text": "CACHE_OK", - "type": "text" - } - ], - "id": "msg_011CdErLmHjZWe1ngEkchQJL", - "model": "claude-haiku-4-5-20251001", - "role": "assistant", - "stop_details": null, - "stop_reason": "end_turn", - "stop_sequence": null, - "type": "message", - "usage": { - "cache_creation": { - "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 0 - }, - "cache_creation_input_tokens": 0, - "cache_read_input_tokens": 4516, - "inference_geo": "not_available", - "input_tokens": 3, - "output_tokens": 7, - "service_tier": "standard" - } - } - }, - "headers": { - "anthropic-organization-id": "27796668-7351-40ac-acc4-024aee8995a5", - "anthropic-ratelimit-input-tokens-limit": "10000000", - "anthropic-ratelimit-input-tokens-remaining": "10000000", - "anthropic-ratelimit-input-tokens-reset": "2026-07-21T08:01:16Z", - "anthropic-ratelimit-output-tokens-limit": "2000000", - "anthropic-ratelimit-output-tokens-remaining": "2000000", - "anthropic-ratelimit-output-tokens-reset": "2026-07-21T08:01:17Z", - "anthropic-ratelimit-requests-limit": "20000", - "anthropic-ratelimit-requests-remaining": "19999", - "anthropic-ratelimit-requests-reset": "2026-07-21T08:01:15Z", - "anthropic-ratelimit-tokens-limit": "12000000", - "anthropic-ratelimit-tokens-remaining": "12000000", - "anthropic-ratelimit-tokens-reset": "2026-07-21T08:01:16Z", - "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8ad31ba014ff8-IAD", - "connection": "keep-alive", - "content-encoding": "gzip", - "content-security-policy": "default-src 'none'; frame-ancestors 'none'", - "content-type": "application/json", - "date": "Tue, 21 Jul 2026 08:01:17 GMT", - "request-id": "req_011CdErLfcBLTtgKtPSVBdbd", - "server": "cloudflare", - "strict-transport-security": "max-age=31536000; includeSubDomains; preload", - "traceresponse": "00-f03392c164678e635e3b1d56a44fc313-648562cc557d4878-01", - "transfer-encoding": "chunked", - "vary": "Accept-Encoding", - "x-robots-tag": "none" - }, - "status": 200, - "statusText": "OK" - } - }, - { - "callIndex": 1, - "id": "f51018468a0f5811", - "matchKey": "POST api.anthropic.com/v1/messages", - "recordedAt": "2026-07-21T08:01:23.085Z", - "request": { - "body": { - "kind": "json", - "value": { - "max_tokens": 24, - "messages": [ - { - "content": [ - { - "cache_control": { - "type": "ephemeral" - }, - "text": "braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix\n\nReply with exactly CACHE_OK and nothing else.", - "type": "text" - } - ], - "role": "user" - } - ], - "model": "claude-haiku-4-5", - "temperature": 0 - } - }, - "headers": {}, - "method": "POST", - "url": "https://api.anthropic.com/v1/messages" - }, - "response": { - "body": { - "kind": "json", - "value": { - "content": [ - { - "text": "CACHE_OK", - "type": "text" - } - ], - "id": "msg_011CdErMF6Zy1AYcL5mpWSBn", - "model": "claude-haiku-4-5-20251001", - "role": "assistant", - "stop_details": null, - "stop_reason": "end_turn", - "stop_sequence": null, - "type": "message", - "usage": { - "cache_creation": { - "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 0 - }, - "cache_creation_input_tokens": 0, - "cache_read_input_tokens": 4516, - "inference_geo": "not_available", - "input_tokens": 3, - "output_tokens": 7, - "service_tier": "standard" - } - } - }, - "headers": { - "anthropic-organization-id": "27796668-7351-40ac-acc4-024aee8995a5", - "anthropic-ratelimit-input-tokens-limit": "10000000", - "anthropic-ratelimit-input-tokens-remaining": "10000000", - "anthropic-ratelimit-input-tokens-reset": "2026-07-21T08:01:22Z", - "anthropic-ratelimit-output-tokens-limit": "2000000", - "anthropic-ratelimit-output-tokens-remaining": "2000000", - "anthropic-ratelimit-output-tokens-reset": "2026-07-21T08:01:22Z", - "anthropic-ratelimit-requests-limit": "20000", - "anthropic-ratelimit-requests-remaining": "19999", - "anthropic-ratelimit-requests-reset": "2026-07-21T08:01:22Z", - "anthropic-ratelimit-tokens-limit": "12000000", - "anthropic-ratelimit-tokens-remaining": "12000000", - "anthropic-ratelimit-tokens-reset": "2026-07-21T08:01:22Z", - "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8ad61c86c5414-IAD", - "connection": "keep-alive", - "content-encoding": "gzip", - "content-security-policy": "default-src 'none'; frame-ancestors 'none'", - "content-type": "application/json", - "date": "Tue, 21 Jul 2026 08:01:23 GMT", - "request-id": "req_011CdErMERPB8CMVNkcrJnnJ", - "server": "cloudflare", - "strict-transport-security": "max-age=31536000; includeSubDomains; preload", - "traceresponse": "00-4bad355a374ad0984c3c91c04b5287db-7c4d9c50339f60eb-01", - "transfer-encoding": "chunked", - "vary": "Accept-Encoding", - "x-robots-tag": "none" - }, - "status": 200, - "statusText": "OK" - } - }, - { - "callIndex": 2, - "id": "c440f9309e7fff40", - "matchKey": "POST api.anthropic.com/v1/messages", - "recordedAt": "2026-07-21T08:01:29.185Z", - "request": { - "body": { - "kind": "json", - "value": { - "max_tokens": 24, - "messages": [ - { - "content": [ - { - "cache_control": { - "type": "ephemeral" - }, - "text": "braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix braintrust cache prefix\n\nReply with exactly CACHE_OK and nothing else.", - "type": "text" - } - ], - "role": "user" - } - ], - "model": "claude-haiku-4-5", - "temperature": 0 - } - }, - "headers": {}, - "method": "POST", - "url": "https://api.anthropic.com/v1/messages" - }, - "response": { - "body": { - "kind": "json", - "value": { - "content": [ - { - "text": "CACHE_OK", - "type": "text" - } - ], - "id": "msg_011CdErMgqNnL39thapTj2ms", - "model": "claude-haiku-4-5-20251001", - "role": "assistant", - "stop_details": null, - "stop_reason": "end_turn", - "stop_sequence": null, - "type": "message", - "usage": { - "cache_creation": { - "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 0 - }, - "cache_creation_input_tokens": 0, - "cache_read_input_tokens": 4516, - "inference_geo": "not_available", - "input_tokens": 3, - "output_tokens": 7, - "service_tier": "standard" - } - } - }, - "headers": { - "anthropic-organization-id": "27796668-7351-40ac-acc4-024aee8995a5", - "anthropic-ratelimit-input-tokens-limit": "10000000", - "anthropic-ratelimit-input-tokens-remaining": "10000000", - "anthropic-ratelimit-input-tokens-reset": "2026-07-21T08:01:29Z", - "anthropic-ratelimit-output-tokens-limit": "2000000", - "anthropic-ratelimit-output-tokens-remaining": "2000000", - "anthropic-ratelimit-output-tokens-reset": "2026-07-21T08:01:29Z", - "anthropic-ratelimit-requests-limit": "20000", - "anthropic-ratelimit-requests-remaining": "19999", - "anthropic-ratelimit-requests-reset": "2026-07-21T08:01:28Z", - "anthropic-ratelimit-tokens-limit": "12000000", - "anthropic-ratelimit-tokens-remaining": "12000000", - "anthropic-ratelimit-tokens-reset": "2026-07-21T08:01:29Z", - "cf-cache-status": "DYNAMIC", - "cf-ray": "a1e8ad86ad955774-IAD", - "connection": "keep-alive", - "content-encoding": "gzip", - "content-security-policy": "default-src 'none'; frame-ancestors 'none'", - "content-type": "application/json", - "date": "Tue, 21 Jul 2026 08:01:29 GMT", - "request-id": "req_011CdErMfdhH74Kk6DnDRSY1", - "server": "cloudflare", - "strict-transport-security": "max-age=31536000; includeSubDomains; preload", - "traceresponse": "00-2b2c93921cb76509991e3be100659023-0ffe9526b566e985-01", - "transfer-encoding": "chunked", - "vary": "Accept-Encoding", - "x-robots-tag": "none" - }, - "status": 200, - "statusText": "OK" - } - }, - { - "callIndex": 0, - "id": "064d11f1077567e7", - "matchKey": "POST api.cohere.com/v2/rerank", - "recordedAt": "2026-08-03T11:56:26.194Z", - "request": { - "body": { - "kind": "json", - "value": { - "documents": [ - "Athens is in Greece.", - "Paris is in France.", - "Lima is in Peru." - ], - "model": "rerank-v3.5", - "query": "Which document is about France?", - "top_n": 2 - } - }, - "headers": {}, - "method": "POST", - "url": "https://api.cohere.com/v2/rerank" - }, - "response": { - "body": { - "kind": "json", - "value": { - "id": "42b8d590-8594-488a-9b31-6d68f60ccb6c", - "meta": { - "api_version": { - "version": "2" - }, - "billed_units": { - "search_units": 1 - } - }, - "results": [ - { - "index": 1, - "relevance_score": 0.06657539 - }, - { - "index": 0, - "relevance_score": 0.015062517 - } - ] - } - }, - "headers": { - "access-control-expose-headers": "X-Debug-Trace-ID", - "alt-svc": "h3=\":443\"; ma=2592000", - "cache-control": "no-cache, no-store, no-transform, must-revalidate, private, max-age=0", - "content-encoding": "gzip", - "content-type": "application/json", - "date": "Mon, 03 Aug 2026 11:56:26 GMT", - "expires": "Thu, 01 Jan 1970 00:00:00 GMT", - "pragma": "no-cache", - "server": "envoy", - "transfer-encoding": "chunked", - "vary": "Origin,Accept-Encoding", - "via": "1.1 google", - "x-accel-expires": "0", - "x-debug-trace-id": "454d4e41ac982f6df3cdf7a38dd09d48", - "x-envoy-upstream-service-time": "78" + "x-ratelimit-limit-requests": "30000", + "x-ratelimit-limit-tokens": "150000000", + "x-ratelimit-remaining-requests": "29999", + "x-ratelimit-remaining-tokens": "149999595", + "x-ratelimit-reset-requests": "2ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_3b7b3568a7d94feeb47128b6bf270c42" }, "status": 200, "statusText": "OK" diff --git a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-auto-hook.span-tree.json b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-auto-hook.span-tree.json index 28f97e365..d04da8897 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-auto-hook.span-tree.json +++ b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-auto-hook.span-tree.json @@ -4,6 +4,134 @@ "name": "ai-sdk-instrumentation-root", "type": "task", "children": [ + { + "name": "ai-sdk-evaluate-operation", + "children": [ + { + "name": "evaluate", + "type": "llm", + "children": [], + "input": { + "questions": { + "category": { + "criteria": { + "billing": "Payments and refunds", + "technical": "Software problems" + }, + "instructions": "Which team should handle this request?", + "type": "choice" + }, + "duplicate": { + "instructions": "Does the customer report a duplicate charge?", + "type": "boolean" + }, + "urgency": { + "criteria": [ + "Low", + "Medium", + "High" + ], + "instructions": "How urgent is this request?", + "type": "score" + } + }, + "state": { + "message": "I was charged twice for my subscription. Please refund the duplicate charge." + } + }, + "output": { + "category": { + "choice": "billing", + "probabilities": { + "billing": 1, + "technical": 0 + }, + "type": "choice" + }, + "duplicate": { + "probability": 0.99, + "type": "boolean" + }, + "urgency": { + "probabilities": { + "0": 0.03, + "1": 0.84, + "2": 0.13 + }, + "score": 1.1, + "type": "score" + } + }, + "metadata": { + "braintrust": { + "integration_name": "ai-sdk", + "sdk_language": "typescript" + }, + "model": "jev-1.13.0", + "provider": "typesafe", + "providerMetadata": { + "typesafe": { + "confidence": { + "category": 1, + "urgency": 0.76 + } + } + } + }, + "metrics": { + "completion_tokens": 62, + "prompt_tokens": 382, + "tokens": 444 + } + } + ], + "metadata": { + "operation": "evaluate", + "testRunId": "" + } + }, + { + "name": "ai-sdk-evaluate-string-operation", + "children": [ + { + "name": "evaluate", + "type": "llm", + "children": [], + "input": { + "questions": { + "positive": { + "instructions": "Was the delivery successful?", + "type": "boolean" + } + }, + "state": "The package arrived intact and on time." + }, + "output": { + "positive": { + "probability": 0.98, + "type": "boolean" + } + }, + "metadata": { + "braintrust": { + "integration_name": "ai-sdk", + "sdk_language": "typescript" + }, + "model": "jev-1.13.0", + "provider": "typesafe-ai" + }, + "metrics": { + "completion_tokens": 20, + "prompt_tokens": 279, + "tokens": 299 + } + } + ], + "metadata": { + "operation": "evaluate-string", + "testRunId": "" + } + }, { "name": "ai-sdk-generate-operation", "children": [ @@ -34,7 +162,7 @@ { "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, "text": "PARIS", @@ -42,6 +170,12 @@ } ], "finishReason": "stop", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -296,7 +430,7 @@ { "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, "text": "{\"answer\":\"4\"}", @@ -304,6 +438,12 @@ } ], "finishReason": "stop", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -568,7 +708,7 @@ { "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, "text": "One, two, three.", @@ -576,6 +716,12 @@ } ], "finishReason": "stop", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -1065,15 +1211,21 @@ }, "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, - "toolCallId": "", + "toolCallId": "", "toolName": "get_weather", "type": "tool-call" } ], "finishReason": "tool-calls", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -1216,15 +1368,21 @@ }, "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, - "toolCallId": "", + "toolCallId": "", "toolName": "get_weather", "type": "tool-call" } ], "finishReason": "tool-calls", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -1404,15 +1562,21 @@ }, "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, - "toolCallId": "", + "toolCallId": "", "toolName": "get_weather", "type": "tool-call" } ], "finishReason": "tool-calls", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -1629,15 +1793,21 @@ }, "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, - "toolCallId": "", + "toolCallId": "", "toolName": "get_weather", "type": "tool-call" } ], "finishReason": "tool-calls", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -2558,6 +2728,26 @@ } ], "finishReason": "stop", + "providerMetadata": { + "anthropic": { + "container": null, + "contextManagement": null, + "iterations": null, + "stopSequence": null, + "usage": { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 0 + }, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 4516, + "inference_geo": "not_available", + "input_tokens": 3, + "output_tokens": 7, + "service_tier": "standard" + } + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -2831,6 +3021,26 @@ } ], "finishReason": "stop", + "providerMetadata": { + "anthropic": { + "container": null, + "contextManagement": null, + "iterations": null, + "stopSequence": null, + "usage": { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 0 + }, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 4516, + "inference_geo": "not_available", + "input_tokens": 3, + "output_tokens": 7, + "service_tier": "standard" + } + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -3101,6 +3311,26 @@ } ], "finishReason": "stop", + "providerMetadata": { + "anthropic": { + "container": null, + "contextManagement": null, + "iterations": null, + "stopSequence": null, + "usage": { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 0 + }, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 4516, + "inference_geo": "not_available", + "input_tokens": 3, + "output_tokens": 7, + "service_tier": "standard" + } + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -3681,7 +3911,7 @@ { "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, "text": "HELLO", @@ -3689,6 +3919,12 @@ } ], "finishReason": "stop", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -3935,7 +4171,7 @@ { "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, "text": "STREAM HELLO", @@ -3943,6 +4179,12 @@ } ], "finishReason": "stop", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -4255,10 +4497,10 @@ }, "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, - "toolCallId": "", + "toolCallId": "", "toolName": "get_store_price", "type": "tool-call" }, @@ -4269,15 +4511,21 @@ }, "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, - "toolCallId": "", + "toolCallId": "", "toolName": "get_store_price", "type": "tool-call" } ], "finishReason": "tool-calls", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -4506,15 +4754,21 @@ }, "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, - "toolCallId": "", + "toolCallId": "", "toolName": "apply_discount", "type": "tool-call" } ], "finishReason": "tool-calls", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -4759,37 +5013,43 @@ { "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, - "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A** at $999. After applying the discount code **SAVE20**, the final total is **$799.20**.", + "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A**. After applying the discount code **SAVE20**, the final total is **$799.20**.", "type": "text" } ], "finishReason": "stop", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { "cacheReadTokens": 0, - "noCacheTokens": 308 + "noCacheTokens": 305 }, - "inputTokens": 308, + "inputTokens": 305, "outputTokenDetails": { "reasoningTokens": 0, - "textTokens": 62 + "textTokens": 59 }, - "outputTokens": 62, + "outputTokens": 59, "raw": { - "input_tokens": 308, + "input_tokens": 305, "input_tokens_details": { "cached_tokens": 0 }, - "output_tokens": 62, + "output_tokens": 59, "output_tokens_details": { "reasoning_tokens": 0 } }, - "totalTokens": 370 + "totalTokens": 364 } }, "metadata": { @@ -4801,10 +5061,10 @@ "provider": "openai.responses" }, "metrics": { - "completion_tokens": 62, + "completion_tokens": 59, "prompt_cached_tokens": 0, - "prompt_tokens": 308, - "tokens": 370 + "prompt_tokens": 305, + "tokens": 364 } } ], @@ -4976,7 +5236,7 @@ "itemId": "" } }, - "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A** at $999. After applying the discount code **SAVE20**, the final total is **$799.20**.", + "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A**. After applying the discount code **SAVE20**, the final total is **$799.20**.", "type": "text" } ], @@ -4997,7 +5257,7 @@ "itemId": "" } }, - "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A** at $999. After applying the discount code **SAVE20**, the final total is **$799.20**.", + "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A**. After applying the discount code **SAVE20**, the final total is **$799.20**.", "type": "text" } ], @@ -5310,7 +5570,7 @@ "itemId": "" } }, - "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A** at $999. After applying the discount code **SAVE20**, the final total is **$799.20**.", + "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A**. After applying the discount code **SAVE20**, the final total is **$799.20**.", "type": "text" } ], @@ -5335,7 +5595,7 @@ "itemId": "" } }, - "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A** at $999. After applying the discount code **SAVE20**, the final total is **$799.20**.", + "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A**. After applying the discount code **SAVE20**, the final total is **$799.20**.", "type": "text" } ], @@ -5351,30 +5611,30 @@ "usage": { "inputTokenDetails": { "cacheReadTokens": 0, - "noCacheTokens": 308 + "noCacheTokens": 305 }, - "inputTokens": 308, + "inputTokens": 305, "outputTokenDetails": { "reasoningTokens": 0, - "textTokens": 62 + "textTokens": 59 }, - "outputTokens": 62, + "outputTokens": 59, "raw": { - "input_tokens": 308, + "input_tokens": 305, "input_tokens_details": { "cached_tokens": 0 }, - "output_tokens": 62, + "output_tokens": 59, "output_tokens_details": { "reasoning_tokens": 0 } }, - "totalTokens": 370 + "totalTokens": 364 }, "warnings": [] } ], - "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A** at $999. After applying the discount code **SAVE20**, the final total is **$799.20**.", + "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A**. After applying the discount code **SAVE20**, the final total is **$799.20**.", "toolCalls": [ { "input": { @@ -5472,28 +5732,28 @@ "totalUsage": { "inputTokenDetails": { "cacheReadTokens": 0, - "noCacheTokens": 741 + "noCacheTokens": 738 }, - "inputTokens": 741, + "inputTokens": 738, "outputTokenDetails": { "reasoningTokens": 0, - "textTokens": 142 + "textTokens": 139 }, - "outputTokens": 142, - "totalTokens": 883 + "outputTokens": 139, + "totalTokens": 877 }, "usage": { "inputTokenDetails": { "cacheReadTokens": 0, - "noCacheTokens": 741 + "noCacheTokens": 738 }, - "inputTokens": 741, + "inputTokens": 738, "outputTokenDetails": { "reasoningTokens": 0, - "textTokens": 142 + "textTokens": 139 }, - "outputTokens": 142, - "totalTokens": 883 + "outputTokens": 139, + "totalTokens": 877 }, "warnings": [] }, @@ -7534,7 +7794,7 @@ } ], "metadata": { - "aiSdkVersion": "7.0.0", + "aiSdkVersion": "7.0.105", "scenario": "ai-sdk-instrumentation", "testRunId": "", "workflowVersion": "1.0.8" diff --git a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-auto-hook.span-tree.txt b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-auto-hook.span-tree.txt index 801c1513e..4ff0655c2 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-auto-hook.span-tree.txt +++ b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-auto-hook.span-tree.txt @@ -1,11 +1,123 @@ span_tree: └── ai-sdk-instrumentation-root [task] metadata: { - "aiSdkVersion": "7.0.0", + "aiSdkVersion": "7.0.105", "scenario": "ai-sdk-instrumentation", "testRunId": "", "workflowVersion": "1.0.8" } + ├── ai-sdk-evaluate-operation + │ metadata: { + │ "operation": "evaluate", + │ "testRunId": "" + │ } + │ └── evaluate [llm] + │ input: { + │ "questions": { + │ "category": { + │ "criteria": { + │ "billing": "Payments and refunds", + │ "technical": "Software problems" + │ }, + │ "instructions": "Which team should handle this request?", + │ "type": "choice" + │ }, + │ "duplicate": { + │ "instructions": "Does the customer report a duplicate charge?", + │ "type": "boolean" + │ }, + │ "urgency": { + │ "criteria": [ + │ "Low", + │ "Medium", + │ "High" + │ ], + │ "instructions": "How urgent is this request?", + │ "type": "score" + │ } + │ }, + │ "state": { + │ "message": "I was charged twice for my subscription. Please refund the duplicate charge." + │ } + │ } + │ output: { + │ "category": { + │ "choice": "billing", + │ "probabilities": { + │ "billing": 1, + │ "technical": 0 + │ }, + │ "type": "choice" + │ }, + │ "duplicate": { + │ "probability": 0.99, + │ "type": "boolean" + │ }, + │ "urgency": { + │ "probabilities": { + │ "0": 0.03, + │ "1": 0.84, + │ "2": 0.13 + │ }, + │ "score": 1.1, + │ "type": "score" + │ } + │ } + │ metadata: { + │ "braintrust": { + │ "integration_name": "ai-sdk", + │ "sdk_language": "typescript" + │ }, + │ "model": "jev-1.13.0", + │ "provider": "typesafe", + │ "providerMetadata": { + │ "typesafe": { + │ "confidence": { + │ "category": 1, + │ "urgency": 0.76 + │ } + │ } + │ } + │ } + │ metrics: { + │ "completion_tokens": 62, + │ "prompt_tokens": 382, + │ "tokens": 444 + │ } + ├── ai-sdk-evaluate-string-operation + │ metadata: { + │ "operation": "evaluate-string", + │ "testRunId": "" + │ } + │ └── evaluate [llm] + │ input: { + │ "questions": { + │ "positive": { + │ "instructions": "Was the delivery successful?", + │ "type": "boolean" + │ } + │ }, + │ "state": "The package arrived intact and on time." + │ } + │ output: { + │ "positive": { + │ "probability": 0.98, + │ "type": "boolean" + │ } + │ } + │ metadata: { + │ "braintrust": { + │ "integration_name": "ai-sdk", + │ "sdk_language": "typescript" + │ }, + │ "model": "jev-1.13.0", + │ "provider": "typesafe-ai" + │ } + │ metrics: { + │ "completion_tokens": 20, + │ "prompt_tokens": 279, + │ "tokens": 299 + │ } ├── ai-sdk-generate-operation │ metadata: { │ "operation": "generate", @@ -200,7 +312,7 @@ span_tree: │ { │ "providerMetadata": { │ "openai": { - │ "itemId": "" + │ "itemId": "" │ } │ }, │ "text": "PARIS", @@ -208,6 +320,12 @@ span_tree: │ } │ ], │ "finishReason": "stop", + │ "providerMetadata": { + │ "openai": { + │ "responseId": "", + │ "serviceTier": "default" + │ } + │ }, │ "response": {}, │ "usage": { │ "inputTokenDetails": { @@ -464,7 +582,7 @@ span_tree: │ { │ "providerMetadata": { │ "openai": { - │ "itemId": "" + │ "itemId": "" │ } │ }, │ "text": "{\"answer\":\"4\"}", @@ -472,6 +590,12 @@ span_tree: │ } │ ], │ "finishReason": "stop", + │ "providerMetadata": { + │ "openai": { + │ "responseId": "", + │ "serviceTier": "default" + │ } + │ }, │ "response": {}, │ "usage": { │ "inputTokenDetails": { @@ -708,7 +832,7 @@ span_tree: │ { │ "providerMetadata": { │ "openai": { - │ "itemId": "" + │ "itemId": "" │ } │ }, │ "text": "One, two, three.", @@ -716,6 +840,12 @@ span_tree: │ } │ ], │ "finishReason": "stop", + │ "providerMetadata": { + │ "openai": { + │ "responseId": "", + │ "serviceTier": "default" + │ } + │ }, │ "response": {}, │ "usage": { │ "inputTokenDetails": { @@ -1795,15 +1925,21 @@ span_tree: │ │ }, │ │ "providerMetadata": { │ │ "openai": { - │ │ "itemId": "" + │ │ "itemId": "" │ │ } │ │ }, - │ │ "toolCallId": "", + │ │ "toolCallId": "", │ │ "toolName": "get_weather", │ │ "type": "tool-call" │ │ } │ │ ], │ │ "finishReason": "tool-calls", + │ │ "providerMetadata": { + │ │ "openai": { + │ │ "responseId": "", + │ │ "serviceTier": "default" + │ │ } + │ │ }, │ │ "response": {}, │ │ "usage": { │ │ "inputTokenDetails": { @@ -1938,15 +2074,21 @@ span_tree: │ │ }, │ │ "providerMetadata": { │ │ "openai": { - │ │ "itemId": "" + │ │ "itemId": "" │ │ } │ │ }, - │ │ "toolCallId": "", + │ │ "toolCallId": "", │ │ "toolName": "get_weather", │ │ "type": "tool-call" │ │ } │ │ ], │ │ "finishReason": "tool-calls", + │ │ "providerMetadata": { + │ │ "openai": { + │ │ "responseId": "", + │ │ "serviceTier": "default" + │ │ } + │ │ }, │ │ "response": {}, │ │ "usage": { │ │ "inputTokenDetails": { @@ -2118,15 +2260,21 @@ span_tree: │ │ }, │ │ "providerMetadata": { │ │ "openai": { - │ │ "itemId": "" + │ │ "itemId": "" │ │ } │ │ }, - │ │ "toolCallId": "", + │ │ "toolCallId": "", │ │ "toolName": "get_weather", │ │ "type": "tool-call" │ │ } │ │ ], │ │ "finishReason": "tool-calls", + │ │ "providerMetadata": { + │ │ "openai": { + │ │ "responseId": "", + │ │ "serviceTier": "default" + │ │ } + │ │ }, │ │ "response": {}, │ │ "usage": { │ │ "inputTokenDetails": { @@ -2335,15 +2483,21 @@ span_tree: │ │ }, │ │ "providerMetadata": { │ │ "openai": { - │ │ "itemId": "" + │ │ "itemId": "" │ │ } │ │ }, - │ │ "toolCallId": "", + │ │ "toolCallId": "", │ │ "toolName": "get_weather", │ │ "type": "tool-call" │ │ } │ │ ], │ │ "finishReason": "tool-calls", + │ │ "providerMetadata": { + │ │ "openai": { + │ │ "responseId": "", + │ │ "serviceTier": "default" + │ │ } + │ │ }, │ │ "response": {}, │ │ "usage": { │ │ "inputTokenDetails": { @@ -2617,6 +2771,26 @@ span_tree: │ } │ ], │ "finishReason": "stop", + │ "providerMetadata": { + │ "anthropic": { + │ "container": null, + │ "contextManagement": null, + │ "iterations": null, + │ "stopSequence": null, + │ "usage": { + │ "cache_creation": { + │ "ephemeral_1h_input_tokens": 0, + │ "ephemeral_5m_input_tokens": 0 + │ }, + │ "cache_creation_input_tokens": 0, + │ "cache_read_input_tokens": 4516, + │ "inference_geo": "not_available", + │ "input_tokens": 3, + │ "output_tokens": 7, + │ "service_tier": "standard" + │ } + │ } + │ }, │ "response": {}, │ "usage": { │ "inputTokenDetails": { @@ -2883,6 +3057,26 @@ span_tree: │ │ } │ │ ], │ │ "finishReason": "stop", + │ │ "providerMetadata": { + │ │ "anthropic": { + │ │ "container": null, + │ │ "contextManagement": null, + │ │ "iterations": null, + │ │ "stopSequence": null, + │ │ "usage": { + │ │ "cache_creation": { + │ │ "ephemeral_1h_input_tokens": 0, + │ │ "ephemeral_5m_input_tokens": 0 + │ │ }, + │ │ "cache_creation_input_tokens": 0, + │ │ "cache_read_input_tokens": 4516, + │ │ "inference_geo": "not_available", + │ │ "input_tokens": 3, + │ │ "output_tokens": 7, + │ │ "service_tier": "standard" + │ │ } + │ │ } + │ │ }, │ │ "response": {}, │ │ "usage": { │ │ "inputTokenDetails": { @@ -3144,6 +3338,26 @@ span_tree: │ } │ ], │ "finishReason": "stop", + │ "providerMetadata": { + │ "anthropic": { + │ "container": null, + │ "contextManagement": null, + │ "iterations": null, + │ "stopSequence": null, + │ "usage": { + │ "cache_creation": { + │ "ephemeral_1h_input_tokens": 0, + │ "ephemeral_5m_input_tokens": 0 + │ }, + │ "cache_creation_input_tokens": 0, + │ "cache_read_input_tokens": 4516, + │ "inference_geo": "not_available", + │ "input_tokens": 3, + │ "output_tokens": 7, + │ "service_tier": "standard" + │ } + │ } + │ }, │ "response": {}, │ "usage": { │ "inputTokenDetails": { @@ -3668,7 +3882,7 @@ span_tree: │ { │ "providerMetadata": { │ "openai": { - │ "itemId": "" + │ "itemId": "" │ } │ }, │ "text": "HELLO", @@ -3676,6 +3890,12 @@ span_tree: │ } │ ], │ "finishReason": "stop", + │ "providerMetadata": { + │ "openai": { + │ "responseId": "", + │ "serviceTier": "default" + │ } + │ }, │ "response": {}, │ "usage": { │ "inputTokenDetails": { @@ -3912,7 +4132,7 @@ span_tree: │ { │ "providerMetadata": { │ "openai": { - │ "itemId": "" + │ "itemId": "" │ } │ }, │ "text": "STREAM HELLO", @@ -3920,6 +4140,12 @@ span_tree: │ } │ ], │ "finishReason": "stop", + │ "providerMetadata": { + │ "openai": { + │ "responseId": "", + │ "serviceTier": "default" + │ } + │ }, │ "response": {}, │ "usage": { │ "inputTokenDetails": { @@ -4133,7 +4359,7 @@ span_tree: │ "itemId": "" │ } │ }, - │ "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A** at $999. After applying the discount code **SAVE20**, the final total is **$799.20**.", + │ "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A**. After applying the discount code **SAVE20**, the final total is **$799.20**.", │ "type": "text" │ } │ ], @@ -4154,7 +4380,7 @@ span_tree: │ "itemId": "" │ } │ }, - │ "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A** at $999. After applying the discount code **SAVE20**, the final total is **$799.20**.", + │ "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A**. After applying the discount code **SAVE20**, the final total is **$799.20**.", │ "type": "text" │ } │ ], @@ -4467,7 +4693,7 @@ span_tree: │ "itemId": "" │ } │ }, - │ "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A** at $999. After applying the discount code **SAVE20**, the final total is **$799.20**.", + │ "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A**. After applying the discount code **SAVE20**, the final total is **$799.20**.", │ "type": "text" │ } │ ], @@ -4492,7 +4718,7 @@ span_tree: │ "itemId": "" │ } │ }, - │ "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A** at $999. After applying the discount code **SAVE20**, the final total is **$799.20**.", + │ "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A**. After applying the discount code **SAVE20**, the final total is **$799.20**.", │ "type": "text" │ } │ ], @@ -4508,30 +4734,30 @@ span_tree: │ "usage": { │ "inputTokenDetails": { │ "cacheReadTokens": 0, - │ "noCacheTokens": 308 + │ "noCacheTokens": 305 │ }, - │ "inputTokens": 308, + │ "inputTokens": 305, │ "outputTokenDetails": { │ "reasoningTokens": 0, - │ "textTokens": 62 + │ "textTokens": 59 │ }, - │ "outputTokens": 62, + │ "outputTokens": 59, │ "raw": { - │ "input_tokens": 308, + │ "input_tokens": 305, │ "input_tokens_details": { │ "cached_tokens": 0 │ }, - │ "output_tokens": 62, + │ "output_tokens": 59, │ "output_tokens_details": { │ "reasoning_tokens": 0 │ } │ }, - │ "totalTokens": 370 + │ "totalTokens": 364 │ }, │ "warnings": [] │ } │ ], - │ "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A** at $999. After applying the discount code **SAVE20**, the final total is **$799.20**.", + │ "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A**. After applying the discount code **SAVE20**, the final total is **$799.20**.", │ "toolCalls": [ │ { │ "input": { @@ -4629,28 +4855,28 @@ span_tree: │ "totalUsage": { │ "inputTokenDetails": { │ "cacheReadTokens": 0, - │ "noCacheTokens": 741 + │ "noCacheTokens": 738 │ }, - │ "inputTokens": 741, + │ "inputTokens": 738, │ "outputTokenDetails": { │ "reasoningTokens": 0, - │ "textTokens": 142 + │ "textTokens": 139 │ }, - │ "outputTokens": 142, - │ "totalTokens": 883 + │ "outputTokens": 139, + │ "totalTokens": 877 │ }, │ "usage": { │ "inputTokenDetails": { │ "cacheReadTokens": 0, - │ "noCacheTokens": 741 + │ "noCacheTokens": 738 │ }, - │ "inputTokens": 741, + │ "inputTokens": 738, │ "outputTokenDetails": { │ "reasoningTokens": 0, - │ "textTokens": 142 + │ "textTokens": 139 │ }, - │ "outputTokens": 142, - │ "totalTokens": 883 + │ "outputTokens": 139, + │ "totalTokens": 877 │ }, │ "warnings": [] │ } @@ -4745,10 +4971,10 @@ span_tree: │ │ }, │ │ "providerMetadata": { │ │ "openai": { - │ │ "itemId": "" + │ │ "itemId": "" │ │ } │ │ }, - │ │ "toolCallId": "", + │ │ "toolCallId": "", │ │ "toolName": "get_store_price", │ │ "type": "tool-call" │ │ }, @@ -4759,15 +4985,21 @@ span_tree: │ │ }, │ │ "providerMetadata": { │ │ "openai": { - │ │ "itemId": "" + │ │ "itemId": "" │ │ } │ │ }, - │ │ "toolCallId": "", + │ │ "toolCallId": "", │ │ "toolName": "get_store_price", │ │ "type": "tool-call" │ │ } │ │ ], │ │ "finishReason": "tool-calls", + │ │ "providerMetadata": { + │ │ "openai": { + │ │ "responseId": "", + │ │ "serviceTier": "default" + │ │ } + │ │ }, │ │ "response": {}, │ │ "usage": { │ │ "inputTokenDetails": { @@ -4984,15 +5216,21 @@ span_tree: │ │ }, │ │ "providerMetadata": { │ │ "openai": { - │ │ "itemId": "" + │ │ "itemId": "" │ │ } │ │ }, - │ │ "toolCallId": "", + │ │ "toolCallId": "", │ │ "toolName": "apply_discount", │ │ "type": "tool-call" │ │ } │ │ ], │ │ "finishReason": "tool-calls", + │ │ "providerMetadata": { + │ │ "openai": { + │ │ "responseId": "", + │ │ "serviceTier": "default" + │ │ } + │ │ }, │ │ "response": {}, │ │ "usage": { │ │ "inputTokenDetails": { @@ -5229,37 +5467,43 @@ span_tree: │ { │ "providerMetadata": { │ "openai": { - │ "itemId": "" + │ "itemId": "" │ } │ }, - │ "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A** at $999. After applying the discount code **SAVE20**, the final total is **$799.20**.", + │ "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A**. After applying the discount code **SAVE20**, the final total is **$799.20**.", │ "type": "text" │ } │ ], │ "finishReason": "stop", + │ "providerMetadata": { + │ "openai": { + │ "responseId": "", + │ "serviceTier": "default" + │ } + │ }, │ "response": {}, │ "usage": { │ "inputTokenDetails": { │ "cacheReadTokens": 0, - │ "noCacheTokens": 308 + │ "noCacheTokens": 305 │ }, - │ "inputTokens": 308, + │ "inputTokens": 305, │ "outputTokenDetails": { │ "reasoningTokens": 0, - │ "textTokens": 62 + │ "textTokens": 59 │ }, - │ "outputTokens": 62, + │ "outputTokens": 59, │ "raw": { - │ "input_tokens": 308, + │ "input_tokens": 305, │ "input_tokens_details": { │ "cached_tokens": 0 │ }, - │ "output_tokens": 62, + │ "output_tokens": 59, │ "output_tokens_details": { │ "reasoning_tokens": 0 │ } │ }, - │ "totalTokens": 370 + │ "totalTokens": 364 │ } │ } │ metadata: { @@ -5271,10 +5515,10 @@ span_tree: │ "provider": "openai.responses" │ } │ metrics: { - │ "completion_tokens": 62, + │ "completion_tokens": 59, │ "prompt_cached_tokens": 0, - │ "prompt_tokens": 308, - │ "tokens": 370 + │ "prompt_tokens": 305, + │ "tokens": 364 │ } ├── ai-sdk-workflow-agent-stream-operation │ metadata: { diff --git a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-explicit.span-tree.json b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-explicit.span-tree.json index a495d4aa3..66d751d51 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-explicit.span-tree.json +++ b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-explicit.span-tree.json @@ -4,6 +4,134 @@ "name": "ai-sdk-instrumentation-root", "type": "task", "children": [ + { + "name": "ai-sdk-evaluate-operation", + "children": [ + { + "name": "evaluate", + "type": "llm", + "children": [], + "input": { + "questions": { + "category": { + "criteria": { + "billing": "Payments and refunds", + "technical": "Software problems" + }, + "instructions": "Which team should handle this request?", + "type": "choice" + }, + "duplicate": { + "instructions": "Does the customer report a duplicate charge?", + "type": "boolean" + }, + "urgency": { + "criteria": [ + "Low", + "Medium", + "High" + ], + "instructions": "How urgent is this request?", + "type": "score" + } + }, + "state": { + "message": "I was charged twice for my subscription. Please refund the duplicate charge." + } + }, + "output": { + "category": { + "choice": "billing", + "probabilities": { + "billing": 1, + "technical": 0 + }, + "type": "choice" + }, + "duplicate": { + "probability": 0.99, + "type": "boolean" + }, + "urgency": { + "probabilities": { + "0": 0.03, + "1": 0.84, + "2": 0.13 + }, + "score": 1.1, + "type": "score" + } + }, + "metadata": { + "braintrust": { + "integration_name": "ai-sdk", + "sdk_language": "typescript" + }, + "model": "jev-1.13.0", + "provider": "typesafe", + "providerMetadata": { + "typesafe": { + "confidence": { + "category": 1, + "urgency": 0.76 + } + } + } + }, + "metrics": { + "completion_tokens": 62, + "prompt_tokens": 382, + "tokens": 444 + } + } + ], + "metadata": { + "operation": "evaluate", + "testRunId": "" + } + }, + { + "name": "ai-sdk-evaluate-string-operation", + "children": [ + { + "name": "evaluate", + "type": "llm", + "children": [], + "input": { + "questions": { + "positive": { + "instructions": "Was the delivery successful?", + "type": "boolean" + } + }, + "state": "The package arrived intact and on time." + }, + "output": { + "positive": { + "probability": 0.98, + "type": "boolean" + } + }, + "metadata": { + "braintrust": { + "integration_name": "ai-sdk", + "sdk_language": "typescript" + }, + "model": "jev-1.13.0", + "provider": "typesafe-ai" + }, + "metrics": { + "completion_tokens": 20, + "prompt_tokens": 279, + "tokens": 299 + } + } + ], + "metadata": { + "operation": "evaluate-string", + "testRunId": "" + } + }, { "name": "ai-sdk-generate-operation", "children": [ @@ -34,7 +162,7 @@ { "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, "text": "PARIS", @@ -42,6 +170,12 @@ } ], "finishReason": "stop", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -296,7 +430,7 @@ { "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, "text": "{\"answer\":\"4\"}", @@ -304,6 +438,12 @@ } ], "finishReason": "stop", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -568,7 +708,7 @@ { "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, "text": "One, two, three.", @@ -576,6 +716,12 @@ } ], "finishReason": "stop", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -1065,15 +1211,21 @@ }, "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, - "toolCallId": "", + "toolCallId": "", "toolName": "get_weather", "type": "tool-call" } ], "finishReason": "tool-calls", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -1216,15 +1368,21 @@ }, "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, - "toolCallId": "", + "toolCallId": "", "toolName": "get_weather", "type": "tool-call" } ], "finishReason": "tool-calls", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -1404,15 +1562,21 @@ }, "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, - "toolCallId": "", + "toolCallId": "", "toolName": "get_weather", "type": "tool-call" } ], "finishReason": "tool-calls", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -1629,15 +1793,21 @@ }, "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, - "toolCallId": "", + "toolCallId": "", "toolName": "get_weather", "type": "tool-call" } ], "finishReason": "tool-calls", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -2558,6 +2728,26 @@ } ], "finishReason": "stop", + "providerMetadata": { + "anthropic": { + "container": null, + "contextManagement": null, + "iterations": null, + "stopSequence": null, + "usage": { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 0 + }, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 4516, + "inference_geo": "not_available", + "input_tokens": 3, + "output_tokens": 7, + "service_tier": "standard" + } + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -2831,6 +3021,26 @@ } ], "finishReason": "stop", + "providerMetadata": { + "anthropic": { + "container": null, + "contextManagement": null, + "iterations": null, + "stopSequence": null, + "usage": { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 0 + }, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 4516, + "inference_geo": "not_available", + "input_tokens": 3, + "output_tokens": 7, + "service_tier": "standard" + } + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -3101,6 +3311,26 @@ } ], "finishReason": "stop", + "providerMetadata": { + "anthropic": { + "container": null, + "contextManagement": null, + "iterations": null, + "stopSequence": null, + "usage": { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 0 + }, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 4516, + "inference_geo": "not_available", + "input_tokens": 3, + "output_tokens": 7, + "service_tier": "standard" + } + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -3681,7 +3911,7 @@ { "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, "text": "HELLO", @@ -3689,6 +3919,12 @@ } ], "finishReason": "stop", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -3935,7 +4171,7 @@ { "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, "text": "STREAM HELLO", @@ -3943,6 +4179,12 @@ } ], "finishReason": "stop", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -4255,10 +4497,10 @@ }, "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, - "toolCallId": "", + "toolCallId": "", "toolName": "get_store_price", "type": "tool-call" }, @@ -4269,15 +4511,21 @@ }, "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, - "toolCallId": "", + "toolCallId": "", "toolName": "get_store_price", "type": "tool-call" } ], "finishReason": "tool-calls", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -4506,15 +4754,21 @@ }, "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, - "toolCallId": "", + "toolCallId": "", "toolName": "apply_discount", "type": "tool-call" } ], "finishReason": "tool-calls", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -4759,37 +5013,43 @@ { "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, - "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A** at $999. After applying the discount code **SAVE20**, the final total is **$799.20**.", + "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A**. After applying the discount code **SAVE20**, the final total is **$799.20**.", "type": "text" } ], "finishReason": "stop", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { "cacheReadTokens": 0, - "noCacheTokens": 308 + "noCacheTokens": 305 }, - "inputTokens": 308, + "inputTokens": 305, "outputTokenDetails": { "reasoningTokens": 0, - "textTokens": 62 + "textTokens": 59 }, - "outputTokens": 62, + "outputTokens": 59, "raw": { - "input_tokens": 308, + "input_tokens": 305, "input_tokens_details": { "cached_tokens": 0 }, - "output_tokens": 62, + "output_tokens": 59, "output_tokens_details": { "reasoning_tokens": 0 } }, - "totalTokens": 370 + "totalTokens": 364 } }, "metadata": { @@ -4801,10 +5061,10 @@ "provider": "openai.responses" }, "metrics": { - "completion_tokens": 62, + "completion_tokens": 59, "prompt_cached_tokens": 0, - "prompt_tokens": 308, - "tokens": 370 + "prompt_tokens": 305, + "tokens": 364 } } ], @@ -4976,7 +5236,7 @@ "itemId": "" } }, - "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A** at $999. After applying the discount code **SAVE20**, the final total is **$799.20**.", + "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A**. After applying the discount code **SAVE20**, the final total is **$799.20**.", "type": "text" } ], @@ -4997,7 +5257,7 @@ "itemId": "" } }, - "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A** at $999. After applying the discount code **SAVE20**, the final total is **$799.20**.", + "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A**. After applying the discount code **SAVE20**, the final total is **$799.20**.", "type": "text" } ], @@ -5310,7 +5570,7 @@ "itemId": "" } }, - "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A** at $999. After applying the discount code **SAVE20**, the final total is **$799.20**.", + "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A**. After applying the discount code **SAVE20**, the final total is **$799.20**.", "type": "text" } ], @@ -5335,7 +5595,7 @@ "itemId": "" } }, - "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A** at $999. After applying the discount code **SAVE20**, the final total is **$799.20**.", + "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A**. After applying the discount code **SAVE20**, the final total is **$799.20**.", "type": "text" } ], @@ -5351,30 +5611,30 @@ "usage": { "inputTokenDetails": { "cacheReadTokens": 0, - "noCacheTokens": 308 + "noCacheTokens": 305 }, - "inputTokens": 308, + "inputTokens": 305, "outputTokenDetails": { "reasoningTokens": 0, - "textTokens": 62 + "textTokens": 59 }, - "outputTokens": 62, + "outputTokens": 59, "raw": { - "input_tokens": 308, + "input_tokens": 305, "input_tokens_details": { "cached_tokens": 0 }, - "output_tokens": 62, + "output_tokens": 59, "output_tokens_details": { "reasoning_tokens": 0 } }, - "totalTokens": 370 + "totalTokens": 364 }, "warnings": [] } ], - "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A** at $999. After applying the discount code **SAVE20**, the final total is **$799.20**.", + "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A**. After applying the discount code **SAVE20**, the final total is **$799.20**.", "toolCalls": [ { "input": { @@ -5472,28 +5732,28 @@ "totalUsage": { "inputTokenDetails": { "cacheReadTokens": 0, - "noCacheTokens": 741 + "noCacheTokens": 738 }, - "inputTokens": 741, + "inputTokens": 738, "outputTokenDetails": { "reasoningTokens": 0, - "textTokens": 142 + "textTokens": 139 }, - "outputTokens": 142, - "totalTokens": 883 + "outputTokens": 139, + "totalTokens": 877 }, "usage": { "inputTokenDetails": { "cacheReadTokens": 0, - "noCacheTokens": 741 + "noCacheTokens": 738 }, - "inputTokens": 741, + "inputTokens": 738, "outputTokenDetails": { "reasoningTokens": 0, - "textTokens": 142 + "textTokens": 139 }, - "outputTokens": 142, - "totalTokens": 883 + "outputTokens": 139, + "totalTokens": 877 }, "warnings": [] }, @@ -7970,7 +8230,7 @@ } ], "metadata": { - "aiSdkVersion": "7.0.0", + "aiSdkVersion": "7.0.105", "scenario": "ai-sdk-instrumentation", "testRunId": "", "workflowVersion": "1.0.8" diff --git a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-explicit.span-tree.txt b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-explicit.span-tree.txt index 883a191e7..8e4716641 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-explicit.span-tree.txt +++ b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-explicit.span-tree.txt @@ -1,11 +1,123 @@ span_tree: └── ai-sdk-instrumentation-root [task] metadata: { - "aiSdkVersion": "7.0.0", + "aiSdkVersion": "7.0.105", "scenario": "ai-sdk-instrumentation", "testRunId": "", "workflowVersion": "1.0.8" } + ├── ai-sdk-evaluate-operation + │ metadata: { + │ "operation": "evaluate", + │ "testRunId": "" + │ } + │ └── evaluate [llm] + │ input: { + │ "questions": { + │ "category": { + │ "criteria": { + │ "billing": "Payments and refunds", + │ "technical": "Software problems" + │ }, + │ "instructions": "Which team should handle this request?", + │ "type": "choice" + │ }, + │ "duplicate": { + │ "instructions": "Does the customer report a duplicate charge?", + │ "type": "boolean" + │ }, + │ "urgency": { + │ "criteria": [ + │ "Low", + │ "Medium", + │ "High" + │ ], + │ "instructions": "How urgent is this request?", + │ "type": "score" + │ } + │ }, + │ "state": { + │ "message": "I was charged twice for my subscription. Please refund the duplicate charge." + │ } + │ } + │ output: { + │ "category": { + │ "choice": "billing", + │ "probabilities": { + │ "billing": 1, + │ "technical": 0 + │ }, + │ "type": "choice" + │ }, + │ "duplicate": { + │ "probability": 0.99, + │ "type": "boolean" + │ }, + │ "urgency": { + │ "probabilities": { + │ "0": 0.03, + │ "1": 0.84, + │ "2": 0.13 + │ }, + │ "score": 1.1, + │ "type": "score" + │ } + │ } + │ metadata: { + │ "braintrust": { + │ "integration_name": "ai-sdk", + │ "sdk_language": "typescript" + │ }, + │ "model": "jev-1.13.0", + │ "provider": "typesafe", + │ "providerMetadata": { + │ "typesafe": { + │ "confidence": { + │ "category": 1, + │ "urgency": 0.76 + │ } + │ } + │ } + │ } + │ metrics: { + │ "completion_tokens": 62, + │ "prompt_tokens": 382, + │ "tokens": 444 + │ } + ├── ai-sdk-evaluate-string-operation + │ metadata: { + │ "operation": "evaluate-string", + │ "testRunId": "" + │ } + │ └── evaluate [llm] + │ input: { + │ "questions": { + │ "positive": { + │ "instructions": "Was the delivery successful?", + │ "type": "boolean" + │ } + │ }, + │ "state": "The package arrived intact and on time." + │ } + │ output: { + │ "positive": { + │ "probability": 0.98, + │ "type": "boolean" + │ } + │ } + │ metadata: { + │ "braintrust": { + │ "integration_name": "ai-sdk", + │ "sdk_language": "typescript" + │ }, + │ "model": "jev-1.13.0", + │ "provider": "typesafe-ai" + │ } + │ metrics: { + │ "completion_tokens": 20, + │ "prompt_tokens": 279, + │ "tokens": 299 + │ } ├── ai-sdk-generate-operation │ metadata: { │ "operation": "generate", @@ -200,7 +312,7 @@ span_tree: │ { │ "providerMetadata": { │ "openai": { - │ "itemId": "" + │ "itemId": "" │ } │ }, │ "text": "PARIS", @@ -208,6 +320,12 @@ span_tree: │ } │ ], │ "finishReason": "stop", + │ "providerMetadata": { + │ "openai": { + │ "responseId": "", + │ "serviceTier": "default" + │ } + │ }, │ "response": {}, │ "usage": { │ "inputTokenDetails": { @@ -464,7 +582,7 @@ span_tree: │ { │ "providerMetadata": { │ "openai": { - │ "itemId": "" + │ "itemId": "" │ } │ }, │ "text": "{\"answer\":\"4\"}", @@ -472,6 +590,12 @@ span_tree: │ } │ ], │ "finishReason": "stop", + │ "providerMetadata": { + │ "openai": { + │ "responseId": "", + │ "serviceTier": "default" + │ } + │ }, │ "response": {}, │ "usage": { │ "inputTokenDetails": { @@ -708,7 +832,7 @@ span_tree: │ { │ "providerMetadata": { │ "openai": { - │ "itemId": "" + │ "itemId": "" │ } │ }, │ "text": "One, two, three.", @@ -716,6 +840,12 @@ span_tree: │ } │ ], │ "finishReason": "stop", + │ "providerMetadata": { + │ "openai": { + │ "responseId": "", + │ "serviceTier": "default" + │ } + │ }, │ "response": {}, │ "usage": { │ "inputTokenDetails": { @@ -1795,15 +1925,21 @@ span_tree: │ │ }, │ │ "providerMetadata": { │ │ "openai": { - │ │ "itemId": "" + │ │ "itemId": "" │ │ } │ │ }, - │ │ "toolCallId": "", + │ │ "toolCallId": "", │ │ "toolName": "get_weather", │ │ "type": "tool-call" │ │ } │ │ ], │ │ "finishReason": "tool-calls", + │ │ "providerMetadata": { + │ │ "openai": { + │ │ "responseId": "", + │ │ "serviceTier": "default" + │ │ } + │ │ }, │ │ "response": {}, │ │ "usage": { │ │ "inputTokenDetails": { @@ -1938,15 +2074,21 @@ span_tree: │ │ }, │ │ "providerMetadata": { │ │ "openai": { - │ │ "itemId": "" + │ │ "itemId": "" │ │ } │ │ }, - │ │ "toolCallId": "", + │ │ "toolCallId": "", │ │ "toolName": "get_weather", │ │ "type": "tool-call" │ │ } │ │ ], │ │ "finishReason": "tool-calls", + │ │ "providerMetadata": { + │ │ "openai": { + │ │ "responseId": "", + │ │ "serviceTier": "default" + │ │ } + │ │ }, │ │ "response": {}, │ │ "usage": { │ │ "inputTokenDetails": { @@ -2118,15 +2260,21 @@ span_tree: │ │ }, │ │ "providerMetadata": { │ │ "openai": { - │ │ "itemId": "" + │ │ "itemId": "" │ │ } │ │ }, - │ │ "toolCallId": "", + │ │ "toolCallId": "", │ │ "toolName": "get_weather", │ │ "type": "tool-call" │ │ } │ │ ], │ │ "finishReason": "tool-calls", + │ │ "providerMetadata": { + │ │ "openai": { + │ │ "responseId": "", + │ │ "serviceTier": "default" + │ │ } + │ │ }, │ │ "response": {}, │ │ "usage": { │ │ "inputTokenDetails": { @@ -2335,15 +2483,21 @@ span_tree: │ │ }, │ │ "providerMetadata": { │ │ "openai": { - │ │ "itemId": "" + │ │ "itemId": "" │ │ } │ │ }, - │ │ "toolCallId": "", + │ │ "toolCallId": "", │ │ "toolName": "get_weather", │ │ "type": "tool-call" │ │ } │ │ ], │ │ "finishReason": "tool-calls", + │ │ "providerMetadata": { + │ │ "openai": { + │ │ "responseId": "", + │ │ "serviceTier": "default" + │ │ } + │ │ }, │ │ "response": {}, │ │ "usage": { │ │ "inputTokenDetails": { @@ -2617,6 +2771,26 @@ span_tree: │ } │ ], │ "finishReason": "stop", + │ "providerMetadata": { + │ "anthropic": { + │ "container": null, + │ "contextManagement": null, + │ "iterations": null, + │ "stopSequence": null, + │ "usage": { + │ "cache_creation": { + │ "ephemeral_1h_input_tokens": 0, + │ "ephemeral_5m_input_tokens": 0 + │ }, + │ "cache_creation_input_tokens": 0, + │ "cache_read_input_tokens": 4516, + │ "inference_geo": "not_available", + │ "input_tokens": 3, + │ "output_tokens": 7, + │ "service_tier": "standard" + │ } + │ } + │ }, │ "response": {}, │ "usage": { │ "inputTokenDetails": { @@ -2883,6 +3057,26 @@ span_tree: │ │ } │ │ ], │ │ "finishReason": "stop", + │ │ "providerMetadata": { + │ │ "anthropic": { + │ │ "container": null, + │ │ "contextManagement": null, + │ │ "iterations": null, + │ │ "stopSequence": null, + │ │ "usage": { + │ │ "cache_creation": { + │ │ "ephemeral_1h_input_tokens": 0, + │ │ "ephemeral_5m_input_tokens": 0 + │ │ }, + │ │ "cache_creation_input_tokens": 0, + │ │ "cache_read_input_tokens": 4516, + │ │ "inference_geo": "not_available", + │ │ "input_tokens": 3, + │ │ "output_tokens": 7, + │ │ "service_tier": "standard" + │ │ } + │ │ } + │ │ }, │ │ "response": {}, │ │ "usage": { │ │ "inputTokenDetails": { @@ -3144,6 +3338,26 @@ span_tree: │ } │ ], │ "finishReason": "stop", + │ "providerMetadata": { + │ "anthropic": { + │ "container": null, + │ "contextManagement": null, + │ "iterations": null, + │ "stopSequence": null, + │ "usage": { + │ "cache_creation": { + │ "ephemeral_1h_input_tokens": 0, + │ "ephemeral_5m_input_tokens": 0 + │ }, + │ "cache_creation_input_tokens": 0, + │ "cache_read_input_tokens": 4516, + │ "inference_geo": "not_available", + │ "input_tokens": 3, + │ "output_tokens": 7, + │ "service_tier": "standard" + │ } + │ } + │ }, │ "response": {}, │ "usage": { │ "inputTokenDetails": { @@ -3668,7 +3882,7 @@ span_tree: │ { │ "providerMetadata": { │ "openai": { - │ "itemId": "" + │ "itemId": "" │ } │ }, │ "text": "HELLO", @@ -3676,6 +3890,12 @@ span_tree: │ } │ ], │ "finishReason": "stop", + │ "providerMetadata": { + │ "openai": { + │ "responseId": "", + │ "serviceTier": "default" + │ } + │ }, │ "response": {}, │ "usage": { │ "inputTokenDetails": { @@ -3912,7 +4132,7 @@ span_tree: │ { │ "providerMetadata": { │ "openai": { - │ "itemId": "" + │ "itemId": "" │ } │ }, │ "text": "STREAM HELLO", @@ -3920,6 +4140,12 @@ span_tree: │ } │ ], │ "finishReason": "stop", + │ "providerMetadata": { + │ "openai": { + │ "responseId": "", + │ "serviceTier": "default" + │ } + │ }, │ "response": {}, │ "usage": { │ "inputTokenDetails": { @@ -4133,7 +4359,7 @@ span_tree: │ "itemId": "" │ } │ }, - │ "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A** at $999. After applying the discount code **SAVE20**, the final total is **$799.20**.", + │ "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A**. After applying the discount code **SAVE20**, the final total is **$799.20**.", │ "type": "text" │ } │ ], @@ -4154,7 +4380,7 @@ span_tree: │ "itemId": "" │ } │ }, - │ "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A** at $999. After applying the discount code **SAVE20**, the final total is **$799.20**.", + │ "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A**. After applying the discount code **SAVE20**, the final total is **$799.20**.", │ "type": "text" │ } │ ], @@ -4467,7 +4693,7 @@ span_tree: │ "itemId": "" │ } │ }, - │ "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A** at $999. After applying the discount code **SAVE20**, the final total is **$799.20**.", + │ "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A**. After applying the discount code **SAVE20**, the final total is **$799.20**.", │ "type": "text" │ } │ ], @@ -4492,7 +4718,7 @@ span_tree: │ "itemId": "" │ } │ }, - │ "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A** at $999. After applying the discount code **SAVE20**, the final total is **$799.20**.", + │ "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A**. After applying the discount code **SAVE20**, the final total is **$799.20**.", │ "type": "text" │ } │ ], @@ -4508,30 +4734,30 @@ span_tree: │ "usage": { │ "inputTokenDetails": { │ "cacheReadTokens": 0, - │ "noCacheTokens": 308 + │ "noCacheTokens": 305 │ }, - │ "inputTokens": 308, + │ "inputTokens": 305, │ "outputTokenDetails": { │ "reasoningTokens": 0, - │ "textTokens": 62 + │ "textTokens": 59 │ }, - │ "outputTokens": 62, + │ "outputTokens": 59, │ "raw": { - │ "input_tokens": 308, + │ "input_tokens": 305, │ "input_tokens_details": { │ "cached_tokens": 0 │ }, - │ "output_tokens": 62, + │ "output_tokens": 59, │ "output_tokens_details": { │ "reasoning_tokens": 0 │ } │ }, - │ "totalTokens": 370 + │ "totalTokens": 364 │ }, │ "warnings": [] │ } │ ], - │ "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A** at $999. After applying the discount code **SAVE20**, the final total is **$799.20**.", + │ "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A**. After applying the discount code **SAVE20**, the final total is **$799.20**.", │ "toolCalls": [ │ { │ "input": { @@ -4629,28 +4855,28 @@ span_tree: │ "totalUsage": { │ "inputTokenDetails": { │ "cacheReadTokens": 0, - │ "noCacheTokens": 741 + │ "noCacheTokens": 738 │ }, - │ "inputTokens": 741, + │ "inputTokens": 738, │ "outputTokenDetails": { │ "reasoningTokens": 0, - │ "textTokens": 142 + │ "textTokens": 139 │ }, - │ "outputTokens": 142, - │ "totalTokens": 883 + │ "outputTokens": 139, + │ "totalTokens": 877 │ }, │ "usage": { │ "inputTokenDetails": { │ "cacheReadTokens": 0, - │ "noCacheTokens": 741 + │ "noCacheTokens": 738 │ }, - │ "inputTokens": 741, + │ "inputTokens": 738, │ "outputTokenDetails": { │ "reasoningTokens": 0, - │ "textTokens": 142 + │ "textTokens": 139 │ }, - │ "outputTokens": 142, - │ "totalTokens": 883 + │ "outputTokens": 139, + │ "totalTokens": 877 │ }, │ "warnings": [] │ } @@ -4745,10 +4971,10 @@ span_tree: │ │ }, │ │ "providerMetadata": { │ │ "openai": { - │ │ "itemId": "" + │ │ "itemId": "" │ │ } │ │ }, - │ │ "toolCallId": "", + │ │ "toolCallId": "", │ │ "toolName": "get_store_price", │ │ "type": "tool-call" │ │ }, @@ -4759,15 +4985,21 @@ span_tree: │ │ }, │ │ "providerMetadata": { │ │ "openai": { - │ │ "itemId": "" + │ │ "itemId": "" │ │ } │ │ }, - │ │ "toolCallId": "", + │ │ "toolCallId": "", │ │ "toolName": "get_store_price", │ │ "type": "tool-call" │ │ } │ │ ], │ │ "finishReason": "tool-calls", + │ │ "providerMetadata": { + │ │ "openai": { + │ │ "responseId": "", + │ │ "serviceTier": "default" + │ │ } + │ │ }, │ │ "response": {}, │ │ "usage": { │ │ "inputTokenDetails": { @@ -4984,15 +5216,21 @@ span_tree: │ │ }, │ │ "providerMetadata": { │ │ "openai": { - │ │ "itemId": "" + │ │ "itemId": "" │ │ } │ │ }, - │ │ "toolCallId": "", + │ │ "toolCallId": "", │ │ "toolName": "apply_discount", │ │ "type": "tool-call" │ │ } │ │ ], │ │ "finishReason": "tool-calls", + │ │ "providerMetadata": { + │ │ "openai": { + │ │ "responseId": "", + │ │ "serviceTier": "default" + │ │ } + │ │ }, │ │ "response": {}, │ │ "usage": { │ │ "inputTokenDetails": { @@ -5229,37 +5467,43 @@ span_tree: │ { │ "providerMetadata": { │ "openai": { - │ "itemId": "" + │ "itemId": "" │ } │ }, - │ "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A** at $999. After applying the discount code **SAVE20**, the final total is **$799.20**.", + │ "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A**. After applying the discount code **SAVE20**, the final total is **$799.20**.", │ "type": "text" │ } │ ], │ "finishReason": "stop", + │ "providerMetadata": { + │ "openai": { + │ "responseId": "", + │ "serviceTier": "default" + │ } + │ }, │ "response": {}, │ "usage": { │ "inputTokenDetails": { │ "cacheReadTokens": 0, - │ "noCacheTokens": 308 + │ "noCacheTokens": 305 │ }, - │ "inputTokens": 308, + │ "inputTokens": 305, │ "outputTokenDetails": { │ "reasoningTokens": 0, - │ "textTokens": 62 + │ "textTokens": 59 │ }, - │ "outputTokens": 62, + │ "outputTokens": 59, │ "raw": { - │ "input_tokens": 308, + │ "input_tokens": 305, │ "input_tokens_details": { │ "cached_tokens": 0 │ }, - │ "output_tokens": 62, + │ "output_tokens": 59, │ "output_tokens_details": { │ "reasoning_tokens": 0 │ } │ }, - │ "totalTokens": 370 + │ "totalTokens": 364 │ } │ } │ metadata: { @@ -5271,10 +5515,10 @@ span_tree: │ "provider": "openai.responses" │ } │ metrics: { - │ "completion_tokens": 62, + │ "completion_tokens": 59, │ "prompt_cached_tokens": 0, - │ "prompt_tokens": 308, - │ "tokens": 370 + │ "prompt_tokens": 305, + │ "tokens": 364 │ } ├── ai-sdk-workflow-agent-stream-operation │ metadata: { diff --git a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-auto-hook.span-tree.json b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-auto-hook.span-tree.json index cd82f5b3d..12a6c4039 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-auto-hook.span-tree.json +++ b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-auto-hook.span-tree.json @@ -4,6 +4,134 @@ "name": "ai-sdk-instrumentation-root", "type": "task", "children": [ + { + "name": "ai-sdk-evaluate-operation", + "children": [ + { + "name": "evaluate", + "type": "llm", + "children": [], + "input": { + "questions": { + "category": { + "criteria": { + "billing": "Payments and refunds", + "technical": "Software problems" + }, + "instructions": "Which team should handle this request?", + "type": "choice" + }, + "duplicate": { + "instructions": "Does the customer report a duplicate charge?", + "type": "boolean" + }, + "urgency": { + "criteria": [ + "Low", + "Medium", + "High" + ], + "instructions": "How urgent is this request?", + "type": "score" + } + }, + "state": { + "message": "I was charged twice for my subscription. Please refund the duplicate charge." + } + }, + "output": { + "category": { + "choice": "billing", + "probabilities": { + "billing": 1, + "technical": 0 + }, + "type": "choice" + }, + "duplicate": { + "probability": 0.99, + "type": "boolean" + }, + "urgency": { + "probabilities": { + "0": 0.03, + "1": 0.82, + "2": 0.15 + }, + "score": 1.12, + "type": "score" + } + }, + "metadata": { + "braintrust": { + "integration_name": "ai-sdk", + "sdk_language": "typescript" + }, + "model": "jev-1.13.0", + "provider": "typesafe", + "providerMetadata": { + "typesafe": { + "confidence": { + "category": 1, + "urgency": 0.74 + } + } + } + }, + "metrics": { + "completion_tokens": 62, + "prompt_tokens": 382, + "tokens": 444 + } + } + ], + "metadata": { + "operation": "evaluate", + "testRunId": "" + } + }, + { + "name": "ai-sdk-evaluate-string-operation", + "children": [ + { + "name": "evaluate", + "type": "llm", + "children": [], + "input": { + "questions": { + "positive": { + "instructions": "Was the delivery successful?", + "type": "boolean" + } + }, + "state": "The package arrived intact and on time." + }, + "output": { + "positive": { + "probability": 0.97, + "type": "boolean" + } + }, + "metadata": { + "braintrust": { + "integration_name": "ai-sdk", + "sdk_language": "typescript" + }, + "model": "jev-1.13.0", + "provider": "typesafe-ai" + }, + "metrics": { + "completion_tokens": 20, + "prompt_tokens": 279, + "tokens": 299 + } + } + ], + "metadata": { + "operation": "evaluate-string", + "testRunId": "" + } + }, { "name": "ai-sdk-generate-operation", "children": [ @@ -34,7 +162,7 @@ { "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, "text": "PARIS", @@ -42,6 +170,12 @@ } ], "finishReason": "stop", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -303,7 +437,7 @@ { "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, "text": "{\"answer\":\"4\"}", @@ -311,6 +445,12 @@ } ], "finishReason": "stop", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -582,7 +722,7 @@ { "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, "text": "One, two, three.", @@ -590,6 +730,12 @@ } ], "finishReason": "stop", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -976,7 +1122,7 @@ "output": [ { "index": 1, - "relevance_score": 0.06657539 + "relevance_score": 0.06664825 }, { "index": 0, @@ -1009,7 +1155,7 @@ "output": [ { "index": 1, - "relevance_score": 0.06657539 + "relevance_score": 0.06664825 }, { "index": 0, @@ -1086,15 +1232,21 @@ }, "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, - "toolCallId": "", + "toolCallId": "", "toolName": "get_weather", "type": "tool-call" } ], "finishReason": "tool-calls", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -1240,15 +1392,21 @@ }, "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, - "toolCallId": "", + "toolCallId": "", "toolName": "get_weather", "type": "tool-call" } ], "finishReason": "tool-calls", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -1431,15 +1589,21 @@ }, "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, - "toolCallId": "", + "toolCallId": "", "toolName": "get_weather", "type": "tool-call" } ], "finishReason": "tool-calls", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -1659,15 +1823,21 @@ }, "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, - "toolCallId": "", + "toolCallId": "", "toolName": "get_weather", "type": "tool-call" } ], "finishReason": "tool-calls", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -2601,6 +2771,26 @@ } ], "finishReason": "stop", + "providerMetadata": { + "anthropic": { + "container": null, + "contextManagement": null, + "iterations": null, + "stopSequence": null, + "usage": { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 0 + }, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 4516, + "inference_geo": "not_available", + "input_tokens": 3, + "output_tokens": 7, + "service_tier": "standard" + } + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -2874,6 +3064,26 @@ } ], "finishReason": "stop", + "providerMetadata": { + "anthropic": { + "container": null, + "contextManagement": null, + "iterations": null, + "stopSequence": null, + "usage": { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 0 + }, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 4516, + "inference_geo": "not_available", + "input_tokens": 3, + "output_tokens": 7, + "service_tier": "standard" + } + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -3144,6 +3354,26 @@ } ], "finishReason": "stop", + "providerMetadata": { + "anthropic": { + "container": null, + "contextManagement": null, + "iterations": null, + "stopSequence": null, + "usage": { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 0 + }, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 4516, + "inference_geo": "not_available", + "input_tokens": 3, + "output_tokens": 7, + "service_tier": "standard" + } + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -3734,7 +3964,7 @@ { "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, "text": "HELLO", @@ -3742,6 +3972,12 @@ } ], "finishReason": "stop", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -3995,7 +4231,7 @@ { "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, "text": "STREAM HELLO", @@ -4003,6 +4239,12 @@ } ], "finishReason": "stop", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -4322,10 +4564,10 @@ }, "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, - "toolCallId": "", + "toolCallId": "", "toolName": "get_store_price", "type": "tool-call" }, @@ -4336,15 +4578,21 @@ }, "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, - "toolCallId": "", + "toolCallId": "", "toolName": "get_store_price", "type": "tool-call" } ], "finishReason": "tool-calls", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -4576,15 +4824,21 @@ }, "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, - "toolCallId": "", + "toolCallId": "", "toolName": "apply_discount", "type": "tool-call" } ], "finishReason": "tool-calls", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -4832,7 +5086,7 @@ { "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A** at $999. After applying the discount code **SAVE20**, the final total is **$799.20**.", @@ -4840,21 +5094,27 @@ } ], "finishReason": "stop", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { "cacheReadTokens": 0, "cacheWriteTokens": 0, - "noCacheTokens": 308 + "noCacheTokens": 305 }, - "inputTokens": 308, + "inputTokens": 305, "outputTokenDetails": { "reasoningTokens": 0, "textTokens": 62 }, "outputTokens": 62, "raw": { - "input_tokens": 308, + "input_tokens": 305, "input_tokens_details": { "cache_write_tokens": 0, "cached_tokens": 0 @@ -4864,7 +5124,7 @@ "reasoning_tokens": 0 } }, - "totalTokens": 370 + "totalTokens": 367 } }, "metadata": { @@ -4879,8 +5139,8 @@ "completion_tokens": 62, "prompt_cache_creation_tokens": 0, "prompt_cached_tokens": 0, - "prompt_tokens": 308, - "tokens": 370 + "prompt_tokens": 305, + "tokens": 367 } } ], @@ -5432,16 +5692,16 @@ "inputTokenDetails": { "cacheReadTokens": 0, "cacheWriteTokens": 0, - "noCacheTokens": 308 + "noCacheTokens": 305 }, - "inputTokens": 308, + "inputTokens": 305, "outputTokenDetails": { "reasoningTokens": 0, "textTokens": 62 }, "outputTokens": 62, "raw": { - "input_tokens": 308, + "input_tokens": 305, "input_tokens_details": { "cache_write_tokens": 0, "cached_tokens": 0 @@ -5451,7 +5711,7 @@ "reasoning_tokens": 0 } }, - "totalTokens": 370 + "totalTokens": 367 }, "warnings": [] } @@ -5555,29 +5815,29 @@ "inputTokenDetails": { "cacheReadTokens": 0, "cacheWriteTokens": 0, - "noCacheTokens": 741 + "noCacheTokens": 738 }, - "inputTokens": 741, + "inputTokens": 738, "outputTokenDetails": { "reasoningTokens": 0, "textTokens": 142 }, "outputTokens": 142, - "totalTokens": 883 + "totalTokens": 880 }, "usage": { "inputTokenDetails": { "cacheReadTokens": 0, "cacheWriteTokens": 0, - "noCacheTokens": 741 + "noCacheTokens": 738 }, - "inputTokens": 741, + "inputTokens": 738, "outputTokenDetails": { "reasoningTokens": 0, "textTokens": 142 }, "outputTokens": 142, - "totalTokens": 883 + "totalTokens": 880 }, "warnings": [] }, @@ -5598,7 +5858,7 @@ } ], "metadata": { - "aiSdkVersion": "7.0.0", + "aiSdkVersion": "7.0.105", "scenario": "ai-sdk-instrumentation", "testRunId": "" } diff --git a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-auto-hook.span-tree.txt b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-auto-hook.span-tree.txt index e23d0fed6..03cb1cfbe 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-auto-hook.span-tree.txt +++ b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-auto-hook.span-tree.txt @@ -1,10 +1,122 @@ span_tree: └── ai-sdk-instrumentation-root [task] metadata: { - "aiSdkVersion": "7.0.0", + "aiSdkVersion": "7.0.105", "scenario": "ai-sdk-instrumentation", "testRunId": "" } + ├── ai-sdk-evaluate-operation + │ metadata: { + │ "operation": "evaluate", + │ "testRunId": "" + │ } + │ └── evaluate [llm] + │ input: { + │ "questions": { + │ "category": { + │ "criteria": { + │ "billing": "Payments and refunds", + │ "technical": "Software problems" + │ }, + │ "instructions": "Which team should handle this request?", + │ "type": "choice" + │ }, + │ "duplicate": { + │ "instructions": "Does the customer report a duplicate charge?", + │ "type": "boolean" + │ }, + │ "urgency": { + │ "criteria": [ + │ "Low", + │ "Medium", + │ "High" + │ ], + │ "instructions": "How urgent is this request?", + │ "type": "score" + │ } + │ }, + │ "state": { + │ "message": "I was charged twice for my subscription. Please refund the duplicate charge." + │ } + │ } + │ output: { + │ "category": { + │ "choice": "billing", + │ "probabilities": { + │ "billing": 1, + │ "technical": 0 + │ }, + │ "type": "choice" + │ }, + │ "duplicate": { + │ "probability": 0.99, + │ "type": "boolean" + │ }, + │ "urgency": { + │ "probabilities": { + │ "0": 0.03, + │ "1": 0.82, + │ "2": 0.15 + │ }, + │ "score": 1.12, + │ "type": "score" + │ } + │ } + │ metadata: { + │ "braintrust": { + │ "integration_name": "ai-sdk", + │ "sdk_language": "typescript" + │ }, + │ "model": "jev-1.13.0", + │ "provider": "typesafe", + │ "providerMetadata": { + │ "typesafe": { + │ "confidence": { + │ "category": 1, + │ "urgency": 0.74 + │ } + │ } + │ } + │ } + │ metrics: { + │ "completion_tokens": 62, + │ "prompt_tokens": 382, + │ "tokens": 444 + │ } + ├── ai-sdk-evaluate-string-operation + │ metadata: { + │ "operation": "evaluate-string", + │ "testRunId": "" + │ } + │ └── evaluate [llm] + │ input: { + │ "questions": { + │ "positive": { + │ "instructions": "Was the delivery successful?", + │ "type": "boolean" + │ } + │ }, + │ "state": "The package arrived intact and on time." + │ } + │ output: { + │ "positive": { + │ "probability": 0.97, + │ "type": "boolean" + │ } + │ } + │ metadata: { + │ "braintrust": { + │ "integration_name": "ai-sdk", + │ "sdk_language": "typescript" + │ }, + │ "model": "jev-1.13.0", + │ "provider": "typesafe-ai" + │ } + │ metrics: { + │ "completion_tokens": 20, + │ "prompt_tokens": 279, + │ "tokens": 299 + │ } ├── ai-sdk-generate-operation │ metadata: { │ "operation": "generate", @@ -203,7 +315,7 @@ span_tree: │ { │ "providerMetadata": { │ "openai": { - │ "itemId": "" + │ "itemId": "" │ } │ }, │ "text": "PARIS", @@ -211,6 +323,12 @@ span_tree: │ } │ ], │ "finishReason": "stop", + │ "providerMetadata": { + │ "openai": { + │ "responseId": "", + │ "serviceTier": "default" + │ } + │ }, │ "response": {}, │ "usage": { │ "inputTokenDetails": { @@ -474,7 +592,7 @@ span_tree: │ { │ "providerMetadata": { │ "openai": { - │ "itemId": "" + │ "itemId": "" │ } │ }, │ "text": "{\"answer\":\"4\"}", @@ -482,6 +600,12 @@ span_tree: │ } │ ], │ "finishReason": "stop", + │ "providerMetadata": { + │ "openai": { + │ "responseId": "", + │ "serviceTier": "default" + │ } + │ }, │ "response": {}, │ "usage": { │ "inputTokenDetails": { @@ -725,7 +849,7 @@ span_tree: │ { │ "providerMetadata": { │ "openai": { - │ "itemId": "" + │ "itemId": "" │ } │ }, │ "text": "One, two, three.", @@ -733,6 +857,12 @@ span_tree: │ } │ ], │ "finishReason": "stop", + │ "providerMetadata": { + │ "openai": { + │ "responseId": "", + │ "serviceTier": "default" + │ } + │ }, │ "response": {}, │ "usage": { │ "inputTokenDetails": { @@ -908,7 +1038,7 @@ span_tree: │ output: [ │ { │ "index": 1, - │ "relevance_score": 0.06657539 + │ "relevance_score": 0.06664825 │ }, │ { │ "index": 0, @@ -936,7 +1066,7 @@ span_tree: │ output: [ │ { │ "index": 1, - │ "relevance_score": 0.06657539 + │ "relevance_score": 0.06664825 │ }, │ { │ "index": 0, @@ -1825,15 +1955,21 @@ span_tree: │ │ }, │ │ "providerMetadata": { │ │ "openai": { - │ │ "itemId": "" + │ │ "itemId": "" │ │ } │ │ }, - │ │ "toolCallId": "", + │ │ "toolCallId": "", │ │ "toolName": "get_weather", │ │ "type": "tool-call" │ │ } │ │ ], │ │ "finishReason": "tool-calls", + │ │ "providerMetadata": { + │ │ "openai": { + │ │ "responseId": "", + │ │ "serviceTier": "default" + │ │ } + │ │ }, │ │ "response": {}, │ │ "usage": { │ │ "inputTokenDetails": { @@ -1971,15 +2107,21 @@ span_tree: │ │ }, │ │ "providerMetadata": { │ │ "openai": { - │ │ "itemId": "" + │ │ "itemId": "" │ │ } │ │ }, - │ │ "toolCallId": "", + │ │ "toolCallId": "", │ │ "toolName": "get_weather", │ │ "type": "tool-call" │ │ } │ │ ], │ │ "finishReason": "tool-calls", + │ │ "providerMetadata": { + │ │ "openai": { + │ │ "responseId": "", + │ │ "serviceTier": "default" + │ │ } + │ │ }, │ │ "response": {}, │ │ "usage": { │ │ "inputTokenDetails": { @@ -2154,15 +2296,21 @@ span_tree: │ │ }, │ │ "providerMetadata": { │ │ "openai": { - │ │ "itemId": "" + │ │ "itemId": "" │ │ } │ │ }, - │ │ "toolCallId": "", + │ │ "toolCallId": "", │ │ "toolName": "get_weather", │ │ "type": "tool-call" │ │ } │ │ ], │ │ "finishReason": "tool-calls", + │ │ "providerMetadata": { + │ │ "openai": { + │ │ "responseId": "", + │ │ "serviceTier": "default" + │ │ } + │ │ }, │ │ "response": {}, │ │ "usage": { │ │ "inputTokenDetails": { @@ -2374,15 +2522,21 @@ span_tree: │ │ }, │ │ "providerMetadata": { │ │ "openai": { - │ │ "itemId": "" + │ │ "itemId": "" │ │ } │ │ }, - │ │ "toolCallId": "", + │ │ "toolCallId": "", │ │ "toolName": "get_weather", │ │ "type": "tool-call" │ │ } │ │ ], │ │ "finishReason": "tool-calls", + │ │ "providerMetadata": { + │ │ "openai": { + │ │ "responseId": "", + │ │ "serviceTier": "default" + │ │ } + │ │ }, │ │ "response": {}, │ │ "usage": { │ │ "inputTokenDetails": { @@ -2659,6 +2813,26 @@ span_tree: │ } │ ], │ "finishReason": "stop", + │ "providerMetadata": { + │ "anthropic": { + │ "container": null, + │ "contextManagement": null, + │ "iterations": null, + │ "stopSequence": null, + │ "usage": { + │ "cache_creation": { + │ "ephemeral_1h_input_tokens": 0, + │ "ephemeral_5m_input_tokens": 0 + │ }, + │ "cache_creation_input_tokens": 0, + │ "cache_read_input_tokens": 4516, + │ "inference_geo": "not_available", + │ "input_tokens": 3, + │ "output_tokens": 7, + │ "service_tier": "standard" + │ } + │ } + │ }, │ "response": {}, │ "usage": { │ "inputTokenDetails": { @@ -2925,6 +3099,26 @@ span_tree: │ │ } │ │ ], │ │ "finishReason": "stop", + │ │ "providerMetadata": { + │ │ "anthropic": { + │ │ "container": null, + │ │ "contextManagement": null, + │ │ "iterations": null, + │ │ "stopSequence": null, + │ │ "usage": { + │ │ "cache_creation": { + │ │ "ephemeral_1h_input_tokens": 0, + │ │ "ephemeral_5m_input_tokens": 0 + │ │ }, + │ │ "cache_creation_input_tokens": 0, + │ │ "cache_read_input_tokens": 4516, + │ │ "inference_geo": "not_available", + │ │ "input_tokens": 3, + │ │ "output_tokens": 7, + │ │ "service_tier": "standard" + │ │ } + │ │ } + │ │ }, │ │ "response": {}, │ │ "usage": { │ │ "inputTokenDetails": { @@ -3186,6 +3380,26 @@ span_tree: │ } │ ], │ "finishReason": "stop", + │ "providerMetadata": { + │ "anthropic": { + │ "container": null, + │ "contextManagement": null, + │ "iterations": null, + │ "stopSequence": null, + │ "usage": { + │ "cache_creation": { + │ "ephemeral_1h_input_tokens": 0, + │ "ephemeral_5m_input_tokens": 0 + │ }, + │ "cache_creation_input_tokens": 0, + │ "cache_read_input_tokens": 4516, + │ "inference_geo": "not_available", + │ "input_tokens": 3, + │ "output_tokens": 7, + │ "service_tier": "standard" + │ } + │ } + │ }, │ "response": {}, │ "usage": { │ "inputTokenDetails": { @@ -3724,7 +3938,7 @@ span_tree: │ { │ "providerMetadata": { │ "openai": { - │ "itemId": "" + │ "itemId": "" │ } │ }, │ "text": "HELLO", @@ -3732,6 +3946,12 @@ span_tree: │ } │ ], │ "finishReason": "stop", + │ "providerMetadata": { + │ "openai": { + │ "responseId": "", + │ "serviceTier": "default" + │ } + │ }, │ "response": {}, │ "usage": { │ "inputTokenDetails": { @@ -3975,7 +4195,7 @@ span_tree: │ { │ "providerMetadata": { │ "openai": { - │ "itemId": "" + │ "itemId": "" │ } │ }, │ "text": "STREAM HELLO", @@ -3983,6 +4203,12 @@ span_tree: │ } │ ], │ "finishReason": "stop", + │ "providerMetadata": { + │ "openai": { + │ "responseId": "", + │ "serviceTier": "default" + │ } + │ }, │ "response": {}, │ "usage": { │ "inputTokenDetails": { @@ -4579,16 +4805,16 @@ span_tree: "inputTokenDetails": { "cacheReadTokens": 0, "cacheWriteTokens": 0, - "noCacheTokens": 308 + "noCacheTokens": 305 }, - "inputTokens": 308, + "inputTokens": 305, "outputTokenDetails": { "reasoningTokens": 0, "textTokens": 62 }, "outputTokens": 62, "raw": { - "input_tokens": 308, + "input_tokens": 305, "input_tokens_details": { "cache_write_tokens": 0, "cached_tokens": 0 @@ -4598,7 +4824,7 @@ span_tree: "reasoning_tokens": 0 } }, - "totalTokens": 370 + "totalTokens": 367 }, "warnings": [] } @@ -4702,29 +4928,29 @@ span_tree: "inputTokenDetails": { "cacheReadTokens": 0, "cacheWriteTokens": 0, - "noCacheTokens": 741 + "noCacheTokens": 738 }, - "inputTokens": 741, + "inputTokens": 738, "outputTokenDetails": { "reasoningTokens": 0, "textTokens": 142 }, "outputTokens": 142, - "totalTokens": 883 + "totalTokens": 880 }, "usage": { "inputTokenDetails": { "cacheReadTokens": 0, "cacheWriteTokens": 0, - "noCacheTokens": 741 + "noCacheTokens": 738 }, - "inputTokens": 741, + "inputTokens": 738, "outputTokenDetails": { "reasoningTokens": 0, "textTokens": 142 }, "outputTokens": 142, - "totalTokens": 883 + "totalTokens": 880 }, "warnings": [] } @@ -4819,10 +5045,10 @@ span_tree: │ }, │ "providerMetadata": { │ "openai": { - │ "itemId": "" + │ "itemId": "" │ } │ }, - │ "toolCallId": "", + │ "toolCallId": "", │ "toolName": "get_store_price", │ "type": "tool-call" │ }, @@ -4833,15 +5059,21 @@ span_tree: │ }, │ "providerMetadata": { │ "openai": { - │ "itemId": "" + │ "itemId": "" │ } │ }, - │ "toolCallId": "", + │ "toolCallId": "", │ "toolName": "get_store_price", │ "type": "tool-call" │ } │ ], │ "finishReason": "tool-calls", + │ "providerMetadata": { + │ "openai": { + │ "responseId": "", + │ "serviceTier": "default" + │ } + │ }, │ "response": {}, │ "usage": { │ "inputTokenDetails": { @@ -5061,15 +5293,21 @@ span_tree: │ }, │ "providerMetadata": { │ "openai": { - │ "itemId": "" + │ "itemId": "" │ } │ }, - │ "toolCallId": "", + │ "toolCallId": "", │ "toolName": "apply_discount", │ "type": "tool-call" │ } │ ], │ "finishReason": "tool-calls", + │ "providerMetadata": { + │ "openai": { + │ "responseId": "", + │ "serviceTier": "default" + │ } + │ }, │ "response": {}, │ "usage": { │ "inputTokenDetails": { @@ -5309,7 +5547,7 @@ span_tree: { "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A** at $999. After applying the discount code **SAVE20**, the final total is **$799.20**.", @@ -5317,21 +5555,27 @@ span_tree: } ], "finishReason": "stop", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { "cacheReadTokens": 0, "cacheWriteTokens": 0, - "noCacheTokens": 308 + "noCacheTokens": 305 }, - "inputTokens": 308, + "inputTokens": 305, "outputTokenDetails": { "reasoningTokens": 0, "textTokens": 62 }, "outputTokens": 62, "raw": { - "input_tokens": 308, + "input_tokens": 305, "input_tokens_details": { "cache_write_tokens": 0, "cached_tokens": 0 @@ -5341,7 +5585,7 @@ span_tree: "reasoning_tokens": 0 } }, - "totalTokens": 370 + "totalTokens": 367 } } metadata: { @@ -5356,6 +5600,6 @@ span_tree: "completion_tokens": 62, "prompt_cache_creation_tokens": 0, "prompt_cached_tokens": 0, - "prompt_tokens": 308, - "tokens": 370 + "prompt_tokens": 305, + "tokens": 367 } diff --git a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-explicit.span-tree.json b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-explicit.span-tree.json index cd82f5b3d..12a6c4039 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-explicit.span-tree.json +++ b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-explicit.span-tree.json @@ -4,6 +4,134 @@ "name": "ai-sdk-instrumentation-root", "type": "task", "children": [ + { + "name": "ai-sdk-evaluate-operation", + "children": [ + { + "name": "evaluate", + "type": "llm", + "children": [], + "input": { + "questions": { + "category": { + "criteria": { + "billing": "Payments and refunds", + "technical": "Software problems" + }, + "instructions": "Which team should handle this request?", + "type": "choice" + }, + "duplicate": { + "instructions": "Does the customer report a duplicate charge?", + "type": "boolean" + }, + "urgency": { + "criteria": [ + "Low", + "Medium", + "High" + ], + "instructions": "How urgent is this request?", + "type": "score" + } + }, + "state": { + "message": "I was charged twice for my subscription. Please refund the duplicate charge." + } + }, + "output": { + "category": { + "choice": "billing", + "probabilities": { + "billing": 1, + "technical": 0 + }, + "type": "choice" + }, + "duplicate": { + "probability": 0.99, + "type": "boolean" + }, + "urgency": { + "probabilities": { + "0": 0.03, + "1": 0.82, + "2": 0.15 + }, + "score": 1.12, + "type": "score" + } + }, + "metadata": { + "braintrust": { + "integration_name": "ai-sdk", + "sdk_language": "typescript" + }, + "model": "jev-1.13.0", + "provider": "typesafe", + "providerMetadata": { + "typesafe": { + "confidence": { + "category": 1, + "urgency": 0.74 + } + } + } + }, + "metrics": { + "completion_tokens": 62, + "prompt_tokens": 382, + "tokens": 444 + } + } + ], + "metadata": { + "operation": "evaluate", + "testRunId": "" + } + }, + { + "name": "ai-sdk-evaluate-string-operation", + "children": [ + { + "name": "evaluate", + "type": "llm", + "children": [], + "input": { + "questions": { + "positive": { + "instructions": "Was the delivery successful?", + "type": "boolean" + } + }, + "state": "The package arrived intact and on time." + }, + "output": { + "positive": { + "probability": 0.97, + "type": "boolean" + } + }, + "metadata": { + "braintrust": { + "integration_name": "ai-sdk", + "sdk_language": "typescript" + }, + "model": "jev-1.13.0", + "provider": "typesafe-ai" + }, + "metrics": { + "completion_tokens": 20, + "prompt_tokens": 279, + "tokens": 299 + } + } + ], + "metadata": { + "operation": "evaluate-string", + "testRunId": "" + } + }, { "name": "ai-sdk-generate-operation", "children": [ @@ -34,7 +162,7 @@ { "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, "text": "PARIS", @@ -42,6 +170,12 @@ } ], "finishReason": "stop", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -303,7 +437,7 @@ { "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, "text": "{\"answer\":\"4\"}", @@ -311,6 +445,12 @@ } ], "finishReason": "stop", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -582,7 +722,7 @@ { "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, "text": "One, two, three.", @@ -590,6 +730,12 @@ } ], "finishReason": "stop", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -976,7 +1122,7 @@ "output": [ { "index": 1, - "relevance_score": 0.06657539 + "relevance_score": 0.06664825 }, { "index": 0, @@ -1009,7 +1155,7 @@ "output": [ { "index": 1, - "relevance_score": 0.06657539 + "relevance_score": 0.06664825 }, { "index": 0, @@ -1086,15 +1232,21 @@ }, "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, - "toolCallId": "", + "toolCallId": "", "toolName": "get_weather", "type": "tool-call" } ], "finishReason": "tool-calls", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -1240,15 +1392,21 @@ }, "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, - "toolCallId": "", + "toolCallId": "", "toolName": "get_weather", "type": "tool-call" } ], "finishReason": "tool-calls", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -1431,15 +1589,21 @@ }, "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, - "toolCallId": "", + "toolCallId": "", "toolName": "get_weather", "type": "tool-call" } ], "finishReason": "tool-calls", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -1659,15 +1823,21 @@ }, "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, - "toolCallId": "", + "toolCallId": "", "toolName": "get_weather", "type": "tool-call" } ], "finishReason": "tool-calls", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -2601,6 +2771,26 @@ } ], "finishReason": "stop", + "providerMetadata": { + "anthropic": { + "container": null, + "contextManagement": null, + "iterations": null, + "stopSequence": null, + "usage": { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 0 + }, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 4516, + "inference_geo": "not_available", + "input_tokens": 3, + "output_tokens": 7, + "service_tier": "standard" + } + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -2874,6 +3064,26 @@ } ], "finishReason": "stop", + "providerMetadata": { + "anthropic": { + "container": null, + "contextManagement": null, + "iterations": null, + "stopSequence": null, + "usage": { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 0 + }, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 4516, + "inference_geo": "not_available", + "input_tokens": 3, + "output_tokens": 7, + "service_tier": "standard" + } + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -3144,6 +3354,26 @@ } ], "finishReason": "stop", + "providerMetadata": { + "anthropic": { + "container": null, + "contextManagement": null, + "iterations": null, + "stopSequence": null, + "usage": { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 0 + }, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 4516, + "inference_geo": "not_available", + "input_tokens": 3, + "output_tokens": 7, + "service_tier": "standard" + } + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -3734,7 +3964,7 @@ { "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, "text": "HELLO", @@ -3742,6 +3972,12 @@ } ], "finishReason": "stop", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -3995,7 +4231,7 @@ { "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, "text": "STREAM HELLO", @@ -4003,6 +4239,12 @@ } ], "finishReason": "stop", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -4322,10 +4564,10 @@ }, "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, - "toolCallId": "", + "toolCallId": "", "toolName": "get_store_price", "type": "tool-call" }, @@ -4336,15 +4578,21 @@ }, "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, - "toolCallId": "", + "toolCallId": "", "toolName": "get_store_price", "type": "tool-call" } ], "finishReason": "tool-calls", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -4576,15 +4824,21 @@ }, "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, - "toolCallId": "", + "toolCallId": "", "toolName": "apply_discount", "type": "tool-call" } ], "finishReason": "tool-calls", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { @@ -4832,7 +5086,7 @@ { "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A** at $999. After applying the discount code **SAVE20**, the final total is **$799.20**.", @@ -4840,21 +5094,27 @@ } ], "finishReason": "stop", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { "cacheReadTokens": 0, "cacheWriteTokens": 0, - "noCacheTokens": 308 + "noCacheTokens": 305 }, - "inputTokens": 308, + "inputTokens": 305, "outputTokenDetails": { "reasoningTokens": 0, "textTokens": 62 }, "outputTokens": 62, "raw": { - "input_tokens": 308, + "input_tokens": 305, "input_tokens_details": { "cache_write_tokens": 0, "cached_tokens": 0 @@ -4864,7 +5124,7 @@ "reasoning_tokens": 0 } }, - "totalTokens": 370 + "totalTokens": 367 } }, "metadata": { @@ -4879,8 +5139,8 @@ "completion_tokens": 62, "prompt_cache_creation_tokens": 0, "prompt_cached_tokens": 0, - "prompt_tokens": 308, - "tokens": 370 + "prompt_tokens": 305, + "tokens": 367 } } ], @@ -5432,16 +5692,16 @@ "inputTokenDetails": { "cacheReadTokens": 0, "cacheWriteTokens": 0, - "noCacheTokens": 308 + "noCacheTokens": 305 }, - "inputTokens": 308, + "inputTokens": 305, "outputTokenDetails": { "reasoningTokens": 0, "textTokens": 62 }, "outputTokens": 62, "raw": { - "input_tokens": 308, + "input_tokens": 305, "input_tokens_details": { "cache_write_tokens": 0, "cached_tokens": 0 @@ -5451,7 +5711,7 @@ "reasoning_tokens": 0 } }, - "totalTokens": 370 + "totalTokens": 367 }, "warnings": [] } @@ -5555,29 +5815,29 @@ "inputTokenDetails": { "cacheReadTokens": 0, "cacheWriteTokens": 0, - "noCacheTokens": 741 + "noCacheTokens": 738 }, - "inputTokens": 741, + "inputTokens": 738, "outputTokenDetails": { "reasoningTokens": 0, "textTokens": 142 }, "outputTokens": 142, - "totalTokens": 883 + "totalTokens": 880 }, "usage": { "inputTokenDetails": { "cacheReadTokens": 0, "cacheWriteTokens": 0, - "noCacheTokens": 741 + "noCacheTokens": 738 }, - "inputTokens": 741, + "inputTokens": 738, "outputTokenDetails": { "reasoningTokens": 0, "textTokens": 142 }, "outputTokens": 142, - "totalTokens": 883 + "totalTokens": 880 }, "warnings": [] }, @@ -5598,7 +5858,7 @@ } ], "metadata": { - "aiSdkVersion": "7.0.0", + "aiSdkVersion": "7.0.105", "scenario": "ai-sdk-instrumentation", "testRunId": "" } diff --git a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-explicit.span-tree.txt b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-explicit.span-tree.txt index e23d0fed6..03cb1cfbe 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-explicit.span-tree.txt +++ b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-explicit.span-tree.txt @@ -1,10 +1,122 @@ span_tree: └── ai-sdk-instrumentation-root [task] metadata: { - "aiSdkVersion": "7.0.0", + "aiSdkVersion": "7.0.105", "scenario": "ai-sdk-instrumentation", "testRunId": "" } + ├── ai-sdk-evaluate-operation + │ metadata: { + │ "operation": "evaluate", + │ "testRunId": "" + │ } + │ └── evaluate [llm] + │ input: { + │ "questions": { + │ "category": { + │ "criteria": { + │ "billing": "Payments and refunds", + │ "technical": "Software problems" + │ }, + │ "instructions": "Which team should handle this request?", + │ "type": "choice" + │ }, + │ "duplicate": { + │ "instructions": "Does the customer report a duplicate charge?", + │ "type": "boolean" + │ }, + │ "urgency": { + │ "criteria": [ + │ "Low", + │ "Medium", + │ "High" + │ ], + │ "instructions": "How urgent is this request?", + │ "type": "score" + │ } + │ }, + │ "state": { + │ "message": "I was charged twice for my subscription. Please refund the duplicate charge." + │ } + │ } + │ output: { + │ "category": { + │ "choice": "billing", + │ "probabilities": { + │ "billing": 1, + │ "technical": 0 + │ }, + │ "type": "choice" + │ }, + │ "duplicate": { + │ "probability": 0.99, + │ "type": "boolean" + │ }, + │ "urgency": { + │ "probabilities": { + │ "0": 0.03, + │ "1": 0.82, + │ "2": 0.15 + │ }, + │ "score": 1.12, + │ "type": "score" + │ } + │ } + │ metadata: { + │ "braintrust": { + │ "integration_name": "ai-sdk", + │ "sdk_language": "typescript" + │ }, + │ "model": "jev-1.13.0", + │ "provider": "typesafe", + │ "providerMetadata": { + │ "typesafe": { + │ "confidence": { + │ "category": 1, + │ "urgency": 0.74 + │ } + │ } + │ } + │ } + │ metrics: { + │ "completion_tokens": 62, + │ "prompt_tokens": 382, + │ "tokens": 444 + │ } + ├── ai-sdk-evaluate-string-operation + │ metadata: { + │ "operation": "evaluate-string", + │ "testRunId": "" + │ } + │ └── evaluate [llm] + │ input: { + │ "questions": { + │ "positive": { + │ "instructions": "Was the delivery successful?", + │ "type": "boolean" + │ } + │ }, + │ "state": "The package arrived intact and on time." + │ } + │ output: { + │ "positive": { + │ "probability": 0.97, + │ "type": "boolean" + │ } + │ } + │ metadata: { + │ "braintrust": { + │ "integration_name": "ai-sdk", + │ "sdk_language": "typescript" + │ }, + │ "model": "jev-1.13.0", + │ "provider": "typesafe-ai" + │ } + │ metrics: { + │ "completion_tokens": 20, + │ "prompt_tokens": 279, + │ "tokens": 299 + │ } ├── ai-sdk-generate-operation │ metadata: { │ "operation": "generate", @@ -203,7 +315,7 @@ span_tree: │ { │ "providerMetadata": { │ "openai": { - │ "itemId": "" + │ "itemId": "" │ } │ }, │ "text": "PARIS", @@ -211,6 +323,12 @@ span_tree: │ } │ ], │ "finishReason": "stop", + │ "providerMetadata": { + │ "openai": { + │ "responseId": "", + │ "serviceTier": "default" + │ } + │ }, │ "response": {}, │ "usage": { │ "inputTokenDetails": { @@ -474,7 +592,7 @@ span_tree: │ { │ "providerMetadata": { │ "openai": { - │ "itemId": "" + │ "itemId": "" │ } │ }, │ "text": "{\"answer\":\"4\"}", @@ -482,6 +600,12 @@ span_tree: │ } │ ], │ "finishReason": "stop", + │ "providerMetadata": { + │ "openai": { + │ "responseId": "", + │ "serviceTier": "default" + │ } + │ }, │ "response": {}, │ "usage": { │ "inputTokenDetails": { @@ -725,7 +849,7 @@ span_tree: │ { │ "providerMetadata": { │ "openai": { - │ "itemId": "" + │ "itemId": "" │ } │ }, │ "text": "One, two, three.", @@ -733,6 +857,12 @@ span_tree: │ } │ ], │ "finishReason": "stop", + │ "providerMetadata": { + │ "openai": { + │ "responseId": "", + │ "serviceTier": "default" + │ } + │ }, │ "response": {}, │ "usage": { │ "inputTokenDetails": { @@ -908,7 +1038,7 @@ span_tree: │ output: [ │ { │ "index": 1, - │ "relevance_score": 0.06657539 + │ "relevance_score": 0.06664825 │ }, │ { │ "index": 0, @@ -936,7 +1066,7 @@ span_tree: │ output: [ │ { │ "index": 1, - │ "relevance_score": 0.06657539 + │ "relevance_score": 0.06664825 │ }, │ { │ "index": 0, @@ -1825,15 +1955,21 @@ span_tree: │ │ }, │ │ "providerMetadata": { │ │ "openai": { - │ │ "itemId": "" + │ │ "itemId": "" │ │ } │ │ }, - │ │ "toolCallId": "", + │ │ "toolCallId": "", │ │ "toolName": "get_weather", │ │ "type": "tool-call" │ │ } │ │ ], │ │ "finishReason": "tool-calls", + │ │ "providerMetadata": { + │ │ "openai": { + │ │ "responseId": "", + │ │ "serviceTier": "default" + │ │ } + │ │ }, │ │ "response": {}, │ │ "usage": { │ │ "inputTokenDetails": { @@ -1971,15 +2107,21 @@ span_tree: │ │ }, │ │ "providerMetadata": { │ │ "openai": { - │ │ "itemId": "" + │ │ "itemId": "" │ │ } │ │ }, - │ │ "toolCallId": "", + │ │ "toolCallId": "", │ │ "toolName": "get_weather", │ │ "type": "tool-call" │ │ } │ │ ], │ │ "finishReason": "tool-calls", + │ │ "providerMetadata": { + │ │ "openai": { + │ │ "responseId": "", + │ │ "serviceTier": "default" + │ │ } + │ │ }, │ │ "response": {}, │ │ "usage": { │ │ "inputTokenDetails": { @@ -2154,15 +2296,21 @@ span_tree: │ │ }, │ │ "providerMetadata": { │ │ "openai": { - │ │ "itemId": "" + │ │ "itemId": "" │ │ } │ │ }, - │ │ "toolCallId": "", + │ │ "toolCallId": "", │ │ "toolName": "get_weather", │ │ "type": "tool-call" │ │ } │ │ ], │ │ "finishReason": "tool-calls", + │ │ "providerMetadata": { + │ │ "openai": { + │ │ "responseId": "", + │ │ "serviceTier": "default" + │ │ } + │ │ }, │ │ "response": {}, │ │ "usage": { │ │ "inputTokenDetails": { @@ -2374,15 +2522,21 @@ span_tree: │ │ }, │ │ "providerMetadata": { │ │ "openai": { - │ │ "itemId": "" + │ │ "itemId": "" │ │ } │ │ }, - │ │ "toolCallId": "", + │ │ "toolCallId": "", │ │ "toolName": "get_weather", │ │ "type": "tool-call" │ │ } │ │ ], │ │ "finishReason": "tool-calls", + │ │ "providerMetadata": { + │ │ "openai": { + │ │ "responseId": "", + │ │ "serviceTier": "default" + │ │ } + │ │ }, │ │ "response": {}, │ │ "usage": { │ │ "inputTokenDetails": { @@ -2659,6 +2813,26 @@ span_tree: │ } │ ], │ "finishReason": "stop", + │ "providerMetadata": { + │ "anthropic": { + │ "container": null, + │ "contextManagement": null, + │ "iterations": null, + │ "stopSequence": null, + │ "usage": { + │ "cache_creation": { + │ "ephemeral_1h_input_tokens": 0, + │ "ephemeral_5m_input_tokens": 0 + │ }, + │ "cache_creation_input_tokens": 0, + │ "cache_read_input_tokens": 4516, + │ "inference_geo": "not_available", + │ "input_tokens": 3, + │ "output_tokens": 7, + │ "service_tier": "standard" + │ } + │ } + │ }, │ "response": {}, │ "usage": { │ "inputTokenDetails": { @@ -2925,6 +3099,26 @@ span_tree: │ │ } │ │ ], │ │ "finishReason": "stop", + │ │ "providerMetadata": { + │ │ "anthropic": { + │ │ "container": null, + │ │ "contextManagement": null, + │ │ "iterations": null, + │ │ "stopSequence": null, + │ │ "usage": { + │ │ "cache_creation": { + │ │ "ephemeral_1h_input_tokens": 0, + │ │ "ephemeral_5m_input_tokens": 0 + │ │ }, + │ │ "cache_creation_input_tokens": 0, + │ │ "cache_read_input_tokens": 4516, + │ │ "inference_geo": "not_available", + │ │ "input_tokens": 3, + │ │ "output_tokens": 7, + │ │ "service_tier": "standard" + │ │ } + │ │ } + │ │ }, │ │ "response": {}, │ │ "usage": { │ │ "inputTokenDetails": { @@ -3186,6 +3380,26 @@ span_tree: │ } │ ], │ "finishReason": "stop", + │ "providerMetadata": { + │ "anthropic": { + │ "container": null, + │ "contextManagement": null, + │ "iterations": null, + │ "stopSequence": null, + │ "usage": { + │ "cache_creation": { + │ "ephemeral_1h_input_tokens": 0, + │ "ephemeral_5m_input_tokens": 0 + │ }, + │ "cache_creation_input_tokens": 0, + │ "cache_read_input_tokens": 4516, + │ "inference_geo": "not_available", + │ "input_tokens": 3, + │ "output_tokens": 7, + │ "service_tier": "standard" + │ } + │ } + │ }, │ "response": {}, │ "usage": { │ "inputTokenDetails": { @@ -3724,7 +3938,7 @@ span_tree: │ { │ "providerMetadata": { │ "openai": { - │ "itemId": "" + │ "itemId": "" │ } │ }, │ "text": "HELLO", @@ -3732,6 +3946,12 @@ span_tree: │ } │ ], │ "finishReason": "stop", + │ "providerMetadata": { + │ "openai": { + │ "responseId": "", + │ "serviceTier": "default" + │ } + │ }, │ "response": {}, │ "usage": { │ "inputTokenDetails": { @@ -3975,7 +4195,7 @@ span_tree: │ { │ "providerMetadata": { │ "openai": { - │ "itemId": "" + │ "itemId": "" │ } │ }, │ "text": "STREAM HELLO", @@ -3983,6 +4203,12 @@ span_tree: │ } │ ], │ "finishReason": "stop", + │ "providerMetadata": { + │ "openai": { + │ "responseId": "", + │ "serviceTier": "default" + │ } + │ }, │ "response": {}, │ "usage": { │ "inputTokenDetails": { @@ -4579,16 +4805,16 @@ span_tree: "inputTokenDetails": { "cacheReadTokens": 0, "cacheWriteTokens": 0, - "noCacheTokens": 308 + "noCacheTokens": 305 }, - "inputTokens": 308, + "inputTokens": 305, "outputTokenDetails": { "reasoningTokens": 0, "textTokens": 62 }, "outputTokens": 62, "raw": { - "input_tokens": 308, + "input_tokens": 305, "input_tokens_details": { "cache_write_tokens": 0, "cached_tokens": 0 @@ -4598,7 +4824,7 @@ span_tree: "reasoning_tokens": 0 } }, - "totalTokens": 370 + "totalTokens": 367 }, "warnings": [] } @@ -4702,29 +4928,29 @@ span_tree: "inputTokenDetails": { "cacheReadTokens": 0, "cacheWriteTokens": 0, - "noCacheTokens": 741 + "noCacheTokens": 738 }, - "inputTokens": 741, + "inputTokens": 738, "outputTokenDetails": { "reasoningTokens": 0, "textTokens": 142 }, "outputTokens": 142, - "totalTokens": 883 + "totalTokens": 880 }, "usage": { "inputTokenDetails": { "cacheReadTokens": 0, "cacheWriteTokens": 0, - "noCacheTokens": 741 + "noCacheTokens": 738 }, - "inputTokens": 741, + "inputTokens": 738, "outputTokenDetails": { "reasoningTokens": 0, "textTokens": 142 }, "outputTokens": 142, - "totalTokens": 883 + "totalTokens": 880 }, "warnings": [] } @@ -4819,10 +5045,10 @@ span_tree: │ }, │ "providerMetadata": { │ "openai": { - │ "itemId": "" + │ "itemId": "" │ } │ }, - │ "toolCallId": "", + │ "toolCallId": "", │ "toolName": "get_store_price", │ "type": "tool-call" │ }, @@ -4833,15 +5059,21 @@ span_tree: │ }, │ "providerMetadata": { │ "openai": { - │ "itemId": "" + │ "itemId": "" │ } │ }, - │ "toolCallId": "", + │ "toolCallId": "", │ "toolName": "get_store_price", │ "type": "tool-call" │ } │ ], │ "finishReason": "tool-calls", + │ "providerMetadata": { + │ "openai": { + │ "responseId": "", + │ "serviceTier": "default" + │ } + │ }, │ "response": {}, │ "usage": { │ "inputTokenDetails": { @@ -5061,15 +5293,21 @@ span_tree: │ }, │ "providerMetadata": { │ "openai": { - │ "itemId": "" + │ "itemId": "" │ } │ }, - │ "toolCallId": "", + │ "toolCallId": "", │ "toolName": "apply_discount", │ "type": "tool-call" │ } │ ], │ "finishReason": "tool-calls", + │ "providerMetadata": { + │ "openai": { + │ "responseId": "", + │ "serviceTier": "default" + │ } + │ }, │ "response": {}, │ "usage": { │ "inputTokenDetails": { @@ -5309,7 +5547,7 @@ span_tree: { "providerMetadata": { "openai": { - "itemId": "" + "itemId": "" } }, "text": "Here are the prices for the laptop:\n\n- **Store A**: $999\n- **Store B**: $1099\n\nThe cheaper price is from **Store A** at $999. After applying the discount code **SAVE20**, the final total is **$799.20**.", @@ -5317,21 +5555,27 @@ span_tree: } ], "finishReason": "stop", + "providerMetadata": { + "openai": { + "responseId": "", + "serviceTier": "default" + } + }, "response": {}, "usage": { "inputTokenDetails": { "cacheReadTokens": 0, "cacheWriteTokens": 0, - "noCacheTokens": 308 + "noCacheTokens": 305 }, - "inputTokens": 308, + "inputTokens": 305, "outputTokenDetails": { "reasoningTokens": 0, "textTokens": 62 }, "outputTokens": 62, "raw": { - "input_tokens": 308, + "input_tokens": 305, "input_tokens_details": { "cache_write_tokens": 0, "cached_tokens": 0 @@ -5341,7 +5585,7 @@ span_tree: "reasoning_tokens": 0 } }, - "totalTokens": 370 + "totalTokens": 367 } } metadata: { @@ -5356,6 +5600,6 @@ span_tree: "completion_tokens": 62, "prompt_cache_creation_tokens": 0, "prompt_cached_tokens": 0, - "prompt_tokens": 308, - "tokens": 370 + "prompt_tokens": 305, + "tokens": 367 } diff --git a/e2e/scenarios/ai-sdk-instrumentation/assertions.ts b/e2e/scenarios/ai-sdk-instrumentation/assertions.ts index bbe3a7dc6..4a3fe0ab0 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/assertions.ts +++ b/e2e/scenarios/ai-sdk-instrumentation/assertions.ts @@ -674,6 +674,7 @@ export function defineAISDKInstrumentationAssertions(options: { supportsProviderCacheAssertions: boolean; supportsDenyOutputOverrideScenario: boolean; supportsEmbedMany: boolean; + supportsEvaluate?: boolean; supportsGenerateObject: boolean; supportsGenerateImage: boolean; supportsOutputObjectScenario: boolean; @@ -912,6 +913,76 @@ export function defineAISDKInstrumentationAssertions(options: { }); } + if (options.supportsEvaluate) { + test( + "captures native evaluation answers and confidence", + testConfig, + () => { + const operation = findLatestSpan(events, "ai-sdk-evaluate-operation"); + expectOperationParentedByRoot( + operation, + findLatestSpan(events, ROOT_NAME), + ); + const spans = findChildSpans(events, "evaluate", operation?.span.id); + expect(spans).toHaveLength(1); + const [span] = spans; + expect(span.span.type).toBe("llm"); + expect(span.input).toMatchObject({ + state: { message: expect.any(String) }, + questions: { + category: { type: "choice" }, + urgency: { type: "score" }, + duplicate: { type: "boolean" }, + }, + }); + expect(span.output).toMatchObject({ + category: { + type: "choice", + choice: expect.any(String), + probabilities: expect.any(Object), + }, + urgency: { + type: "score", + score: expect.any(Number), + probabilities: expect.any(Object), + }, + duplicate: { type: "boolean", probability: expect.any(Number) }, + }); + expect(span.row.metadata).toMatchObject({ + model: expect.stringMatching(/^jev-/), + provider: "typesafe", + providerMetadata: { typesafe: { confidence: expect.any(Object) } }, + }); + expect(span.metrics).toMatchObject({ + prompt_tokens: expect.any(Number), + completion_tokens: expect.any(Number), + tokens: expect.any(Number), + }); + + const stringOperation = findLatestSpan( + events, + "ai-sdk-evaluate-string-operation", + ); + const stringSpans = findChildSpans( + events, + "evaluate", + stringOperation?.span.id, + ); + expect(stringSpans).toHaveLength(1); + expect(stringSpans[0].input).toMatchObject({ + state: "The package arrived intact and on time.", + }); + expect(stringSpans[0].output).toMatchObject({ + positive: { type: "boolean", probability: expect.any(Number) }, + }); + expect(stringSpans[0].row.metadata).toMatchObject({ + model: expect.stringMatching(/^jev-/), + provider: "typesafe-ai", + }); + }, + ); + } + if (options.supportsRerank) { test("captures trace for rerank()", testConfig, () => { const root = findLatestSpan(events, ROOT_NAME); diff --git a/e2e/scenarios/ai-sdk-instrumentation/package.json b/e2e/scenarios/ai-sdk-instrumentation/package.json index b5ddbe320..ca2d2790a 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/package.json +++ b/e2e/scenarios/ai-sdk-instrumentation/package.json @@ -54,7 +54,7 @@ }, "ai-sdk-v7-latest": { "package": "ai", - "range": "7.0.0" + "range": "7" }, "ai-sdk-openai-v7-latest": { "package": "@ai-sdk/openai", @@ -98,8 +98,8 @@ "ai-sdk-anthropic-v6-latest": "npm:@ai-sdk/anthropic@3.0.107", "ai-sdk-cohere-v6": "npm:@ai-sdk/cohere@3.0.7", "ai-sdk-cohere-v6-latest": "npm:@ai-sdk/cohere@3.0.51", - "ai-sdk-v7": "npm:ai@7.0.0", - "ai-sdk-v7-latest": "npm:ai@7.0.0", + "ai-sdk-v7": "npm:ai@7.0.105", + "ai-sdk-v7-latest": "npm:ai@7.0.105", "ai-sdk-openai-v7": "npm:@ai-sdk/openai@4.0.0", "ai-sdk-openai-v7-latest": "npm:@ai-sdk/openai@4.0.36", "ai-sdk-anthropic-v7": "npm:@ai-sdk/anthropic@4.0.0", diff --git a/e2e/scenarios/ai-sdk-instrumentation/pnpm-lock.yaml b/e2e/scenarios/ai-sdk-instrumentation/pnpm-lock.yaml index 78043204b..e79200ec2 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/pnpm-lock.yaml +++ b/e2e/scenarios/ai-sdk-instrumentation/pnpm-lock.yaml @@ -111,11 +111,11 @@ importers: specifier: npm:ai@6.0.246 version: ai@6.0.246(zod@3.25.76) ai-sdk-v7: - specifier: npm:ai@7.0.0 - version: ai@7.0.0(zod@3.25.76) + specifier: npm:ai@7.0.105 + version: ai@7.0.105(zod@3.25.76) ai-sdk-v7-latest: - specifier: npm:ai@7.0.0 - version: ai@7.0.0(zod@3.25.76) + specifier: npm:ai@7.0.105 + version: ai@7.0.105(zod@3.25.76) ai-sdk-workflow-v1: specifier: npm:@ai-sdk/workflow@1.0.8 version: '@ai-sdk/workflow@1.0.8(zod@3.25.76)' @@ -221,14 +221,14 @@ packages: peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/gateway@4.0.0': - resolution: {integrity: sha512-rcKukspbM4h511ot2E8TsPl7rXjRK1zHKrMCP7w4+XF55UKqQHaDzo2kKbGv5rp8Bjb1yQatIHJZE1E2yrOOMw==} + '@ai-sdk/gateway@4.0.6': + resolution: {integrity: sha512-8GjssUxXeTd8tst2fYXNOFbtNNZFv3sG7aq7wKnQYrU2eB3JFR7np6o4F3Snp/fy/rJZSeH28LvjSWq5wkdL8Q==} engines: {node: '>=22'} peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/gateway@4.0.6': - resolution: {integrity: sha512-8GjssUxXeTd8tst2fYXNOFbtNNZFv3sG7aq7wKnQYrU2eB3JFR7np6o4F3Snp/fy/rJZSeH28LvjSWq5wkdL8Q==} + '@ai-sdk/gateway@4.0.85': + resolution: {integrity: sha512-c8ztST/CslupqO3p7izsAuG3TlKg9mhE6mGJ42iUADsSMJIV5IOKd9AsLG33QCAY7SWs6NDO2giM/rq7bUTNlQ==} engines: {node: '>=22'} peerDependencies: zod: ^3.25.76 || ^4.1.8 @@ -383,6 +383,12 @@ packages: peerDependencies: zod: ^3.25.76 || ^4.1.8 + '@ai-sdk/provider-utils@5.0.43': + resolution: {integrity: sha512-gw/bcNseOGSs59TMtV4H1KwqXXe24NHgx+uBYr98pa4Fg6Uvp8hPPxjuckVnfFFyIxHCDew8so0ujpvcSuyMZA==} + engines: {node: '>=22'} + peerDependencies: + zod: ^3.25.76 || ^4.1.8 + '@ai-sdk/provider@0.0.23': resolution: {integrity: sha512-oAc49O5+xypVrKM7EUU5P/Y4DUL4JZUWVxhejoAVOTOl3WZUEWsMbP3QZR+TrimQIsS0WR/n9UuF6U0jPdp0tQ==} engines: {node: '>=18'} @@ -435,6 +441,10 @@ packages: resolution: {integrity: sha512-6p3C/vGqVIjcptBu1DnVd/BZJ2wWmV9TUv9192vT6ZvT9KNED8EwRTqyqFpoQZKgSbMDSvBSq3dqR524Nt/Crw==} engines: {node: '>=22'} + '@ai-sdk/provider@4.0.17': + resolution: {integrity: sha512-VYMBxIQdcHqbIf1j+YZlI9Ati6LZ4wJe0GGd4z4a5H/KxTggjeOiyaVYTnfF7LHZK5jMQ+rofmzz4QPqf++NUw==} + engines: {node: '>=22'} + '@ai-sdk/provider@4.0.7': resolution: {integrity: sha512-6or44XprPzKbr8zkmzosowSE0pxkvJcoojBL+mCZvPUt3kvXp3XSNqeVun9golb1acEfSo6yaEBRT18h2VU+1Q==} engines: {node: '>=22'} @@ -671,8 +681,8 @@ packages: peerDependencies: zod: ^3.25.76 || ^4.1.8 - ai@7.0.0: - resolution: {integrity: sha512-hncs+jamJh8r36K6G8xky7oF4Ai/RLU5TF85FMzI2vElyMJGGnLoHihpdmuDiuY2BsktDWHevKaJM1l0VcRLGw==} + ai@7.0.105: + resolution: {integrity: sha512-gkV3W+tTtWwQ41KNV/KjV8wabBrk+bnbnZ3f0AWp/T9LLyljose8uhFViKleVy7tIdEiR2PiS4BpbNdcExf7rQ==} engines: {node: '>=22'} peerDependencies: zod: ^3.25.76 || ^4.1.8 @@ -954,17 +964,17 @@ snapshots: '@vercel/oidc': 3.2.0 zod: 3.25.76 - '@ai-sdk/gateway@4.0.0(zod@3.25.76)': + '@ai-sdk/gateway@4.0.6(zod@3.25.76)': dependencies: - '@ai-sdk/provider': 4.0.0 - '@ai-sdk/provider-utils': 5.0.0(zod@3.25.76) + '@ai-sdk/provider': 4.0.1 + '@ai-sdk/provider-utils': 5.0.2(zod@3.25.76) '@vercel/oidc': 3.2.0 zod: 3.25.76 - '@ai-sdk/gateway@4.0.6(zod@3.25.76)': + '@ai-sdk/gateway@4.0.85(zod@3.25.76)': dependencies: - '@ai-sdk/provider': 4.0.1 - '@ai-sdk/provider-utils': 5.0.2(zod@3.25.76) + '@ai-sdk/provider': 4.0.17 + '@ai-sdk/provider-utils': 5.0.43(zod@3.25.76) '@vercel/oidc': 3.2.0 zod: 3.25.76 @@ -1137,6 +1147,15 @@ snapshots: undici: 7.29.0 zod: 3.25.76 + '@ai-sdk/provider-utils@5.0.43(zod@3.25.76)': + dependencies: + '@ai-sdk/provider': 4.0.17 + '@standard-schema/spec': 1.1.0 + '@workflow/serde': 4.1.0 + eventsource-parser: 3.0.8 + undici: 7.29.0 + zod: 3.25.76 + '@ai-sdk/provider@0.0.23': dependencies: json-schema: 0.4.0 @@ -1189,6 +1208,10 @@ snapshots: dependencies: json-schema: 0.4.0 + '@ai-sdk/provider@4.0.17': + dependencies: + json-schema: 0.4.0 + '@ai-sdk/provider@4.0.7': dependencies: json-schema: 0.4.0 @@ -1445,11 +1468,11 @@ snapshots: '@opentelemetry/api': 1.9.0 zod: 3.25.76 - ai@7.0.0(zod@3.25.76): + ai@7.0.105(zod@3.25.76): dependencies: - '@ai-sdk/gateway': 4.0.0(zod@3.25.76) - '@ai-sdk/provider': 4.0.0 - '@ai-sdk/provider-utils': 5.0.0(zod@3.25.76) + '@ai-sdk/gateway': 4.0.85(zod@3.25.76) + '@ai-sdk/provider': 4.0.17 + '@ai-sdk/provider-utils': 5.0.43(zod@3.25.76) zod: 3.25.76 ai@7.0.8(zod@3.25.76): diff --git a/e2e/scenarios/ai-sdk-instrumentation/scenario.ai-sdk-v7-explicit.mjs b/e2e/scenarios/ai-sdk-instrumentation/scenario.ai-sdk-v7-explicit.mjs index 5841687a8..48a788b91 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/scenario.ai-sdk-v7-explicit.mjs +++ b/e2e/scenarios/ai-sdk-instrumentation/scenario.ai-sdk-v7-explicit.mjs @@ -51,6 +51,8 @@ runMain(async () => { supportsDenyOutputOverrideScenario: false, supportsAgentToolLoop: true, supportsEmbedMany: true, + supportsEvaluate: true, + evaluate: wrapAISDK(ai).experimental_evaluate, supportsGenerateObject: true, supportsGenerateImage: false, supportsOpenAICacheScenario: false, diff --git a/e2e/scenarios/ai-sdk-instrumentation/scenario.ai-sdk-v7.mjs b/e2e/scenarios/ai-sdk-instrumentation/scenario.ai-sdk-v7.mjs index f2e7e8539..384c2c6e6 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/scenario.ai-sdk-v7.mjs +++ b/e2e/scenarios/ai-sdk-instrumentation/scenario.ai-sdk-v7.mjs @@ -40,6 +40,7 @@ runAutoAISDKInstrumentationOrExit({ supportsAgentToolLoop: true, supportsDenyOutputOverrideScenario: false, supportsEmbedMany: true, + supportsEvaluate: true, supportsGenerateObject: true, supportsGenerateImage: false, supportsOpenAICacheScenario: false, diff --git a/e2e/scenarios/ai-sdk-instrumentation/scenario.ai-sdk-v7.ts b/e2e/scenarios/ai-sdk-instrumentation/scenario.ai-sdk-v7.ts index 1fad7a0ed..6c164eb36 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/scenario.ai-sdk-v7.ts +++ b/e2e/scenarios/ai-sdk-instrumentation/scenario.ai-sdk-v7.ts @@ -5,7 +5,7 @@ const coherePackageName = process.env.AI_SDK_COHERE_PACKAGE_NAME ?? "ai-sdk-cohere-v7-latest"; const openaiPackageName = process.env.AI_SDK_OPENAI_PACKAGE_NAME ?? "ai-sdk-openai-v7-latest"; -import { braintrustAISDKTelemetry } from "braintrust"; +import { braintrustAISDKTelemetry, wrapAISDK } from "braintrust"; import { getInstalledPackageVersion, runMain, @@ -37,6 +37,8 @@ runMain(async () => { supportsDenyOutputOverrideScenario: false, supportsAgentToolLoop: true, supportsEmbedMany: true, + supportsEvaluate: true, + evaluate: wrapAISDK(ai).experimental_evaluate, supportsGenerateObject: true, supportsGenerateImage: false, supportsOpenAICacheScenario: false, diff --git a/e2e/scenarios/ai-sdk-instrumentation/scenario.impl.mjs b/e2e/scenarios/ai-sdk-instrumentation/scenario.impl.mjs index f09635def..a6ae92348 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/scenario.impl.mjs +++ b/e2e/scenarios/ai-sdk-instrumentation/scenario.impl.mjs @@ -166,6 +166,7 @@ export const AI_SDK_SCENARIO_SPECS = [ openaiModuleName: "ai-sdk-openai-v7", packageName: "ai-sdk-v7", snapshotName: "ai-sdk-v7", + supportsEvaluate: true, anthropicModuleName: "ai-sdk-anthropic-v7", supportsAgentToolLoop: true, supportsDenyOutputOverrideScenario: false, @@ -194,6 +195,7 @@ export const AI_SDK_SCENARIO_SPECS = [ openaiModuleName: "ai-sdk-openai-v7-latest", packageName: "ai-sdk-v7-latest", snapshotName: "ai-sdk-v7-latest", + supportsEvaluate: true, anthropicModuleName: "ai-sdk-anthropic-v7-latest", supportsAgentToolLoop: true, supportsDenyOutputOverrideScenario: false, @@ -252,6 +254,102 @@ function createOutputObjectIfSupported(ai) { return undefined; } +function createTypeSafeEvaluationModel(modelId = "jev-latest") { + return { + specificationVersion: "v4", + provider: "typesafe", + modelId, + supportedQuestionTypes: ["choice", "score", "boolean"], + async doEvaluate({ state, questions, abortSignal, headers }) { + const apiKey = process.env.TYPESAFE_API_KEY; + if (!apiKey) { + throw new Error( + "Expected TYPESAFE_API_KEY to be set for AI SDK evaluate e2e", + ); + } + const baseURL = ( + process.env.TYPESAFE_BASE_URL ?? "https://api.typesafe.ai" + ).replace(/\/+$/, ""); + const typeSafeQuestions = Object.fromEntries( + Object.entries(questions).map(([id, question]) => [ + id, + question.type === "boolean" + ? { ...question, type: "noul" } + : question, + ]), + ); + const response = await fetch(`${baseURL}/v1/systemone`, { + method: "POST", + headers: { + authorization: `Bearer ${apiKey}`, + "content-type": "application/json", + ...headers, + }, + body: JSON.stringify({ + model: modelId, + state, + questions: typeSafeQuestions, + }), + signal: abortSignal, + }); + if (!response.ok) { + throw new Error( + `TypeSafe evaluate request failed (${response.status}): ${await response.text()}`, + ); + } + const result = await response.json(); + const confidenceEntries = []; + const answers = Object.fromEntries( + Object.entries(result.answers).map(([id, answer]) => { + if (answer.type === "noul") { + return [id, { type: "boolean", probability: answer.noul }]; + } + if (typeof answer.confidence === "number") { + confidenceEntries.push([id, answer.confidence]); + } + if (answer.type === "choice") { + return [ + id, + { + type: "choice", + choice: answer.choice, + probabilities: answer.probabilities, + }, + ]; + } + return [ + id, + { + type: "score", + score: answer.score, + probabilities: answer.probabilities, + }, + ]; + }), + ); + return { + answers, + rounding: { probabilityDecimals: 2, scoreDecimals: 2 }, + usage: { + inputTokens: result.usage?.input_tokens, + outputTokens: result.usage?.output_tokens, + }, + warnings: [], + providerMetadata: + confidenceEntries.length > 0 + ? { + typesafe: { confidence: Object.fromEntries(confidenceEntries) }, + } + : undefined, + response: { + modelId: result.model, + headers: Object.fromEntries(response.headers), + }, + }; + }, + }; +} + async function assertOutputObjectResponseFormatShape(ai, sdkMajorVersion) { const outputSchema = ai.Output.object({ schema: z.object({ @@ -419,6 +517,69 @@ async function runAISDKInstrumentationScenario( await runTracedScenario({ callback: async () => { + if (options.supportsEvaluate) { + const evaluate = + options.evaluate ?? instrumentedAI.experimental_evaluate; + await runOperation( + "ai-sdk-evaluate-operation", + "evaluate", + async () => { + await evaluate({ + model: createTypeSafeEvaluationModel(), + state: { + message: + "I was charged twice for my subscription. Please refund the duplicate charge.", + }, + questions: { + category: { + type: "choice", + instructions: "Which team should handle this request?", + criteria: { + billing: "Payments and refunds", + technical: "Software problems", + }, + }, + urgency: { + type: "score", + instructions: "How urgent is this request?", + criteria: ["Low", "Medium", "High"], + }, + duplicate: { + type: "boolean", + instructions: "Does the customer report a duplicate charge?", + }, + }, + }); + }, + ); + const originalProvider = globalThis.AI_SDK_DEFAULT_PROVIDER; + try { + globalThis.AI_SDK_DEFAULT_PROVIDER = { + evaluationModel: (modelId) => + createTypeSafeEvaluationModel( + modelId === "typesafe-ai/jev" ? "jev-latest" : modelId, + ), + }; + await runOperation( + "ai-sdk-evaluate-string-operation", + "evaluate-string", + async () => { + await evaluate({ + model: "typesafe-ai/jev", + state: "The package arrived intact and on time.", + questions: { + positive: { + type: "boolean", + instructions: "Was the delivery successful?", + }, + }, + }); + }, + ); + } finally { + globalThis.AI_SDK_DEFAULT_PROVIDER = originalProvider; + } + } await runOperation("ai-sdk-generate-operation", "generate", async () => { await instrumentedAI.generateText({ model: openaiModel, diff --git a/e2e/scenarios/ai-sdk-instrumentation/scenario.test.ts b/e2e/scenarios/ai-sdk-instrumentation/scenario.test.ts index fb2fa4f63..ace08be82 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/scenario.test.ts +++ b/e2e/scenarios/ai-sdk-instrumentation/scenario.test.ts @@ -90,6 +90,7 @@ describeVariants("variants", () => { scenario.supportsProviderCacheAssertions, supportsDenyOutputOverrideScenario, supportsEmbedMany: scenario.supportsEmbedMany !== false, + supportsEvaluate: scenario.supportsEvaluate === true, supportsGenerateObject: scenario.supportsGenerateObject, supportsGenerateImage: scenario.supportsGenerateImage ?? sdkMajorVersion >= 5, @@ -146,6 +147,7 @@ describeVariants("variants", () => { scenario.supportsProviderCacheAssertions, supportsDenyOutputOverrideScenario, supportsEmbedMany: scenario.supportsEmbedMany !== false, + supportsEvaluate: scenario.supportsEvaluate === true, supportsGenerateObject: scenario.supportsGenerateObject, supportsGenerateImage: scenario.supportsGenerateImage ?? sdkMajorVersion >= 5, diff --git a/js/src/auto-instrumentations/configs/ai-sdk.ts b/js/src/auto-instrumentations/configs/ai-sdk.ts index 8959b0f2f..025d92028 100644 --- a/js/src/auto-instrumentations/configs/ai-sdk.ts +++ b/js/src/auto-instrumentations/configs/ai-sdk.ts @@ -16,6 +16,20 @@ import { * "orchestrion:ai-sdk:generateText" */ export const aiSDKConfigs: InstrumentationConfig[] = [ + // Evaluation does not emit v7 telemetry callbacks. Instrument its public export. + { + channelName: aiSDKChannels.evaluate.channelName, + module: { + name: "ai", + versionRange: ">=7.0.105 <8.0.0", + filePath: "dist/index.js", + }, + functionQuery: { + functionName: "experimental_evaluate", + isExportAlias: true, + kind: "Async", + }, + }, // HarnessAgent turn methods are published only from the package's ESM // `./agent` entrypoint. Target the class binding so similarly named getters // on stream result classes are not mistaken for agent turn methods. diff --git a/js/src/instrumentation/plugins/ai-sdk-channels.ts b/js/src/instrumentation/plugins/ai-sdk-channels.ts index ea3f4a880..74fb4223b 100644 --- a/js/src/instrumentation/plugins/ai-sdk-channels.ts +++ b/js/src/instrumentation/plugins/ai-sdk-channels.ts @@ -3,6 +3,8 @@ import { INSTRUMENTATION_NAMES } from "../../span-origin"; import type { ChannelSpanInfo } from "../core/types"; import type { AISDK, + AISDKEvaluateParams, + AISDKEvaluationResult, AISDKCallParams, AISDKEmbedParams, AISDKEmbeddingResult, @@ -30,6 +32,14 @@ type AISDKChannelContext = { export const aiSDKChannels = defineChannels( "ai", { + evaluate: channel< + [AISDKEvaluateParams], + AISDKEvaluationResult, + AISDKChannelContext + >({ + channelName: "evaluate", + kind: "async", + }), generateText: channel< [AISDKCallParams], AISDKStreamResult, diff --git a/js/src/instrumentation/plugins/ai-sdk-plugin.ts b/js/src/instrumentation/plugins/ai-sdk-plugin.ts index bfe41694c..e981861d8 100644 --- a/js/src/instrumentation/plugins/ai-sdk-plugin.ts +++ b/js/src/instrumentation/plugins/ai-sdk-plugin.ts @@ -19,6 +19,7 @@ import { _internalStartSpanWithInitialMerge, Attachment, currentSpan, + startSpan, type Span, withCurrent, } from "../../logger"; @@ -50,6 +51,10 @@ import { import { zodToJsonSchema } from "../../zod/utils"; import { aiSDKChannels, harnessAgentChannels } from "./ai-sdk-channels"; import { currentCloudflareThinkSpan } from "./cloudflare-think-context"; +import { + isAutoInstrumentationSuppressed, + runWithAutoInstrumentationSuppressed, +} from "../auto-instrumentation-suppression"; import type { AISDK, AISDKCallParams, @@ -196,6 +201,7 @@ export class AISDKPlugin extends BasePlugin { this.config.denyOutputPaths || DEFAULT_DENY_OUTPUT_PATHS; this.unsubscribers.push(interceptAISDKV7TelemetryDispatcher()); + this.unsubscribers.push(interceptAISDKEvaluate(denyOutputPaths)); this.unsubscribers.push(subscribeToHarnessAgentCreateSession()); this.unsubscribers.push( subscribeToHarnessContinuation( @@ -678,6 +684,100 @@ export class AISDKPlugin extends BasePlugin { } } +function interceptAISDKEvaluate(defaultDenyOutputPaths: string[]): () => void { + return aiSDKChannels.evaluate.intercept( + (target, thisArg, args, additional) => { + if (isAutoInstrumentationSuppressed()) { + return Reflect.apply(target, thisArg, args); + } + + let span: Span; + let denyOutputPaths: string[]; + try { + const params = args[0]; + const spanInfo = additional.span_info; + denyOutputPaths = resolveDenyOutputPaths( + { ...additional, arguments: args }, + defaultDenyOutputPaths, + ); + span = startSpan( + withSpanInstrumentationName( + { + name: spanInfo?.name ?? "evaluate", + spanAttributes: { + type: SpanTypeAttribute.LLM, + ...spanInfo?.spanAttributes, + }, + event: { + input: { state: params.state, questions: params.questions }, + metadata: { + ...extractBaseMetadata(params.model), + ...spanInfo?.metadata, + }, + }, + }, + INSTRUMENTATION_NAMES.AI_SDK, + ), + ); + } catch (error) { + debugLogger.error("Error starting span for evaluate:", error); + return Reflect.apply(target, thisArg, args); + } + + const finish = (log: () => void) => { + try { + log(); + } catch (error) { + debugLogger.error("Error logging span for evaluate:", error); + } + try { + span.end(); + } catch (error) { + debugLogger.error("Error ending span for evaluate:", error); + } + }; + + try { + const result = withCurrent(span, () => + runWithAutoInstrumentationSuppressed(() => + Reflect.apply(target, thisArg, args), + ), + ); + void Promise.resolve(result).then( + (value) => + finish(() => { + const confidence = value.providerMetadata?.typesafe?.confidence; + const resolvedModel = value.response?.modelId; + span.log({ + output: omit(value.answers, denyOutputPaths), + metrics: extractTokenMetrics({ + usage: { + promptTokens: value.usage?.inputTokens, + completionTokens: value.usage?.outputTokens, + totalTokens: value.usage?.totalTokens, + }, + }), + metadata: { + ...(resolvedModel + ? { model: serializeModelWithProvider(resolvedModel).model } + : {}), + ...(confidence + ? { providerMetadata: { typesafe: { confidence } } } + : {}), + }, + }); + }), + (error) => finish(() => span.log({ error })), + ); + return result; + } catch (error) { + finish(() => span.log({ error })); + throw error; + } + }, + ); +} + function subscribeToHarnessAgentCreateSession(): () => void { const channel = harnessAgentChannels.createSession.tracingChannel(); const parents = new WeakMap(); diff --git a/js/src/vendor-sdk-types/ai-sdk-common.ts b/js/src/vendor-sdk-types/ai-sdk-common.ts index 5c8d406ba..fea4c9f69 100644 --- a/js/src/vendor-sdk-types/ai-sdk-common.ts +++ b/js/src/vendor-sdk-types/ai-sdk-common.ts @@ -79,6 +79,30 @@ export interface AISDKGeneratedFile { [key: string]: unknown; } +export interface AISDKEvaluateParams { + model: string | { modelId: string; provider: string }; + state: unknown; + questions: Record; + [key: string]: unknown; +} + +export interface AISDKEvaluationResult { + answers: Record; + usage?: { + inputTokens?: number; + outputTokens?: number; + totalTokens?: number; + }; + response?: { modelId?: string }; + providerMetadata?: { + typesafe?: { confidence?: Record }; + }; +} + +export type AISDKEvaluateFunction = ( + params: AISDKEvaluateParams, +) => Promise; + export interface AISDKGenerateImageParams extends Omit< AISDKCallParams, "prompt" @@ -370,6 +394,7 @@ export interface AISDKProviderResolver { } export interface AISDKNamespaceBase { + experimental_evaluate?: AISDKEvaluateFunction; generateText: AISDKGenerateFunction; generateImage?: AISDKGenerateImageFunction; experimental_generateImage?: AISDKGenerateImageFunction; diff --git a/js/src/vendor-sdk-types/ai-sdk.ts b/js/src/vendor-sdk-types/ai-sdk.ts index 4f36a0d22..917b29908 100644 --- a/js/src/vendor-sdk-types/ai-sdk.ts +++ b/js/src/vendor-sdk-types/ai-sdk.ts @@ -1,4 +1,7 @@ import type { + AISDKEvaluateFunction, + AISDKEvaluateParams, + AISDKEvaluationResult, AISDKAgentClass, AISDKAgentInstance, AISDKCallParams, @@ -46,6 +49,9 @@ export type AISDKVersion = export type AISDK = AISDKVersion["sdk"]; export type { + AISDKEvaluateFunction, + AISDKEvaluateParams, + AISDKEvaluationResult, AISDKAgentClass, AISDKAgentInstance, AISDKCallParams, diff --git a/js/src/wrappers/ai-sdk-evaluate.test.ts b/js/src/wrappers/ai-sdk-evaluate.test.ts new file mode 100644 index 000000000..aed879596 --- /dev/null +++ b/js/src/wrappers/ai-sdk-evaluate.test.ts @@ -0,0 +1,244 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable @typescript-eslint/consistent-type-assertions */ +import { afterEach, beforeEach, describe, expect, test, vi } from "vitest"; +import { + _exportsForTestingOnly, + initLogger, + traced, + type TestBackgroundLogger, +} from "../logger"; +import { configureNode } from "../node/config"; +import { aiSDKChannels } from "../instrumentation/plugins/ai-sdk-channels"; +import { registry } from "../instrumentation/registry"; +import { runWithAutoInstrumentationSuppressed } from "../instrumentation/auto-instrumentation-suppression"; +import type { + AISDKEvaluateParams, + AISDKEvaluationResult, +} from "../vendor-sdk-types/ai-sdk"; +import { wrapAISDK } from "./ai-sdk/ai-sdk"; + +configureNode(); + +const params: AISDKEvaluateParams = { + model: "typesafe-ai/jev", + state: { message: "Charged twice" }, + questions: { + category: { + type: "choice", + instructions: "Which team should handle this request?", + criteria: { billing: null, technical: null }, + }, + urgency: { + type: "score", + instructions: "How urgent is this request?", + criteria: ["Low", "High"], + }, + duplicate: { + type: "boolean", + instructions: "Was there a duplicate charge?", + }, + }, +}; + +const result: AISDKEvaluationResult = { + answers: { + category: { + type: "choice", + choice: "billing", + probabilities: { billing: 0.9, technical: 0.1 }, + }, + urgency: { + type: "score", + score: 0.75, + probabilities: { 0: 0.25, 1: 0.75 }, + }, + duplicate: { type: "boolean", probability: 0.95 }, + }, + usage: { inputTokens: 20, outputTokens: 5, totalTokens: 25 }, + response: { modelId: "typesafe-ai/jev-1.13.0" }, + providerMetadata: { + typesafe: { confidence: { category: 0.9, urgency: 0.8 } }, + }, +}; + +describe("AI SDK evaluate instrumentation", () => { + let backgroundLogger: TestBackgroundLogger; + + beforeEach(async () => { + await _exportsForTestingOnly.simulateLoginForTests(); + backgroundLogger = _exportsForTestingOnly.useTestBackgroundLogger(); + initLogger({ + projectName: "ai-sdk-evaluate.test.ts", + projectId: "test-project-id", + }); + }); + + afterEach(() => { + _exportsForTestingOnly.clearTestBackgroundLogger(); + vi.restoreAllMocks(); + }); + + test("captures native answers, allowlisted metadata, usage, and parent context", async () => { + const response = { + ...result, + providerMetadata: { + ...result.providerMetadata, + privateProvider: { secret: "not logged" }, + }, + }; + const original = Promise.resolve(response); + const evaluate = vi.fn((_params: AISDKEvaluateParams) => original); + const wrapped = wrapAISDK({ experimental_evaluate: evaluate }); + await traced( + async () => { + const promise = wrapped.experimental_evaluate(params); + expect(promise).toBe(original); + expect(await promise).toBe(response); + }, + { name: "parent" }, + ); + + expect(evaluate).toHaveBeenCalledExactlyOnceWith(params); + const spans = (await backgroundLogger.drain()) as Record[]; + expect(spans).toHaveLength(2); + const parent = spans.find( + (span) => span.span_attributes?.name === "parent", + ); + const span = spans.find( + (span) => span.span_attributes?.name === "evaluate", + ); + expect(span).toMatchObject({ + span_attributes: { name: "evaluate", type: "llm" }, + span_parents: [parent?.span_id], + input: { state: params.state, questions: params.questions }, + output: result.answers, + metadata: { + model: "jev-1.13.0", + provider: "typesafe-ai", + providerMetadata: result.providerMetadata, + }, + metrics: { prompt_tokens: 20, completion_tokens: 5, tokens: 25 }, + }); + expect(span?.metadata?.providerMetadata).not.toHaveProperty( + "privateProvider", + ); + }); + + test("applies output filtering and span overrides without changing results", async () => { + const evaluate = vi.fn(async (_params: AISDKEvaluateParams) => result); + const wrapped = wrapAISDK( + { experimental_evaluate: evaluate }, + { + denyOutputPaths: ["category.probabilities"], + }, + ); + expect( + await wrapped.experimental_evaluate({ + ...params, + span_info: { name: "decision", metadata: { customer: "test" } }, + }), + ).toBe(result); + expect(evaluate.mock.calls[0][0]).not.toHaveProperty("span_info"); + const [span] = (await backgroundLogger.drain()) as Record[]; + expect(span).toMatchObject({ + span_attributes: { name: "decision" }, + metadata: { customer: "test" }, + }); + expect(span.output).toMatchObject({ + category: { probabilities: "" }, + }); + expect(result.answers.category).toHaveProperty("probabilities", { + billing: 0.9, + technical: 0.1, + }); + }); + + test("deduplicates nested wrappers and automatic hooks", async () => { + const evaluate = vi.fn(async (_params: AISDKEvaluateParams) => result); + const autoInstrumented = { + experimental_evaluate: (params: AISDKEvaluateParams) => + aiSDKChannels.evaluate.invoke(evaluate, undefined, [params], {}), + }; + await wrapAISDK(wrapAISDK(autoInstrumented)).experimental_evaluate(params); + expect(evaluate).toHaveBeenCalledOnce(); + expect(await backgroundLogger.drain()).toHaveLength(1); + }); + + test("preserves calls while disabled and resumes without duplicate subscriptions", async () => { + const original = Promise.resolve(result); + const wrapped = wrapAISDK({ + experimental_evaluate: (_params: AISDKEvaluateParams) => original, + }); + registry.disable(); + registry.disable(); + try { + expect(wrapped.experimental_evaluate(params)).toBe(original); + await original; + expect(await backgroundLogger.drain()).toHaveLength(0); + } finally { + registry.enable(); + registry.enable(); + } + await wrapped.experimental_evaluate(params); + expect(await backgroundLogger.drain()).toHaveLength(1); + }); + + test.each([false, true])( + "preserves errors (synchronous: %s)", + async (synchronous) => { + const error = new Error("Evaluation failed"); + const evaluate = (_params: AISDKEvaluateParams) => { + if (synchronous) throw error; + return Promise.reject(error); + }; + const wrapped = wrapAISDK({ experimental_evaluate: evaluate }); + if (synchronous) { + expect(() => wrapped.experimental_evaluate(params)).toThrow(error); + } else { + await expect(wrapped.experimental_evaluate(params)).rejects.toBe(error); + } + const [span] = (await backgroundLogger.drain()) as Record[]; + expect(span.error).toContain("Evaluation failed"); + expect(span.metrics?.end).toEqual(expect.any(Number)); + }, + ); + + test("omits unavailable usage and respects suppression", async () => { + const wrapped = wrapAISDK({ + experimental_evaluate: async (_params: AISDKEvaluateParams) => ({ + answers: {}, + }), + }); + await wrapped.experimental_evaluate({ + ...params, + model: { modelId: "custom", provider: "custom-provider" }, + }); + await runWithAutoInstrumentationSuppressed(() => + wrapped.experimental_evaluate(params), + ); + const spans = (await backgroundLogger.drain()) as Record[]; + expect(spans).toHaveLength(1); + expect(spans[0].metadata).toMatchObject({ + model: "custom", + provider: "custom-provider", + }); + expect(spans[0].metrics).not.toHaveProperty("tokens"); + }); + + test("contains extraction failures and preserves older SDK namespaces", async () => { + expect( + wrapAISDK({ experimental_evaluate: undefined }).experimental_evaluate, + ).toBeUndefined(); + const malformed = { + get answers(): never { + throw new Error("Unreadable answers"); + }, + }; + const wrapped = wrapAISDK({ + experimental_evaluate: async (_params: AISDKEvaluateParams) => malformed, + }); + expect(await wrapped.experimental_evaluate(params)).toBe(malformed); + const [span] = (await backgroundLogger.drain()) as Record[]; + expect(span.metrics?.end).toEqual(expect.any(Number)); + }); +}); diff --git a/js/src/wrappers/ai-sdk/ai-sdk.ts b/js/src/wrappers/ai-sdk/ai-sdk.ts index 1173a0e0d..d543e6a37 100644 --- a/js/src/wrappers/ai-sdk/ai-sdk.ts +++ b/js/src/wrappers/ai-sdk/ai-sdk.ts @@ -12,6 +12,7 @@ import type { AISDKCallParams, AISDKEmbedFunction, AISDKEmbedParams, + AISDKEvaluateParams, AISDKGenerateImageFunction, AISDKGenerateImageParams, AISDKGenerateFunction, @@ -126,6 +127,21 @@ export function wrapAISDK(aiSDK: T, options: WrapAISDKOptions = {}): T { get(target, prop, receiver) { const original = Reflect.get(target, prop, receiver); switch (prop) { + case "experimental_evaluate": { + const evaluate = typedAISDK.experimental_evaluate; + return typeof evaluate === "function" + ? function ( + this: unknown, + allParams: AISDKEvaluateParams & SpanInfo, + ) { + const { span_info, ...params } = allParams; + return aiSDKChannels.evaluate.invoke(evaluate, this, [params], { + denyOutputPaths: options.denyOutputPaths, + span_info, + }); + } + : original; + } case "generateText": return wrapGenerateText(typedAISDK.generateText, options, typedAISDK); case "generateImage": From 6b48fc6ae9fcdfd8047599bf075c481884a93044 Mon Sep 17 00:00:00 2001 From: lforst <8118419+lforst@users.noreply.github.com> Date: Thu, 17 Sep 2026 11:56:47 +0000 Subject: [PATCH 2/5] fix: address instrumentation CI failures --- .changeset/ai-sdk-evaluate.md | 5 +++++ js/src/vendor-sdk-types/ai-sdk.ts | 2 -- 2 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 .changeset/ai-sdk-evaluate.md diff --git a/.changeset/ai-sdk-evaluate.md b/.changeset/ai-sdk-evaluate.md new file mode 100644 index 000000000..98865ae40 --- /dev/null +++ b/.changeset/ai-sdk-evaluate.md @@ -0,0 +1,5 @@ +--- +"braintrust": minor +--- + +feat: Add AI SDK instrumentation for typesafe ai jev diff --git a/js/src/vendor-sdk-types/ai-sdk.ts b/js/src/vendor-sdk-types/ai-sdk.ts index 917b29908..b2c783b5d 100644 --- a/js/src/vendor-sdk-types/ai-sdk.ts +++ b/js/src/vendor-sdk-types/ai-sdk.ts @@ -1,5 +1,4 @@ import type { - AISDKEvaluateFunction, AISDKEvaluateParams, AISDKEvaluationResult, AISDKAgentClass, @@ -49,7 +48,6 @@ export type AISDKVersion = export type AISDK = AISDKVersion["sdk"]; export type { - AISDKEvaluateFunction, AISDKEvaluateParams, AISDKEvaluationResult, AISDKAgentClass, From 55c631e197c64f453f7b273c78063601a9233348 Mon Sep 17 00:00:00 2001 From: lforst <8118419+lforst@users.noreply.github.com> Date: Thu, 17 Sep 2026 12:39:32 +0000 Subject: [PATCH 3/5] fix: conform AI SDK evaluate traces to question spans --- .../ai-sdk-v7-auto-hook.span-tree.json | 80 ++++++++++--------- .../ai-sdk-v7-auto-hook.span-tree.txt | 78 +++++++++--------- .../ai-sdk-v7-explicit.span-tree.json | 80 ++++++++++--------- .../ai-sdk-v7-explicit.span-tree.txt | 78 +++++++++--------- .../ai-sdk-v7-latest-auto-hook.span-tree.json | 80 ++++++++++--------- .../ai-sdk-v7-latest-auto-hook.span-tree.txt | 78 +++++++++--------- .../ai-sdk-v7-latest-explicit.span-tree.json | 80 ++++++++++--------- .../ai-sdk-v7-latest-explicit.span-tree.txt | 78 +++++++++--------- .../ai-sdk-instrumentation/assertions.ts | 55 ++++++++----- .../instrumentation/plugins/ai-sdk-plugin.ts | 39 ++++++++- js/src/wrappers/ai-sdk-evaluate.test.ts | 40 ++++++++-- 11 files changed, 446 insertions(+), 320 deletions(-) diff --git a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-auto-hook.span-tree.json b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-auto-hook.span-tree.json index d04da8897..19e4565fa 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-auto-hook.span-tree.json +++ b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-auto-hook.span-tree.json @@ -9,11 +9,11 @@ "children": [ { "name": "evaluate", - "type": "llm", + "type": "question", "children": [], "input": { - "questions": { - "category": { + "questions": [ + { "criteria": { "billing": "Payments and refunds", "technical": "Software problems" @@ -21,11 +21,7 @@ "instructions": "Which team should handle this request?", "type": "choice" }, - "duplicate": { - "instructions": "Does the customer report a duplicate charge?", - "type": "boolean" - }, - "urgency": { + { "criteria": [ "Low", "Medium", @@ -33,34 +29,42 @@ ], "instructions": "How urgent is this request?", "type": "score" + }, + { + "instructions": "Does the customer report a duplicate charge?", + "type": "boolean" } - }, + ], "state": { "message": "I was charged twice for my subscription. Please refund the duplicate charge." } }, "output": { - "category": { - "choice": "billing", - "probabilities": { - "billing": 1, - "technical": 0 + "answers": [ + { + "choice": "billing", + "confidence": 1, + "probabilities": { + "billing": 1, + "technical": 0 + }, + "type": "choice" }, - "type": "choice" - }, - "duplicate": { - "probability": 0.99, - "type": "boolean" - }, - "urgency": { - "probabilities": { - "0": 0.03, - "1": 0.84, - "2": 0.13 - }, - "score": 1.1, - "type": "score" - } + { + "probability": 0.99, + "type": "boolean" + }, + { + "confidence": 0.76, + "probabilities": { + "0": 0.03, + "1": 0.84, + "2": 0.13 + }, + "score": 1.1, + "type": "score" + } + ] }, "metadata": { "braintrust": { @@ -95,22 +99,24 @@ "children": [ { "name": "evaluate", - "type": "llm", + "type": "question", "children": [], "input": { - "questions": { - "positive": { + "questions": [ + { "instructions": "Was the delivery successful?", "type": "boolean" } - }, + ], "state": "The package arrived intact and on time." }, "output": { - "positive": { - "probability": 0.98, - "type": "boolean" - } + "answers": [ + { + "probability": 0.98, + "type": "boolean" + } + ] }, "metadata": { "braintrust": { diff --git a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-auto-hook.span-tree.txt b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-auto-hook.span-tree.txt index 4ff0655c2..612b6982b 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-auto-hook.span-tree.txt +++ b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-auto-hook.span-tree.txt @@ -11,10 +11,10 @@ span_tree: │ "operation": "evaluate", │ "testRunId": "" │ } - │ └── evaluate [llm] + │ └── evaluate [question] │ input: { - │ "questions": { - │ "category": { + │ "questions": [ + │ { │ "criteria": { │ "billing": "Payments and refunds", │ "technical": "Software problems" @@ -22,11 +22,7 @@ span_tree: │ "instructions": "Which team should handle this request?", │ "type": "choice" │ }, - │ "duplicate": { - │ "instructions": "Does the customer report a duplicate charge?", - │ "type": "boolean" - │ }, - │ "urgency": { + │ { │ "criteria": [ │ "Low", │ "Medium", @@ -34,34 +30,42 @@ span_tree: │ ], │ "instructions": "How urgent is this request?", │ "type": "score" + │ }, + │ { + │ "instructions": "Does the customer report a duplicate charge?", + │ "type": "boolean" │ } - │ }, + │ ], │ "state": { │ "message": "I was charged twice for my subscription. Please refund the duplicate charge." │ } │ } │ output: { - │ "category": { - │ "choice": "billing", - │ "probabilities": { - │ "billing": 1, - │ "technical": 0 + │ "answers": [ + │ { + │ "choice": "billing", + │ "confidence": 1, + │ "probabilities": { + │ "billing": 1, + │ "technical": 0 + │ }, + │ "type": "choice" │ }, - │ "type": "choice" - │ }, - │ "duplicate": { - │ "probability": 0.99, - │ "type": "boolean" - │ }, - │ "urgency": { - │ "probabilities": { - │ "0": 0.03, - │ "1": 0.84, - │ "2": 0.13 + │ { + │ "probability": 0.99, + │ "type": "boolean" │ }, - │ "score": 1.1, - │ "type": "score" - │ } + │ { + │ "confidence": 0.76, + │ "probabilities": { + │ "0": 0.03, + │ "1": 0.84, + │ "2": 0.13 + │ }, + │ "score": 1.1, + │ "type": "score" + │ } + │ ] │ } │ metadata: { │ "braintrust": { @@ -89,21 +93,23 @@ span_tree: │ "operation": "evaluate-string", │ "testRunId": "" │ } - │ └── evaluate [llm] + │ └── evaluate [question] │ input: { - │ "questions": { - │ "positive": { + │ "questions": [ + │ { │ "instructions": "Was the delivery successful?", │ "type": "boolean" │ } - │ }, + │ ], │ "state": "The package arrived intact and on time." │ } │ output: { - │ "positive": { - │ "probability": 0.98, - │ "type": "boolean" - │ } + │ "answers": [ + │ { + │ "probability": 0.98, + │ "type": "boolean" + │ } + │ ] │ } │ metadata: { │ "braintrust": { diff --git a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-explicit.span-tree.json b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-explicit.span-tree.json index 66d751d51..3f4184dee 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-explicit.span-tree.json +++ b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-explicit.span-tree.json @@ -9,11 +9,11 @@ "children": [ { "name": "evaluate", - "type": "llm", + "type": "question", "children": [], "input": { - "questions": { - "category": { + "questions": [ + { "criteria": { "billing": "Payments and refunds", "technical": "Software problems" @@ -21,11 +21,7 @@ "instructions": "Which team should handle this request?", "type": "choice" }, - "duplicate": { - "instructions": "Does the customer report a duplicate charge?", - "type": "boolean" - }, - "urgency": { + { "criteria": [ "Low", "Medium", @@ -33,34 +29,42 @@ ], "instructions": "How urgent is this request?", "type": "score" + }, + { + "instructions": "Does the customer report a duplicate charge?", + "type": "boolean" } - }, + ], "state": { "message": "I was charged twice for my subscription. Please refund the duplicate charge." } }, "output": { - "category": { - "choice": "billing", - "probabilities": { - "billing": 1, - "technical": 0 + "answers": [ + { + "choice": "billing", + "confidence": 1, + "probabilities": { + "billing": 1, + "technical": 0 + }, + "type": "choice" }, - "type": "choice" - }, - "duplicate": { - "probability": 0.99, - "type": "boolean" - }, - "urgency": { - "probabilities": { - "0": 0.03, - "1": 0.84, - "2": 0.13 - }, - "score": 1.1, - "type": "score" - } + { + "probability": 0.99, + "type": "boolean" + }, + { + "confidence": 0.76, + "probabilities": { + "0": 0.03, + "1": 0.84, + "2": 0.13 + }, + "score": 1.1, + "type": "score" + } + ] }, "metadata": { "braintrust": { @@ -95,22 +99,24 @@ "children": [ { "name": "evaluate", - "type": "llm", + "type": "question", "children": [], "input": { - "questions": { - "positive": { + "questions": [ + { "instructions": "Was the delivery successful?", "type": "boolean" } - }, + ], "state": "The package arrived intact and on time." }, "output": { - "positive": { - "probability": 0.98, - "type": "boolean" - } + "answers": [ + { + "probability": 0.98, + "type": "boolean" + } + ] }, "metadata": { "braintrust": { diff --git a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-explicit.span-tree.txt b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-explicit.span-tree.txt index 8e4716641..8e900a48e 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-explicit.span-tree.txt +++ b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-explicit.span-tree.txt @@ -11,10 +11,10 @@ span_tree: │ "operation": "evaluate", │ "testRunId": "" │ } - │ └── evaluate [llm] + │ └── evaluate [question] │ input: { - │ "questions": { - │ "category": { + │ "questions": [ + │ { │ "criteria": { │ "billing": "Payments and refunds", │ "technical": "Software problems" @@ -22,11 +22,7 @@ span_tree: │ "instructions": "Which team should handle this request?", │ "type": "choice" │ }, - │ "duplicate": { - │ "instructions": "Does the customer report a duplicate charge?", - │ "type": "boolean" - │ }, - │ "urgency": { + │ { │ "criteria": [ │ "Low", │ "Medium", @@ -34,34 +30,42 @@ span_tree: │ ], │ "instructions": "How urgent is this request?", │ "type": "score" + │ }, + │ { + │ "instructions": "Does the customer report a duplicate charge?", + │ "type": "boolean" │ } - │ }, + │ ], │ "state": { │ "message": "I was charged twice for my subscription. Please refund the duplicate charge." │ } │ } │ output: { - │ "category": { - │ "choice": "billing", - │ "probabilities": { - │ "billing": 1, - │ "technical": 0 + │ "answers": [ + │ { + │ "choice": "billing", + │ "confidence": 1, + │ "probabilities": { + │ "billing": 1, + │ "technical": 0 + │ }, + │ "type": "choice" │ }, - │ "type": "choice" - │ }, - │ "duplicate": { - │ "probability": 0.99, - │ "type": "boolean" - │ }, - │ "urgency": { - │ "probabilities": { - │ "0": 0.03, - │ "1": 0.84, - │ "2": 0.13 + │ { + │ "probability": 0.99, + │ "type": "boolean" │ }, - │ "score": 1.1, - │ "type": "score" - │ } + │ { + │ "confidence": 0.76, + │ "probabilities": { + │ "0": 0.03, + │ "1": 0.84, + │ "2": 0.13 + │ }, + │ "score": 1.1, + │ "type": "score" + │ } + │ ] │ } │ metadata: { │ "braintrust": { @@ -89,21 +93,23 @@ span_tree: │ "operation": "evaluate-string", │ "testRunId": "" │ } - │ └── evaluate [llm] + │ └── evaluate [question] │ input: { - │ "questions": { - │ "positive": { + │ "questions": [ + │ { │ "instructions": "Was the delivery successful?", │ "type": "boolean" │ } - │ }, + │ ], │ "state": "The package arrived intact and on time." │ } │ output: { - │ "positive": { - │ "probability": 0.98, - │ "type": "boolean" - │ } + │ "answers": [ + │ { + │ "probability": 0.98, + │ "type": "boolean" + │ } + │ ] │ } │ metadata: { │ "braintrust": { diff --git a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-auto-hook.span-tree.json b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-auto-hook.span-tree.json index 12a6c4039..b2a344c03 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-auto-hook.span-tree.json +++ b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-auto-hook.span-tree.json @@ -9,11 +9,11 @@ "children": [ { "name": "evaluate", - "type": "llm", + "type": "question", "children": [], "input": { - "questions": { - "category": { + "questions": [ + { "criteria": { "billing": "Payments and refunds", "technical": "Software problems" @@ -21,11 +21,7 @@ "instructions": "Which team should handle this request?", "type": "choice" }, - "duplicate": { - "instructions": "Does the customer report a duplicate charge?", - "type": "boolean" - }, - "urgency": { + { "criteria": [ "Low", "Medium", @@ -33,34 +29,42 @@ ], "instructions": "How urgent is this request?", "type": "score" + }, + { + "instructions": "Does the customer report a duplicate charge?", + "type": "boolean" } - }, + ], "state": { "message": "I was charged twice for my subscription. Please refund the duplicate charge." } }, "output": { - "category": { - "choice": "billing", - "probabilities": { - "billing": 1, - "technical": 0 + "answers": [ + { + "choice": "billing", + "confidence": 1, + "probabilities": { + "billing": 1, + "technical": 0 + }, + "type": "choice" }, - "type": "choice" - }, - "duplicate": { - "probability": 0.99, - "type": "boolean" - }, - "urgency": { - "probabilities": { - "0": 0.03, - "1": 0.82, - "2": 0.15 - }, - "score": 1.12, - "type": "score" - } + { + "probability": 0.99, + "type": "boolean" + }, + { + "confidence": 0.74, + "probabilities": { + "0": 0.03, + "1": 0.82, + "2": 0.15 + }, + "score": 1.12, + "type": "score" + } + ] }, "metadata": { "braintrust": { @@ -95,22 +99,24 @@ "children": [ { "name": "evaluate", - "type": "llm", + "type": "question", "children": [], "input": { - "questions": { - "positive": { + "questions": [ + { "instructions": "Was the delivery successful?", "type": "boolean" } - }, + ], "state": "The package arrived intact and on time." }, "output": { - "positive": { - "probability": 0.97, - "type": "boolean" - } + "answers": [ + { + "probability": 0.97, + "type": "boolean" + } + ] }, "metadata": { "braintrust": { diff --git a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-auto-hook.span-tree.txt b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-auto-hook.span-tree.txt index 03cb1cfbe..46a20b003 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-auto-hook.span-tree.txt +++ b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-auto-hook.span-tree.txt @@ -10,10 +10,10 @@ span_tree: │ "operation": "evaluate", │ "testRunId": "" │ } - │ └── evaluate [llm] + │ └── evaluate [question] │ input: { - │ "questions": { - │ "category": { + │ "questions": [ + │ { │ "criteria": { │ "billing": "Payments and refunds", │ "technical": "Software problems" @@ -21,11 +21,7 @@ span_tree: │ "instructions": "Which team should handle this request?", │ "type": "choice" │ }, - │ "duplicate": { - │ "instructions": "Does the customer report a duplicate charge?", - │ "type": "boolean" - │ }, - │ "urgency": { + │ { │ "criteria": [ │ "Low", │ "Medium", @@ -33,34 +29,42 @@ span_tree: │ ], │ "instructions": "How urgent is this request?", │ "type": "score" + │ }, + │ { + │ "instructions": "Does the customer report a duplicate charge?", + │ "type": "boolean" │ } - │ }, + │ ], │ "state": { │ "message": "I was charged twice for my subscription. Please refund the duplicate charge." │ } │ } │ output: { - │ "category": { - │ "choice": "billing", - │ "probabilities": { - │ "billing": 1, - │ "technical": 0 + │ "answers": [ + │ { + │ "choice": "billing", + │ "confidence": 1, + │ "probabilities": { + │ "billing": 1, + │ "technical": 0 + │ }, + │ "type": "choice" │ }, - │ "type": "choice" - │ }, - │ "duplicate": { - │ "probability": 0.99, - │ "type": "boolean" - │ }, - │ "urgency": { - │ "probabilities": { - │ "0": 0.03, - │ "1": 0.82, - │ "2": 0.15 + │ { + │ "probability": 0.99, + │ "type": "boolean" │ }, - │ "score": 1.12, - │ "type": "score" - │ } + │ { + │ "confidence": 0.74, + │ "probabilities": { + │ "0": 0.03, + │ "1": 0.82, + │ "2": 0.15 + │ }, + │ "score": 1.12, + │ "type": "score" + │ } + │ ] │ } │ metadata: { │ "braintrust": { @@ -88,21 +92,23 @@ span_tree: │ "operation": "evaluate-string", │ "testRunId": "" │ } - │ └── evaluate [llm] + │ └── evaluate [question] │ input: { - │ "questions": { - │ "positive": { + │ "questions": [ + │ { │ "instructions": "Was the delivery successful?", │ "type": "boolean" │ } - │ }, + │ ], │ "state": "The package arrived intact and on time." │ } │ output: { - │ "positive": { - │ "probability": 0.97, - │ "type": "boolean" - │ } + │ "answers": [ + │ { + │ "probability": 0.97, + │ "type": "boolean" + │ } + │ ] │ } │ metadata: { │ "braintrust": { diff --git a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-explicit.span-tree.json b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-explicit.span-tree.json index 12a6c4039..b2a344c03 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-explicit.span-tree.json +++ b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-explicit.span-tree.json @@ -9,11 +9,11 @@ "children": [ { "name": "evaluate", - "type": "llm", + "type": "question", "children": [], "input": { - "questions": { - "category": { + "questions": [ + { "criteria": { "billing": "Payments and refunds", "technical": "Software problems" @@ -21,11 +21,7 @@ "instructions": "Which team should handle this request?", "type": "choice" }, - "duplicate": { - "instructions": "Does the customer report a duplicate charge?", - "type": "boolean" - }, - "urgency": { + { "criteria": [ "Low", "Medium", @@ -33,34 +29,42 @@ ], "instructions": "How urgent is this request?", "type": "score" + }, + { + "instructions": "Does the customer report a duplicate charge?", + "type": "boolean" } - }, + ], "state": { "message": "I was charged twice for my subscription. Please refund the duplicate charge." } }, "output": { - "category": { - "choice": "billing", - "probabilities": { - "billing": 1, - "technical": 0 + "answers": [ + { + "choice": "billing", + "confidence": 1, + "probabilities": { + "billing": 1, + "technical": 0 + }, + "type": "choice" }, - "type": "choice" - }, - "duplicate": { - "probability": 0.99, - "type": "boolean" - }, - "urgency": { - "probabilities": { - "0": 0.03, - "1": 0.82, - "2": 0.15 - }, - "score": 1.12, - "type": "score" - } + { + "probability": 0.99, + "type": "boolean" + }, + { + "confidence": 0.74, + "probabilities": { + "0": 0.03, + "1": 0.82, + "2": 0.15 + }, + "score": 1.12, + "type": "score" + } + ] }, "metadata": { "braintrust": { @@ -95,22 +99,24 @@ "children": [ { "name": "evaluate", - "type": "llm", + "type": "question", "children": [], "input": { - "questions": { - "positive": { + "questions": [ + { "instructions": "Was the delivery successful?", "type": "boolean" } - }, + ], "state": "The package arrived intact and on time." }, "output": { - "positive": { - "probability": 0.97, - "type": "boolean" - } + "answers": [ + { + "probability": 0.97, + "type": "boolean" + } + ] }, "metadata": { "braintrust": { diff --git a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-explicit.span-tree.txt b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-explicit.span-tree.txt index 03cb1cfbe..46a20b003 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-explicit.span-tree.txt +++ b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-explicit.span-tree.txt @@ -10,10 +10,10 @@ span_tree: │ "operation": "evaluate", │ "testRunId": "" │ } - │ └── evaluate [llm] + │ └── evaluate [question] │ input: { - │ "questions": { - │ "category": { + │ "questions": [ + │ { │ "criteria": { │ "billing": "Payments and refunds", │ "technical": "Software problems" @@ -21,11 +21,7 @@ span_tree: │ "instructions": "Which team should handle this request?", │ "type": "choice" │ }, - │ "duplicate": { - │ "instructions": "Does the customer report a duplicate charge?", - │ "type": "boolean" - │ }, - │ "urgency": { + │ { │ "criteria": [ │ "Low", │ "Medium", @@ -33,34 +29,42 @@ span_tree: │ ], │ "instructions": "How urgent is this request?", │ "type": "score" + │ }, + │ { + │ "instructions": "Does the customer report a duplicate charge?", + │ "type": "boolean" │ } - │ }, + │ ], │ "state": { │ "message": "I was charged twice for my subscription. Please refund the duplicate charge." │ } │ } │ output: { - │ "category": { - │ "choice": "billing", - │ "probabilities": { - │ "billing": 1, - │ "technical": 0 + │ "answers": [ + │ { + │ "choice": "billing", + │ "confidence": 1, + │ "probabilities": { + │ "billing": 1, + │ "technical": 0 + │ }, + │ "type": "choice" │ }, - │ "type": "choice" - │ }, - │ "duplicate": { - │ "probability": 0.99, - │ "type": "boolean" - │ }, - │ "urgency": { - │ "probabilities": { - │ "0": 0.03, - │ "1": 0.82, - │ "2": 0.15 + │ { + │ "probability": 0.99, + │ "type": "boolean" │ }, - │ "score": 1.12, - │ "type": "score" - │ } + │ { + │ "confidence": 0.74, + │ "probabilities": { + │ "0": 0.03, + │ "1": 0.82, + │ "2": 0.15 + │ }, + │ "score": 1.12, + │ "type": "score" + │ } + │ ] │ } │ metadata: { │ "braintrust": { @@ -88,21 +92,23 @@ span_tree: │ "operation": "evaluate-string", │ "testRunId": "" │ } - │ └── evaluate [llm] + │ └── evaluate [question] │ input: { - │ "questions": { - │ "positive": { + │ "questions": [ + │ { │ "instructions": "Was the delivery successful?", │ "type": "boolean" │ } - │ }, + │ ], │ "state": "The package arrived intact and on time." │ } │ output: { - │ "positive": { - │ "probability": 0.97, - │ "type": "boolean" - │ } + │ "answers": [ + │ { + │ "probability": 0.97, + │ "type": "boolean" + │ } + │ ] │ } │ metadata: { │ "braintrust": { diff --git a/e2e/scenarios/ai-sdk-instrumentation/assertions.ts b/e2e/scenarios/ai-sdk-instrumentation/assertions.ts index 4a3fe0ab0..46487aac3 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/assertions.ts +++ b/e2e/scenarios/ai-sdk-instrumentation/assertions.ts @@ -926,27 +926,37 @@ export function defineAISDKInstrumentationAssertions(options: { const spans = findChildSpans(events, "evaluate", operation?.span.id); expect(spans).toHaveLength(1); const [span] = spans; - expect(span.span.type).toBe("llm"); + expect(span.span.type).toBe("question"); expect(span.input).toMatchObject({ state: { message: expect.any(String) }, - questions: { - category: { type: "choice" }, - urgency: { type: "score" }, - duplicate: { type: "boolean" }, - }, + questions: expect.arrayContaining([ + expect.objectContaining({ id: "category", type: "choice" }), + expect.objectContaining({ id: "urgency", type: "score" }), + expect.objectContaining({ id: "duplicate", type: "boolean" }), + ]), }); expect(span.output).toMatchObject({ - category: { - type: "choice", - choice: expect.any(String), - probabilities: expect.any(Object), - }, - urgency: { - type: "score", - score: expect.any(Number), - probabilities: expect.any(Object), - }, - duplicate: { type: "boolean", probability: expect.any(Number) }, + answers: expect.arrayContaining([ + expect.objectContaining({ + id: "category", + type: "choice", + choice: expect.any(String), + confidence: expect.any(Number), + probabilities: expect.any(Object), + }), + expect.objectContaining({ + id: "urgency", + type: "score", + score: expect.any(Number), + confidence: expect.any(Number), + probabilities: expect.any(Object), + }), + expect.objectContaining({ + id: "duplicate", + type: "boolean", + probability: expect.any(Number), + }), + ]), }); expect(span.row.metadata).toMatchObject({ model: expect.stringMatching(/^jev-/), @@ -971,9 +981,18 @@ export function defineAISDKInstrumentationAssertions(options: { expect(stringSpans).toHaveLength(1); expect(stringSpans[0].input).toMatchObject({ state: "The package arrived intact and on time.", + questions: [ + expect.objectContaining({ id: "positive", type: "boolean" }), + ], }); expect(stringSpans[0].output).toMatchObject({ - positive: { type: "boolean", probability: expect.any(Number) }, + answers: [ + { + id: "positive", + type: "boolean", + probability: expect.any(Number), + }, + ], }); expect(stringSpans[0].row.metadata).toMatchObject({ model: expect.stringMatching(/^jev-/), diff --git a/js/src/instrumentation/plugins/ai-sdk-plugin.ts b/js/src/instrumentation/plugins/ai-sdk-plugin.ts index e981861d8..71d36ea60 100644 --- a/js/src/instrumentation/plugins/ai-sdk-plugin.ts +++ b/js/src/instrumentation/plugins/ai-sdk-plugin.ts @@ -705,11 +705,14 @@ function interceptAISDKEvaluate(defaultDenyOutputPaths: string[]): () => void { { name: spanInfo?.name ?? "evaluate", spanAttributes: { - type: SpanTypeAttribute.LLM, + type: "question", ...spanInfo?.spanAttributes, }, event: { - input: { state: params.state, questions: params.questions }, + input: { + state: params.state, + questions: addEvaluationIds(params.questions), + }, metadata: { ...extractBaseMetadata(params.model), ...spanInfo?.metadata, @@ -749,7 +752,12 @@ function interceptAISDKEvaluate(defaultDenyOutputPaths: string[]): () => void { const confidence = value.providerMetadata?.typesafe?.confidence; const resolvedModel = value.response?.modelId; span.log({ - output: omit(value.answers, denyOutputPaths), + output: omit( + { + answers: addEvaluationIds(value.answers, confidence), + }, + denyOutputPaths, + ), metrics: extractTokenMetrics({ usage: { promptTokens: value.usage?.inputTokens, @@ -778,6 +786,31 @@ function interceptAISDKEvaluate(defaultDenyOutputPaths: string[]): () => void { ); } +function addEvaluationIds( + value: unknown, + confidence: unknown = undefined, +): unknown { + if (!isObject(value)) { + return value; + } + + return Object.entries(value).map(([id, entry]) => { + if (!isObject(entry)) { + return { id, value: entry }; + } + + const answerConfidence = isObject(confidence) ? confidence[id] : undefined; + return { + ...entry, + ...(typeof answerConfidence === "number" && + (entry.type === "choice" || entry.type === "score") + ? { confidence: answerConfidence } + : {}), + id, + }; + }); +} + function subscribeToHarnessAgentCreateSession(): () => void { const channel = harnessAgentChannels.createSession.tracingChannel(); const parents = new WeakMap(); diff --git a/js/src/wrappers/ai-sdk-evaluate.test.ts b/js/src/wrappers/ai-sdk-evaluate.test.ts index aed879596..de6e61a02 100644 --- a/js/src/wrappers/ai-sdk-evaluate.test.ts +++ b/js/src/wrappers/ai-sdk-evaluate.test.ts @@ -108,10 +108,31 @@ describe("AI SDK evaluate instrumentation", () => { (span) => span.span_attributes?.name === "evaluate", ); expect(span).toMatchObject({ - span_attributes: { name: "evaluate", type: "llm" }, + span_attributes: { name: "evaluate", type: "question" }, span_parents: [parent?.span_id], - input: { state: params.state, questions: params.questions }, - output: result.answers, + input: { + state: params.state, + questions: [ + { ...params.questions.category, id: "category" }, + { ...params.questions.urgency, id: "urgency" }, + { ...params.questions.duplicate, id: "duplicate" }, + ], + }, + output: { + answers: [ + { + ...result.answers.category, + confidence: 0.9, + id: "category", + }, + { + ...result.answers.urgency, + confidence: 0.8, + id: "urgency", + }, + { ...result.answers.duplicate, id: "duplicate" }, + ], + }, metadata: { model: "jev-1.13.0", provider: "typesafe-ai", @@ -129,7 +150,7 @@ describe("AI SDK evaluate instrumentation", () => { const wrapped = wrapAISDK( { experimental_evaluate: evaluate }, { - denyOutputPaths: ["category.probabilities"], + denyOutputPaths: ["answers[].probabilities"], }, ); expect( @@ -144,9 +165,14 @@ describe("AI SDK evaluate instrumentation", () => { span_attributes: { name: "decision" }, metadata: { customer: "test" }, }); - expect(span.output).toMatchObject({ - category: { probabilities: "" }, - }); + expect(span.output.answers).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + id: "category", + probabilities: "", + }), + ]), + ); expect(result.answers.category).toHaveProperty("probabilities", { billing: 0.9, technical: 0.1, From f037ddebfebad159fc8c7058a4287b993e3522e7 Mon Sep 17 00:00:00 2001 From: lforst <8118419+lforst@users.noreply.github.com> Date: Thu, 17 Sep 2026 13:19:36 +0000 Subject: [PATCH 4/5] Update PR #2494 --- .../ai-sdk-v7-auto-hook.span-tree.json | 46 +------------ .../ai-sdk-v7-auto-hook.span-tree.txt | 38 +---------- .../ai-sdk-v7-explicit.span-tree.json | 46 +------------ .../ai-sdk-v7-explicit.span-tree.txt | 38 +---------- .../ai-sdk-v7-latest-auto-hook.span-tree.json | 2 +- .../ai-sdk-v7-latest-auto-hook.span-tree.txt | 2 +- .../ai-sdk-v7-latest-explicit.span-tree.json | 2 +- .../ai-sdk-v7-latest-explicit.span-tree.txt | 2 +- .../ai-sdk-instrumentation/assertions.ts | 61 ++++++++--------- .../ai-sdk-instrumentation/package.json | 2 +- .../ai-sdk-instrumentation/pnpm-lock.yaml | 53 ++++++++++++++- .../scenario.ai-sdk-v7-explicit.mjs | 2 + .../scenario.ai-sdk-v7.mjs | 2 + .../scenario.ai-sdk-v7.ts | 2 + .../ai-sdk-instrumentation/scenario.impl.mjs | 65 ++++++++++--------- .../ai-sdk-instrumentation/scenario.test.ts | 10 +++ .../auto-instrumentations/configs/ai-sdk.ts | 2 +- .../instrumentation/plugins/ai-sdk-plugin.ts | 27 +++++--- js/src/vendor-sdk-types/ai-sdk-common.ts | 11 +--- js/src/wrappers/ai-sdk-evaluate.test.ts | 20 +++++- 20 files changed, 180 insertions(+), 253 deletions(-) diff --git a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-auto-hook.span-tree.json b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-auto-hook.span-tree.json index 19e4565fa..1c353c9e4 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-auto-hook.span-tree.json +++ b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-auto-hook.span-tree.json @@ -94,50 +94,6 @@ "testRunId": "" } }, - { - "name": "ai-sdk-evaluate-string-operation", - "children": [ - { - "name": "evaluate", - "type": "question", - "children": [], - "input": { - "questions": [ - { - "instructions": "Was the delivery successful?", - "type": "boolean" - } - ], - "state": "The package arrived intact and on time." - }, - "output": { - "answers": [ - { - "probability": 0.98, - "type": "boolean" - } - ] - }, - "metadata": { - "braintrust": { - "integration_name": "ai-sdk", - "sdk_language": "typescript" - }, - "model": "jev-1.13.0", - "provider": "typesafe-ai" - }, - "metrics": { - "completion_tokens": 20, - "prompt_tokens": 279, - "tokens": 299 - } - } - ], - "metadata": { - "operation": "evaluate-string", - "testRunId": "" - } - }, { "name": "ai-sdk-generate-operation", "children": [ @@ -7800,7 +7756,7 @@ } ], "metadata": { - "aiSdkVersion": "7.0.105", + "aiSdkVersion": "7.0.103", "scenario": "ai-sdk-instrumentation", "testRunId": "", "workflowVersion": "1.0.8" diff --git a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-auto-hook.span-tree.txt b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-auto-hook.span-tree.txt index 612b6982b..67e6ece7b 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-auto-hook.span-tree.txt +++ b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-auto-hook.span-tree.txt @@ -1,7 +1,7 @@ span_tree: └── ai-sdk-instrumentation-root [task] metadata: { - "aiSdkVersion": "7.0.105", + "aiSdkVersion": "7.0.103", "scenario": "ai-sdk-instrumentation", "testRunId": "", "workflowVersion": "1.0.8" @@ -88,42 +88,6 @@ span_tree: │ "prompt_tokens": 382, │ "tokens": 444 │ } - ├── ai-sdk-evaluate-string-operation - │ metadata: { - │ "operation": "evaluate-string", - │ "testRunId": "" - │ } - │ └── evaluate [question] - │ input: { - │ "questions": [ - │ { - │ "instructions": "Was the delivery successful?", - │ "type": "boolean" - │ } - │ ], - │ "state": "The package arrived intact and on time." - │ } - │ output: { - │ "answers": [ - │ { - │ "probability": 0.98, - │ "type": "boolean" - │ } - │ ] - │ } - │ metadata: { - │ "braintrust": { - │ "integration_name": "ai-sdk", - │ "sdk_language": "typescript" - │ }, - │ "model": "jev-1.13.0", - │ "provider": "typesafe-ai" - │ } - │ metrics: { - │ "completion_tokens": 20, - │ "prompt_tokens": 279, - │ "tokens": 299 - │ } ├── ai-sdk-generate-operation │ metadata: { │ "operation": "generate", diff --git a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-explicit.span-tree.json b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-explicit.span-tree.json index 3f4184dee..e548be69d 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-explicit.span-tree.json +++ b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-explicit.span-tree.json @@ -94,50 +94,6 @@ "testRunId": "" } }, - { - "name": "ai-sdk-evaluate-string-operation", - "children": [ - { - "name": "evaluate", - "type": "question", - "children": [], - "input": { - "questions": [ - { - "instructions": "Was the delivery successful?", - "type": "boolean" - } - ], - "state": "The package arrived intact and on time." - }, - "output": { - "answers": [ - { - "probability": 0.98, - "type": "boolean" - } - ] - }, - "metadata": { - "braintrust": { - "integration_name": "ai-sdk", - "sdk_language": "typescript" - }, - "model": "jev-1.13.0", - "provider": "typesafe-ai" - }, - "metrics": { - "completion_tokens": 20, - "prompt_tokens": 279, - "tokens": 299 - } - } - ], - "metadata": { - "operation": "evaluate-string", - "testRunId": "" - } - }, { "name": "ai-sdk-generate-operation", "children": [ @@ -8236,7 +8192,7 @@ } ], "metadata": { - "aiSdkVersion": "7.0.105", + "aiSdkVersion": "7.0.103", "scenario": "ai-sdk-instrumentation", "testRunId": "", "workflowVersion": "1.0.8" diff --git a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-explicit.span-tree.txt b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-explicit.span-tree.txt index 8e900a48e..6a3ca859f 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-explicit.span-tree.txt +++ b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-explicit.span-tree.txt @@ -1,7 +1,7 @@ span_tree: └── ai-sdk-instrumentation-root [task] metadata: { - "aiSdkVersion": "7.0.105", + "aiSdkVersion": "7.0.103", "scenario": "ai-sdk-instrumentation", "testRunId": "", "workflowVersion": "1.0.8" @@ -88,42 +88,6 @@ span_tree: │ "prompt_tokens": 382, │ "tokens": 444 │ } - ├── ai-sdk-evaluate-string-operation - │ metadata: { - │ "operation": "evaluate-string", - │ "testRunId": "" - │ } - │ └── evaluate [question] - │ input: { - │ "questions": [ - │ { - │ "instructions": "Was the delivery successful?", - │ "type": "boolean" - │ } - │ ], - │ "state": "The package arrived intact and on time." - │ } - │ output: { - │ "answers": [ - │ { - │ "probability": 0.98, - │ "type": "boolean" - │ } - │ ] - │ } - │ metadata: { - │ "braintrust": { - │ "integration_name": "ai-sdk", - │ "sdk_language": "typescript" - │ }, - │ "model": "jev-1.13.0", - │ "provider": "typesafe-ai" - │ } - │ metrics: { - │ "completion_tokens": 20, - │ "prompt_tokens": 279, - │ "tokens": 299 - │ } ├── ai-sdk-generate-operation │ metadata: { │ "operation": "generate", diff --git a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-auto-hook.span-tree.json b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-auto-hook.span-tree.json index b2a344c03..fdfe5aebd 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-auto-hook.span-tree.json +++ b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-auto-hook.span-tree.json @@ -124,7 +124,7 @@ "sdk_language": "typescript" }, "model": "jev-1.13.0", - "provider": "typesafe-ai" + "provider": "typesafe" }, "metrics": { "completion_tokens": 20, diff --git a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-auto-hook.span-tree.txt b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-auto-hook.span-tree.txt index 46a20b003..20eb4ee39 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-auto-hook.span-tree.txt +++ b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-auto-hook.span-tree.txt @@ -116,7 +116,7 @@ span_tree: │ "sdk_language": "typescript" │ }, │ "model": "jev-1.13.0", - │ "provider": "typesafe-ai" + │ "provider": "typesafe" │ } │ metrics: { │ "completion_tokens": 20, diff --git a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-explicit.span-tree.json b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-explicit.span-tree.json index b2a344c03..fdfe5aebd 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-explicit.span-tree.json +++ b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-explicit.span-tree.json @@ -124,7 +124,7 @@ "sdk_language": "typescript" }, "model": "jev-1.13.0", - "provider": "typesafe-ai" + "provider": "typesafe" }, "metrics": { "completion_tokens": 20, diff --git a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-explicit.span-tree.txt b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-explicit.span-tree.txt index 46a20b003..20eb4ee39 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-explicit.span-tree.txt +++ b/e2e/scenarios/ai-sdk-instrumentation/__snapshots__/ai-sdk-v7-latest-explicit.span-tree.txt @@ -116,7 +116,7 @@ span_tree: │ "sdk_language": "typescript" │ }, │ "model": "jev-1.13.0", - │ "provider": "typesafe-ai" + │ "provider": "typesafe" │ } │ metrics: { │ "completion_tokens": 20, diff --git a/e2e/scenarios/ai-sdk-instrumentation/assertions.ts b/e2e/scenarios/ai-sdk-instrumentation/assertions.ts index 46487aac3..c57d7a915 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/assertions.ts +++ b/e2e/scenarios/ai-sdk-instrumentation/assertions.ts @@ -675,6 +675,7 @@ export function defineAISDKInstrumentationAssertions(options: { supportsDenyOutputOverrideScenario: boolean; supportsEmbedMany: boolean; supportsEvaluate?: boolean; + supportsEvaluateStringModel?: boolean; supportsGenerateObject: boolean; supportsGenerateImage: boolean; supportsOutputObjectScenario: boolean; @@ -969,35 +970,37 @@ export function defineAISDKInstrumentationAssertions(options: { tokens: expect.any(Number), }); - const stringOperation = findLatestSpan( - events, - "ai-sdk-evaluate-string-operation", - ); - const stringSpans = findChildSpans( - events, - "evaluate", - stringOperation?.span.id, - ); - expect(stringSpans).toHaveLength(1); - expect(stringSpans[0].input).toMatchObject({ - state: "The package arrived intact and on time.", - questions: [ - expect.objectContaining({ id: "positive", type: "boolean" }), - ], - }); - expect(stringSpans[0].output).toMatchObject({ - answers: [ - { - id: "positive", - type: "boolean", - probability: expect.any(Number), - }, - ], - }); - expect(stringSpans[0].row.metadata).toMatchObject({ - model: expect.stringMatching(/^jev-/), - provider: "typesafe-ai", - }); + if (options.supportsEvaluateStringModel !== false) { + const stringOperation = findLatestSpan( + events, + "ai-sdk-evaluate-string-operation", + ); + const stringSpans = findChildSpans( + events, + "evaluate", + stringOperation?.span.id, + ); + expect(stringSpans).toHaveLength(1); + expect(stringSpans[0].input).toMatchObject({ + state: "The package arrived intact and on time.", + questions: [ + expect.objectContaining({ id: "positive", type: "boolean" }), + ], + }); + expect(stringSpans[0].output).toMatchObject({ + answers: [ + { + id: "positive", + type: "boolean", + probability: expect.any(Number), + }, + ], + }); + expect(stringSpans[0].row.metadata).toMatchObject({ + model: expect.stringMatching(/^jev-/), + provider: "typesafe", + }); + } }, ); } diff --git a/e2e/scenarios/ai-sdk-instrumentation/package.json b/e2e/scenarios/ai-sdk-instrumentation/package.json index ca2d2790a..67551e5f2 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/package.json +++ b/e2e/scenarios/ai-sdk-instrumentation/package.json @@ -98,7 +98,7 @@ "ai-sdk-anthropic-v6-latest": "npm:@ai-sdk/anthropic@3.0.107", "ai-sdk-cohere-v6": "npm:@ai-sdk/cohere@3.0.7", "ai-sdk-cohere-v6-latest": "npm:@ai-sdk/cohere@3.0.51", - "ai-sdk-v7": "npm:ai@7.0.105", + "ai-sdk-v7": "npm:ai@7.0.103", "ai-sdk-v7-latest": "npm:ai@7.0.105", "ai-sdk-openai-v7": "npm:@ai-sdk/openai@4.0.0", "ai-sdk-openai-v7-latest": "npm:@ai-sdk/openai@4.0.36", diff --git a/e2e/scenarios/ai-sdk-instrumentation/pnpm-lock.yaml b/e2e/scenarios/ai-sdk-instrumentation/pnpm-lock.yaml index e79200ec2..f33109c17 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/pnpm-lock.yaml +++ b/e2e/scenarios/ai-sdk-instrumentation/pnpm-lock.yaml @@ -111,8 +111,8 @@ importers: specifier: npm:ai@6.0.246 version: ai@6.0.246(zod@3.25.76) ai-sdk-v7: - specifier: npm:ai@7.0.105 - version: ai@7.0.105(zod@3.25.76) + specifier: npm:ai@7.0.103 + version: ai@7.0.103(zod@3.25.76) ai-sdk-v7-latest: specifier: npm:ai@7.0.105 version: ai@7.0.105(zod@3.25.76) @@ -227,6 +227,12 @@ packages: peerDependencies: zod: ^3.25.76 || ^4.1.8 + '@ai-sdk/gateway@4.0.83': + resolution: {integrity: sha512-wAq7GX2Knqq7p87hSFqU+joaDN+NRZ+l0T54F7/h49Sm+hJxfEWapjw5GUn0qpNM932xIkS0Kf3U2NqgKZFa/A==} + engines: {node: '>=22'} + peerDependencies: + zod: ^3.25.76 || ^4.1.8 + '@ai-sdk/gateway@4.0.85': resolution: {integrity: sha512-c8ztST/CslupqO3p7izsAuG3TlKg9mhE6mGJ42iUADsSMJIV5IOKd9AsLG33QCAY7SWs6NDO2giM/rq7bUTNlQ==} engines: {node: '>=22'} @@ -383,6 +389,12 @@ packages: peerDependencies: zod: ^3.25.76 || ^4.1.8 + '@ai-sdk/provider-utils@5.0.42': + resolution: {integrity: sha512-e1WX26WUuZat8JW5KQ/meE0PPJV/MZPHwxS9Fcb3Q9Eo6xm5qnhLLLhpwf11mjJZAVIydDHdmC+vweMAlS6gbQ==} + engines: {node: '>=22'} + peerDependencies: + zod: ^3.25.76 || ^4.1.8 + '@ai-sdk/provider-utils@5.0.43': resolution: {integrity: sha512-gw/bcNseOGSs59TMtV4H1KwqXXe24NHgx+uBYr98pa4Fg6Uvp8hPPxjuckVnfFFyIxHCDew8so0ujpvcSuyMZA==} engines: {node: '>=22'} @@ -441,6 +453,10 @@ packages: resolution: {integrity: sha512-6p3C/vGqVIjcptBu1DnVd/BZJ2wWmV9TUv9192vT6ZvT9KNED8EwRTqyqFpoQZKgSbMDSvBSq3dqR524Nt/Crw==} engines: {node: '>=22'} + '@ai-sdk/provider@4.0.16': + resolution: {integrity: sha512-pppj3u2efqrL5H20uOCayE9pXRjUZWLRHpdW1b2KRCdykYlgvt/bkVPyagv1IHDhkru7vmEkOhdytRagCQjNIQ==} + engines: {node: '>=22'} + '@ai-sdk/provider@4.0.17': resolution: {integrity: sha512-VYMBxIQdcHqbIf1j+YZlI9Ati6LZ4wJe0GGd4z4a5H/KxTggjeOiyaVYTnfF7LHZK5jMQ+rofmzz4QPqf++NUw==} engines: {node: '>=22'} @@ -681,6 +697,12 @@ packages: peerDependencies: zod: ^3.25.76 || ^4.1.8 + ai@7.0.103: + resolution: {integrity: sha512-WuKq2oadMMP7L2tplq0Z3LwVhELdgTqRLSu7E5dcSte5Vk4BEhGBl0x86kKjgeH/F1RYKAy+sgjgsZONXzF6xQ==} + engines: {node: '>=22'} + peerDependencies: + zod: ^3.25.76 || ^4.1.8 + ai@7.0.105: resolution: {integrity: sha512-gkV3W+tTtWwQ41KNV/KjV8wabBrk+bnbnZ3f0AWp/T9LLyljose8uhFViKleVy7tIdEiR2PiS4BpbNdcExf7rQ==} engines: {node: '>=22'} @@ -971,6 +993,13 @@ snapshots: '@vercel/oidc': 3.2.0 zod: 3.25.76 + '@ai-sdk/gateway@4.0.83(zod@3.25.76)': + dependencies: + '@ai-sdk/provider': 4.0.16 + '@ai-sdk/provider-utils': 5.0.42(zod@3.25.76) + '@vercel/oidc': 3.2.0 + zod: 3.25.76 + '@ai-sdk/gateway@4.0.85(zod@3.25.76)': dependencies: '@ai-sdk/provider': 4.0.17 @@ -1147,6 +1176,15 @@ snapshots: undici: 7.29.0 zod: 3.25.76 + '@ai-sdk/provider-utils@5.0.42(zod@3.25.76)': + dependencies: + '@ai-sdk/provider': 4.0.16 + '@standard-schema/spec': 1.1.0 + '@workflow/serde': 4.1.0 + eventsource-parser: 3.0.8 + undici: 7.29.0 + zod: 3.25.76 + '@ai-sdk/provider-utils@5.0.43(zod@3.25.76)': dependencies: '@ai-sdk/provider': 4.0.17 @@ -1208,6 +1246,10 @@ snapshots: dependencies: json-schema: 0.4.0 + '@ai-sdk/provider@4.0.16': + dependencies: + json-schema: 0.4.0 + '@ai-sdk/provider@4.0.17': dependencies: json-schema: 0.4.0 @@ -1468,6 +1510,13 @@ snapshots: '@opentelemetry/api': 1.9.0 zod: 3.25.76 + ai@7.0.103(zod@3.25.76): + dependencies: + '@ai-sdk/gateway': 4.0.83(zod@3.25.76) + '@ai-sdk/provider': 4.0.16 + '@ai-sdk/provider-utils': 5.0.42(zod@3.25.76) + zod: 3.25.76 + ai@7.0.105(zod@3.25.76): dependencies: '@ai-sdk/gateway': 4.0.85(zod@3.25.76) diff --git a/e2e/scenarios/ai-sdk-instrumentation/scenario.ai-sdk-v7-explicit.mjs b/e2e/scenarios/ai-sdk-instrumentation/scenario.ai-sdk-v7-explicit.mjs index 48a788b91..c6575be3b 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/scenario.ai-sdk-v7-explicit.mjs +++ b/e2e/scenarios/ai-sdk-instrumentation/scenario.ai-sdk-v7-explicit.mjs @@ -52,6 +52,8 @@ runMain(async () => { supportsAgentToolLoop: true, supportsEmbedMany: true, supportsEvaluate: true, + supportsEvaluateStringModel: + process.env.AI_SDK_SUPPORTS_EVALUATE_STRING_MODEL !== "false", evaluate: wrapAISDK(ai).experimental_evaluate, supportsGenerateObject: true, supportsGenerateImage: false, diff --git a/e2e/scenarios/ai-sdk-instrumentation/scenario.ai-sdk-v7.mjs b/e2e/scenarios/ai-sdk-instrumentation/scenario.ai-sdk-v7.mjs index 384c2c6e6..fd057b9f7 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/scenario.ai-sdk-v7.mjs +++ b/e2e/scenarios/ai-sdk-instrumentation/scenario.ai-sdk-v7.mjs @@ -41,6 +41,8 @@ runAutoAISDKInstrumentationOrExit({ supportsDenyOutputOverrideScenario: false, supportsEmbedMany: true, supportsEvaluate: true, + supportsEvaluateStringModel: + process.env.AI_SDK_SUPPORTS_EVALUATE_STRING_MODEL !== "false", supportsGenerateObject: true, supportsGenerateImage: false, supportsOpenAICacheScenario: false, diff --git a/e2e/scenarios/ai-sdk-instrumentation/scenario.ai-sdk-v7.ts b/e2e/scenarios/ai-sdk-instrumentation/scenario.ai-sdk-v7.ts index 6c164eb36..3b40ef979 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/scenario.ai-sdk-v7.ts +++ b/e2e/scenarios/ai-sdk-instrumentation/scenario.ai-sdk-v7.ts @@ -38,6 +38,8 @@ runMain(async () => { supportsAgentToolLoop: true, supportsEmbedMany: true, supportsEvaluate: true, + supportsEvaluateStringModel: + process.env.AI_SDK_SUPPORTS_EVALUATE_STRING_MODEL !== "false", evaluate: wrapAISDK(ai).experimental_evaluate, supportsGenerateObject: true, supportsGenerateImage: false, diff --git a/e2e/scenarios/ai-sdk-instrumentation/scenario.impl.mjs b/e2e/scenarios/ai-sdk-instrumentation/scenario.impl.mjs index a6ae92348..3a6b329b5 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/scenario.impl.mjs +++ b/e2e/scenarios/ai-sdk-instrumentation/scenario.impl.mjs @@ -167,6 +167,7 @@ export const AI_SDK_SCENARIO_SPECS = [ packageName: "ai-sdk-v7", snapshotName: "ai-sdk-v7", supportsEvaluate: true, + supportsEvaluateStringModel: false, anthropicModuleName: "ai-sdk-anthropic-v7", supportsAgentToolLoop: true, supportsDenyOutputOverrideScenario: false, @@ -335,12 +336,12 @@ function createTypeSafeEvaluationModel(modelId = "jev-latest") { outputTokens: result.usage?.output_tokens, }, warnings: [], - providerMetadata: - confidenceEntries.length > 0 - ? { - typesafe: { confidence: Object.fromEntries(confidenceEntries) }, - } - : undefined, + providerMetadata: { + typesafe: + confidenceEntries.length > 0 + ? { confidence: Object.fromEntries(confidenceEntries) } + : {}, + }, response: { modelId: result.model, headers: Object.fromEntries(response.headers), @@ -552,32 +553,34 @@ async function runAISDKInstrumentationScenario( }); }, ); - const originalProvider = globalThis.AI_SDK_DEFAULT_PROVIDER; - try { - globalThis.AI_SDK_DEFAULT_PROVIDER = { - evaluationModel: (modelId) => - createTypeSafeEvaluationModel( - modelId === "typesafe-ai/jev" ? "jev-latest" : modelId, - ), - }; - await runOperation( - "ai-sdk-evaluate-string-operation", - "evaluate-string", - async () => { - await evaluate({ - model: "typesafe-ai/jev", - state: "The package arrived intact and on time.", - questions: { - positive: { - type: "boolean", - instructions: "Was the delivery successful?", + if (options.supportsEvaluateStringModel !== false) { + const originalProvider = globalThis.AI_SDK_DEFAULT_PROVIDER; + try { + globalThis.AI_SDK_DEFAULT_PROVIDER = { + evaluationModel: (modelId) => + createTypeSafeEvaluationModel( + modelId === "typesafe-ai/jev" ? "jev-latest" : modelId, + ), + }; + await runOperation( + "ai-sdk-evaluate-string-operation", + "evaluate-string", + async () => { + await evaluate({ + model: "typesafe-ai/jev", + state: "The package arrived intact and on time.", + questions: { + positive: { + type: "boolean", + instructions: "Was the delivery successful?", + }, }, - }, - }); - }, - ); - } finally { - globalThis.AI_SDK_DEFAULT_PROVIDER = originalProvider; + }); + }, + ); + } finally { + globalThis.AI_SDK_DEFAULT_PROVIDER = originalProvider; + } } } await runOperation("ai-sdk-generate-operation", "generate", async () => { diff --git a/e2e/scenarios/ai-sdk-instrumentation/scenario.test.ts b/e2e/scenarios/ai-sdk-instrumentation/scenario.test.ts index ace08be82..6fd7ff261 100644 --- a/e2e/scenarios/ai-sdk-instrumentation/scenario.test.ts +++ b/e2e/scenarios/ai-sdk-instrumentation/scenario.test.ts @@ -57,6 +57,9 @@ describeVariants("variants", () => { env: { AI_SDK_PACKAGE_NAME: scenario.packageName, AI_SDK_OPENAI_PACKAGE_NAME: scenario.openaiModuleName, + AI_SDK_SUPPORTS_EVALUATE_STRING_MODEL: String( + scenario.supportsEvaluateStringModel !== false, + ), ...(scenario.anthropicModuleName ? { AI_SDK_ANTHROPIC_PACKAGE_NAME: scenario.anthropicModuleName, @@ -91,6 +94,8 @@ describeVariants("variants", () => { supportsDenyOutputOverrideScenario, supportsEmbedMany: scenario.supportsEmbedMany !== false, supportsEvaluate: scenario.supportsEvaluate === true, + supportsEvaluateStringModel: + scenario.supportsEvaluateStringModel !== false, supportsGenerateObject: scenario.supportsGenerateObject, supportsGenerateImage: scenario.supportsGenerateImage ?? sdkMajorVersion >= 5, @@ -113,6 +118,9 @@ describeVariants("variants", () => { env: { AI_SDK_PACKAGE_NAME: scenario.packageName, AI_SDK_OPENAI_PACKAGE_NAME: scenario.openaiModuleName, + AI_SDK_SUPPORTS_EVALUATE_STRING_MODEL: String( + scenario.supportsEvaluateStringModel !== false, + ), ...(scenario.anthropicModuleName ? { AI_SDK_ANTHROPIC_PACKAGE_NAME: scenario.anthropicModuleName, @@ -148,6 +156,8 @@ describeVariants("variants", () => { supportsDenyOutputOverrideScenario, supportsEmbedMany: scenario.supportsEmbedMany !== false, supportsEvaluate: scenario.supportsEvaluate === true, + supportsEvaluateStringModel: + scenario.supportsEvaluateStringModel !== false, supportsGenerateObject: scenario.supportsGenerateObject, supportsGenerateImage: scenario.supportsGenerateImage ?? sdkMajorVersion >= 5, diff --git a/js/src/auto-instrumentations/configs/ai-sdk.ts b/js/src/auto-instrumentations/configs/ai-sdk.ts index 025d92028..b015998df 100644 --- a/js/src/auto-instrumentations/configs/ai-sdk.ts +++ b/js/src/auto-instrumentations/configs/ai-sdk.ts @@ -21,7 +21,7 @@ export const aiSDKConfigs: InstrumentationConfig[] = [ channelName: aiSDKChannels.evaluate.channelName, module: { name: "ai", - versionRange: ">=7.0.105 <8.0.0", + versionRange: ">=7.0.103 <8.0.0", filePath: "dist/index.js", }, functionQuery: { diff --git a/js/src/instrumentation/plugins/ai-sdk-plugin.ts b/js/src/instrumentation/plugins/ai-sdk-plugin.ts index 71d36ea60..b1a263ee7 100644 --- a/js/src/instrumentation/plugins/ai-sdk-plugin.ts +++ b/js/src/instrumentation/plugins/ai-sdk-plugin.ts @@ -750,7 +750,19 @@ function interceptAISDKEvaluate(defaultDenyOutputPaths: string[]): () => void { (value) => finish(() => { const confidence = value.providerMetadata?.typesafe?.confidence; - const resolvedModel = value.response?.modelId; + const gatewayRouting = extractGatewayRoutingInfo(value); + const requestMetadata = serializeModelWithProvider(args[0].model); + const providerMetadataKeys = Object.keys( + value.providerMetadata ?? {}, + ).filter((key) => key !== "gateway"); + const resolvedModel = serializeModelWithProvider( + gatewayRouting?.model ?? value.response?.modelId, + ); + const resolvedProvider = + gatewayRouting?.provider ?? + (providerMetadataKeys.length === 1 + ? providerMetadataKeys[0] + : (resolvedModel.provider ?? requestMetadata.provider)); span.log({ output: omit( { @@ -758,17 +770,12 @@ function interceptAISDKEvaluate(defaultDenyOutputPaths: string[]): () => void { }, denyOutputPaths, ), - metrics: extractTokenMetrics({ - usage: { - promptTokens: value.usage?.inputTokens, - completionTokens: value.usage?.outputTokens, - totalTokens: value.usage?.totalTokens, - }, - }), + metrics: extractTokenMetrics(value), metadata: { - ...(resolvedModel - ? { model: serializeModelWithProvider(resolvedModel).model } + ...(resolvedModel.model + ? { model: resolvedModel.model } : {}), + ...(resolvedProvider ? { provider: resolvedProvider } : {}), ...(confidence ? { providerMetadata: { typesafe: { confidence } } } : {}), diff --git a/js/src/vendor-sdk-types/ai-sdk-common.ts b/js/src/vendor-sdk-types/ai-sdk-common.ts index fea4c9f69..7bece5779 100644 --- a/js/src/vendor-sdk-types/ai-sdk-common.ts +++ b/js/src/vendor-sdk-types/ai-sdk-common.ts @@ -86,15 +86,10 @@ export interface AISDKEvaluateParams { [key: string]: unknown; } -export interface AISDKEvaluationResult { +export interface AISDKEvaluationResult extends AISDKResult { answers: Record; - usage?: { - inputTokens?: number; - outputTokens?: number; - totalTokens?: number; - }; - response?: { modelId?: string }; - providerMetadata?: { + response?: Record & { modelId?: string }; + providerMetadata?: AISDKProviderMetadata & { typesafe?: { confidence?: Record }; }; } diff --git a/js/src/wrappers/ai-sdk-evaluate.test.ts b/js/src/wrappers/ai-sdk-evaluate.test.ts index de6e61a02..beba6350d 100644 --- a/js/src/wrappers/ai-sdk-evaluate.test.ts +++ b/js/src/wrappers/ai-sdk-evaluate.test.ts @@ -57,6 +57,13 @@ const result: AISDKEvaluationResult = { usage: { inputTokens: 20, outputTokens: 5, totalTokens: 25 }, response: { modelId: "typesafe-ai/jev-1.13.0" }, providerMetadata: { + gateway: { + cost: 0.012, + routing: { + resolvedProvider: "typesafe", + resolvedProviderApiModelId: "jev-1.13.0", + }, + }, typesafe: { confidence: { category: 0.9, urgency: 0.8 } }, }, }; @@ -135,10 +142,17 @@ describe("AI SDK evaluate instrumentation", () => { }, metadata: { model: "jev-1.13.0", - provider: "typesafe-ai", - providerMetadata: result.providerMetadata, + provider: "typesafe", + providerMetadata: { + typesafe: result.providerMetadata?.typesafe, + }, + }, + metrics: { + prompt_tokens: 20, + completion_tokens: 5, + tokens: 25, + estimated_cost: 0.012, }, - metrics: { prompt_tokens: 20, completion_tokens: 5, tokens: 25 }, }); expect(span?.metadata?.providerMetadata).not.toHaveProperty( "privateProvider", From f35b24e616ac9b5f3566fd4ee624d445ba3550f3 Mon Sep 17 00:00:00 2001 From: lforst <8118419+lforst@users.noreply.github.com> Date: Thu, 17 Sep 2026 13:31:30 +0000 Subject: [PATCH 5/5] Fix AI SDK usage typings --- .../instrumentation/plugins/ai-sdk-plugin.ts | 15 ++-- js/src/vendor-sdk-types/ai-sdk-common.ts | 2 +- js/src/wrappers/ai-sdk-evaluate.test.ts | 76 ++++++++++--------- 3 files changed, 51 insertions(+), 42 deletions(-) diff --git a/js/src/instrumentation/plugins/ai-sdk-plugin.ts b/js/src/instrumentation/plugins/ai-sdk-plugin.ts index b1a263ee7..364bdb110 100644 --- a/js/src/instrumentation/plugins/ai-sdk-plugin.ts +++ b/js/src/instrumentation/plugins/ai-sdk-plugin.ts @@ -3964,9 +3964,14 @@ export function extractTokenMetrics( return metrics; } + const inputTokenDetails = + typeof usage.inputTokens === "object" ? usage.inputTokens : undefined; + const outputTokenDetails = + typeof usage.outputTokens === "object" ? usage.outputTokens : undefined; + // Extract token counts const promptTokens = firstNumber( - usage.inputTokens?.total, + inputTokenDetails?.total, usage.inputTokens, usage.promptTokens, usage.prompt_tokens, @@ -3976,7 +3981,7 @@ export function extractTokenMetrics( } const completionTokens = firstNumber( - usage.outputTokens?.total, + outputTokenDetails?.total, usage.outputTokens, usage.completionTokens, usage.completion_tokens, @@ -3997,7 +4002,7 @@ export function extractTokenMetrics( } const promptCachedTokens = firstNumber( - usage.inputTokens?.cacheRead, + inputTokenDetails?.cacheRead, usage.inputTokenDetails?.cacheReadTokens, usage.cachedInputTokens, usage.promptCachedTokens, @@ -4008,7 +4013,7 @@ export function extractTokenMetrics( } const promptCacheCreationTokens = firstNumber( - usage.inputTokens?.cacheWrite, + inputTokenDetails?.cacheWrite, usage.inputTokenDetails?.cacheWriteTokens, usage.promptCacheCreationTokens, usage.prompt_cache_creation_tokens, @@ -4035,7 +4040,7 @@ export function extractTokenMetrics( } const reasoningTokenCount = firstNumber( - usage.outputTokens?.reasoning, + outputTokenDetails?.reasoning, usage.reasoningTokens, usage.completionReasoningTokens, usage.completion_reasoning_tokens, diff --git a/js/src/vendor-sdk-types/ai-sdk-common.ts b/js/src/vendor-sdk-types/ai-sdk-common.ts index 7bece5779..2bb074024 100644 --- a/js/src/vendor-sdk-types/ai-sdk-common.ts +++ b/js/src/vendor-sdk-types/ai-sdk-common.ts @@ -12,7 +12,7 @@ interface AISDKTokenBucket { [key: string]: unknown; } -type AISDKTokenCount = number & AISDKTokenBucket; +type AISDKTokenCount = number | AISDKTokenBucket; export interface AISDKUsage { inputTokens?: AISDKTokenCount; diff --git a/js/src/wrappers/ai-sdk-evaluate.test.ts b/js/src/wrappers/ai-sdk-evaluate.test.ts index beba6350d..124214deb 100644 --- a/js/src/wrappers/ai-sdk-evaluate.test.ts +++ b/js/src/wrappers/ai-sdk-evaluate.test.ts @@ -19,41 +19,45 @@ import { wrapAISDK } from "./ai-sdk/ai-sdk"; configureNode(); +const questions = { + category: { + type: "choice", + instructions: "Which team should handle this request?", + criteria: { billing: null, technical: null }, + }, + urgency: { + type: "score", + instructions: "How urgent is this request?", + criteria: ["Low", "High"], + }, + duplicate: { + type: "boolean", + instructions: "Was there a duplicate charge?", + }, +}; + +const answers = { + category: { + type: "choice", + choice: "billing", + probabilities: { billing: 0.9, technical: 0.1 }, + }, + urgency: { + type: "score", + score: 0.75, + probabilities: { 0: 0.25, 1: 0.75 }, + }, + duplicate: { type: "boolean", probability: 0.95 }, +}; + const params: AISDKEvaluateParams = { model: "typesafe-ai/jev", state: { message: "Charged twice" }, - questions: { - category: { - type: "choice", - instructions: "Which team should handle this request?", - criteria: { billing: null, technical: null }, - }, - urgency: { - type: "score", - instructions: "How urgent is this request?", - criteria: ["Low", "High"], - }, - duplicate: { - type: "boolean", - instructions: "Was there a duplicate charge?", - }, - }, + questions, }; const result: AISDKEvaluationResult = { - answers: { - category: { - type: "choice", - choice: "billing", - probabilities: { billing: 0.9, technical: 0.1 }, - }, - urgency: { - type: "score", - score: 0.75, - probabilities: { 0: 0.25, 1: 0.75 }, - }, - duplicate: { type: "boolean", probability: 0.95 }, - }, + answers, usage: { inputTokens: 20, outputTokens: 5, totalTokens: 25 }, response: { modelId: "typesafe-ai/jev-1.13.0" }, providerMetadata: { @@ -120,24 +124,24 @@ describe("AI SDK evaluate instrumentation", () => { input: { state: params.state, questions: [ - { ...params.questions.category, id: "category" }, - { ...params.questions.urgency, id: "urgency" }, - { ...params.questions.duplicate, id: "duplicate" }, + { ...questions.category, id: "category" }, + { ...questions.urgency, id: "urgency" }, + { ...questions.duplicate, id: "duplicate" }, ], }, output: { answers: [ { - ...result.answers.category, + ...answers.category, confidence: 0.9, id: "category", }, { - ...result.answers.urgency, + ...answers.urgency, confidence: 0.8, id: "urgency", }, - { ...result.answers.duplicate, id: "duplicate" }, + { ...answers.duplicate, id: "duplicate" }, ], }, metadata: { @@ -187,7 +191,7 @@ describe("AI SDK evaluate instrumentation", () => { }), ]), ); - expect(result.answers.category).toHaveProperty("probabilities", { + expect(answers.category).toHaveProperty("probabilities", { billing: 0.9, technical: 0.1, });