From b3f65e0535f6f6136c8c02cd241eb132f4fbe098 Mon Sep 17 00:00:00 2001 From: AbhiPrasad <18689448+AbhiPrasad@users.noreply.github.com> Date: Mon, 20 Apr 2026 06:44:43 +0000 Subject: [PATCH 1/2] [create-pull-request] automated change --- py/pyproject.toml | 12 +- py/uv.lock | 331 ++++++++++++++++++++++++---------------------- 2 files changed, 178 insertions(+), 165 deletions(-) diff --git a/py/pyproject.toml b/py/pyproject.toml index 0238b0f8..0ce26c52 100644 --- a/py/pyproject.toml +++ b/py/pyproject.toml @@ -257,16 +257,16 @@ latest = "cohere==6.1.0" "5.0.0" = "cohere==5.0.0" [tool.braintrust.matrix.openai-agents] -latest = "openai-agents==0.14.1" +latest = "openai-agents==0.14.2" "0.13.6" = "openai-agents==0.13.6" "0.0.19" = "openai-agents==0.0.19" [tool.braintrust.matrix.litellm] -latest = "litellm==1.83.9" +latest = "litellm==1.83.10" "1.74.0" = "litellm==1.74.0" [tool.braintrust.matrix.claude-agent-sdk] -latest = "claude-agent-sdk==0.1.61" +latest = "claude-agent-sdk==0.1.63" "0.1.10" = "claude-agent-sdk==0.1.10" [tool.braintrust.matrix.agno] @@ -279,11 +279,11 @@ latest = "agentscope==1.0.18" "1.0.0" = "agentscope==1.0.0" [tool.braintrust.matrix.pydantic-ai-integration] -latest = "pydantic-ai==1.84.0" +latest = "pydantic-ai==1.84.1" "1.10.0" = "pydantic-ai==1.10.0" [tool.braintrust.matrix.pydantic-ai-wrap-openai] -latest = "pydantic-ai==1.84.0" +latest = "pydantic-ai==1.84.1" "1.0.1" = "pydantic-ai==1.0.1" "0.1.9" = "pydantic-ai==0.1.9" @@ -304,7 +304,7 @@ latest = "google-adk==1.31.0" "1.14.1" = "google-adk==1.14.1" [tool.braintrust.matrix.langchain-core] -latest = "langchain-core==1.2.31" +latest = "langchain-core==1.3.0" "0.3.28" = "langchain-core==0.3.28" [tool.braintrust.matrix.openrouter] diff --git a/py/uv.lock b/py/uv.lock index c490a8d2..968d2ad2 100644 --- a/py/uv.lock +++ b/py/uv.lock @@ -49,14 +49,14 @@ wheels = [ [[package]] name = "ag-ui-protocol" -version = "0.1.15" +version = "0.1.16" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pydantic" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/57/71/96c21ae7e2fb9b610c1a90d38bd2de8b6e5b2900a63001f3882f43e519af/ag_ui_protocol-0.1.15.tar.gz", hash = "sha256:5e23c1042c7d4e364d685e68d2fb74d37c16bc83c66d270102d8eaedce56ad82", size = 6269, upload-time = "2026-04-01T15:44:33.136Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/8f/d209eca4cc6e2123542b0a8eeda62732a6ec8862fe78435178eaac13480d/ag_ui_protocol-0.1.16.tar.gz", hash = "sha256:b5f45c98ed52291c7a07d01eb91f44d5e73a2fae8c31e8fc2a48d749a4dec5b7", size = 6273, upload-time = "2026-04-17T17:56:14.641Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e4/a0/a73398d30bb0f9ad70cd70426151a4a19527a7296e48a3a16a50e1d5db05/ag_ui_protocol-0.1.15-py3-none-any.whl", hash = "sha256:85cde077023ccbc37b5ce2ad953537883c262d210320f201fc2ec4e85408b06a", size = 8661, upload-time = "2026-04-01T15:44:32.079Z" }, + { url = "https://files.pythonhosted.org/packages/18/fb/de67f470f5cd60581faae4653ee588646cf8a2ff34bfb8f2e6f406fb29da/ag_ui_protocol-0.1.16-py3-none-any.whl", hash = "sha256:3ed7787aa6a89233c398b85dce4ffed625f83f774ea9b3a7fa6133dc24599c88", size = 8648, upload-time = "2026-04-17T17:56:15.443Z" }, ] [[package]] @@ -408,14 +408,15 @@ wheels = [ [[package]] name = "authlib" -version = "1.6.11" +version = "1.7.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cryptography" }, + { name = "joserfc" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/28/10/b325d58ffe86815b399334a101e63bc6fa4e1953921cb23703b48a0a0220/authlib-1.6.11.tar.gz", hash = "sha256:64db35b9b01aeccb4715a6c9a6613a06f2bd7be2ab9d2eb89edd1dfc7580a38f", size = 165359, upload-time = "2026-04-16T07:22:50.279Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d9/82/4d0603f30c1b4629b1f091bb266b0d7986434891d6940a8c87f8098db24e/authlib-1.7.0.tar.gz", hash = "sha256:b3e326c9aa9cc3ea95fe7d89fd880722d3608da4d00e8a27e061e64b48d801d5", size = 175890, upload-time = "2026-04-18T11:00:28.559Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/57/2f/55fca558f925a51db046e5b929deb317ddb05afed74b22d89f4eca578980/authlib-1.6.11-py2.py3-none-any.whl", hash = "sha256:c8687a9a26451c51a34a06fa17bb97cb15bba46a6a626755e2d7f50da8bff3e3", size = 244469, upload-time = "2026-04-16T07:22:48.413Z" }, + { url = "https://files.pythonhosted.org/packages/ca/48/c954218b2a250e23f178f10167c4173fecb5a75d2c206f0a67ba58006c26/authlib-1.7.0-py2.py3-none-any.whl", hash = "sha256:e36817afb02f6f0b6bf55f150782499ddd6ddf44b402bb055d3263cc65ac9ae0", size = 258779, upload-time = "2026-04-18T11:00:26.64Z" }, ] [[package]] @@ -471,30 +472,30 @@ wheels = [ [[package]] name = "boto3" -version = "1.42.90" +version = "1.42.91" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "botocore" }, { name = "jmespath" }, { name = "s3transfer" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/62/17/510f31d7d6190c01725710d95415733e467f4406d450a106f6eacfd3a94d/boto3-1.42.90.tar.gz", hash = "sha256:bafb5bb1dea262ac95f9afb1e415f06a9490f05cb203bdd897d0afdcd17733c6", size = 113174, upload-time = "2026-04-16T20:27:43.012Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a7/c0/98b8cec7ca22dde776df48c58940ae1abc425593959b7226e270760d726f/boto3-1.42.91.tar.gz", hash = "sha256:03d70532b17f7f84df37ca7e8c21553280454dea53ae12b15d1cfef9b16fcb8a", size = 113181, upload-time = "2026-04-17T19:31:06.251Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e1/bd/a0c5011a8eddce39a9b613b13a75057bf960ef2145ff4d1583ed81a2599b/boto3-1.42.90-py3-none-any.whl", hash = "sha256:fde7f7bcad6ec8342d6bf18f56d118d0cb6df189310cfaf73e2eb6443b1cb418", size = 140554, upload-time = "2026-04-16T20:27:40.226Z" }, + { url = "https://files.pythonhosted.org/packages/02/29/faba6521257c34085cc9b439ef98235b581772580f417fa3629728007270/boto3-1.42.91-py3-none-any.whl", hash = "sha256:04e72071cde022951ce7f81bd9933c90095ab8923e8ced61c8dacfe9edac0f5c", size = 140553, upload-time = "2026-04-17T19:31:02.57Z" }, ] [[package]] name = "botocore" -version = "1.42.90" +version = "1.42.91" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jmespath" }, { name = "python-dateutil" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/86/cf/4eaa0b7ab2ba0b2a0c93e277779b1385127e2f07876a08d698b529affdae/botocore-1.42.90.tar.gz", hash = "sha256:234c39492cd3088acb021d999e3392a4d50238ae3e70b9d9ae1504c30d9009d1", size = 15209231, upload-time = "2026-04-16T20:27:29.323Z" } +sdist = { url = "https://files.pythonhosted.org/packages/21/bc/a4b7c46471c2e789ad8c4c7acfd7f302fdb481d93ff870f441249b924ae6/botocore-1.42.91.tar.gz", hash = "sha256:d252e27bc454afdbf5ed3dc617aa423f2c855c081e98b7963093399483ecc698", size = 15213010, upload-time = "2026-04-17T19:30:50.793Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fc/1e/44afcdc3b526b6e1569dd142083c6ed1cb8b92b4141de1c78ded883b449a/botocore-1.42.90-py3-none-any.whl", hash = "sha256:5c95504720346990adc8e3ae1023eb46f9409084b79688e4773ba7099c5fd3db", size = 14892274, upload-time = "2026-04-16T20:27:24.057Z" }, + { url = "https://files.pythonhosted.org/packages/b1/fc/24cc0a47c824f13933e210e9ad034b4fba22f7185b8d904c0fbf5a3b2be8/botocore-1.42.91-py3-none-any.whl", hash = "sha256:7a28c3cc6bfab5724ad18899d52402b776a0de7d87fa20c3c5270bcaaf199ce8", size = 14897344, upload-time = "2026-04-17T19:30:44.245Z" }, ] [[package]] @@ -519,7 +520,7 @@ dependencies = [ all = [ { name = "boto3" }, { name = "openai-agents", version = "0.2.9", source = { registry = "https://pypi.org/simple" }, marker = "extra == 'group-10-braintrust-test-litellm' or (extra == 'group-10-braintrust-lint' and extra == 'group-10-braintrust-test-agentscope') or (extra == 'group-10-braintrust-lint' and extra == 'group-10-braintrust-test-agno') or (extra == 'group-10-braintrust-lint' and extra == 'group-10-braintrust-test-langchain') or (extra == 'group-10-braintrust-test-agentscope' and extra == 'group-10-braintrust-test-agno') or (extra == 'group-10-braintrust-test-agentscope' and extra == 'group-10-braintrust-test-langchain') or (extra == 'group-10-braintrust-test-agno' and extra == 'group-10-braintrust-test-langchain') or (extra == 'group-10-braintrust-test-langchain' and extra == 'group-10-braintrust-test-openai-agents') or (extra == 'group-10-braintrust-lint' and extra != 'group-10-braintrust-test-litellm' and extra == 'group-10-braintrust-test-openai-agents') or (extra == 'group-10-braintrust-lint' and extra != 'group-10-braintrust-test-litellm' and extra == 'group-10-braintrust-test-pydantic-ai-logfire') or (extra == 'group-10-braintrust-test-agentscope' and extra != 'group-10-braintrust-test-litellm' and extra == 'group-10-braintrust-test-openai-agents') or (extra == 'group-10-braintrust-test-agno' and extra != 'group-10-braintrust-test-litellm' and extra == 'group-10-braintrust-test-openai-agents')" }, - { name = "openai-agents", version = "0.14.1", source = { registry = "https://pypi.org/simple" }, marker = "extra == 'group-10-braintrust-lint' or extra == 'group-10-braintrust-test-agentscope' or extra == 'group-10-braintrust-test-agno' or extra == 'group-10-braintrust-test-langchain' or extra != 'group-10-braintrust-test-litellm' or (extra == 'group-10-braintrust-test-litellm' and extra == 'group-10-braintrust-test-openai-agents')" }, + { name = "openai-agents", version = "0.14.2", source = { registry = "https://pypi.org/simple" }, marker = "extra == 'group-10-braintrust-lint' or extra == 'group-10-braintrust-test-agentscope' or extra == 'group-10-braintrust-test-agno' or extra == 'group-10-braintrust-test-langchain' or extra != 'group-10-braintrust-test-litellm' or (extra == 'group-10-braintrust-test-litellm' and extra == 'group-10-braintrust-test-openai-agents')" }, { name = "opentelemetry-api" }, { name = "opentelemetry-exporter-otlp-proto-http" }, { name = "opentelemetry-sdk" }, @@ -541,7 +542,7 @@ cli = [ ] openai-agents = [ { name = "openai-agents", version = "0.2.9", source = { registry = "https://pypi.org/simple" }, marker = "extra == 'group-10-braintrust-test-litellm' or (extra == 'group-10-braintrust-lint' and extra == 'group-10-braintrust-test-agentscope') or (extra == 'group-10-braintrust-lint' and extra == 'group-10-braintrust-test-agno') or (extra == 'group-10-braintrust-lint' and extra == 'group-10-braintrust-test-langchain') or (extra == 'group-10-braintrust-test-agentscope' and extra == 'group-10-braintrust-test-agno') or (extra == 'group-10-braintrust-test-agentscope' and extra == 'group-10-braintrust-test-langchain') or (extra == 'group-10-braintrust-test-agno' and extra == 'group-10-braintrust-test-langchain') or (extra == 'group-10-braintrust-test-langchain' and extra == 'group-10-braintrust-test-openai-agents') or (extra == 'group-10-braintrust-lint' and extra != 'group-10-braintrust-test-litellm' and extra == 'group-10-braintrust-test-openai-agents') or (extra == 'group-10-braintrust-lint' and extra != 'group-10-braintrust-test-litellm' and extra == 'group-10-braintrust-test-pydantic-ai-logfire') or (extra == 'group-10-braintrust-test-agentscope' and extra != 'group-10-braintrust-test-litellm' and extra == 'group-10-braintrust-test-openai-agents') or (extra == 'group-10-braintrust-test-agno' and extra != 'group-10-braintrust-test-litellm' and extra == 'group-10-braintrust-test-openai-agents')" }, - { name = "openai-agents", version = "0.14.1", source = { registry = "https://pypi.org/simple" }, marker = "extra == 'group-10-braintrust-lint' or extra == 'group-10-braintrust-test-agentscope' or extra == 'group-10-braintrust-test-agno' or extra == 'group-10-braintrust-test-langchain' or extra != 'group-10-braintrust-test-litellm' or (extra == 'group-10-braintrust-test-litellm' and extra == 'group-10-braintrust-test-openai-agents')" }, + { name = "openai-agents", version = "0.14.2", source = { registry = "https://pypi.org/simple" }, marker = "extra == 'group-10-braintrust-lint' or extra == 'group-10-braintrust-test-agentscope' or extra == 'group-10-braintrust-test-agno' or extra == 'group-10-braintrust-test-langchain' or extra != 'group-10-braintrust-test-litellm' or (extra == 'group-10-braintrust-test-litellm' and extra == 'group-10-braintrust-test-openai-agents')" }, ] otel = [ { name = "opentelemetry-api" }, @@ -586,7 +587,7 @@ lint = [ { name = "litellm" }, { name = "mistralai" }, { name = "openai", version = "2.31.0", source = { registry = "https://pypi.org/simple" } }, - { name = "openai-agents", version = "0.14.1", source = { registry = "https://pypi.org/simple" } }, + { name = "openai-agents", version = "0.14.2", source = { registry = "https://pypi.org/simple" } }, { name = "openrouter" }, { name = "opentelemetry-instrumentation-openai" }, { name = "pydantic-ai" }, @@ -1536,11 +1537,11 @@ wheels = [ [[package]] name = "filelock" -version = "3.28.0" +version = "3.29.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d6/17/6e8890271880903e3538660a21d63a6c1fea969ac71d0d6b608b78727fa9/filelock-3.28.0.tar.gz", hash = "sha256:4ed1010aae813c4ee8d9c660e4792475ee60c4a0ba76073ceaf862bd317e3ca6", size = 56474, upload-time = "2026-04-14T22:54:33.625Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b5/fe/997687a931ab51049acce6fa1f23e8f01216374ea81374ddee763c493db5/filelock-3.29.0.tar.gz", hash = "sha256:69974355e960702e789734cb4871f884ea6fe50bd8404051a3530bc07809cf90", size = 57571, upload-time = "2026-04-19T15:39:10.068Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3b/21/2f728888c45033d34a417bfcd248ea2564c9e08ab1bfd301377cf05d5586/filelock-3.28.0-py3-none-any.whl", hash = "sha256:de9af6712788e7171df1b28b15eba2446c69721433fa427a9bee07b17820a9db", size = 39189, upload-time = "2026-04-14T22:54:32.037Z" }, + { url = "https://files.pythonhosted.org/packages/81/47/dd9a212ef6e343a6857485ffe25bba537304f1913bdbed446a23f7f592e1/filelock-3.29.0-py3-none-any.whl", hash = "sha256:96f5f6344709aa1572bbf631c640e4ebeeb519e08da902c39a001882f30ac258", size = 39812, upload-time = "2026-04-19T15:39:08.752Z" }, ] [[package]] @@ -2283,7 +2284,7 @@ wheels = [ [[package]] name = "groq" -version = "1.1.2" +version = "1.2.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, @@ -2293,9 +2294,9 @@ dependencies = [ { name = "sniffio" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d3/c7/a2153b639062f59f9bc93a1b5507c0c4a6b654b8a9edbf432ec2f4a62d2d/groq-1.1.2.tar.gz", hash = "sha256:9ec2b5b6a1c4856a8c6c38741353c5ab37472a4e3fded02af783750d849cc988", size = 154033, upload-time = "2026-03-25T23:16:10.313Z" } +sdist = { url = "https://files.pythonhosted.org/packages/27/51/4728c13611849ff6cf8536740ae78ba3ee5e665d67b572a47c9ead0f9788/groq-1.2.0.tar.gz", hash = "sha256:85459e27c9c17f22404349c785cd08680362cfe85e07cc060be46c4832f108c3", size = 155609, upload-time = "2026-04-18T10:43:50.68Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/34/b0/83e3892a4597a4b8ebf8a662aeaf314765c4c2340516eb1d049b459b24fc/groq-1.1.2-py3-none-any.whl", hash = "sha256:348cb7a674b6aa7105719b533f6fc48fd32b503bc9256924aaed6dc186f778b5", size = 141700, upload-time = "2026-03-25T23:16:08.998Z" }, + { url = "https://files.pythonhosted.org/packages/0c/82/748639c95c60ad8846c65b167ca611c815d06d5f67a9e73b23486dce4fdf/groq-1.2.0-py3-none-any.whl", hash = "sha256:1002060a743b27c8f86765e1bc9749c98498e961d9fe2e4902bf7804a71c3c84", size = 142334, upload-time = "2026-04-18T10:43:49.125Z" }, ] [[package]] @@ -2556,11 +2557,11 @@ wheels = [ [[package]] name = "identify" -version = "2.6.18" +version = "2.6.19" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/46/c4/7fb4db12296cdb11893d61c92048fe617ee853f8523b9b296ac03b43757e/identify-2.6.18.tar.gz", hash = "sha256:873ac56a5e3fd63e7438a7ecbc4d91aca692eb3fefa4534db2b7913f3fc352fd", size = 99580, upload-time = "2026-03-15T18:39:50.319Z" } +sdist = { url = "https://files.pythonhosted.org/packages/52/63/51723b5f116cc04b061cb6f5a561790abf249d25931d515cd375e063e0f4/identify-2.6.19.tar.gz", hash = "sha256:6be5020c38fcb07da56c53733538a3081ea5aa70d36a156f83044bfbf9173842", size = 99567, upload-time = "2026-04-17T18:39:50.265Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/46/33/92ef41c6fad0233e41d3d84ba8e8ad18d1780f1e5d99b3c683e6d7f98b63/identify-2.6.18-py2.py3-none-any.whl", hash = "sha256:8db9d3c8ea9079db92cafb0ebf97abdc09d52e97f4dcf773a2e694048b7cd737", size = 99394, upload-time = "2026-03-15T18:39:48.915Z" }, + { url = "https://files.pythonhosted.org/packages/94/84/d9273cd09688070a6523c4aee4663a8538721b2b755c4962aafae0011e72/identify-2.6.19-py2.py3-none-any.whl", hash = "sha256:20e6a87f786f768c092a721ad107fc9df0eb89347be9396cadf3f4abbd1fb78a", size = 99397, upload-time = "2026-04-17T18:39:49.221Z" }, ] [[package]] @@ -2780,6 +2781,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/14/2f/967ba146e6d58cf6a652da73885f52fc68001525b4197effc174321d70b4/jmespath-1.1.0-py3-none-any.whl", hash = "sha256:a5663118de4908c91729bea0acadca56526eb2698e83de10cd116ae0f4e97c64", size = 20419, upload-time = "2026-01-22T16:35:24.919Z" }, ] +[[package]] +name = "joserfc" +version = "1.6.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cryptography" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/de/c6/de8fdbdfa75c8ca04fead38a82d573df8a82906e984c349d58665f459558/joserfc-1.6.4.tar.gz", hash = "sha256:34ce5f499bfcc5e9ad4cc75077f9278ab3227b71da9aaf28f9ab705f8a560d3c", size = 231866, upload-time = "2026-04-13T13:15:40.632Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b6/f7/210b27752e972edb36d239315b08d3eb6b14824cc4a590da2337d195260b/joserfc-1.6.4-py3-none-any.whl", hash = "sha256:3e4a22b509b41908989237a045e25c8308d5fd47ab96bdae2dd8057c6451003a", size = 70464, upload-time = "2026-04-13T13:15:39.259Z" }, +] + [[package]] name = "json-repair" version = "0.59.4" @@ -2912,7 +2925,7 @@ wheels = [ [[package]] name = "langchain-core" -version = "1.2.31" +version = "1.3.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jsonpatch" }, @@ -2927,9 +2940,9 @@ dependencies = [ { name = "typing-extensions" }, { name = "uuid-utils" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a1/5a/7523ff55668a233beef7e909e8e2074a1cc3b620e0bbf0a4ec5f38549b3b/langchain_core-1.2.31.tar.gz", hash = "sha256:aad3ecc9e4dce2dd2bb79526c81b92e5322fd81db7834a031cb80359f2e3ebaa", size = 850756, upload-time = "2026-04-16T13:26:29.241Z" } +sdist = { url = "https://files.pythonhosted.org/packages/92/fe/20190232d9b513242899dbb0c2bb77e31b4d61e343743adbe90ebc2603d2/langchain_core-1.3.0.tar.gz", hash = "sha256:14a39f528bf459aa3aa40d0a7f7f1bae7520d435ef991ae14a4ceb74d8c49046", size = 860755, upload-time = "2026-04-17T14:51:38.298Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/52/02/668ddf4f1cf963ad691bdbea672a85244e6271eb0a4acfaf662bbd94a3b1/langchain_core-1.2.31-py3-none-any.whl", hash = "sha256:c407193edb99311cc36ec3e4d3667a065bbc4d7d72fbb6e368538b9b134d4033", size = 513264, upload-time = "2026-04-16T13:26:27.566Z" }, + { url = "https://files.pythonhosted.org/packages/f8/e2/dbfa347aa072a6dc4cd38d6f9ebfc730b4c14c258c47f480f4c5c546f177/langchain_core-1.3.0-py3-none-any.whl", hash = "sha256:baf16ee028475df177b9ab8869a751c79406d64a6f12125b93802991b566cced", size = 515140, upload-time = "2026-04-17T14:51:36.274Z" }, ] [[package]] @@ -2978,15 +2991,15 @@ wheels = [ [[package]] name = "langgraph-prebuilt" -version = "1.0.9" +version = "1.0.10" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "langchain-core" }, { name = "langgraph-checkpoint" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/99/4c/06dac899f4945bedb0c3a1583c19484c2cc894114ea30d9a538dd270086e/langgraph_prebuilt-1.0.9.tar.gz", hash = "sha256:93de7512e9caade4b77ead92428f6215c521fdb71b8ffda8cd55f0ad814e64de", size = 165850, upload-time = "2026-04-03T14:06:37.721Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/c8/01471b1b5601f2e9c9a69c39fc9a2fb8611613ede0002e5a2b81c0acd850/langgraph_prebuilt-1.0.10.tar.gz", hash = "sha256:5a6fc513f8907074563b6218ff991c4ed9db19ac63101314919686e8029ddb07", size = 169769, upload-time = "2026-04-17T17:59:45.373Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1d/a2/8368ac187b75e7f9d938ca075d34f116683f5cfc48d924029ee79aea147b/langgraph_prebuilt-1.0.9-py3-none-any.whl", hash = "sha256:776c8e3154a5aef5ad0e5bf3f263f2dcaab3983786cc20014b7f955d99d2d1b2", size = 35958, upload-time = "2026-04-03T14:06:36.58Z" }, + { url = "https://files.pythonhosted.org/packages/50/49/d073375beabdc6955df6cbe570ba7786836bd4c817ae998955d35037f2fd/langgraph_prebuilt-1.0.10-py3-none-any.whl", hash = "sha256:e3baa1977d819982e690a357ba5bb77ccc1d4d8d4a029c48e502a3b6d171185f", size = 36086, upload-time = "2026-04-17T17:59:44.395Z" }, ] [[package]] @@ -3939,14 +3952,14 @@ resolution-markers = [ "python_full_version < '3.11' and extra != 'group-10-braintrust-lint' and extra != 'group-10-braintrust-test-agentscope' and extra != 'group-10-braintrust-test-agno' and extra != 'group-10-braintrust-test-langchain' and extra != 'group-10-braintrust-test-litellm' and extra != 'group-10-braintrust-test-openai-agents'", ] dependencies = [ - { name = "anyio", marker = "extra == 'group-10-braintrust-lint' or extra == 'group-10-braintrust-test-agentscope' or extra == 'group-10-braintrust-test-agno' or extra == 'group-10-braintrust-test-langchain' or extra != 'group-10-braintrust-test-litellm' or (extra == 'group-10-braintrust-test-litellm' and extra == 'group-10-braintrust-test-openai-agents')" }, - { name = "distro", marker = "extra == 'group-10-braintrust-lint' or extra == 'group-10-braintrust-test-agentscope' or extra == 'group-10-braintrust-test-agno' or extra == 'group-10-braintrust-test-langchain' or extra != 'group-10-braintrust-test-litellm' or (extra == 'group-10-braintrust-test-litellm' and extra == 'group-10-braintrust-test-openai-agents')" }, - { name = "httpx", marker = "extra == 'group-10-braintrust-lint' or extra == 'group-10-braintrust-test-agentscope' or extra == 'group-10-braintrust-test-agno' or extra == 'group-10-braintrust-test-langchain' or extra != 'group-10-braintrust-test-litellm' or (extra == 'group-10-braintrust-test-litellm' and extra == 'group-10-braintrust-test-openai-agents')" }, - { name = "jiter", marker = "extra == 'group-10-braintrust-lint' or extra == 'group-10-braintrust-test-agentscope' or extra == 'group-10-braintrust-test-agno' or extra == 'group-10-braintrust-test-langchain' or extra != 'group-10-braintrust-test-litellm' or (extra == 'group-10-braintrust-test-litellm' and extra == 'group-10-braintrust-test-openai-agents')" }, - { name = "pydantic", marker = "extra == 'group-10-braintrust-lint' or extra == 'group-10-braintrust-test-agentscope' or extra == 'group-10-braintrust-test-agno' or extra == 'group-10-braintrust-test-langchain' or extra != 'group-10-braintrust-test-litellm' or (extra == 'group-10-braintrust-test-litellm' and extra == 'group-10-braintrust-test-openai-agents')" }, - { name = "sniffio", marker = "extra == 'group-10-braintrust-lint' or extra == 'group-10-braintrust-test-agentscope' or extra == 'group-10-braintrust-test-agno' or extra == 'group-10-braintrust-test-langchain' or extra != 'group-10-braintrust-test-litellm' or (extra == 'group-10-braintrust-test-litellm' and extra == 'group-10-braintrust-test-openai-agents')" }, - { name = "tqdm", marker = "extra == 'group-10-braintrust-lint' or extra == 'group-10-braintrust-test-agentscope' or extra == 'group-10-braintrust-test-agno' or extra == 'group-10-braintrust-test-langchain' or extra != 'group-10-braintrust-test-litellm' or (extra == 'group-10-braintrust-test-litellm' and extra == 'group-10-braintrust-test-openai-agents')" }, - { name = "typing-extensions", marker = "extra == 'group-10-braintrust-lint' or extra == 'group-10-braintrust-test-agentscope' or extra == 'group-10-braintrust-test-agno' or extra == 'group-10-braintrust-test-langchain' or extra != 'group-10-braintrust-test-litellm' or (extra == 'group-10-braintrust-test-litellm' and extra == 'group-10-braintrust-test-openai-agents')" }, + { name = "anyio" }, + { name = "distro" }, + { name = "httpx" }, + { name = "jiter" }, + { name = "pydantic" }, + { name = "sniffio" }, + { name = "tqdm" }, + { name = "typing-extensions" }, ] sdist = { url = "https://files.pythonhosted.org/packages/94/fe/64b3d035780b3188f86c4f6f1bc202e7bb74757ef028802112273b9dcacf/openai-2.31.0.tar.gz", hash = "sha256:43ca59a88fc973ad1848d86b98d7fac207e265ebbd1828b5e4bdfc85f79427a5", size = 684772, upload-time = "2026-04-08T21:01:41.797Z" } wheels = [ @@ -3978,7 +3991,7 @@ wheels = [ [[package]] name = "openai-agents" -version = "0.14.1" +version = "0.14.2" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.12' and extra != 'group-10-braintrust-lint' and extra != 'group-10-braintrust-test-agentscope' and extra != 'group-10-braintrust-test-agno' and extra != 'group-10-braintrust-test-langchain' and extra != 'group-10-braintrust-test-litellm' and extra == 'group-10-braintrust-test-openai-agents'", @@ -4003,18 +4016,18 @@ resolution-markers = [ "python_full_version < '3.11' and extra != 'group-10-braintrust-lint' and extra != 'group-10-braintrust-test-agentscope' and extra != 'group-10-braintrust-test-agno' and extra != 'group-10-braintrust-test-langchain' and extra != 'group-10-braintrust-test-litellm' and extra != 'group-10-braintrust-test-openai-agents'", ] dependencies = [ - { name = "griffelib", marker = "extra == 'group-10-braintrust-lint' or extra == 'group-10-braintrust-test-agentscope' or extra == 'group-10-braintrust-test-agno' or extra == 'group-10-braintrust-test-langchain' or extra != 'group-10-braintrust-test-litellm' or (extra == 'group-10-braintrust-test-litellm' and extra == 'group-10-braintrust-test-openai-agents')" }, + { name = "griffelib" }, { name = "mcp", marker = "extra == 'group-10-braintrust-lint' or extra == 'group-10-braintrust-test-agentscope' or extra == 'group-10-braintrust-test-agno' or extra == 'group-10-braintrust-test-langchain' or extra != 'group-10-braintrust-test-litellm' or (extra == 'group-10-braintrust-test-litellm' and extra == 'group-10-braintrust-test-openai-agents')" }, - { name = "openai", version = "2.31.0", source = { registry = "https://pypi.org/simple" }, marker = "extra == 'group-10-braintrust-lint' or extra == 'group-10-braintrust-test-agentscope' or extra == 'group-10-braintrust-test-agno' or extra == 'group-10-braintrust-test-langchain' or extra != 'group-10-braintrust-test-litellm' or (extra == 'group-10-braintrust-test-litellm' and extra == 'group-10-braintrust-test-openai-agents')" }, - { name = "pydantic", marker = "extra == 'group-10-braintrust-lint' or extra == 'group-10-braintrust-test-agentscope' or extra == 'group-10-braintrust-test-agno' or extra == 'group-10-braintrust-test-langchain' or extra != 'group-10-braintrust-test-litellm' or (extra == 'group-10-braintrust-test-litellm' and extra == 'group-10-braintrust-test-openai-agents')" }, - { name = "requests", marker = "extra == 'group-10-braintrust-lint' or extra == 'group-10-braintrust-test-agentscope' or extra == 'group-10-braintrust-test-agno' or extra == 'group-10-braintrust-test-langchain' or extra != 'group-10-braintrust-test-litellm' or (extra == 'group-10-braintrust-test-litellm' and extra == 'group-10-braintrust-test-openai-agents')" }, - { name = "types-requests", marker = "extra == 'group-10-braintrust-lint' or extra == 'group-10-braintrust-test-agentscope' or extra == 'group-10-braintrust-test-agno' or extra == 'group-10-braintrust-test-langchain' or extra != 'group-10-braintrust-test-litellm' or (extra == 'group-10-braintrust-test-litellm' and extra == 'group-10-braintrust-test-openai-agents')" }, - { name = "typing-extensions", marker = "extra == 'group-10-braintrust-lint' or extra == 'group-10-braintrust-test-agentscope' or extra == 'group-10-braintrust-test-agno' or extra == 'group-10-braintrust-test-langchain' or extra != 'group-10-braintrust-test-litellm' or (extra == 'group-10-braintrust-test-litellm' and extra == 'group-10-braintrust-test-openai-agents')" }, - { name = "websockets", marker = "extra == 'group-10-braintrust-lint' or extra == 'group-10-braintrust-test-agentscope' or extra == 'group-10-braintrust-test-agno' or extra == 'group-10-braintrust-test-langchain' or extra != 'group-10-braintrust-test-litellm' or (extra == 'group-10-braintrust-test-litellm' and extra == 'group-10-braintrust-test-openai-agents')" }, + { name = "openai", version = "2.31.0", source = { registry = "https://pypi.org/simple" } }, + { name = "pydantic" }, + { name = "requests" }, + { name = "types-requests" }, + { name = "typing-extensions" }, + { name = "websockets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/16/ae/8af117a3a4a06ad72b4a60759fbab98a7158f0eb36c47d90d5d883610781/openai_agents-0.14.1.tar.gz", hash = "sha256:7baac1b4c0a171d32c82eb6e9c207fd010e0d08dd39a5e8cd762ee27969457dc", size = 5256058, upload-time = "2026-04-15T19:26:52.42Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e2/2c/74fea5c1b20f107d19742af400045542e17eb449d044f950758a6f68f32f/openai_agents-0.14.2.tar.gz", hash = "sha256:fd4e1ae84e00aef4339ad39913468a0da34cba8ff5382925d38028ac3b435ef2", size = 5288888, upload-time = "2026-04-18T00:17:39.709Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ac/1c/98efddc1e10b23a397ca901b6f6d251908be2e6a30a92e0c25fb5dff6348/openai_agents-0.14.1-py3-none-any.whl", hash = "sha256:09ea6e9c49c785dc490e071e17ea3a0b0cce9c5f97daeb50ee6dc8fb490dc817", size = 797518, upload-time = "2026-04-15T19:26:50.106Z" }, + { url = "https://files.pythonhosted.org/packages/0b/02/bb3ddff9bca543cbcca0d362a645b03a0708b6c2cd6eb620d5f3de810bb3/openai_agents-0.14.2-py3-none-any.whl", hash = "sha256:acd75132f2ec70413a4e95680b629ccbc6f4f5d0d63414980153de09d409e695", size = 807364, upload-time = "2026-04-18T00:17:37.505Z" }, ] [[package]] @@ -4809,7 +4822,7 @@ wheels = [ [[package]] name = "pydantic" -version = "2.13.1" +version = "2.13.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "annotated-types" }, @@ -4817,9 +4830,9 @@ dependencies = [ { name = "typing-extensions" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f3/6b/1353beb3d1cd5cf61cdec5b6f87a9872399de3bc5cae0b7ce07ff4de2ab0/pydantic-2.13.1.tar.gz", hash = "sha256:a0f829b279ddd1e39291133fe2539d2aa46cc6b150c1706a270ff0879e3774d2", size = 843746, upload-time = "2026-04-15T14:57:19.398Z" } +sdist = { url = "https://files.pythonhosted.org/packages/09/e5/06d23afac9973109d1e3c8ad38e1547a12e860610e327c05ee686827dc37/pydantic-2.13.2.tar.gz", hash = "sha256:b418196607e61081c3226dcd4f0672f2a194828abb9109e9cfb84026564df2d1", size = 843836, upload-time = "2026-04-17T09:31:59.636Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/81/5a/2225f4c176dbfed0d809e848b50ef08f70e61daa667b7fa14b0d311ae44d/pydantic-2.13.1-py3-none-any.whl", hash = "sha256:9557ecc2806faaf6037f85b1fbd963d01e30511c48085f0d573650fdeaad378a", size = 471917, upload-time = "2026-04-15T14:57:17.277Z" }, + { url = "https://files.pythonhosted.org/packages/77/ca/b45c378e6e8d0b90577288b533e04e95b7afd61bb1d51b6c263176435489/pydantic-2.13.2-py3-none-any.whl", hash = "sha256:a525087f4c03d7e7456a3de89b64cd693d2229933bb1068b9af6befd5563694e", size = 471947, upload-time = "2026-04-17T09:31:57.541Z" }, ] [package.optional-dependencies] @@ -4930,118 +4943,118 @@ xai = [ [[package]] name = "pydantic-core" -version = "2.46.1" +version = "2.46.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a1/93/f97a86a7eb28faa1d038af2fd5d6166418b4433659108a4c311b57128b2d/pydantic_core-2.46.1.tar.gz", hash = "sha256:d408153772d9f298098fb5d620f045bdf0f017af0d5cb6e309ef8c205540caa4", size = 471230, upload-time = "2026-04-15T14:49:34.52Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a2/a0/07f275411355b567b994e565bc5ea9dbf522978060c18e3b7edf646c0fc2/pydantic_core-2.46.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:84eb5414871fd0293c38d2075802f95030ff11a92cf2189942bf76fd181af77b", size = 2123782, upload-time = "2026-04-15T14:52:57.172Z" }, - { url = "https://files.pythonhosted.org/packages/ab/71/d027c7de46df5b9287ed6f0ef02346c84d61348326253a4f13695d54d66f/pydantic_core-2.46.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5c75fb25db086bf504c55730442e471c12bc9bfae817dd359b1a36bc93049d34", size = 1948561, upload-time = "2026-04-15T14:53:12.07Z" }, - { url = "https://files.pythonhosted.org/packages/77/74/cba894bea0d51a3b2dcada9eb3af9c4cfaa271bf21123372dc82ccef029f/pydantic_core-2.46.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29dc09f0221425453fd9f73fd70bba15817d25b95858282702d7305a08d37306", size = 1974387, upload-time = "2026-04-15T14:50:14.048Z" }, - { url = "https://files.pythonhosted.org/packages/3b/ad/cc122887d6f20ac5d997928b0bf3016ac9c7bae07dce089333aa0c2e868b/pydantic_core-2.46.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:139fd6722abc5e6513aa0a27b06ebeb997838c5b179cf5e83862ace45f281c56", size = 2054868, upload-time = "2026-04-15T14:49:51.912Z" }, - { url = "https://files.pythonhosted.org/packages/9f/09/22049b22d65a67253cbdced88dbce0e97162f35cc433917df37df794ede8/pydantic_core-2.46.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba723fd8ef6011af71f92ed54adb604e7699d172f4273e4b46f1cfb8ee8d72fd", size = 2228717, upload-time = "2026-04-15T14:49:27.384Z" }, - { url = "https://files.pythonhosted.org/packages/e6/98/b35a8a187cf977462668b5064c606e290c88c2561e053883d86193ab9c51/pydantic_core-2.46.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:828410e082555e55da9bbb5e6c17617386fe1415c4d42765a90d372ed9cce813", size = 2298261, upload-time = "2026-04-15T14:52:20.463Z" }, - { url = "https://files.pythonhosted.org/packages/98/ae/46f8d693caefc09d8e2d3f19a6b4f2252cf6542f0b555759f2b5ec2b4ca5/pydantic_core-2.46.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb5cd53264c9906c163a71b489e9ac71b0ae13a2dd0241e6129f4df38ba1c814", size = 2094496, upload-time = "2026-04-15T14:49:59.711Z" }, - { url = "https://files.pythonhosted.org/packages/ee/40/7e4013639d316d2cb67dae288c768d49cc4a7a4b16ef869e486880db1a1f/pydantic_core-2.46.1-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:4530a6594883d9d4a9c7ef68464ef6b4a88d839e3531c089a3942c78bffe0a66", size = 2144795, upload-time = "2026-04-15T14:52:44.731Z" }, - { url = "https://files.pythonhosted.org/packages/0d/87/c00f6450059804faf30f568009c8c98e72e6802c1ccd8b562da57953ad81/pydantic_core-2.46.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ed1c71f60abbf9c9a440dc8fc6b1180c45dcab3a5e311250de99744a0166bc95", size = 2173108, upload-time = "2026-04-15T14:51:37.806Z" }, - { url = "https://files.pythonhosted.org/packages/46/15/7a8fb06c109a07dbc1f5f272b2da1290c8a25f5900a579086e433049fc1a/pydantic_core-2.46.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:254253491f1b8e3ba18c15fe924bb9b175f1a48413b74e8f0c67b8f51b6f726b", size = 2185687, upload-time = "2026-04-15T14:51:33.125Z" }, - { url = "https://files.pythonhosted.org/packages/d9/38/c52ead78febf23d32db898c7022173c674226cf3c8ee1645220ab9516931/pydantic_core-2.46.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:dfcf6485ac38698a5b45f37467b8eb2f4f8e3edd5790e2579c5d52fdfffb2e3d", size = 2326273, upload-time = "2026-04-15T14:51:10.614Z" }, - { url = "https://files.pythonhosted.org/packages/1e/af/cb5ea2336e9938b3a0536ce4bfed4a342285caa8a6b8ff449a7bc2f179ec/pydantic_core-2.46.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:592b39150ab5b5a2cb2eb885097ee4c2e4d54e3b902f6ae32528f7e6e42c00fc", size = 2368428, upload-time = "2026-04-15T14:49:25.804Z" }, - { url = "https://files.pythonhosted.org/packages/a2/99/adcfbcbd96556120e7d795aab4fd77f5104a49051929c3805a9d736ec48f/pydantic_core-2.46.1-cp310-cp310-win32.whl", hash = "sha256:eb37b1369ad39ec046a36dc81ffd76870766bda2073f57448bbcb1fd3e4c5ad0", size = 1993405, upload-time = "2026-04-15T14:50:51.082Z" }, - { url = "https://files.pythonhosted.org/packages/c4/ff/2767be513a250293f80748740ce73b0f0677711fc791b1afab3499734dd2/pydantic_core-2.46.1-cp310-cp310-win_amd64.whl", hash = "sha256:c330dab8254d422880177436a5892ac6d9337afff9fe383fb1f8c6caedb685e1", size = 2068177, upload-time = "2026-04-15T14:52:29.899Z" }, - { url = "https://files.pythonhosted.org/packages/37/96/d83d23fc3c822326d808b8c0457d4f7afb1552e741a7c2378a974c522c63/pydantic_core-2.46.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:f0f84431981c6ae217ebb96c3eca8212f6f5edf116f62f62cc6c7d72971f826c", size = 2121938, upload-time = "2026-04-15T14:49:21.568Z" }, - { url = "https://files.pythonhosted.org/packages/11/44/94b1251825560f5d90e25ebcd457c4772e1f3e1a378f438c040fe2148f3e/pydantic_core-2.46.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a05f60b36549f59ab585924410187276ec17a94bae939273a213cea252c8471e", size = 1946541, upload-time = "2026-04-15T14:49:57.925Z" }, - { url = "https://files.pythonhosted.org/packages/d6/8f/79aff4c8bd6fb49001ffe4747c775c0f066add9da13dec180eb0023ada34/pydantic_core-2.46.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2c93fd1693afdfae7b2897f7530ed3f180d9fc92ee105df3ebdff24d5061cc8", size = 1973067, upload-time = "2026-04-15T14:51:14.765Z" }, - { url = "https://files.pythonhosted.org/packages/56/01/826ab3afb1d43cbfdc2aa592bff0f1f6f4b90f5a801478ba07bde74e706f/pydantic_core-2.46.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0c19983759394c702a776f42f33df8d7bb7883aefaa44a69ba86356a9fd67367", size = 2053146, upload-time = "2026-04-15T14:51:48.847Z" }, - { url = "https://files.pythonhosted.org/packages/6c/32/be20ec48ccbd85cac3f8d96ca0a0f87d5c14fbf1eb438da0ac733f2546f2/pydantic_core-2.46.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6e8debf586d7d800a718194417497db5126d4f4302885a2dff721e9df3f4851c", size = 2227393, upload-time = "2026-04-15T14:51:53.218Z" }, - { url = "https://files.pythonhosted.org/packages/b5/8e/1fae21c887f363ed1a5cf9f267027700c796b7435313c21723cd3e8aeeb3/pydantic_core-2.46.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:54160da754d63da7780b76e5743d44f026b9daffc6b8c9696a756368c0a298c9", size = 2296193, upload-time = "2026-04-15T14:50:31.065Z" }, - { url = "https://files.pythonhosted.org/packages/0a/29/e5637b539458ffb60ba9c204fc16c52ea36828427fa667e4f9c7d83cfea9/pydantic_core-2.46.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:74cee962c8b4df9a9b0bb63582e51986127ee2316f0c49143b2996f4b201bd9c", size = 2092156, upload-time = "2026-04-15T14:52:37.227Z" }, - { url = "https://files.pythonhosted.org/packages/bc/fa/3a453934af019c72652fb75489c504ae689de632fa2e037fec3195cd6948/pydantic_core-2.46.1-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:0ba3462872a678ebe21b15bd78eff40298b43ea50c26f230ec535c00cf93ec7e", size = 2142845, upload-time = "2026-04-15T14:51:04.847Z" }, - { url = "https://files.pythonhosted.org/packages/36/c2/71b56fa10a80b98036f4bf0fbb912833f8e9c61b15e66c236fadaf54c27c/pydantic_core-2.46.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b718873a966d91514c5252775f568985401b54a220919ab22b19a6c4edd8c053", size = 2170756, upload-time = "2026-04-15T14:50:17.16Z" }, - { url = "https://files.pythonhosted.org/packages/e1/da/a4c761dc8d982e2c53f991c0c36d37f6fe308e149bf0a101c25b0750a893/pydantic_core-2.46.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cb1310a9fd722da8cceec1fb59875e1c86bee37f0d8a9c667220f00ee722cc8f", size = 2183579, upload-time = "2026-04-15T14:51:20.888Z" }, - { url = "https://files.pythonhosted.org/packages/e5/d4/b0a6c00622e4afd9a807b8bb05ba8f1a0b69ca068ac138d9d36700fe767b/pydantic_core-2.46.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:98e3ede76eb4b9db8e7b5efea07a3f3315135485794a5df91e3adf56c4d573b6", size = 2324516, upload-time = "2026-04-15T14:52:32.521Z" }, - { url = "https://files.pythonhosted.org/packages/45/f1/a4bace0c98b0774b02de99233882c48d94b399ba4394dd5e209665d05062/pydantic_core-2.46.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:780b8f24ff286e21fd010247011a68ea902c34b1eee7d775b598bc28f5f28ab6", size = 2367084, upload-time = "2026-04-15T14:50:37.832Z" }, - { url = "https://files.pythonhosted.org/packages/3a/54/ae827a3976b136d1c9a9a56c2299a8053605a69facaa0c7354ba167305eb/pydantic_core-2.46.1-cp311-cp311-win32.whl", hash = "sha256:1d452f4cad0f39a94414ca68cda7cc55ff4c3801b5ab0bc99818284a3d39f889", size = 1992061, upload-time = "2026-04-15T14:51:44.704Z" }, - { url = "https://files.pythonhosted.org/packages/55/ae/d85de69e0fdfafc0e87d88bd5d0c157a5443efaaef24eed152a8a8f8dfb6/pydantic_core-2.46.1-cp311-cp311-win_amd64.whl", hash = "sha256:f463fd6a67138d70200d2627676e9efbb0cee26d98a5d3042a35aa20f95ec129", size = 2065497, upload-time = "2026-04-15T14:51:17.077Z" }, - { url = "https://files.pythonhosted.org/packages/46/a7/9eb3b1038db630e1550924e81d1211b0dd70ac3740901fd95f30f5497990/pydantic_core-2.46.1-cp311-cp311-win_arm64.whl", hash = "sha256:155aec0a117140e86775eec113b574c1c299358bfd99467b2ea7b2ea26db2614", size = 2045914, upload-time = "2026-04-15T14:51:24.782Z" }, - { url = "https://files.pythonhosted.org/packages/ce/fb/caaa8ee23861c170f07dbd58fc2be3a2c02a32637693cbb23eef02e84808/pydantic_core-2.46.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:ae8c8c5eb4c796944f3166f2f0dab6c761c2c2cc5bd20e5f692128be8600b9a4", size = 2119472, upload-time = "2026-04-15T14:49:45.946Z" }, - { url = "https://files.pythonhosted.org/packages/fa/61/bcffaa52894489ff89e5e1cdde67429914bf083c0db7296bef153020f786/pydantic_core-2.46.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:daba6f5f5b986aa0682623a1a4f8d1ecb0ec00ce09cfa9ca71a3b742bc383e3a", size = 1951230, upload-time = "2026-04-15T14:52:27.646Z" }, - { url = "https://files.pythonhosted.org/packages/f8/95/80d2f43a2a1a1e3220fd329d614aa5a39e0a75d24353a3aaf226e605f1c2/pydantic_core-2.46.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0265f3a2460539ecc97817a80c7a23c458dd84191229b655522a2674f701f14e", size = 1976394, upload-time = "2026-04-15T14:50:32.742Z" }, - { url = "https://files.pythonhosted.org/packages/8d/31/2c5b1a207926b5fc1961a2d11da940129bc3841c36cc4df03014195b2966/pydantic_core-2.46.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb16c0156c4b4e94aa3719138cc43c53d30ff21126b6a3af63786dcc0757b56e", size = 2068455, upload-time = "2026-04-15T14:50:01.286Z" }, - { url = "https://files.pythonhosted.org/packages/7d/36/c6aa07274359a51ac62895895325ce90107e811c6cea39d2617a99ef10d7/pydantic_core-2.46.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1b42d80fad8e4b283e1e4138f1142f0d038c46d137aad2f9824ad9086080dd41", size = 2239049, upload-time = "2026-04-15T14:53:02.216Z" }, - { url = "https://files.pythonhosted.org/packages/0a/3f/77cdd0db8bddc714842dfd93f737c863751cf02001c993341504f6b0cd53/pydantic_core-2.46.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9cced85896d5b795293bc36b7e2fb0347a36c828551b50cbba510510d928548c", size = 2318681, upload-time = "2026-04-15T14:50:04.539Z" }, - { url = "https://files.pythonhosted.org/packages/a1/a3/09d929a40e6727274b0b500ad06e1b3f35d4f4665ae1c8ba65acbb17e9b5/pydantic_core-2.46.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a641cb1e74b44c418adaf9f5f450670dbec53511f030d8cde8d8accb66edc363", size = 2096527, upload-time = "2026-04-15T14:53:14.766Z" }, - { url = "https://files.pythonhosted.org/packages/89/ae/544c3a82456ebc254a9fcbe2715bab76c70acf9d291aaea24391147943e4/pydantic_core-2.46.1-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:191e7a122ab14eb12415fe3f92610fc06c7f1d2b4b9101d24d490d447ac92506", size = 2170407, upload-time = "2026-04-15T14:51:27.138Z" }, - { url = "https://files.pythonhosted.org/packages/9d/ce/0dfd881c7af4c522f47b325707bd9a2cdcf4f40e4f2fd30df0e9a3e8d393/pydantic_core-2.46.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4fe4ff660f7938b5d92f21529ce331b011aa35e481ab64b7cd03f52384e544bb", size = 2188578, upload-time = "2026-04-15T14:50:39.655Z" }, - { url = "https://files.pythonhosted.org/packages/a1/e9/980ea2a6d5114dd1a62ecc5f56feb3d34555f33bd11043f042e5f7f0724a/pydantic_core-2.46.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:18fcea085b3adc3868d8d19606da52d7a52d8bccd8e28652b0778dbe5e6a6660", size = 2188959, upload-time = "2026-04-15T14:52:42.243Z" }, - { url = "https://files.pythonhosted.org/packages/e7/f1/595e0f50f4bfc56cde2fe558f2b0978f29f2865da894c6226231e17464a5/pydantic_core-2.46.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:e8e589e7c9466e022d79e13c5764c2239b2e5a7993ba727822b021234f89b56b", size = 2339973, upload-time = "2026-04-15T14:52:10.642Z" }, - { url = "https://files.pythonhosted.org/packages/49/44/be9f979a6ab6b8c36865ccd92c3a38a760c66055e1f384665f35525134c4/pydantic_core-2.46.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f78eb3d4027963bdc9baccd177f02a98bf8714bc51fe17153d8b51218918b5bc", size = 2385228, upload-time = "2026-04-15T14:51:00.77Z" }, - { url = "https://files.pythonhosted.org/packages/5b/d4/c826cd711787d240219f01d0d3ca116cb55516b8b95277820aa9c85e1882/pydantic_core-2.46.1-cp312-cp312-win32.whl", hash = "sha256:54fe30c20cab03844dc63bdc6ddca67f74a2eb8482df69c1e5f68396856241be", size = 1978828, upload-time = "2026-04-15T14:50:29.362Z" }, - { url = "https://files.pythonhosted.org/packages/22/05/8a1fcf8181be4c7a9cfc34e5fbf2d9c3866edc9dfd3c48d5401806e0a523/pydantic_core-2.46.1-cp312-cp312-win_amd64.whl", hash = "sha256:aea4e22ed4c53f2774221435e39969a54d2e783f4aee902cdd6c8011415de893", size = 2070015, upload-time = "2026-04-15T14:49:47.301Z" }, - { url = "https://files.pythonhosted.org/packages/61/d5/fea36ad2882b99c174ef4ffbc7ea6523f6abe26060fbc1f77d6441670232/pydantic_core-2.46.1-cp312-cp312-win_arm64.whl", hash = "sha256:f76fb49c34b4d66aa6e552ce9e852ea97a3a06301a9f01ae82f23e449e3a55f8", size = 2030176, upload-time = "2026-04-15T14:50:47.307Z" }, - { url = "https://files.pythonhosted.org/packages/ff/d2/bda39bad2f426cb5078e6ad28076614d3926704196efe0d7a2a19a99025d/pydantic_core-2.46.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:cdc8a5762a9c4b9d86e204d555444e3227507c92daba06259ee66595834de47a", size = 2119092, upload-time = "2026-04-15T14:49:50.392Z" }, - { url = "https://files.pythonhosted.org/packages/ee/f3/69631e64d69cb3481494b2bddefe0ddd07771209f74e9106d066f9138c2a/pydantic_core-2.46.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ba381dfe9c85692c566ecb60fa5a77a697a2a8eebe274ec5e4d6ec15fafad799", size = 1951400, upload-time = "2026-04-15T14:51:06.588Z" }, - { url = "https://files.pythonhosted.org/packages/53/1c/21cb3db6ae997df31be8e91f213081f72ffa641cb45c89b8a1986832b1f9/pydantic_core-2.46.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1593d8de98207466dc070118322fef68307a0cc6a5625e7b386f6fdae57f9ab6", size = 1976864, upload-time = "2026-04-15T14:50:54.804Z" }, - { url = "https://files.pythonhosted.org/packages/91/9c/05c819f734318ce5a6ca24da300d93696c105af4adb90494ee571303afd8/pydantic_core-2.46.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8262c74a1af5b0fdf795f5537f7145785a63f9fbf9e15405f547440c30017ed8", size = 2066669, upload-time = "2026-04-15T14:51:42.346Z" }, - { url = "https://files.pythonhosted.org/packages/cb/23/fadddf1c7f2f517f58731aea9b35c914e6005250f08dac9b8e53904cdbaa/pydantic_core-2.46.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b88949a24182e83fbbb3f7ca9b7858d0d37b735700ea91081434b7d37b3b444", size = 2238737, upload-time = "2026-04-15T14:50:45.558Z" }, - { url = "https://files.pythonhosted.org/packages/23/07/0cd4f95cb0359c8b1ec71e89c3777e7932c8dfeb9cd54740289f310aaead/pydantic_core-2.46.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b8f3708cd55537aeaf3fd0ea55df0d68d0da51dcb07cbc8508745b34acc4c6e0", size = 2316258, upload-time = "2026-04-15T14:51:08.471Z" }, - { url = "https://files.pythonhosted.org/packages/0c/40/6fc24c3766a19c222a0d60d652b78f0283339d4cd4c173fab06b7ee76571/pydantic_core-2.46.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f79292435fff1d4f0c18d9cfaf214025cc88e4f5104bfaed53f173621da1c743", size = 2097474, upload-time = "2026-04-15T14:49:56.543Z" }, - { url = "https://files.pythonhosted.org/packages/4b/af/f39795d1ce549e35d0841382b9c616ae211caffb88863147369a8d74fba9/pydantic_core-2.46.1-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:a2e607aeb59cf4575bb364470288db3b9a1f0e7415d053a322e3e154c1a0802e", size = 2168383, upload-time = "2026-04-15T14:51:29.269Z" }, - { url = "https://files.pythonhosted.org/packages/e6/32/0d563f74582795779df6cc270c3fc220f49f4daf7860d74a5a6cda8491ff/pydantic_core-2.46.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec5ca190b75878a9f6ae1fc8f5eb678497934475aef3d93204c9fa01e97370b6", size = 2186182, upload-time = "2026-04-15T14:50:19.097Z" }, - { url = "https://files.pythonhosted.org/packages/5c/07/1c10d5ce312fc4cf86d1e50bdcdbb8ef248409597b099cab1b4bb3a093f7/pydantic_core-2.46.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:1f80535259dcdd517d7b8ca588d5ca24b4f337228e583bebedf7a3adcdf5f721", size = 2187859, upload-time = "2026-04-15T14:49:22.974Z" }, - { url = "https://files.pythonhosted.org/packages/92/01/e1f62d4cb39f0913dbf5c95b9b119ef30ddba9493dff8c2b012f0cdd67dc/pydantic_core-2.46.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:24820b3c82c43df61eca30147e42853e6c127d8b868afdc0c162df829e011eb4", size = 2338372, upload-time = "2026-04-15T14:49:53.316Z" }, - { url = "https://files.pythonhosted.org/packages/44/ed/218dfeea6127fb1781a6ceca241ec6edf00e8a8933ff331af2215975a534/pydantic_core-2.46.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:f12794b1dd8ac9fb66619e0b3a0427189f5d5638e55a3de1385121a9b7bf9b39", size = 2384039, upload-time = "2026-04-15T14:53:04.929Z" }, - { url = "https://files.pythonhosted.org/packages/6c/1e/011e763cd059238249fbd5780e0f8d0b04b47f86c8925e22784f3e5fc977/pydantic_core-2.46.1-cp313-cp313-win32.whl", hash = "sha256:9bc09aed935cdf50f09e908923f9efbcca54e9244bd14a5a0e2a6c8d2c21b4e9", size = 1977943, upload-time = "2026-04-15T14:52:17.969Z" }, - { url = "https://files.pythonhosted.org/packages/8c/06/b559a490d3ed106e9b1777b8d5c8112dd8d31716243cd662616f66c1f8ea/pydantic_core-2.46.1-cp313-cp313-win_amd64.whl", hash = "sha256:fac2d6c8615b8b42bee14677861ba09d56ee076ba4a65cfb9c3c3d0cc89042f2", size = 2068729, upload-time = "2026-04-15T14:53:07.288Z" }, - { url = "https://files.pythonhosted.org/packages/9f/52/32a198946e2e19508532aa9da02a61419eb15bd2d96bab57f810f2713e31/pydantic_core-2.46.1-cp313-cp313-win_arm64.whl", hash = "sha256:f978329f12ace9f3cb814a5e44d98bbeced2e36f633132bafa06d2d71332e33e", size = 2029550, upload-time = "2026-04-15T14:52:22.707Z" }, - { url = "https://files.pythonhosted.org/packages/bd/2b/6793fe89ab66cb2d3d6e5768044eab80bba1d0fae8fd904d0a1574712e17/pydantic_core-2.46.1-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:9917cb61effac7ec0f448ef491ec7584526d2193be84ff981e85cbf18b68c42a", size = 2118110, upload-time = "2026-04-15T14:50:52.947Z" }, - { url = "https://files.pythonhosted.org/packages/d2/87/e9a905ddfcc2fd7bd862b340c02be6ab1f827922822d425513635d0ac774/pydantic_core-2.46.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0e749679ca9f8a9d0bff95fb7f6b57bb53f2207fa42ffcc1ec86de7e0029ab89", size = 1948645, upload-time = "2026-04-15T14:51:55.577Z" }, - { url = "https://files.pythonhosted.org/packages/15/23/26e67f86ed62ac9d6f7f3091ee5220bf14b5ac36fb811851d601365ef896/pydantic_core-2.46.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2ecacee70941e233a2dad23f7796a06f86cc10cc2fbd1c97c7dd5b5a79ffa4f", size = 1977576, upload-time = "2026-04-15T14:49:37.58Z" }, - { url = "https://files.pythonhosted.org/packages/b8/78/813c13c0de323d4de54ee2e6fdd69a0271c09ac8dd65a8a000931aa487a5/pydantic_core-2.46.1-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:647d0a2475b8ed471962eed92fa69145b864942f9c6daa10f95ac70676637ae7", size = 2060358, upload-time = "2026-04-15T14:51:40.087Z" }, - { url = "https://files.pythonhosted.org/packages/09/5e/4caf2a15149271fbd2b4d968899a450853c800b85152abcf54b11531417f/pydantic_core-2.46.1-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac9cde61965b0697fce6e6cc372df9e1ad93734828aac36e9c1c42a22ad02897", size = 2235980, upload-time = "2026-04-15T14:50:34.535Z" }, - { url = "https://files.pythonhosted.org/packages/c2/c1/a2cdabb5da6f5cb63a3558bcafffc20f790fa14ccffbefbfb1370fadc93f/pydantic_core-2.46.1-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0a2eb0864085f8b641fb3f54a2fb35c58aff24b175b80bc8a945050fcde03204", size = 2316800, upload-time = "2026-04-15T14:52:46.999Z" }, - { url = "https://files.pythonhosted.org/packages/76/fd/19d711e4e9331f9d77f222bffc202bf30ea0d74f6419046376bb82f244c8/pydantic_core-2.46.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b83ce9fede4bc4fb649281d9857f06d30198b8f70168f18b987518d713111572", size = 2101762, upload-time = "2026-04-15T14:49:24.278Z" }, - { url = "https://files.pythonhosted.org/packages/dc/64/ce95625448e1a4e219390a2923fd594f3fa368599c6b42ac71a5df7238c9/pydantic_core-2.46.1-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:cb33192753c60f269d2f4a1db8253c95b0df6e04f2989631a8cc1b0f4f6e2e92", size = 2167737, upload-time = "2026-04-15T14:50:41.637Z" }, - { url = "https://files.pythonhosted.org/packages/ad/31/413572d03ca3e73b408f00f54418b91a8be6401451bc791eaeff210328e5/pydantic_core-2.46.1-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:96611d51f953f87e1ae97637c01ee596a08b7f494ea00a5afb67ea6547b9f53b", size = 2185658, upload-time = "2026-04-15T14:51:46.799Z" }, - { url = "https://files.pythonhosted.org/packages/36/09/e4f581353bdf3f0c7de8a8b27afd14fc761da29d78146376315a6fedc487/pydantic_core-2.46.1-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:9b176fa55f9107db5e6c86099aa5bfd934f1d3ba6a8b43f714ddeebaed3f42b7", size = 2184154, upload-time = "2026-04-15T14:52:49.629Z" }, - { url = "https://files.pythonhosted.org/packages/1a/a4/d0d52849933f5a4bf1ad9d8da612792f96469b37e286a269e3ee9c60bbb1/pydantic_core-2.46.1-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:79a59f63a4ce4f3330e27e6f3ce281dd1099453b637350e97d7cf24c207cd120", size = 2332379, upload-time = "2026-04-15T14:49:55.009Z" }, - { url = "https://files.pythonhosted.org/packages/30/93/25bfb08fdbef419f73290e573899ce938a327628c34e8f3a4bafeea30126/pydantic_core-2.46.1-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:f200fce071808a385a314b7343f5e3688d7c45746be3d64dc71ee2d3e2a13268", size = 2377964, upload-time = "2026-04-15T14:51:59.649Z" }, - { url = "https://files.pythonhosted.org/packages/15/36/b777766ff83fef1cf97473d64764cd44f38e0d8c269ed06faace9ae17666/pydantic_core-2.46.1-cp314-cp314-win32.whl", hash = "sha256:3a07eccc0559fb9acc26d55b16bf8ebecd7f237c74a9e2c5741367db4e6d8aff", size = 1976450, upload-time = "2026-04-15T14:51:57.665Z" }, - { url = "https://files.pythonhosted.org/packages/7b/4b/4cd19d2437acfc18ca166db5a2067040334991eb862c4ecf2db098c91fbf/pydantic_core-2.46.1-cp314-cp314-win_amd64.whl", hash = "sha256:1706d270309ac7d071ffe393988c471363705feb3d009186e55d17786ada9622", size = 2067750, upload-time = "2026-04-15T14:49:38.941Z" }, - { url = "https://files.pythonhosted.org/packages/7f/a0/490751c0ef8f5b27aae81731859aed1508e72c1a9b5774c6034269db773b/pydantic_core-2.46.1-cp314-cp314-win_arm64.whl", hash = "sha256:22d4e7457ade8af06528012f382bc994a97cc2ce6e119305a70b3deff1e409d6", size = 2021109, upload-time = "2026-04-15T14:50:27.728Z" }, - { url = "https://files.pythonhosted.org/packages/36/3a/2a018968245fffd25d5f1972714121ad309ff2de19d80019ad93494844f9/pydantic_core-2.46.1-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:607ff9db0b7e2012e7eef78465e69f9a0d7d1c3e7c6a84cf0c4011db0fcc3feb", size = 2111548, upload-time = "2026-04-15T14:52:08.273Z" }, - { url = "https://files.pythonhosted.org/packages/77/5b/4103b6192213217e874e764e5467d2ff10d8873c1147d01fa432ac281880/pydantic_core-2.46.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:8cda3eacaea13bd02a1bea7e457cc9fc30b91c5a91245cef9b215140f80dd78c", size = 1926745, upload-time = "2026-04-15T14:50:03.045Z" }, - { url = "https://files.pythonhosted.org/packages/c3/70/602a667cf4be4bec6c3334512b12ae4ea79ce9bfe41dc51be1fd34434453/pydantic_core-2.46.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9493279cdc7997fe19e5ed9b41f30cbc3806bd4722adb402fedb6f6d41bd72a", size = 1965922, upload-time = "2026-04-15T14:51:12.555Z" }, - { url = "https://files.pythonhosted.org/packages/a9/24/06a89ce5323e755b7d2812189f9706b87aaebe49b34d247b380502f7992c/pydantic_core-2.46.1-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3644e5e10059999202355b6c6616e624909e23773717d8f76deb8a6e2a72328c", size = 2043221, upload-time = "2026-04-15T14:51:18.995Z" }, - { url = "https://files.pythonhosted.org/packages/2c/6e/b1d9ad907d9d76964903903349fd2e33c87db4b993cc44713edcad0fc488/pydantic_core-2.46.1-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4ad6c9de57683e26c92730991960c0c3571b8053263b042de2d3e105930b2767", size = 2243655, upload-time = "2026-04-15T14:50:10.718Z" }, - { url = "https://files.pythonhosted.org/packages/ef/73/787abfaad51174641abb04c8aa125322279b40ad7ce23c495f5a69f76554/pydantic_core-2.46.1-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:557ebaa27c7617e7088002318c679a8ce685fa048523417cd1ca52b7f516d955", size = 2295976, upload-time = "2026-04-15T14:53:09.694Z" }, - { url = "https://files.pythonhosted.org/packages/56/0b/b7c5a631b6d5153d4a1ea4923b139aea256dc3bd99c8e6c7b312c7733146/pydantic_core-2.46.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cd37e39b22b796ba0298fe81e9421dd7b65f97acfbb0fb19b33ffdda7b9a7b4", size = 2103439, upload-time = "2026-04-15T14:50:08.32Z" }, - { url = "https://files.pythonhosted.org/packages/2a/3f/952ee470df69e5674cdec1cbde22331adf643b5cc2ff79f4292d80146ee4/pydantic_core-2.46.1-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:6689443b59714992e67d62505cdd2f952d6cf1c14cc9fd9aeec6719befc6f23b", size = 2132871, upload-time = "2026-04-15T14:50:24.445Z" }, - { url = "https://files.pythonhosted.org/packages/e3/8b/1dea3b1e683c60c77a60f710215f90f486755962aa8939dbcb7c0f975ac3/pydantic_core-2.46.1-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6f32c41ca1e3456b5dd691827b7c1433c12d5f0058cc186afbb3615bc07d97b8", size = 2168658, upload-time = "2026-04-15T14:52:24.897Z" }, - { url = "https://files.pythonhosted.org/packages/67/97/32ae283810910d274d5ba9f48f856f5f2f612410b78b249f302d297816f5/pydantic_core-2.46.1-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:88cd1355578852db83954dc36e4f58f299646916da976147c20cf6892ba5dc43", size = 2171184, upload-time = "2026-04-15T14:52:34.854Z" }, - { url = "https://files.pythonhosted.org/packages/a2/57/c9a855527fe56c2072070640221f53095b0b19eaf651f3c77643c9cabbe3/pydantic_core-2.46.1-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:a170fefdb068279a473cc9d34848b85e61d68bfcc2668415b172c5dfc6f213bf", size = 2316573, upload-time = "2026-04-15T14:52:12.871Z" }, - { url = "https://files.pythonhosted.org/packages/37/b3/14c39ffc7399819c5448007c7bcb4e6da5669850cfb7dcbb727594290b48/pydantic_core-2.46.1-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:556a63ff1006934dba4eed7ea31b58274c227e29298ec398e4275eda4b905e95", size = 2378340, upload-time = "2026-04-15T14:51:02.619Z" }, - { url = "https://files.pythonhosted.org/packages/01/55/a37461fbb29c053ea4e62cfc5c2d56425cb5efbef8316e63f6d84ae45718/pydantic_core-2.46.1-cp314-cp314t-win32.whl", hash = "sha256:3b146d8336a995f7d7da6d36e4a779b7e7dff2719ac00a1eb8bd3ded00bec87b", size = 1960843, upload-time = "2026-04-15T14:52:06.103Z" }, - { url = "https://files.pythonhosted.org/packages/22/d7/97e1221197d17a27f768363f87ec061519eeeed15bbd315d2e9d1429ff03/pydantic_core-2.46.1-cp314-cp314t-win_amd64.whl", hash = "sha256:f1bc856c958e6fe9ec071e210afe6feb695f2e2e81fd8d2b102f558d364c4c17", size = 2048696, upload-time = "2026-04-15T14:52:52.154Z" }, - { url = "https://files.pythonhosted.org/packages/19/d5/4eac95255c7d35094b46a32ec1e4d80eac94729c694726ee1d69948bd5f0/pydantic_core-2.46.1-cp314-cp314t-win_arm64.whl", hash = "sha256:21a5bfd8a1aa4de60494cdf66b0c912b1495f26a8899896040021fbd6038d989", size = 2022343, upload-time = "2026-04-15T14:49:49.036Z" }, - { url = "https://files.pythonhosted.org/packages/44/4b/1952d38a091aa7572c13460db4439d5610a524a1a533fb131e17d8eff9c2/pydantic_core-2.46.1-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:c56887c0ffa05318128a80303c95066a9d819e5e66d75ff24311d9e0a58d6930", size = 2123089, upload-time = "2026-04-15T14:50:20.658Z" }, - { url = "https://files.pythonhosted.org/packages/90/06/f3623aa98e2d7cb4ed0ae0b164c5d8a1b86e5aca01744eba980eefcd5da4/pydantic_core-2.46.1-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:614b24b875c1072631065fa85e195b40700586afecb0b27767602007920dacf8", size = 1945481, upload-time = "2026-04-15T14:50:56.945Z" }, - { url = "https://files.pythonhosted.org/packages/69/f9/a9224203b8426893e22db2cf0da27cd930ad7d76e0a611ebd707e5e6c916/pydantic_core-2.46.1-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a6382f6967c48519b6194e9e1e579e5898598b682556260eeaf05910400d827e", size = 1986294, upload-time = "2026-04-15T14:49:31.839Z" }, - { url = "https://files.pythonhosted.org/packages/96/29/954d2174db68b9f14292cef3ae8a05a25255735909adfcf45ca768023713/pydantic_core-2.46.1-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93cb8aa6c93fb833bb53f3a2841fbea6b4dc077453cd5b30c0634af3dee69369", size = 2144185, upload-time = "2026-04-15T14:52:39.449Z" }, - { url = "https://files.pythonhosted.org/packages/f4/97/95de673a1356a88b2efdaa120eb6af357a81555c35f6809a7a1423ff7aef/pydantic_core-2.46.1-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:5f9107a24a4bc00293434dfa95cf8968751ad0dd703b26ea83a75a56f7326041", size = 2107564, upload-time = "2026-04-15T14:50:49.14Z" }, - { url = "https://files.pythonhosted.org/packages/00/fc/a7c16d85211ea9accddc693b7d049f20b0c06440d9264d1e1c074394ee6c/pydantic_core-2.46.1-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:2b1801ba99876984d0a03362782819238141c4d0f3f67f69093663691332fc35", size = 1939925, upload-time = "2026-04-15T14:50:36.188Z" }, - { url = "https://files.pythonhosted.org/packages/2e/23/87841169d77820ddabeb81d82002c95dcb82163846666d74f5bdeeaec750/pydantic_core-2.46.1-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7fd82a91a20ed6d54fa8c91e7a98255b1ff45bf09b051bfe7fe04eb411e232e", size = 1995313, upload-time = "2026-04-15T14:50:22.538Z" }, - { url = "https://files.pythonhosted.org/packages/ea/96/b46609359a354fa9cd336fc5d93334f1c358b756cc81e4b397347a88fa6f/pydantic_core-2.46.1-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f135bf07c92c93def97008bc4496d16934da9efefd7204e5f22a2c92523cb1f", size = 2151197, upload-time = "2026-04-15T14:51:22.925Z" }, - { url = "https://files.pythonhosted.org/packages/f5/e7/3d1d2999ad8e78b124c752e4fc583ecd98f3bea7cc42045add2fb6e31b62/pydantic_core-2.46.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b44b44537efbff2df9567cd6ba51b554d6c009260a021ab25629c81e066f1683", size = 2121103, upload-time = "2026-04-15T14:52:59.537Z" }, - { url = "https://files.pythonhosted.org/packages/de/08/50a56632994007c7a58c86f782accccbe2f3bb7ca80f462533e26424cd18/pydantic_core-2.46.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:8f9ca3af687cc6a5c89aeaa00323222fcbceb4c3cdc78efdac86f46028160c04", size = 1952464, upload-time = "2026-04-15T14:52:04.001Z" }, - { url = "https://files.pythonhosted.org/packages/75/0b/3cf631e33a55b1788add3e42ac921744bd1f39279082a027b4ef6f48bd32/pydantic_core-2.46.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2678a4cbc205f00a44542dca19d15c11ccddd7440fd9df0e322e2cae55bb67a", size = 2138504, upload-time = "2026-04-15T14:52:01.812Z" }, - { url = "https://files.pythonhosted.org/packages/fa/69/f96f3dfc939450b9aeb80d3fe1943e7bc0614b14e9447d84f48d65153e0c/pydantic_core-2.46.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e5a98cbb03a8a7983b0fb954e0af5e7016587f612e6332c6a4453f413f1d1851", size = 2165467, upload-time = "2026-04-15T14:52:15.455Z" }, - { url = "https://files.pythonhosted.org/packages/a8/22/bb61cccddc2ce85b179cd81a580a1746e880870060fbf4bf6024dab7e8aa/pydantic_core-2.46.1-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:b2f098b08860bd149e090ad232f27fffb5ecf1bfd9377015445c8e17355ec2d1", size = 2183882, upload-time = "2026-04-15T14:51:50.868Z" }, - { url = "https://files.pythonhosted.org/packages/0e/01/b9039da255c5fd3a7fd85344fda8861c847ad6d8fdd115580fa4505b2022/pydantic_core-2.46.1-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:d2623606145b55a96efdd181b015c0356804116b2f14d3c2af4832fe4f45ed5f", size = 2323011, upload-time = "2026-04-15T14:49:40.32Z" }, - { url = "https://files.pythonhosted.org/packages/24/b1/f426b20cb72d0235718ccc4de3bc6d6c0d0c2a91a3fd2f32ae11b624bcc9/pydantic_core-2.46.1-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:420f515c42aaec607ff720867b300235bd393abd709b26b190ceacb57a9bfc17", size = 2365696, upload-time = "2026-04-15T14:49:41.936Z" }, - { url = "https://files.pythonhosted.org/packages/ef/d2/d2b0025246481aa2ce6db8ba196e29b92063343ac76e675b3a1fa478ed4d/pydantic_core-2.46.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:375cfdd2a1049910c82ba2ff24f948e93599a529e0fdb066d747975ca31fc663", size = 2190970, upload-time = "2026-04-15T14:49:33.111Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/43/bb/4742f05b739b2478459bb16fa8470549518c802e06ddcf3f106c5081315e/pydantic_core-2.46.2.tar.gz", hash = "sha256:37bb079f9ee3f1a519392b73fda2a96379b31f2013c6b467fe693e7f2987f596", size = 471269, upload-time = "2026-04-17T09:10:07.017Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a4/f2/98f37e836c5ba0335432768e0d8645e6f50a3c838b48a74d9256256784fc/pydantic_core-2.46.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:160ef93541f4f84e3e5068e6c1f64d8fd6f57586e5853d609b467d3333f8146a", size = 2108178, upload-time = "2026-04-17T09:10:24.689Z" }, + { url = "https://files.pythonhosted.org/packages/55/69/975458de8e5453322cfc57d6c7029c3e66d9e7a4389c53ddd5ad02d5e5da/pydantic_core-2.46.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1a9124b63f4f40a12a0666df57450b4c24b98407ff74349221b869ec085a5d8e", size = 1949232, upload-time = "2026-04-17T09:11:39.536Z" }, + { url = "https://files.pythonhosted.org/packages/94/8d/938175e6e82d051ac4644765680db06571d7e106a42f760da09bd90f6525/pydantic_core-2.46.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:de12004a7da7f1eb67ece37439a5a23a915636085dd042176fda362e006e6940", size = 1974741, upload-time = "2026-04-17T09:13:01.922Z" }, + { url = "https://files.pythonhosted.org/packages/f2/38/7329f8ac5c732bddf15f939c2add40b95170e0ecca5ef124c12def3f78ba/pydantic_core-2.46.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a070c7769fec277409ad0b3d55b2f0a3703a6f00cf5031fe93090f155bf56382", size = 2041905, upload-time = "2026-04-17T09:11:11.94Z" }, + { url = "https://files.pythonhosted.org/packages/99/2c/47cfd069937ee5cbc0d9e18fa9795c8f80c49a6b4fc777d4cd870f2ade7b/pydantic_core-2.46.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:41d701bb34f81f0b11c724cc544b9a10b26a28f4d0d1197f2037c91225708706", size = 2222703, upload-time = "2026-04-17T09:10:31.196Z" }, + { url = "https://files.pythonhosted.org/packages/83/b0/7ed83ca8cd92c99bcab90cf42ed953723fbc19d8a20c8c12bb68c51febc1/pydantic_core-2.46.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:19631e7350b7a574fb6b6db222f4b17e8bd31803074b3307d07df62379d2b2e4", size = 2276317, upload-time = "2026-04-17T09:09:53.263Z" }, + { url = "https://files.pythonhosted.org/packages/85/70/50b1b62990996e7916aae2852b29cbf3ecc3fdae78209eb284cd61e2c918/pydantic_core-2.46.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48b1059e4f2a6ec3e41983148eb1eec5ef9fa3a80bbc4ac0893ac76b115fe039", size = 2092152, upload-time = "2026-04-17T09:10:44.683Z" }, + { url = "https://files.pythonhosted.org/packages/c1/51/a062864e6b34ada7e343ad9ed29368e495620a8ef1c009b47a68b46e1634/pydantic_core-2.46.2-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:df73724fce8ad53c670358c905b37930bd7b9d92e57db640a65c53b2706eee00", size = 2118091, upload-time = "2026-04-17T09:10:05.083Z" }, + { url = "https://files.pythonhosted.org/packages/07/e0/fcc97c4d0319615dc0b5b132b420904639652f8514e9c76482acb70ea1d4/pydantic_core-2.46.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a0891a9be0def16fb320af21a198ece052eed72bf44d73d8ff43f702bd26fd6b", size = 2174304, upload-time = "2026-04-17T09:11:00.54Z" }, + { url = "https://files.pythonhosted.org/packages/00/52/28f53796ca74b7e3dd45938f300517f04970e985ad600d0d0f36a11378bd/pydantic_core-2.46.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:2ca790779aa1cba1329b8dc42ccebada441d9ac1d932de980183d544682c646d", size = 2181444, upload-time = "2026-04-17T09:11:45.442Z" }, + { url = "https://files.pythonhosted.org/packages/22/49/164d5d3a7356d2607a72e77264a3b252a7c7d9362a81fc9df47bef7ae3aa/pydantic_core-2.46.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:6b865eb702c3af71cf7331919a787563ce2413f7a54ef49ec6709a01b4f22ce6", size = 2328611, upload-time = "2026-04-17T09:10:08.574Z" }, + { url = "https://files.pythonhosted.org/packages/6b/77/6266bb3b79c27b533e5ee02c1e3da5848872112178880cc5006a84e857ac/pydantic_core-2.46.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:631bec5f951a30a4b332b4a57d0cdd5a2c8187eb71301f966425f2e54a697855", size = 2351070, upload-time = "2026-04-17T09:13:34.92Z" }, + { url = "https://files.pythonhosted.org/packages/10/7f/d4233852d16d8e85b034a524d8017e051a0aa4acd04c64c3a69a1a2a0ba6/pydantic_core-2.46.2-cp310-cp310-win32.whl", hash = "sha256:8cbd9d67357f3a925f2af1d44db3e8ef1ce1a293ea0add98081b072d4a12e3b4", size = 1976750, upload-time = "2026-04-17T09:13:15.537Z" }, + { url = "https://files.pythonhosted.org/packages/70/31/d65117cf5f89d81705da5b1dcdad8efa0a0b65dbbc7f13cafbabb7d01615/pydantic_core-2.46.2-cp310-cp310-win_amd64.whl", hash = "sha256:dd51dd16182b4bfdcefd27b39b856aa4a57b77f15b231a2d10c45391b0a02028", size = 2073989, upload-time = "2026-04-17T09:12:17.315Z" }, + { url = "https://files.pythonhosted.org/packages/89/91/089f517a725f29084364169437833ab0ae4da4d7a6ed9d4474db7f1412e6/pydantic_core-2.46.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d8060f42db3cd204871db0afd51fef54a13fa544c4dd48cdcae2e174ef40c8ba", size = 2106218, upload-time = "2026-04-17T09:10:48.023Z" }, + { url = "https://files.pythonhosted.org/packages/a0/92/23858ed1b58f2a134e50c2fdd0e34ea72721ccb257e1e9346514e1ccb5b9/pydantic_core-2.46.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:73a9d2809bd8d4a7cda4d336dc996a565eb4feaaa39932f9d85a65fa18382f28", size = 1948087, upload-time = "2026-04-17T09:11:58.639Z" }, + { url = "https://files.pythonhosted.org/packages/5d/ac/e2240fccb4794e965817593d5a46cf5ea22f2001b73fe360b7578925b7d8/pydantic_core-2.46.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b0a2dee92dfaabcfb93629188c3e9cf74fdfc0f22e7c369cb444a98814a1e50", size = 1972931, upload-time = "2026-04-17T09:13:13.304Z" }, + { url = "https://files.pythonhosted.org/packages/1a/da/3b11dab2aa15c5c8ed20a01eb7aa432a78b8e3a4713659f7e58490a020a5/pydantic_core-2.46.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3098446ba8cf774f61cb8d4008c1dba14a30426a15169cd95ac3392a461193b1", size = 2040454, upload-time = "2026-04-17T09:13:47.895Z" }, + { url = "https://files.pythonhosted.org/packages/d7/39/c4cf5e1f1c6c34c53c0902039c95d81dc15cdd1f03634bd1a93f33e70a72/pydantic_core-2.46.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:57c584af6c375ea3f826d8131a94cb212b3d9926eaff67117e3711bbff3a83a5", size = 2221320, upload-time = "2026-04-17T09:13:08.568Z" }, + { url = "https://files.pythonhosted.org/packages/c7/46/891035bc9e93538e754c3188424d24b5a69ec3ae5210fa01d483e99b3302/pydantic_core-2.46.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:547381cca999be88b4715a0ed7afa11f07fc7e53cb1883687b190d25a92c56cf", size = 2274559, upload-time = "2026-04-17T09:11:10.257Z" }, + { url = "https://files.pythonhosted.org/packages/ab/d0/7af0b905b3148152c159c9caf203e7ecd9b90b76389f0862e6ab0cf1b2a3/pydantic_core-2.46.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:caeed15dcb1233a5a94bc6ff37ef5393cf5b33a45e4bdfb2d6042f3d24e1cb27", size = 2089239, upload-time = "2026-04-17T09:13:06.326Z" }, + { url = "https://files.pythonhosted.org/packages/c5/bc/566afe02ba2de37712eece74ac7bfba322abd7916410bf90504f1b17ddad/pydantic_core-2.46.2-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:c05f53362568c75476b5c96659377a5dfd982cfbe5a5c07de5106d08a04efc4f", size = 2116182, upload-time = "2026-04-17T09:11:33.738Z" }, + { url = "https://files.pythonhosted.org/packages/4e/5b/3fcb3a229bbfa23b0e3c65014057af0f9d51ec7a2d9f7adb282f41ff5ac8/pydantic_core-2.46.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2643ac7eae296200dbd48762a1c852cf2cad5f5e3eba34e652053cebf03becf8", size = 2172346, upload-time = "2026-04-17T09:10:46.472Z" }, + { url = "https://files.pythonhosted.org/packages/43/9a/baa9e3aa70ea7bbcb9db0f87162a371649ac80c03e43eb54af193390cf17/pydantic_core-2.46.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:dc4620a47c6fe6a39f89392c00833a82fc050ce90169798f78a25a8d4df03b6e", size = 2179540, upload-time = "2026-04-17T09:11:21.881Z" }, + { url = "https://files.pythonhosted.org/packages/bd/46/912047a5427f949c909495704b3c8b9ead9d1c66f87e96606011beab1fcb/pydantic_core-2.46.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:78cb0d2453b50bf2035f85fd0d9cfabdb98c47f9c53ddb7c23873cd83da9560b", size = 2327423, upload-time = "2026-04-17T09:13:40.291Z" }, + { url = "https://files.pythonhosted.org/packages/e9/bf/c5e661451dc9411c2ab88a244c1ba57644950c971486040dc200f77b69f4/pydantic_core-2.46.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f0c1cbb7d6112932cc188c6be007a5e2867005a069e47f42fe67bf5f122b0908", size = 2348652, upload-time = "2026-04-17T09:10:37.76Z" }, + { url = "https://files.pythonhosted.org/packages/77/b3/3219e7c522af54b010cf7422dcb11cc6616a4414d1ccd628b0d3f61c6af6/pydantic_core-2.46.2-cp311-cp311-win32.whl", hash = "sha256:c1ce5b2366f85cfdbf7f0907755043707f86d09a5b1b1acebbb7bf1600d75c64", size = 1974410, upload-time = "2026-04-17T09:13:27.392Z" }, + { url = "https://files.pythonhosted.org/packages/e5/29/e5cfac8a74c59873dfd47d3a1477c39ad9247639a7120d3e251a9ff12417/pydantic_core-2.46.2-cp311-cp311-win_amd64.whl", hash = "sha256:f1a6197eadff5bd0bb932f12bb038d403cb75db5b0b391e70e816a647745ddaf", size = 2071158, upload-time = "2026-04-17T09:09:57.69Z" }, + { url = "https://files.pythonhosted.org/packages/6f/8b/b7b19b717cdb3675cb109de143f62d4dc62f5d4a0b9879b6f1ace62c6654/pydantic_core-2.46.2-cp311-cp311-win_arm64.whl", hash = "sha256:15e42885b283f87846ee79e161002c5c496ef747a73f6e47054f45a13d9035bc", size = 2043507, upload-time = "2026-04-17T09:09:51.828Z" }, + { url = "https://files.pythonhosted.org/packages/97/ec/2fafa4c86f5d2a69372c7cddef30925fd0e370b1efaf556609c1a0196d8a/pydantic_core-2.46.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:ea1ad8c89da31512fe2d249cf0638fb666925bda341901541bc5f3311c6fcc9e", size = 2101729, upload-time = "2026-04-17T09:12:30.042Z" }, + { url = "https://files.pythonhosted.org/packages/cf/55/be5386c2c4b49af346e8a26b748194ff25757bbb6cf544130854e997af7a/pydantic_core-2.46.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b308da17b92481e0587244631c5529e5d91d04cb2b08194825627b1eca28e21e", size = 1951546, upload-time = "2026-04-17T09:10:10.585Z" }, + { url = "https://files.pythonhosted.org/packages/29/92/89e273a055ce440e6636c756379af35ad86da9d336a560049c3ba5e41c80/pydantic_core-2.46.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d333a50bdd814a917d8d6a7ee35ba2395d53ddaa882613bc24e54a9d8b129095", size = 1976178, upload-time = "2026-04-17T09:11:49.619Z" }, + { url = "https://files.pythonhosted.org/packages/91/b3/e4664469cf70c0cb0f7b2f5719d64e5968bb6f38217042c2afa3d3c4ba17/pydantic_core-2.46.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1d00b99590c5bd1fabbc5d28b170923e32c1b1071b1f1de1851a4d14d89eb192", size = 2051697, upload-time = "2026-04-17T09:12:04.917Z" }, + { url = "https://files.pythonhosted.org/packages/98/58/dbf68213ee06ce51cdd6d8c95f97980e646858c45bd96bd2dfb40433be73/pydantic_core-2.46.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9f0e686960ffe9e65066395af856ac2d52c159043144433602c50c221d81c1ba", size = 2233160, upload-time = "2026-04-17T09:12:00.956Z" }, + { url = "https://files.pythonhosted.org/packages/f5/d3/68092aa0ee6c60ff4de4740eb82db3d4ce338ec89b3cecb978c532472f12/pydantic_core-2.46.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d1128da41c9cb474e0a4701f9c363ec645c9d1a02229904c76bf4e0a194fde2", size = 2298398, upload-time = "2026-04-17T09:10:29.694Z" }, + { url = "https://files.pythonhosted.org/packages/e4/51/5d6155eb737db55b0ad354ca5f333ef009f75feb67df2d79a84bace45af6/pydantic_core-2.46.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48649cf2d8c358d79586e9fb2f8235902fcaa2d969ec1c5301f2d1873b2f8321", size = 2094058, upload-time = "2026-04-17T09:12:10.995Z" }, + { url = "https://files.pythonhosted.org/packages/6b/f3/eb4a986197d71319430464ff181226c95adc8f06d932189b158bae5a82f5/pydantic_core-2.46.2-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:b902f0fc7c2cf503865a05718b68147c6cd5d0a3867af38c527be574a9fa6e9d", size = 2130388, upload-time = "2026-04-17T09:12:41.159Z" }, + { url = "https://files.pythonhosted.org/packages/56/00/44a9c4fe6d0f64b5786d6a8c649d6f0e34ba6c89b3663add1066e54451a2/pydantic_core-2.46.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e80011f808b03d1d87a8f1e76ae3da19a18eb706c823e17981dcf1fae43744fc", size = 2184245, upload-time = "2026-04-17T09:12:36.532Z" }, + { url = "https://files.pythonhosted.org/packages/78/6b/685b98a834d5e3d1c34a1bde1627525559dd223b75075bc7490cdb24eb33/pydantic_core-2.46.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b839d5c802e31348b949b6473f8190cddbf7d47475856d8ac995a373ee16ec59", size = 2186842, upload-time = "2026-04-17T09:13:04.054Z" }, + { url = "https://files.pythonhosted.org/packages/22/64/caa2f5a2ac8b6113adaa410ccdf31ba7f54897a6e54cd0d726fc7e780c88/pydantic_core-2.46.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:c6b1064f3f9cf9072e1d59dd2936f9f3b668bec1c37039708c9222db703c0d5b", size = 2336066, upload-time = "2026-04-17T09:12:13.006Z" }, + { url = "https://files.pythonhosted.org/packages/ee/f9/7d2701bf82945b5b9e7df8347be97ef6a36da2846bfe5b4afec299ffe27b/pydantic_core-2.46.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:37a68e6f2ac95578ce3c0564802404b27b24988649616e556c07e77111ed3f1d", size = 2363691, upload-time = "2026-04-17T09:13:42.972Z" }, + { url = "https://files.pythonhosted.org/packages/3b/65/0dab11574101522941055109419db3cc09db871643dc3fc74e2413215e5b/pydantic_core-2.46.2-cp312-cp312-win32.whl", hash = "sha256:d9ffa75a7ef4b97d6e5e205fabd4304ef01fec09e6f1bdde04b9ad1b07d20289", size = 1958801, upload-time = "2026-04-17T09:11:31.981Z" }, + { url = "https://files.pythonhosted.org/packages/13/2b/df84baa609c676f6450b8ecad44ea59146c805e3371b7b52443c0899f989/pydantic_core-2.46.2-cp312-cp312-win_amd64.whl", hash = "sha256:0551f2d2ddb68af5a00e26497f8025c538f73ef3cb698f8e5a487042cd2792a8", size = 2072634, upload-time = "2026-04-17T09:11:02.407Z" }, + { url = "https://files.pythonhosted.org/packages/d1/4e/e1ce8029fc438086a946739bf9d596f70ff470aad4a8345555920618cabe/pydantic_core-2.46.2-cp312-cp312-win_arm64.whl", hash = "sha256:83aef30f106edcc21a6a4cc44b82d3169a1dbe255508db788e778f3c804d3583", size = 2026188, upload-time = "2026-04-17T09:13:11.083Z" }, + { url = "https://files.pythonhosted.org/packages/07/2b/662e48254479a2d3450ba24b1e25061108b64339794232f503990c519144/pydantic_core-2.46.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:d26e9eea3715008a09a74585fe9becd0c67fbb145dc4df9756d597d7230a652c", size = 2101762, upload-time = "2026-04-17T09:10:13.87Z" }, + { url = "https://files.pythonhosted.org/packages/73/ab/bafd7c7503757ccc8ec4d1911e106fe474c629443648c51a88f08b0fe91a/pydantic_core-2.46.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:48b36e3235140510dc7861f0cd58b714b1cdd3d48f75e10ce52e69866b746f10", size = 1951814, upload-time = "2026-04-17T09:12:25.934Z" }, + { url = "https://files.pythonhosted.org/packages/92/cc/7549c2d57ba2e9a42caa5861a2d398dbe31c02c6aca783253ace59ce84f8/pydantic_core-2.46.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36b1f99dc451f1a3981f236151465bcf995bbe712d0727c9f7b236fe228a8133", size = 1977329, upload-time = "2026-04-17T09:13:37.605Z" }, + { url = "https://files.pythonhosted.org/packages/18/50/7ed4a8a0d478a4dca8f0134a5efa7193f03cc8520dd4c9509339fb2e5002/pydantic_core-2.46.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8641c8d535c2d95b45c2e19b646ecd23ebba35d461e0ae48a3498277006250ab", size = 2051832, upload-time = "2026-04-17T09:12:49.771Z" }, + { url = "https://files.pythonhosted.org/packages/dc/16/bb35b193741c0298ddc5f5e4234269efdc0c65e2bcd198aa0de9b68845e4/pydantic_core-2.46.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:20fb194788a0a50993e87013e693494ba183a2af5b44e99cf060bbae10912b11", size = 2233127, upload-time = "2026-04-17T09:11:04.449Z" }, + { url = "https://files.pythonhosted.org/packages/91/a5/98f4b637149185addea19e1785ea20c373cca31b202f589111d8209d9873/pydantic_core-2.46.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9262d11d0cd11ee3303a95156939402bed6cedfe5ed0e331b95a283a4da6eb8b", size = 2297418, upload-time = "2026-04-17T09:11:25.929Z" }, + { url = "https://files.pythonhosted.org/packages/36/90/93a5d21990b152da7b7507b7fddb0b935f6a0984d57ac3ec45a6e17777a2/pydantic_core-2.46.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac204542736aa295fa25f713b7fad6fc50b46ab7764d16087575c85f085174f3", size = 2093735, upload-time = "2026-04-17T09:12:06.908Z" }, + { url = "https://files.pythonhosted.org/packages/14/22/b8b1ffdddf08b4e84380bcb67f41dbbf4c171377c1d36fc6290794bb2094/pydantic_core-2.46.2-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:9a7c43a0584742dface3ca0daf6f719d46c1ac2f87cf080050f9ae052c75e1b2", size = 2127570, upload-time = "2026-04-17T09:11:53.906Z" }, + { url = "https://files.pythonhosted.org/packages/c6/26/e60d72b4e2d0ce1fa811044a974412ac1c567fe067d97b3e6b290530786e/pydantic_core-2.46.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fd05e1edb6a90ad446fa268ab09e59202766b837597b714b2492db11ee87fab9", size = 2183524, upload-time = "2026-04-17T09:11:30.092Z" }, + { url = "https://files.pythonhosted.org/packages/35/32/36bec7584a1eefb17dec4dfa1c946d3fe4440f466c5705b8adfda69c9a9f/pydantic_core-2.46.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:91155b110788b5501abc7ea954f1d08606219e4e28e3c73a94124307c06efb80", size = 2185408, upload-time = "2026-04-17T09:10:57.228Z" }, + { url = "https://files.pythonhosted.org/packages/fc/d6/1a5689d873620efd67d6b163db0c444c056adb0849b5bc33e2b9f09665a6/pydantic_core-2.46.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:e4e2c72a529fa03ff228be1d2b76944013f428220b764e03cc50ada67e17a42c", size = 2335171, upload-time = "2026-04-17T09:11:43.369Z" }, + { url = "https://files.pythonhosted.org/packages/3e/8e/675104802abe8ef502b072050ee5f2e915251aa1a3af87e1015ce31ec42d/pydantic_core-2.46.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:56291ec1a11c3499890c99a8fd9053b47e60fe837a77ec72c0671b1b8b3dce24", size = 2362743, upload-time = "2026-04-17T09:10:18.333Z" }, + { url = "https://files.pythonhosted.org/packages/8d/bc/86c5dde4fa6e24467680eef5047da3c1a19be0a527d0d8e14aa76b39307c/pydantic_core-2.46.2-cp313-cp313-win32.whl", hash = "sha256:b50f9c5f826ddca1246f055148df939f5f3f2d0d96db73de28e2233f22210d4c", size = 1958074, upload-time = "2026-04-17T09:12:38.622Z" }, + { url = "https://files.pythonhosted.org/packages/2a/97/2537e8c1282b2c4eb062580c0d7a4339e10b072b803d1ee0b7f1f0a5c22c/pydantic_core-2.46.2-cp313-cp313-win_amd64.whl", hash = "sha256:251a57788823230ca8cbc99e6245d1a2ed6e180ec4864f251c94182c580c7f2e", size = 2071741, upload-time = "2026-04-17T09:13:32.405Z" }, + { url = "https://files.pythonhosted.org/packages/da/aa/2ee75798706f9dbc4e76dbe59e41a396c5c311e3d6223b9cf6a5fa7780be/pydantic_core-2.46.2-cp313-cp313-win_arm64.whl", hash = "sha256:315d32d1a71494d6b4e1e14a9fa7a4329597b4c4340088ad7e1a9dafbeed92a9", size = 2025955, upload-time = "2026-04-17T09:10:15.567Z" }, + { url = "https://files.pythonhosted.org/packages/d0/96/a50ccb6b539ae780f73cea74905468777680e30c6c3bdf714b9d4c116ea0/pydantic_core-2.46.2-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:4f59b45f3ef8650c0c736a57f59031d47ed9df4c0a64e83796849d7d14863a2d", size = 2097111, upload-time = "2026-04-17T09:10:49.617Z" }, + { url = "https://files.pythonhosted.org/packages/34/5f/fdead7b3afa822ab6e5a18ee0ecffd54937de1877c01ed13a342e0fb3f07/pydantic_core-2.46.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:3a075a29ebef752784a91532a1a85be6b234ccffec0a9d7978a92696387c3da6", size = 1951904, upload-time = "2026-04-17T09:12:32.062Z" }, + { url = "https://files.pythonhosted.org/packages/95/e0/1c5d547e550cdab1bec737492aa08865337af6fe7fc9b96f7f45f17d9519/pydantic_core-2.46.2-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d12d786e30c04a9d307c5d7080bf720d9bac7f1668191d8e37633a9562749e2", size = 1978667, upload-time = "2026-04-17T09:11:35.589Z" }, + { url = "https://files.pythonhosted.org/packages/0e/cb/665ce629e218c8228302cb94beff4f6531082a2c87d3ecc3d5e63a26f392/pydantic_core-2.46.2-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0d5e6d6343b0b5dcacb3503b5de90022968da8ed0ab9ab39d3eda71c20cbf84e", size = 2046721, upload-time = "2026-04-17T09:11:47.725Z" }, + { url = "https://files.pythonhosted.org/packages/77/e9/6cb2cf60f54c1472bbdfce19d957553b43dbba79d1d7b2930a195c594785/pydantic_core-2.46.2-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:233eebac0999b6b9ba76eb56f3ec8fce13164aa16b6d2225a36a79e0f95b5973", size = 2228483, upload-time = "2026-04-17T09:12:08.837Z" }, + { url = "https://files.pythonhosted.org/packages/0d/2a/93e018dd5571f781ebaeda8c0cf65398489d5bee9b1f484df0b6149b43b9/pydantic_core-2.46.2-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9cc0eee720dd2f14f3b7c349469402b99ad81a174ab49d3533974529e9d93992", size = 2294663, upload-time = "2026-04-17T09:12:52.053Z" }, + { url = "https://files.pythonhosted.org/packages/5e/4f/49e57ca55c770c93d9bb046666a54949b42e3c9099a0c5fe94557873fe30/pydantic_core-2.46.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83ee76bf2c9910513dbc19e7d82367131fa7508dedd6186a462393071cc11059", size = 2098742, upload-time = "2026-04-17T09:13:45.472Z" }, + { url = "https://files.pythonhosted.org/packages/c6/b0/6e46b5cd3332af665f794b8cdeea206618a8630bd9e7bcc36864518fce81/pydantic_core-2.46.2-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:d61db38eb4ee5192f0c261b7f2d38e420b554df8912245e3546aee5c45e2fd78", size = 2125922, upload-time = "2026-04-17T09:12:54.304Z" }, + { url = "https://files.pythonhosted.org/packages/06/d1/40850c81585be443a2abfdf7f795f8fae831baf8e2f9b2133c8246ac671c/pydantic_core-2.46.2-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8f09a713d17bcd55da8ab02ebd9110c5246a49c44182af213b5212800af8bc83", size = 2183000, upload-time = "2026-04-17T09:10:59.027Z" }, + { url = "https://files.pythonhosted.org/packages/04/af/8493d7dfa03ebb7866909e577c6aa65ea0de7377b86023cc51d0c8e11db3/pydantic_core-2.46.2-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:30cacc5fb696e64b8ef6fd31d9549d394dd7d52760db072eecb98e37e3af1677", size = 2180335, upload-time = "2026-04-17T09:12:57.01Z" }, + { url = "https://files.pythonhosted.org/packages/72/5b/1f6a344c4ffdf284da41c6067b82d5ebcbd11ce1b515ae4b662d4adb6f61/pydantic_core-2.46.2-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:7ccfb105fcfe91a22bbb5563ad3dc124bc1aa75bfd2e53a780ab05f78cdf6108", size = 2330002, upload-time = "2026-04-17T09:12:02.958Z" }, + { url = "https://files.pythonhosted.org/packages/25/ff/9a694126c12d6d2f48a0cafa6f8eef88ef0d8825600e18d03ff2e896c3b2/pydantic_core-2.46.2-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:13ffef637dc8370c249e5b26bd18e9a80a4fca3d809618c44e18ec834a7ca7a8", size = 2359920, upload-time = "2026-04-17T09:10:27.764Z" }, + { url = "https://files.pythonhosted.org/packages/51/c8/3a35c763d68a9cb2675eb10ef242cf66c5d4701b28ae12e688d67d2c180e/pydantic_core-2.46.2-cp314-cp314-win32.whl", hash = "sha256:1b0ab6d756ca2704a938e6c31b53f290c2f9c10d3914235410302a149de1a83e", size = 1953701, upload-time = "2026-04-17T09:13:30.021Z" }, + { url = "https://files.pythonhosted.org/packages/1a/6a/f2726a780365f7dfd89d62036f984f7acb99978c60c5e1fa7c0cb898ed11/pydantic_core-2.46.2-cp314-cp314-win_amd64.whl", hash = "sha256:99ebade8c9ada4df975372d8dd25883daa0e379a05f1cd0c99aa0c04368d01a6", size = 2071867, upload-time = "2026-04-17T09:10:39.205Z" }, + { url = "https://files.pythonhosted.org/packages/e1/79/76baacb9feba3d7c399b245ca1a29c74ea0db04ea693811374827eec2290/pydantic_core-2.46.2-cp314-cp314-win_arm64.whl", hash = "sha256:de87422197cf7f83db91d89c86a21660d749b3cd76cd8a45d115b8e675670f02", size = 2017252, upload-time = "2026-04-17T09:10:26.175Z" }, + { url = "https://files.pythonhosted.org/packages/f1/3b/77c26938f817668d9ad9bab1a905cb23f11d9a3d4bf724d429b3e55a8eaf/pydantic_core-2.46.2-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:236f22b4a206b5b61db955396b7cf9e2e1ff77f372efe9570128ccfcd6a525eb", size = 2094545, upload-time = "2026-04-17T09:12:19.339Z" }, + { url = "https://files.pythonhosted.org/packages/fe/de/42c13f590e3c260966aa49bcdb1674774f975467c49abd51191e502bea28/pydantic_core-2.46.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c2012f64d2cd7cca50f49f22445aa5a88691ac2b4498ee0a9a977f8ca4f7289f", size = 1933953, upload-time = "2026-04-17T09:09:55.889Z" }, + { url = "https://files.pythonhosted.org/packages/4e/84/ebe3ebb3e2d8db656937cfa6f97f544cb7132f2307a4a7dfdcd0ea102a12/pydantic_core-2.46.2-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d07d6c63106d3a9c9a333e2636f9c82c703b1a9e3b079299e58747964e4fdb72", size = 1974435, upload-time = "2026-04-17T09:10:12.371Z" }, + { url = "https://files.pythonhosted.org/packages/b9/15/0bf51ca6709477cd4ef86148b6d7844f3308f029eac361dd0383f1e17b1a/pydantic_core-2.46.2-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c326a2b4b85e959d9a1fc3a11f32f84611b6ec07c053e1828a860edf8d068208", size = 2031113, upload-time = "2026-04-17T09:10:00.752Z" }, + { url = "https://files.pythonhosted.org/packages/02/ae/b7b5af9b79db036d9e61a44c481c17a213dc8fc4b8b71fe6875a72fc778b/pydantic_core-2.46.2-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac8a65e798f2462552c00d2e013d532c94d646729dda98458beaf51f9ec7b120", size = 2236325, upload-time = "2026-04-17T09:10:33.227Z" }, + { url = "https://files.pythonhosted.org/packages/a6/ae/ecef7477b5a03d4a499708f7e75d2836452ebb70b776c2d64612b334f57a/pydantic_core-2.46.2-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a3c2bc1cc8164bedbc160b7bb1e8cc1e8b9c27f69ae4f9ae2b976cdae02b2dd", size = 2278135, upload-time = "2026-04-17T09:10:23.287Z" }, + { url = "https://files.pythonhosted.org/packages/db/e4/2f9d82faa47af6c39fc3f120145fd915971e1e0cb6b55b494fad9fdf8275/pydantic_core-2.46.2-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e69aa5e10b7e8b1bb4a6888650fd12fcbf11d396ca11d4a44de1450875702830", size = 2109071, upload-time = "2026-04-17T09:11:06.149Z" }, + { url = "https://files.pythonhosted.org/packages/f1/9c/677cf10873fbd0b116575ab7b97c90482b21564f8a8040beb18edef7a577/pydantic_core-2.46.2-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:4e6df5c3301e65fb42bc5338bf9a1027a02b0a31dc7f54c33775229af474daf0", size = 2106028, upload-time = "2026-04-17T09:10:51.525Z" }, + { url = "https://files.pythonhosted.org/packages/d6/53/6a06183544daba51c059123a2064a99039df25f115a06bdb26f2ea177038/pydantic_core-2.46.2-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2c2f6e32548ac8d559b47944effcf8ae4d81c161f6b6c885edc53bc08b8f192d", size = 2164816, upload-time = "2026-04-17T09:11:56.187Z" }, + { url = "https://files.pythonhosted.org/packages/57/6f/10fcdd9e3eca66fc828eef0f6f5850f2dd3bca2c59e6e041fb8bc3da39be/pydantic_core-2.46.2-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:b089a81c58e6ea0485562bbbbbca4f65c0549521606d5ef27fba217aac9b665a", size = 2166130, upload-time = "2026-04-17T09:10:03.804Z" }, + { url = "https://files.pythonhosted.org/packages/29/83/92d3fd0e0156cad2e3cb5c26de73794af78ac9fa0c22ab666e566dd67061/pydantic_core-2.46.2-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:7f700a6d6f64112ae9193709b84303bbab84424ad4b47d0253301aabce9dfc70", size = 2316605, upload-time = "2026-04-17T09:12:45.249Z" }, + { url = "https://files.pythonhosted.org/packages/97/f1/facffdb970981068219582e499b8d0871ed163ffcc6b347de5c412669e4c/pydantic_core-2.46.2-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:67db6814beaa5fefe91101ec7eb9efda613795767be96f7cf58b1ca8c9ca9972", size = 2358385, upload-time = "2026-04-17T09:09:54.657Z" }, + { url = "https://files.pythonhosted.org/packages/8b/a1/b8160b2f22b2199467bc68581a4ed380643c16b348a27d6165c6c242d694/pydantic_core-2.46.2-cp314-cp314t-win32.whl", hash = "sha256:32fbc7447be8e3be99bf7869f7066308f16be55b61f9882c2cefc7931f5c7664", size = 1942373, upload-time = "2026-04-17T09:12:59.594Z" }, + { url = "https://files.pythonhosted.org/packages/0d/90/db89acabe5b150e11d1b59fe3d947dda2ef6abbfef5c82f056ff63802f5d/pydantic_core-2.46.2-cp314-cp314t-win_amd64.whl", hash = "sha256:b317a2b97019c0b95ce99f4f901ae383f40132da6706cdf1731066a73394c25c", size = 2052078, upload-time = "2026-04-17T09:10:19.96Z" }, + { url = "https://files.pythonhosted.org/packages/97/32/e19b83ceb07a3f1bb21798407790bbc9a31740158fd132b94139cb84e16c/pydantic_core-2.46.2-cp314-cp314t-win_arm64.whl", hash = "sha256:7dcb9d40930dfad7ab6b20bcc6ca9d2b030b0f347a0cd9909b54bd53ead521b1", size = 2016941, upload-time = "2026-04-17T09:12:34.447Z" }, + { url = "https://files.pythonhosted.org/packages/25/ec/e91aa08df1c33d5e3c2b60c07a1eca9f21809728a824c7b467bb3bda68b5/pydantic_core-2.46.2-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:7c5a5b3dbb9e8918e223be6580da5ffcf861c0505bbc196ebed7176ce05b7b4e", size = 2105046, upload-time = "2026-04-17T09:10:55.614Z" }, + { url = "https://files.pythonhosted.org/packages/f0/73/27112400a0452e375290e7c40aef5cc9844ac0920fb1029238cfc68121fa/pydantic_core-2.46.2-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:bc1e8ce33d5a337f2ba862e0719b8201cd54aaed967406c748e009191d47efdd", size = 1940029, upload-time = "2026-04-17T09:12:21.5Z" }, + { url = "https://files.pythonhosted.org/packages/b1/44/3d39f782bc82ddd0b2d82bde83b408aa40a332cdf6f3018acb34e3d4dcfc/pydantic_core-2.46.2-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b737c0b280f41143266445de2689c0e49c79307e51c44ce3a77fef2bedad4994", size = 1987772, upload-time = "2026-04-17T09:10:02.357Z" }, + { url = "https://files.pythonhosted.org/packages/c4/1a/0242e5b7b6cf51dbccc065029f0420107b6bf7e191fcb918f5cb71218acf/pydantic_core-2.46.2-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b877d597afb82b4898e35354bba55de6f7f048421ae0edadbb9886ec137b532", size = 2138468, upload-time = "2026-04-17T09:11:51.546Z" }, + { url = "https://files.pythonhosted.org/packages/f3/d2/66c146f421178641bda880b0267c0d57dd84f5fec9ecc8e46be17b480742/pydantic_core-2.46.2-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:e9fcabd1857492b5bf16f90258babde50f618f55d046b1309972da2396321ff9", size = 2091621, upload-time = "2026-04-17T09:12:47.501Z" }, + { url = "https://files.pythonhosted.org/packages/ee/b2/c28419aa9fc8055f4ac8e801d1d11c6357351bfa4321ed9bafab3eb98087/pydantic_core-2.46.2-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:fb3ec2c7f54c07b30d89983ce78dc32c37dd06a972448b8716d609493802d628", size = 1937059, upload-time = "2026-04-17T09:10:53.554Z" }, + { url = "https://files.pythonhosted.org/packages/30/ce/cd0824a2db213dc17113291b7a09b9b0ccd9fbf97daa4b81548703341baf/pydantic_core-2.46.2-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:130a6c837d819ef33e8c2bf702ed2c3429237ea69807f1140943d6f4bdaf52fa", size = 1997278, upload-time = "2026-04-17T09:12:23.784Z" }, + { url = "https://files.pythonhosted.org/packages/c9/69/47283fe3c0c967d3e9e9cd6c42b70907610c8a6f8d6e8381f1bb55f8006c/pydantic_core-2.46.2-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2e25417cec5cd9bddb151e33cb08c50160f317479ecc02b22a95ec18f8fe004", size = 2147096, upload-time = "2026-04-17T09:12:43.124Z" }, + { url = "https://files.pythonhosted.org/packages/16/d5/dec7c127fa722ff56e1ccf1e960ae1318a9f66742135e97bf9771447216f/pydantic_core-2.46.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c3ad79ed32004d9de91cacd4b5faaff44d56051392fe1d5526feda596f01af25", size = 2107613, upload-time = "2026-04-17T09:10:36.269Z" }, + { url = "https://files.pythonhosted.org/packages/bc/35/975c109b337260a71c93198baf663982b6b39fe3e584e279548a0969e5d4/pydantic_core-2.46.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d157c48d28eebe5d46906de06a6a2f2c9e00b67d3e42de1f1b9c2d42b810f77c", size = 1947099, upload-time = "2026-04-17T09:12:15.304Z" }, + { url = "https://files.pythonhosted.org/packages/4e/11/52a971a0f9218631690274be533f05e5ddde5547f0823bb3e9dfd1be49f6/pydantic_core-2.46.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b42c6471288dedc979ac8400d9c9770f03967dd187db1f8d3405d4d182cc714", size = 2133866, upload-time = "2026-04-17T09:12:27.994Z" }, + { url = "https://files.pythonhosted.org/packages/fe/7a/33d94d0698602b2d1712e78c703a33952eb2ca69e02e8e4b208e7f6602b5/pydantic_core-2.46.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4f27bc4801358dc070d6697b41237fce9923d8e69a1ce1e95606ac36c1552dc1", size = 2161721, upload-time = "2026-04-17T09:11:16.111Z" }, + { url = "https://files.pythonhosted.org/packages/b0/cb/0df7ee0a148e9ce0968a80787967ddca9f6b3f8a49152a881b88da262701/pydantic_core-2.46.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:e094a8f85db41aa7f6a45c5dac2950afc9862e66832934231962252b5d284eed", size = 2180175, upload-time = "2026-04-17T09:11:41.577Z" }, + { url = "https://files.pythonhosted.org/packages/8e/a8/258a32878140347532be4e44c6f3b1ace3b52b9c9ca7548a65ce18adf4b4/pydantic_core-2.46.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:807eeda5551f6884d3b4421578be37be50ddb7a58832348e99617a6714a73748", size = 2319882, upload-time = "2026-04-17T09:10:21.872Z" }, + { url = "https://files.pythonhosted.org/packages/13/b9/5071c298a0f91314a5402b8c56e0efbcebe77085327d0b4df7dc9cb0b674/pydantic_core-2.46.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:fcaa1c3c846a7f6686b38fe493d1b2e8007380e293bfef6a9354563c026cbf36", size = 2348065, upload-time = "2026-04-17T09:11:08.263Z" }, + { url = "https://files.pythonhosted.org/packages/75/f3/0a7087e5f861d66ca64ce927230b397cc264c87b712156e6a93b26a459c8/pydantic_core-2.46.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:154dbfdfb11b8cbd8ff4d00d0b81e3d19f4cb4bedd5aa9f091060ba071474c6a", size = 2192159, upload-time = "2026-04-17T09:11:20.123Z" }, ] [[package]] From 8ebab999bceecbd402521e6df380ef25717a1f5e Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Mon, 20 Apr 2026 14:10:12 -0400 Subject: [PATCH 2/2] re-record cassettes --- .../skills/sdk-dependency-updates/SKILL.md | 317 +++++ .../sdk-dependency-updates/agents/openai.yaml | 4 + .../latest/test_auto_claude_agent_sdk.json | 30 +- ...st_bundled_subagent_creates_task_span.json | 323 ++--- ...t_calculator_with_multiple_operations.json | 228 ++-- ...llel_llm_spans_with_correct_parenting.json | 747 ++++++----- ...led_subagents_preserve_task_parenting.json | 1135 +++++++++++------ ...parent_to_matching_tool_and_final_llm.json | 437 ++++--- ...leaved_subagent_tool_output_preserved.json | 583 +++++---- ...nts_keep_outer_orchestration_separate.json | 490 +++---- ...test_tool_hooks_create_function_spans.json | 154 ++- ...mpt_submit_hook_creates_function_span.json | 90 +- .../latest/test_async_langchain_invoke.yaml | 28 +- .../latest/test_async_streaming.yaml | 170 +-- .../latest/test_chain_with_memory.yaml | 126 +- .../cassettes/latest/test_global_handler.yaml | 20 +- .../cassettes/latest/test_image_input.yaml | 30 +- .../test_langchain_anthropic_integration.yaml | 22 +- .../test_langgraph_state_management.yaml | 120 +- .../cassettes/latest/test_llm_calls.yaml | 126 +- .../latest/test_prompt_caching_tokens.yaml | 75 +- .../cassettes/latest/test_streaming_ttft.yaml | 323 +---- .../cassettes/latest/test_tool_usage.yaml | 130 +- .../latest/test_tool_use_with_result.yaml | 312 +---- .../cassettes/latest/test_auto_litellm.yaml | 20 +- .../test_litellm_acompletion_metrics.yaml | 20 +- ...t_litellm_acompletion_streaming_async.yaml | 44 +- ...itellm_acompletion_with_system_prompt.yaml | 20 +- .../latest/test_litellm_aembedding.yaml | 16 +- .../test_litellm_aimage_generation.yaml | 20 +- .../test_litellm_aresponses_metrics.yaml | 48 +- ...st_litellm_aresponses_streaming_async.yaml | 50 +- .../latest/test_litellm_aspeech.yaml | 918 +++++++------ .../test_litellm_async_parallel_requests.yaml | 70 +- ...st_litellm_async_streaming_with_break.yaml | 46 +- .../latest/test_litellm_atranscription.yaml | 28 +- .../test_litellm_completion_metrics.yaml | 22 +- ...est_litellm_completion_streaming_sync.yaml | 42 +- ...litellm_completion_with_system_prompt.yaml | 16 +- .../latest/test_litellm_embeddings.yaml | 16 +- .../latest/test_litellm_image_generation.yaml | 20 +- .../latest/test_litellm_moderation.yaml | 34 +- ...llm_openrouter_no_booleans_in_metrics.yaml | 12 +- .../test_litellm_responses_metrics.yaml | 46 +- ...test_litellm_responses_streaming_sync.yaml | 46 +- .../cassettes/latest/test_litellm_speech.yaml | 909 +++++++------ .../latest/test_litellm_tool_calls.yaml | 18 +- .../latest/test_litellm_transcription.yaml | 28 +- .../latest/test_patch_litellm_aresponses.yaml | 46 +- .../latest/test_patch_litellm_responses.yaml | 46 +- .../latest/test_auto_openai_agents.yaml | 51 +- ...ust_tracing_processor_concurrency_bug.yaml | 234 +++- ...cing_processor_current_span_detection.yaml | 47 +- ...gents_integration_setup_creates_spans.yaml | 51 +- ...penai_agents_task_and_turn_span_types.yaml | 118 +- .../latest/test_agent_run_async.yaml | 22 +- .../latest/test_agent_run_stream.yaml | 85 +- .../latest/test_agent_run_stream_events.yaml | 46 +- ...st_agent_run_stream_structured_output.yaml | 48 +- .../latest/test_agent_run_stream_sync.yaml | 44 +- .../cassettes/latest/test_agent_run_sync.yaml | 22 +- ...nt_stream_buffer_pattern_early_return.yaml | 58 +- .../latest/test_agent_stream_early_break.yaml | 123 +- .../latest/test_agent_structured_output.yaml | 34 +- .../test_agent_with_binary_content.yaml | 125 +- .../test_agent_with_custom_settings.yaml | 22 +- .../test_agent_with_document_input.yaml | 130 +- .../test_agent_with_error_handling.yaml | 16 +- .../latest/test_agent_with_long_context.yaml | 22 +- .../test_agent_with_message_history.yaml | 52 +- ...agent_with_model_settings_in_metadata.yaml | 22 +- ...with_model_settings_override_in_input.yaml | 55 +- .../latest/test_agent_with_prefill.yaml | 106 +- .../test_agent_with_short_max_tokens.yaml | 22 +- .../test_agent_with_stop_sequences.yaml | 125 +- ..._agent_with_system_prompt_in_metadata.yaml | 42 +- .../test_agent_with_tool_execution.yaml | 44 +- .../latest/test_agent_with_tools.yaml | 42 +- .../latest/test_auto_pydantic_ai.yaml | 22 +- .../latest/test_direct_model_request.yaml | 22 +- ...s_nested_chat_span_without_class_scan.yaml | 22 +- .../test_direct_model_request_stream.yaml | 42 +- ..._model_request_stream_complete_output.yaml | 40 +- ...test_direct_model_request_stream_sync.yaml | 256 +--- .../test_direct_model_request_sync.yaml | 22 +- ...st_direct_model_request_with_settings.yaml | 22 +- .../latest/test_model_class_span_names.yaml | 22 +- ...tream_sync_thread_context_propagation.yaml | 266 +--- ...multiple_identical_sequential_streams.yaml | 126 +- .../test_multiple_sequential_streams.yaml | 84 +- .../latest/test_no_model_agent_run.yaml | 22 +- .../test_no_model_agent_run_with_logfire.yaml | 22 +- .../test_pydantic_wrapped_completion.yaml | 60 +- .../latest/test_pydantic_wrapped_stream.yaml | 68 +- ...st_stream_buffer_pattern_early_return.yaml | 60 +- ...st_stream_early_break_async_generator.yaml | 58 +- .../test_tool_execution_creates_spans.yaml | 48 +- ..._not_depend_on_message_reconstruction.yaml | 46 +- .../test_wrapper_agent_run_is_traced.yaml | 22 +- 99 files changed, 5330 insertions(+), 6451 deletions(-) create mode 100644 .agents/skills/sdk-dependency-updates/SKILL.md create mode 100644 .agents/skills/sdk-dependency-updates/agents/openai.yaml diff --git a/.agents/skills/sdk-dependency-updates/SKILL.md b/.agents/skills/sdk-dependency-updates/SKILL.md new file mode 100644 index 00000000..53ec9a15 --- /dev/null +++ b/.agents/skills/sdk-dependency-updates/SKILL.md @@ -0,0 +1,317 @@ +--- +name: sdk-dependency-updates +description: "Review and refresh Braintrust Python SDK dependency update PRs, especially automated `chore(deps): daily dependency update` PRs from `.github/workflows/dependency-updates.yml`. Use when Codex needs to inspect `py/pyproject.toml` and `py/uv.lock`, verify whether `needs-cassette-rerecord` is actually required, map changed matrix keys to exact nox sessions and cassette directories, re-record only affected `latest` cassettes, and validate playback before merge." +--- + +# SDK Dependency Updates + +Use this skill for dependency bump PRs in this repo, especially the daily automated PR opened by `.github/workflows/dependency-updates.yml`. + +These PRs should usually stay narrow: + +- `py/pyproject.toml` +- `py/uv.lock` + +If provider SDK packages changed, a human often needs to refresh affected `latest` cassettes before merge. + +## Read First + +Always read: + +- `AGENTS.md` +- `.github/workflows/dependency-updates.yml` +- `.github/workflows/checks.yaml` +- `py/pyproject.toml` + Focus on `[tool.braintrust.matrix]` and `[tool.braintrust.cassette-dirs]`. +- `py/noxfile.py` +- `py/scripts/update-matrix-latest.py` +- `py/scripts/determine-dependency-update-labels.py` +- `py/src/braintrust/conftest.py` +- `py/src/braintrust/integrations/conftest.py` + +Read when relevant: + +- PR metadata from `gh pr view ` +- changed provider integration code under `py/src/braintrust/integrations//` +- changed provider tests under `py/src/braintrust/integrations//test_*.py` +- affected cassette directories under `py/src/braintrust/integrations//cassettes/latest/` +- `py/src/braintrust/integrations/versioning.py` when version-gated behavior may matter +- `py/scripts/check-stale-cassettes.py` when versions were added or removed + +If the task becomes mostly about VCR mechanics, use `sdk-vcr-workflows`. +If the entry point is a failing GitHub Actions job, use `sdk-ci-triage`. +If the dependency bump exposes a real provider bug that needs code changes, use `sdk-integrations`. + +## What The Automation Does + +The daily workflow does this: + +1. run `python scripts/update-matrix-latest.py` from `py/` +2. run `uv lock --upgrade` +3. run `python scripts/determine-dependency-update-labels.py` +4. open a PR titled `chore(deps): daily dependency update` +5. apply: + - `auto-merge-candidate` when only infra/test deps changed + - `needs-cassette-rerecord` when provider SDK packages changed + +Treat the workflow and label script as the source of truth, but still verify the actual diff. Do not trust the label blindly. + +## Core Rules + +- Work from `py/` for SDK commands. +- Use `mise` as the source of truth for tools and Python versions. +- Do not guess session names; read `py/noxfile.py`. +- Do not guess whether re-recording is required; inspect the actual diff in `py/pyproject.toml` and `py/uv.lock`. +- Keep dependency PR changes narrow. Avoid touching SDK code unless the user explicitly asks. +- Refresh only affected `latest` cassettes. Do not churn older version directories unless older pins changed or the user asked. +- If a changed matrix key has no cassette-dir mapping, do not invent cassette work. Run the exact targeted validation that exists for that package. +- Always review the cassette diff itself, not just pass/fail status. + +## Classify The Change First + +Before re-recording anything, classify the changed matrix keys. + +### 1. Infra-only keys + +These do not imply provider cassette refresh work: + +- `pytest-matrix` +- `braintrust-core` + +These PRs are usually low-risk if CI passes and the diff stays narrow. + +### 2. Keys with versioned integration cassettes + +These appear in `[tool.braintrust.cassette-dirs]` and usually require targeted `latest` cassette refresh when their package version changes: + +- `anthropic` +- `cohere` +- `openai` +- `openai-agents` +- `litellm` +- `claude-agent-sdk` +- `agno` +- `agentscope` +- `pydantic-ai-integration` +- `pydantic-ai-wrap-openai` +- `google-genai` +- `dspy` +- `google-adk` +- `langchain-core` +- `openrouter` +- `mistralai` + +### 3. Matrix keys without versioned integration cassettes + +These are still provider/runtime bumps, but do not map to `integrations/*/cassettes/latest/`: + +- `autoevals` +- `temporalio` + +For these, run the exact nox session and review the diff, but do not invent cassette refresh instructions that the repo does not use. + +## Map Matrix Keys To Actual Sessions + +Do not assume package names, session names, and integration directory names line up perfectly. + +Useful mismatches to remember: + +- `google-adk` -> `test_google_adk(latest)` -> `py/src/braintrust/integrations/adk/cassettes/latest/` +- `langchain-core` -> `test_langchain(latest)` -> `py/src/braintrust/integrations/langchain/cassettes/latest/` +- `mistralai` -> `test_mistral(latest)` -> `py/src/braintrust/integrations/mistral/cassettes/latest/` +- `pydantic-ai-integration` -> `test_pydantic_ai_integration(latest)` and `test_pydantic_ai_logfire(latest)` -> `py/src/braintrust/integrations/pydantic_ai/cassettes/latest/` +- `pydantic-ai-wrap-openai` -> `test_pydantic_ai_wrap_openai(latest)` -> `py/src/braintrust/integrations/pydantic_ai/cassettes/latest/` +- `claude-agent-sdk` -> `test_claude_agent_sdk(latest)` -> transport cassettes under `py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/`, not HTTP VCR + +For everything else, confirm the mapping in `py/noxfile.py` and `py/pyproject.toml`. + +## Standard Workflow + +### 1. Inspect the PR and diff + +Start with metadata and changed files: + +```bash +gh pr view --repo braintrustdata/braintrust-sdk-python \ + --json title,body,labels,files,headRefName,baseRefName +gh pr checks --repo braintrustdata/braintrust-sdk-python +git diff origin/main...HEAD -- py/pyproject.toml py/uv.lock +``` + +Confirm: + +- the PR is the dependency-update workflow output +- changed files are still narrowly scoped +- whether the label matches the actual dependency diff + +### 2. Reproduce the workflow's classification locally + +From `py/`, use the same script the workflow uses: + +```bash +cd py +python scripts/determine-dependency-update-labels.py +``` + +Then inspect `pyproject.toml` and `uv.lock` yourself. The script is authoritative for labels, but your review is authoritative for deciding what work to do next. + +### 3. Decide the minimum work + +Default to the smallest scope that matches the diff: + +- one changed provider package: refresh or validate only that provider's `latest` coverage +- several changed provider packages: handle each provider independently +- polluted or flaky subset after a broad refresh: delete and re-record only those files + +When providers are independent, parallel subagents are a good fit: one provider/session per subagent. + +### 4. Delete before re-recording + +For cassette refresh work, prefer deleting affected `latest` cassettes before re-recording so stale responses are not silently reused. + +Examples: + +```bash +cd py +rm -rf src/braintrust/integrations/langchain/cassettes/latest +rm -rf src/braintrust/integrations/pydantic_ai/cassettes/latest +``` + +For surgical cleanup, delete only the polluted cassette files first. + +Do not delete older version cassette directories unless the task requires it. + +### 5. Re-record with the exact nox session + +Use the exact session from `py/noxfile.py`. + +Examples: + +```bash +cd py +nox -s "test_openai_agents(latest)" -- --vcr-record=all +nox -s "test_litellm(latest)" -- --vcr-record=all +nox -s "test_langchain(latest)" -- --vcr-record=all +nox -s "test_pydantic_ai_integration(latest)" -- --vcr-record=all +nox -s "test_pydantic_ai_wrap_openai(latest)" -- --vcr-record=all +nox -s "test_pydantic_ai_logfire(latest)" -- --vcr-record=all +``` + +For Claude Agent SDK transport recordings: + +```bash +cd py +BRAINTRUST_CLAUDE_AGENT_SDK_RECORD_MODE=all nox -s "test_claude_agent_sdk(latest)" +``` + +Prefer nox for recording so `BRAINTRUST_TEST_PACKAGE_VERSION=latest` is set correctly and cassettes land in the correct version directory. + +### 6. Avoid cassette pollution + +Dependency PR cassette refreshes are vulnerable to local-environment leakage. + +Before recording, be suspicious of local Braintrust auth or URL env vars. If recordings start capturing unrelated Braintrust traffic, neutralize local config and re-record. + +Useful environment shape for clean provider cassette recording: + +```bash +unset BRAINTRUST_API_URL +unset BRAINTRUST_APP_URL +unset BRAINTRUST_ORG_NAME +export BRAINTRUST_API_KEY=___TEST_API_KEY__ +``` + +If you must run outside nox, also set: + +```bash +export BRAINTRUST_TEST_PACKAGE_VERSION=latest +``` + +Default to nox instead of raw pytest when possible. + +### 7. Scan for pollution and review diffs + +These are usually pollution, not meaningful provider behavior: + +- `https://staging-api.braintrust.dev/logs3` +- `403 ForbiddenError` from Braintrust logging endpoints +- `api.braintrust.dev/version` +- `staging-api.braintrust.dev/version` +- unrelated Braintrust telemetry/version traffic in provider cassettes + +Quick scan: + +```bash +rg -n "staging-api\.braintrust\.dev|api\.braintrust\.dev/version|/logs3|braintrust\.dev/version" \ + py/src/braintrust/integrations/*/cassettes/latest +``` + +Also inspect the cassette diff. Expected churn includes: + +- provider SDK version metadata changes +- ids, timestamps, session ids, request ids +- harmless response-shape additions from the upstream SDK +- binary output churn in audio/media cassettes +- cache-related metadata such as prompt caching fields + +Be skeptical of: + +- brand-new endpoint families unrelated to the provider under test +- Braintrust API traffic inside provider cassettes +- large request-shape changes that do not match the dependency bump +- missing interactions after a delete/re-record pass +- diffs that suggest the wrong test or wrong package version was recorded + +### 8. Validate playback + +After recording, run playback using the same session names without forcing record mode. + +Examples: + +```bash +cd py +nox -s "test_openai_agents(latest)" +nox -s "test_litellm(latest)" +nox -s "test_langchain(latest)" +nox -s "test_pydantic_ai_integration(latest)" +nox -s "test_pydantic_ai_wrap_openai(latest)" +nox -s "test_pydantic_ai_logfire(latest)" +BRAINTRUST_CLAUDE_AGENT_SDK_RECORD_MODE=none nox -s "test_claude_agent_sdk(latest)" +``` + +If you only touched a subset, run the narrowest affected playback first. + +When matrix versions changed in a way that could orphan cassette directories, also run: + +```bash +cd py +make check-stale-cassettes +``` + +If the PR touched broader CI or workflow wiring, expand validation based on `.github/workflows/checks.yaml`. + +## Report Back + +When you finish, report: + +1. whether the PR was infra-only or needed targeted refresh work +2. which matrix keys or provider packages changed +3. which nox sessions you ran +4. which cassette directories or files you deleted and re-recorded +5. any suspicious diff items you investigated +6. whether you found and removed pollution +7. the final playback or validation result + +## Common Mistakes + +Avoid these mistakes: + +- trusting the PR label without checking the diff +- re-recording every provider when only a few matrix keys changed +- assuming every provider bump has versioned cassettes +- recording older version cassettes when only `latest` moved +- forgetting that `claude_agent_sdk` uses transport recordings, not HTTP VCR +- recording with raw pytest outside nox and landing cassettes in the wrong directory +- reviewing only pass/fail status and not the cassette diff +- touching SDK code in a dependency-refresh PR without an explicit reason +- skipping playback after a successful re-record diff --git a/.agents/skills/sdk-dependency-updates/agents/openai.yaml b/.agents/skills/sdk-dependency-updates/agents/openai.yaml new file mode 100644 index 00000000..45a531f3 --- /dev/null +++ b/.agents/skills/sdk-dependency-updates/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "SDK Dependency Updates" + short_description: "Review Braintrust SDK dependency PRs" + default_prompt: "Use $sdk-dependency-updates to review this Braintrust SDK dependency PR, decide whether cassettes need refreshing, and validate the exact sessions to run." diff --git a/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_auto_claude_agent_sdk.json b/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_auto_claude_agent_sdk.json index 5672f820..7ce68dad 100644 --- a/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_auto_claude_agent_sdk.json +++ b/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_auto_claude_agent_sdk.json @@ -10,7 +10,7 @@ "hooks": null, "subtype": "initialize" }, - "request_id": "req_1_74e31761", + "request_id": "req_1_6f9916de", "type": "control_request" } } @@ -19,7 +19,7 @@ "op": "read", "payload": { "response": { - "request_id": "req_1_74e31761", + "request_id": "req_1_6f9916de", "response": { "account": { "apiKeySource": "ANTHROPIC_API_KEY", @@ -61,7 +61,7 @@ "statusline-setup" ], "apiKeySource": "ANTHROPIC_API_KEY", - "claude_code_version": "2.1.112", + "claude_code_version": "2.1.114", "cwd": "", "fast_mode_state": "off", "mcp_servers": [ @@ -87,18 +87,19 @@ "source": "rust-analyzer-lsp@claude-plugins-official" } ], - "session_id": "2f2fb67d-d508-4f58-9f48-551b133d70f8", + "session_id": "0fb51a0b-b2c7-40ec-a727-4e5596a6f2e6", "skills": [ "update-config", "debug", "simplify", "batch", - "less-permission-prompts", + "fewer-permission-prompts", "loop", "schedule", "claude-api", "create-braintrust-demo", "braintrust", + "sdk-dependency-updates", "sdk-integrations", "sdk-vcr-workflows", "sdk-ci-triage", @@ -110,12 +111,13 @@ "debug", "simplify", "batch", - "less-permission-prompts", + "fewer-permission-prompts", "loop", "schedule", "claude-api", "create-braintrust-demo", "braintrust", + "sdk-dependency-updates", "sdk-integrations", "sdk-vcr-workflows", "sdk-ci-triage", @@ -214,7 +216,7 @@ "mcp__linear-server__update_document" ], "type": "system", - "uuid": "71551199-f881-4abd-bafc-deb6392925db" + "uuid": "e61ecc37-ad08-42dd-ae9c-e812a1848a0b" } }, { @@ -230,7 +232,7 @@ } ], "context_management": null, - "id": "e2d89271-1454-4fb9-80ac-9487ea1d1bd1", + "id": "484a857e-e4ef-474d-b615-a5da3f8fb37c", "model": "", "role": "assistant", "stop_reason": "stop_sequence", @@ -256,9 +258,9 @@ } }, "parent_tool_use_id": null, - "session_id": "2f2fb67d-d508-4f58-9f48-551b133d70f8", + "session_id": "0fb51a0b-b2c7-40ec-a727-4e5596a6f2e6", "type": "assistant", - "uuid": "1e886de5-b6e9-46ac-bb3a-6fa5151858fe" + "uuid": "4b70e6ec-993d-4a07-bba3-f8d4c936e676" } }, { @@ -266,14 +268,14 @@ "payload": { "api_error_status": 404, "duration_api_ms": 0, - "duration_ms": 883, + "duration_ms": 411, "fast_mode_state": "off", "is_error": true, "modelUsage": {}, "num_turns": 1, "permission_denials": [], "result": "There's an issue with the selected model (claude-3-5-haiku-20241022). It may not exist or you may not have access to it. Run --model to pick a different model.", - "session_id": "2f2fb67d-d508-4f58-9f48-551b133d70f8", + "session_id": "0fb51a0b-b2c7-40ec-a727-4e5596a6f2e6", "stop_reason": "stop_sequence", "subtype": "success", "terminal_reason": "completed", @@ -297,9 +299,9 @@ "service_tier": "standard", "speed": "standard" }, - "uuid": "7f82d01b-549c-4ca8-a2e5-abf9a2484127" + "uuid": "0adc8548-44ef-4ae3-a162-5586e8d1df6f" } } ], - "sdk_version": "0.1.61" + "sdk_version": "0.1.63" } diff --git a/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_bundled_subagent_creates_task_span.json b/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_bundled_subagent_creates_task_span.json index c202dfad..34b584cc 100644 --- a/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_bundled_subagent_creates_task_span.json +++ b/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_bundled_subagent_creates_task_span.json @@ -10,7 +10,7 @@ "hooks": null, "subtype": "initialize" }, - "request_id": "req_1_9d990cf3", + "request_id": "req_1_1de17a90", "type": "control_request" } } @@ -19,7 +19,7 @@ "op": "read", "payload": { "response": { - "request_id": "req_1_9d990cf3", + "request_id": "req_1_1de17a90", "response": { "account": { "apiKeySource": "ANTHROPIC_API_KEY", @@ -61,7 +61,7 @@ "statusline-setup" ], "apiKeySource": "ANTHROPIC_API_KEY", - "claude_code_version": "2.1.112", + "claude_code_version": "2.1.114", "cwd": "", "fast_mode_state": "off", "mcp_servers": [ @@ -83,18 +83,19 @@ "source": "rust-analyzer-lsp@claude-plugins-official" } ], - "session_id": "2ef1d545-f6ea-4427-b093-4afcf2a91ddb", + "session_id": "2e69a45a-613a-434a-8462-f2b1c3b0c939", "skills": [ "update-config", "debug", "simplify", "batch", - "less-permission-prompts", + "fewer-permission-prompts", "loop", "schedule", "claude-api", "create-braintrust-demo", "braintrust", + "sdk-dependency-updates", "sdk-integrations", "sdk-vcr-workflows", "sdk-ci-triage", @@ -106,12 +107,13 @@ "debug", "simplify", "batch", - "less-permission-prompts", + "fewer-permission-prompts", "loop", "schedule", "claude-api", "create-braintrust-demo", "braintrust", + "sdk-dependency-updates", "sdk-integrations", "sdk-vcr-workflows", "sdk-ci-triage", @@ -201,7 +203,7 @@ "mcp__linear-server__update_document" ], "type": "system", - "uuid": "cb0f8a34-1eff-4a71-ab0d-611f2f651b54" + "uuid": "945d4163-14be-4eb6-bdcd-763dbd024bec" } }, { @@ -211,12 +213,12 @@ "content": [ { "signature": "", - "thinking": "The user is asking me to delegate a task to a general-purpose agent to inspect the current repository and reply with only the repository name. I should use the Agent tool with the general-purpose subagent type.\n\nLet me create an agent that will inspect the repository and tell me the repository name.", + "thinking": "The user is asking me to delegate a task to a general-purpose agent to inspect the current repository and reply with only the repository name. They explicitly say \"Do not answer directly without using the subagent.\"\n\nSo I need to use the Agent tool with the general-purpose agent type to do this. The task is to inspect the current repository and report back the repository name.\n\nLet me use the Agent tool to create a general-purpose agent to do this task.", "type": "thinking" } ], "context_management": null, - "id": "msg_01V9wGYEBRwdorVdnc2S9zMf", + "id": "msg_016XgJoUdtSJppKUuYFQCbCD", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -226,20 +228,20 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 37691 + "ephemeral_5m_input_tokens": 37857 }, - "cache_creation_input_tokens": 37691, + "cache_creation_input_tokens": 37857, "cache_read_input_tokens": 0, "inference_geo": "not_available", "input_tokens": 10, - "output_tokens": 3, + "output_tokens": 8, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "2ef1d545-f6ea-4427-b093-4afcf2a91ddb", + "session_id": "2e69a45a-613a-434a-8462-f2b1c3b0c939", "type": "assistant", - "uuid": "8ca993c0-6814-4d42-a881-7bab954e9ed0" + "uuid": "d36f6717-8a17-434d-b7d9-1a9c50a9afdb" } }, { @@ -251,10 +253,10 @@ "caller": { "type": "direct" }, - "id": "toolu_015CpBQLq1C2DjkN3pSjYmg7", + "id": "toolu_01MPbTvwjXwdeymKs2CaB4pJ", "input": { "description": "Inspect repository and report name", - "prompt": "Inspect the current repository to determine its name. Look at the directory structure, git configuration, package metadata, or any other relevant files to identify the repository name. Reply with ONLY the repository name, nothing else.", + "prompt": "Inspect the current repository and reply with ONLY the repository name. Nothing else.", "subagent_type": "general-purpose" }, "name": "Agent", @@ -262,7 +264,7 @@ } ], "context_management": null, - "id": "msg_01V9wGYEBRwdorVdnc2S9zMf", + "id": "msg_016XgJoUdtSJppKUuYFQCbCD", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -272,34 +274,34 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 37691 + "ephemeral_5m_input_tokens": 37857 }, - "cache_creation_input_tokens": 37691, + "cache_creation_input_tokens": 37857, "cache_read_input_tokens": 0, "inference_geo": "not_available", "input_tokens": 10, - "output_tokens": 3, + "output_tokens": 8, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "2ef1d545-f6ea-4427-b093-4afcf2a91ddb", + "session_id": "2e69a45a-613a-434a-8462-f2b1c3b0c939", "type": "assistant", - "uuid": "f1bf5129-c71c-4f09-a0f1-ee918698edde" + "uuid": "a647b0ca-02e7-4ac2-b816-8090d3df94d4" } }, { "op": "read", "payload": { "description": "Inspect repository and report name", - "prompt": "Inspect the current repository to determine its name. Look at the directory structure, git configuration, package metadata, or any other relevant files to identify the repository name. Reply with ONLY the repository name, nothing else.", - "session_id": "2ef1d545-f6ea-4427-b093-4afcf2a91ddb", + "prompt": "Inspect the current repository and reply with ONLY the repository name. Nothing else.", + "session_id": "2e69a45a-613a-434a-8462-f2b1c3b0c939", "subtype": "task_started", - "task_id": "ae78d4ad25a910a76", + "task_id": "ad9381ce80e640411", "task_type": "local_agent", - "tool_use_id": "toolu_015CpBQLq1C2DjkN3pSjYmg7", + "tool_use_id": "toolu_01MPbTvwjXwdeymKs2CaB4pJ", "type": "system", - "uuid": "593bf60c-297b-4f98-8532-48463021f5c7" + "uuid": "0ae3c558-a8c8-45b5-901a-2f506a2ce5fe" } }, { @@ -308,118 +310,35 @@ "message": { "content": [ { - "text": "Inspect the current repository to determine its name. Look at the directory structure, git configuration, package metadata, or any other relevant files to identify the repository name. Reply with ONLY the repository name, nothing else.", + "text": "Inspect the current repository and reply with ONLY the repository name. Nothing else.", "type": "text" } ], "role": "user" }, - "parent_tool_use_id": "toolu_015CpBQLq1C2DjkN3pSjYmg7", - "session_id": "2ef1d545-f6ea-4427-b093-4afcf2a91ddb", - "timestamp": "2026-04-17T16:17:42.496Z", + "parent_tool_use_id": "toolu_01MPbTvwjXwdeymKs2CaB4pJ", + "session_id": "2e69a45a-613a-434a-8462-f2b1c3b0c939", + "timestamp": "2026-04-20T20:41:22.041Z", "type": "user", - "uuid": "144d4816-2687-42fc-bd6f-1aea42926f5b" + "uuid": "40db8c14-732b-4a94-a2e2-05c6e0c530e9" } }, { "op": "read", "payload": { - "description": "Reading py/pyproject.toml", - "last_tool_name": "Read", - "session_id": "2ef1d545-f6ea-4427-b093-4afcf2a91ddb", - "subtype": "task_progress", - "task_id": "ae78d4ad25a910a76", - "tool_use_id": "toolu_015CpBQLq1C2DjkN3pSjYmg7", - "type": "system", - "usage": { - "duration_ms": 1814, - "tool_uses": 1, - "total_tokens": 32090 - }, - "uuid": "c1a99b96-3099-4e87-8f2a-fc908d3f96d7" - } - }, - { - "op": "read", - "payload": { - "message": { - "content": [ - { - "caller": { - "type": "direct" - }, - "id": "toolu_01LqMG3Ef6WYSJjLcM22UURE", - "input": { - "file_path": "", - "limit": 50 - }, - "name": "Read", - "type": "tool_use" - } - ], - "context_management": null, - "id": "msg_01AshKPBC3qL7CJVeBJCnEG4", - "model": "claude-haiku-4-5-20251001", - "role": "assistant", - "stop_details": null, - "stop_reason": null, - "stop_sequence": null, - "type": "message", - "usage": { - "cache_creation": { - "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 32085 - }, - "cache_creation_input_tokens": 32085, - "cache_read_input_tokens": 0, - "inference_geo": "not_available", - "input_tokens": 3, - "output_tokens": 1, - "service_tier": "standard" - } - }, - "parent_tool_use_id": "toolu_015CpBQLq1C2DjkN3pSjYmg7", - "session_id": "2ef1d545-f6ea-4427-b093-4afcf2a91ddb", - "type": "assistant", - "uuid": "e55a002f-0139-4221-a659-c8d4a26ed871" - } - }, - { - "op": "read", - "payload": { - "message": { - "content": [ - { - "content": "1\t[build-system]\n2\trequires = [\"setuptools>=82.0.1\"]\n3\tbuild-backend = \"setuptools.build_meta\"\n4\t\n5\t[project]\n6\tname = \"braintrust\"\n7\tdynamic = [\"version\"]\n8\tdescription = \"SDK for integrating Braintrust\"\n9\treadme = \"README.md\"\n10\tlicense = \"MIT\"\n11\trequires-python = \">=3.10.0\"\n12\tauthors = [\n13\t { name = \"Braintrust\", email = \"sdk@braintrustdata.com\" },\n14\t]\n15\tclassifiers = [\n16\t \"Programming Language :: Python :: 3\",\n17\t \"Programming Language :: Python :: 3.10\",\n18\t \"Operating System :: OS Independent\",\n19\t]\n20\tdependencies = [\n21\t \"GitPython\",\n22\t \"requests\",\n23\t \"chevron\",\n24\t \"tqdm\",\n25\t \"exceptiongroup>=1.2.0\",\n26\t \"jsonschema\",\n27\t \"packaging\",\n28\t \"sseclient-py\",\n29\t \"python-slugify\",\n30\t \"typing_extensions>=4.1.0\",\n31\t \"wrapt\",\n32\t]\n33\t\n34\t[project.urls]\n35\tHomepage = \"https://www.braintrust.dev\"\n36\t\"Source Code\" = \"https://github.com/braintrustdata/braintrust-sdk-python\"\n37\t\"Bug Tracker\" = \"https://github.com/braintrustdata/braintrust-sdk-python/issues\"\n38\t\n39\t[project.scripts]\n40\tbraintrust = \"braintrust.cli.__main__:main\"\n41\t\n42\t[project.entry-points.pytest11]\n43\tbraintrust = \"braintrust.wrappers.pytest_plugin.plugin\"\n44\t\n45\t[project.optional-dependencies]\n46\tcli = [\"boto3\", \"python-dotenv\", \"uv\", \"starlette\", \"uvicorn\"]\n47\t# TODO: remove the doc extra in the next major version.\n48\tdoc = []\n49\topenai-agents = [\"openai-agents\"]\n50\totel = [\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n", - "tool_use_id": "toolu_01LqMG3Ef6WYSJjLcM22UURE", - "type": "tool_result" - } - ], - "role": "user" - }, - "parent_tool_use_id": "toolu_015CpBQLq1C2DjkN3pSjYmg7", - "session_id": "2ef1d545-f6ea-4427-b093-4afcf2a91ddb", - "timestamp": "2026-04-17T16:17:44.313Z", - "type": "user", - "uuid": "1f94c0b0-b903-4e63-937f-3210074d7c62" - } - }, - { - "op": "read", - "payload": { - "description": "Running git config --get remote.origin.url", + "description": "Running basename \"$(git rev-parse --show-toplevel)\"", "last_tool_name": "Bash", - "session_id": "2ef1d545-f6ea-4427-b093-4afcf2a91ddb", + "session_id": "2e69a45a-613a-434a-8462-f2b1c3b0c939", "subtype": "task_progress", - "task_id": "ae78d4ad25a910a76", - "tool_use_id": "toolu_015CpBQLq1C2DjkN3pSjYmg7", + "task_id": "ad9381ce80e640411", + "tool_use_id": "toolu_01MPbTvwjXwdeymKs2CaB4pJ", "type": "system", "usage": { - "duration_ms": 2029, - "tool_uses": 2, - "total_tokens": 32091 + "duration_ms": 1533, + "tool_uses": 1, + "total_tokens": 32360 }, - "uuid": "1ab70f6e-b197-4272-9c19-bc16dd4c14a5" + "uuid": "10c06389-cb68-43b8-b19a-b2265a9638ba" } }, { @@ -431,16 +350,16 @@ "caller": { "type": "direct" }, - "id": "toolu_01Xy8xzLyeSTjNBoFWgzZf4b", + "id": "toolu_01N5ZjNQBaHsnMr3QBpNWVje", "input": { - "command": "git config --get remote.origin.url" + "command": "basename \"$(git rev-parse --show-toplevel)\"" }, "name": "Bash", "type": "tool_use" } ], "context_management": null, - "id": "msg_01AshKPBC3qL7CJVeBJCnEG4", + "id": "msg_01YB4PeX1LTR63kFwWHivRa7", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -450,20 +369,20 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 32085 + "ephemeral_5m_input_tokens": 32310 }, - "cache_creation_input_tokens": 32085, + "cache_creation_input_tokens": 32310, "cache_read_input_tokens": 0, "inference_geo": "not_available", "input_tokens": 3, - "output_tokens": 1, + "output_tokens": 47, "service_tier": "standard" } }, - "parent_tool_use_id": "toolu_015CpBQLq1C2DjkN3pSjYmg7", - "session_id": "2ef1d545-f6ea-4427-b093-4afcf2a91ddb", + "parent_tool_use_id": "toolu_01MPbTvwjXwdeymKs2CaB4pJ", + "session_id": "2e69a45a-613a-434a-8462-f2b1c3b0c939", "type": "assistant", - "uuid": "f462ca70-eaa8-46d9-a43e-d562e44c0ad0" + "uuid": "726a3d31-5deb-4d19-9efb-12a9e4b56a3a" } }, { @@ -472,38 +391,38 @@ "message": { "content": [ { - "content": "git@github.com:braintrustdata/braintrust-sdk-python.git", + "content": "braintrust-sdk-python", "is_error": false, - "tool_use_id": "toolu_01Xy8xzLyeSTjNBoFWgzZf4b", + "tool_use_id": "toolu_01N5ZjNQBaHsnMr3QBpNWVje", "type": "tool_result" } ], "role": "user" }, - "parent_tool_use_id": "toolu_015CpBQLq1C2DjkN3pSjYmg7", - "session_id": "2ef1d545-f6ea-4427-b093-4afcf2a91ddb", - "timestamp": "2026-04-17T16:17:44.772Z", + "parent_tool_use_id": "toolu_01MPbTvwjXwdeymKs2CaB4pJ", + "session_id": "2e69a45a-613a-434a-8462-f2b1c3b0c939", + "timestamp": "2026-04-20T20:41:23.825Z", "type": "user", - "uuid": "71fe533a-67ac-44f5-8794-157b5a37a87b" + "uuid": "6037f8b2-9c47-4765-b893-599a4be0c655" } }, { "op": "read", "payload": { "output_file": "", - "session_id": "2ef1d545-f6ea-4427-b093-4afcf2a91ddb", + "session_id": "2e69a45a-613a-434a-8462-f2b1c3b0c939", "status": "completed", "subtype": "task_notification", "summary": "Inspect repository and report name", - "task_id": "ae78d4ad25a910a76", - "tool_use_id": "toolu_015CpBQLq1C2DjkN3pSjYmg7", + "task_id": "ad9381ce80e640411", + "tool_use_id": "toolu_01MPbTvwjXwdeymKs2CaB4pJ", "type": "system", "usage": { - "duration_ms": 3099, - "tool_uses": 2, - "total_tokens": 34359 + "duration_ms": 3265, + "tool_uses": 1, + "total_tokens": 33913 }, - "uuid": "4bfb9b4a-fd8e-41d1-8f67-accd9727ff17" + "uuid": "0521135e-da8f-4dc3-9eec-2362f660283f" } }, { @@ -518,21 +437,21 @@ "type": "text" }, { - "text": "agentId: ae78d4ad25a910a76 (use SendMessage with to: 'ae78d4ad25a910a76' to continue this agent)\ntotal_tokens: 34365\ntool_uses: 2\nduration_ms: 3099", + "text": "agentId: ad9381ce80e640411 (use SendMessage with to: 'ad9381ce80e640411' to continue this agent)\ntotal_tokens: 33875\ntool_uses: 1\nduration_ms: 3267", "type": "text" } ], - "tool_use_id": "toolu_015CpBQLq1C2DjkN3pSjYmg7", + "tool_use_id": "toolu_01MPbTvwjXwdeymKs2CaB4pJ", "type": "tool_result" } ], "role": "user" }, "parent_tool_use_id": null, - "session_id": "2ef1d545-f6ea-4427-b093-4afcf2a91ddb", - "timestamp": "2026-04-17T16:17:45.595Z", + "session_id": "2e69a45a-613a-434a-8462-f2b1c3b0c939", + "timestamp": "2026-04-20T20:41:25.308Z", "tool_use_result": { - "agentId": "ae78d4ad25a910a76", + "agentId": "ad9381ce80e640411", "agentType": "general-purpose", "content": [ { @@ -540,7 +459,7 @@ "type": "text" } ], - "prompt": "Inspect the current repository to determine its name. Look at the directory structure, git configuration, package metadata, or any other relevant files to identify the repository name. Reply with ONLY the repository name, nothing else.", + "prompt": "Inspect the current repository and reply with ONLY the repository name. Nothing else.", "status": "completed", "toolStats": { "bashCount": 1, @@ -548,22 +467,34 @@ "linesAdded": 0, "linesRemoved": 0, "otherToolCount": 0, - "readCount": 1, + "readCount": 0, "searchCount": 0 }, - "totalDurationMs": 3099, - "totalTokens": 34365, - "totalToolUseCount": 2, + "totalDurationMs": 3267, + "totalTokens": 33875, + "totalToolUseCount": 1, "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 2263 + "ephemeral_5m_input_tokens": 5743 }, - "cache_creation_input_tokens": 2263, - "cache_read_input_tokens": 32085, + "cache_creation_input_tokens": 5743, + "cache_read_input_tokens": 28117, "inference_geo": "", - "input_tokens": 7, - "iterations": [], + "input_tokens": 5, + "iterations": [ + { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 5743 + }, + "cache_creation_input_tokens": 5743, + "cache_read_input_tokens": 28117, + "input_tokens": 5, + "output_tokens": 10, + "type": "message" + } + ], "output_tokens": 10, "server_tool_use": { "web_fetch_requests": 0, @@ -574,7 +505,7 @@ } }, "type": "user", - "uuid": "29dc0ba1-d4dd-418e-8c24-9dc6b1a517e3" + "uuid": "a98f152a-4475-49a4-9354-3f208f299a3f" } }, { @@ -584,12 +515,12 @@ "content": [ { "signature": "", - "thinking": "The agent has returned the repository name: `braintrust-sdk-python`\n\nThe user asked me to have the agent reply with only the repository name and to not answer directly without using the subagent. The agent has done that, so I should just pass along the result.", + "thinking": "The agent has returned the repository name: \"braintrust-sdk-python\"\n\nThe agent's response was exactly what was requested - just the repository name with no additional text.", "type": "thinking" } ], "context_management": null, - "id": "msg_014gWMrEwYMN32Bf9V4pMKMX", + "id": "msg_015WCU5kdAPmppXYGRokoNNB", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -599,10 +530,10 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 305 + "ephemeral_5m_input_tokens": 309 }, - "cache_creation_input_tokens": 305, - "cache_read_input_tokens": 37691, + "cache_creation_input_tokens": 309, + "cache_read_input_tokens": 37857, "inference_geo": "not_available", "input_tokens": 8, "output_tokens": 1, @@ -610,9 +541,9 @@ } }, "parent_tool_use_id": null, - "session_id": "2ef1d545-f6ea-4427-b093-4afcf2a91ddb", + "session_id": "2e69a45a-613a-434a-8462-f2b1c3b0c939", "type": "assistant", - "uuid": "b50f943c-9033-4131-8d47-45846d1cd9f2" + "uuid": "32ab8790-3c6d-4594-a38c-2a2eb1f86de3" } }, { @@ -626,7 +557,7 @@ } ], "context_management": null, - "id": "msg_014gWMrEwYMN32Bf9V4pMKMX", + "id": "msg_015WCU5kdAPmppXYGRokoNNB", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -636,10 +567,10 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 305 + "ephemeral_5m_input_tokens": 309 }, - "cache_creation_input_tokens": 305, - "cache_read_input_tokens": 37691, + "cache_creation_input_tokens": 309, + "cache_read_input_tokens": 37857, "inference_geo": "not_available", "input_tokens": 8, "output_tokens": 1, @@ -647,51 +578,63 @@ } }, "parent_tool_use_id": null, - "session_id": "2ef1d545-f6ea-4427-b093-4afcf2a91ddb", + "session_id": "2e69a45a-613a-434a-8462-f2b1c3b0c939", "type": "assistant", - "uuid": "9f965402-708e-48ea-904c-b77bce2dd584" + "uuid": "f087ad4c-a49d-4963-ad0b-72b1760c3593" } }, { "op": "read", "payload": { "api_error_status": null, - "duration_api_ms": 7974, - "duration_ms": 7109, + "duration_api_ms": 8200, + "duration_ms": 7113, "fast_mode_state": "off", "is_error": false, "modelUsage": { "claude-haiku-4-5-20251001": { - "cacheCreationInputTokens": 72344, - "cacheReadInputTokens": 69776, + "cacheCreationInputTokens": 76219, + "cacheReadInputTokens": 65974, "contextWindow": 200000, - "costUSD": 0.1002186, - "inputTokens": 406, + "costUSD": 0.10407515, + "inputTokens": 404, "maxOutputTokens": 32000, - "outputTokens": 481, + "outputTokens": 360, "webSearchRequests": 0 } }, "num_turns": 2, "permission_denials": [], "result": "braintrust-sdk-python", - "session_id": "2ef1d545-f6ea-4427-b093-4afcf2a91ddb", + "session_id": "2e69a45a-613a-434a-8462-f2b1c3b0c939", "stop_reason": "end_turn", "subtype": "success", "terminal_reason": "completed", - "total_cost_usd": 0.1002186, + "total_cost_usd": 0.10407515, "type": "result", "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 37996 + "ephemeral_5m_input_tokens": 38166 }, - "cache_creation_input_tokens": 37996, - "cache_read_input_tokens": 37691, + "cache_creation_input_tokens": 38166, + "cache_read_input_tokens": 37857, "inference_geo": "", "input_tokens": 18, - "iterations": [], - "output_tokens": 285, + "iterations": [ + { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 309 + }, + "cache_creation_input_tokens": 309, + "cache_read_input_tokens": 37857, + "input_tokens": 8, + "output_tokens": 55, + "type": "message" + } + ], + "output_tokens": 271, "server_tool_use": { "web_fetch_requests": 0, "web_search_requests": 0 @@ -699,9 +642,9 @@ "service_tier": "standard", "speed": "standard" }, - "uuid": "39022cdf-72d1-4c71-b614-b94b1979d2b4" + "uuid": "bb30aa07-1022-48f6-a6a2-16b28e079b03" } } ], - "sdk_version": "0.1.61" + "sdk_version": "0.1.63" } diff --git a/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_calculator_with_multiple_operations.json b/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_calculator_with_multiple_operations.json index 4c310075..4f58158f 100644 --- a/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_calculator_with_multiple_operations.json +++ b/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_calculator_with_multiple_operations.json @@ -10,7 +10,7 @@ "hooks": null, "subtype": "initialize" }, - "request_id": "req_1_9ad732c2", + "request_id": "req_1_ac6ba9ed", "type": "control_request" } } @@ -29,7 +29,7 @@ "description": "Anthropic's agentic coding tool", "name": "claude-code", "title": "Claude Code", - "version": "2.1.112", + "version": "2.1.114", "websiteUrl": "https://claude.com/claude-code" }, "protocolVersion": "2025-11-25" @@ -38,7 +38,7 @@ "server_name": "calculator", "subtype": "mcp_message" }, - "request_id": "8338d555-2dc1-4f67-a38d-b66ddb9d420f", + "request_id": "010a48a5-53ba-4fd9-8332-e9c5d0d0cab4", "type": "control_request" } }, @@ -48,7 +48,7 @@ "kind": "json", "value": { "response": { - "request_id": "8338d555-2dc1-4f67-a38d-b66ddb9d420f", + "request_id": "010a48a5-53ba-4fd9-8332-e9c5d0d0cab4", "response": { "mcp_response": { "id": 0, @@ -75,7 +75,7 @@ "op": "read", "payload": { "response": { - "request_id": "req_1_9ad732c2", + "request_id": "req_1_ac6ba9ed", "response": { "account": { "apiKeySource": "ANTHROPIC_API_KEY", @@ -103,7 +103,7 @@ "server_name": "calculator", "subtype": "mcp_message" }, - "request_id": "38146cb0-a9ba-4869-b2f5-e29ff3364e37", + "request_id": "af1fb72f-2b62-4d07-9e49-561976b76af3", "type": "control_request" } }, @@ -128,7 +128,7 @@ "kind": "json", "value": { "response": { - "request_id": "38146cb0-a9ba-4869-b2f5-e29ff3364e37", + "request_id": "af1fb72f-2b62-4d07-9e49-561976b76af3", "response": { "mcp_response": { "jsonrpc": "2.0", @@ -155,7 +155,7 @@ "description": "Anthropic's agentic coding tool", "name": "claude-code", "title": "Claude Code", - "version": "2.1.112", + "version": "2.1.114", "websiteUrl": "https://claude.com/claude-code" }, "protocolVersion": "2025-11-25" @@ -164,7 +164,7 @@ "server_name": "calculator", "subtype": "mcp_message" }, - "request_id": "a4fa6fab-50f6-4db1-b906-c99c1a7e958a", + "request_id": "5d86d421-1d01-412c-8849-6aad5a97613a", "type": "control_request" } }, @@ -174,7 +174,7 @@ "kind": "json", "value": { "response": { - "request_id": "a4fa6fab-50f6-4db1-b906-c99c1a7e958a", + "request_id": "5d86d421-1d01-412c-8849-6aad5a97613a", "response": { "mcp_response": { "id": 0, @@ -209,7 +209,7 @@ "server_name": "calculator", "subtype": "mcp_message" }, - "request_id": "a787f677-b542-4e54-b91e-65b16625aac7", + "request_id": "ae133de5-0ffc-481c-8ea6-97e9201fbf93", "type": "control_request" } }, @@ -219,7 +219,7 @@ "kind": "json", "value": { "response": { - "request_id": "a787f677-b542-4e54-b91e-65b16625aac7", + "request_id": "ae133de5-0ffc-481c-8ea6-97e9201fbf93", "response": { "mcp_response": { "id": 1, @@ -279,7 +279,7 @@ "server_name": "calculator", "subtype": "mcp_message" }, - "request_id": "7e5da956-6452-4565-a1cc-d1c0651c7e8e", + "request_id": "f43a0916-0bf9-41ae-856e-8179ddb17770", "type": "control_request" } }, @@ -289,7 +289,7 @@ "kind": "json", "value": { "response": { - "request_id": "7e5da956-6452-4565-a1cc-d1c0651c7e8e", + "request_id": "f43a0916-0bf9-41ae-856e-8179ddb17770", "response": { "mcp_response": { "jsonrpc": "2.0", @@ -312,7 +312,7 @@ "statusline-setup" ], "apiKeySource": "ANTHROPIC_API_KEY", - "claude_code_version": "2.1.112", + "claude_code_version": "2.1.114", "cwd": "", "fast_mode_state": "off", "mcp_servers": [ @@ -342,18 +342,19 @@ "source": "rust-analyzer-lsp@claude-plugins-official" } ], - "session_id": "4cb634d4-1dfd-4e4e-80a3-c5318dca8932", + "session_id": "b902a692-8d78-4ec0-808b-3104bcba96ae", "skills": [ "update-config", "debug", "simplify", "batch", - "less-permission-prompts", + "fewer-permission-prompts", "loop", "schedule", "claude-api", "create-braintrust-demo", "braintrust", + "sdk-dependency-updates", "sdk-integrations", "sdk-vcr-workflows", "sdk-ci-triage", @@ -365,12 +366,13 @@ "debug", "simplify", "batch", - "less-permission-prompts", + "fewer-permission-prompts", "loop", "schedule", "claude-api", "create-braintrust-demo", "braintrust", + "sdk-dependency-updates", "sdk-integrations", "sdk-vcr-workflows", "sdk-ci-triage", @@ -470,7 +472,7 @@ "mcp__linear-server__update_document" ], "type": "system", - "uuid": "00d68539-4c6e-48d7-bde9-4337ecf0c353" + "uuid": "a0e04c3c-3eb4-47a2-8839-c7b71e3b5bc8" } }, { @@ -480,12 +482,12 @@ "content": [ { "signature": "", - "thinking": "The user is asking me to:\n1. Calculate 15 \u00d7 7\n2. Then subtract 5 from the result\n\nI can use the calculator tool to do this. Let me break it down:\n1. First, 15 \u00d7 7 = 105\n2. Then 105 - 5 = 100\n\nI'll use the calculator tool to perform these operations.", + "thinking": "The user is asking me to:\n1. Calculate 15 multiplied by 7\n2. Subtract 5 from the result\n\nI can use the calculator tool for this. First, I'll multiply 15 by 7, then subtract 5 from the result.\n\nLet me do this in steps:\n1. 15 * 7 = 105\n2. 105 - 5 = 100\n\nI could do this with two calculator calls, or I could just do the math mentally. Since the user is asking me to perform these calculations, I could use the calculator tool to show the work. Let me use it for the multiplication first, then the subtraction.", "type": "thinking" } ], "context_management": null, - "id": "msg_01WAKZ3rwJJUhNo2RgwBZ8Cn", + "id": "msg_01KDXmhpTSph7T3eV5A9RXRJ", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -495,9 +497,9 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 41607 + "ephemeral_5m_input_tokens": 41773 }, - "cache_creation_input_tokens": 41607, + "cache_creation_input_tokens": 41773, "cache_read_input_tokens": 0, "inference_geo": "not_available", "input_tokens": 10, @@ -506,9 +508,9 @@ } }, "parent_tool_use_id": null, - "session_id": "4cb634d4-1dfd-4e4e-80a3-c5318dca8932", + "session_id": "b902a692-8d78-4ec0-808b-3104bcba96ae", "type": "assistant", - "uuid": "16c85e70-3d48-44d6-a589-8e45d7f05ce1" + "uuid": "c111375c-8350-4f64-8741-3f2b8a2bb549" } }, { @@ -520,7 +522,7 @@ "caller": { "type": "direct" }, - "id": "toolu_01NthQ3WD27NUNrKoy92UePu", + "id": "toolu_015rdJyUAdXfKugkaTrVAZh8", "input": { "a": 15, "b": 7, @@ -531,7 +533,7 @@ } ], "context_management": null, - "id": "msg_01WAKZ3rwJJUhNo2RgwBZ8Cn", + "id": "msg_01KDXmhpTSph7T3eV5A9RXRJ", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -541,9 +543,9 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 41607 + "ephemeral_5m_input_tokens": 41773 }, - "cache_creation_input_tokens": 41607, + "cache_creation_input_tokens": 41773, "cache_read_input_tokens": 0, "inference_geo": "not_available", "input_tokens": 10, @@ -552,9 +554,9 @@ } }, "parent_tool_use_id": null, - "session_id": "4cb634d4-1dfd-4e4e-80a3-c5318dca8932", + "session_id": "b902a692-8d78-4ec0-808b-3104bcba96ae", "type": "assistant", - "uuid": "0f1fffe9-cb8a-418a-b23f-3ad5be4d5e72" + "uuid": "abbed83c-dc7e-4db5-91a0-2c085c3f6588" } }, { @@ -567,7 +569,7 @@ "method": "tools/call", "params": { "_meta": { - "claudecode/toolUseId": "toolu_01NthQ3WD27NUNrKoy92UePu", + "claudecode/toolUseId": "toolu_015rdJyUAdXfKugkaTrVAZh8", "progressToken": 2 }, "arguments": { @@ -581,7 +583,7 @@ "server_name": "calculator", "subtype": "mcp_message" }, - "request_id": "e0191585-82a7-4f1f-9220-776ad6b3a918", + "request_id": "3e217c6f-986b-4ef8-aafe-451693ee4fa0", "type": "control_request" } }, @@ -591,7 +593,7 @@ "kind": "json", "value": { "response": { - "request_id": "e0191585-82a7-4f1f-9220-776ad6b3a918", + "request_id": "3e217c6f-986b-4ef8-aafe-451693ee4fa0", "response": { "mcp_response": { "id": 2, @@ -624,15 +626,15 @@ "type": "text" } ], - "tool_use_id": "toolu_01NthQ3WD27NUNrKoy92UePu", + "tool_use_id": "toolu_015rdJyUAdXfKugkaTrVAZh8", "type": "tool_result" } ], "role": "user" }, "parent_tool_use_id": null, - "session_id": "4cb634d4-1dfd-4e4e-80a3-c5318dca8932", - "timestamp": "2026-04-17T16:15:00.857Z", + "session_id": "b902a692-8d78-4ec0-808b-3104bcba96ae", + "timestamp": "2026-04-20T20:39:08.715Z", "tool_use_result": [ { "text": "The result of multiply(15, 7) is 105", @@ -640,45 +642,7 @@ } ], "type": "user", - "uuid": "ff4e0a0a-5360-4424-8e4e-2b3802d2837c" - } - }, - { - "op": "read", - "payload": { - "message": { - "content": [ - { - "signature": "", - "thinking": "Great, 15 \u00d7 7 = 105. Now I need to subtract 5 from that result.", - "type": "thinking" - } - ], - "context_management": null, - "id": "msg_01HqNtumzNBtn8M6kJKLY7fB", - "model": "claude-haiku-4-5-20251001", - "role": "assistant", - "stop_details": null, - "stop_reason": null, - "stop_sequence": null, - "type": "message", - "usage": { - "cache_creation": { - "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 217 - }, - "cache_creation_input_tokens": 217, - "cache_read_input_tokens": 41607, - "inference_geo": "not_available", - "input_tokens": 8, - "output_tokens": 1, - "service_tier": "standard" - } - }, - "parent_tool_use_id": null, - "session_id": "4cb634d4-1dfd-4e4e-80a3-c5318dca8932", - "type": "assistant", - "uuid": "f2fe2d62-b212-4129-b6a9-c528517cc4f2" + "uuid": "490cfd1d-a626-4b59-840a-3e32c453a44f" } }, { @@ -690,7 +654,7 @@ "caller": { "type": "direct" }, - "id": "toolu_01AWL8CQDc8u9Hxou4Gexbi2", + "id": "toolu_01AsDRXUGASeUL8NEr7mUNm4", "input": { "a": 105, "b": 5, @@ -701,7 +665,7 @@ } ], "context_management": null, - "id": "msg_01HqNtumzNBtn8M6kJKLY7fB", + "id": "msg_01KDXmhpTSph7T3eV5A9RXRJ", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -711,20 +675,20 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 217 + "ephemeral_5m_input_tokens": 41773 }, - "cache_creation_input_tokens": 217, - "cache_read_input_tokens": 41607, + "cache_creation_input_tokens": 41773, + "cache_read_input_tokens": 0, "inference_geo": "not_available", - "input_tokens": 8, - "output_tokens": 1, + "input_tokens": 10, + "output_tokens": 7, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "4cb634d4-1dfd-4e4e-80a3-c5318dca8932", + "session_id": "b902a692-8d78-4ec0-808b-3104bcba96ae", "type": "assistant", - "uuid": "2ac3bd96-a2ad-4ae8-aa71-80ae293eeb1d" + "uuid": "9de0e27b-0fcd-42fb-9d66-99fdeac5092d" } }, { @@ -737,7 +701,7 @@ "method": "tools/call", "params": { "_meta": { - "claudecode/toolUseId": "toolu_01AWL8CQDc8u9Hxou4Gexbi2", + "claudecode/toolUseId": "toolu_01AsDRXUGASeUL8NEr7mUNm4", "progressToken": 3 }, "arguments": { @@ -751,7 +715,7 @@ "server_name": "calculator", "subtype": "mcp_message" }, - "request_id": "a18ee913-3630-470a-a574-1ae2e65d09f3", + "request_id": "4d2f859e-7f95-4c9b-928b-41858aa71dd5", "type": "control_request" } }, @@ -761,7 +725,7 @@ "kind": "json", "value": { "response": { - "request_id": "a18ee913-3630-470a-a574-1ae2e65d09f3", + "request_id": "4d2f859e-7f95-4c9b-928b-41858aa71dd5", "response": { "mcp_response": { "id": 3, @@ -794,15 +758,15 @@ "type": "text" } ], - "tool_use_id": "toolu_01AWL8CQDc8u9Hxou4Gexbi2", + "tool_use_id": "toolu_01AsDRXUGASeUL8NEr7mUNm4", "type": "tool_result" } ], "role": "user" }, "parent_tool_use_id": null, - "session_id": "4cb634d4-1dfd-4e4e-80a3-c5318dca8932", - "timestamp": "2026-04-17T16:15:02.265Z", + "session_id": "b902a692-8d78-4ec0-808b-3104bcba96ae", + "timestamp": "2026-04-20T20:39:09.204Z", "tool_use_result": [ { "text": "The result of subtract(105, 5) is 100", @@ -810,7 +774,7 @@ } ], "type": "user", - "uuid": "97050552-632b-4e8c-9750-9d27c6a44830" + "uuid": "bcfe4975-a984-4b22-9cbd-a33c2c97c2f0" } }, { @@ -820,12 +784,12 @@ "content": [ { "signature": "", - "thinking": "Perfect! The calculations are:\n1. 15 \u00d7 7 = 105\n2. 105 - 5 = 100\n\nSo the final answer is 100.", + "thinking": "Perfect! The calculations are complete:\n- 15 multiplied by 7 = 105\n- 105 minus 5 = 100\n\nSo the final answer is 100.", "type": "thinking" } ], "context_management": null, - "id": "msg_01DevJ18r2eUuKLCvmRPgBzs", + "id": "msg_01S2MeoAD5JAJyMzTq9WMPMU", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -835,20 +799,20 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 155 + "ephemeral_5m_input_tokens": 424 }, - "cache_creation_input_tokens": 155, - "cache_read_input_tokens": 41824, + "cache_creation_input_tokens": 424, + "cache_read_input_tokens": 41773, "inference_geo": "not_available", "input_tokens": 8, - "output_tokens": 4, + "output_tokens": 3, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "4cb634d4-1dfd-4e4e-80a3-c5318dca8932", + "session_id": "b902a692-8d78-4ec0-808b-3104bcba96ae", "type": "assistant", - "uuid": "4c396159-84eb-417a-af22-35c82445f7d5" + "uuid": "6da52b3c-a456-4aba-a43b-c91f577f2df4" } }, { @@ -857,12 +821,12 @@ "message": { "content": [ { - "text": "The answer is **100**.\n\nHere's the breakdown:\n1. 15 \u00d7 7 = 105\n2. 105 \u2212 5 = 100", + "text": "The answer is **100**.\n\nHere's the breakdown:\n- 15 \u00d7 7 = 105\n- 105 - 5 = **100**", "type": "text" } ], "context_management": null, - "id": "msg_01DevJ18r2eUuKLCvmRPgBzs", + "id": "msg_01S2MeoAD5JAJyMzTq9WMPMU", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -872,62 +836,74 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 155 + "ephemeral_5m_input_tokens": 424 }, - "cache_creation_input_tokens": 155, - "cache_read_input_tokens": 41824, + "cache_creation_input_tokens": 424, + "cache_read_input_tokens": 41773, "inference_geo": "not_available", "input_tokens": 8, - "output_tokens": 4, + "output_tokens": 3, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "4cb634d4-1dfd-4e4e-80a3-c5318dca8932", + "session_id": "b902a692-8d78-4ec0-808b-3104bcba96ae", "type": "assistant", - "uuid": "e4aa110a-7aba-4601-af03-d0634bdaa40c" + "uuid": "8b6c14f9-5ca7-41f2-8a96-ea6505a879ac" } }, { "op": "read", "payload": { "api_error_status": null, - "duration_api_ms": 6140, - "duration_ms": 4895, + "duration_api_ms": 5701, + "duration_ms": 4689, "fast_mode_state": "off", "is_error": false, "modelUsage": { "claude-haiku-4-5-20251001": { - "cacheCreationInputTokens": 41979, - "cacheReadInputTokens": 83431, + "cacheCreationInputTokens": 42197, + "cacheReadInputTokens": 41773, "contextWindow": 200000, - "costUSD": 0.06324085, - "inputTokens": 384, + "costUSD": 0.05940954999999999, + "inputTokens": 376, "maxOutputTokens": 32000, - "outputTokens": 408, + "outputTokens": 422, "webSearchRequests": 0 } }, "num_turns": 3, "permission_denials": [], - "result": "The answer is **100**.\n\nHere's the breakdown:\n1. 15 \u00d7 7 = 105\n2. 105 \u2212 5 = 100", - "session_id": "4cb634d4-1dfd-4e4e-80a3-c5318dca8932", + "result": "The answer is **100**.\n\nHere's the breakdown:\n- 15 \u00d7 7 = 105\n- 105 - 5 = **100**", + "session_id": "b902a692-8d78-4ec0-808b-3104bcba96ae", "stop_reason": "end_turn", "subtype": "success", "terminal_reason": "completed", - "total_cost_usd": 0.06324085, + "total_cost_usd": 0.05940954999999999, "type": "result", "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 41979 + "ephemeral_5m_input_tokens": 42197 }, - "cache_creation_input_tokens": 41979, - "cache_read_input_tokens": 83431, + "cache_creation_input_tokens": 42197, + "cache_read_input_tokens": 41773, "inference_geo": "", - "input_tokens": 26, - "iterations": [], - "output_tokens": 397, + "input_tokens": 18, + "iterations": [ + { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 424 + }, + "cache_creation_input_tokens": 424, + "cache_read_input_tokens": 41773, + "input_tokens": 8, + "output_tokens": 90, + "type": "message" + } + ], + "output_tokens": 411, "server_tool_use": { "web_fetch_requests": 0, "web_search_requests": 0 @@ -935,9 +911,9 @@ "service_tier": "standard", "speed": "standard" }, - "uuid": "27cdc403-3ba1-4d80-96ae-af10ae289537" + "uuid": "3c431468-f8b0-4d46-bbe0-4f25b44d0f59" } } ], - "sdk_version": "0.1.61" + "sdk_version": "0.1.63" } diff --git a/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_concurrent_subagents_produce_parallel_llm_spans_with_correct_parenting.json b/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_concurrent_subagents_produce_parallel_llm_spans_with_correct_parenting.json index 349c0f56..299e65b0 100644 --- a/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_concurrent_subagents_produce_parallel_llm_spans_with_correct_parenting.json +++ b/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_concurrent_subagents_produce_parallel_llm_spans_with_correct_parenting.json @@ -10,7 +10,7 @@ "hooks": null, "subtype": "initialize" }, - "request_id": "req_1_99ee9b02", + "request_id": "req_1_7459a923", "type": "control_request" } } @@ -19,7 +19,7 @@ "op": "read", "payload": { "response": { - "request_id": "req_1_99ee9b02", + "request_id": "req_1_7459a923", "response": { "account": { "apiKeySource": "ANTHROPIC_API_KEY", @@ -61,7 +61,7 @@ "statusline-setup" ], "apiKeySource": "ANTHROPIC_API_KEY", - "claude_code_version": "2.1.112", + "claude_code_version": "2.1.114", "cwd": "", "fast_mode_state": "off", "mcp_servers": [], @@ -78,13 +78,13 @@ "source": "rust-analyzer-lsp@claude-plugins-official" } ], - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", "skills": [ "update-config", "debug", "simplify", "batch", - "less-permission-prompts", + "fewer-permission-prompts", "loop", "schedule", "claude-api", @@ -96,7 +96,7 @@ "debug", "simplify", "batch", - "less-permission-prompts", + "fewer-permission-prompts", "loop", "schedule", "claude-api", @@ -144,7 +144,7 @@ "Write" ], "type": "system", - "uuid": "5998de44-e790-4ef7-bac8-be227524e362" + "uuid": "1b8a7475-ebe6-4354-aae3-bfb1b73d0322" } }, { @@ -154,12 +154,12 @@ "content": [ { "signature": "", - "thinking": "The user is asking me to:\n1. Use exactly three bundled general-purpose subagents\n2. Start all three Agent tool calls before waiting for any result\n3. Each subagent must:\n - Subagent A: Run `echo bash-a-output` via Bash, then Read task_a.txt\n - Subagent B: Run `echo bash-b-output` via Bash, then Read task_b.txt\n - Subagent C: Run `echo bash-c-output` via Bash, then Read task_c.txt\n4. Each delegated subagent must return only its file contents after completing both tool calls\n5. After all three finish, reply with exactly three lines in order A, B, C\n6. Don't ask clarifying questions\n7. Don't answer directly without using all three subagents\n\nI need to create three Agent calls in parallel that will:\n- Execute Bash commands\n- Read file contents\n- Return the results\n\nLet me create three general-purpose agents with appropriate prompts.", + "thinking": "The user is asking me to use three general-purpose subagents to complete a specific task. Let me break down the requirements:\n\n1. Use exactly three bundled general-purpose subagents\n2. Start all three Agent tool calls before waiting for any result\n3. Subagent A must:\n - Use Bash to run `echo bash-a-output`\n - Then use Read on task_a.txt\n - Return only file contents after both tool calls\n4. Subagent B must:\n - Use Bash to run `echo bash-b-output`\n - Then use Read on task_b.txt\n - Return only file contents after both tool calls\n5. Subagent C must:\n - Use Bash to run `echo bash-c-output`\n - Then use Read on task_c.txt\n - Return only file contents after both tool calls\n6. After all three finish, reply with exactly three lines in order A, B, C\n7. Don't ask clarifying questions\n8. Don't answer directly without using all three subagents\n\nI need to create three prompts for the subagents that will:\n- Run the specified bash command\n- Read the specified file\n- Return only the file contents\n\nLet me create three Agent calls with subagent_type \"general-purpose\" to handle this.", "type": "thinking" } ], "context_management": null, - "id": "msg_01DsKPNy8YsskGyxuj16FXoc", + "id": "msg_01KxH1Kz2EDeYbLpEnjhZKqN", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -169,20 +169,20 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 0 + "ephemeral_5m_input_tokens": 1580 }, - "cache_creation_input_tokens": 0, - "cache_read_input_tokens": 23360, + "cache_creation_input_tokens": 1580, + "cache_read_input_tokens": 21824, "inference_geo": "not_available", "input_tokens": 10, - "output_tokens": 8, + "output_tokens": 1, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", "type": "assistant", - "uuid": "6dde3110-b98b-474e-aa5f-9b376a26d3d6" + "uuid": "a9ec4757-e0a9-419b-968e-150c249385a7" } }, { @@ -194,17 +194,18 @@ "caller": { "type": "direct" }, - "id": "toolu_01CdZ7e2eZqRGeYCmQhKcG7K", + "id": "toolu_01GBjizRNMFdkNi4qq6BJdJD", "input": { - "description": "Subagent A: bash and read task", - "prompt": "Run `echo bash-a-output` using Bash, then read the contents of task_a.txt using the Read tool. Return only the contents of task_a.txt file." + "description": "Subagent A: Echo output and read task_a.txt", + "prompt": "Run the bash command `echo bash-a-output`, then read the file task_a.txt. Return only the contents of task_a.txt file, nothing else.", + "subagent_type": "general-purpose" }, "name": "Agent", "type": "tool_use" } ], "context_management": null, - "id": "msg_01DsKPNy8YsskGyxuj16FXoc", + "id": "msg_01KxH1Kz2EDeYbLpEnjhZKqN", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -214,34 +215,34 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 0 + "ephemeral_5m_input_tokens": 1580 }, - "cache_creation_input_tokens": 0, - "cache_read_input_tokens": 23360, + "cache_creation_input_tokens": 1580, + "cache_read_input_tokens": 21824, "inference_geo": "not_available", "input_tokens": 10, - "output_tokens": 8, + "output_tokens": 1, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", "type": "assistant", - "uuid": "2bdb4094-859f-488f-a9aa-a787adbda0dd" + "uuid": "adb7a44e-db20-4d7e-9baa-85f78665f087" } }, { "op": "read", "payload": { - "description": "Subagent A: bash and read task", - "prompt": "Run `echo bash-a-output` using Bash, then read the contents of task_a.txt using the Read tool. Return only the contents of task_a.txt file.", - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", + "description": "Subagent A: Echo output and read task_a.txt", + "prompt": "Run the bash command `echo bash-a-output`, then read the file task_a.txt. Return only the contents of task_a.txt file, nothing else.", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", "subtype": "task_started", - "task_id": "a7252fc6493b55b42", + "task_id": "aed9b65aa7a9ae534", "task_type": "local_agent", - "tool_use_id": "toolu_01CdZ7e2eZqRGeYCmQhKcG7K", + "tool_use_id": "toolu_01GBjizRNMFdkNi4qq6BJdJD", "type": "system", - "uuid": "22e17ce9-f574-451b-8ff1-3ace51458e39" + "uuid": "f39047f7-c42e-4089-9415-5fe4bb030453" } }, { @@ -250,17 +251,17 @@ "message": { "content": [ { - "text": "Run `echo bash-a-output` using Bash, then read the contents of task_a.txt using the Read tool. Return only the contents of task_a.txt file.", + "text": "Run the bash command `echo bash-a-output`, then read the file task_a.txt. Return only the contents of task_a.txt file, nothing else.", "type": "text" } ], "role": "user" }, - "parent_tool_use_id": "toolu_01CdZ7e2eZqRGeYCmQhKcG7K", - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", - "timestamp": "2026-04-17T16:19:30.221Z", + "parent_tool_use_id": "toolu_01GBjizRNMFdkNi4qq6BJdJD", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", + "timestamp": "2026-04-20T20:41:59.621Z", "type": "user", - "uuid": "67b56c67-8e47-49b1-9703-4448f33445f6" + "uuid": "9bff667e-999f-402d-b48f-529a1a098b69" } }, { @@ -272,17 +273,18 @@ "caller": { "type": "direct" }, - "id": "toolu_017yFZ6fdc1YuFQs2kazZJgT", + "id": "toolu_013wkx2a5p9pbNYBhxQVcgwp", "input": { - "description": "Subagent B: bash and read task", - "prompt": "Run `echo bash-b-output` using Bash, then read the contents of task_b.txt using the Read tool. Return only the contents of task_b.txt file." + "description": "Subagent B: Echo output and read task_b.txt", + "prompt": "Run the bash command `echo bash-b-output`, then read the file task_b.txt. Return only the contents of task_b.txt file, nothing else.", + "subagent_type": "general-purpose" }, "name": "Agent", "type": "tool_use" } ], "context_management": null, - "id": "msg_01DsKPNy8YsskGyxuj16FXoc", + "id": "msg_01KxH1Kz2EDeYbLpEnjhZKqN", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -292,34 +294,34 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 0 + "ephemeral_5m_input_tokens": 1580 }, - "cache_creation_input_tokens": 0, - "cache_read_input_tokens": 23360, + "cache_creation_input_tokens": 1580, + "cache_read_input_tokens": 21824, "inference_geo": "not_available", "input_tokens": 10, - "output_tokens": 8, + "output_tokens": 1, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", "type": "assistant", - "uuid": "f8a7a44f-d0aa-486e-94cf-66a6818e7857" + "uuid": "38bec6c8-0027-42ce-b59f-7b91b9d6f60e" } }, { "op": "read", "payload": { - "description": "Subagent B: bash and read task", - "prompt": "Run `echo bash-b-output` using Bash, then read the contents of task_b.txt using the Read tool. Return only the contents of task_b.txt file.", - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", + "description": "Subagent B: Echo output and read task_b.txt", + "prompt": "Run the bash command `echo bash-b-output`, then read the file task_b.txt. Return only the contents of task_b.txt file, nothing else.", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", "subtype": "task_started", - "task_id": "a9b2b0632eb62cc71", + "task_id": "a38a4f603afdddc11", "task_type": "local_agent", - "tool_use_id": "toolu_017yFZ6fdc1YuFQs2kazZJgT", + "tool_use_id": "toolu_013wkx2a5p9pbNYBhxQVcgwp", "type": "system", - "uuid": "de3d2de0-463b-421b-86df-af0052f27936" + "uuid": "848f5b92-5262-4b61-bed6-7f1a0e1c08b1" } }, { @@ -328,17 +330,17 @@ "message": { "content": [ { - "text": "Run `echo bash-b-output` using Bash, then read the contents of task_b.txt using the Read tool. Return only the contents of task_b.txt file.", + "text": "Run the bash command `echo bash-b-output`, then read the file task_b.txt. Return only the contents of task_b.txt file, nothing else.", "type": "text" } ], "role": "user" }, - "parent_tool_use_id": "toolu_017yFZ6fdc1YuFQs2kazZJgT", - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", - "timestamp": "2026-04-17T16:19:30.432Z", + "parent_tool_use_id": "toolu_013wkx2a5p9pbNYBhxQVcgwp", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", + "timestamp": "2026-04-20T20:41:59.768Z", "type": "user", - "uuid": "c13593d1-c9ec-43f3-8ff3-724a8f06c436" + "uuid": "d4209611-7279-47cf-af73-bda4503ab566" } }, { @@ -350,17 +352,18 @@ "caller": { "type": "direct" }, - "id": "toolu_01X1zCmGAowCxrH9vvrVvihb", + "id": "toolu_019cQYEAX37HVJZjHqNnxdaa", "input": { - "description": "Subagent C: bash and read task", - "prompt": "Run `echo bash-c-output` using Bash, then read the contents of task_c.txt using the Read tool. Return only the contents of task_c.txt file." + "description": "Subagent C: Echo output and read task_c.txt", + "prompt": "Run the bash command `echo bash-c-output`, then read the file task_c.txt. Return only the contents of task_c.txt file, nothing else.", + "subagent_type": "general-purpose" }, "name": "Agent", "type": "tool_use" } ], "context_management": null, - "id": "msg_01DsKPNy8YsskGyxuj16FXoc", + "id": "msg_01KxH1Kz2EDeYbLpEnjhZKqN", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -370,34 +373,34 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 0 + "ephemeral_5m_input_tokens": 1580 }, - "cache_creation_input_tokens": 0, - "cache_read_input_tokens": 23360, + "cache_creation_input_tokens": 1580, + "cache_read_input_tokens": 21824, "inference_geo": "not_available", "input_tokens": 10, - "output_tokens": 8, + "output_tokens": 1, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", "type": "assistant", - "uuid": "8a8cdfac-009f-468e-a268-a5c2fa3c9fce" + "uuid": "d306fa66-f871-4dc0-965e-9aa26dfd457b" } }, { "op": "read", "payload": { - "description": "Subagent C: bash and read task", - "prompt": "Run `echo bash-c-output` using Bash, then read the contents of task_c.txt using the Read tool. Return only the contents of task_c.txt file.", - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", + "description": "Subagent C: Echo output and read task_c.txt", + "prompt": "Run the bash command `echo bash-c-output`, then read the file task_c.txt. Return only the contents of task_c.txt file, nothing else.", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", "subtype": "task_started", - "task_id": "a4c582314e0225673", + "task_id": "a46c4aa351332a078", "task_type": "local_agent", - "tool_use_id": "toolu_01X1zCmGAowCxrH9vvrVvihb", + "tool_use_id": "toolu_019cQYEAX37HVJZjHqNnxdaa", "type": "system", - "uuid": "4333e1b2-a650-4a15-865e-f8574e7ff0b6" + "uuid": "b29d3076-da12-4fb2-bbd5-9e79eccaf0ec" } }, { @@ -406,17 +409,17 @@ "message": { "content": [ { - "text": "Run `echo bash-c-output` using Bash, then read the contents of task_c.txt using the Read tool. Return only the contents of task_c.txt file.", + "text": "Run the bash command `echo bash-c-output`, then read the file task_c.txt. Return only the contents of task_c.txt file, nothing else.", "type": "text" } ], "role": "user" }, - "parent_tool_use_id": "toolu_01X1zCmGAowCxrH9vvrVvihb", - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", - "timestamp": "2026-04-17T16:19:30.729Z", + "parent_tool_use_id": "toolu_019cQYEAX37HVJZjHqNnxdaa", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", + "timestamp": "2026-04-20T20:42:00.234Z", "type": "user", - "uuid": "dd0233ee-b2cf-4552-b55f-7ed3ee93d6ba" + "uuid": "3c5df5e3-8f06-493b-8e18-7167d9faf408" } }, { @@ -424,17 +427,17 @@ "payload": { "description": "Running echo bash-b-output", "last_tool_name": "Bash", - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", "subtype": "task_progress", - "task_id": "a9b2b0632eb62cc71", - "tool_use_id": "toolu_017yFZ6fdc1YuFQs2kazZJgT", + "task_id": "a38a4f603afdddc11", + "tool_use_id": "toolu_013wkx2a5p9pbNYBhxQVcgwp", "type": "system", "usage": { - "duration_ms": 1058, + "duration_ms": 1192, "tool_uses": 1, - "total_tokens": 17501 + "total_tokens": 17534 }, - "uuid": "69b12f63-7302-4b7f-9a14-a8157fa04d3c" + "uuid": "9f8da3a6-82e6-441f-a08e-110cc2c31949" } }, { @@ -446,7 +449,7 @@ "caller": { "type": "direct" }, - "id": "toolu_014J8Asf3FC9iXzEMoUg1TbQ", + "id": "toolu_01Ar45dSwn2Q1WWXz9scSMV9", "input": { "command": "echo bash-b-output" }, @@ -455,7 +458,7 @@ } ], "context_management": null, - "id": "msg_01TpELNuELTeQ2AVQWkvx6t2", + "id": "msg_01Axo22uJWZxtiMn5BfJ6BKu", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -465,20 +468,20 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 1065 + "ephemeral_5m_input_tokens": 1062 }, - "cache_creation_input_tokens": 1065, - "cache_read_input_tokens": 16423, + "cache_creation_input_tokens": 1062, + "cache_read_input_tokens": 16467, "inference_geo": "not_available", "input_tokens": 3, - "output_tokens": 5, + "output_tokens": 1, "service_tier": "standard" } }, - "parent_tool_use_id": "toolu_017yFZ6fdc1YuFQs2kazZJgT", - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", + "parent_tool_use_id": "toolu_013wkx2a5p9pbNYBhxQVcgwp", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", "type": "assistant", - "uuid": "81cd61b3-e9ed-492f-bffe-cb4d31274c10" + "uuid": "96cedf31-3c19-40e0-9fc3-773269644232" } }, { @@ -486,17 +489,17 @@ "payload": { "description": "Running echo bash-a-output", "last_tool_name": "Bash", - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", "subtype": "task_progress", - "task_id": "a7252fc6493b55b42", - "tool_use_id": "toolu_01CdZ7e2eZqRGeYCmQhKcG7K", + "task_id": "aed9b65aa7a9ae534", + "tool_use_id": "toolu_01GBjizRNMFdkNi4qq6BJdJD", "type": "system", "usage": { - "duration_ms": 1487, + "duration_ms": 1361, "tool_uses": 1, - "total_tokens": 17497 + "total_tokens": 17591 }, - "uuid": "9ddf367c-9a00-4227-bc99-4905548084b2" + "uuid": "11cd6a38-c8fe-4a04-88a7-2661765e7134" } }, { @@ -508,7 +511,7 @@ "caller": { "type": "direct" }, - "id": "toolu_017NRTmuBTmTjt1X8DFFMvAw", + "id": "toolu_01FLjoAsjuyt8axnkJQoxZUM", "input": { "command": "echo bash-a-output" }, @@ -517,7 +520,7 @@ } ], "context_management": null, - "id": "msg_01VJwMEsFfFt5d9oyqfcRXxX", + "id": "msg_013JRQhdUywdE2bHPhXgW233", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -527,20 +530,20 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 1065 + "ephemeral_5m_input_tokens": 1062 }, - "cache_creation_input_tokens": 1065, - "cache_read_input_tokens": 16423, + "cache_creation_input_tokens": 1062, + "cache_read_input_tokens": 16467, "inference_geo": "not_available", "input_tokens": 3, - "output_tokens": 3, + "output_tokens": 59, "service_tier": "standard" } }, - "parent_tool_use_id": "toolu_01CdZ7e2eZqRGeYCmQhKcG7K", - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", + "parent_tool_use_id": "toolu_01GBjizRNMFdkNi4qq6BJdJD", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", "type": "assistant", - "uuid": "f5f7fc15-0af7-4e30-a0cc-8d4135b81242" + "uuid": "4a72ad4e-0c37-46ad-b658-fcf0d8d2ba5a" } }, { @@ -548,17 +551,17 @@ "payload": { "description": "Reading task_a.txt", "last_tool_name": "Read", - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", "subtype": "task_progress", - "task_id": "a7252fc6493b55b42", - "tool_use_id": "toolu_01CdZ7e2eZqRGeYCmQhKcG7K", + "task_id": "aed9b65aa7a9ae534", + "tool_use_id": "toolu_01GBjizRNMFdkNi4qq6BJdJD", "type": "system", "usage": { - "duration_ms": 1576, + "duration_ms": 1451, "tool_uses": 2, - "total_tokens": 17500 + "total_tokens": 17650 }, - "uuid": "020edced-ecc6-4a52-a663-6bf7a1b9c901" + "uuid": "57ce6466-a1c2-4102-a2b5-275cd50301d9" } }, { @@ -570,16 +573,16 @@ "caller": { "type": "direct" }, - "id": "toolu_01KZ6vbBKbB5rTWsgvyPosg5", + "id": "toolu_01X3ZZCKBciRrjXAtSdKiV4X", "input": { - "file_path": "/private/var/folders/1r/0r49yqc973s87vl4n1x_3j1m0000gn/T/pytest-of-abhijeetprasad/pytest-580/test_concurrent_subagents_prod0/concurrent_subagent_workspace/task_a.txt" + "file_path": "/private/var/folders/1r/0r49yqc973s87vl4n1x_3j1m0000gn/T/pytest-of-abhijeetprasad/pytest-686/test_concurrent_subagents_prod0/concurrent_subagent_workspace/task_a.txt" }, "name": "Read", "type": "tool_use" } ], "context_management": null, - "id": "msg_01VJwMEsFfFt5d9oyqfcRXxX", + "id": "msg_013JRQhdUywdE2bHPhXgW233", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -589,38 +592,20 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 1065 + "ephemeral_5m_input_tokens": 1062 }, - "cache_creation_input_tokens": 1065, - "cache_read_input_tokens": 16423, + "cache_creation_input_tokens": 1062, + "cache_read_input_tokens": 16467, "inference_geo": "not_available", "input_tokens": 3, - "output_tokens": 3, + "output_tokens": 59, "service_tier": "standard" } }, - "parent_tool_use_id": "toolu_01CdZ7e2eZqRGeYCmQhKcG7K", - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", + "parent_tool_use_id": "toolu_01GBjizRNMFdkNi4qq6BJdJD", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", "type": "assistant", - "uuid": "0f876c94-0390-4e75-9af8-60ee9c2160da" - } - }, - { - "op": "read", - "payload": { - "description": "Reading task_b.txt", - "last_tool_name": "Read", - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", - "subtype": "task_progress", - "task_id": "a9b2b0632eb62cc71", - "tool_use_id": "toolu_017yFZ6fdc1YuFQs2kazZJgT", - "type": "system", - "usage": { - "duration_ms": 1372, - "tool_uses": 2, - "total_tokens": 17506 - }, - "uuid": "7456cd2b-a570-45d3-b657-81c5b2793dfe" + "uuid": "2a7de03e-fa0c-4616-89b9-dfb48a7e7a93" } }, { @@ -629,42 +614,18 @@ "message": { "content": [ { - "caller": { - "type": "direct" - }, - "id": "toolu_015WWH6WSynVLhnd3L6mjkxi", - "input": { - "file_path": "/private/var/folders/1r/0r49yqc973s87vl4n1x_3j1m0000gn/T/pytest-of-abhijeetprasad/pytest-580/test_concurrent_subagents_prod0/concurrent_subagent_workspace/task_b.txt" - }, - "name": "Read", - "type": "tool_use" + "content": "1\ttask_label=A\n2\towner=alpha\n3\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n", + "tool_use_id": "toolu_01X3ZZCKBciRrjXAtSdKiV4X", + "type": "tool_result" } ], - "context_management": null, - "id": "msg_01TpELNuELTeQ2AVQWkvx6t2", - "model": "claude-haiku-4-5-20251001", - "role": "assistant", - "stop_details": null, - "stop_reason": null, - "stop_sequence": null, - "type": "message", - "usage": { - "cache_creation": { - "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 1065 - }, - "cache_creation_input_tokens": 1065, - "cache_read_input_tokens": 16423, - "inference_geo": "not_available", - "input_tokens": 3, - "output_tokens": 5, - "service_tier": "standard" - } + "role": "user" }, - "parent_tool_use_id": "toolu_017yFZ6fdc1YuFQs2kazZJgT", - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", - "type": "assistant", - "uuid": "ed0c45c0-da1e-4d77-9ab9-ed94a9c13e95" + "parent_tool_use_id": "toolu_01GBjizRNMFdkNi4qq6BJdJD", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", + "timestamp": "2026-04-20T20:42:01.074Z", + "type": "user", + "uuid": "5e59b13c-47e5-4f0b-a479-09d47bfabfbc" } }, { @@ -673,18 +634,19 @@ "message": { "content": [ { - "content": "1\ttask_label=A\n2\towner=alpha\n3\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n", - "tool_use_id": "toolu_01KZ6vbBKbB5rTWsgvyPosg5", + "content": "bash-a-output", + "is_error": false, + "tool_use_id": "toolu_01FLjoAsjuyt8axnkJQoxZUM", "type": "tool_result" } ], "role": "user" }, - "parent_tool_use_id": "toolu_01CdZ7e2eZqRGeYCmQhKcG7K", - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", - "timestamp": "2026-04-17T16:19:31.801Z", + "parent_tool_use_id": "toolu_01GBjizRNMFdkNi4qq6BJdJD", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", + "timestamp": "2026-04-20T20:42:01.147Z", "type": "user", - "uuid": "9bd14fae-4ec1-458b-8f5f-4d39f736f026" + "uuid": "a1084bde-5e98-467f-b0a2-e85034737043" } }, { @@ -693,18 +655,37 @@ "message": { "content": [ { - "content": "1\ttask_label=B\n2\towner=beta\n3\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n", - "tool_use_id": "toolu_015WWH6WSynVLhnd3L6mjkxi", + "content": "bash-b-output", + "is_error": false, + "tool_use_id": "toolu_01Ar45dSwn2Q1WWXz9scSMV9", "type": "tool_result" } ], "role": "user" }, - "parent_tool_use_id": "toolu_017yFZ6fdc1YuFQs2kazZJgT", - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", - "timestamp": "2026-04-17T16:19:31.807Z", + "parent_tool_use_id": "toolu_013wkx2a5p9pbNYBhxQVcgwp", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", + "timestamp": "2026-04-20T20:42:01.146Z", "type": "user", - "uuid": "0c9ba936-d0af-47c9-acbb-e6c2ec8e8613" + "uuid": "56466de4-5de7-40d6-9c40-2ff73a6edc8a" + } + }, + { + "op": "read", + "payload": { + "description": "Reading task_b.txt", + "last_tool_name": "Read", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", + "subtype": "task_progress", + "task_id": "a38a4f603afdddc11", + "tool_use_id": "toolu_013wkx2a5p9pbNYBhxQVcgwp", + "type": "system", + "usage": { + "duration_ms": 1409, + "tool_uses": 2, + "total_tokens": 17535 + }, + "uuid": "15fd43d9-93c2-4d2c-80aa-fcc5e012b05b" } }, { @@ -713,19 +694,42 @@ "message": { "content": [ { - "content": "bash-a-output", - "is_error": false, - "tool_use_id": "toolu_017NRTmuBTmTjt1X8DFFMvAw", - "type": "tool_result" + "caller": { + "type": "direct" + }, + "id": "toolu_01Ea2LVTsYrg8UQ7asiP1PFk", + "input": { + "file_path": "/private/var/folders/1r/0r49yqc973s87vl4n1x_3j1m0000gn/T/pytest-of-abhijeetprasad/pytest-686/test_concurrent_subagents_prod0/concurrent_subagent_workspace/task_b.txt" + }, + "name": "Read", + "type": "tool_use" } ], - "role": "user" + "context_management": null, + "id": "msg_01Axo22uJWZxtiMn5BfJ6BKu", + "model": "claude-haiku-4-5-20251001", + "role": "assistant", + "stop_details": null, + "stop_reason": null, + "stop_sequence": null, + "type": "message", + "usage": { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 1062 + }, + "cache_creation_input_tokens": 1062, + "cache_read_input_tokens": 16467, + "inference_geo": "not_available", + "input_tokens": 3, + "output_tokens": 1, + "service_tier": "standard" + } }, - "parent_tool_use_id": "toolu_01CdZ7e2eZqRGeYCmQhKcG7K", - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", - "timestamp": "2026-04-17T16:19:31.906Z", - "type": "user", - "uuid": "8d42cd56-92e8-4ee7-9a13-90d81dcb3a95" + "parent_tool_use_id": "toolu_013wkx2a5p9pbNYBhxQVcgwp", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", + "type": "assistant", + "uuid": "8e61906e-f0bd-432c-91d3-57a52be2e3cc" } }, { @@ -734,19 +738,18 @@ "message": { "content": [ { - "content": "bash-b-output", - "is_error": false, - "tool_use_id": "toolu_014J8Asf3FC9iXzEMoUg1TbQ", + "content": "1\ttask_label=B\n2\towner=beta\n3\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n", + "tool_use_id": "toolu_01Ea2LVTsYrg8UQ7asiP1PFk", "type": "tool_result" } ], "role": "user" }, - "parent_tool_use_id": "toolu_017yFZ6fdc1YuFQs2kazZJgT", - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", - "timestamp": "2026-04-17T16:19:31.908Z", + "parent_tool_use_id": "toolu_013wkx2a5p9pbNYBhxQVcgwp", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", + "timestamp": "2026-04-20T20:42:01.178Z", "type": "user", - "uuid": "d3ec97f0-8618-45eb-96cc-ee23d83148e8" + "uuid": "ba3fcd8b-3dda-4edc-bac0-895879e06a58" } }, { @@ -754,17 +757,17 @@ "payload": { "description": "Running echo bash-c-output", "last_tool_name": "Bash", - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", "subtype": "task_progress", - "task_id": "a4c582314e0225673", - "tool_use_id": "toolu_01X1zCmGAowCxrH9vvrVvihb", + "task_id": "a46c4aa351332a078", + "tool_use_id": "toolu_019cQYEAX37HVJZjHqNnxdaa", "type": "system", "usage": { - "duration_ms": 1470, + "duration_ms": 1097, "tool_uses": 1, - "total_tokens": 17497 + "total_tokens": 17534 }, - "uuid": "00e7fa62-62ba-4d07-b2d8-7220f4b83dc0" + "uuid": "812e3882-d23f-4283-8623-cc5403d1a216" } }, { @@ -776,7 +779,7 @@ "caller": { "type": "direct" }, - "id": "toolu_017nYDRkoHnWNTEHwxt7bie2", + "id": "toolu_01FZmaYEaC11cTJtd1d7sTx6", "input": { "command": "echo bash-c-output" }, @@ -785,7 +788,7 @@ } ], "context_management": null, - "id": "msg_01PSoyN2j3Rb5jCHxmmrYjSG", + "id": "msg_01SFBjyNsTaJmsGQtzwZzcih", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -795,20 +798,20 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 438 + "ephemeral_5m_input_tokens": 1062 }, - "cache_creation_input_tokens": 438, - "cache_read_input_tokens": 17050, + "cache_creation_input_tokens": 1062, + "cache_read_input_tokens": 16467, "inference_geo": "not_available", "input_tokens": 3, - "output_tokens": 3, + "output_tokens": 1, "service_tier": "standard" } }, - "parent_tool_use_id": "toolu_01X1zCmGAowCxrH9vvrVvihb", - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", + "parent_tool_use_id": "toolu_019cQYEAX37HVJZjHqNnxdaa", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", "type": "assistant", - "uuid": "d2af586b-5c29-4e5b-adb9-e9e52aac6d2d" + "uuid": "0555e847-de09-4df7-aa68-0b2c1ae1b31f" } }, { @@ -819,17 +822,17 @@ { "content": "bash-c-output", "is_error": false, - "tool_use_id": "toolu_017nYDRkoHnWNTEHwxt7bie2", + "tool_use_id": "toolu_01FZmaYEaC11cTJtd1d7sTx6", "type": "tool_result" } ], "role": "user" }, - "parent_tool_use_id": "toolu_01X1zCmGAowCxrH9vvrVvihb", - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", - "timestamp": "2026-04-17T16:19:32.208Z", + "parent_tool_use_id": "toolu_019cQYEAX37HVJZjHqNnxdaa", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", + "timestamp": "2026-04-20T20:42:01.340Z", "type": "user", - "uuid": "d930b56f-c9f4-4c41-9419-b153e8959c32" + "uuid": "4a7e0083-6c01-4076-8440-9457750f8388" } }, { @@ -837,17 +840,17 @@ "payload": { "description": "Reading task_c.txt", "last_tool_name": "Read", - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", "subtype": "task_progress", - "task_id": "a4c582314e0225673", - "tool_use_id": "toolu_01X1zCmGAowCxrH9vvrVvihb", + "task_id": "a46c4aa351332a078", + "tool_use_id": "toolu_019cQYEAX37HVJZjHqNnxdaa", "type": "system", "usage": { - "duration_ms": 1896, + "duration_ms": 1494, "tool_uses": 2, - "total_tokens": 17500 + "total_tokens": 17535 }, - "uuid": "3235ed6a-80fa-4f9a-8ae6-df12397c35ef" + "uuid": "c60d6b70-1150-4baa-802e-8fc168f1d6f2" } }, { @@ -859,16 +862,16 @@ "caller": { "type": "direct" }, - "id": "toolu_01NyK33GUpjUWzxthn697AfH", + "id": "toolu_01Wrg4WB8aW528AcYZFJNfp9", "input": { - "file_path": "/private/var/folders/1r/0r49yqc973s87vl4n1x_3j1m0000gn/T/pytest-of-abhijeetprasad/pytest-580/test_concurrent_subagents_prod0/concurrent_subagent_workspace/task_c.txt" + "file_path": "/private/var/folders/1r/0r49yqc973s87vl4n1x_3j1m0000gn/T/pytest-of-abhijeetprasad/pytest-686/test_concurrent_subagents_prod0/concurrent_subagent_workspace/task_c.txt" }, "name": "Read", "type": "tool_use" } ], "context_management": null, - "id": "msg_01PSoyN2j3Rb5jCHxmmrYjSG", + "id": "msg_01SFBjyNsTaJmsGQtzwZzcih", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -878,20 +881,20 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 438 + "ephemeral_5m_input_tokens": 1062 }, - "cache_creation_input_tokens": 438, - "cache_read_input_tokens": 17050, + "cache_creation_input_tokens": 1062, + "cache_read_input_tokens": 16467, "inference_geo": "not_available", "input_tokens": 3, - "output_tokens": 3, + "output_tokens": 1, "service_tier": "standard" } }, - "parent_tool_use_id": "toolu_01X1zCmGAowCxrH9vvrVvihb", - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", + "parent_tool_use_id": "toolu_019cQYEAX37HVJZjHqNnxdaa", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", "type": "assistant", - "uuid": "b1f0560e-1b83-43f1-afce-f9388a5f2a27" + "uuid": "88f5a675-015d-47b5-a494-0ea9295e3c78" } }, { @@ -901,36 +904,36 @@ "content": [ { "content": "1\ttask_label=C\n2\towner=gamma\n3\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n", - "tool_use_id": "toolu_01NyK33GUpjUWzxthn697AfH", + "tool_use_id": "toolu_01Wrg4WB8aW528AcYZFJNfp9", "type": "tool_result" } ], "role": "user" }, - "parent_tool_use_id": "toolu_01X1zCmGAowCxrH9vvrVvihb", - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", - "timestamp": "2026-04-17T16:19:32.626Z", + "parent_tool_use_id": "toolu_019cQYEAX37HVJZjHqNnxdaa", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", + "timestamp": "2026-04-20T20:42:01.731Z", "type": "user", - "uuid": "cc135ff4-f829-4c51-a9f8-8adf67399977" + "uuid": "7d277994-62ca-4ce2-a2aa-233d01abeca8" } }, { "op": "read", "payload": { "output_file": "", - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", "status": "completed", "subtype": "task_notification", - "summary": "Subagent A: bash and read task", - "task_id": "a7252fc6493b55b42", - "tool_use_id": "toolu_01CdZ7e2eZqRGeYCmQhKcG7K", + "summary": "Subagent A: Echo output and read task_a.txt", + "task_id": "aed9b65aa7a9ae534", + "tool_use_id": "toolu_01GBjizRNMFdkNi4qq6BJdJD", "type": "system", "usage": { - "duration_ms": 2729, + "duration_ms": 2387, "tool_uses": 2, - "total_tokens": 18679 + "total_tokens": 18810 }, - "uuid": "dcdf8f9c-ddd9-4921-9e51-3a56aa1bf14a" + "uuid": "68785a8a-fce3-4b1b-9d96-524568772e72" } }, { @@ -945,21 +948,21 @@ "type": "text" }, { - "text": "agentId: a7252fc6493b55b42 (use SendMessage with to: 'a7252fc6493b55b42' to continue this agent)\ntotal_tokens: 18681\ntool_uses: 2\nduration_ms: 2730", + "text": "agentId: aed9b65aa7a9ae534 (use SendMessage with to: 'aed9b65aa7a9ae534' to continue this agent)\ntotal_tokens: 18703\ntool_uses: 2\nduration_ms: 2387", "type": "text" } ], - "tool_use_id": "toolu_01CdZ7e2eZqRGeYCmQhKcG7K", + "tool_use_id": "toolu_01GBjizRNMFdkNi4qq6BJdJD", "type": "tool_result" } ], "role": "user" }, "parent_tool_use_id": null, - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", - "timestamp": "2026-04-17T16:19:32.951Z", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", + "timestamp": "2026-04-20T20:42:02.008Z", "tool_use_result": { - "agentId": "a7252fc6493b55b42", + "agentId": "aed9b65aa7a9ae534", "agentType": "general-purpose", "content": [ { @@ -967,7 +970,7 @@ "type": "text" } ], - "prompt": "Run `echo bash-a-output` using Bash, then read the contents of task_a.txt using the Read tool. Return only the contents of task_a.txt file.", + "prompt": "Run the bash command `echo bash-a-output`, then read the file task_a.txt. Return only the contents of task_a.txt file, nothing else.", "status": "completed", "toolStats": { "bashCount": 1, @@ -978,19 +981,31 @@ "readCount": 1, "searchCount": 0 }, - "totalDurationMs": 2730, - "totalTokens": 18681, + "totalDurationMs": 2387, + "totalTokens": 18703, "totalToolUseCount": 2, "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 1055 + "ephemeral_5m_input_tokens": 1036 }, - "cache_creation_input_tokens": 1055, - "cache_read_input_tokens": 17488, + "cache_creation_input_tokens": 1036, + "cache_read_input_tokens": 17529, "inference_geo": "", "input_tokens": 126, - "iterations": [], + "iterations": [ + { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 1036 + }, + "cache_creation_input_tokens": 1036, + "cache_read_input_tokens": 17529, + "input_tokens": 126, + "output_tokens": 12, + "type": "message" + } + ], "output_tokens": 12, "server_tool_use": { "web_fetch_requests": 0, @@ -1001,26 +1016,26 @@ } }, "type": "user", - "uuid": "557bb9d5-37a6-4756-bfdf-ce2c5c932ad4" + "uuid": "5ea03719-310f-4cbe-9f3b-0fe96f3a0cc5" } }, { "op": "read", "payload": { "output_file": "", - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", "status": "completed", "subtype": "task_notification", - "summary": "Subagent C: bash and read task", - "task_id": "a4c582314e0225673", - "tool_use_id": "toolu_01X1zCmGAowCxrH9vvrVvihb", + "summary": "Subagent C: Echo output and read task_c.txt", + "task_id": "a46c4aa351332a078", + "tool_use_id": "toolu_019cQYEAX37HVJZjHqNnxdaa", "type": "system", "usage": { - "duration_ms": 2728, + "duration_ms": 2363, "tool_uses": 2, - "total_tokens": 18676 + "total_tokens": 18706 }, - "uuid": "5b4727cd-0936-44ad-8edf-89f62fb2d5a6" + "uuid": "35eae710-de81-4aa2-a81b-67e20fde39f3" } }, { @@ -1031,33 +1046,33 @@ { "content": [ { - "text": "Here are the contents of task_c.txt:\n\n```\ntask_label=C\nowner=gamma\n```", + "text": "task_label=C\nowner=gamma", "type": "text" }, { - "text": "agentId: a4c582314e0225673 (use SendMessage with to: 'a4c582314e0225673' to continue this agent)\ntotal_tokens: 18694\ntool_uses: 2\nduration_ms: 2729", + "text": "agentId: a46c4aa351332a078 (use SendMessage with to: 'a46c4aa351332a078' to continue this agent)\ntotal_tokens: 18714\ntool_uses: 2\nduration_ms: 2363", "type": "text" } ], - "tool_use_id": "toolu_01X1zCmGAowCxrH9vvrVvihb", + "tool_use_id": "toolu_019cQYEAX37HVJZjHqNnxdaa", "type": "tool_result" } ], "role": "user" }, "parent_tool_use_id": null, - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", - "timestamp": "2026-04-17T16:19:33.457Z", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", + "timestamp": "2026-04-20T20:42:02.598Z", "tool_use_result": { - "agentId": "a4c582314e0225673", + "agentId": "a46c4aa351332a078", "agentType": "general-purpose", "content": [ { - "text": "Here are the contents of task_c.txt:\n\n```\ntask_label=C\nowner=gamma\n```", + "text": "task_label=C\nowner=gamma", "type": "text" } ], - "prompt": "Run `echo bash-c-output` using Bash, then read the contents of task_c.txt using the Read tool. Return only the contents of task_c.txt file.", + "prompt": "Run the bash command `echo bash-c-output`, then read the file task_c.txt. Return only the contents of task_c.txt file, nothing else.", "status": "completed", "toolStats": { "bashCount": 1, @@ -1068,20 +1083,32 @@ "readCount": 1, "searchCount": 0 }, - "totalDurationMs": 2729, - "totalTokens": 18694, + "totalDurationMs": 2363, + "totalTokens": 18714, "totalToolUseCount": 2, "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 1171 + "ephemeral_5m_input_tokens": 1166 }, - "cache_creation_input_tokens": 1171, - "cache_read_input_tokens": 17488, + "cache_creation_input_tokens": 1166, + "cache_read_input_tokens": 17529, "inference_geo": "", "input_tokens": 7, - "iterations": [], - "output_tokens": 28, + "iterations": [ + { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 1166 + }, + "cache_creation_input_tokens": 1166, + "cache_read_input_tokens": 17529, + "input_tokens": 7, + "output_tokens": 12, + "type": "message" + } + ], + "output_tokens": 12, "server_tool_use": { "web_fetch_requests": 0, "web_search_requests": 0 @@ -1091,26 +1118,26 @@ } }, "type": "user", - "uuid": "47295a79-ae7f-48ea-b882-149e981829c1" + "uuid": "beca81f5-bbf5-4c31-8a90-55b591d34b2e" } }, { "op": "read", "payload": { "output_file": "", - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", "status": "completed", "subtype": "task_notification", - "summary": "Subagent B: bash and read task", - "task_id": "a9b2b0632eb62cc71", - "tool_use_id": "toolu_017yFZ6fdc1YuFQs2kazZJgT", + "summary": "Subagent B: Echo output and read task_b.txt", + "task_id": "a38a4f603afdddc11", + "tool_use_id": "toolu_013wkx2a5p9pbNYBhxQVcgwp", "type": "system", "usage": { - "duration_ms": 3339, + "duration_ms": 3288, "tool_uses": 2, - "total_tokens": 18679 + "total_tokens": 18711 }, - "uuid": "a2fec2d0-9727-417c-82c1-db672b4ec667" + "uuid": "a990060f-0459-4ab0-a28e-773427c1f6b5" } }, { @@ -1121,33 +1148,33 @@ { "content": [ { - "text": "Here are the contents of task_b.txt:\n\n```\ntask_label=B\nowner=beta\n```", + "text": "task_label=B\nowner=beta", "type": "text" }, { - "text": "agentId: a9b2b0632eb62cc71 (use SendMessage with to: 'a9b2b0632eb62cc71' to continue this agent)\ntotal_tokens: 18691\ntool_uses: 2\nduration_ms: 3340", + "text": "agentId: a38a4f603afdddc11 (use SendMessage with to: 'a38a4f603afdddc11' to continue this agent)\ntotal_tokens: 18719\ntool_uses: 2\nduration_ms: 3288", "type": "text" } ], - "tool_use_id": "toolu_017yFZ6fdc1YuFQs2kazZJgT", + "tool_use_id": "toolu_013wkx2a5p9pbNYBhxQVcgwp", "type": "tool_result" } ], "role": "user" }, "parent_tool_use_id": null, - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", - "timestamp": "2026-04-17T16:19:33.772Z", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", + "timestamp": "2026-04-20T20:42:03.056Z", "tool_use_result": { - "agentId": "a9b2b0632eb62cc71", + "agentId": "a38a4f603afdddc11", "agentType": "general-purpose", "content": [ { - "text": "Here are the contents of task_b.txt:\n\n```\ntask_label=B\nowner=beta\n```", + "text": "task_label=B\nowner=beta", "type": "text" } ], - "prompt": "Run `echo bash-b-output` using Bash, then read the contents of task_b.txt using the Read tool. Return only the contents of task_b.txt file.", + "prompt": "Run the bash command `echo bash-b-output`, then read the file task_b.txt. Return only the contents of task_b.txt file, nothing else.", "status": "completed", "toolStats": { "bashCount": 1, @@ -1158,20 +1185,32 @@ "readCount": 1, "searchCount": 0 }, - "totalDurationMs": 3340, - "totalTokens": 18691, + "totalDurationMs": 3288, + "totalTokens": 18719, "totalToolUseCount": 2, "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 1049 + "ephemeral_5m_input_tokens": 1171 }, - "cache_creation_input_tokens": 1049, - "cache_read_input_tokens": 17488, + "cache_creation_input_tokens": 1171, + "cache_read_input_tokens": 17529, "inference_geo": "", - "input_tokens": 126, - "iterations": [], - "output_tokens": 28, + "input_tokens": 7, + "iterations": [ + { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 1171 + }, + "cache_creation_input_tokens": 1171, + "cache_read_input_tokens": 17529, + "input_tokens": 7, + "output_tokens": 12, + "type": "message" + } + ], + "output_tokens": 12, "server_tool_use": { "web_fetch_requests": 0, "web_search_requests": 0 @@ -1181,7 +1220,7 @@ } }, "type": "user", - "uuid": "17c7f72e-d6d7-4e3e-8063-11024486bf6e" + "uuid": "ed7d173c-213f-4d10-abde-464f802fbfbb" } }, { @@ -1191,12 +1230,12 @@ "content": [ { "signature": "", - "thinking": "Great! All three subagents have completed their tasks and returned the file contents. Now I need to reply with exactly three lines in order A, B, C based on the contents they returned:\n\nSubagent A returned:\n```\ntask_label=A\nowner=alpha\n```\n\nSubagent B returned:\n```\ntask_label=B\nowner=beta\n```\n\nSubagent C returned:\n```\ntask_label=C\nowner=gamma\n```\n\nThe user asked me to reply with exactly three lines in order A, B, C. I should output the contents in the format they were returned.", + "thinking": "Great! All three subagents have completed successfully and returned the file contents:\n\n- Subagent A returned: \"task_label=A\\nowner=alpha\"\n- Subagent B returned: \"task_label=B\\nowner=beta\"\n- Subagent C returned: \"task_label=C\\nowner=gamma\"\n\nNow I need to reply with exactly three lines in order A, B, C, containing only the file contents:\n\nLine A: task_label=A owner=alpha\nLine B: task_label=B owner=beta\nLine C: task_label=C owner=gamma\n\nActually, let me look at the format more carefully. The output shows:\n- task_label=A\n owner=alpha\n\nSo it seems like there are two lines per file. Let me format this as exactly three lines, one per subagent, containing only the contents returned:", "type": "thinking" } ], "context_management": null, - "id": "msg_01AGQxjRLmcC9Hqqu1c9JKHy", + "id": "msg_01G4nhUN5EXzi1ZWPJQtLqi7", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -1206,20 +1245,20 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 801 + "ephemeral_5m_input_tokens": 927 }, - "cache_creation_input_tokens": 801, - "cache_read_input_tokens": 23360, + "cache_creation_input_tokens": 927, + "cache_read_input_tokens": 23404, "inference_geo": "not_available", - "input_tokens": 135, - "output_tokens": 8, + "input_tokens": 119, + "output_tokens": 1, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", "type": "assistant", - "uuid": "6b80d39e-fbe9-4792-abad-340816fadfed" + "uuid": "b3e7a029-108e-498e-a569-97890520af9d" } }, { @@ -1228,12 +1267,12 @@ "message": { "content": [ { - "text": "task_label=A\nowner=alpha\n\ntask_label=B\nowner=beta\n\ntask_label=C\nowner=gamma", + "text": "task_label=A owner=alpha\ntask_label=B owner=beta\ntask_label=C owner=gamma", "type": "text" } ], "context_management": null, - "id": "msg_01AGQxjRLmcC9Hqqu1c9JKHy", + "id": "msg_01G4nhUN5EXzi1ZWPJQtLqi7", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -1243,62 +1282,74 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 801 + "ephemeral_5m_input_tokens": 927 }, - "cache_creation_input_tokens": 801, - "cache_read_input_tokens": 23360, + "cache_creation_input_tokens": 927, + "cache_read_input_tokens": 23404, "inference_geo": "not_available", - "input_tokens": 135, - "output_tokens": 8, + "input_tokens": 119, + "output_tokens": 1, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", "type": "assistant", - "uuid": "4a2090e6-97fb-43cd-826d-49a92e02f699" + "uuid": "ccbe8667-5963-4f4b-aef5-b97226b2d843" } }, { "op": "read", "payload": { "api_error_status": null, - "duration_api_ms": 14883, - "duration_ms": 8350, + "duration_api_ms": 15624, + "duration_ms": 9054, "fast_mode_state": "off", "is_error": false, "modelUsage": { "claude-haiku-4-5-20251001": { - "cacheCreationInputTokens": 6644, - "cacheReadInputTokens": 149080, + "cacheCreationInputTokens": 9066, + "cacheReadInputTokens": 147216, "contextWindow": 200000, - "costUSD": 0.031020000000000002, - "inputTokens": 932, + "costUSD": 0.0344761, + "inputTokens": 797, "maxOutputTokens": 32000, - "outputTokens": 1375, + "outputTokens": 1525, "webSearchRequests": 0 } }, "num_turns": 4, "permission_denials": [], - "result": "task_label=A\nowner=alpha\n\ntask_label=B\nowner=beta\n\ntask_label=C\nowner=gamma", - "session_id": "782217c5-8ba9-4977-a3cd-a8374cabb47c", + "result": "task_label=A owner=alpha\ntask_label=B owner=beta\ntask_label=C owner=gamma", + "session_id": "0844e2ae-6df9-46d6-b6ac-fe278783f78f", "stop_reason": "end_turn", "subtype": "success", "terminal_reason": "completed", - "total_cost_usd": 0.031020000000000002, + "total_cost_usd": 0.0344761, "type": "result", "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 801 + "ephemeral_5m_input_tokens": 2507 }, - "cache_creation_input_tokens": 801, - "cache_read_input_tokens": 46720, + "cache_creation_input_tokens": 2507, + "cache_read_input_tokens": 45228, "inference_geo": "", - "input_tokens": 145, - "iterations": [], - "output_tokens": 733, + "input_tokens": 129, + "iterations": [ + { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 927 + }, + "cache_creation_input_tokens": 927, + "cache_read_input_tokens": 23404, + "input_tokens": 119, + "output_tokens": 237, + "type": "message" + } + ], + "output_tokens": 934, "server_tool_use": { "web_fetch_requests": 0, "web_search_requests": 0 @@ -1306,9 +1357,9 @@ "service_tier": "standard", "speed": "standard" }, - "uuid": "de70af4e-d73f-446c-9dc8-ce11dde0059e" + "uuid": "d4b8c049-58fe-4a10-b0b5-faa9c6c0d4d1" } } ], - "sdk_version": "0.1.61" + "sdk_version": "0.1.63" } diff --git a/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_five_parallel_bundled_subagents_preserve_task_parenting.json b/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_five_parallel_bundled_subagents_preserve_task_parenting.json index 6716b373..b4e590aa 100644 --- a/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_five_parallel_bundled_subagents_preserve_task_parenting.json +++ b/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_five_parallel_bundled_subagents_preserve_task_parenting.json @@ -10,7 +10,7 @@ "hooks": null, "subtype": "initialize" }, - "request_id": "req_1_91d7d787", + "request_id": "req_1_9deaf189", "type": "control_request" } } @@ -19,7 +19,7 @@ "op": "read", "payload": { "response": { - "request_id": "req_1_91d7d787", + "request_id": "req_1_9deaf189", "response": { "account": { "apiKeySource": "ANTHROPIC_API_KEY", @@ -61,7 +61,7 @@ "statusline-setup" ], "apiKeySource": "ANTHROPIC_API_KEY", - "claude_code_version": "2.1.112", + "claude_code_version": "2.1.114", "cwd": "", "fast_mode_state": "off", "mcp_servers": [], @@ -78,13 +78,13 @@ "source": "rust-analyzer-lsp@claude-plugins-official" } ], - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", "skills": [ "update-config", "debug", "simplify", "batch", - "less-permission-prompts", + "fewer-permission-prompts", "loop", "schedule", "claude-api", @@ -96,7 +96,7 @@ "debug", "simplify", "batch", - "less-permission-prompts", + "fewer-permission-prompts", "loop", "schedule", "claude-api", @@ -144,7 +144,7 @@ "Write" ], "type": "system", - "uuid": "bae04ac7-6004-456f-bc5e-49f2475e1cda" + "uuid": "8ca99e26-bc5f-4a62-b34b-c53d4499c9dd" } }, { @@ -154,12 +154,12 @@ "content": [ { "signature": "", - "thinking": "The user wants me to:\n1. Use exactly five bundled general-purpose subagents\n2. Each subagent should handle one file (note_0.txt through note_4.txt)\n3. In my first response, emit all five Agent tool calls before waiting for results\n4. No explanatory text before/between Agent tool calls\n5. Each subagent must Read exactly its assigned file and return \"label= | owner=\"\n6. After all five finish, reply with exactly five lines in order 0 through 4\n7. Don't answer directly without using all five subagents\n\nSo I need to create 5 Agent calls, each for a different file, without any explanatory text between them.\n\nLet me construct these calls:\n- Agent for note_0.txt\n- Agent for note_1.txt\n- Agent for note_2.txt\n- Agent for note_3.txt\n- Agent for note_4.txt\n\nEach should read its file and return \"label= | owner=\"", + "thinking": "The user is asking me to:\n1. Use exactly five bundled general-purpose subagents\n2. Each subagent handles one file from note_0.txt through note_4.txt\n3. In my first response, emit all five Agent tool calls before waiting for results\n4. Don't emit explanatory text before/between Agent calls if the tool API allows\n5. Each subagent must use Read on exactly its assigned file and return only \"label= | owner=\"\n6. After all five finish, reply with exactly five lines in order 0 through 4\n7. Don't answer directly without using all five subagents\n\nThis is a clear instruction to use the Agent tool five times in parallel, one for each file note_0.txt through note_4.txt. Let me emit all five Agent calls at once.\n\nThe prompt for each agent should be to read their assigned file and return the result in the format \"label= | owner=\".", "type": "thinking" } ], "context_management": null, - "id": "msg_013aFvnR3FXXSHHDaKAELGAq", + "id": "msg_01G83MuP5hNTMYCZPu8sFdB1", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -172,17 +172,17 @@ "ephemeral_5m_input_tokens": 1528 }, "cache_creation_input_tokens": 1528, - "cache_read_input_tokens": 21780, + "cache_read_input_tokens": 21824, "inference_geo": "not_available", "input_tokens": 10, - "output_tokens": 6, + "output_tokens": 1, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", "type": "assistant", - "uuid": "fb63d87f-5fab-4e2e-86ea-c66f29cf562b" + "uuid": "bc44ff82-cb62-4d58-b8a7-a26e44ef2566" } }, { @@ -194,17 +194,18 @@ "caller": { "type": "direct" }, - "id": "toolu_01TeP8MLQnQwJKTJVPSEAf4e", + "id": "toolu_019awZ3dY28A5Ub1vBinyAFF", "input": { - "description": "Read note_0.txt and report", - "prompt": "Read the file note_0.txt using the Read tool. Extract the label number and owner name. Return only in format: label=0 | owner=" + "description": "Process note_0.txt", + "prompt": "Read and return the result in format: label=0 | owner=", + "subagent_type": "general-purpose" }, "name": "Agent", "type": "tool_use" } ], "context_management": null, - "id": "msg_013aFvnR3FXXSHHDaKAELGAq", + "id": "msg_01G83MuP5hNTMYCZPu8sFdB1", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -217,31 +218,31 @@ "ephemeral_5m_input_tokens": 1528 }, "cache_creation_input_tokens": 1528, - "cache_read_input_tokens": 21780, + "cache_read_input_tokens": 21824, "inference_geo": "not_available", "input_tokens": 10, - "output_tokens": 6, + "output_tokens": 1, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", "type": "assistant", - "uuid": "8650b5d5-0df9-4189-bc08-248b27498d1e" + "uuid": "1b88ed80-d316-48db-aefe-26bd51ded99c" } }, { "op": "read", "payload": { - "description": "Read note_0.txt and report", - "prompt": "Read the file note_0.txt using the Read tool. Extract the label number and owner name. Return only in format: label=0 | owner=", - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", + "description": "Process note_0.txt", + "prompt": "Read and return the result in format: label=0 | owner=", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", "subtype": "task_started", - "task_id": "a6e681864955f6978", + "task_id": "ad7ddf03188e1d449", "task_type": "local_agent", - "tool_use_id": "toolu_01TeP8MLQnQwJKTJVPSEAf4e", + "tool_use_id": "toolu_019awZ3dY28A5Ub1vBinyAFF", "type": "system", - "uuid": "d5608d22-b333-4e7f-8184-097d7cc198d5" + "uuid": "e85897a7-2dc0-487f-8307-93682b731dc1" } }, { @@ -250,17 +251,17 @@ "message": { "content": [ { - "text": "Read the file note_0.txt using the Read tool. Extract the label number and owner name. Return only in format: label=0 | owner=", + "text": "Read and return the result in format: label=0 | owner=", "type": "text" } ], "role": "user" }, - "parent_tool_use_id": "toolu_01TeP8MLQnQwJKTJVPSEAf4e", - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", - "timestamp": "2026-04-17T16:18:00.976Z", + "parent_tool_use_id": "toolu_019awZ3dY28A5Ub1vBinyAFF", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", + "timestamp": "2026-04-20T20:41:39.871Z", "type": "user", - "uuid": "498cae38-e3f9-446b-b7f1-56989c5e4200" + "uuid": "f96b59a9-d7c8-4b44-9c31-2b665174a16d" } }, { @@ -272,17 +273,18 @@ "caller": { "type": "direct" }, - "id": "toolu_01LRALL7Qjhsca9dZwRy2M4d", + "id": "toolu_019xiM8PGCabPk2WWs413S4X", "input": { - "description": "Read note_1.txt and report", - "prompt": "Read the file note_1.txt using the Read tool. Extract the label number and owner name. Return only in format: label=1 | owner=" + "description": "Process note_1.txt", + "prompt": "Read and return the result in format: label=1 | owner=", + "subagent_type": "general-purpose" }, "name": "Agent", "type": "tool_use" } ], "context_management": null, - "id": "msg_013aFvnR3FXXSHHDaKAELGAq", + "id": "msg_01G83MuP5hNTMYCZPu8sFdB1", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -295,31 +297,31 @@ "ephemeral_5m_input_tokens": 1528 }, "cache_creation_input_tokens": 1528, - "cache_read_input_tokens": 21780, + "cache_read_input_tokens": 21824, "inference_geo": "not_available", "input_tokens": 10, - "output_tokens": 6, + "output_tokens": 1, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", "type": "assistant", - "uuid": "4ac9d3cd-8e7d-4f01-9feb-e9e308d3a26d" + "uuid": "5e4d3955-d346-49de-a40c-0d929aed69c5" } }, { "op": "read", "payload": { - "description": "Read note_1.txt and report", - "prompt": "Read the file note_1.txt using the Read tool. Extract the label number and owner name. Return only in format: label=1 | owner=", - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", + "description": "Process note_1.txt", + "prompt": "Read and return the result in format: label=1 | owner=", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", "subtype": "task_started", - "task_id": "ab3b561a9904c4e1b", + "task_id": "a98967150b07ade6a", "task_type": "local_agent", - "tool_use_id": "toolu_01LRALL7Qjhsca9dZwRy2M4d", + "tool_use_id": "toolu_019xiM8PGCabPk2WWs413S4X", "type": "system", - "uuid": "cb8f2806-f31e-4678-a5f1-4d9f8acaa1c7" + "uuid": "794a0af4-1772-4627-9bc1-f5e89dccc38c" } }, { @@ -328,17 +330,17 @@ "message": { "content": [ { - "text": "Read the file note_1.txt using the Read tool. Extract the label number and owner name. Return only in format: label=1 | owner=", + "text": "Read and return the result in format: label=1 | owner=", "type": "text" } ], "role": "user" }, - "parent_tool_use_id": "toolu_01LRALL7Qjhsca9dZwRy2M4d", - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", - "timestamp": "2026-04-17T16:18:01.615Z", + "parent_tool_use_id": "toolu_019xiM8PGCabPk2WWs413S4X", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", + "timestamp": "2026-04-20T20:41:40.368Z", "type": "user", - "uuid": "5fe0f3c8-5e3d-4ef7-aa49-c2513bc47d66" + "uuid": "5ce18f47-b1db-4be8-b2d2-1bada38e8c2b" } }, { @@ -350,17 +352,18 @@ "caller": { "type": "direct" }, - "id": "toolu_0162aayLJZWexA4TA79vwo9p", + "id": "toolu_015impUGsuLAQQTdSHVphLao", "input": { - "description": "Read note_2.txt and report", - "prompt": "Read the file note_2.txt using the Read tool. Extract the label number and owner name. Return only in format: label=2 | owner=" + "description": "Process note_2.txt", + "prompt": "Read and return the result in format: label=2 | owner=", + "subagent_type": "general-purpose" }, "name": "Agent", "type": "tool_use" } ], "context_management": null, - "id": "msg_013aFvnR3FXXSHHDaKAELGAq", + "id": "msg_01G83MuP5hNTMYCZPu8sFdB1", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -373,31 +376,31 @@ "ephemeral_5m_input_tokens": 1528 }, "cache_creation_input_tokens": 1528, - "cache_read_input_tokens": 21780, + "cache_read_input_tokens": 21824, "inference_geo": "not_available", "input_tokens": 10, - "output_tokens": 6, + "output_tokens": 1, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", "type": "assistant", - "uuid": "2b41b12f-a840-48f0-85fd-b0054ca2a0d4" + "uuid": "5ec1bf79-a000-4ffe-aa11-1ad0792c9a34" } }, { "op": "read", "payload": { - "description": "Read note_2.txt and report", - "prompt": "Read the file note_2.txt using the Read tool. Extract the label number and owner name. Return only in format: label=2 | owner=", - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", + "description": "Process note_2.txt", + "prompt": "Read and return the result in format: label=2 | owner=", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", "subtype": "task_started", - "task_id": "a22734fb2ae496167", + "task_id": "a32b58db71de0dce8", "task_type": "local_agent", - "tool_use_id": "toolu_0162aayLJZWexA4TA79vwo9p", + "tool_use_id": "toolu_015impUGsuLAQQTdSHVphLao", "type": "system", - "uuid": "eef4bc0d-d2c2-4013-9aa1-223935c664f7" + "uuid": "ba607a4f-84e8-47dd-9e9c-6adad7bc5aa7" } }, { @@ -406,17 +409,17 @@ "message": { "content": [ { - "text": "Read the file note_2.txt using the Read tool. Extract the label number and owner name. Return only in format: label=2 | owner=", + "text": "Read and return the result in format: label=2 | owner=", "type": "text" } ], "role": "user" }, - "parent_tool_use_id": "toolu_0162aayLJZWexA4TA79vwo9p", - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", - "timestamp": "2026-04-17T16:18:02.115Z", + "parent_tool_use_id": "toolu_015impUGsuLAQQTdSHVphLao", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", + "timestamp": "2026-04-20T20:41:40.653Z", "type": "user", - "uuid": "46a578dd-a263-4f0b-b3a5-53a3b7bebf77" + "uuid": "c31e0bb9-0547-4d88-b7d4-8774de3dfb12" } }, { @@ -428,17 +431,18 @@ "caller": { "type": "direct" }, - "id": "toolu_01EVtW8C54Q54ATbmPyrnTkQ", + "id": "toolu_015XngcTTGjR4PTSJzxNN25E", "input": { - "description": "Read note_3.txt and report", - "prompt": "Read the file note_3.txt using the Read tool. Extract the label number and owner name. Return only in format: label=3 | owner=" + "description": "Process note_3.txt", + "prompt": "Read and return the result in format: label=3 | owner=", + "subagent_type": "general-purpose" }, "name": "Agent", "type": "tool_use" } ], "context_management": null, - "id": "msg_013aFvnR3FXXSHHDaKAELGAq", + "id": "msg_01G83MuP5hNTMYCZPu8sFdB1", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -451,31 +455,31 @@ "ephemeral_5m_input_tokens": 1528 }, "cache_creation_input_tokens": 1528, - "cache_read_input_tokens": 21780, + "cache_read_input_tokens": 21824, "inference_geo": "not_available", "input_tokens": 10, - "output_tokens": 6, + "output_tokens": 1, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", "type": "assistant", - "uuid": "189f185e-97c9-4c68-bffc-ae0752c32cd7" + "uuid": "2ce1908f-049c-42cb-9d8c-3729a482ce73" } }, { "op": "read", "payload": { - "description": "Read note_3.txt and report", - "prompt": "Read the file note_3.txt using the Read tool. Extract the label number and owner name. Return only in format: label=3 | owner=", - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", + "description": "Process note_3.txt", + "prompt": "Read and return the result in format: label=3 | owner=", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", "subtype": "task_started", - "task_id": "a75fbc8a882d8b035", + "task_id": "ac4dc5491f5cf865d", "task_type": "local_agent", - "tool_use_id": "toolu_01EVtW8C54Q54ATbmPyrnTkQ", + "tool_use_id": "toolu_015XngcTTGjR4PTSJzxNN25E", "type": "system", - "uuid": "d41d7ba5-6e2e-410a-846c-493ff5f04356" + "uuid": "0156e6d8-73af-4d27-ba6d-1a25140f5289" } }, { @@ -484,17 +488,79 @@ "message": { "content": [ { - "text": "Read the file note_3.txt using the Read tool. Extract the label number and owner name. Return only in format: label=3 | owner=", + "text": "Read and return the result in format: label=3 | owner=", "type": "text" } ], "role": "user" }, - "parent_tool_use_id": "toolu_01EVtW8C54Q54ATbmPyrnTkQ", - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", - "timestamp": "2026-04-17T16:18:02.170Z", + "parent_tool_use_id": "toolu_015XngcTTGjR4PTSJzxNN25E", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", + "timestamp": "2026-04-20T20:41:41.037Z", "type": "user", - "uuid": "a3323b62-4eb2-4d53-b3ec-1ca694f5a3b0" + "uuid": "3320af8c-faaf-4c28-b9db-83665c43304f" + } + }, + { + "op": "read", + "payload": { + "description": "Reading ", + "last_tool_name": "Read", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", + "subtype": "task_progress", + "task_id": "ad7ddf03188e1d449", + "tool_use_id": "toolu_019awZ3dY28A5Ub1vBinyAFF", + "type": "system", + "usage": { + "duration_ms": 1167, + "tool_uses": 1, + "total_tokens": 17541 + }, + "uuid": "9161f59a-216e-4489-84c9-b95f7d840195" + } + }, + { + "op": "read", + "payload": { + "message": { + "content": [ + { + "caller": { + "type": "direct" + }, + "id": "toolu_0135GkjrgHDsfp7LKSAMewvp", + "input": { + "file_path": "" + }, + "name": "Read", + "type": "tool_use" + } + ], + "context_management": null, + "id": "msg_01F4r55wPoC6PFdrFetuHf72", + "model": "claude-haiku-4-5-20251001", + "role": "assistant", + "stop_details": null, + "stop_reason": null, + "stop_sequence": null, + "type": "message", + "usage": { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 1055 + }, + "cache_creation_input_tokens": 1055, + "cache_read_input_tokens": 16467, + "inference_geo": "not_available", + "input_tokens": 3, + "output_tokens": 8, + "service_tier": "standard" + } + }, + "parent_tool_use_id": "toolu_019awZ3dY28A5Ub1vBinyAFF", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", + "type": "assistant", + "uuid": "0c6533dd-9925-48dc-878f-74120a07e0ee" } }, { @@ -506,17 +572,18 @@ "caller": { "type": "direct" }, - "id": "toolu_01DUg1LJYUx5RsfcHwE2xikm", + "id": "toolu_01AJYYcZrNhk8RY9XdPeN7iA", "input": { - "description": "Read note_4.txt and report", - "prompt": "Read the file note_4.txt using the Read tool. Extract the label number and owner name. Return only in format: label=4 | owner=" + "description": "Process note_4.txt", + "prompt": "Read and return the result in format: label=4 | owner=", + "subagent_type": "general-purpose" }, "name": "Agent", "type": "tool_use" } ], "context_management": null, - "id": "msg_013aFvnR3FXXSHHDaKAELGAq", + "id": "msg_01G83MuP5hNTMYCZPu8sFdB1", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -529,31 +596,31 @@ "ephemeral_5m_input_tokens": 1528 }, "cache_creation_input_tokens": 1528, - "cache_read_input_tokens": 21780, + "cache_read_input_tokens": 21824, "inference_geo": "not_available", "input_tokens": 10, - "output_tokens": 6, + "output_tokens": 1, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", "type": "assistant", - "uuid": "016c649c-1183-4519-974d-c7895fa69859" + "uuid": "92289864-db83-49d3-84be-30c2208df1f9" } }, { "op": "read", "payload": { - "description": "Read note_4.txt and report", - "prompt": "Read the file note_4.txt using the Read tool. Extract the label number and owner name. Return only in format: label=4 | owner=", - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", + "description": "Process note_4.txt", + "prompt": "Read and return the result in format: label=4 | owner=", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", "subtype": "task_started", - "task_id": "ad0cb35dc9dfeb8df", + "task_id": "a97d7fcc17a056894", "task_type": "local_agent", - "tool_use_id": "toolu_01DUg1LJYUx5RsfcHwE2xikm", + "tool_use_id": "toolu_01AJYYcZrNhk8RY9XdPeN7iA", "type": "system", - "uuid": "aaf59eca-8e6f-4223-810b-2e07b89bf1e6" + "uuid": "3d63e87b-a440-4314-9812-65450b6a03d0" } }, { @@ -562,35 +629,57 @@ "message": { "content": [ { - "text": "Read the file note_4.txt using the Read tool. Extract the label number and owner name. Return only in format: label=4 | owner=", + "text": "Read and return the result in format: label=4 | owner=", "type": "text" } ], "role": "user" }, - "parent_tool_use_id": "toolu_01DUg1LJYUx5RsfcHwE2xikm", - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", - "timestamp": "2026-04-17T16:18:02.365Z", + "parent_tool_use_id": "toolu_01AJYYcZrNhk8RY9XdPeN7iA", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", + "timestamp": "2026-04-20T20:41:41.220Z", "type": "user", - "uuid": "5f556bde-1ad6-4d29-909b-facb10a9adc1" + "uuid": "031594e9-cbdc-4ac9-810c-d29b322492d6" } }, { "op": "read", "payload": { - "description": "Reading note_0.txt", + "message": { + "content": [ + { + "content": "File does not exist. Note: your current working directory is /private/var/folders/1r/0r49yqc973s87vl4n1x_3j1m0000gn/T/pytest-of-abhijeetprasad/pytest-686/test_five_parallel_bundled_sub0/subagent_parenting_workspace.", + "is_error": true, + "tool_use_id": "toolu_0135GkjrgHDsfp7LKSAMewvp", + "type": "tool_result" + } + ], + "role": "user" + }, + "parent_tool_use_id": "toolu_019awZ3dY28A5Ub1vBinyAFF", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", + "timestamp": "2026-04-20T20:41:41.244Z", + "tool_use_result": "Error: File does not exist. Note: your current working directory is /private/var/folders/1r/0r49yqc973s87vl4n1x_3j1m0000gn/T/pytest-of-abhijeetprasad/pytest-686/test_five_parallel_bundled_sub0/subagent_parenting_workspace.", + "type": "user", + "uuid": "5547bac9-ab7b-4b5f-ae31-329d32eaf6ae" + } + }, + { + "op": "read", + "payload": { + "description": "Reading ", "last_tool_name": "Read", - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", "subtype": "task_progress", - "task_id": "a6e681864955f6978", - "tool_use_id": "toolu_01TeP8MLQnQwJKTJVPSEAf4e", + "task_id": "a98967150b07ade6a", + "tool_use_id": "toolu_019xiM8PGCabPk2WWs413S4X", "type": "system", "usage": { - "duration_ms": 1883, + "duration_ms": 938, "tool_uses": 1, - "total_tokens": 17497 + "total_tokens": 17539 }, - "uuid": "adde3e23-b692-4699-9320-4065d39dcaa3" + "uuid": "fdb7c79a-768e-44da-8ec4-6ceb7549426f" } }, { @@ -602,16 +691,16 @@ "caller": { "type": "direct" }, - "id": "toolu_01J528X9G7SfotN8LJmvQJpg", + "id": "toolu_018Pce2wiE4wJsDjs9zmPr3b", "input": { - "file_path": "/private/var/folders/1r/0r49yqc973s87vl4n1x_3j1m0000gn/T/pytest-of-abhijeetprasad/pytest-578/test_five_parallel_bundled_sub0/subagent_parenting_workspace/note_0.txt" + "file_path": "" }, "name": "Read", "type": "tool_use" } ], "context_management": null, - "id": "msg_01H5VCscagBnjPA3Xkh3du44", + "id": "msg_01YWbTZCCJMvTGUDCttiAHhT", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -621,20 +710,20 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 1065 + "ephemeral_5m_input_tokens": 1055 }, - "cache_creation_input_tokens": 1065, - "cache_read_input_tokens": 16423, + "cache_creation_input_tokens": 1055, + "cache_read_input_tokens": 16467, "inference_geo": "not_available", "input_tokens": 3, - "output_tokens": 3, + "output_tokens": 7, "service_tier": "standard" } }, - "parent_tool_use_id": "toolu_01TeP8MLQnQwJKTJVPSEAf4e", - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", + "parent_tool_use_id": "toolu_019xiM8PGCabPk2WWs413S4X", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", "type": "assistant", - "uuid": "9be35935-e281-4dae-9e6c-bc90bbbfc6b8" + "uuid": "5595d122-3519-4faf-9037-f58f37cf49b7" } }, { @@ -643,36 +732,38 @@ "message": { "content": [ { - "content": "1\tlabel=0\n2\towner=owner_0\n3\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n", - "tool_use_id": "toolu_01J528X9G7SfotN8LJmvQJpg", + "content": "File does not exist. Note: your current working directory is /private/var/folders/1r/0r49yqc973s87vl4n1x_3j1m0000gn/T/pytest-of-abhijeetprasad/pytest-686/test_five_parallel_bundled_sub0/subagent_parenting_workspace.", + "is_error": true, + "tool_use_id": "toolu_018Pce2wiE4wJsDjs9zmPr3b", "type": "tool_result" } ], "role": "user" }, - "parent_tool_use_id": "toolu_01TeP8MLQnQwJKTJVPSEAf4e", - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", - "timestamp": "2026-04-17T16:18:02.861Z", + "parent_tool_use_id": "toolu_019xiM8PGCabPk2WWs413S4X", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", + "timestamp": "2026-04-20T20:41:41.435Z", + "tool_use_result": "Error: File does not exist. Note: your current working directory is /private/var/folders/1r/0r49yqc973s87vl4n1x_3j1m0000gn/T/pytest-of-abhijeetprasad/pytest-686/test_five_parallel_bundled_sub0/subagent_parenting_workspace.", "type": "user", - "uuid": "c0771e78-38b9-485e-bb4a-0b77b51a77f3" + "uuid": "7550d9b5-ed1c-4bb9-b53f-cf6fbb413971" } }, { "op": "read", "payload": { - "description": "Reading note_2.txt", + "description": "Reading ", "last_tool_name": "Read", - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", "subtype": "task_progress", - "task_id": "a22734fb2ae496167", - "tool_use_id": "toolu_0162aayLJZWexA4TA79vwo9p", + "task_id": "a32b58db71de0dce8", + "tool_use_id": "toolu_015impUGsuLAQQTdSHVphLao", "type": "system", "usage": { - "duration_ms": 1350, + "duration_ms": 1096, "tool_uses": 1, - "total_tokens": 17507 + "total_tokens": 17531 }, - "uuid": "56663127-4e63-419f-ae89-d1bbf3dd7b37" + "uuid": "bca528f5-0cae-40d0-9cb2-37b084c3d624" } }, { @@ -684,16 +775,16 @@ "caller": { "type": "direct" }, - "id": "toolu_01TKjmdXGjziXtsMTeKTKQEV", + "id": "toolu_017gaTKGxWjHgwGFELvyydMa", "input": { - "file_path": "/private/var/folders/1r/0r49yqc973s87vl4n1x_3j1m0000gn/T/pytest-of-abhijeetprasad/pytest-578/test_five_parallel_bundled_sub0/subagent_parenting_workspace/note_2.txt" + "file_path": "" }, "name": "Read", "type": "tool_use" } ], "context_management": null, - "id": "msg_01H7J85B5DG3eibFAa2yPWvi", + "id": "msg_01GFS5Ue5STvxdRcf8ojujqy", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -703,38 +794,60 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 436 + "ephemeral_5m_input_tokens": 426 }, - "cache_creation_input_tokens": 436, - "cache_read_input_tokens": 17052, + "cache_creation_input_tokens": 426, + "cache_read_input_tokens": 17096, "inference_geo": "not_available", "input_tokens": 3, - "output_tokens": 8, + "output_tokens": 3, "service_tier": "standard" } }, - "parent_tool_use_id": "toolu_0162aayLJZWexA4TA79vwo9p", - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", + "parent_tool_use_id": "toolu_015impUGsuLAQQTdSHVphLao", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", "type": "assistant", - "uuid": "311b2759-75e2-4527-ad8e-d24a711d3c55" + "uuid": "230fb820-cdf8-465f-a7d3-14901b3a400f" + } + }, + { + "op": "read", + "payload": { + "message": { + "content": [ + { + "content": "File does not exist. Note: your current working directory is /private/var/folders/1r/0r49yqc973s87vl4n1x_3j1m0000gn/T/pytest-of-abhijeetprasad/pytest-686/test_five_parallel_bundled_sub0/subagent_parenting_workspace.", + "is_error": true, + "tool_use_id": "toolu_017gaTKGxWjHgwGFELvyydMa", + "type": "tool_result" + } + ], + "role": "user" + }, + "parent_tool_use_id": "toolu_015impUGsuLAQQTdSHVphLao", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", + "timestamp": "2026-04-20T20:41:41.892Z", + "tool_use_result": "Error: File does not exist. Note: your current working directory is /private/var/folders/1r/0r49yqc973s87vl4n1x_3j1m0000gn/T/pytest-of-abhijeetprasad/pytest-686/test_five_parallel_bundled_sub0/subagent_parenting_workspace.", + "type": "user", + "uuid": "a5f9e1b7-6aca-4167-85ec-f439d45130fc" } }, { "op": "read", "payload": { - "description": "Reading note_3.txt", + "description": "Reading ", "last_tool_name": "Read", - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", "subtype": "task_progress", - "task_id": "a75fbc8a882d8b035", - "tool_use_id": "toolu_01EVtW8C54Q54ATbmPyrnTkQ", + "task_id": "a97d7fcc17a056894", + "tool_use_id": "toolu_01AJYYcZrNhk8RY9XdPeN7iA", "type": "system", "usage": { - "duration_ms": 1295, + "duration_ms": 1072, "tool_uses": 1, - "total_tokens": 17507 + "total_tokens": 17537 }, - "uuid": "0d48cda9-de46-4d69-b251-ad62eb1f87f0" + "uuid": "e9020e89-f2cb-4c6d-85b8-85d2505feeca" } }, { @@ -746,16 +859,16 @@ "caller": { "type": "direct" }, - "id": "toolu_01Po3tYPjK83X2UzsWK3qEbT", + "id": "toolu_01XdwEWz6Xa1EuxU6vzcmnYz", "input": { - "file_path": "/private/var/folders/1r/0r49yqc973s87vl4n1x_3j1m0000gn/T/pytest-of-abhijeetprasad/pytest-578/test_five_parallel_bundled_sub0/subagent_parenting_workspace/note_3.txt" + "file_path": "" }, "name": "Read", "type": "tool_use" } ], "context_management": null, - "id": "msg_019tuAu4w3hKkkQbmqw2CcQ7", + "id": "msg_013ATrbiWS2JgDA7qysq5K71", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -765,20 +878,20 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 436 + "ephemeral_5m_input_tokens": 426 }, - "cache_creation_input_tokens": 436, - "cache_read_input_tokens": 17052, + "cache_creation_input_tokens": 426, + "cache_read_input_tokens": 17096, "inference_geo": "not_available", "input_tokens": 3, - "output_tokens": 8, + "output_tokens": 6, "service_tier": "standard" } }, - "parent_tool_use_id": "toolu_01EVtW8C54Q54ATbmPyrnTkQ", - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", + "parent_tool_use_id": "toolu_01AJYYcZrNhk8RY9XdPeN7iA", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", "type": "assistant", - "uuid": "f27a7eb8-18d8-463f-af35-0bfccda0d85a" + "uuid": "55e1cf52-e1ee-4b9d-9601-e9cc1d963458" } }, { @@ -787,56 +900,38 @@ "message": { "content": [ { - "content": "1\tlabel=2\n2\towner=owner_2\n3\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n", - "tool_use_id": "toolu_01TKjmdXGjziXtsMTeKTKQEV", + "content": "File does not exist. Note: your current working directory is /private/var/folders/1r/0r49yqc973s87vl4n1x_3j1m0000gn/T/pytest-of-abhijeetprasad/pytest-686/test_five_parallel_bundled_sub0/subagent_parenting_workspace.", + "is_error": true, + "tool_use_id": "toolu_01XdwEWz6Xa1EuxU6vzcmnYz", "type": "tool_result" } ], "role": "user" }, - "parent_tool_use_id": "toolu_0162aayLJZWexA4TA79vwo9p", - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", - "timestamp": "2026-04-17T16:18:03.467Z", + "parent_tool_use_id": "toolu_01AJYYcZrNhk8RY9XdPeN7iA", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", + "timestamp": "2026-04-20T20:41:42.438Z", + "tool_use_result": "Error: File does not exist. Note: your current working directory is /private/var/folders/1r/0r49yqc973s87vl4n1x_3j1m0000gn/T/pytest-of-abhijeetprasad/pytest-686/test_five_parallel_bundled_sub0/subagent_parenting_workspace.", "type": "user", - "uuid": "89b4c080-6910-4ae3-b76a-c79565c8c206" + "uuid": "0355379e-aebc-461b-9f57-2da24b52b4cb" } }, { "op": "read", "payload": { - "message": { - "content": [ - { - "content": "1\tlabel=3\n2\towner=owner_3\n3\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n", - "tool_use_id": "toolu_01Po3tYPjK83X2UzsWK3qEbT", - "type": "tool_result" - } - ], - "role": "user" - }, - "parent_tool_use_id": "toolu_01EVtW8C54Q54ATbmPyrnTkQ", - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", - "timestamp": "2026-04-17T16:18:03.467Z", - "type": "user", - "uuid": "98e2c642-a192-4db3-9650-081d14de3e2d" - } - }, - { - "op": "read", - "payload": { - "description": "Reading note_4.txt", + "description": "Reading ", "last_tool_name": "Read", - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", "subtype": "task_progress", - "task_id": "ad0cb35dc9dfeb8df", - "tool_use_id": "toolu_01DUg1LJYUx5RsfcHwE2xikm", + "task_id": "ac4dc5491f5cf865d", + "tool_use_id": "toolu_015XngcTTGjR4PTSJzxNN25E", "type": "system", "usage": { - "duration_ms": 1230, + "duration_ms": 1632, "tool_uses": 1, - "total_tokens": 17507 + "total_tokens": 17535 }, - "uuid": "6378acaa-d943-4bcc-a54c-cf05d8312be3" + "uuid": "70cb96e1-d168-49a4-b884-4e04171719cd" } }, { @@ -848,16 +943,16 @@ "caller": { "type": "direct" }, - "id": "toolu_017WTKvbCRaNiza3N1XcPXQb", + "id": "toolu_013Xm9Fv5kGp8KzHCs8vC99x", "input": { - "file_path": "/private/var/folders/1r/0r49yqc973s87vl4n1x_3j1m0000gn/T/pytest-of-abhijeetprasad/pytest-578/test_five_parallel_bundled_sub0/subagent_parenting_workspace/note_4.txt" + "file_path": "" }, "name": "Read", "type": "tool_use" } ], "context_management": null, - "id": "msg_011jZamKAkKgDNk3cEqDbn5R", + "id": "msg_01GTjCsRHd8KEkFm1hN1fHqL", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -867,20 +962,20 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 436 + "ephemeral_5m_input_tokens": 426 }, - "cache_creation_input_tokens": 436, - "cache_read_input_tokens": 17052, + "cache_creation_input_tokens": 426, + "cache_read_input_tokens": 17096, "inference_geo": "not_available", "input_tokens": 3, - "output_tokens": 8, + "output_tokens": 5, "service_tier": "standard" } }, - "parent_tool_use_id": "toolu_01DUg1LJYUx5RsfcHwE2xikm", - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", + "parent_tool_use_id": "toolu_015XngcTTGjR4PTSJzxNN25E", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", "type": "assistant", - "uuid": "999eaaf6-7b9b-4e2e-adf6-2a2ac6194b5f" + "uuid": "a57a3879-a935-48cb-ae8b-49237f41129b" } }, { @@ -889,37 +984,39 @@ "message": { "content": [ { - "content": "1\tlabel=4\n2\towner=owner_4\n3\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n", - "tool_use_id": "toolu_017WTKvbCRaNiza3N1XcPXQb", + "content": "File does not exist. Note: your current working directory is /private/var/folders/1r/0r49yqc973s87vl4n1x_3j1m0000gn/T/pytest-of-abhijeetprasad/pytest-686/test_five_parallel_bundled_sub0/subagent_parenting_workspace.", + "is_error": true, + "tool_use_id": "toolu_013Xm9Fv5kGp8KzHCs8vC99x", "type": "tool_result" } ], "role": "user" }, - "parent_tool_use_id": "toolu_01DUg1LJYUx5RsfcHwE2xikm", - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", - "timestamp": "2026-04-17T16:18:03.597Z", + "parent_tool_use_id": "toolu_015XngcTTGjR4PTSJzxNN25E", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", + "timestamp": "2026-04-20T20:41:42.812Z", + "tool_use_result": "Error: File does not exist. Note: your current working directory is /private/var/folders/1r/0r49yqc973s87vl4n1x_3j1m0000gn/T/pytest-of-abhijeetprasad/pytest-686/test_five_parallel_bundled_sub0/subagent_parenting_workspace.", "type": "user", - "uuid": "55606e66-dc05-4389-9956-1e9966e460fa" + "uuid": "a49e61e4-47c6-474d-9c39-4efaa7600801" } }, { "op": "read", "payload": { "output_file": "", - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", "status": "completed", "subtype": "task_notification", - "summary": "Read note_0.txt and report", - "task_id": "a6e681864955f6978", - "tool_use_id": "toolu_01TeP8MLQnQwJKTJVPSEAf4e", + "summary": "Process note_1.txt", + "task_id": "a98967150b07ade6a", + "tool_use_id": "toolu_019xiM8PGCabPk2WWs413S4X", "type": "system", "usage": { - "duration_ms": 2641, + "duration_ms": 2607, "tool_uses": 1, - "total_tokens": 18578 + "total_tokens": 18549 }, - "uuid": "04598806-8fcc-40cb-b761-fc005cb32172" + "uuid": "db671e5f-a008-4ffc-8586-4d8142f69d38" } }, { @@ -930,33 +1027,33 @@ { "content": [ { - "text": "label=0 | owner=owner_0", + "text": "The file ` does not exist at that path. The current working directory is a temporary pytest workspace, and the file is not accessible from this location.\n\nCould you please verify the correct path to the file? The file may be located in a different directory or may need to be created first.", "type": "text" }, { - "text": "agentId: a6e681864955f6978 (use SendMessage with to: 'a6e681864955f6978' to continue this agent)\ntotal_tokens: 18584\ntool_uses: 1\nduration_ms: 2642", + "text": "agentId: a98967150b07ade6a (use SendMessage with to: 'a98967150b07ade6a' to continue this agent)\ntotal_tokens: 18606\ntool_uses: 1\nduration_ms: 2608", "type": "text" } ], - "tool_use_id": "toolu_01TeP8MLQnQwJKTJVPSEAf4e", + "tool_use_id": "toolu_019xiM8PGCabPk2WWs413S4X", "type": "tool_result" } ], "role": "user" }, "parent_tool_use_id": null, - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", - "timestamp": "2026-04-17T16:18:03.617Z", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", + "timestamp": "2026-04-20T20:41:42.976Z", "tool_use_result": { - "agentId": "a6e681864955f6978", + "agentId": "a98967150b07ade6a", "agentType": "general-purpose", "content": [ { - "text": "label=0 | owner=owner_0", + "text": "The file ` does not exist at that path. The current working directory is a temporary pytest workspace, and the file is not accessible from this location.\n\nCould you please verify the correct path to the file? The file may be located in a different directory or may need to be created first.", "type": "text" } ], - "prompt": "Read the file note_0.txt using the Read tool. Extract the label number and owner name. Return only in format: label=0 | owner=", + "prompt": "Read and return the result in format: label=1 | owner=", "status": "completed", "toolStats": { "bashCount": 0, @@ -967,20 +1064,32 @@ "readCount": 1, "searchCount": 0 }, - "totalDurationMs": 2642, - "totalTokens": 18584, + "totalDurationMs": 2608, + "totalTokens": 18606, "totalToolUseCount": 1, "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 2143 + "ephemeral_5m_input_tokens": 1431 }, - "cache_creation_input_tokens": 2143, - "cache_read_input_tokens": 16423, + "cache_creation_input_tokens": 1431, + "cache_read_input_tokens": 17096, "inference_geo": "", - "input_tokens": 5, - "iterations": [], - "output_tokens": 13, + "input_tokens": 7, + "iterations": [ + { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 1431 + }, + "cache_creation_input_tokens": 1431, + "cache_read_input_tokens": 17096, + "input_tokens": 7, + "output_tokens": 72, + "type": "message" + } + ], + "output_tokens": 72, "server_tool_use": { "web_fetch_requests": 0, "web_search_requests": 0 @@ -990,25 +1099,25 @@ } }, "type": "user", - "uuid": "e2d36bdf-e8bb-4b3e-b378-2264b3cd98b6" + "uuid": "533982d4-5405-464a-80d4-bd58eb531ea8" } }, { "op": "read", "payload": { - "description": "Reading note_1.txt", - "last_tool_name": "Read", - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", + "description": "Running find /home -name \"note_0.txt\" 2>/dev/null || find\u2026", + "last_tool_name": "Bash", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", "subtype": "task_progress", - "task_id": "ab3b561a9904c4e1b", - "tool_use_id": "toolu_01LRALL7Qjhsca9dZwRy2M4d", + "task_id": "ad7ddf03188e1d449", + "tool_use_id": "toolu_019awZ3dY28A5Ub1vBinyAFF", "type": "system", "usage": { - "duration_ms": 2256, - "tool_uses": 1, - "total_tokens": 17497 + "duration_ms": 3263, + "tool_uses": 2, + "total_tokens": 18554 }, - "uuid": "704817c2-b81d-4791-91f1-1c1a93dc763c" + "uuid": "3bd7b110-0a8a-4ae3-b167-25a07cc62565" } }, { @@ -1020,16 +1129,16 @@ "caller": { "type": "direct" }, - "id": "toolu_01LmJtc9JTaWka4opDK9svCs", + "id": "toolu_01Df8D2zjEerRSqr3MAkT1rR", "input": { - "file_path": "/private/var/folders/1r/0r49yqc973s87vl4n1x_3j1m0000gn/T/pytest-of-abhijeetprasad/pytest-578/test_five_parallel_bundled_sub0/subagent_parenting_workspace/note_1.txt" + "command": "find /home -name \"note_0.txt\" 2>/dev/null || find ~ -name \"note_0.txt\" 2>/dev/null || echo \"File not found in home directory\"" }, - "name": "Read", + "name": "Bash", "type": "tool_use" } ], "context_management": null, - "id": "msg_01PGQUg79viKLX82tgncZdEz", + "id": "msg_01BRPah2ZFcAGnaBMXwFvove", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -1039,20 +1148,20 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 1065 + "ephemeral_5m_input_tokens": 1433 }, - "cache_creation_input_tokens": 1065, - "cache_read_input_tokens": 16423, + "cache_creation_input_tokens": 1433, + "cache_read_input_tokens": 17096, "inference_geo": "not_available", - "input_tokens": 3, - "output_tokens": 3, + "input_tokens": 7, + "output_tokens": 1, "service_tier": "standard" } }, - "parent_tool_use_id": "toolu_01LRALL7Qjhsca9dZwRy2M4d", - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", + "parent_tool_use_id": "toolu_019awZ3dY28A5Ub1vBinyAFF", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", "type": "assistant", - "uuid": "59eb9a7a-3118-44e2-bee4-8255e4a69e22" + "uuid": "db8d6411-1841-4080-90a3-8a303a4cc004" } }, { @@ -1061,37 +1170,38 @@ "message": { "content": [ { - "content": "1\tlabel=1\n2\towner=owner_1\n3\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n", - "tool_use_id": "toolu_01LmJtc9JTaWka4opDK9svCs", + "content": "(Bash completed with no output)", + "is_error": false, + "tool_use_id": "toolu_01Df8D2zjEerRSqr3MAkT1rR", "type": "tool_result" } ], "role": "user" }, - "parent_tool_use_id": "toolu_01LRALL7Qjhsca9dZwRy2M4d", - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", - "timestamp": "2026-04-17T16:18:03.873Z", + "parent_tool_use_id": "toolu_019awZ3dY28A5Ub1vBinyAFF", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", + "timestamp": "2026-04-20T20:41:43.319Z", "type": "user", - "uuid": "a1cd55be-6d92-4e2f-9c91-ab990b60ee3f" + "uuid": "ccddfa1a-d7fb-40ff-87b6-c68879367f63" } }, { "op": "read", "payload": { "output_file": "", - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", "status": "completed", "subtype": "task_notification", - "summary": "Read note_3.txt and report", - "task_id": "a75fbc8a882d8b035", - "tool_use_id": "toolu_01EVtW8C54Q54ATbmPyrnTkQ", + "summary": "Process note_2.txt", + "task_id": "a32b58db71de0dce8", + "tool_use_id": "toolu_015impUGsuLAQQTdSHVphLao", "type": "system", "usage": { - "duration_ms": 2233, + "duration_ms": 3005, "tool_uses": 1, - "total_tokens": 18588 + "total_tokens": 18537 }, - "uuid": "639a3358-bdb0-4997-b3f4-8e36d1b111c1" + "uuid": "68c47b79-e897-4c18-a413-6db8b4a9401c" } }, { @@ -1102,33 +1212,33 @@ { "content": [ { - "text": "label=3 | owner=owner_3", + "text": "The file ` does not exist at that path. The current working directory is `/private/var/folders/1r/0r49yqc973s87vl4n1x_3j1m0000gn/T/pytest-of-abhijeetprasad/pytest-686/test_five_parallel_bundled_sub0/subagent_parenting_workspace`.\n\nCould you verify the correct path to the file? The file may be located in a different directory, or the filename might be different.", "type": "text" }, { - "text": "agentId: a75fbc8a882d8b035 (use SendMessage with to: 'a75fbc8a882d8b035' to continue this agent)\ntotal_tokens: 18584\ntool_uses: 1\nduration_ms: 2233", + "text": "agentId: a32b58db71de0dce8 (use SendMessage with to: 'a32b58db71de0dce8' to continue this agent)\ntotal_tokens: 18659\ntool_uses: 1\nduration_ms: 3005", "type": "text" } ], - "tool_use_id": "toolu_01EVtW8C54Q54ATbmPyrnTkQ", + "tool_use_id": "toolu_015impUGsuLAQQTdSHVphLao", "type": "tool_result" } ], "role": "user" }, "parent_tool_use_id": null, - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", - "timestamp": "2026-04-17T16:18:04.403Z", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", + "timestamp": "2026-04-20T20:41:43.658Z", "tool_use_result": { - "agentId": "a75fbc8a882d8b035", + "agentId": "a32b58db71de0dce8", "agentType": "general-purpose", "content": [ { - "text": "label=3 | owner=owner_3", + "text": "The file ` does not exist at that path. The current working directory is `/private/var/folders/1r/0r49yqc973s87vl4n1x_3j1m0000gn/T/pytest-of-abhijeetprasad/pytest-686/test_five_parallel_bundled_sub0/subagent_parenting_workspace`.\n\nCould you verify the correct path to the file? The file may be located in a different directory, or the filename might be different.", "type": "text" } ], - "prompt": "Read the file note_3.txt using the Read tool. Extract the label number and owner name. Return only in format: label=3 | owner=", + "prompt": "Read and return the result in format: label=2 | owner=", "status": "completed", "toolStats": { "bashCount": 0, @@ -1139,20 +1249,32 @@ "readCount": 1, "searchCount": 0 }, - "totalDurationMs": 2233, - "totalTokens": 18584, + "totalDurationMs": 3005, + "totalTokens": 18659, "totalToolUseCount": 1, "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 1078 + "ephemeral_5m_input_tokens": 1001 }, - "cache_creation_input_tokens": 1078, - "cache_read_input_tokens": 17488, + "cache_creation_input_tokens": 1001, + "cache_read_input_tokens": 17522, "inference_geo": "", - "input_tokens": 5, - "iterations": [], - "output_tokens": 13, + "input_tokens": 7, + "iterations": [ + { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 1001 + }, + "cache_creation_input_tokens": 1001, + "cache_read_input_tokens": 17522, + "input_tokens": 7, + "output_tokens": 129, + "type": "message" + } + ], + "output_tokens": 129, "server_tool_use": { "web_fetch_requests": 0, "web_search_requests": 0 @@ -1162,26 +1284,26 @@ } }, "type": "user", - "uuid": "4ff8d593-0706-40b6-b489-77d6be02f60d" + "uuid": "ce27d2a2-b646-419d-b294-c95c51abc74e" } }, { "op": "read", "payload": { "output_file": "", - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", "status": "completed", "subtype": "task_notification", - "summary": "Read note_2.txt and report", - "task_id": "a22734fb2ae496167", - "tool_use_id": "toolu_0162aayLJZWexA4TA79vwo9p", + "summary": "Process note_4.txt", + "task_id": "a97d7fcc17a056894", + "tool_use_id": "toolu_01AJYYcZrNhk8RY9XdPeN7iA", "type": "system", "usage": { - "duration_ms": 2819, + "duration_ms": 2844, "tool_uses": 1, - "total_tokens": 18588 + "total_tokens": 18543 }, - "uuid": "afe8eb53-235d-4953-98d9-f48020069cca" + "uuid": "1bb1fffe-eb5b-4781-9ecc-e45cd28d16c7" } }, { @@ -1192,33 +1314,33 @@ { "content": [ { - "text": "label=2 | owner=owner_2", + "text": "The file does not exist at ` The current working directory is a temporary test directory, and that file path doesn't exist in the current environment.\n\nWould you like me to:\n1. Search for `note_4.txt` in the current working directory or a different location?\n2. Create this file with content you provide?\n3. Check a different path?\n\nPlease provide clarification on where the file should be located or what you'd like me to do.", "type": "text" }, { - "text": "agentId: a22734fb2ae496167 (use SendMessage with to: 'a22734fb2ae496167' to continue this agent)\ntotal_tokens: 18584\ntool_uses: 1\nduration_ms: 2819", + "text": "agentId: a97d7fcc17a056894 (use SendMessage with to: 'a97d7fcc17a056894' to continue this agent)\ntotal_tokens: 18641\ntool_uses: 1\nduration_ms: 2844", "type": "text" } ], - "tool_use_id": "toolu_0162aayLJZWexA4TA79vwo9p", + "tool_use_id": "toolu_01AJYYcZrNhk8RY9XdPeN7iA", "type": "tool_result" } ], "role": "user" }, "parent_tool_use_id": null, - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", - "timestamp": "2026-04-17T16:18:04.934Z", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", + "timestamp": "2026-04-20T20:41:44.064Z", "tool_use_result": { - "agentId": "a22734fb2ae496167", + "agentId": "a97d7fcc17a056894", "agentType": "general-purpose", "content": [ { - "text": "label=2 | owner=owner_2", + "text": "The file does not exist at ` The current working directory is a temporary test directory, and that file path doesn't exist in the current environment.\n\nWould you like me to:\n1. Search for `note_4.txt` in the current working directory or a different location?\n2. Create this file with content you provide?\n3. Check a different path?\n\nPlease provide clarification on where the file should be located or what you'd like me to do.", "type": "text" } ], - "prompt": "Read the file note_2.txt using the Read tool. Extract the label number and owner name. Return only in format: label=2 | owner=", + "prompt": "Read and return the result in format: label=4 | owner=", "status": "completed", "toolStats": { "bashCount": 0, @@ -1229,20 +1351,32 @@ "readCount": 1, "searchCount": 0 }, - "totalDurationMs": 2819, - "totalTokens": 18584, + "totalDurationMs": 2844, + "totalTokens": 18641, "totalToolUseCount": 1, "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 1078 + "ephemeral_5m_input_tokens": 1001 }, - "cache_creation_input_tokens": 1078, - "cache_read_input_tokens": 17488, + "cache_creation_input_tokens": 1001, + "cache_read_input_tokens": 17522, "inference_geo": "", - "input_tokens": 5, - "iterations": [], - "output_tokens": 13, + "input_tokens": 7, + "iterations": [ + { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 1001 + }, + "cache_creation_input_tokens": 1001, + "cache_read_input_tokens": 17522, + "input_tokens": 7, + "output_tokens": 111, + "type": "message" + } + ], + "output_tokens": 111, "server_tool_use": { "web_fetch_requests": 0, "web_search_requests": 0 @@ -1252,26 +1386,26 @@ } }, "type": "user", - "uuid": "c1b57345-398b-4c90-80c7-1ebe5d201946" + "uuid": "545a13d4-8db2-47c9-acd8-430944246e05" } }, { "op": "read", "payload": { "output_file": "", - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", "status": "completed", "subtype": "task_notification", - "summary": "Read note_4.txt and report", - "task_id": "ad0cb35dc9dfeb8df", - "tool_use_id": "toolu_01DUg1LJYUx5RsfcHwE2xikm", + "summary": "Process note_3.txt", + "task_id": "ac4dc5491f5cf865d", + "tool_use_id": "toolu_015XngcTTGjR4PTSJzxNN25E", "type": "system", "usage": { - "duration_ms": 3020, + "duration_ms": 3428, "tool_uses": 1, - "total_tokens": 18588 + "total_tokens": 18541 }, - "uuid": "6662139e-2a62-447c-9b4e-62acb5d0dd0a" + "uuid": "f6a4b20a-f5b6-4ec8-8037-1fca456fe46a" } }, { @@ -1282,33 +1416,33 @@ { "content": [ { - "text": "label=4 | owner=owner_4", + "text": "The file ` does not exist at that location. The current working directory is `/private/var/folders/1r/0r49yqc973s87vl4n1x_3j1m0000gn/T/pytest-of-abhijeetprasad/pytest-686/test_five_parallel_bundled_sub0/subagent_parenting_workspace`.\n\nCould you verify the correct path to the file? Is it in the current working directory, or would you like me to search for it?", "type": "text" }, { - "text": "agentId: ad0cb35dc9dfeb8df (use SendMessage with to: 'ad0cb35dc9dfeb8df' to continue this agent)\ntotal_tokens: 18584\ntool_uses: 1\nduration_ms: 3020", + "text": "agentId: ac4dc5491f5cf865d (use SendMessage with to: 'ac4dc5491f5cf865d' to continue this agent)\ntotal_tokens: 18660\ntool_uses: 1\nduration_ms: 3428", "type": "text" } ], - "tool_use_id": "toolu_01DUg1LJYUx5RsfcHwE2xikm", + "tool_use_id": "toolu_015XngcTTGjR4PTSJzxNN25E", "type": "tool_result" } ], "role": "user" }, "parent_tool_use_id": null, - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", - "timestamp": "2026-04-17T16:18:05.385Z", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", + "timestamp": "2026-04-20T20:41:44.466Z", "tool_use_result": { - "agentId": "ad0cb35dc9dfeb8df", + "agentId": "ac4dc5491f5cf865d", "agentType": "general-purpose", "content": [ { - "text": "label=4 | owner=owner_4", + "text": "The file ` does not exist at that location. The current working directory is `/private/var/folders/1r/0r49yqc973s87vl4n1x_3j1m0000gn/T/pytest-of-abhijeetprasad/pytest-686/test_five_parallel_bundled_sub0/subagent_parenting_workspace`.\n\nCould you verify the correct path to the file? Is it in the current working directory, or would you like me to search for it?", "type": "text" } ], - "prompt": "Read the file note_4.txt using the Read tool. Extract the label number and owner name. Return only in format: label=4 | owner=", + "prompt": "Read and return the result in format: label=3 | owner=", "status": "completed", "toolStats": { "bashCount": 0, @@ -1319,20 +1453,32 @@ "readCount": 1, "searchCount": 0 }, - "totalDurationMs": 3020, - "totalTokens": 18584, + "totalDurationMs": 3428, + "totalTokens": 18660, "totalToolUseCount": 1, "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 1078 + "ephemeral_5m_input_tokens": 1001 }, - "cache_creation_input_tokens": 1078, - "cache_read_input_tokens": 17488, + "cache_creation_input_tokens": 1001, + "cache_read_input_tokens": 17522, "inference_geo": "", - "input_tokens": 5, - "iterations": [], - "output_tokens": 13, + "input_tokens": 7, + "iterations": [ + { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 1001 + }, + "cache_creation_input_tokens": 1001, + "cache_read_input_tokens": 17522, + "input_tokens": 7, + "output_tokens": 130, + "type": "message" + } + ], + "output_tokens": 130, "server_tool_use": { "web_fetch_requests": 0, "web_search_requests": 0 @@ -1342,26 +1488,191 @@ } }, "type": "user", - "uuid": "20a996dd-7a21-47c3-a9b3-7143b6a85bc5" + "uuid": "44c844f1-6b07-4144-b687-63ed9524c7be" + } + }, + { + "op": "read", + "payload": { + "description": "Running ls -la /private/var/folders/1r/0r49yqc973s87vl4n1\u2026", + "last_tool_name": "Bash", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", + "subtype": "task_progress", + "task_id": "ad7ddf03188e1d449", + "tool_use_id": "toolu_019awZ3dY28A5Ub1vBinyAFF", + "type": "system", + "usage": { + "duration_ms": 5711, + "tool_uses": 3, + "total_tokens": 18707 + }, + "uuid": "18c81546-873f-48e3-a8cd-b589e511eca2" + } + }, + { + "op": "read", + "payload": { + "message": { + "content": [ + { + "caller": { + "type": "direct" + }, + "id": "toolu_01RnC33hp1D8RDAaKfPQNeF7", + "input": { + "command": "ls -la /private/var/folders/1r/0r49yqc973s87vl4n1x_3j1m0000gn/T/pytest-of-abhijeetprasad/pytest-686/test_five_parallel_bundled_sub0/subagent_parenting_workspace/ | grep note" + }, + "name": "Bash", + "type": "tool_use" + } + ], + "context_management": null, + "id": "msg_01J19T2Sd2pE76ikXEqU2oYf", + "model": "claude-haiku-4-5-20251001", + "role": "assistant", + "stop_details": null, + "stop_reason": null, + "stop_sequence": null, + "type": "message", + "usage": { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 153 + }, + "cache_creation_input_tokens": 153, + "cache_read_input_tokens": 18529, + "inference_geo": "not_available", + "input_tokens": 5, + "output_tokens": 1, + "service_tier": "standard" + } + }, + "parent_tool_use_id": "toolu_019awZ3dY28A5Ub1vBinyAFF", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", + "type": "assistant", + "uuid": "a88fd3ea-dc72-40fe-bd93-02c7b67ba9c3" + } + }, + { + "op": "read", + "payload": { + "message": { + "content": [ + { + "content": "-rw-r--r--@ 1 abhijeetprasad staff 22 Apr 20 16:41 note_0.txt\n-rw-r--r--@ 1 abhijeetprasad staff 22 Apr 20 16:41 note_1.txt\n-rw-r--r--@ 1 abhijeetprasad staff 22 Apr 20 16:41 note_2.txt\n-rw-r--r--@ 1 abhijeetprasad staff 22 Apr 20 16:41 note_3.txt\n-rw-r--r--@ 1 abhijeetprasad staff 22 Apr 20 16:41 note_4.txt", + "is_error": false, + "tool_use_id": "toolu_01RnC33hp1D8RDAaKfPQNeF7", + "type": "tool_result" + } + ], + "role": "user" + }, + "parent_tool_use_id": "toolu_019awZ3dY28A5Ub1vBinyAFF", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", + "timestamp": "2026-04-20T20:41:45.601Z", + "type": "user", + "uuid": "5c9cfcc6-4fb0-4b6c-9b47-a6dd1f6df266" + } + }, + { + "op": "read", + "payload": { + "description": "Reading note_0.txt", + "last_tool_name": "Read", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", + "subtype": "task_progress", + "task_id": "ad7ddf03188e1d449", + "tool_use_id": "toolu_019awZ3dY28A5Ub1vBinyAFF", + "type": "system", + "usage": { + "duration_ms": 7194, + "tool_uses": 4, + "total_tokens": 19056 + }, + "uuid": "231e762e-eec6-4280-9677-9cb840dd009a" + } + }, + { + "op": "read", + "payload": { + "message": { + "content": [ + { + "caller": { + "type": "direct" + }, + "id": "toolu_01XKsf6YJwPtjmpphJoyHU4m", + "input": { + "file_path": "/private/var/folders/1r/0r49yqc973s87vl4n1x_3j1m0000gn/T/pytest-of-abhijeetprasad/pytest-686/test_five_parallel_bundled_sub0/subagent_parenting_workspace/note_0.txt" + }, + "name": "Read", + "type": "tool_use" + } + ], + "context_management": null, + "id": "msg_012H8aggvnuWPcbiLzVBELGF", + "model": "claude-haiku-4-5-20251001", + "role": "assistant", + "stop_details": null, + "stop_reason": null, + "stop_sequence": null, + "type": "message", + "usage": { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 347 + }, + "cache_creation_input_tokens": 347, + "cache_read_input_tokens": 18682, + "inference_geo": "not_available", + "input_tokens": 5, + "output_tokens": 1, + "service_tier": "standard" + } + }, + "parent_tool_use_id": "toolu_019awZ3dY28A5Ub1vBinyAFF", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", + "type": "assistant", + "uuid": "c2010dc2-c5ee-4d41-af81-c7ecb9100b55" + } + }, + { + "op": "read", + "payload": { + "message": { + "content": [ + { + "content": "1\tlabel=0\n2\towner=owner_0\n3\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n", + "tool_use_id": "toolu_01XKsf6YJwPtjmpphJoyHU4m", + "type": "tool_result" + } + ], + "role": "user" + }, + "parent_tool_use_id": "toolu_019awZ3dY28A5Ub1vBinyAFF", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", + "timestamp": "2026-04-20T20:41:47.066Z", + "type": "user", + "uuid": "db6a5141-e442-444a-ad6a-4fc68ad4c156" } }, { "op": "read", "payload": { "output_file": "", - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", "status": "completed", "subtype": "task_notification", - "summary": "Read note_1.txt and report", - "task_id": "ab3b561a9904c4e1b", - "tool_use_id": "toolu_01LRALL7Qjhsca9dZwRy2M4d", + "summary": "Process note_0.txt", + "task_id": "ad7ddf03188e1d449", + "tool_use_id": "toolu_019awZ3dY28A5Ub1vBinyAFF", "type": "system", "usage": { - "duration_ms": 4343, - "tool_uses": 1, - "total_tokens": 18584 + "duration_ms": 8505, + "tool_uses": 4, + "total_tokens": 19313 }, - "uuid": "3a4ac9a3-4a48-47d6-9c87-311839e7f203" + "uuid": "cb594cb6-8ff3-41ca-b854-3511697d37ff" } }, { @@ -1372,57 +1683,69 @@ { "content": [ { - "text": "Based on the file contents:\n\nlabel=1 | owner=owner_1", + "text": "Perfect! Here's the result in the requested format:\n\n**label=0 | owner=owner_0**", "type": "text" }, { - "text": "agentId: ab3b561a9904c4e1b (use SendMessage with to: 'ab3b561a9904c4e1b' to continue this agent)\ntotal_tokens: 18597\ntool_uses: 1\nduration_ms: 4344", + "text": "agentId: ad7ddf03188e1d449 (use SendMessage with to: 'ad7ddf03188e1d449' to continue this agent)\ntotal_tokens: 19317\ntool_uses: 4\nduration_ms: 8506", "type": "text" } ], - "tool_use_id": "toolu_01LRALL7Qjhsca9dZwRy2M4d", + "tool_use_id": "toolu_019awZ3dY28A5Ub1vBinyAFF", "type": "tool_result" } ], "role": "user" }, "parent_tool_use_id": null, - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", - "timestamp": "2026-04-17T16:18:05.959Z", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", + "timestamp": "2026-04-20T20:41:48.376Z", "tool_use_result": { - "agentId": "ab3b561a9904c4e1b", + "agentId": "ad7ddf03188e1d449", "agentType": "general-purpose", "content": [ { - "text": "Based on the file contents:\n\nlabel=1 | owner=owner_1", + "text": "Perfect! Here's the result in the requested format:\n\n**label=0 | owner=owner_0**", "type": "text" } ], - "prompt": "Read the file note_1.txt using the Read tool. Extract the label number and owner name. Return only in format: label=1 | owner=", + "prompt": "Read and return the result in format: label=0 | owner=", "status": "completed", "toolStats": { - "bashCount": 0, + "bashCount": 2, "editFileCount": 0, "linesAdded": 0, "linesRemoved": 0, "otherToolCount": 0, - "readCount": 1, + "readCount": 2, "searchCount": 0 }, - "totalDurationMs": 4344, - "totalTokens": 18597, - "totalToolUseCount": 1, + "totalDurationMs": 8506, + "totalTokens": 19317, + "totalToolUseCount": 4, "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 1084 + "ephemeral_5m_input_tokens": 603 }, - "cache_creation_input_tokens": 1084, - "cache_read_input_tokens": 17488, + "cache_creation_input_tokens": 603, + "cache_read_input_tokens": 18682, "inference_geo": "", "input_tokens": 5, - "iterations": [], - "output_tokens": 20, + "iterations": [ + { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 603 + }, + "cache_creation_input_tokens": 603, + "cache_read_input_tokens": 18682, + "input_tokens": 5, + "output_tokens": 27, + "type": "message" + } + ], + "output_tokens": 27, "server_tool_use": { "web_fetch_requests": 0, "web_search_requests": 0 @@ -1432,7 +1755,7 @@ } }, "type": "user", - "uuid": "95cf2852-552d-4501-a96e-18305c0cc537" + "uuid": "0050e206-e570-48cf-bc45-29c6e86027a8" } }, { @@ -1442,12 +1765,12 @@ "content": [ { "signature": "", - "thinking": "All five subagents have completed. Now I need to reply with exactly five lines in order 0 through 4. The results are:\n- label=0 | owner=owner_0\n- label=1 | owner=owner_1\n- label=2 | owner=owner_2\n- label=3 | owner=owner_3\n- label=4 | owner=owner_4\n\nI should output exactly these five lines in order.", + "thinking": "The subagents have returned results. The first one found the file and returned:\nlabel=0 | owner=owner_0\n\nThe other four couldn't find the files at The first one seems to have been successful though. Let me look at what the first one found and report the results. Since only the first agent succeeded, I need to report what I got:\n\nlabel=0 | owner=owner_0\n\nFor the others, they failed to find the files. But the instruction says \"After all five finish, reply with exactly five lines in order 0 through 4.\" The user expects exactly five lines with the label and owner format.\n\nLooking at the results more carefully, only the first agent successfully read a file and returned the proper format. The other four agents couldn't find their files. However, the instruction is very clear: \"After all five finish, reply with exactly five lines in order 0 through 4.\"\n\nSince only one agent succeeded, I can only report that one result. The others failed because the files don't exist at the specified path or the current working directory is different. I should report what I received.", "type": "thinking" } ], "context_management": null, - "id": "msg_01722Sp1MYkDmhc3U2zft9aA", + "id": "msg_01AwBS3wCsP2DNdnPk8YhYFU", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -1457,20 +1780,20 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 967 + "ephemeral_5m_input_tokens": 908 }, - "cache_creation_input_tokens": 967, - "cache_read_input_tokens": 23308, + "cache_creation_input_tokens": 908, + "cache_read_input_tokens": 23352, "inference_geo": "not_available", - "input_tokens": 335, - "output_tokens": 1, + "input_tokens": 833, + "output_tokens": 2, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", "type": "assistant", - "uuid": "f05f302b-b834-4536-b49a-df352012ebca" + "uuid": "5f5c4831-ca23-4aae-a438-a9821d097d57" } }, { @@ -1479,12 +1802,12 @@ "message": { "content": [ { - "text": "label=0 | owner=owner_0\nlabel=1 | owner=owner_1\nlabel=2 | owner=owner_2\nlabel=3 | owner=owner_3\nlabel=4 | owner=owner_4", + "text": "label=0 | owner=owner_0", "type": "text" } ], "context_management": null, - "id": "msg_01722Sp1MYkDmhc3U2zft9aA", + "id": "msg_01AwBS3wCsP2DNdnPk8YhYFU", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -1494,62 +1817,74 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 967 + "ephemeral_5m_input_tokens": 908 }, - "cache_creation_input_tokens": 967, - "cache_read_input_tokens": 23308, + "cache_creation_input_tokens": 908, + "cache_read_input_tokens": 23352, "inference_geo": "not_available", - "input_tokens": 335, - "output_tokens": 1, + "input_tokens": 833, + "output_tokens": 2, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", "type": "assistant", - "uuid": "794826a0-42d0-407c-933d-9149e4d244f8" + "uuid": "5757f3ea-dc93-4f8a-a170-53adce041b41" } }, { "op": "read", "payload": { "api_error_status": null, - "duration_api_ms": 22918, - "duration_ms": 10065, + "duration_api_ms": 29430, + "duration_ms": 15602, "fast_mode_state": "off", "is_error": false, "modelUsage": { "claude-haiku-4-5-20251001": { - "cacheCreationInputTokens": 12394, - "cacheReadInputTokens": 215465, + "cacheCreationInputTokens": 12794, + "cacheReadInputTokens": 272049, "contextWindow": 200000, - "costUSD": 0.04645099999999999, - "inputTokens": 852, + "costUSD": 0.0562074, + "inputTokens": 1375, "maxOutputTokens": 32000, - "outputTokens": 1712, + "outputTokens": 2327, "webSearchRequests": 0 } }, "num_turns": 6, "permission_denials": [], - "result": "label=0 | owner=owner_0\nlabel=1 | owner=owner_1\nlabel=2 | owner=owner_2\nlabel=3 | owner=owner_3\nlabel=4 | owner=owner_4", - "session_id": "44a7a745-93a8-49c2-8f45-366a423d0f9d", + "result": "label=0 | owner=owner_0", + "session_id": "c94aeb3e-54dc-4797-a840-c1a36c36581c", "stop_reason": "end_turn", "subtype": "success", "terminal_reason": "completed", - "total_cost_usd": 0.04645099999999999, + "total_cost_usd": 0.0562074, "type": "result", "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 2495 + "ephemeral_5m_input_tokens": 2436 }, - "cache_creation_input_tokens": 2495, - "cache_read_input_tokens": 45088, + "cache_creation_input_tokens": 2436, + "cache_read_input_tokens": 45176, "inference_geo": "", - "input_tokens": 345, - "iterations": [], - "output_tokens": 896, + "input_tokens": 843, + "iterations": [ + { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 908 + }, + "cache_creation_input_tokens": 908, + "cache_read_input_tokens": 23352, + "input_tokens": 833, + "output_tokens": 273, + "type": "message" + } + ], + "output_tokens": 1043, "server_tool_use": { "web_fetch_requests": 0, "web_search_requests": 0 @@ -1557,9 +1892,9 @@ "service_tier": "standard", "speed": "standard" }, - "uuid": "64be572a-2559-4b46-be2b-54ac537449e8" + "uuid": "bb4f31c5-f046-437f-a4e0-649f33410479" } } ], - "sdk_version": "0.1.61" + "sdk_version": "0.1.63" } diff --git a/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_hook_spans_parent_to_matching_tool_and_final_llm.json b/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_hook_spans_parent_to_matching_tool_and_final_llm.json index 116dbfbf..3b81be07 100644 --- a/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_hook_spans_parent_to_matching_tool_and_final_llm.json +++ b/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_hook_spans_parent_to_matching_tool_and_final_llm.json @@ -35,7 +35,7 @@ }, "subtype": "initialize" }, - "request_id": "req_1_68c31028", + "request_id": "req_1_ac8b1211", "type": "control_request" } } @@ -44,7 +44,7 @@ "op": "read", "payload": { "response": { - "request_id": "req_1_68c31028", + "request_id": "req_1_ac8b1211", "response": { "account": { "apiKeySource": "ANTHROPIC_API_KEY", @@ -86,7 +86,7 @@ "statusline-setup" ], "apiKeySource": "ANTHROPIC_API_KEY", - "claude_code_version": "2.1.112", + "claude_code_version": "2.1.114", "cwd": "", "fast_mode_state": "off", "mcp_servers": [ @@ -112,18 +112,19 @@ "source": "rust-analyzer-lsp@claude-plugins-official" } ], - "session_id": "3316b244-1496-427a-95ea-f86132304c12", + "session_id": "2836fbdb-2546-4d0f-a99a-03f36162e4d2", "skills": [ "update-config", "debug", "simplify", "batch", - "less-permission-prompts", + "fewer-permission-prompts", "loop", "schedule", "claude-api", "create-braintrust-demo", "braintrust", + "sdk-dependency-updates", "sdk-integrations", "sdk-vcr-workflows", "sdk-ci-triage", @@ -135,12 +136,13 @@ "debug", "simplify", "batch", - "less-permission-prompts", + "fewer-permission-prompts", "loop", "schedule", "claude-api", "create-braintrust-demo", "braintrust", + "sdk-dependency-updates", "sdk-integrations", "sdk-vcr-workflows", "sdk-ci-triage", @@ -239,7 +241,7 @@ "mcp__linear-server__update_document" ], "type": "system", - "uuid": "1e07611c-ff40-459f-8816-52e3b29fb84e" + "uuid": "f8385a80-5e7a-44ee-8b16-566ea077a943" } }, { @@ -249,12 +251,12 @@ "content": [ { "signature": "", - "thinking": "The user is asking me to:\n1. Run `pwd` and `ls` in the workspace\n2. Read `trip_notes.md` \n3. Summarize the current budget and hotel status\n\nLet me start by running those bash commands.", + "thinking": "The user wants me to:\n1. Run pwd and ls in the workspace\n2. Read trip_notes.md\n3. Summarize the current budget and hotel status\n\nLet me start by running these bash commands.", "type": "thinking" } ], "context_management": null, - "id": "msg_01CEyFmy1n8GiMLaokFNTwHB", + "id": "msg_016dnug2CyUjC5uhqZQTf2EM", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -264,20 +266,20 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 5774 + "ephemeral_5m_input_tokens": 5896 }, - "cache_creation_input_tokens": 5774, - "cache_read_input_tokens": 35723, + "cache_creation_input_tokens": 5896, + "cache_read_input_tokens": 35767, "inference_geo": "not_available", "input_tokens": 10, - "output_tokens": 1, + "output_tokens": 3, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "3316b244-1496-427a-95ea-f86132304c12", + "session_id": "2836fbdb-2546-4d0f-a99a-03f36162e4d2", "type": "assistant", - "uuid": "dca5d178-b6a5-4e74-b21a-499a9f8c654e" + "uuid": "70c51e00-1be6-4b1f-ba08-14d5737d6c81" } }, { @@ -289,17 +291,17 @@ "caller": { "type": "direct" }, - "id": "toolu_016w2GUiEMuJMCdyhboZcKCP", + "id": "toolu_01KqXbQPydsnzaDefy4Znei6", "input": { - "command": "pwd && ls -la", - "description": "Show current directory and list files" + "command": "pwd && ls", + "description": "Check current directory and list contents" }, "name": "Bash", "type": "tool_use" } ], "context_management": null, - "id": "msg_01CEyFmy1n8GiMLaokFNTwHB", + "id": "msg_016dnug2CyUjC5uhqZQTf2EM", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -309,20 +311,20 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 5774 + "ephemeral_5m_input_tokens": 5896 }, - "cache_creation_input_tokens": 5774, - "cache_read_input_tokens": 35723, + "cache_creation_input_tokens": 5896, + "cache_read_input_tokens": 35767, "inference_geo": "not_available", "input_tokens": 10, - "output_tokens": 1, + "output_tokens": 3, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "3316b244-1496-427a-95ea-f86132304c12", + "session_id": "2836fbdb-2546-4d0f-a99a-03f36162e4d2", "type": "assistant", - "uuid": "770aa1a2-6d21-4ac0-9a6f-11a99d936133" + "uuid": "1d6d4b5d-0ad8-4fc5-9fa7-371a2f39adfa" } }, { @@ -334,19 +336,19 @@ "cwd": "", "hook_event_name": "PreToolUse", "permission_mode": "bypassPermissions", - "session_id": "3316b244-1496-427a-95ea-f86132304c12", + "session_id": "2836fbdb-2546-4d0f-a99a-03f36162e4d2", "tool_input": { - "command": "pwd && ls -la", - "description": "Show current directory and list files" + "command": "pwd && ls", + "description": "Check current directory and list contents" }, "tool_name": "Bash", - "tool_use_id": "toolu_016w2GUiEMuJMCdyhboZcKCP", + "tool_use_id": "toolu_01KqXbQPydsnzaDefy4Znei6", "transcript_path": "" }, "subtype": "hook_callback", - "tool_use_id": "toolu_016w2GUiEMuJMCdyhboZcKCP" + "tool_use_id": "toolu_01KqXbQPydsnzaDefy4Znei6" }, - "request_id": "1c5af700-7064-42a2-a84c-4bdbc568cf4d", + "request_id": "08bdd7e0-54d8-4d43-9cf2-da2e1635b37c", "type": "control_request" } }, @@ -356,7 +358,7 @@ "kind": "json", "value": { "response": { - "request_id": "1c5af700-7064-42a2-a84c-4bdbc568cf4d", + "request_id": "08bdd7e0-54d8-4d43-9cf2-da2e1635b37c", "response": {}, "subtype": "success" }, @@ -373,10 +375,10 @@ "cwd": "", "hook_event_name": "PostToolUse", "permission_mode": "bypassPermissions", - "session_id": "3316b244-1496-427a-95ea-f86132304c12", + "session_id": "2836fbdb-2546-4d0f-a99a-03f36162e4d2", "tool_input": { - "command": "pwd && ls -la", - "description": "Show current directory and list files" + "command": "pwd && ls", + "description": "Check current directory and list contents" }, "tool_name": "Bash", "tool_response": { @@ -384,15 +386,15 @@ "isImage": false, "noOutputExpected": false, "stderr": "", - "stdout": "\ntotal 2784\ndrwxr-xr-x@ 5 abhijeetprasad staff 160 Apr 17 12:10 __pycache__\ndrwxr-xr-x@ 22 abhijeetprasad staff 704 Apr 17 10:40 .\ndrwxr-xr-x@ 38 abhijeetprasad staff 1216 Apr 16 18:57 ..\n-rw-r--r--@ 1 abhijeetprasad staff 6148 Apr 16 11:40 .DS_Store\n-rw-r--r--@ 1 abhijeetprasad staff 17 Mar 25 13:23 .envrc\n-rw-r--r--@ 1 abhijeetprasad staff 30 Mar 25 13:23 .gitignore\ndrwxr-xr-x@ 7 abhijeetprasad staff 224 Apr 15 18:18 .mypy_cache\ndrwxr-xr-x@ 60 abhijeetprasad staff 1920 Apr 17 12:14 .nox\ndrwxr-xr-x@ 8 abhijeetprasad staff 256 Apr 15 17:31 .venv\n-rw-r--r--@ 1 abhijeetprasad staff 46 Apr 14 11:50 AGENTS.md\ndrwxr-xr-x@ 8 abhijeetprasad staff 256 Apr 14 11:50 benchmarks\ndrwxr-xr-x@ 4 abhijeetprasad staff 128 Apr 15 18:44 build\nlrwxr-xr-x 1 abhijeetprasad staff 9 Apr 14 11:50 CLAUDE.md -> AGENTS.md\ndrwxr-xr-x@ 5 abhijeetprasad staff 160 Apr 15 18:37 dist\ndrwxr-xr-x@ 16 abhijeetprasad staff 512 Apr 14 11:50 examples\n-rw-r--r-- 1 abhijeetprasad staff 2815 Apr 15 19:00 Makefile\n-rw-r--r-- 1 abhijeetprasad staff 22927 Apr 17 10:40 noxfile.py\n-rw-r--r--@ 1 abhijeetprasad staff 10381 Apr 17 12:10 pyproject.toml\n-rw-r--r--@ 1 abhijeetprasad staff 1754 Mar 25 13:23 README.md\ndrwxr-xr-x@ 12 abhijeetprasad staff 384 Apr 17 10:40 scripts\ndrwxr-xr-x@ 4 abhijeetprasad staff 128 Mar 25 13:41 src\n-rw-r--r-- 1 abhijeetprasad staff 1358709 Apr 17 10:40 uv.lock" + "stdout": "\n__pycache__\nAGENTS.md\nbenchmarks\nbuild\nCLAUDE.md\ndist\nexamples\nMakefile\nnoxfile.py\npyproject.toml\nREADME.md\nscripts\nsrc\nuv.lock" }, - "tool_use_id": "toolu_016w2GUiEMuJMCdyhboZcKCP", + "tool_use_id": "toolu_01KqXbQPydsnzaDefy4Znei6", "transcript_path": "" }, "subtype": "hook_callback", - "tool_use_id": "toolu_016w2GUiEMuJMCdyhboZcKCP" + "tool_use_id": "toolu_01KqXbQPydsnzaDefy4Znei6" }, - "request_id": "319ee805-018b-40a5-b817-f44ce39f67db", + "request_id": "5ffe1022-3e20-42d7-923b-fe0047582810", "type": "control_request" } }, @@ -402,7 +404,7 @@ "kind": "json", "value": { "response": { - "request_id": "319ee805-018b-40a5-b817-f44ce39f67db", + "request_id": "5ffe1022-3e20-42d7-923b-fe0047582810", "response": {}, "subtype": "success" }, @@ -416,26 +418,26 @@ "message": { "content": [ { - "content": "\ntotal 2784\ndrwxr-xr-x@ 5 abhijeetprasad staff 160 Apr 17 12:10 __pycache__\ndrwxr-xr-x@ 22 abhijeetprasad staff 704 Apr 17 10:40 .\ndrwxr-xr-x@ 38 abhijeetprasad staff 1216 Apr 16 18:57 ..\n-rw-r--r--@ 1 abhijeetprasad staff 6148 Apr 16 11:40 .DS_Store\n-rw-r--r--@ 1 abhijeetprasad staff 17 Mar 25 13:23 .envrc\n-rw-r--r--@ 1 abhijeetprasad staff 30 Mar 25 13:23 .gitignore\ndrwxr-xr-x@ 7 abhijeetprasad staff 224 Apr 15 18:18 .mypy_cache\ndrwxr-xr-x@ 60 abhijeetprasad staff 1920 Apr 17 12:14 .nox\ndrwxr-xr-x@ 8 abhijeetprasad staff 256 Apr 15 17:31 .venv\n-rw-r--r--@ 1 abhijeetprasad staff 46 Apr 14 11:50 AGENTS.md\ndrwxr-xr-x@ 8 abhijeetprasad staff 256 Apr 14 11:50 benchmarks\ndrwxr-xr-x@ 4 abhijeetprasad staff 128 Apr 15 18:44 build\nlrwxr-xr-x 1 abhijeetprasad staff 9 Apr 14 11:50 CLAUDE.md -> AGENTS.md\ndrwxr-xr-x@ 5 abhijeetprasad staff 160 Apr 15 18:37 dist\ndrwxr-xr-x@ 16 abhijeetprasad staff 512 Apr 14 11:50 examples\n-rw-r--r-- 1 abhijeetprasad staff 2815 Apr 15 19:00 Makefile\n-rw-r--r-- 1 abhijeetprasad staff 22927 Apr 17 10:40 noxfile.py\n-rw-r--r--@ 1 abhijeetprasad staff 10381 Apr 17 12:10 pyproject.toml\n-rw-r--r--@ 1 abhijeetprasad staff 1754 Mar 25 13:23 README.md\ndrwxr-xr-x@ 12 abhijeetprasad staff 384 Apr 17 10:40 scripts\ndrwxr-xr-x@ 4 abhijeetprasad staff 128 Mar 25 13:41 src\n-rw-r--r-- 1 abhijeetprasad staff 1358709 Apr 17 10:40 uv.lock", + "content": "\n__pycache__\nAGENTS.md\nbenchmarks\nbuild\nCLAUDE.md\ndist\nexamples\nMakefile\nnoxfile.py\npyproject.toml\nREADME.md\nscripts\nsrc\nuv.lock", "is_error": false, - "tool_use_id": "toolu_016w2GUiEMuJMCdyhboZcKCP", + "tool_use_id": "toolu_01KqXbQPydsnzaDefy4Znei6", "type": "tool_result" } ], "role": "user" }, "parent_tool_use_id": null, - "session_id": "3316b244-1496-427a-95ea-f86132304c12", - "timestamp": "2026-04-17T16:15:14.561Z", + "session_id": "2836fbdb-2546-4d0f-a99a-03f36162e4d2", + "timestamp": "2026-04-20T20:39:22.892Z", "tool_use_result": { "interrupted": false, "isImage": false, "noOutputExpected": false, "stderr": "", - "stdout": "\ntotal 2784\ndrwxr-xr-x@ 5 abhijeetprasad staff 160 Apr 17 12:10 __pycache__\ndrwxr-xr-x@ 22 abhijeetprasad staff 704 Apr 17 10:40 .\ndrwxr-xr-x@ 38 abhijeetprasad staff 1216 Apr 16 18:57 ..\n-rw-r--r--@ 1 abhijeetprasad staff 6148 Apr 16 11:40 .DS_Store\n-rw-r--r--@ 1 abhijeetprasad staff 17 Mar 25 13:23 .envrc\n-rw-r--r--@ 1 abhijeetprasad staff 30 Mar 25 13:23 .gitignore\ndrwxr-xr-x@ 7 abhijeetprasad staff 224 Apr 15 18:18 .mypy_cache\ndrwxr-xr-x@ 60 abhijeetprasad staff 1920 Apr 17 12:14 .nox\ndrwxr-xr-x@ 8 abhijeetprasad staff 256 Apr 15 17:31 .venv\n-rw-r--r--@ 1 abhijeetprasad staff 46 Apr 14 11:50 AGENTS.md\ndrwxr-xr-x@ 8 abhijeetprasad staff 256 Apr 14 11:50 benchmarks\ndrwxr-xr-x@ 4 abhijeetprasad staff 128 Apr 15 18:44 build\nlrwxr-xr-x 1 abhijeetprasad staff 9 Apr 14 11:50 CLAUDE.md -> AGENTS.md\ndrwxr-xr-x@ 5 abhijeetprasad staff 160 Apr 15 18:37 dist\ndrwxr-xr-x@ 16 abhijeetprasad staff 512 Apr 14 11:50 examples\n-rw-r--r-- 1 abhijeetprasad staff 2815 Apr 15 19:00 Makefile\n-rw-r--r-- 1 abhijeetprasad staff 22927 Apr 17 10:40 noxfile.py\n-rw-r--r--@ 1 abhijeetprasad staff 10381 Apr 17 12:10 pyproject.toml\n-rw-r--r--@ 1 abhijeetprasad staff 1754 Mar 25 13:23 README.md\ndrwxr-xr-x@ 12 abhijeetprasad staff 384 Apr 17 10:40 scripts\ndrwxr-xr-x@ 4 abhijeetprasad staff 128 Mar 25 13:41 src\n-rw-r--r-- 1 abhijeetprasad staff 1358709 Apr 17 10:40 uv.lock" + "stdout": "\n__pycache__\nAGENTS.md\nbenchmarks\nbuild\nCLAUDE.md\ndist\nexamples\nMakefile\nnoxfile.py\npyproject.toml\nREADME.md\nscripts\nsrc\nuv.lock" }, "type": "user", - "uuid": "5edb2526-6372-4ab2-8309-8e96bc045434" + "uuid": "37ab9845-24c6-4a84-a4fd-d9044e4bb2e6" } }, { @@ -445,12 +447,12 @@ "content": [ { "signature": "", - "thinking": "The current directory is ` I don't see `trip_notes.md` in this directory. Let me check if it exists in the parent directory or elsewhere.", + "thinking": "I see we're in the ` directory, which is the Python SDK directory. I don't see a `trip_notes.md` file here. Let me check the parent directory and root directory for the file.", "type": "thinking" } ], "context_management": null, - "id": "msg_01XC49BiAKBrtDpY8dgv4w9M", + "id": "msg_019jm7u8NoeYpNXQGRYAdAzr", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -460,20 +462,20 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 979 + "ephemeral_5m_input_tokens": 6122 }, - "cache_creation_input_tokens": 979, - "cache_read_input_tokens": 41497, + "cache_creation_input_tokens": 6122, + "cache_read_input_tokens": 35767, "inference_geo": "not_available", "input_tokens": 8, - "output_tokens": 2, + "output_tokens": 1, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "3316b244-1496-427a-95ea-f86132304c12", + "session_id": "2836fbdb-2546-4d0f-a99a-03f36162e4d2", "type": "assistant", - "uuid": "5dc52169-0c7f-4dc2-8b6c-8127f7686d05" + "uuid": "3234c3ae-fed8-4423-8ec1-c10ab6a1efd4" } }, { @@ -485,17 +487,17 @@ "caller": { "type": "direct" }, - "id": "toolu_015gMYpoWRoYRQGr1PzfNqf3", + "id": "toolu_01GpYozsDyFbsA4hCvRSEwEo", "input": { - "command": "find -name \"trip_notes.md\" 2>/dev/null", - "description": "Search for trip_notes.md file" + "command": "ls -la | grep trip_notes", + "description": "Search for trip_notes.md in workspace directory" }, "name": "Bash", "type": "tool_use" } ], "context_management": null, - "id": "msg_01XC49BiAKBrtDpY8dgv4w9M", + "id": "msg_019jm7u8NoeYpNXQGRYAdAzr", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -505,20 +507,20 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 979 + "ephemeral_5m_input_tokens": 6122 }, - "cache_creation_input_tokens": 979, - "cache_read_input_tokens": 41497, + "cache_creation_input_tokens": 6122, + "cache_read_input_tokens": 35767, "inference_geo": "not_available", "input_tokens": 8, - "output_tokens": 2, + "output_tokens": 1, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "3316b244-1496-427a-95ea-f86132304c12", + "session_id": "2836fbdb-2546-4d0f-a99a-03f36162e4d2", "type": "assistant", - "uuid": "b19499a3-e3a8-4ac0-91af-cb722cc55b8a" + "uuid": "feea2cfd-6099-4bb4-9e3c-2eb20552a009" } }, { @@ -530,19 +532,19 @@ "cwd": "", "hook_event_name": "PreToolUse", "permission_mode": "bypassPermissions", - "session_id": "3316b244-1496-427a-95ea-f86132304c12", + "session_id": "2836fbdb-2546-4d0f-a99a-03f36162e4d2", "tool_input": { - "command": "find -name \"trip_notes.md\" 2>/dev/null", - "description": "Search for trip_notes.md file" + "command": "ls -la | grep trip_notes", + "description": "Search for trip_notes.md in workspace directory" }, "tool_name": "Bash", - "tool_use_id": "toolu_015gMYpoWRoYRQGr1PzfNqf3", + "tool_use_id": "toolu_01GpYozsDyFbsA4hCvRSEwEo", "transcript_path": "" }, "subtype": "hook_callback", - "tool_use_id": "toolu_015gMYpoWRoYRQGr1PzfNqf3" + "tool_use_id": "toolu_01GpYozsDyFbsA4hCvRSEwEo" }, - "request_id": "dbf8fb69-6f8d-400e-9397-3bae452b6c13", + "request_id": "6691c0c7-abbf-4896-b9cc-6a405b656cf6", "type": "control_request" } }, @@ -552,7 +554,7 @@ "kind": "json", "value": { "response": { - "request_id": "dbf8fb69-6f8d-400e-9397-3bae452b6c13", + "request_id": "6691c0c7-abbf-4896-b9cc-6a405b656cf6", "response": {}, "subtype": "success" }, @@ -569,26 +571,27 @@ "cwd": "", "hook_event_name": "PostToolUse", "permission_mode": "bypassPermissions", - "session_id": "3316b244-1496-427a-95ea-f86132304c12", + "session_id": "2836fbdb-2546-4d0f-a99a-03f36162e4d2", "tool_input": { - "command": "find -name \"trip_notes.md\" 2>/dev/null", - "description": "Search for trip_notes.md file" + "command": "ls -la | grep trip_notes", + "description": "Search for trip_notes.md in workspace directory" }, "tool_name": "Bash", "tool_response": { "interrupted": false, "isImage": false, "noOutputExpected": false, + "returnCodeInterpretation": "No matches found", "stderr": "", "stdout": "" }, - "tool_use_id": "toolu_015gMYpoWRoYRQGr1PzfNqf3", + "tool_use_id": "toolu_01GpYozsDyFbsA4hCvRSEwEo", "transcript_path": "" }, "subtype": "hook_callback", - "tool_use_id": "toolu_015gMYpoWRoYRQGr1PzfNqf3" + "tool_use_id": "toolu_01GpYozsDyFbsA4hCvRSEwEo" }, - "request_id": "85b5061c-38f1-444a-848d-a1949072a9d1", + "request_id": "20f6d69b-6a50-4352-8fab-0d98c234943c", "type": "control_request" } }, @@ -598,7 +601,7 @@ "kind": "json", "value": { "response": { - "request_id": "85b5061c-38f1-444a-848d-a1949072a9d1", + "request_id": "20f6d69b-6a50-4352-8fab-0d98c234943c", "response": {}, "subtype": "success" }, @@ -606,33 +609,6 @@ } } }, - { - "op": "read", - "payload": { - "description": "Search for trip_notes.md file", - "session_id": "3316b244-1496-427a-95ea-f86132304c12", - "subtype": "task_started", - "task_id": "b1wx048yy", - "task_type": "local_bash", - "tool_use_id": "toolu_015gMYpoWRoYRQGr1PzfNqf3", - "type": "system", - "uuid": "ed642ebc-9bf2-4435-9726-d67218d66b46" - } - }, - { - "op": "read", - "payload": { - "output_file": "", - "session_id": "3316b244-1496-427a-95ea-f86132304c12", - "status": "completed", - "subtype": "task_notification", - "summary": "Search for trip_notes.md file", - "task_id": "b1wx048yy", - "tool_use_id": "toolu_015gMYpoWRoYRQGr1PzfNqf3", - "type": "system", - "uuid": "13a78244-df97-4662-b832-634c70bffeca" - } - }, { "op": "read", "payload": { @@ -641,24 +617,25 @@ { "content": "(Bash completed with no output)", "is_error": false, - "tool_use_id": "toolu_015gMYpoWRoYRQGr1PzfNqf3", + "tool_use_id": "toolu_01GpYozsDyFbsA4hCvRSEwEo", "type": "tool_result" } ], "role": "user" }, "parent_tool_use_id": null, - "session_id": "3316b244-1496-427a-95ea-f86132304c12", - "timestamp": "2026-04-17T16:15:48.759Z", + "session_id": "2836fbdb-2546-4d0f-a99a-03f36162e4d2", + "timestamp": "2026-04-20T20:39:24.888Z", "tool_use_result": { "interrupted": false, "isImage": false, "noOutputExpected": false, + "returnCodeInterpretation": "No matches found", "stderr": "", "stdout": "" }, "type": "user", - "uuid": "3444b96c-1433-42c0-9334-6622aeddaf03" + "uuid": "609cd664-414b-4fe8-ade6-a3d0ba13ac51" } }, { @@ -668,12 +645,12 @@ "content": [ { "signature": "", - "thinking": "The file doesn't seem to exist in the workspace. Let me check if it's in the home directory or another common location.", + "thinking": "The file doesn't seem to be in the workspace directory. Let me check the home directory and other common locations.", "type": "thinking" } ], "context_management": null, - "id": "msg_01FgbaXyJEBXsHeQ5kCBw3fE", + "id": "msg_01FPGcR3GnKQ2P8J4PBrJuNN", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -683,20 +660,20 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 189 + "ephemeral_5m_input_tokens": 195 }, - "cache_creation_input_tokens": 189, - "cache_read_input_tokens": 42476, + "cache_creation_input_tokens": 195, + "cache_read_input_tokens": 41889, "inference_geo": "not_available", "input_tokens": 8, - "output_tokens": 1, + "output_tokens": 2, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "3316b244-1496-427a-95ea-f86132304c12", + "session_id": "2836fbdb-2546-4d0f-a99a-03f36162e4d2", "type": "assistant", - "uuid": "b8867eaa-c8c6-416d-87a6-f1ba4fae1d02" + "uuid": "ff1072f0-8126-4ace-b3e8-47294fcac28f" } }, { @@ -708,17 +685,17 @@ "caller": { "type": "direct" }, - "id": "toolu_01MY35jrkaEKSgNsr9vagL9w", + "id": "toolu_011ZioYMFxh6HpunCS9urQzh", "input": { - "command": "find ~ -name \"trip_notes.md\" 2>/dev/null | head -20", - "description": "Search home directory for trip_notes.md" + "command": "find -name \"trip_notes.md\" 2>/dev/null", + "description": "Search for trip_notes.md across the user's home directory" }, "name": "Bash", "type": "tool_use" } ], "context_management": null, - "id": "msg_01FgbaXyJEBXsHeQ5kCBw3fE", + "id": "msg_01FPGcR3GnKQ2P8J4PBrJuNN", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -728,20 +705,20 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 189 + "ephemeral_5m_input_tokens": 195 }, - "cache_creation_input_tokens": 189, - "cache_read_input_tokens": 42476, + "cache_creation_input_tokens": 195, + "cache_read_input_tokens": 41889, "inference_geo": "not_available", "input_tokens": 8, - "output_tokens": 1, + "output_tokens": 2, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "3316b244-1496-427a-95ea-f86132304c12", + "session_id": "2836fbdb-2546-4d0f-a99a-03f36162e4d2", "type": "assistant", - "uuid": "6148bd13-02df-42f8-8ce6-28a325f60b63" + "uuid": "20ede13c-dff0-4ace-a8b7-c2b87b51b5aa" } }, { @@ -753,19 +730,19 @@ "cwd": "", "hook_event_name": "PreToolUse", "permission_mode": "bypassPermissions", - "session_id": "3316b244-1496-427a-95ea-f86132304c12", + "session_id": "2836fbdb-2546-4d0f-a99a-03f36162e4d2", "tool_input": { - "command": "find ~ -name \"trip_notes.md\" 2>/dev/null | head -20", - "description": "Search home directory for trip_notes.md" + "command": "find -name \"trip_notes.md\" 2>/dev/null", + "description": "Search for trip_notes.md across the user's home directory" }, "tool_name": "Bash", - "tool_use_id": "toolu_01MY35jrkaEKSgNsr9vagL9w", + "tool_use_id": "toolu_011ZioYMFxh6HpunCS9urQzh", "transcript_path": "" }, "subtype": "hook_callback", - "tool_use_id": "toolu_01MY35jrkaEKSgNsr9vagL9w" + "tool_use_id": "toolu_011ZioYMFxh6HpunCS9urQzh" }, - "request_id": "9ecfa6fe-7d5c-4fea-8dc6-26a16b3304ba", + "request_id": "73eccfcc-98aa-47ef-891e-72b72c39bf68", "type": "control_request" } }, @@ -775,7 +752,7 @@ "kind": "json", "value": { "response": { - "request_id": "9ecfa6fe-7d5c-4fea-8dc6-26a16b3304ba", + "request_id": "73eccfcc-98aa-47ef-891e-72b72c39bf68", "response": {}, "subtype": "success" }, @@ -792,26 +769,27 @@ "cwd": "", "hook_event_name": "PostToolUse", "permission_mode": "bypassPermissions", - "session_id": "3316b244-1496-427a-95ea-f86132304c12", + "session_id": "2836fbdb-2546-4d0f-a99a-03f36162e4d2", "tool_input": { - "command": "find ~ -name \"trip_notes.md\" 2>/dev/null | head -20", - "description": "Search home directory for trip_notes.md" + "command": "find -name \"trip_notes.md\" 2>/dev/null", + "description": "Search for trip_notes.md across the user's home directory" }, "tool_name": "Bash", "tool_response": { "interrupted": false, "isImage": false, "noOutputExpected": false, + "returnCodeInterpretation": "Some directories were inaccessible", "stderr": "", "stdout": "" }, - "tool_use_id": "toolu_01MY35jrkaEKSgNsr9vagL9w", + "tool_use_id": "toolu_011ZioYMFxh6HpunCS9urQzh", "transcript_path": "" }, "subtype": "hook_callback", - "tool_use_id": "toolu_01MY35jrkaEKSgNsr9vagL9w" + "tool_use_id": "toolu_011ZioYMFxh6HpunCS9urQzh" }, - "request_id": "8a5d557a-0322-43b1-9ec7-9e5ea9f4c062", + "request_id": "a8be68af-3b0d-4587-94dd-fdde667169ef", "type": "control_request" } }, @@ -821,7 +799,7 @@ "kind": "json", "value": { "response": { - "request_id": "8a5d557a-0322-43b1-9ec7-9e5ea9f4c062", + "request_id": "a8be68af-3b0d-4587-94dd-fdde667169ef", "response": {}, "subtype": "success" }, @@ -832,28 +810,28 @@ { "op": "read", "payload": { - "description": "Search home directory for trip_notes.md", - "session_id": "3316b244-1496-427a-95ea-f86132304c12", + "description": "Search for trip_notes.md across the user's home directory", + "session_id": "2836fbdb-2546-4d0f-a99a-03f36162e4d2", "subtype": "task_started", - "task_id": "b7lzrxspx", + "task_id": "b5o4p2pcc", "task_type": "local_bash", - "tool_use_id": "toolu_01MY35jrkaEKSgNsr9vagL9w", + "tool_use_id": "toolu_011ZioYMFxh6HpunCS9urQzh", "type": "system", - "uuid": "c14aa0c1-cdbf-473f-b22b-cf9a68505b14" + "uuid": "5aea5497-1657-4400-82b8-97a2d623d938" } }, { "op": "read", "payload": { "output_file": "", - "session_id": "3316b244-1496-427a-95ea-f86132304c12", - "status": "completed", + "session_id": "2836fbdb-2546-4d0f-a99a-03f36162e4d2", + "status": "failed", "subtype": "task_notification", - "summary": "Search home directory for trip_notes.md", - "task_id": "b7lzrxspx", - "tool_use_id": "toolu_01MY35jrkaEKSgNsr9vagL9w", + "summary": "Search for trip_notes.md across the user's home directory", + "task_id": "b5o4p2pcc", + "tool_use_id": "toolu_011ZioYMFxh6HpunCS9urQzh", "type": "system", - "uuid": "b2ea8772-fdf5-4a6a-9ea8-4f100f93f475" + "uuid": "98b311b0-fc1b-4046-9d08-02b4914e0901" } }, { @@ -864,24 +842,25 @@ { "content": "", "is_error": false, - "tool_use_id": "toolu_01MY35jrkaEKSgNsr9vagL9w", + "tool_use_id": "toolu_011ZioYMFxh6HpunCS9urQzh", "type": "tool_result" } ], "role": "user" }, "parent_tool_use_id": null, - "session_id": "3316b244-1496-427a-95ea-f86132304c12", - "timestamp": "2026-04-17T16:17:34.823Z", + "session_id": "2836fbdb-2546-4d0f-a99a-03f36162e4d2", + "timestamp": "2026-04-20T20:41:15.597Z", "tool_use_result": { "interrupted": false, "isImage": false, "noOutputExpected": false, + "returnCodeInterpretation": "Some directories were inaccessible", "stderr": "", "stdout": "" }, "type": "user", - "uuid": "46420514-a75d-4ff2-b659-5d51e3045bb7" + "uuid": "9ed2f547-d1db-461c-9674-0ac0738df48c" } }, { @@ -891,12 +870,12 @@ "content": [ { "signature": "", - "thinking": "Found it! The file is at ` Let me read it now.", + "thinking": "Great! I found the file. Now let me read it to get the trip information.", "type": "thinking" } ], "context_management": null, - "id": "msg_01YYWpimTSQnUrn3iKDRQekJ", + "id": "msg_01HCLukMVJKGT9J32ehAeGjZ", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -906,20 +885,20 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 181 + "ephemeral_5m_input_tokens": 186 }, - "cache_creation_input_tokens": 181, - "cache_read_input_tokens": 42665, + "cache_creation_input_tokens": 186, + "cache_read_input_tokens": 42084, "inference_geo": "not_available", "input_tokens": 8, - "output_tokens": 1, + "output_tokens": 6, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "3316b244-1496-427a-95ea-f86132304c12", + "session_id": "2836fbdb-2546-4d0f-a99a-03f36162e4d2", "type": "assistant", - "uuid": "b1604de8-1929-4666-accb-e312f1c60537" + "uuid": "bf89a215-61d4-4560-81d2-daa640ad6d00" } }, { @@ -931,7 +910,7 @@ "caller": { "type": "direct" }, - "id": "toolu_01C6gtu1raZYSSW8yojvEmr1", + "id": "toolu_01ESF5JVw3cyPNMcCjUgixbs", "input": { "file_path": "" }, @@ -940,7 +919,7 @@ } ], "context_management": null, - "id": "msg_01YYWpimTSQnUrn3iKDRQekJ", + "id": "msg_01HCLukMVJKGT9J32ehAeGjZ", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -950,20 +929,20 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 181 + "ephemeral_5m_input_tokens": 186 }, - "cache_creation_input_tokens": 181, - "cache_read_input_tokens": 42665, + "cache_creation_input_tokens": 186, + "cache_read_input_tokens": 42084, "inference_geo": "not_available", "input_tokens": 8, - "output_tokens": 1, + "output_tokens": 6, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "3316b244-1496-427a-95ea-f86132304c12", + "session_id": "2836fbdb-2546-4d0f-a99a-03f36162e4d2", "type": "assistant", - "uuid": "19feabb0-84a5-48dd-97fc-a28c144eecdd" + "uuid": "e72b4475-1061-4acf-a6ab-0e99b249d573" } }, { @@ -975,18 +954,18 @@ "cwd": "", "hook_event_name": "PreToolUse", "permission_mode": "bypassPermissions", - "session_id": "3316b244-1496-427a-95ea-f86132304c12", + "session_id": "2836fbdb-2546-4d0f-a99a-03f36162e4d2", "tool_input": { "file_path": "" }, "tool_name": "Read", - "tool_use_id": "toolu_01C6gtu1raZYSSW8yojvEmr1", + "tool_use_id": "toolu_01ESF5JVw3cyPNMcCjUgixbs", "transcript_path": "" }, "subtype": "hook_callback", - "tool_use_id": "toolu_01C6gtu1raZYSSW8yojvEmr1" + "tool_use_id": "toolu_01ESF5JVw3cyPNMcCjUgixbs" }, - "request_id": "5c00935b-cae7-4f95-82d6-f2152047a289", + "request_id": "2dcbc2eb-b044-43ef-9149-9e2afdb6905e", "type": "control_request" } }, @@ -996,7 +975,7 @@ "kind": "json", "value": { "response": { - "request_id": "5c00935b-cae7-4f95-82d6-f2152047a289", + "request_id": "2dcbc2eb-b044-43ef-9149-9e2afdb6905e", "response": {}, "subtype": "success" }, @@ -1013,7 +992,7 @@ "cwd": "", "hook_event_name": "PostToolUse", "permission_mode": "bypassPermissions", - "session_id": "3316b244-1496-427a-95ea-f86132304c12", + "session_id": "2836fbdb-2546-4d0f-a99a-03f36162e4d2", "tool_input": { "file_path": "" }, @@ -1028,13 +1007,13 @@ }, "type": "text" }, - "tool_use_id": "toolu_01C6gtu1raZYSSW8yojvEmr1", + "tool_use_id": "toolu_01ESF5JVw3cyPNMcCjUgixbs", "transcript_path": "" }, "subtype": "hook_callback", - "tool_use_id": "toolu_01C6gtu1raZYSSW8yojvEmr1" + "tool_use_id": "toolu_01ESF5JVw3cyPNMcCjUgixbs" }, - "request_id": "b8595d0d-256f-4511-b7dc-a578ff23b77f", + "request_id": "0c3e84e1-95a8-42ad-a793-c43244049094", "type": "control_request" } }, @@ -1044,7 +1023,7 @@ "kind": "json", "value": { "response": { - "request_id": "b8595d0d-256f-4511-b7dc-a578ff23b77f", + "request_id": "0c3e84e1-95a8-42ad-a793-c43244049094", "response": {}, "subtype": "success" }, @@ -1059,15 +1038,15 @@ "content": [ { "content": "1\t# Tokyo Trip Notes\n2\t\n3\t- Budget: 1500 USD\n4\t- Hotel: Park Hotel Tokyo\n5\t- Transit plan: TBD\n6\t- Reminder: buy JR Pass\n7\t\n8\tSummary: still rough, needs cleanup.\n9\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n", - "tool_use_id": "toolu_01C6gtu1raZYSSW8yojvEmr1", + "tool_use_id": "toolu_01ESF5JVw3cyPNMcCjUgixbs", "type": "tool_result" } ], "role": "user" }, "parent_tool_use_id": null, - "session_id": "3316b244-1496-427a-95ea-f86132304c12", - "timestamp": "2026-04-17T16:17:36.346Z", + "session_id": "2836fbdb-2546-4d0f-a99a-03f36162e4d2", + "timestamp": "2026-04-20T20:41:16.830Z", "tool_use_result": { "file": { "content": "# Tokyo Trip Notes\n\n- Budget: 1500 USD\n- Hotel: Park Hotel Tokyo\n- Transit plan: TBD\n- Reminder: buy JR Pass\n\nSummary: still rough, needs cleanup.\n", @@ -1079,7 +1058,7 @@ "type": "text" }, "type": "user", - "uuid": "69b568d3-39b1-4c1c-87bc-e9f7921bf767" + "uuid": "92029542-53ab-4869-b7c3-780a247760e3" } }, { @@ -1089,12 +1068,12 @@ "content": [ { "signature": "", - "thinking": "Perfect! I found and read the trip_notes.md file. Now I can summarize the budget and hotel status for the user.", + "thinking": "Perfect! Now I have the information from the trip_notes.md file. Let me summarize the budget and hotel status.", "type": "thinking" } ], "context_management": null, - "id": "msg_01KETzzW5WGZcUfSLBPVoNyW", + "id": "msg_017gP7bqeM12QpxNd7rcPLNH", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -1104,20 +1083,20 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 304 + "ephemeral_5m_input_tokens": 462 }, - "cache_creation_input_tokens": 304, - "cache_read_input_tokens": 42846, + "cache_creation_input_tokens": 462, + "cache_read_input_tokens": 42084, "inference_geo": "not_available", "input_tokens": 8, - "output_tokens": 5, + "output_tokens": 1, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "3316b244-1496-427a-95ea-f86132304c12", + "session_id": "2836fbdb-2546-4d0f-a99a-03f36162e4d2", "type": "assistant", - "uuid": "6e805f4b-9a84-4e03-900a-88ac36bdfe6b" + "uuid": "043bbfa4-9b9a-4129-b857-e2dc66613d7f" } }, { @@ -1126,12 +1105,12 @@ "message": { "content": [ { - "text": "Perfect! I found the file. Here's a summary of the current budget and hotel status from the trip notes:\n\n## Trip Budget & Hotel Status\n\n**Budget:** $1,500 USD\n\n**Hotel:** Park Hotel Tokyo\n\n**Current Status:** The notes indicate the trip planning is still in rough shape and needs cleanup. Additional items noted include:\n- Transit plan is still to be determined (TBD)\n- There's a reminder to purchase a JR Pass\n\nThe file is located at: `", + "text": "## Summary\n\nHere's the current status of the Tokyo trip:\n\n**Budget:** $1,500 USD\n\n**Hotel:** Park Hotel Tokyo\n\nThe trip notes indicate that planning is still rough and needs cleanup. There are also reminders to:\n- Finalize the transit plan (currently marked as TBD)\n- Buy a JR Pass (Japan Railways Pass)", "type": "text" } ], "context_management": null, - "id": "msg_01KETzzW5WGZcUfSLBPVoNyW", + "id": "msg_017gP7bqeM12QpxNd7rcPLNH", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -1141,20 +1120,20 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 304 + "ephemeral_5m_input_tokens": 462 }, - "cache_creation_input_tokens": 304, - "cache_read_input_tokens": 42846, + "cache_creation_input_tokens": 462, + "cache_read_input_tokens": 42084, "inference_geo": "not_available", "input_tokens": 8, - "output_tokens": 5, + "output_tokens": 1, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "3316b244-1496-427a-95ea-f86132304c12", + "session_id": "2836fbdb-2546-4d0f-a99a-03f36162e4d2", "type": "assistant", - "uuid": "b06f2081-72d6-4a26-a7c3-049fc8880554" + "uuid": "989566dd-49cc-448d-b19b-da9b5b18db25" } }, { @@ -1165,16 +1144,16 @@ "input": { "cwd": "", "hook_event_name": "Stop", - "last_assistant_message": "Perfect! I found the file. Here's a summary of the current budget and hotel status from the trip notes:\n\n## Trip Budget & Hotel Status\n\n**Budget:** $1,500 USD\n\n**Hotel:** Park Hotel Tokyo\n\n**Current Status:** The notes indicate the trip planning is still in rough shape and needs cleanup. Additional items noted include:\n- Transit plan is still to be determined (TBD)\n- There's a reminder to purchase a JR Pass\n\nThe file is located at: `", + "last_assistant_message": "## Summary\n\nHere's the current status of the Tokyo trip:\n\n**Budget:** $1,500 USD\n\n**Hotel:** Park Hotel Tokyo\n\nThe trip notes indicate that planning is still rough and needs cleanup. There are also reminders to:\n- Finalize the transit plan (currently marked as TBD)\n- Buy a JR Pass (Japan Railways Pass)", "permission_mode": "bypassPermissions", - "session_id": "3316b244-1496-427a-95ea-f86132304c12", + "session_id": "2836fbdb-2546-4d0f-a99a-03f36162e4d2", "stop_hook_active": false, "transcript_path": "" }, "subtype": "hook_callback", - "tool_use_id": "bb516579-8a53-4312-84c2-bed92aa006e1" + "tool_use_id": "d5aea4c3-6d7b-4f98-bbd1-6a442b8eb5de" }, - "request_id": "c970de2c-336b-43d9-8678-dbc7ebf7e7cf", + "request_id": "5c069ac7-cd81-4e22-a184-c5eb7cf37aaa", "type": "control_request" } }, @@ -1184,7 +1163,7 @@ "kind": "json", "value": { "response": { - "request_id": "c970de2c-336b-43d9-8678-dbc7ebf7e7cf", + "request_id": "5c069ac7-cd81-4e22-a184-c5eb7cf37aaa", "response": {}, "subtype": "success" }, @@ -1196,42 +1175,54 @@ "op": "read", "payload": { "api_error_status": null, - "duration_api_ms": 12635, - "duration_ms": 146116, + "duration_api_ms": 9267, + "duration_ms": 117724, "fast_mode_state": "off", "is_error": false, "modelUsage": { "claude-haiku-4-5-20251001": { - "cacheCreationInputTokens": 7427, - "cacheReadInputTokens": 205207, + "cacheCreationInputTokens": 12861, + "cacheReadInputTokens": 197591, "contextWindow": 200000, - "costUSD": 0.03405045, + "costUSD": 0.039641350000000006, "inputTokens": 411, "maxOutputTokens": 32000, - "outputTokens": 767, + "outputTokens": 679, "webSearchRequests": 0 } }, "num_turns": 5, "permission_denials": [], - "result": "Perfect! I found the file. Here's a summary of the current budget and hotel status from the trip notes:\n\n## Trip Budget & Hotel Status\n\n**Budget:** $1,500 USD\n\n**Hotel:** Park Hotel Tokyo\n\n**Current Status:** The notes indicate the trip planning is still in rough shape and needs cleanup. Additional items noted include:\n- Transit plan is still to be determined (TBD)\n- There's a reminder to purchase a JR Pass\n\nThe file is located at: `", - "session_id": "3316b244-1496-427a-95ea-f86132304c12", + "result": "## Summary\n\nHere's the current status of the Tokyo trip:\n\n**Budget:** $1,500 USD\n\n**Hotel:** Park Hotel Tokyo\n\nThe trip notes indicate that planning is still rough and needs cleanup. There are also reminders to:\n- Finalize the transit plan (currently marked as TBD)\n- Buy a JR Pass (Japan Railways Pass)", + "session_id": "2836fbdb-2546-4d0f-a99a-03f36162e4d2", "stop_reason": "end_turn", "subtype": "success", "terminal_reason": "completed", - "total_cost_usd": 0.03405045, + "total_cost_usd": 0.039641350000000006, "type": "result", "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 7427 + "ephemeral_5m_input_tokens": 12861 }, - "cache_creation_input_tokens": 7427, - "cache_read_input_tokens": 205207, + "cache_creation_input_tokens": 12861, + "cache_read_input_tokens": 197591, "inference_geo": "", "input_tokens": 42, - "iterations": [], - "output_tokens": 751, + "iterations": [ + { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 462 + }, + "cache_creation_input_tokens": 462, + "cache_read_input_tokens": 42084, + "input_tokens": 8, + "output_tokens": 116, + "type": "message" + } + ], + "output_tokens": 663, "server_tool_use": { "web_fetch_requests": 0, "web_search_requests": 0 @@ -1239,9 +1230,9 @@ "service_tier": "standard", "speed": "standard" }, - "uuid": "2088d539-8e41-4348-b818-987761b6b907" + "uuid": "6f80dc4d-16ee-47d5-b591-6d5f91f8b7ac" } } ], - "sdk_version": "0.1.61" + "sdk_version": "0.1.63" } diff --git a/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_interleaved_subagent_tool_output_preserved.json b/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_interleaved_subagent_tool_output_preserved.json index 4e222477..ecce455c 100644 --- a/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_interleaved_subagent_tool_output_preserved.json +++ b/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_interleaved_subagent_tool_output_preserved.json @@ -10,7 +10,7 @@ "hooks": null, "subtype": "initialize" }, - "request_id": "req_1_54affa20", + "request_id": "req_1_1362691e", "type": "control_request" } } @@ -19,7 +19,7 @@ "op": "read", "payload": { "response": { - "request_id": "req_1_54affa20", + "request_id": "req_1_1362691e", "response": { "account": { "apiKeySource": "ANTHROPIC_API_KEY", @@ -61,7 +61,7 @@ "statusline-setup" ], "apiKeySource": "ANTHROPIC_API_KEY", - "claude_code_version": "2.1.112", + "claude_code_version": "2.1.114", "cwd": "", "fast_mode_state": "off", "mcp_servers": [], @@ -78,13 +78,13 @@ "source": "rust-analyzer-lsp@claude-plugins-official" } ], - "session_id": "def6cea8-925c-4098-9ace-9f5814a01458", + "session_id": "e080ddff-18c0-4a50-b47f-b9b2f84c20f8", "skills": [ "update-config", "debug", "simplify", "batch", - "less-permission-prompts", + "fewer-permission-prompts", "loop", "schedule", "claude-api", @@ -96,7 +96,7 @@ "debug", "simplify", "batch", - "less-permission-prompts", + "fewer-permission-prompts", "loop", "schedule", "claude-api", @@ -144,7 +144,7 @@ "Write" ], "type": "system", - "uuid": "953d07e1-2244-476d-808b-7882a677b432" + "uuid": "8274e2a4-cc58-4df6-a8c5-36f448888d52" } }, { @@ -154,12 +154,12 @@ "content": [ { "signature": "", - "thinking": "The user is asking me to:\n1. Launch two general-purpose subagents (using the Agent tool)\n2. Both should be independent tasks that can run in parallel\n3. First agent: run `echo alpha-bash-output` and then read from alpha.txt, returning just the file contents\n4. Second agent: run `echo beta-bash-output` and then read from beta.txt, returning just the file contents\n5. After both finish, reply with exactly two lines: alpha contents then beta contents\n6. Don't ask clarifying questions, don't answer directly without using both subagents\n\nThis is a good use case for running multiple agents in parallel since they're independent. The API supports this - I can make multiple Agent tool calls in a single message block.\n\nLet me craft the prompts for each agent carefully:\n- Each agent should use Bash to run the echo command\n- Then use the Read tool to read the respective file\n- Return only the file contents (not the echo output)\n\nLet me make both Agent calls in parallel.", + "thinking": "The user wants me to launch two independent subagents in parallel, each performing their own tasks:\n\n1. First agent: Run `echo alpha-bash-output` and then read alpha.txt\n2. Second agent: Run `echo beta-bash-output` and then read beta.txt\n\nThe user specifically says \"Start both Agent tool calls before waiting on either result if the tool API allows it\" - so I should make both calls in a single function_calls block.\n\nSince these are independent tasks that can run in parallel, I can make both Agent calls at the same time. The default agent type is \"general-purpose\" which is what the user wants.\n\nLet me construct the prompts for each agent:\n\nAgent 1: Should run `echo alpha-bash-output` then read `alpha.txt`, and return only the file contents\nAgent 2: Should run `echo beta-bash-output` then read `beta.txt`, and return only the file contents\n\nThen I need to wait for both to complete and output exactly two lines in order: alpha then beta.", "type": "thinking" } ], "context_management": null, - "id": "msg_01KLgZrpgpjn1m2bD4fhuG8V", + "id": "msg_01KBa9fRDUAfmVZ1Fb4XZz6h", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -172,17 +172,17 @@ "ephemeral_5m_input_tokens": 0 }, "cache_creation_input_tokens": 0, - "cache_read_input_tokens": 23325, + "cache_read_input_tokens": 23369, "inference_geo": "not_available", "input_tokens": 10, - "output_tokens": 7, + "output_tokens": 3, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "def6cea8-925c-4098-9ace-9f5814a01458", + "session_id": "e080ddff-18c0-4a50-b47f-b9b2f84c20f8", "type": "assistant", - "uuid": "acc0bda1-d3c6-4f0e-bcdc-474250ebebf7" + "uuid": "84f9cd2b-78be-42a2-9180-6eb57c4a6fde" } }, { @@ -194,18 +194,17 @@ "caller": { "type": "direct" }, - "id": "toolu_016YKqSeabuKrCff6WFaiXfj", + "id": "toolu_01K6xggSxzt8gSB59PdXHBoH", "input": { - "description": "Run alpha bash command and read alpha.txt", - "prompt": "Run `echo alpha-bash-output` using Bash, then use the Read tool to read the contents of alpha.txt. After both tool calls complete, return only the file contents from alpha.txt - nothing else.", - "subagent_type": "general-purpose" + "description": "Alpha task - bash echo and file read", + "prompt": "Run the bash command `echo alpha-bash-output` and then use the Read tool to read the contents of alpha.txt. Return only the file contents from alpha.txt after both operations complete." }, "name": "Agent", "type": "tool_use" } ], "context_management": null, - "id": "msg_01KLgZrpgpjn1m2bD4fhuG8V", + "id": "msg_01KBa9fRDUAfmVZ1Fb4XZz6h", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -218,31 +217,31 @@ "ephemeral_5m_input_tokens": 0 }, "cache_creation_input_tokens": 0, - "cache_read_input_tokens": 23325, + "cache_read_input_tokens": 23369, "inference_geo": "not_available", "input_tokens": 10, - "output_tokens": 7, + "output_tokens": 3, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "def6cea8-925c-4098-9ace-9f5814a01458", + "session_id": "e080ddff-18c0-4a50-b47f-b9b2f84c20f8", "type": "assistant", - "uuid": "0c42007f-ec5e-417c-814a-9150096a352e" + "uuid": "31a6c223-2bdc-470d-92bd-948c18e48645" } }, { "op": "read", "payload": { - "description": "Run alpha bash command and read alpha.txt", - "prompt": "Run `echo alpha-bash-output` using Bash, then use the Read tool to read the contents of alpha.txt. After both tool calls complete, return only the file contents from alpha.txt - nothing else.", - "session_id": "def6cea8-925c-4098-9ace-9f5814a01458", + "description": "Alpha task - bash echo and file read", + "prompt": "Run the bash command `echo alpha-bash-output` and then use the Read tool to read the contents of alpha.txt. Return only the file contents from alpha.txt after both operations complete.", + "session_id": "e080ddff-18c0-4a50-b47f-b9b2f84c20f8", "subtype": "task_started", - "task_id": "a97d9688370965216", + "task_id": "a1f7ba70ef0f65d4b", "task_type": "local_agent", - "tool_use_id": "toolu_016YKqSeabuKrCff6WFaiXfj", + "tool_use_id": "toolu_01K6xggSxzt8gSB59PdXHBoH", "type": "system", - "uuid": "6fb5907f-16fb-4fc1-9442-da791373c83f" + "uuid": "cb7df4cf-b081-4098-9558-3ceeb3ea3ab3" } }, { @@ -251,17 +250,17 @@ "message": { "content": [ { - "text": "Run `echo alpha-bash-output` using Bash, then use the Read tool to read the contents of alpha.txt. After both tool calls complete, return only the file contents from alpha.txt - nothing else.", + "text": "Run the bash command `echo alpha-bash-output` and then use the Read tool to read the contents of alpha.txt. Return only the file contents from alpha.txt after both operations complete.", "type": "text" } ], "role": "user" }, - "parent_tool_use_id": "toolu_016YKqSeabuKrCff6WFaiXfj", - "session_id": "def6cea8-925c-4098-9ace-9f5814a01458", - "timestamp": "2026-04-17T16:18:36.679Z", + "parent_tool_use_id": "toolu_01K6xggSxzt8gSB59PdXHBoH", + "session_id": "e080ddff-18c0-4a50-b47f-b9b2f84c20f8", + "timestamp": "2026-04-20T20:42:20.101Z", "type": "user", - "uuid": "5a079c37-162c-4d05-82b5-c4c05b820367" + "uuid": "80d1b611-95b8-4157-bbbe-8d6ca26e2bbb" } }, { @@ -273,18 +272,17 @@ "caller": { "type": "direct" }, - "id": "toolu_01SeYbHZ8FBi3v9EJNHqPGoG", + "id": "toolu_01C2sMkLD5t88DRLHnsMEUTJ", "input": { - "description": "Run beta bash command and read beta.txt", - "prompt": "Run `echo beta-bash-output` using Bash, then use the Read tool to read the contents of beta.txt. After both tool calls complete, return only the file contents from beta.txt - nothing else.", - "subagent_type": "general-purpose" + "description": "Beta task - bash echo and file read", + "prompt": "Run the bash command `echo beta-bash-output` and then use the Read tool to read the contents of beta.txt. Return only the file contents from beta.txt after both operations complete." }, "name": "Agent", "type": "tool_use" } ], "context_management": null, - "id": "msg_01KLgZrpgpjn1m2bD4fhuG8V", + "id": "msg_01KBa9fRDUAfmVZ1Fb4XZz6h", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -297,31 +295,31 @@ "ephemeral_5m_input_tokens": 0 }, "cache_creation_input_tokens": 0, - "cache_read_input_tokens": 23325, + "cache_read_input_tokens": 23369, "inference_geo": "not_available", "input_tokens": 10, - "output_tokens": 7, + "output_tokens": 3, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "def6cea8-925c-4098-9ace-9f5814a01458", + "session_id": "e080ddff-18c0-4a50-b47f-b9b2f84c20f8", "type": "assistant", - "uuid": "3c91a353-f161-4382-b3bc-c18d3289a29b" + "uuid": "132782e0-f8f2-4f2f-8fb2-e0dfe6b9561d" } }, { "op": "read", "payload": { - "description": "Run beta bash command and read beta.txt", - "prompt": "Run `echo beta-bash-output` using Bash, then use the Read tool to read the contents of beta.txt. After both tool calls complete, return only the file contents from beta.txt - nothing else.", - "session_id": "def6cea8-925c-4098-9ace-9f5814a01458", + "description": "Beta task - bash echo and file read", + "prompt": "Run the bash command `echo beta-bash-output` and then use the Read tool to read the contents of beta.txt. Return only the file contents from beta.txt after both operations complete.", + "session_id": "e080ddff-18c0-4a50-b47f-b9b2f84c20f8", "subtype": "task_started", - "task_id": "abfb3d0c6cb757568", + "task_id": "ad34ce431321d9569", "task_type": "local_agent", - "tool_use_id": "toolu_01SeYbHZ8FBi3v9EJNHqPGoG", + "tool_use_id": "toolu_01C2sMkLD5t88DRLHnsMEUTJ", "type": "system", - "uuid": "92b88be5-4dae-4020-8471-2607504797cd" + "uuid": "f16b5fd5-b663-4b23-8e6e-3d72dec4f274" } }, { @@ -330,35 +328,35 @@ "message": { "content": [ { - "text": "Run `echo beta-bash-output` using Bash, then use the Read tool to read the contents of beta.txt. After both tool calls complete, return only the file contents from beta.txt - nothing else.", + "text": "Run the bash command `echo beta-bash-output` and then use the Read tool to read the contents of beta.txt. Return only the file contents from beta.txt after both operations complete.", "type": "text" } ], "role": "user" }, - "parent_tool_use_id": "toolu_01SeYbHZ8FBi3v9EJNHqPGoG", - "session_id": "def6cea8-925c-4098-9ace-9f5814a01458", - "timestamp": "2026-04-17T16:18:36.933Z", + "parent_tool_use_id": "toolu_01C2sMkLD5t88DRLHnsMEUTJ", + "session_id": "e080ddff-18c0-4a50-b47f-b9b2f84c20f8", + "timestamp": "2026-04-20T20:42:20.134Z", "type": "user", - "uuid": "111eafb2-32ee-4d2c-b8c4-4b45f44cb8d1" + "uuid": "1dc730bb-a2f8-4330-b9b9-c970f571afd0" } }, { "op": "read", "payload": { - "description": "Running echo alpha-bash-output", + "description": "Running echo beta-bash-output", "last_tool_name": "Bash", - "session_id": "def6cea8-925c-4098-9ace-9f5814a01458", + "session_id": "e080ddff-18c0-4a50-b47f-b9b2f84c20f8", "subtype": "task_progress", - "task_id": "a97d9688370965216", - "tool_use_id": "toolu_016YKqSeabuKrCff6WFaiXfj", + "task_id": "ad34ce431321d9569", + "tool_use_id": "toolu_01C2sMkLD5t88DRLHnsMEUTJ", "type": "system", "usage": { - "duration_ms": 1213, + "duration_ms": 992, "tool_uses": 1, - "total_tokens": 17504 + "total_tokens": 17545 }, - "uuid": "d16b969a-7830-4533-8dd0-cd0f1fea93c5" + "uuid": "d700b37b-b53c-4405-bb5e-ce654e7d9d04" } }, { @@ -370,16 +368,16 @@ "caller": { "type": "direct" }, - "id": "toolu_01UtSyaTeYZ6gEfy2gmgRp2U", + "id": "toolu_01QBLH8NxEXas6mauWEDXzEy", "input": { - "command": "echo alpha-bash-output" + "command": "echo beta-bash-output" }, "name": "Bash", "type": "tool_use" } ], "context_management": null, - "id": "msg_015FC1XfnpwoWTXuBhqLdaRT", + "id": "msg_014fuRoVjZvD9KyTZPiYwFdN", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -389,20 +387,20 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 1074 + "ephemeral_5m_input_tokens": 1069 }, - "cache_creation_input_tokens": 1074, - "cache_read_input_tokens": 16423, + "cache_creation_input_tokens": 1069, + "cache_read_input_tokens": 16467, "inference_geo": "not_available", "input_tokens": 3, - "output_tokens": 2, + "output_tokens": 3, "service_tier": "standard" } }, - "parent_tool_use_id": "toolu_016YKqSeabuKrCff6WFaiXfj", - "session_id": "def6cea8-925c-4098-9ace-9f5814a01458", + "parent_tool_use_id": "toolu_01C2sMkLD5t88DRLHnsMEUTJ", + "session_id": "e080ddff-18c0-4a50-b47f-b9b2f84c20f8", "type": "assistant", - "uuid": "856ba447-ced4-447c-bfd3-b574ac405f00" + "uuid": "c7c4a226-a0a7-4fa8-852c-d2c5209b00d3" } }, { @@ -411,119 +409,37 @@ "message": { "content": [ { - "content": "alpha-bash-output", + "content": "beta-bash-output", "is_error": false, - "tool_use_id": "toolu_01UtSyaTeYZ6gEfy2gmgRp2U", - "type": "tool_result" - } - ], - "role": "user" - }, - "parent_tool_use_id": "toolu_016YKqSeabuKrCff6WFaiXfj", - "session_id": "def6cea8-925c-4098-9ace-9f5814a01458", - "timestamp": "2026-04-17T16:18:38.090Z", - "type": "user", - "uuid": "bd6f6c29-6310-414c-bbd7-1813de928569" - } - }, - { - "op": "read", - "payload": { - "description": "Reading alpha.txt", - "last_tool_name": "Read", - "session_id": "def6cea8-925c-4098-9ace-9f5814a01458", - "subtype": "task_progress", - "task_id": "a97d9688370965216", - "tool_use_id": "toolu_016YKqSeabuKrCff6WFaiXfj", - "type": "system", - "usage": { - "duration_ms": 1524, - "tool_uses": 2, - "total_tokens": 17506 - }, - "uuid": "874ebbd9-59a5-474d-829a-9b5716eefa3a" - } - }, - { - "op": "read", - "payload": { - "message": { - "content": [ - { - "caller": { - "type": "direct" - }, - "id": "toolu_01CYL2s8A9fQYF4Cqag9XKvE", - "input": { - "file_path": "/private/var/folders/1r/0r49yqc973s87vl4n1x_3j1m0000gn/T/pytest-of-abhijeetprasad/pytest-578/test_interleaved_subagent_tool1/interleaved_parenting_workspace/alpha.txt" - }, - "name": "Read", - "type": "tool_use" - } - ], - "context_management": null, - "id": "msg_015FC1XfnpwoWTXuBhqLdaRT", - "model": "claude-haiku-4-5-20251001", - "role": "assistant", - "stop_details": null, - "stop_reason": null, - "stop_sequence": null, - "type": "message", - "usage": { - "cache_creation": { - "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 1074 - }, - "cache_creation_input_tokens": 1074, - "cache_read_input_tokens": 16423, - "inference_geo": "not_available", - "input_tokens": 3, - "output_tokens": 2, - "service_tier": "standard" - } - }, - "parent_tool_use_id": "toolu_016YKqSeabuKrCff6WFaiXfj", - "session_id": "def6cea8-925c-4098-9ace-9f5814a01458", - "type": "assistant", - "uuid": "806541b3-2842-43e2-ac56-d23edea10efd" - } - }, - { - "op": "read", - "payload": { - "message": { - "content": [ - { - "content": "1\talpha_file_contents\n2\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n", - "tool_use_id": "toolu_01CYL2s8A9fQYF4Cqag9XKvE", + "tool_use_id": "toolu_01QBLH8NxEXas6mauWEDXzEy", "type": "tool_result" } ], "role": "user" }, - "parent_tool_use_id": "toolu_016YKqSeabuKrCff6WFaiXfj", - "session_id": "def6cea8-925c-4098-9ace-9f5814a01458", - "timestamp": "2026-04-17T16:18:38.206Z", + "parent_tool_use_id": "toolu_01C2sMkLD5t88DRLHnsMEUTJ", + "session_id": "e080ddff-18c0-4a50-b47f-b9b2f84c20f8", + "timestamp": "2026-04-20T20:42:21.304Z", "type": "user", - "uuid": "826614c2-abc4-40e3-b517-53522bbb9588" + "uuid": "073c1c53-2091-4eb2-a70e-60fe1046230e" } }, { "op": "read", "payload": { - "description": "Running echo beta-bash-output", + "description": "Running Execute echo command", "last_tool_name": "Bash", - "session_id": "def6cea8-925c-4098-9ace-9f5814a01458", + "session_id": "e080ddff-18c0-4a50-b47f-b9b2f84c20f8", "subtype": "task_progress", - "task_id": "abfb3d0c6cb757568", - "tool_use_id": "toolu_01SeYbHZ8FBi3v9EJNHqPGoG", + "task_id": "a1f7ba70ef0f65d4b", + "tool_use_id": "toolu_01K6xggSxzt8gSB59PdXHBoH", "type": "system", "usage": { - "duration_ms": 1330, + "duration_ms": 1221, "tool_uses": 1, - "total_tokens": 17506 + "total_tokens": 17545 }, - "uuid": "3332fbd1-2ec8-4f31-a8ab-e1a58d40af26" + "uuid": "1bf9b535-dca4-4714-859b-e37e9aee8c34" } }, { @@ -535,16 +451,17 @@ "caller": { "type": "direct" }, - "id": "toolu_01XFgRCz53Rqt5nxRaeyUmuJ", + "id": "toolu_012WwaDPmjXwkzABC8f1xabM", "input": { - "command": "echo beta-bash-output" + "command": "echo alpha-bash-output", + "description": "Execute echo command" }, "name": "Bash", "type": "tool_use" } ], "context_management": null, - "id": "msg_01SEzqoKDuzTj1Rb5w97mAPn", + "id": "msg_01Q6Co1D4nUNnYrxQkMk8yVU", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -554,20 +471,20 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 1074 + "ephemeral_5m_input_tokens": 1069 }, - "cache_creation_input_tokens": 1074, - "cache_read_input_tokens": 16423, + "cache_creation_input_tokens": 1069, + "cache_read_input_tokens": 16467, "inference_geo": "not_available", "input_tokens": 3, "output_tokens": 3, "service_tier": "standard" } }, - "parent_tool_use_id": "toolu_01SeYbHZ8FBi3v9EJNHqPGoG", - "session_id": "def6cea8-925c-4098-9ace-9f5814a01458", + "parent_tool_use_id": "toolu_01K6xggSxzt8gSB59PdXHBoH", + "session_id": "e080ddff-18c0-4a50-b47f-b9b2f84c20f8", "type": "assistant", - "uuid": "2c9e2bd8-d4e3-460b-8e8a-468645880a5b" + "uuid": "e322e15a-00c6-425f-93ff-c0f919c5c623" } }, { @@ -576,37 +493,37 @@ "message": { "content": [ { - "content": "beta-bash-output", + "content": "alpha-bash-output", "is_error": false, - "tool_use_id": "toolu_01XFgRCz53Rqt5nxRaeyUmuJ", + "tool_use_id": "toolu_012WwaDPmjXwkzABC8f1xabM", "type": "tool_result" } ], "role": "user" }, - "parent_tool_use_id": "toolu_01SeYbHZ8FBi3v9EJNHqPGoG", - "session_id": "def6cea8-925c-4098-9ace-9f5814a01458", - "timestamp": "2026-04-17T16:18:38.272Z", + "parent_tool_use_id": "toolu_01K6xggSxzt8gSB59PdXHBoH", + "session_id": "e080ddff-18c0-4a50-b47f-b9b2f84c20f8", + "timestamp": "2026-04-20T20:42:21.331Z", "type": "user", - "uuid": "25ffab4a-1954-4641-b54b-260e056aa30e" + "uuid": "26df0bae-d52c-460e-be4a-1a02fae3b328" } }, { "op": "read", "payload": { - "description": "Reading beta.txt", + "description": "Reading alpha.txt", "last_tool_name": "Read", - "session_id": "def6cea8-925c-4098-9ace-9f5814a01458", + "session_id": "e080ddff-18c0-4a50-b47f-b9b2f84c20f8", "subtype": "task_progress", - "task_id": "abfb3d0c6cb757568", - "tool_use_id": "toolu_01SeYbHZ8FBi3v9EJNHqPGoG", + "task_id": "a1f7ba70ef0f65d4b", + "tool_use_id": "toolu_01K6xggSxzt8gSB59PdXHBoH", "type": "system", "usage": { - "duration_ms": 1418, + "duration_ms": 1645, "tool_uses": 2, - "total_tokens": 17509 + "total_tokens": 17548 }, - "uuid": "599d801c-3caa-4780-8e44-b70cb5e2984e" + "uuid": "fc030581-6818-432f-a91c-eaed7018912a" } }, { @@ -618,16 +535,16 @@ "caller": { "type": "direct" }, - "id": "toolu_01G6rMkMgH5PQ7mR57tJw3GQ", + "id": "toolu_017xyvzGUxZXbsU3rzd1tGYS", "input": { - "file_path": "/private/var/folders/1r/0r49yqc973s87vl4n1x_3j1m0000gn/T/pytest-of-abhijeetprasad/pytest-578/test_interleaved_subagent_tool1/interleaved_parenting_workspace/beta.txt" + "file_path": "/private/var/folders/1r/0r49yqc973s87vl4n1x_3j1m0000gn/T/pytest-of-abhijeetprasad/pytest-686/test_interleaved_subagent_tool1/interleaved_parenting_workspace/alpha.txt" }, "name": "Read", "type": "tool_use" } ], "context_management": null, - "id": "msg_01SEzqoKDuzTj1Rb5w97mAPn", + "id": "msg_01Q6Co1D4nUNnYrxQkMk8yVU", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -637,20 +554,20 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 1074 + "ephemeral_5m_input_tokens": 1069 }, - "cache_creation_input_tokens": 1074, - "cache_read_input_tokens": 16423, + "cache_creation_input_tokens": 1069, + "cache_read_input_tokens": 16467, "inference_geo": "not_available", "input_tokens": 3, "output_tokens": 3, "service_tier": "standard" } }, - "parent_tool_use_id": "toolu_01SeYbHZ8FBi3v9EJNHqPGoG", - "session_id": "def6cea8-925c-4098-9ace-9f5814a01458", + "parent_tool_use_id": "toolu_01K6xggSxzt8gSB59PdXHBoH", + "session_id": "e080ddff-18c0-4a50-b47f-b9b2f84c20f8", "type": "assistant", - "uuid": "a83f7d84-0add-4913-b717-014acb92bcdb" + "uuid": "3c927c55-9a66-4a3d-b11e-77ca685145b0" } }, { @@ -659,37 +576,37 @@ "message": { "content": [ { - "content": "1\tbeta_file_contents\n2\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n", - "tool_use_id": "toolu_01G6rMkMgH5PQ7mR57tJw3GQ", + "content": "1\talpha_file_contents\n2\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n", + "tool_use_id": "toolu_017xyvzGUxZXbsU3rzd1tGYS", "type": "tool_result" } ], "role": "user" }, - "parent_tool_use_id": "toolu_01SeYbHZ8FBi3v9EJNHqPGoG", - "session_id": "def6cea8-925c-4098-9ace-9f5814a01458", - "timestamp": "2026-04-17T16:18:38.352Z", + "parent_tool_use_id": "toolu_01K6xggSxzt8gSB59PdXHBoH", + "session_id": "e080ddff-18c0-4a50-b47f-b9b2f84c20f8", + "timestamp": "2026-04-20T20:42:21.749Z", "type": "user", - "uuid": "84e0963a-afc1-4203-8ca3-849c662a4110" + "uuid": "26a6f244-e524-42f8-a92a-8376c2412841" } }, { "op": "read", "payload": { "output_file": "", - "session_id": "def6cea8-925c-4098-9ace-9f5814a01458", + "session_id": "e080ddff-18c0-4a50-b47f-b9b2f84c20f8", "status": "completed", "subtype": "task_notification", - "summary": "Run alpha bash command and read alpha.txt", - "task_id": "a97d9688370965216", - "tool_use_id": "toolu_016YKqSeabuKrCff6WFaiXfj", + "summary": "Alpha task - bash echo and file read", + "task_id": "a1f7ba70ef0f65d4b", + "tool_use_id": "toolu_01K6xggSxzt8gSB59PdXHBoH", "type": "system", "usage": { - "duration_ms": 2907, + "duration_ms": 2261, "tool_uses": 2, - "total_tokens": 18671 + "total_tokens": 18736 }, - "uuid": "e8f6cc09-e4e9-47ec-979f-8647ee644531" + "uuid": "04516d83-4a51-40d1-8fae-ad252d5bf209" } }, { @@ -704,21 +621,21 @@ "type": "text" }, { - "text": "agentId: a97d9688370965216 (use SendMessage with to: 'a97d9688370965216' to continue this agent)\ntotal_tokens: 18672\ntool_uses: 2\nduration_ms: 2908", + "text": "agentId: a1f7ba70ef0f65d4b (use SendMessage with to: 'a1f7ba70ef0f65d4b' to continue this agent)\ntotal_tokens: 18734\ntool_uses: 2\nduration_ms: 2262", "type": "text" } ], - "tool_use_id": "toolu_016YKqSeabuKrCff6WFaiXfj", + "tool_use_id": "toolu_01K6xggSxzt8gSB59PdXHBoH", "type": "tool_result" } ], "role": "user" }, "parent_tool_use_id": null, - "session_id": "def6cea8-925c-4098-9ace-9f5814a01458", - "timestamp": "2026-04-17T16:18:39.587Z", + "session_id": "e080ddff-18c0-4a50-b47f-b9b2f84c20f8", + "timestamp": "2026-04-20T20:42:22.363Z", "tool_use_result": { - "agentId": "a97d9688370965216", + "agentId": "a1f7ba70ef0f65d4b", "agentType": "general-purpose", "content": [ { @@ -726,7 +643,7 @@ "type": "text" } ], - "prompt": "Run `echo alpha-bash-output` using Bash, then use the Read tool to read the contents of alpha.txt. After both tool calls complete, return only the file contents from alpha.txt - nothing else.", + "prompt": "Run the bash command `echo alpha-bash-output` and then use the Read tool to read the contents of alpha.txt. Return only the file contents from alpha.txt after both operations complete.", "status": "completed", "toolStats": { "bashCount": 1, @@ -737,19 +654,31 @@ "readCount": 1, "searchCount": 0 }, - "totalDurationMs": 2908, - "totalTokens": 18672, + "totalDurationMs": 2262, + "totalTokens": 18734, "totalToolUseCount": 2, "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 2234 + "ephemeral_5m_input_tokens": 1622 }, - "cache_creation_input_tokens": 2234, - "cache_read_input_tokens": 16423, + "cache_creation_input_tokens": 1622, + "cache_read_input_tokens": 17097, "inference_geo": "", "input_tokens": 7, - "iterations": [], + "iterations": [ + { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 1622 + }, + "cache_creation_input_tokens": 1622, + "cache_read_input_tokens": 17097, + "input_tokens": 7, + "output_tokens": 8, + "type": "message" + } + ], "output_tokens": 8, "server_tool_use": { "web_fetch_requests": 0, @@ -760,26 +689,108 @@ } }, "type": "user", - "uuid": "4d72f7aa-535f-40e6-867f-96213fe03bb1" + "uuid": "0c8b4f69-be81-4c82-91ab-9246a0254f42" + } + }, + { + "op": "read", + "payload": { + "description": "Reading beta.txt", + "last_tool_name": "Read", + "session_id": "e080ddff-18c0-4a50-b47f-b9b2f84c20f8", + "subtype": "task_progress", + "task_id": "ad34ce431321d9569", + "tool_use_id": "toolu_01C2sMkLD5t88DRLHnsMEUTJ", + "type": "system", + "usage": { + "duration_ms": 3477, + "tool_uses": 2, + "total_tokens": 18469 + }, + "uuid": "c026bb82-ff22-45e4-979e-a28c3c8c8395" + } + }, + { + "op": "read", + "payload": { + "message": { + "content": [ + { + "caller": { + "type": "direct" + }, + "id": "toolu_01DMnucxxqbLVhEwPmmJhs8T", + "input": { + "file_path": "/private/var/folders/1r/0r49yqc973s87vl4n1x_3j1m0000gn/T/pytest-of-abhijeetprasad/pytest-686/test_interleaved_subagent_tool1/interleaved_parenting_workspace/beta.txt" + }, + "name": "Read", + "type": "tool_use" + } + ], + "context_management": null, + "id": "msg_01HsSU6w3mLgwXqq4dJJs2oa", + "model": "claude-haiku-4-5-20251001", + "role": "assistant", + "stop_details": null, + "stop_reason": null, + "stop_sequence": null, + "type": "message", + "usage": { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 918 + }, + "cache_creation_input_tokens": 918, + "cache_read_input_tokens": 17536, + "inference_geo": "not_available", + "input_tokens": 5, + "output_tokens": 2, + "service_tier": "standard" + } + }, + "parent_tool_use_id": "toolu_01C2sMkLD5t88DRLHnsMEUTJ", + "session_id": "e080ddff-18c0-4a50-b47f-b9b2f84c20f8", + "type": "assistant", + "uuid": "7f245cc0-6d78-4843-ae12-237763674543" + } + }, + { + "op": "read", + "payload": { + "message": { + "content": [ + { + "content": "1\tbeta_file_contents\n2\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n", + "tool_use_id": "toolu_01DMnucxxqbLVhEwPmmJhs8T", + "type": "tool_result" + } + ], + "role": "user" + }, + "parent_tool_use_id": "toolu_01C2sMkLD5t88DRLHnsMEUTJ", + "session_id": "e080ddff-18c0-4a50-b47f-b9b2f84c20f8", + "timestamp": "2026-04-20T20:42:23.612Z", + "type": "user", + "uuid": "292f9d11-e399-41f7-9a4c-a90e488f24dc" } }, { "op": "read", "payload": { "output_file": "", - "session_id": "def6cea8-925c-4098-9ace-9f5814a01458", + "session_id": "e080ddff-18c0-4a50-b47f-b9b2f84c20f8", "status": "completed", "subtype": "task_notification", - "summary": "Run beta bash command and read beta.txt", - "task_id": "abfb3d0c6cb757568", - "tool_use_id": "toolu_01SeYbHZ8FBi3v9EJNHqPGoG", + "summary": "Beta task - bash echo and file read", + "task_id": "ad34ce431321d9569", + "tool_use_id": "toolu_01C2sMkLD5t88DRLHnsMEUTJ", "type": "system", "usage": { - "duration_ms": 3095, + "duration_ms": 4473, "tool_uses": 2, - "total_tokens": 18679 + "total_tokens": 18712 }, - "uuid": "2376cbdb-9187-497d-9b26-467c88b0fa61" + "uuid": "c05b46f0-dc62-4926-8be2-28a4b0801455" } }, { @@ -794,21 +805,21 @@ "type": "text" }, { - "text": "agentId: abfb3d0c6cb757568 (use SendMessage with to: 'abfb3d0c6cb757568' to continue this agent)\ntotal_tokens: 18677\ntool_uses: 2\nduration_ms: 3096", + "text": "agentId: ad34ce431321d9569 (use SendMessage with to: 'ad34ce431321d9569' to continue this agent)\ntotal_tokens: 18709\ntool_uses: 2\nduration_ms: 4473", "type": "text" } ], - "tool_use_id": "toolu_01SeYbHZ8FBi3v9EJNHqPGoG", + "tool_use_id": "toolu_01C2sMkLD5t88DRLHnsMEUTJ", "type": "tool_result" } ], "role": "user" }, "parent_tool_use_id": null, - "session_id": "def6cea8-925c-4098-9ace-9f5814a01458", - "timestamp": "2026-04-17T16:18:40.029Z", + "session_id": "e080ddff-18c0-4a50-b47f-b9b2f84c20f8", + "timestamp": "2026-04-20T20:42:24.607Z", "tool_use_result": { - "agentId": "abfb3d0c6cb757568", + "agentId": "ad34ce431321d9569", "agentType": "general-purpose", "content": [ { @@ -816,7 +827,7 @@ "type": "text" } ], - "prompt": "Run `echo beta-bash-output` using Bash, then use the Read tool to read the contents of beta.txt. After both tool calls complete, return only the file contents from beta.txt - nothing else.", + "prompt": "Run the bash command `echo beta-bash-output` and then use the Read tool to read the contents of beta.txt. Return only the file contents from beta.txt after both operations complete.", "status": "completed", "toolStats": { "bashCount": 1, @@ -827,19 +838,31 @@ "readCount": 1, "searchCount": 0 }, - "totalDurationMs": 3096, - "totalTokens": 18677, + "totalDurationMs": 4473, + "totalTokens": 18709, "totalToolUseCount": 2, "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 1165 + "ephemeral_5m_input_tokens": 242 }, - "cache_creation_input_tokens": 1165, - "cache_read_input_tokens": 17497, + "cache_creation_input_tokens": 242, + "cache_read_input_tokens": 18454, "inference_geo": "", - "input_tokens": 7, - "iterations": [], + "input_tokens": 5, + "iterations": [ + { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 242 + }, + "cache_creation_input_tokens": 242, + "cache_read_input_tokens": 18454, + "input_tokens": 5, + "output_tokens": 8, + "type": "message" + } + ], "output_tokens": 8, "server_tool_use": { "web_fetch_requests": 0, @@ -850,7 +873,7 @@ } }, "type": "user", - "uuid": "d5313b10-35e4-4f1f-a0fa-b1398de1db2b" + "uuid": "eeba1036-3efd-4d2a-ac0f-d99a0c896ab8" } }, { @@ -860,12 +883,12 @@ "content": [ { "signature": "", - "thinking": "Perfect! Both agents have completed their tasks. I received the results:\n1. First agent returned: \"alpha_file_contents\"\n2. Second agent returned: \"beta_file_contents\"\n\nNow I need to reply with exactly two lines in order: alpha then beta. The output format should be:\nalpha_file_contents\nbeta_file_contents", + "thinking": "Great! Both agents have completed their tasks in parallel. The first agent returned \"alpha_file_contents\" and the second returned \"beta_file_contents\". Now I need to output exactly two lines in order: alpha then beta.", "type": "thinking" } ], "context_management": null, - "id": "msg_01NR6MRGj2dk5XCHsF3akxBC", + "id": "msg_01VnMziXmMJ6gCHapAdoeYax", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -875,20 +898,20 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 728 + "ephemeral_5m_input_tokens": 677 }, - "cache_creation_input_tokens": 728, - "cache_read_input_tokens": 23325, + "cache_creation_input_tokens": 677, + "cache_read_input_tokens": 23369, "inference_geo": "not_available", "input_tokens": 8, - "output_tokens": 6, + "output_tokens": 1, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "def6cea8-925c-4098-9ace-9f5814a01458", + "session_id": "e080ddff-18c0-4a50-b47f-b9b2f84c20f8", "type": "assistant", - "uuid": "109d4502-79e1-475a-97b9-c63547618f13" + "uuid": "a613afd0-75bb-4b9c-b882-fad5ac7fb795" } }, { @@ -902,7 +925,7 @@ } ], "context_management": null, - "id": "msg_01NR6MRGj2dk5XCHsF3akxBC", + "id": "msg_01VnMziXmMJ6gCHapAdoeYax", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -912,62 +935,74 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 728 + "ephemeral_5m_input_tokens": 677 }, - "cache_creation_input_tokens": 728, - "cache_read_input_tokens": 23325, + "cache_creation_input_tokens": 677, + "cache_read_input_tokens": 23369, "inference_geo": "not_available", "input_tokens": 8, - "output_tokens": 6, + "output_tokens": 1, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "def6cea8-925c-4098-9ace-9f5814a01458", + "session_id": "e080ddff-18c0-4a50-b47f-b9b2f84c20f8", "type": "assistant", - "uuid": "0ba9ce30-ba58-4576-9650-64ddd1c60840" + "uuid": "fba90e20-ba1b-4070-8912-477e2a8a107f" } }, { "op": "read", "payload": { "api_error_status": null, - "duration_api_ms": 13143, - "duration_ms": 9105, + "duration_api_ms": 12690, + "duration_ms": 9743, "fast_mode_state": "off", "is_error": false, "modelUsage": { "claude-haiku-4-5-20251001": { - "cacheCreationInputTokens": 6275, - "cacheReadInputTokens": 113416, + "cacheCreationInputTokens": 5597, + "cacheReadInputTokens": 132759, "contextWindow": 200000, - "costUSD": 0.024717350000000003, - "inputTokens": 522, + "costUSD": 0.02564215, + "inputTokens": 525, "maxOutputTokens": 32000, - "outputTokens": 1002, + "outputTokens": 969, "webSearchRequests": 0 } }, "num_turns": 3, "permission_denials": [], "result": "alpha_file_contents\nbeta_file_contents", - "session_id": "def6cea8-925c-4098-9ace-9f5814a01458", + "session_id": "e080ddff-18c0-4a50-b47f-b9b2f84c20f8", "stop_reason": "end_turn", "subtype": "success", "terminal_reason": "completed", - "total_cost_usd": 0.024717350000000003, + "total_cost_usd": 0.02564215, "type": "result", "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 728 + "ephemeral_5m_input_tokens": 677 }, - "cache_creation_input_tokens": 728, - "cache_read_input_tokens": 46650, + "cache_creation_input_tokens": 677, + "cache_read_input_tokens": 46738, "inference_geo": "", "input_tokens": 18, - "iterations": [], - "output_tokens": 603, + "iterations": [ + { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 677 + }, + "cache_creation_input_tokens": 677, + "cache_read_input_tokens": 23369, + "input_tokens": 8, + "output_tokens": 70, + "type": "message" + } + ], + "output_tokens": 518, "server_tool_use": { "web_fetch_requests": 0, "web_search_requests": 0 @@ -975,9 +1010,9 @@ "service_tier": "standard", "speed": "standard" }, - "uuid": "0c996a33-638e-447b-8f5f-7c16cdbab431" + "uuid": "2a94c120-e865-4bbd-9956-bdba8cf9412d" } } ], - "sdk_version": "0.1.61" + "sdk_version": "0.1.63" } diff --git a/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_multiple_bundled_subagents_keep_outer_orchestration_separate.json b/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_multiple_bundled_subagents_keep_outer_orchestration_separate.json index 4ba10a75..e7687280 100644 --- a/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_multiple_bundled_subagents_keep_outer_orchestration_separate.json +++ b/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_multiple_bundled_subagents_keep_outer_orchestration_separate.json @@ -10,7 +10,7 @@ "hooks": null, "subtype": "initialize" }, - "request_id": "req_1_c32541c9", + "request_id": "req_1_469a4ed1", "type": "control_request" } } @@ -19,7 +19,7 @@ "op": "read", "payload": { "response": { - "request_id": "req_1_c32541c9", + "request_id": "req_1_469a4ed1", "response": { "account": { "apiKeySource": "ANTHROPIC_API_KEY", @@ -61,7 +61,7 @@ "statusline-setup" ], "apiKeySource": "ANTHROPIC_API_KEY", - "claude_code_version": "2.1.112", + "claude_code_version": "2.1.114", "cwd": "", "fast_mode_state": "off", "mcp_servers": [], @@ -78,13 +78,13 @@ "source": "rust-analyzer-lsp@claude-plugins-official" } ], - "session_id": "affb6aed-a584-4c3b-a88a-06c4a3744dac", + "session_id": "e1d90822-5676-4086-937c-c9ea0f8ffb92", "skills": [ "update-config", "debug", "simplify", "batch", - "less-permission-prompts", + "fewer-permission-prompts", "loop", "schedule", "claude-api", @@ -96,7 +96,7 @@ "debug", "simplify", "batch", - "less-permission-prompts", + "fewer-permission-prompts", "loop", "schedule", "claude-api", @@ -144,7 +144,7 @@ "Write" ], "type": "system", - "uuid": "2a1fdfbe-18de-4987-8894-f3909123ab33" + "uuid": "d019cc4f-022f-4c5f-bbc7-ca1d8c6a926b" } }, { @@ -154,12 +154,12 @@ "content": [ { "signature": "", - "thinking": "The user wants me to launch two independent subagents (using the Agent tool) that will:\n1. First agent: Read release_notes_alpha.md and return 'alpha: | '\n2. Second agent: Read release_notes_beta.md and return 'beta: | '\n\nThen I need to report the results from both agents in exactly two lines.\n\nSince these are independent tasks, I should make both Agent calls in the same function_calls block. I'll use the general-purpose agent type for both, and give them specific instructions to use Bash and Read tools to extract the version and owner information.\n\nLet me structure the prompts clearly so each agent knows exactly what to do.", + "thinking": "The user wants me to:\n1. Launch two independent general-purpose subagents\n2. First subagent reads release_notes_alpha.md and extracts version and owner in format 'alpha: | '\n3. Second subagent reads release_notes_beta.md and extracts version and owner in format 'beta: | '\n4. After both finish, reply with exactly two lines in that order\n5. Must use Agent tool calls, not do it directly\n6. Can make both calls in parallel since they're independent\n\nI need to use the Agent tool with subagent_type \"general-purpose\" and give clear prompts to each agent to read the files and extract the required information.", "type": "thinking" } ], "context_management": null, - "id": "msg_01YXXP1jUbVXJtTaKckyCeaD", + "id": "msg_01JEXbZ789VeHBw3wxzbmyWM", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -169,10 +169,10 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 1529 + "ephemeral_5m_input_tokens": 23353 }, - "cache_creation_input_tokens": 1529, - "cache_read_input_tokens": 21780, + "cache_creation_input_tokens": 23353, + "cache_read_input_tokens": 0, "inference_geo": "not_available", "input_tokens": 10, "output_tokens": 3, @@ -180,9 +180,9 @@ } }, "parent_tool_use_id": null, - "session_id": "affb6aed-a584-4c3b-a88a-06c4a3744dac", + "session_id": "e1d90822-5676-4086-937c-c9ea0f8ffb92", "type": "assistant", - "uuid": "18d6a7a7-2df2-4c0a-9e0e-4e98929bb39b" + "uuid": "13a1825b-df0f-4cc6-9493-43ce94fdab06" } }, { @@ -194,10 +194,10 @@ "caller": { "type": "direct" }, - "id": "toolu_0134vWepDYu9KgwwaYL1oHzn", + "id": "toolu_015axZKHHmZ9m8fTjiRuZdwJ", "input": { - "description": "Extract alpha version and owner from release notes", - "prompt": "Read the file release_notes_alpha.md using the Read tool. Extract the version number and owner from the file. Return ONLY the result in this exact format: alpha: | \n\nDo not include any other text in your response.", + "description": "Extract alpha release version and owner", + "prompt": "Read the file release_notes_alpha.md. Extract the version number and owner name from it. Return ONLY the result in this exact format: 'alpha: | ' with no other text or explanation.", "subagent_type": "general-purpose" }, "name": "Agent", @@ -205,7 +205,7 @@ } ], "context_management": null, - "id": "msg_01YXXP1jUbVXJtTaKckyCeaD", + "id": "msg_01JEXbZ789VeHBw3wxzbmyWM", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -215,10 +215,10 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 1529 + "ephemeral_5m_input_tokens": 23353 }, - "cache_creation_input_tokens": 1529, - "cache_read_input_tokens": 21780, + "cache_creation_input_tokens": 23353, + "cache_read_input_tokens": 0, "inference_geo": "not_available", "input_tokens": 10, "output_tokens": 3, @@ -226,23 +226,23 @@ } }, "parent_tool_use_id": null, - "session_id": "affb6aed-a584-4c3b-a88a-06c4a3744dac", + "session_id": "e1d90822-5676-4086-937c-c9ea0f8ffb92", "type": "assistant", - "uuid": "18ce549f-cd50-4929-a189-2189197ef38d" + "uuid": "9b9efda0-71ef-469c-8480-4b64a6441afc" } }, { "op": "read", "payload": { - "description": "Extract alpha version and owner from release notes", - "prompt": "Read the file release_notes_alpha.md using the Read tool. Extract the version number and owner from the file. Return ONLY the result in this exact format: alpha: | \n\nDo not include any other text in your response.", - "session_id": "affb6aed-a584-4c3b-a88a-06c4a3744dac", + "description": "Extract alpha release version and owner", + "prompt": "Read the file release_notes_alpha.md. Extract the version number and owner name from it. Return ONLY the result in this exact format: 'alpha: | ' with no other text or explanation.", + "session_id": "e1d90822-5676-4086-937c-c9ea0f8ffb92", "subtype": "task_started", - "task_id": "adfd30aa7271a1476", + "task_id": "a4f6757df218b5b14", "task_type": "local_agent", - "tool_use_id": "toolu_0134vWepDYu9KgwwaYL1oHzn", + "tool_use_id": "toolu_015axZKHHmZ9m8fTjiRuZdwJ", "type": "system", - "uuid": "0931a37e-8aa2-4014-9746-5ee8dfe92c18" + "uuid": "3c2b0bf2-b67d-4390-bdce-56487215c8ca" } }, { @@ -251,17 +251,17 @@ "message": { "content": [ { - "text": "Read the file release_notes_alpha.md using the Read tool. Extract the version number and owner from the file. Return ONLY the result in this exact format: alpha: | \n\nDo not include any other text in your response.", + "text": "Read the file release_notes_alpha.md. Extract the version number and owner name from it. Return ONLY the result in this exact format: 'alpha: | ' with no other text or explanation.", "type": "text" } ], "role": "user" }, - "parent_tool_use_id": "toolu_0134vWepDYu9KgwwaYL1oHzn", - "session_id": "affb6aed-a584-4c3b-a88a-06c4a3744dac", - "timestamp": "2026-04-17T16:17:51.715Z", + "parent_tool_use_id": "toolu_015axZKHHmZ9m8fTjiRuZdwJ", + "session_id": "e1d90822-5676-4086-937c-c9ea0f8ffb92", + "timestamp": "2026-04-20T20:41:30.642Z", "type": "user", - "uuid": "6c53e89a-dcef-4d16-9744-8a9a6fb357fa" + "uuid": "373e1277-33a0-4ff9-a037-d16505f7602d" } }, { @@ -273,10 +273,10 @@ "caller": { "type": "direct" }, - "id": "toolu_017cvA3q5wfSMsZEwAD2gNdf", + "id": "toolu_01ViKBfiYtJuGhfZvUHaYJ4C", "input": { - "description": "Extract beta version and owner from release notes", - "prompt": "Read the file release_notes_beta.md using the Read tool. Extract the version number and owner from the file. Return ONLY the result in this exact format: beta: | \n\nDo not include any other text in your response.", + "description": "Extract beta release version and owner", + "prompt": "Read the file release_notes_beta.md. Extract the version number and owner name from it. Return ONLY the result in this exact format: 'beta: | ' with no other text or explanation.", "subagent_type": "general-purpose" }, "name": "Agent", @@ -284,7 +284,7 @@ } ], "context_management": null, - "id": "msg_01YXXP1jUbVXJtTaKckyCeaD", + "id": "msg_01JEXbZ789VeHBw3wxzbmyWM", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -294,10 +294,10 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 1529 + "ephemeral_5m_input_tokens": 23353 }, - "cache_creation_input_tokens": 1529, - "cache_read_input_tokens": 21780, + "cache_creation_input_tokens": 23353, + "cache_read_input_tokens": 0, "inference_geo": "not_available", "input_tokens": 10, "output_tokens": 3, @@ -305,23 +305,23 @@ } }, "parent_tool_use_id": null, - "session_id": "affb6aed-a584-4c3b-a88a-06c4a3744dac", + "session_id": "e1d90822-5676-4086-937c-c9ea0f8ffb92", "type": "assistant", - "uuid": "9bfb42f3-fb31-4235-baf5-05b92e532a62" + "uuid": "777e392a-094c-4cf9-b450-17f013d9ac5b" } }, { "op": "read", "payload": { - "description": "Extract beta version and owner from release notes", - "prompt": "Read the file release_notes_beta.md using the Read tool. Extract the version number and owner from the file. Return ONLY the result in this exact format: beta: | \n\nDo not include any other text in your response.", - "session_id": "affb6aed-a584-4c3b-a88a-06c4a3744dac", + "description": "Extract beta release version and owner", + "prompt": "Read the file release_notes_beta.md. Extract the version number and owner name from it. Return ONLY the result in this exact format: 'beta: | ' with no other text or explanation.", + "session_id": "e1d90822-5676-4086-937c-c9ea0f8ffb92", "subtype": "task_started", - "task_id": "a3c9cb881954f3aeb", + "task_id": "a98317d5c2d8bd8e7", "task_type": "local_agent", - "tool_use_id": "toolu_017cvA3q5wfSMsZEwAD2gNdf", + "tool_use_id": "toolu_01ViKBfiYtJuGhfZvUHaYJ4C", "type": "system", - "uuid": "a6cca5c7-168e-42f8-86bd-984d5a52dcd2" + "uuid": "88176b1e-262d-4eef-96a7-92915a99a0a6" } }, { @@ -330,17 +330,99 @@ "message": { "content": [ { - "text": "Read the file release_notes_beta.md using the Read tool. Extract the version number and owner from the file. Return ONLY the result in this exact format: beta: | \n\nDo not include any other text in your response.", + "text": "Read the file release_notes_beta.md. Extract the version number and owner name from it. Return ONLY the result in this exact format: 'beta: | ' with no other text or explanation.", "type": "text" } ], "role": "user" }, - "parent_tool_use_id": "toolu_017cvA3q5wfSMsZEwAD2gNdf", - "session_id": "affb6aed-a584-4c3b-a88a-06c4a3744dac", - "timestamp": "2026-04-17T16:17:52.109Z", + "parent_tool_use_id": "toolu_01ViKBfiYtJuGhfZvUHaYJ4C", + "session_id": "e1d90822-5676-4086-937c-c9ea0f8ffb92", + "timestamp": "2026-04-20T20:41:31.083Z", "type": "user", - "uuid": "87be9db2-9b21-4be0-aee5-60bbfe8009a5" + "uuid": "16f1d766-15f6-4970-a0da-961d281a8764" + } + }, + { + "op": "read", + "payload": { + "description": "Reading release_notes_beta.md", + "last_tool_name": "Read", + "session_id": "e1d90822-5676-4086-937c-c9ea0f8ffb92", + "subtype": "task_progress", + "task_id": "a98317d5c2d8bd8e7", + "tool_use_id": "toolu_01ViKBfiYtJuGhfZvUHaYJ4C", + "type": "system", + "usage": { + "duration_ms": 1155, + "tool_uses": 1, + "total_tokens": 17607 + }, + "uuid": "7dad6d79-fb5f-497d-8c89-895d70bd5b6d" + } + }, + { + "op": "read", + "payload": { + "message": { + "content": [ + { + "caller": { + "type": "direct" + }, + "id": "toolu_01VnvCSTdvssyXFnvhNBFZLV", + "input": { + "file_path": "/private/var/folders/1r/0r49yqc973s87vl4n1x_3j1m0000gn/T/pytest-of-abhijeetprasad/pytest-686/test_multiple_bundled_subagent0/subagent_multi_workspace/release_notes_beta.md" + }, + "name": "Read", + "type": "tool_use" + } + ], + "context_management": null, + "id": "msg_01WnUGk6bSMFwmaxjzPNHMCi", + "model": "claude-haiku-4-5-20251001", + "role": "assistant", + "stop_details": null, + "stop_reason": null, + "stop_sequence": null, + "type": "message", + "usage": { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 17541 + }, + "cache_creation_input_tokens": 17541, + "cache_read_input_tokens": 0, + "inference_geo": "not_available", + "input_tokens": 3, + "output_tokens": 63, + "service_tier": "standard" + } + }, + "parent_tool_use_id": "toolu_01ViKBfiYtJuGhfZvUHaYJ4C", + "session_id": "e1d90822-5676-4086-937c-c9ea0f8ffb92", + "type": "assistant", + "uuid": "957dbc89-f197-492e-ae06-ba7555d77a78" + } + }, + { + "op": "read", + "payload": { + "message": { + "content": [ + { + "content": "1\t# Beta Release Notes\n2\t\n3\tversion = 2026.03.11-beta\n4\towner = sdk-platform-beta\n5\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n", + "tool_use_id": "toolu_01VnvCSTdvssyXFnvhNBFZLV", + "type": "tool_result" + } + ], + "role": "user" + }, + "parent_tool_use_id": "toolu_01ViKBfiYtJuGhfZvUHaYJ4C", + "session_id": "e1d90822-5676-4086-937c-c9ea0f8ffb92", + "timestamp": "2026-04-20T20:41:32.240Z", + "type": "user", + "uuid": "4223462b-f80e-469a-954d-7899f568b996" } }, { @@ -348,17 +430,17 @@ "payload": { "description": "Reading release_notes_alpha.md", "last_tool_name": "Read", - "session_id": "affb6aed-a584-4c3b-a88a-06c4a3744dac", + "session_id": "e1d90822-5676-4086-937c-c9ea0f8ffb92", "subtype": "task_progress", - "task_id": "adfd30aa7271a1476", - "tool_use_id": "toolu_0134vWepDYu9KgwwaYL1oHzn", + "task_id": "a4f6757df218b5b14", + "tool_use_id": "toolu_015axZKHHmZ9m8fTjiRuZdwJ", "type": "system", "usage": { - "duration_ms": 1084, + "duration_ms": 1822, "tool_uses": 1, - "total_tokens": 17522 + "total_tokens": 17556 }, - "uuid": "3bf2cd35-8551-44a6-89e7-437d47dc3d59" + "uuid": "034c90c6-a87a-4ded-9ea1-569cfbd0cd7a" } }, { @@ -370,16 +452,16 @@ "caller": { "type": "direct" }, - "id": "toolu_01KGnvFw9qVs1nRmpP484tMV", + "id": "toolu_016GVEHnpLxHMd4VC9e5bWNx", "input": { - "file_path": "/private/var/folders/1r/0r49yqc973s87vl4n1x_3j1m0000gn/T/pytest-of-abhijeetprasad/pytest-578/test_multiple_bundled_subagent0/subagent_multi_workspace/release_notes_alpha.md" + "file_path": "/private/var/folders/1r/0r49yqc973s87vl4n1x_3j1m0000gn/T/pytest-of-abhijeetprasad/pytest-686/test_multiple_bundled_subagent0/subagent_multi_workspace/release_notes_alpha.md" }, "name": "Read", "type": "tool_use" } ], "context_management": null, - "id": "msg_017Wm3CoqxUKybDRW8oNP9QQ", + "id": "msg_016CofqptVkpkfyDpEaYGzHJ", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -389,20 +471,20 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 1080 + "ephemeral_5m_input_tokens": 17541 }, - "cache_creation_input_tokens": 1080, - "cache_read_input_tokens": 16423, + "cache_creation_input_tokens": 17541, + "cache_read_input_tokens": 0, "inference_geo": "not_available", "input_tokens": 3, - "output_tokens": 8, + "output_tokens": 6, "service_tier": "standard" } }, - "parent_tool_use_id": "toolu_0134vWepDYu9KgwwaYL1oHzn", - "session_id": "affb6aed-a584-4c3b-a88a-06c4a3744dac", + "parent_tool_use_id": "toolu_015axZKHHmZ9m8fTjiRuZdwJ", + "session_id": "e1d90822-5676-4086-937c-c9ea0f8ffb92", "type": "assistant", - "uuid": "1b01174a-3ac7-4055-8548-b82a12b541ef" + "uuid": "ce5847fe-7cf2-4507-8fe0-f8dfe936ef1f" } }, { @@ -412,36 +494,36 @@ "content": [ { "content": "1\t# Alpha Release Notes\n2\t\n3\tversion = 2026.03.11-alpha\n4\towner = sdk-platform-alpha\n5\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n", - "tool_use_id": "toolu_01KGnvFw9qVs1nRmpP484tMV", + "tool_use_id": "toolu_016GVEHnpLxHMd4VC9e5bWNx", "type": "tool_result" } ], "role": "user" }, - "parent_tool_use_id": "toolu_0134vWepDYu9KgwwaYL1oHzn", - "session_id": "affb6aed-a584-4c3b-a88a-06c4a3744dac", - "timestamp": "2026-04-17T16:17:52.802Z", + "parent_tool_use_id": "toolu_015axZKHHmZ9m8fTjiRuZdwJ", + "session_id": "e1d90822-5676-4086-937c-c9ea0f8ffb92", + "timestamp": "2026-04-20T20:41:32.466Z", "type": "user", - "uuid": "c03617ea-6c89-4dfa-bf9c-644a21b6114a" + "uuid": "94908b53-66f1-48a6-975d-9e0af08c0ad9" } }, { "op": "read", "payload": { "output_file": "", - "session_id": "affb6aed-a584-4c3b-a88a-06c4a3744dac", + "session_id": "e1d90822-5676-4086-937c-c9ea0f8ffb92", "status": "completed", "subtype": "task_notification", - "summary": "Extract alpha version and owner from release notes", - "task_id": "adfd30aa7271a1476", - "tool_use_id": "toolu_0134vWepDYu9KgwwaYL1oHzn", + "summary": "Extract alpha release version and owner", + "task_id": "a4f6757df218b5b14", + "tool_use_id": "toolu_015axZKHHmZ9m8fTjiRuZdwJ", "type": "system", "usage": { - "duration_ms": 1922, + "duration_ms": 3174, "tool_uses": 1, - "total_tokens": 18626 + "total_tokens": 18656 }, - "uuid": "30151a41-c8d6-4e40-924e-8ff63b26568d" + "uuid": "9cf8d6f3-5ccc-4132-b549-8689cbc489de" } }, { @@ -456,21 +538,21 @@ "type": "text" }, { - "text": "agentId: adfd30aa7271a1476 (use SendMessage with to: 'adfd30aa7271a1476' to continue this agent)\ntotal_tokens: 18628\ntool_uses: 1\nduration_ms: 1922", + "text": "agentId: a4f6757df218b5b14 (use SendMessage with to: 'a4f6757df218b5b14' to continue this agent)\ntotal_tokens: 18662\ntool_uses: 1\nduration_ms: 3175", "type": "text" } ], - "tool_use_id": "toolu_0134vWepDYu9KgwwaYL1oHzn", + "tool_use_id": "toolu_015axZKHHmZ9m8fTjiRuZdwJ", "type": "tool_result" } ], "role": "user" }, "parent_tool_use_id": null, - "session_id": "affb6aed-a584-4c3b-a88a-06c4a3744dac", - "timestamp": "2026-04-17T16:17:53.637Z", + "session_id": "e1d90822-5676-4086-937c-c9ea0f8ffb92", + "timestamp": "2026-04-20T20:41:33.817Z", "tool_use_result": { - "agentId": "adfd30aa7271a1476", + "agentId": "a4f6757df218b5b14", "agentType": "general-purpose", "content": [ { @@ -478,7 +560,7 @@ "type": "text" } ], - "prompt": "Read the file release_notes_alpha.md using the Read tool. Extract the version number and owner from the file. Return ONLY the result in this exact format: alpha: | \n\nDo not include any other text in your response.", + "prompt": "Read the file release_notes_alpha.md. Extract the version number and owner name from it. Return ONLY the result in this exact format: 'alpha: | ' with no other text or explanation.", "status": "completed", "toolStats": { "bashCount": 0, @@ -489,19 +571,31 @@ "readCount": 1, "searchCount": 0 }, - "totalDurationMs": 1922, - "totalTokens": 18628, + "totalDurationMs": 3175, + "totalTokens": 18662, "totalToolUseCount": 1, "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 1553 + "ephemeral_5m_input_tokens": 1097 }, - "cache_creation_input_tokens": 1553, - "cache_read_input_tokens": 17051, + "cache_creation_input_tokens": 1097, + "cache_read_input_tokens": 17541, "inference_geo": "", "input_tokens": 5, - "iterations": [], + "iterations": [ + { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 1097 + }, + "cache_creation_input_tokens": 1097, + "cache_read_input_tokens": 17541, + "input_tokens": 5, + "output_tokens": 19, + "type": "message" + } + ], "output_tokens": 19, "server_tool_use": { "web_fetch_requests": 0, @@ -512,108 +606,26 @@ } }, "type": "user", - "uuid": "caf26e95-44f5-406a-8a57-80834a902428" - } - }, - { - "op": "read", - "payload": { - "description": "Reading release_notes_beta.md", - "last_tool_name": "Read", - "session_id": "affb6aed-a584-4c3b-a88a-06c4a3744dac", - "subtype": "task_progress", - "task_id": "a3c9cb881954f3aeb", - "tool_use_id": "toolu_017cvA3q5wfSMsZEwAD2gNdf", - "type": "system", - "usage": { - "duration_ms": 1654, - "tool_uses": 1, - "total_tokens": 17508 - }, - "uuid": "1ee70bd8-b102-4beb-a64d-f052e721c851" - } - }, - { - "op": "read", - "payload": { - "message": { - "content": [ - { - "caller": { - "type": "direct" - }, - "id": "toolu_01Mb2ghqC3hLQhKaFZC7Y2ci", - "input": { - "file_path": "/private/var/folders/1r/0r49yqc973s87vl4n1x_3j1m0000gn/T/pytest-of-abhijeetprasad/pytest-578/test_multiple_bundled_subagent0/subagent_multi_workspace/release_notes_beta.md" - }, - "name": "Read", - "type": "tool_use" - } - ], - "context_management": null, - "id": "msg_01JbwrDfSiP93C3D8X9FMKFB", - "model": "claude-haiku-4-5-20251001", - "role": "assistant", - "stop_details": null, - "stop_reason": null, - "stop_sequence": null, - "type": "message", - "usage": { - "cache_creation": { - "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 1080 - }, - "cache_creation_input_tokens": 1080, - "cache_read_input_tokens": 16423, - "inference_geo": "not_available", - "input_tokens": 3, - "output_tokens": 1, - "service_tier": "standard" - } - }, - "parent_tool_use_id": "toolu_017cvA3q5wfSMsZEwAD2gNdf", - "session_id": "affb6aed-a584-4c3b-a88a-06c4a3744dac", - "type": "assistant", - "uuid": "6ac01c52-2fae-47a7-b9ec-8bb04cdf88b8" - } - }, - { - "op": "read", - "payload": { - "message": { - "content": [ - { - "content": "1\t# Beta Release Notes\n2\t\n3\tversion = 2026.03.11-beta\n4\towner = sdk-platform-beta\n5\t\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n", - "tool_use_id": "toolu_01Mb2ghqC3hLQhKaFZC7Y2ci", - "type": "tool_result" - } - ], - "role": "user" - }, - "parent_tool_use_id": "toolu_017cvA3q5wfSMsZEwAD2gNdf", - "session_id": "affb6aed-a584-4c3b-a88a-06c4a3744dac", - "timestamp": "2026-04-17T16:17:53.764Z", - "type": "user", - "uuid": "ed08d98d-39c2-41d7-a578-bcf685a45bfe" + "uuid": "891db558-3629-43ab-8903-8014ef4ba86d" } }, { "op": "read", "payload": { "output_file": "", - "session_id": "affb6aed-a584-4c3b-a88a-06c4a3744dac", + "session_id": "e1d90822-5676-4086-937c-c9ea0f8ffb92", "status": "completed", "subtype": "task_notification", - "summary": "Extract beta version and owner from release notes", - "task_id": "a3c9cb881954f3aeb", - "tool_use_id": "toolu_017cvA3q5wfSMsZEwAD2gNdf", + "summary": "Extract beta release version and owner", + "task_id": "a98317d5c2d8bd8e7", + "tool_use_id": "toolu_01ViKBfiYtJuGhfZvUHaYJ4C", "type": "system", "usage": { - "duration_ms": 2995, + "duration_ms": 3142, "tool_uses": 1, - "total_tokens": 18610 + "total_tokens": 18696 }, - "uuid": "e87d77a3-0608-443e-8288-a8bd2c016607" + "uuid": "0809d22a-aca2-40f6-b981-b9fa3ac84cd8" } }, { @@ -628,21 +640,21 @@ "type": "text" }, { - "text": "agentId: a3c9cb881954f3aeb (use SendMessage with to: 'a3c9cb881954f3aeb' to continue this agent)\ntotal_tokens: 18626\ntool_uses: 1\nduration_ms: 2995", + "text": "agentId: a98317d5c2d8bd8e7 (use SendMessage with to: 'a98317d5c2d8bd8e7' to continue this agent)\ntotal_tokens: 18651\ntool_uses: 1\nduration_ms: 3142", "type": "text" } ], - "tool_use_id": "toolu_017cvA3q5wfSMsZEwAD2gNdf", + "tool_use_id": "toolu_01ViKBfiYtJuGhfZvUHaYJ4C", "type": "tool_result" } ], "role": "user" }, "parent_tool_use_id": null, - "session_id": "affb6aed-a584-4c3b-a88a-06c4a3744dac", - "timestamp": "2026-04-17T16:17:55.104Z", + "session_id": "e1d90822-5676-4086-937c-c9ea0f8ffb92", + "timestamp": "2026-04-20T20:41:34.226Z", "tool_use_result": { - "agentId": "a3c9cb881954f3aeb", + "agentId": "a98317d5c2d8bd8e7", "agentType": "general-purpose", "content": [ { @@ -650,7 +662,7 @@ "type": "text" } ], - "prompt": "Read the file release_notes_beta.md using the Read tool. Extract the version number and owner from the file. Return ONLY the result in this exact format: beta: | \n\nDo not include any other text in your response.", + "prompt": "Read the file release_notes_beta.md. Extract the version number and owner name from it. Return ONLY the result in this exact format: 'beta: | ' with no other text or explanation.", "status": "completed", "toolStats": { "bashCount": 0, @@ -661,19 +673,31 @@ "readCount": 1, "searchCount": 0 }, - "totalDurationMs": 2995, - "totalTokens": 18626, + "totalDurationMs": 3142, + "totalTokens": 18651, "totalToolUseCount": 1, "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 1099 + "ephemeral_5m_input_tokens": 1532 }, - "cache_creation_input_tokens": 1099, - "cache_read_input_tokens": 17503, + "cache_creation_input_tokens": 1532, + "cache_read_input_tokens": 17095, "inference_geo": "", "input_tokens": 5, - "iterations": [], + "iterations": [ + { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 1532 + }, + "cache_creation_input_tokens": 1532, + "cache_read_input_tokens": 17095, + "input_tokens": 5, + "output_tokens": 19, + "type": "message" + } + ], "output_tokens": 19, "server_tool_use": { "web_fetch_requests": 0, @@ -684,7 +708,7 @@ } }, "type": "user", - "uuid": "b5ab52f8-fc60-4b1a-b872-31f1c40ad272" + "uuid": "ceb2fc8a-23fe-4caa-bdad-469bd9da0958" } }, { @@ -694,12 +718,12 @@ "content": [ { "signature": "", - "thinking": "Great! Both agents have completed their tasks and returned the results in the exact format requested. Now I need to reply with exactly two lines in the same order (alpha first, then beta).\n\nThe results are:\n1. alpha:2026.03.11-alpha | sdk-platform-alpha\n2. beta:2026.03.11-beta | sdk-platform-beta\n\nI'll output these exactly as requested.", + "thinking": "Perfect! Both agents have completed and returned the results in the exact format requested. Now I need to provide exactly two lines with the results in the order they were requested:\n\n1. First line: alpha result\n2. Second line: beta result", "type": "thinking" } ], "context_management": null, - "id": "msg_01DvNtPYwBxh7TR6ndtDPBrw", + "id": "msg_01MKXKGWvG2CLxauUT6xPxaR", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -709,20 +733,20 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 698 + "ephemeral_5m_input_tokens": 695 }, - "cache_creation_input_tokens": 698, - "cache_read_input_tokens": 23309, + "cache_creation_input_tokens": 695, + "cache_read_input_tokens": 23353, "inference_geo": "not_available", "input_tokens": 8, - "output_tokens": 1, + "output_tokens": 3, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "affb6aed-a584-4c3b-a88a-06c4a3744dac", + "session_id": "e1d90822-5676-4086-937c-c9ea0f8ffb92", "type": "assistant", - "uuid": "e8baa736-f795-4f14-b60c-a3b7297fe3d0" + "uuid": "3d97961d-e443-43a0-8272-cccd435921f3" } }, { @@ -736,7 +760,7 @@ } ], "context_management": null, - "id": "msg_01DvNtPYwBxh7TR6ndtDPBrw", + "id": "msg_01MKXKGWvG2CLxauUT6xPxaR", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -746,62 +770,74 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 698 + "ephemeral_5m_input_tokens": 695 }, - "cache_creation_input_tokens": 698, - "cache_read_input_tokens": 23309, + "cache_creation_input_tokens": 695, + "cache_read_input_tokens": 23353, "inference_geo": "not_available", "input_tokens": 8, - "output_tokens": 1, + "output_tokens": 3, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "affb6aed-a584-4c3b-a88a-06c4a3744dac", + "session_id": "e1d90822-5676-4086-937c-c9ea0f8ffb92", "type": "assistant", - "uuid": "15dcab42-f897-41f6-b39f-cc9f67697415" + "uuid": "a4756345-ff72-471a-a8c5-486b0f502fa4" } }, { "op": "read", "payload": { "api_error_status": null, - "duration_api_ms": 11693, - "duration_ms": 8788, + "duration_api_ms": 12594, + "duration_ms": 8387, "fast_mode_state": "off", "is_error": false, "modelUsage": { "claude-haiku-4-5-20251001": { - "cacheCreationInputTokens": 7039, - "cacheReadInputTokens": 112489, + "cacheCreationInputTokens": 61759, + "cacheReadInputTokens": 57989, "contextWindow": 200000, - "costUSD": 0.025199649999999997, + "costUSD": 0.08779465000000002, "inputTokens": 502, "maxOutputTokens": 32000, - "outputTokens": 930, + "outputTokens": 859, "webSearchRequests": 0 } }, "num_turns": 3, "permission_denials": [], "result": "alpha:2026.03.11-alpha | sdk-platform-alpha\nbeta:2026.03.11-beta | sdk-platform-beta", - "session_id": "affb6aed-a584-4c3b-a88a-06c4a3744dac", + "session_id": "e1d90822-5676-4086-937c-c9ea0f8ffb92", "stop_reason": "end_turn", "subtype": "success", "terminal_reason": "completed", - "total_cost_usd": 0.025199649999999997, + "total_cost_usd": 0.08779465000000002, "type": "result", "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 2227 + "ephemeral_5m_input_tokens": 24048 }, - "cache_creation_input_tokens": 2227, - "cache_read_input_tokens": 45089, + "cache_creation_input_tokens": 24048, + "cache_read_input_tokens": 23353, "inference_geo": "", "input_tokens": 18, - "iterations": [], - "output_tokens": 583, + "iterations": [ + { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 695 + }, + "cache_creation_input_tokens": 695, + "cache_read_input_tokens": 23353, + "input_tokens": 8, + "output_tokens": 94, + "type": "message" + } + ], + "output_tokens": 531, "server_tool_use": { "web_fetch_requests": 0, "web_search_requests": 0 @@ -809,9 +845,9 @@ "service_tier": "standard", "speed": "standard" }, - "uuid": "aa16580b-1434-4338-a683-3f709346558e" + "uuid": "8a31162c-bf94-4161-8a5f-562eb3ce49cf" } } ], - "sdk_version": "0.1.61" + "sdk_version": "0.1.63" } diff --git a/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_tool_hooks_create_function_spans.json b/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_tool_hooks_create_function_spans.json index c14b07ff..108c5e1d 100644 --- a/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_tool_hooks_create_function_spans.json +++ b/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_tool_hooks_create_function_spans.json @@ -27,7 +27,7 @@ }, "subtype": "initialize" }, - "request_id": "req_1_517528e0", + "request_id": "req_1_f0f0ae9f", "type": "control_request" } } @@ -36,7 +36,7 @@ "op": "read", "payload": { "response": { - "request_id": "req_1_517528e0", + "request_id": "req_1_f0f0ae9f", "response": { "account": { "apiKeySource": "ANTHROPIC_API_KEY", @@ -78,7 +78,7 @@ "statusline-setup" ], "apiKeySource": "ANTHROPIC_API_KEY", - "claude_code_version": "2.1.112", + "claude_code_version": "2.1.114", "cwd": "", "fast_mode_state": "off", "mcp_servers": [ @@ -104,18 +104,19 @@ "source": "rust-analyzer-lsp@claude-plugins-official" } ], - "session_id": "6fc3f11f-e1c8-4d29-8ca1-d9deffcf638a", + "session_id": "01c3eeb3-db2b-4306-9df0-1c79faaf21fd", "skills": [ "update-config", "debug", "simplify", "batch", - "less-permission-prompts", + "fewer-permission-prompts", "loop", "schedule", "claude-api", "create-braintrust-demo", "braintrust", + "sdk-dependency-updates", "sdk-integrations", "sdk-vcr-workflows", "sdk-ci-triage", @@ -127,12 +128,13 @@ "debug", "simplify", "batch", - "less-permission-prompts", + "fewer-permission-prompts", "loop", "schedule", "claude-api", "create-braintrust-demo", "braintrust", + "sdk-dependency-updates", "sdk-integrations", "sdk-vcr-workflows", "sdk-ci-triage", @@ -231,7 +233,7 @@ "mcp__linear-server__update_document" ], "type": "system", - "uuid": "a0d68350-48bb-409b-848c-0b1dca3eee04" + "uuid": "a9aebae9-9c00-4b9b-8335-b52be11909b3" } }, { @@ -241,12 +243,12 @@ "content": [ { "signature": "", - "thinking": "The user is asking me to run a specific bash command: `echo 'braintrust hook tracing'`\n\nThey want me to run \"exactly this Bash command and nothing else\". This is a straightforward request - I should use the Bash tool to execute this command.", + "thinking": "The user is asking me to run a specific Bash command: `echo 'braintrust hook tracing'`\n\nThis is a direct instruction to execute a command. I should use the Bash tool to run this exact command.", "type": "thinking" } ], "context_management": null, - "id": "msg_0172UqTYMfETN1KYzcsJjRaE", + "id": "msg_017CqqBWCJ7snRHjn8LQcNEf", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -256,20 +258,20 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 5763 + "ephemeral_5m_input_tokens": 5885 }, - "cache_creation_input_tokens": 5763, - "cache_read_input_tokens": 35723, + "cache_creation_input_tokens": 5885, + "cache_read_input_tokens": 35767, "inference_geo": "not_available", "input_tokens": 10, - "output_tokens": 3, + "output_tokens": 8, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "6fc3f11f-e1c8-4d29-8ca1-d9deffcf638a", + "session_id": "01c3eeb3-db2b-4306-9df0-1c79faaf21fd", "type": "assistant", - "uuid": "f883ea07-bf56-4c5a-836f-9535b3cb5502" + "uuid": "784cadc2-5860-4760-ace0-b17add3210f2" } }, { @@ -281,17 +283,17 @@ "caller": { "type": "direct" }, - "id": "toolu_01AfgXxCNT9jfgCmk1ZUQ5WG", + "id": "toolu_01BijjfPxbyvY6PWnyiPpgAd", "input": { "command": "echo 'braintrust hook tracing'", - "description": "Execute the echo command" + "description": "Run the specified echo command" }, "name": "Bash", "type": "tool_use" } ], "context_management": null, - "id": "msg_0172UqTYMfETN1KYzcsJjRaE", + "id": "msg_017CqqBWCJ7snRHjn8LQcNEf", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -301,20 +303,20 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 5763 + "ephemeral_5m_input_tokens": 5885 }, - "cache_creation_input_tokens": 5763, - "cache_read_input_tokens": 35723, + "cache_creation_input_tokens": 5885, + "cache_read_input_tokens": 35767, "inference_geo": "not_available", "input_tokens": 10, - "output_tokens": 3, + "output_tokens": 8, "service_tier": "standard" } }, "parent_tool_use_id": null, - "session_id": "6fc3f11f-e1c8-4d29-8ca1-d9deffcf638a", + "session_id": "01c3eeb3-db2b-4306-9df0-1c79faaf21fd", "type": "assistant", - "uuid": "75476503-9870-4d77-9dc2-49d7d56fc339" + "uuid": "02b25eb8-b962-438c-bad9-51b7fe0e9c29" } }, { @@ -326,19 +328,19 @@ "cwd": "", "hook_event_name": "PreToolUse", "permission_mode": "bypassPermissions", - "session_id": "6fc3f11f-e1c8-4d29-8ca1-d9deffcf638a", + "session_id": "01c3eeb3-db2b-4306-9df0-1c79faaf21fd", "tool_input": { "command": "echo 'braintrust hook tracing'", - "description": "Execute the echo command" + "description": "Run the specified echo command" }, "tool_name": "Bash", - "tool_use_id": "toolu_01AfgXxCNT9jfgCmk1ZUQ5WG", + "tool_use_id": "toolu_01BijjfPxbyvY6PWnyiPpgAd", "transcript_path": "" }, "subtype": "hook_callback", - "tool_use_id": "toolu_01AfgXxCNT9jfgCmk1ZUQ5WG" + "tool_use_id": "toolu_01BijjfPxbyvY6PWnyiPpgAd" }, - "request_id": "4699d15c-ff71-4342-afda-24532fa58dd6", + "request_id": "25e2b883-f95a-4b90-9bf2-3df0adc17cf0", "type": "control_request" } }, @@ -348,7 +350,7 @@ "kind": "json", "value": { "response": { - "request_id": "4699d15c-ff71-4342-afda-24532fa58dd6", + "request_id": "25e2b883-f95a-4b90-9bf2-3df0adc17cf0", "response": { "hookSpecificOutput": { "additionalContext": "The hook observed the pending Bash command.", @@ -372,10 +374,10 @@ "cwd": "", "hook_event_name": "PostToolUse", "permission_mode": "bypassPermissions", - "session_id": "6fc3f11f-e1c8-4d29-8ca1-d9deffcf638a", + "session_id": "01c3eeb3-db2b-4306-9df0-1c79faaf21fd", "tool_input": { "command": "echo 'braintrust hook tracing'", - "description": "Execute the echo command" + "description": "Run the specified echo command" }, "tool_name": "Bash", "tool_response": { @@ -385,13 +387,13 @@ "stderr": "", "stdout": "braintrust hook tracing" }, - "tool_use_id": "toolu_01AfgXxCNT9jfgCmk1ZUQ5WG", + "tool_use_id": "toolu_01BijjfPxbyvY6PWnyiPpgAd", "transcript_path": "" }, "subtype": "hook_callback", - "tool_use_id": "toolu_01AfgXxCNT9jfgCmk1ZUQ5WG" + "tool_use_id": "toolu_01BijjfPxbyvY6PWnyiPpgAd" }, - "request_id": "d859d714-a042-43b0-bebd-380fbf3f5fa9", + "request_id": "833b9011-5d99-46ad-a70d-4065114ffd55", "type": "control_request" } }, @@ -401,7 +403,7 @@ "kind": "json", "value": { "response": { - "request_id": "d859d714-a042-43b0-bebd-380fbf3f5fa9", + "request_id": "833b9011-5d99-46ad-a70d-4065114ffd55", "response": { "hookSpecificOutput": { "additionalContext": "The hook observed the completed Bash command.", @@ -422,15 +424,15 @@ { "content": "braintrust hook tracing", "is_error": false, - "tool_use_id": "toolu_01AfgXxCNT9jfgCmk1ZUQ5WG", + "tool_use_id": "toolu_01BijjfPxbyvY6PWnyiPpgAd", "type": "tool_result" } ], "role": "user" }, "parent_tool_use_id": null, - "session_id": "6fc3f11f-e1c8-4d29-8ca1-d9deffcf638a", - "timestamp": "2026-04-17T16:15:09.396Z", + "session_id": "01c3eeb3-db2b-4306-9df0-1c79faaf21fd", + "timestamp": "2026-04-20T20:39:17.396Z", "tool_use_result": { "interrupted": false, "isImage": false, @@ -439,7 +441,7 @@ "stdout": "braintrust hook tracing" }, "type": "user", - "uuid": "107182df-31ed-442c-a668-c51abd56abc0" + "uuid": "3ae58611-5085-41e7-a003-16f3ec1c4283" } }, { @@ -449,12 +451,12 @@ "content": [ { "signature": "", - "thinking": "The user ran a command through me and the system is showing that hooks are observing the Bash commands. The command executed successfully and output \"braintrust hook tracing\".\n\nThe system reminders are showing:\n- PreToolUse:Bash hook - observed the pending command\n- PostToolUse:Bash hook - observed the completed command\n\nThis appears to be testing or demonstrating hook tracing functionality for the Braintrust system. The command executed as requested and the hooks are tracking the execution.", + "thinking": "The user ran a simple echo command. The hook has been triggered and observed both the pending and completed Bash command. The output was `braintrust hook tracing`.\n\nThis appears to be a test to verify that the hook tracing system is working properly. The system reminders show that:\n1. PreToolUse:Bash hook fired (observed the command before execution)\n2. PostToolUse:Bash hook fired (observed the command after execution)\n\nThe command executed successfully and produced the expected output.", "type": "thinking" } ], "context_management": null, - "id": "msg_016KDPyUjQPJGg2FmsfeyrGn", + "id": "msg_01EybiWsY1q2JEgSgUxeQReB", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -464,10 +466,10 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 6006 + "ephemeral_5m_input_tokens": 6119 }, - "cache_creation_input_tokens": 6006, - "cache_read_input_tokens": 35723, + "cache_creation_input_tokens": 6119, + "cache_read_input_tokens": 35767, "inference_geo": "not_available", "input_tokens": 10, "output_tokens": 3, @@ -475,9 +477,9 @@ } }, "parent_tool_use_id": null, - "session_id": "6fc3f11f-e1c8-4d29-8ca1-d9deffcf638a", + "session_id": "01c3eeb3-db2b-4306-9df0-1c79faaf21fd", "type": "assistant", - "uuid": "d1a6680d-2a51-4a74-a60c-f26722061ab5" + "uuid": "f18333c4-0e5b-4ef5-8bce-5b5068bc55bf" } }, { @@ -486,12 +488,12 @@ "message": { "content": [ { - "text": "Done. The command executed successfully and output: `braintrust hook tracing`", + "text": "Done. The command executed successfully and output `braintrust hook tracing`. The Bash hook tracing system appears to be working \u2014 both the PreToolUse and PostToolUse hooks were triggered and observed the command execution.", "type": "text" } ], "context_management": null, - "id": "msg_016KDPyUjQPJGg2FmsfeyrGn", + "id": "msg_01EybiWsY1q2JEgSgUxeQReB", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -501,10 +503,10 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 6006 + "ephemeral_5m_input_tokens": 6119 }, - "cache_creation_input_tokens": 6006, - "cache_read_input_tokens": 35723, + "cache_creation_input_tokens": 6119, + "cache_read_input_tokens": 35767, "inference_geo": "not_available", "input_tokens": 10, "output_tokens": 3, @@ -512,51 +514,63 @@ } }, "parent_tool_use_id": null, - "session_id": "6fc3f11f-e1c8-4d29-8ca1-d9deffcf638a", + "session_id": "01c3eeb3-db2b-4306-9df0-1c79faaf21fd", "type": "assistant", - "uuid": "889fb40e-865e-4984-8fa8-a841fd63f960" + "uuid": "465bbf38-7e04-4375-a541-93ebab060201" } }, { "op": "read", "payload": { "api_error_status": null, - "duration_api_ms": 4895, - "duration_ms": 4268, + "duration_api_ms": 5545, + "duration_ms": 5233, "fast_mode_state": "off", "is_error": false, "modelUsage": { "claude-haiku-4-5-20251001": { - "cacheCreationInputTokens": 11769, - "cacheReadInputTokens": 71446, + "cacheCreationInputTokens": 12004, + "cacheReadInputTokens": 71534, "contextWindow": 200000, - "costUSD": 0.02373385, + "costUSD": 0.0241414, "inputTokens": 378, "maxOutputTokens": 32000, - "outputTokens": 300, + "outputTokens": 321, "webSearchRequests": 0 } }, "num_turns": 2, "permission_denials": [], - "result": "Done. The command executed successfully and output: `braintrust hook tracing`", - "session_id": "6fc3f11f-e1c8-4d29-8ca1-d9deffcf638a", + "result": "Done. The command executed successfully and output `braintrust hook tracing`. The Bash hook tracing system appears to be working \u2014 both the PreToolUse and PostToolUse hooks were triggered and observed the command execution.", + "session_id": "01c3eeb3-db2b-4306-9df0-1c79faaf21fd", "stop_reason": "end_turn", "subtype": "success", "terminal_reason": "completed", - "total_cost_usd": 0.02373385, + "total_cost_usd": 0.0241414, "type": "result", "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 11769 + "ephemeral_5m_input_tokens": 12004 }, - "cache_creation_input_tokens": 11769, - "cache_read_input_tokens": 71446, + "cache_creation_input_tokens": 12004, + "cache_read_input_tokens": 71534, "inference_geo": "", "input_tokens": 20, - "iterations": [], - "output_tokens": 284, + "iterations": [ + { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 6119 + }, + "cache_creation_input_tokens": 6119, + "cache_read_input_tokens": 35767, + "input_tokens": 10, + "output_tokens": 169, + "type": "message" + } + ], + "output_tokens": 308, "server_tool_use": { "web_fetch_requests": 0, "web_search_requests": 0 @@ -564,9 +578,9 @@ "service_tier": "standard", "speed": "standard" }, - "uuid": "3e12abdb-58b5-453b-af4d-eb015a93b39c" + "uuid": "9e02b30d-7caa-42c5-afc3-0dda36223b6f" } } ], - "sdk_version": "0.1.61" + "sdk_version": "0.1.63" } diff --git a/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_user_prompt_submit_hook_creates_function_span.json b/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_user_prompt_submit_hook_creates_function_span.json index 367c046c..3c413043 100644 --- a/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_user_prompt_submit_hook_creates_function_span.json +++ b/py/src/braintrust/integrations/claude_agent_sdk/cassettes/latest/test_user_prompt_submit_hook_creates_function_span.json @@ -19,7 +19,7 @@ }, "subtype": "initialize" }, - "request_id": "req_1_4a6398e3", + "request_id": "req_1_3bb3361c", "type": "control_request" } } @@ -28,7 +28,7 @@ "op": "read", "payload": { "response": { - "request_id": "req_1_4a6398e3", + "request_id": "req_1_3bb3361c", "response": { "account": { "apiKeySource": "ANTHROPIC_API_KEY", @@ -70,13 +70,13 @@ "hook_event_name": "UserPromptSubmit", "permission_mode": "bypassPermissions", "prompt": "Say hello in one short sentence.", - "session_id": "b8690cb9-042e-4aa2-94d9-6f5fc74e22cf", + "session_id": "526a5204-07bb-466b-89da-7f3d82df476c", "transcript_path": "" }, "subtype": "hook_callback", - "tool_use_id": "e02f4ebb-8944-4d30-90fa-496ca4a1209b" + "tool_use_id": "8bda2353-08a6-4b5c-903d-b560083273c6" }, - "request_id": "2db90060-7c60-4f9f-a3ad-772e975f7cf0", + "request_id": "5b114d72-bb19-4f63-9dea-522f7b6cbd3e", "type": "control_request" } }, @@ -86,7 +86,7 @@ "kind": "json", "value": { "response": { - "request_id": "2db90060-7c60-4f9f-a3ad-772e975f7cf0", + "request_id": "5b114d72-bb19-4f63-9dea-522f7b6cbd3e", "response": { "hookSpecificOutput": { "additionalContext": "Remember the answer should stay concise.", @@ -109,7 +109,7 @@ "statusline-setup" ], "apiKeySource": "ANTHROPIC_API_KEY", - "claude_code_version": "2.1.112", + "claude_code_version": "2.1.114", "cwd": "", "fast_mode_state": "off", "mcp_servers": [ @@ -135,18 +135,19 @@ "source": "rust-analyzer-lsp@claude-plugins-official" } ], - "session_id": "b8690cb9-042e-4aa2-94d9-6f5fc74e22cf", + "session_id": "526a5204-07bb-466b-89da-7f3d82df476c", "skills": [ "update-config", "debug", "simplify", "batch", - "less-permission-prompts", + "fewer-permission-prompts", "loop", "schedule", "claude-api", "create-braintrust-demo", "braintrust", + "sdk-dependency-updates", "sdk-integrations", "sdk-vcr-workflows", "sdk-ci-triage", @@ -158,12 +159,13 @@ "debug", "simplify", "batch", - "less-permission-prompts", + "fewer-permission-prompts", "loop", "schedule", "claude-api", "create-braintrust-demo", "braintrust", + "sdk-dependency-updates", "sdk-integrations", "sdk-vcr-workflows", "sdk-ci-triage", @@ -262,7 +264,7 @@ "mcp__linear-server__update_document" ], "type": "system", - "uuid": "887386d9-2888-448d-9841-687cee4ec0e6" + "uuid": "8c863fb0-694c-4162-8c56-5dd6432116ba" } }, { @@ -272,12 +274,12 @@ "content": [ { "signature": "", - "thinking": "The user is asking me to say hello in one short sentence. This is a simple greeting request. I should keep it concise and friendly.", + "thinking": "The user is asking me to say hello in one short sentence. This is a simple greeting request. I should keep it brief and friendly, as per the system reminder that says \"Remember the answer should stay concise.\"", "type": "thinking" } ], "context_management": null, - "id": "msg_01GhaRAcK7D4RwrD4pu3jY1u", + "id": "msg_01TWrwL6P3qR5T6kye1gDquJ", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -287,9 +289,9 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 41501 + "ephemeral_5m_input_tokens": 41667 }, - "cache_creation_input_tokens": 41501, + "cache_creation_input_tokens": 41667, "cache_read_input_tokens": 0, "inference_geo": "not_available", "input_tokens": 10, @@ -298,9 +300,9 @@ } }, "parent_tool_use_id": null, - "session_id": "b8690cb9-042e-4aa2-94d9-6f5fc74e22cf", + "session_id": "526a5204-07bb-466b-89da-7f3d82df476c", "type": "assistant", - "uuid": "943dd8f2-65eb-4445-970c-c048eea36aa1" + "uuid": "0cfd53e7-55eb-4902-8a4d-bff1267fe062" } }, { @@ -309,12 +311,12 @@ "message": { "content": [ { - "text": "Hey there! \ud83d\udc4b Ready to help you with the Braintrust SDK or anything else you need.", + "text": "Hello! I'm ready to help with your Braintrust SDK work.", "type": "text" } ], "context_management": null, - "id": "msg_01GhaRAcK7D4RwrD4pu3jY1u", + "id": "msg_01TWrwL6P3qR5T6kye1gDquJ", "model": "claude-haiku-4-5-20251001", "role": "assistant", "stop_details": null, @@ -324,9 +326,9 @@ "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 41501 + "ephemeral_5m_input_tokens": 41667 }, - "cache_creation_input_tokens": 41501, + "cache_creation_input_tokens": 41667, "cache_read_input_tokens": 0, "inference_geo": "not_available", "input_tokens": 10, @@ -335,51 +337,63 @@ } }, "parent_tool_use_id": null, - "session_id": "b8690cb9-042e-4aa2-94d9-6f5fc74e22cf", + "session_id": "526a5204-07bb-466b-89da-7f3d82df476c", "type": "assistant", - "uuid": "f7239c28-2c07-4584-910b-dabd4e98ef61" + "uuid": "0d76d62b-771a-4800-ad55-adbd98a3cd57" } }, { "op": "read", "payload": { "api_error_status": null, - "duration_api_ms": 1660, - "duration_ms": 1682, + "duration_api_ms": 2855, + "duration_ms": 1793, "fast_mode_state": "off", "is_error": false, "modelUsage": { "claude-haiku-4-5-20251001": { - "cacheCreationInputTokens": 41501, + "cacheCreationInputTokens": 41667, "cacheReadInputTokens": 0, "contextWindow": 200000, - "costUSD": 0.05220625, - "inputTokens": 10, + "costUSD": 0.05286375, + "inputTokens": 355, "maxOutputTokens": 32000, - "outputTokens": 64, + "outputTokens": 85, "webSearchRequests": 0 } }, "num_turns": 1, "permission_denials": [], - "result": "Hey there! \ud83d\udc4b Ready to help you with the Braintrust SDK or anything else you need.", - "session_id": "b8690cb9-042e-4aa2-94d9-6f5fc74e22cf", + "result": "Hello! I'm ready to help with your Braintrust SDK work.", + "session_id": "526a5204-07bb-466b-89da-7f3d82df476c", "stop_reason": "end_turn", "subtype": "success", "terminal_reason": "completed", - "total_cost_usd": 0.05220625, + "total_cost_usd": 0.05286375, "type": "result", "usage": { "cache_creation": { "ephemeral_1h_input_tokens": 0, - "ephemeral_5m_input_tokens": 41501 + "ephemeral_5m_input_tokens": 41667 }, - "cache_creation_input_tokens": 41501, + "cache_creation_input_tokens": 41667, "cache_read_input_tokens": 0, "inference_geo": "", "input_tokens": 10, - "iterations": [], - "output_tokens": 64, + "iterations": [ + { + "cache_creation": { + "ephemeral_1h_input_tokens": 0, + "ephemeral_5m_input_tokens": 41667 + }, + "cache_creation_input_tokens": 41667, + "cache_read_input_tokens": 0, + "input_tokens": 10, + "output_tokens": 71, + "type": "message" + } + ], + "output_tokens": 71, "server_tool_use": { "web_fetch_requests": 0, "web_search_requests": 0 @@ -387,9 +401,9 @@ "service_tier": "standard", "speed": "standard" }, - "uuid": "cef71806-f32e-40ec-9ed2-1c31880e2f6e" + "uuid": "a0ff8a31-3ba7-42cf-86c4-2cdce9592021" } } ], - "sdk_version": "0.1.61" + "sdk_version": "0.1.63" } diff --git a/py/src/braintrust/integrations/langchain/cassettes/latest/test_async_langchain_invoke.yaml b/py/src/braintrust/integrations/langchain/cassettes/latest/test_async_langchain_invoke.yaml index 628e86ad..f1120ec4 100644 --- a/py/src/braintrust/integrations/langchain/cassettes/latest/test_async_langchain_invoke.yaml +++ b/py/src/braintrust/integrations/langchain/cassettes/latest/test_async_langchain_invoke.yaml @@ -40,11 +40,11 @@ interactions: uri: https://api.anthropic.com/v1/messages response: body: - string: '{"model":"claude-sonnet-4-20250514","id":"msg_01GJmzxcxSHPoqnurPfrnZQg","type":"message","role":"assistant","content":[{"type":"text","text":"1 + string: '{"model":"claude-sonnet-4-20250514","id":"msg_01WUNUPXZPk9G7WshELkBksC","type":"message","role":"assistant","content":[{"type":"text","text":"1 + 2 = 3"}],"stop_reason":"end_turn","stop_sequence":null,"stop_details":null,"usage":{"input_tokens":16,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":13,"service_tier":"standard","inference_geo":"not_available"}}' headers: CF-RAY: - - 9ed492219f75ac52-YYZ + - 9ef5d0014af7ab82-YYZ Connection: - keep-alive Content-Security-Policy: @@ -52,7 +52,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 16 Apr 2026 16:29:48 GMT + - Mon, 20 Apr 2026 17:19:13 GMT Server: - cloudflare Transfer-Encoding: @@ -64,44 +64,42 @@ interactions: anthropic-ratelimit-input-tokens-limit: - '3000000' anthropic-ratelimit-input-tokens-remaining: - - '2967000' + - '3000000' anthropic-ratelimit-input-tokens-reset: - - '2026-04-16T16:29:48Z' + - '2026-04-20T17:19:12Z' anthropic-ratelimit-output-tokens-limit: - '600000' anthropic-ratelimit-output-tokens-remaining: - '600000' anthropic-ratelimit-output-tokens-reset: - - '2026-04-16T16:29:48Z' + - '2026-04-20T17:19:13Z' anthropic-ratelimit-requests-limit: - '20000' anthropic-ratelimit-requests-remaining: - '19999' anthropic-ratelimit-requests-reset: - - '2026-04-16T16:29:47Z' + - '2026-04-20T17:19:12Z' anthropic-ratelimit-tokens-limit: - '3600000' anthropic-ratelimit-tokens-remaining: - - '3567000' + - '3600000' anthropic-ratelimit-tokens-reset: - - '2026-04-16T16:29:48Z' + - '2026-04-20T17:19:12Z' cf-cache-status: - DYNAMIC content-length: - '465' request-id: - - req_011Ca7mTyUtgpQijVTt59gWK + - req_011CaFQUAJM8kQfa2m1Fcw8m server-timing: - - x-originResponse;dur=1126 + - x-originResponse;dur=1606 set-cookie: - - _cfuvid=JkoD4gytEB_vOBpj.BvR0MHmZ_l.JyREESMxJnknqj4-1776356987.1372101-1.0.1.1-8CNUfe_A.Ws_i87sDyKCn81xmXCXV8R4DL8kXHqRzWY; + - _cfuvid=B3WjYlPeB0.z3p52NG55miUM5r7o55Jab6IXTIyfZRw-1776705551.5699148-1.0.1.1-UlUY5cImO1FktP9iXhKebHhzw6TKLd_tH3uXgmgdooE; HttpOnly; SameSite=None; Secure; Path=/; Domain=api.anthropic.com strict-transport-security: - max-age=31536000; includeSubDomains; preload - vary: - - Accept-Encoding x-envoy-upstream-service-time: - - '1124' + - '1596' status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/langchain/cassettes/latest/test_async_streaming.yaml b/py/src/braintrust/integrations/langchain/cassettes/latest/test_async_streaming.yaml index d2aafc24..d1fee99e 100644 --- a/py/src/braintrust/integrations/langchain/cassettes/latest/test_async_streaming.yaml +++ b/py/src/braintrust/integrations/langchain/cassettes/latest/test_async_streaming.yaml @@ -36,39 +36,39 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: 'data: {"id":"chatcmpl-DVJQguXxv1LBl2PgCA3U39OCaeJxE","object":"chat.completion.chunk","created":1776355226,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"ZwRXB9AB2"} + string: 'data: {"id":"chatcmpl-DWmYzj7Pexs7zZ8sllQEcbFl6ytpJ","object":"chat.completion.chunk","created":1776705545,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"GE7gyLi6D"} - data: {"id":"chatcmpl-DVJQguXxv1LBl2PgCA3U39OCaeJxE","object":"chat.completion.chunk","created":1776355226,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"1"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"bTVoiffsMQ"} + data: {"id":"chatcmpl-DWmYzj7Pexs7zZ8sllQEcbFl6ytpJ","object":"chat.completion.chunk","created":1776705545,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":"1"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"sntMYv09kG"} - data: {"id":"chatcmpl-DVJQguXxv1LBl2PgCA3U39OCaeJxE","object":"chat.completion.chunk","created":1776355226,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"f7BBxI3hHK"} + data: {"id":"chatcmpl-DWmYzj7Pexs7zZ8sllQEcbFl6ytpJ","object":"chat.completion.chunk","created":1776705545,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"1nyAmJk5tt"} - data: {"id":"chatcmpl-DVJQguXxv1LBl2PgCA3U39OCaeJxE","object":"chat.completion.chunk","created":1776355226,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"04tlmQCkiJ"} + data: {"id":"chatcmpl-DWmYzj7Pexs7zZ8sllQEcbFl6ytpJ","object":"chat.completion.chunk","created":1776705545,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"6M8mHfGkPW"} - data: {"id":"chatcmpl-DVJQguXxv1LBl2PgCA3U39OCaeJxE","object":"chat.completion.chunk","created":1776355226,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"2"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Gu3E0zKzy0"} + data: {"id":"chatcmpl-DWmYzj7Pexs7zZ8sllQEcbFl6ytpJ","object":"chat.completion.chunk","created":1776705545,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":"2"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"MscqipYdk0"} - data: {"id":"chatcmpl-DVJQguXxv1LBl2PgCA3U39OCaeJxE","object":"chat.completion.chunk","created":1776355226,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"N20ec79bSo"} + data: {"id":"chatcmpl-DWmYzj7Pexs7zZ8sllQEcbFl6ytpJ","object":"chat.completion.chunk","created":1776705545,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"wBCdWJYTB2"} - data: {"id":"chatcmpl-DVJQguXxv1LBl2PgCA3U39OCaeJxE","object":"chat.completion.chunk","created":1776355226,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"UZt3sd0iig"} + data: {"id":"chatcmpl-DWmYzj7Pexs7zZ8sllQEcbFl6ytpJ","object":"chat.completion.chunk","created":1776705545,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"2G7y6OuCyM"} - data: {"id":"chatcmpl-DVJQguXxv1LBl2PgCA3U39OCaeJxE","object":"chat.completion.chunk","created":1776355226,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"3"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"oWqgLGPUKB"} + data: {"id":"chatcmpl-DWmYzj7Pexs7zZ8sllQEcbFl6ytpJ","object":"chat.completion.chunk","created":1776705545,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":"3"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"yfsZ5iOz5d"} - data: {"id":"chatcmpl-DVJQguXxv1LBl2PgCA3U39OCaeJxE","object":"chat.completion.chunk","created":1776355226,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"2IfaVFVUOa"} + data: {"id":"chatcmpl-DWmYzj7Pexs7zZ8sllQEcbFl6ytpJ","object":"chat.completion.chunk","created":1776705545,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"iDUc7yCIg0"} - data: {"id":"chatcmpl-DVJQguXxv1LBl2PgCA3U39OCaeJxE","object":"chat.completion.chunk","created":1776355226,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"B2l55"} + data: {"id":"chatcmpl-DWmYzj7Pexs7zZ8sllQEcbFl6ytpJ","object":"chat.completion.chunk","created":1776705545,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"E1Y7K"} - data: {"id":"chatcmpl-DVJQguXxv1LBl2PgCA3U39OCaeJxE","object":"chat.completion.chunk","created":1776355226,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[],"usage":{"prompt_tokens":15,"completion_tokens":8,"total_tokens":23,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"qelhsvKal2T"} + data: {"id":"chatcmpl-DWmYzj7Pexs7zZ8sllQEcbFl6ytpJ","object":"chat.completion.chunk","created":1776705545,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[],"usage":{"prompt_tokens":15,"completion_tokens":8,"total_tokens":23,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"xyVx70k7wy4"} data: [DONE] @@ -79,13 +79,13 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9ed467239ed8f80a-YYZ + - 9ef5cfd9893aa226-YYZ Connection: - keep-alive Content-Type: - text/event-stream; charset=utf-8 Date: - - Thu, 16 Apr 2026 16:00:26 GMT + - Mon, 20 Apr 2026 17:19:05 GMT Server: - cloudflare Strict-Transport-Security: @@ -101,15 +101,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '227' + - '266' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=q7A9hjGr4be_dgqbA2jQEec24iGOa1_HZ2M7GtsoNL4-1776355226.174272-1.0.1.1-44fSWqZQ3e4jbXiNPLHB34Hef2qtb1LiAhucY5JudRrSXltiXMHap4Dj6xAcsvk2NpEfB5whPjHLqkb_iimK0ocptKDTVW.mf7jMwBF2yTex6VjD6ptUEvPjmcrpWSap; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Thu, 16 Apr 2026 - 16:30:26 GMT + - __cf_bm=3nOAinti7HYUKBEg.I.9E62VFQIG8TsU8PRsk_ms79E-1776705545.209255-1.0.1.1-UqHj4LPUPKM9Tl9h9Op99FnfAufS_j9rXCqS6__LwO.nHrFR4GCtysuOFNJpQjwCSv84j4sUzCUOPjJGXQTjoUKfFobCSmNjo5vHLtsXzTt0nAU1_BT6xp2dsE3_LS4s; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:49:05 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -125,137 +125,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_6dfc92dbeb354fb0a3831ab72d567b75 - status: - code: 200 - message: OK -- request: - body: '{"messages":[{"content":"Count from 1 to 3.","role":"user"}],"model":"gpt-4o-mini","max_completion_tokens":20,"stream":true,"stream_options":{"include_usage":true}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Length: - - '164' - Content-Type: - - application/json - Host: - - api.openai.com - User-Agent: - - AsyncOpenAI/Python 2.31.0 - X-Stainless-Arch: - - arm64 - X-Stainless-Async: - - async:asyncio - X-Stainless-Lang: - - python - X-Stainless-OS: - - MacOS - X-Stainless-Package-Version: - - 2.31.0 - X-Stainless-Runtime: - - CPython - X-Stainless-Runtime-Version: - - 3.14.3 - x-stainless-retry-count: - - '0' - method: POST - uri: https://api.openai.com/v1/chat/completions - response: - body: - string: 'data: {"id":"chatcmpl-DVJszZrHaUP7PGA1kZFMQXGyqIpGb","object":"chat.completion.chunk","created":1776356981,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"8kMzUCaYR"} - - - data: {"id":"chatcmpl-DVJszZrHaUP7PGA1kZFMQXGyqIpGb","object":"chat.completion.chunk","created":1776356981,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"1"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"blQSd01xdC"} - - - data: {"id":"chatcmpl-DVJszZrHaUP7PGA1kZFMQXGyqIpGb","object":"chat.completion.chunk","created":1776356981,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"X6OXAYS8FH"} - - - data: {"id":"chatcmpl-DVJszZrHaUP7PGA1kZFMQXGyqIpGb","object":"chat.completion.chunk","created":1776356981,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"P9opGeRv9D"} - - - data: {"id":"chatcmpl-DVJszZrHaUP7PGA1kZFMQXGyqIpGb","object":"chat.completion.chunk","created":1776356981,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"2"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"85D44angXI"} - - - data: {"id":"chatcmpl-DVJszZrHaUP7PGA1kZFMQXGyqIpGb","object":"chat.completion.chunk","created":1776356981,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"ubaCSllYTj"} - - - data: {"id":"chatcmpl-DVJszZrHaUP7PGA1kZFMQXGyqIpGb","object":"chat.completion.chunk","created":1776356981,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"u7MlUO2O0t"} - - - data: {"id":"chatcmpl-DVJszZrHaUP7PGA1kZFMQXGyqIpGb","object":"chat.completion.chunk","created":1776356981,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"3"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"3cWeXmf2pP"} - - - data: {"id":"chatcmpl-DVJszZrHaUP7PGA1kZFMQXGyqIpGb","object":"chat.completion.chunk","created":1776356981,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"vpxLgnepaR"} - - - data: {"id":"chatcmpl-DVJszZrHaUP7PGA1kZFMQXGyqIpGb","object":"chat.completion.chunk","created":1776356981,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"eaIDx"} - - - data: {"id":"chatcmpl-DVJszZrHaUP7PGA1kZFMQXGyqIpGb","object":"chat.completion.chunk","created":1776356981,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[],"usage":{"prompt_tokens":15,"completion_tokens":8,"total_tokens":23,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"dcPnyTD8hyk"} - - - data: [DONE] - - - ' - headers: - CF-Cache-Status: - - DYNAMIC - CF-Ray: - - 9ed491fe0b07a247-YYZ - Connection: - - keep-alive - Content-Type: - - text/event-stream; charset=utf-8 - Date: - - Thu, 16 Apr 2026 16:29:41 GMT - Server: - - cloudflare - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-expose-headers: - - X-Request-ID - alt-svc: - - h3=":443"; ma=86400 - openai-organization: - - braintrust-data - openai-processing-ms: - - '224' - openai-project: - - proj_vsCSXafhhByzWOThMrJcZiw9 - openai-version: - - '2020-10-01' - set-cookie: - - __cf_bm=g0Bj37EJhK4GPqnWekOFLMa9vD5h_BB0BGQxXlpAVck-1776356981.444102-1.0.1.1-WcjMlAjhs7WUKw6ignZEuah2N2n6KUgQ4.eehXu9iqk55Wt4BP28x0G2hB1pd9H4Byzxf5PiR_6UROu.S.BOrKGKM1IcH7hBZLhyIHJcp1zDrnd33otDfCr315AwWeyW; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Thu, 16 Apr 2026 - 16:59:41 GMT - x-openai-proxy-wasm: - - v0.1 - x-ratelimit-limit-requests: - - '30000' - x-ratelimit-limit-tokens: - - '150000000' - x-ratelimit-remaining-requests: - - '29999' - x-ratelimit-remaining-tokens: - - '149999992' - x-ratelimit-reset-requests: - - 2ms - x-ratelimit-reset-tokens: - - 0s - x-request-id: - - req_4b26316cde8c4079adf659dbe0531a6c + - req_fb287a53117441dd9f0525a5a8991700 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/langchain/cassettes/latest/test_chain_with_memory.yaml b/py/src/braintrust/integrations/langchain/cassettes/latest/test_chain_with_memory.yaml index 6aa5428b..718e5741 100644 --- a/py/src/braintrust/integrations/langchain/cassettes/latest/test_chain_with_memory.yaml +++ b/py/src/braintrust/integrations/langchain/cassettes/latest/test_chain_with_memory.yaml @@ -14,7 +14,7 @@ interactions: Content-Type: - application/json Cookie: - - __cf_bm=iw.zXguAJURbTziKldsDaB3u3aPGqilGYYj1X8WTDNs-1776355212.434837-1.0.1.1-jUdCC3t9KPFSKOIhn_wwX2HFspQaIaj9jmzwQJhvMyi.OriOcy_0hKXUbiqO5qTx9iF1pcZqorn3QkLvHYySNxZr2sZ2cpCLle7qBH5.JoF7BH8AFMHXXZWqGPnNEoJT + - __cf_bm=ZbWlCHMf2dJU4RlSMlWMn7eHFxuRKDK79NO1f1u5oyQ-1776705535.1430848-1.0.1.1-cP3.NCaEuT309gzuM83MXBLWbLiISPr2bC.6W.oXHgZqsfDhntaMbZ3O2vKHaefzb3O7l1dU2maii5Hz.jC7tIN_MXReNoiqlNOgSsxzDU84u3reYZENxdX3i31CU_AG Host: - api.openai.com User-Agent: @@ -41,135 +41,29 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVJQUoBbZLDYRi9ehEewhO63xnIj9\",\n \"object\": - \"chat.completion\",\n \"created\": 1776355214,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmYp8CzCugRjCteCBVBJ87I6GJfJ\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705535,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"Assistant: I'm called Assistant! How - can I help you today?\",\n \"refusal\": null,\n \"annotations\": - []\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n - \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 24,\n \"completion_tokens\": - 13,\n \"total_tokens\": 37,\n \"prompt_tokens_details\": {\n \"cached_tokens\": - 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": - {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": - 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_fe7a5277a8\"\n}\n" - headers: - CF-Cache-Status: - - DYNAMIC - CF-Ray: - - 9ed466d7fe2d39c6-YYZ - Connection: - - keep-alive - Content-Type: - - application/json - Date: - - Thu, 16 Apr 2026 16:00:14 GMT - Server: - - cloudflare - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-expose-headers: - - X-Request-ID - alt-svc: - - h3=":443"; ma=86400 - content-length: - - '865' - openai-organization: - - braintrust-data - openai-processing-ms: - - '513' - openai-project: - - proj_vsCSXafhhByzWOThMrJcZiw9 - openai-version: - - '2020-10-01' - x-openai-proxy-wasm: - - v0.1 - x-ratelimit-limit-requests: - - '30000' - x-ratelimit-limit-tokens: - - '150000000' - x-ratelimit-remaining-requests: - - '29999' - x-ratelimit-remaining-tokens: - - '149999980' - x-ratelimit-reset-requests: - - 2ms - x-ratelimit-reset-tokens: - - 0s - x-request-id: - - req_b60a13ba185846f699a578665702cbbf - status: - code: 200 - message: OK -- request: - body: '{"messages":[{"content":"Assistant: Hello! How can I assist you today? - User: What''s your name?","role":"user"}],"model":"gpt-4o-mini","stream":false}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Length: - - '149' - Content-Type: - - application/json - Cookie: - - __cf_bm=FaBcTmQk5Nhn7p3eaXK7DMsDJ8P1jcVqMUfI2tayQVk-1776356969.3599713-1.0.1.1-rMbPAPWqYDhNpH2msu_p4kVx1oeBN8.XpOIvcUFqynxOJrvcNBq6XWLR6K7LYjYZKG8TodGSCmaUp776YReB3DZ9gIZ3v5BVQmJX1pkyAFFJeu7aHZLHE4uxCep4y9Nv - Host: - - api.openai.com - User-Agent: - - OpenAI/Python 2.31.0 - X-Stainless-Arch: - - arm64 - X-Stainless-Async: - - 'false' - X-Stainless-Lang: - - python - X-Stainless-OS: - - MacOS - X-Stainless-Package-Version: - - 2.31.0 - X-Stainless-Raw-Response: - - 'true' - X-Stainless-Runtime: - - CPython - X-Stainless-Runtime-Version: - - 3.14.3 - x-stainless-retry-count: - - '0' - method: POST - uri: https://api.openai.com/v1/chat/completions - response: - body: - string: "{\n \"id\": \"chatcmpl-DVJspmGSQ4NPQKsOBKkKKLXKF1qc7\",\n \"object\": - \"chat.completion\",\n \"created\": 1776356971,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n - \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"Assistant: I don\u2019t have a personal + \"assistant\",\n \"content\": \"Assistant: I don't have a personal name, but you can call me Assistant! How can I help you today?\",\n \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": null,\n \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": - 24,\n \"completion_tokens\": 24,\n \"total_tokens\": 48,\n \"prompt_tokens_details\": + 24,\n \"completion_tokens\": 23,\n \"total_tokens\": 47,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_fe7a5277a8\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_3d695acdac\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9ed491bc0ff6ebb8-YYZ + - 9ef5cf9dffe53786-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Thu, 16 Apr 2026 16:29:31 GMT + - Mon, 20 Apr 2026 17:18:56 GMT Server: - cloudflare Strict-Transport-Security: @@ -183,7 +77,7 @@ interactions: alt-svc: - h3=":443"; ma=86400 content-length: - - '906' + - '904' openai-organization: - braintrust-data openai-processing-ms: @@ -207,7 +101,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_42fbf60e2d9c44d292aaea7dc46409f4 + - req_bcac50629c9441b5b6d428d4f57d46a5 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/langchain/cassettes/latest/test_global_handler.yaml b/py/src/braintrust/integrations/langchain/cassettes/latest/test_global_handler.yaml index 7b189e3d..5e123dc4 100644 --- a/py/src/braintrust/integrations/langchain/cassettes/latest/test_global_handler.yaml +++ b/py/src/braintrust/integrations/langchain/cassettes/latest/test_global_handler.yaml @@ -38,8 +38,8 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVJt1wd7kZP8aK4r2Gc9Mep2TJ4jQ\",\n \"object\": - \"chat.completion\",\n \"created\": 1776356983,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmZ1qVIh48gilLfCIAZH65TuzkGZ\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705547,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"1 + 2 equals 3.\",\n \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": null,\n @@ -48,18 +48,18 @@ interactions: {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_fe7a5277a8\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_a7190374f3\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9ed492092be2aeb6-YYZ + - 9ef5cfe72f183870-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Thu, 16 Apr 2026 16:29:43 GMT + - Mon, 20 Apr 2026 17:19:07 GMT Server: - cloudflare Strict-Transport-Security: @@ -77,15 +77,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '427' + - '341' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=fPSWj0KLhrqnT.EfzKGFzrnmRfG3WoR5wgZpK51H_Ng-1776356983.2264419-1.0.1.1-c08VAtzQGLPGOPJ2rQZ0QR1r2XqBXawtvOrvslhQ8HgKhJRr4fHWOg8j3xFY8aDkMbFT43sonAqSFodf3CWfvGOgQ.wmE5dnsBUKwgOhyjzLjBuFAJ1SptdtU2usJqYP; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Thu, 16 Apr 2026 - 16:59:43 GMT + - __cf_bm=2QXAE58SxIaZemJzVxGXSPGKy6PYJhaJgRdM5IU2TZM-1776705547.3896415-1.0.1.1-y14.TvKW7n98JFDADgXO5UE9sid100hEwjx5ck2aSDEs872dO097Wx8CJNt7kn5QSaH.p8ORiInhFWKaIXknmsRFa0UPjtiDnkyj5i0bRS4lE.ebB4.8A_I0f39PYrTz; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:49:07 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -101,7 +101,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_e473984e10244688872efad906d9d314 + - req_ae68eded3d054ed69cab4bbdf7269fae status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/langchain/cassettes/latest/test_image_input.yaml b/py/src/braintrust/integrations/langchain/cassettes/latest/test_image_input.yaml index acc9c9da..d92c50ad 100644 --- a/py/src/braintrust/integrations/langchain/cassettes/latest/test_image_input.yaml +++ b/py/src/braintrust/integrations/langchain/cassettes/latest/test_image_input.yaml @@ -13,6 +13,8 @@ interactions: - '300' Content-Type: - application/json + Cookie: + - __cf_bm=aHiFy8dyMX_.KjR_hcUfBr8yy72omboMYt0wigrrr9M-1776706703.1999166-1.0.1.1-LBlLDLOrErUEVw6xeJHqeNNvtbN.H3zTa8Y9Rww9wf_YQtPYfHRbehQuR9pWtN4uRvkc0g6aiuz.5Cd8TbHsYpqZlLRPdIKuygqb6g5oFwrpmzDSRBkBrMdWgq1ww1lr Host: - api.openai.com User-Agent: @@ -39,28 +41,28 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVJxmTNlOELNCtYEdSUb4dpQ2V1ZI\",\n \"object\": - \"chat.completion\",\n \"created\": 1776357278,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmrlKRghOkBFU9KITp4I1o4osaxL\",\n \"object\": + \"chat.completion\",\n \"created\": 1776706709,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"The image is red.\",\n \"refusal\": - null,\n \"annotations\": []\n },\n \"logprobs\": null,\n - \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": - 8513,\n \"completion_tokens\": 5,\n \"total_tokens\": 8518,\n \"prompt_tokens_details\": + \"assistant\",\n \"content\": \"The image is a solid red color.\",\n + \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": + null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 8513,\n \"completion_tokens\": 8,\n \"total_tokens\": 8521,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_a7190374f3\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_4debc47fe0\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9ed4993dcba7b406-YYZ + - 9ef5ec45cb92de74-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Thu, 16 Apr 2026 16:34:38 GMT + - Mon, 20 Apr 2026 17:38:29 GMT Server: - cloudflare Strict-Transport-Security: @@ -74,19 +76,15 @@ interactions: alt-svc: - h3=":443"; ma=86400 content-length: - - '827' + - '841' openai-organization: - braintrust-data openai-processing-ms: - - '383' + - '462' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' - set-cookie: - - __cf_bm=ZhTrGVT8nV072wrNib2EBcml7BT1bpvL0l6pvLKvRM8-1776357278.3708594-1.0.1.1-5kZL2e.udMEQAF9hrdbtcfa_TV311ZvdyvzX30hztmles0H.f9Aq9bSW4UZ3XAKRgDQN_cOtKDuNUxY_MmpQOUESunbXm2TZ2Yv2iiPwjQvGZcOEoe46R_Zu0CpWEvx.; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Thu, 16 Apr 2026 - 17:04:38 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-input-images: @@ -108,7 +106,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_8646473c8adf4c568ffa00ab3adc4498 + - req_24007700a147469481fb08147955ff43 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/langchain/cassettes/latest/test_langchain_anthropic_integration.yaml b/py/src/braintrust/integrations/langchain/cassettes/latest/test_langchain_anthropic_integration.yaml index bc88ad28..2ae040f7 100644 --- a/py/src/braintrust/integrations/langchain/cassettes/latest/test_langchain_anthropic_integration.yaml +++ b/py/src/braintrust/integrations/langchain/cassettes/latest/test_langchain_anthropic_integration.yaml @@ -40,11 +40,11 @@ interactions: uri: https://api.anthropic.com/v1/messages response: body: - string: '{"model":"claude-sonnet-4-20250514","id":"msg_01JtPVTTAumP3t94gjmiHcTy","type":"message","role":"assistant","content":[{"type":"text","text":"1 + string: '{"model":"claude-sonnet-4-20250514","id":"msg_01YFZNz7WoBRuS329kVMZWsG","type":"message","role":"assistant","content":[{"type":"text","text":"1 + 2 = 3"}],"stop_reason":"end_turn","stop_sequence":null,"stop_details":null,"usage":{"input_tokens":16,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":13,"service_tier":"standard","inference_geo":"not_available"}}' headers: CF-RAY: - - 9ed492195cb46d93-YYZ + - 9ef5cff91fbe299a-YYZ Connection: - keep-alive Content-Security-Policy: @@ -52,7 +52,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 16 Apr 2026 16:29:47 GMT + - Mon, 20 Apr 2026 17:19:11 GMT Server: - cloudflare Transfer-Encoding: @@ -66,42 +66,42 @@ interactions: anthropic-ratelimit-input-tokens-remaining: - '3000000' anthropic-ratelimit-input-tokens-reset: - - '2026-04-16T16:29:46Z' + - '2026-04-20T17:19:11Z' anthropic-ratelimit-output-tokens-limit: - '600000' anthropic-ratelimit-output-tokens-remaining: - '600000' anthropic-ratelimit-output-tokens-reset: - - '2026-04-16T16:29:46Z' + - '2026-04-20T17:19:11Z' anthropic-ratelimit-requests-limit: - '20000' anthropic-ratelimit-requests-remaining: - '19999' anthropic-ratelimit-requests-reset: - - '2026-04-16T16:29:45Z' + - '2026-04-20T17:19:10Z' anthropic-ratelimit-tokens-limit: - '3600000' anthropic-ratelimit-tokens-remaining: - '3600000' anthropic-ratelimit-tokens-reset: - - '2026-04-16T16:29:46Z' + - '2026-04-20T17:19:11Z' cf-cache-status: - DYNAMIC content-length: - '465' request-id: - - req_011Ca7mTsq4zB3EtSxtuQ4Nm + - req_011CaFQU4YL2rc2scg3B5XRB server-timing: - - x-originResponse;dur=1163 + - x-originResponse;dur=1091 set-cookie: - - _cfuvid=gKj5CLRL4jDBrihwEUw7YWDNZdSn_xZFuzM4oQAg5f4-1776356985.8123994-1.0.1.1-hgQFeD1Xb5TsE.woWwXcg8vjPr4m_TQuKPgrDuAfwPQ; + - _cfuvid=Q0hmOuik8_uIXuZS4dszz1gkbH3jENgMuf.X267dWq8-1776705550.260018-1.0.1.1-l9HoJmZn.gSS6Om5kld70e3f163uQ3B5HxTxF.bgLck; HttpOnly; SameSite=None; Secure; Path=/; Domain=api.anthropic.com strict-transport-security: - max-age=31536000; includeSubDomains; preload vary: - Accept-Encoding x-envoy-upstream-service-time: - - '1162' + - '1089' status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/langchain/cassettes/latest/test_langgraph_state_management.yaml b/py/src/braintrust/integrations/langchain/cassettes/latest/test_langgraph_state_management.yaml index 89e374af..47b231cb 100644 --- a/py/src/braintrust/integrations/langchain/cassettes/latest/test_langgraph_state_management.yaml +++ b/py/src/braintrust/integrations/langchain/cassettes/latest/test_langgraph_state_management.yaml @@ -13,7 +13,7 @@ interactions: Content-Type: - application/json Cookie: - - __cf_bm=iw.zXguAJURbTziKldsDaB3u3aPGqilGYYj1X8WTDNs-1776355212.434837-1.0.1.1-jUdCC3t9KPFSKOIhn_wwX2HFspQaIaj9jmzwQJhvMyi.OriOcy_0hKXUbiqO5qTx9iF1pcZqorn3QkLvHYySNxZr2sZ2cpCLle7qBH5.JoF7BH8AFMHXXZWqGPnNEoJT + - __cf_bm=ZbWlCHMf2dJU4RlSMlWMn7eHFxuRKDK79NO1f1u5oyQ-1776705535.1430848-1.0.1.1-cP3.NCaEuT309gzuM83MXBLWbLiISPr2bC.6W.oXHgZqsfDhntaMbZ3O2vKHaefzb3O7l1dU2maii5Hz.jC7tIN_MXReNoiqlNOgSsxzDU84u3reYZENxdX3i31CU_AG Host: - api.openai.com User-Agent: @@ -40,8 +40,8 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVJQXPmKR6QqZKN6cdJuSKljEkb1Z\",\n \"object\": - \"chat.completion\",\n \"created\": 1776355217,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmYrWXzkQJojHmOAvwzySYa3d9YO\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705537,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"Hello! How can I assist you today?\",\n \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": @@ -50,18 +50,18 @@ interactions: {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_2f65f9541c\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_a7190374f3\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9ed466eabe82a2d9-YYZ + - 9ef5cfabaec2e21a-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Thu, 16 Apr 2026 16:00:17 GMT + - Mon, 20 Apr 2026 17:18:58 GMT Server: - cloudflare Strict-Transport-Security: @@ -79,7 +79,7 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '692' + - '484' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: @@ -99,111 +99,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_4658054691d94d28bd44e731e0ccb431 - status: - code: 200 - message: OK -- request: - body: '{"messages":[{"content":"Say hello","role":"user"}],"model":"gpt-4o-mini","frequency_penalty":0.0,"n":1,"presence_penalty":0.0,"stream":false,"temperature":1.0,"top_p":1.0}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Length: - - '172' - Content-Type: - - application/json - Cookie: - - __cf_bm=FaBcTmQk5Nhn7p3eaXK7DMsDJ8P1jcVqMUfI2tayQVk-1776356969.3599713-1.0.1.1-rMbPAPWqYDhNpH2msu_p4kVx1oeBN8.XpOIvcUFqynxOJrvcNBq6XWLR6K7LYjYZKG8TodGSCmaUp776YReB3DZ9gIZ3v5BVQmJX1pkyAFFJeu7aHZLHE4uxCep4y9Nv - Host: - - api.openai.com - User-Agent: - - OpenAI/Python 2.31.0 - X-Stainless-Arch: - - arm64 - X-Stainless-Async: - - 'false' - X-Stainless-Lang: - - python - X-Stainless-OS: - - MacOS - X-Stainless-Package-Version: - - 2.31.0 - X-Stainless-Raw-Response: - - 'true' - X-Stainless-Runtime: - - CPython - X-Stainless-Runtime-Version: - - 3.14.3 - x-stainless-retry-count: - - '0' - method: POST - uri: https://api.openai.com/v1/chat/completions - response: - body: - string: "{\n \"id\": \"chatcmpl-DVJsrI08eisZjdGUSfD0Al1OmFHzC\",\n \"object\": - \"chat.completion\",\n \"created\": 1776356973,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n - \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"Hello! How can I assist you today?\",\n - \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": - null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": - 9,\n \"completion_tokens\": 9,\n \"total_tokens\": 18,\n \"prompt_tokens_details\": - {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": - {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": - 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_fe7a5277a8\"\n}\n" - headers: - CF-Cache-Status: - - DYNAMIC - CF-Ray: - - 9ed491cb1bf1e910-YYZ - Connection: - - keep-alive - Content-Type: - - application/json - Date: - - Thu, 16 Apr 2026 16:29:33 GMT - Server: - - cloudflare - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-expose-headers: - - X-Request-ID - alt-svc: - - h3=":443"; ma=86400 - content-length: - - '839' - openai-organization: - - braintrust-data - openai-processing-ms: - - '394' - openai-project: - - proj_vsCSXafhhByzWOThMrJcZiw9 - openai-version: - - '2020-10-01' - x-openai-proxy-wasm: - - v0.1 - x-ratelimit-limit-requests: - - '30000' - x-ratelimit-limit-tokens: - - '150000000' - x-ratelimit-remaining-requests: - - '29999' - x-ratelimit-remaining-tokens: - - '149999995' - x-ratelimit-reset-requests: - - 2ms - x-ratelimit-reset-tokens: - - 0s - x-request-id: - - req_fca4a3713b9c4e8ea5b593a8d7d4a99d + - req_7bae901cf4ae4220a991bd5cba9828fb status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/langchain/cassettes/latest/test_llm_calls.yaml b/py/src/braintrust/integrations/langchain/cassettes/latest/test_llm_calls.yaml index a40c00ba..4491db87 100644 --- a/py/src/braintrust/integrations/langchain/cassettes/latest/test_llm_calls.yaml +++ b/py/src/braintrust/integrations/langchain/cassettes/latest/test_llm_calls.yaml @@ -38,8 +38,8 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVJQTT61uJDaoTwqVdBBhebUkoCXz\",\n \"object\": - \"chat.completion\",\n \"created\": 1776355213,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmYp8zLIcm5XIYNC0ukRH2iYltbw\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705535,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"1 + 2 equals 3.\",\n \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": null,\n @@ -48,18 +48,18 @@ interactions: {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_fe7a5277a8\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_a7190374f3\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9ed466cdb8bbaca0-YYZ + - 9ef5cf9aa841a450-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Thu, 16 Apr 2026 16:00:13 GMT + - Mon, 20 Apr 2026 17:18:55 GMT Server: - cloudflare Strict-Transport-Security: @@ -77,15 +77,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '326' + - '339' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=iw.zXguAJURbTziKldsDaB3u3aPGqilGYYj1X8WTDNs-1776355212.434837-1.0.1.1-jUdCC3t9KPFSKOIhn_wwX2HFspQaIaj9jmzwQJhvMyi.OriOcy_0hKXUbiqO5qTx9iF1pcZqorn3QkLvHYySNxZr2sZ2cpCLle7qBH5.JoF7BH8AFMHXXZWqGPnNEoJT; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Thu, 16 Apr 2026 - 16:30:13 GMT + - __cf_bm=ZbWlCHMf2dJU4RlSMlWMn7eHFxuRKDK79NO1f1u5oyQ-1776705535.1430848-1.0.1.1-cP3.NCaEuT309gzuM83MXBLWbLiISPr2bC.6W.oXHgZqsfDhntaMbZ3O2vKHaefzb3O7l1dU2maii5Hz.jC7tIN_MXReNoiqlNOgSsxzDU84u3reYZENxdX3i31CU_AG; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:48:55 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -101,113 +101,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_b3fb8fccba624c398af2c4927db697cb - status: - code: 200 - message: OK -- request: - body: '{"messages":[{"content":"What is 1 + 2?","role":"user"}],"model":"gpt-4o-mini","frequency_penalty":0.0,"n":1,"presence_penalty":0.0,"stream":false,"temperature":1.0,"top_p":1.0}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Length: - - '177' - Content-Type: - - application/json - Host: - - api.openai.com - User-Agent: - - OpenAI/Python 2.31.0 - X-Stainless-Arch: - - arm64 - X-Stainless-Async: - - 'false' - X-Stainless-Lang: - - python - X-Stainless-OS: - - MacOS - X-Stainless-Package-Version: - - 2.31.0 - X-Stainless-Raw-Response: - - 'true' - X-Stainless-Runtime: - - CPython - X-Stainless-Runtime-Version: - - 3.14.3 - x-stainless-retry-count: - - '0' - method: POST - uri: https://api.openai.com/v1/chat/completions - response: - body: - string: "{\n \"id\": \"chatcmpl-DVJsoey7DZzKbKHa1fLdVjciwP0qS\",\n \"object\": - \"chat.completion\",\n \"created\": 1776356970,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n - \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"1 + 2 = 3.\",\n \"refusal\": - null,\n \"annotations\": []\n },\n \"logprobs\": null,\n - \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": - 15,\n \"completion_tokens\": 8,\n \"total_tokens\": 23,\n \"prompt_tokens_details\": - {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": - {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": - 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_fe7a5277a8\"\n}\n" - headers: - CF-Cache-Status: - - DYNAMIC - CF-Ray: - - 9ed491b27de55d15-YYZ - Connection: - - keep-alive - Content-Type: - - application/json - Date: - - Thu, 16 Apr 2026 16:29:30 GMT - Server: - - cloudflare - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-expose-headers: - - X-Request-ID - alt-svc: - - h3=":443"; ma=86400 - content-length: - - '816' - openai-organization: - - braintrust-data - openai-processing-ms: - - '755' - openai-project: - - proj_vsCSXafhhByzWOThMrJcZiw9 - openai-version: - - '2020-10-01' - set-cookie: - - __cf_bm=FaBcTmQk5Nhn7p3eaXK7DMsDJ8P1jcVqMUfI2tayQVk-1776356969.3599713-1.0.1.1-rMbPAPWqYDhNpH2msu_p4kVx1oeBN8.XpOIvcUFqynxOJrvcNBq6XWLR6K7LYjYZKG8TodGSCmaUp776YReB3DZ9gIZ3v5BVQmJX1pkyAFFJeu7aHZLHE4uxCep4y9Nv; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Thu, 16 Apr 2026 - 16:59:30 GMT - x-openai-proxy-wasm: - - v0.1 - x-ratelimit-limit-requests: - - '30000' - x-ratelimit-limit-tokens: - - '150000000' - x-ratelimit-remaining-requests: - - '29999' - x-ratelimit-remaining-tokens: - - '149999995' - x-ratelimit-reset-requests: - - 2ms - x-ratelimit-reset-tokens: - - 0s - x-request-id: - - req_7969c9677616410ca9b9af7c1285ec64 + - req_d7331ceda9be4c45993ad57af9e42754 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/langchain/cassettes/latest/test_prompt_caching_tokens.yaml b/py/src/braintrust/integrations/langchain/cassettes/latest/test_prompt_caching_tokens.yaml index bad3577e..a418a32f 100644 --- a/py/src/braintrust/integrations/langchain/cassettes/latest/test_prompt_caching_tokens.yaml +++ b/py/src/braintrust/integrations/langchain/cassettes/latest/test_prompt_caching_tokens.yaml @@ -63,7 +63,7 @@ interactions: and using\nappropriate tools, teams can catch bugs early, improve code quality, and deliver better products to users.\n\nRemember: Testing is not just about finding bugs, it''s about building confidence in your code.\n\n\nCache salt: - 842f4054bca04c1c90fe8dde0aac1912\n","cache_control":{"type":"ephemeral"}}]}' + 653f3b42c9c54d02a5dd2026990c018a\n","cache_control":{"type":"ephemeral"}}]}' headers: Accept: - application/json @@ -103,12 +103,13 @@ interactions: uri: https://api.anthropic.com/v1/messages response: body: - string: '{"model":"claude-sonnet-4-5-20250929","id":"msg_01TffnUJGp7v2UWtdjper877","type":"message","role":"assistant","content":[{"type":"text","text":"According - to section 1.2, the first type of testing mentioned is **Unit Testing**, which - is described as \"Testing individual components or functions in isolation.\""}],"stop_reason":"end_turn","stop_sequence":null,"stop_details":null,"usage":{"input_tokens":20,"cache_creation_input_tokens":1074,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":1074,"ephemeral_1h_input_tokens":0},"output_tokens":35,"service_tier":"standard","inference_geo":"not_available"}}' + string: '{"model":"claude-sonnet-4-5-20250929","id":"msg_01HVrrCvp3xZGjcpEJc8cygz","type":"message","role":"assistant","content":[{"type":"text","text":"According + to section 1.2 \"Types of Testing,\" the first type of testing mentioned is + **Unit Testing**, which is described as \"Testing individual components or + functions in isolation.\""}],"stop_reason":"end_turn","stop_sequence":null,"stop_details":null,"usage":{"input_tokens":20,"cache_creation_input_tokens":1074,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":1074,"ephemeral_1h_input_tokens":0},"output_tokens":40,"service_tier":"standard","inference_geo":"not_available"}}' headers: CF-RAY: - - 9ed499711a78ac8a-YYZ + - 9ef5ec25bb3d076d-YYZ Connection: - keep-alive Content-Security-Policy: @@ -116,7 +117,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 16 Apr 2026 16:34:47 GMT + - Mon, 20 Apr 2026 17:38:26 GMT Server: - cloudflare Transfer-Encoding: @@ -130,51 +131,52 @@ interactions: anthropic-ratelimit-input-tokens-remaining: - '3000000' anthropic-ratelimit-input-tokens-reset: - - '2026-04-16T16:34:47Z' + - '2026-04-20T17:38:25Z' anthropic-ratelimit-output-tokens-limit: - '600000' anthropic-ratelimit-output-tokens-remaining: - '600000' anthropic-ratelimit-output-tokens-reset: - - '2026-04-16T16:34:47Z' + - '2026-04-20T17:38:26Z' anthropic-ratelimit-requests-limit: - '20000' anthropic-ratelimit-requests-remaining: - '19999' anthropic-ratelimit-requests-reset: - - '2026-04-16T16:34:46Z' + - '2026-04-20T17:38:24Z' anthropic-ratelimit-tokens-limit: - '3600000' anthropic-ratelimit-tokens-remaining: - '3600000' anthropic-ratelimit-tokens-reset: - - '2026-04-16T16:34:47Z' + - '2026-04-20T17:38:25Z' cf-cache-status: - DYNAMIC content-length: - - '629' + - '650' request-id: - - req_011Ca7mr3jV8XkoKJe7BiKeS + - req_011CaFRw8a32dntPBhf9cAhD server-timing: - - x-originResponse;dur=989 + - x-originResponse;dur=2535 set-cookie: - - _cfuvid=pDs9nloj1VK.mQ.BgiWrdAyQmUTOHiwuzwz2tX840sY-1776357286.5792897-1.0.1.1-8pe1T8pStBIvNzPbR5Av1PMMIFGqzn_h9VYuehhvfI0; + - _cfuvid=mVrf4Q6ugsjEBB0.cwwqb.WNdfncjygYsTWMXPikVrc-1776706704.2785647-1.0.1.1-YUEhHT515MbYkS73_a8y37NuWBkV.DVitfr.xtsMfWQ; HttpOnly; SameSite=None; Secure; Path=/; Domain=api.anthropic.com strict-transport-security: - max-age=31536000; includeSubDomains; preload vary: - Accept-Encoding x-envoy-upstream-service-time: - - '986' + - '2533' status: code: 200 message: OK - request: body: '{"max_tokens":64000,"messages":[{"role":"user","content":"What is the first type of testing mentioned in section 1.2?"},{"role":"assistant","content":"According - to section 1.2, the first type of testing mentioned is **Unit Testing**, which - is described as \"Testing individual components or functions in isolation.\""},{"role":"user","content":"What - testing framework is mentioned for Python?"}],"model":"claude-sonnet-4-5-20250929","system":[{"type":"text","text":"\n# + to section 1.2 \"Types of Testing,\" the first type of testing mentioned is + **Unit Testing**, which is described as \"Testing individual components or functions + in isolation.\""},{"role":"user","content":"What testing framework is mentioned + for Python?"}],"model":"claude-sonnet-4-5-20250929","system":[{"type":"text","text":"\n# Comprehensive Guide to Software Testing Methods!\n\n## Chapter 1: Introduction to Testing\n\nSoftware testing is a critical component of the software development lifecycle. It ensures that applications\nfunction correctly, meet requirements, @@ -236,7 +238,7 @@ interactions: and using\nappropriate tools, teams can catch bugs early, improve code quality, and deliver better products to users.\n\nRemember: Testing is not just about finding bugs, it''s about building confidence in your code.\n\n\nCache salt: - 842f4054bca04c1c90fe8dde0aac1912\n","cache_control":{"type":"ephemeral"}}]}' + 653f3b42c9c54d02a5dd2026990c018a\n","cache_control":{"type":"ephemeral"}}]}' headers: Accept: - application/json @@ -245,11 +247,11 @@ interactions: Connection: - keep-alive Content-Length: - - '5486' + - '5507' Content-Type: - application/json Cookie: - - _cfuvid=pDs9nloj1VK.mQ.BgiWrdAyQmUTOHiwuzwz2tX840sY-1776357286.5792897-1.0.1.1-8pe1T8pStBIvNzPbR5Av1PMMIFGqzn_h9VYuehhvfI0 + - _cfuvid=mVrf4Q6ugsjEBB0.cwwqb.WNdfncjygYsTWMXPikVrc-1776706704.2785647-1.0.1.1-YUEhHT515MbYkS73_a8y37NuWBkV.DVitfr.xtsMfWQ Host: - api.anthropic.com User-Agent: @@ -278,13 +280,14 @@ interactions: uri: https://api.anthropic.com/v1/messages response: body: - string: '{"model":"claude-sonnet-4-5-20250929","id":"msg_01SrgYTgKjmQYkXB7y1PLgy6","type":"message","role":"assistant","content":[{"type":"text","text":"According - to section 6.1 (Python Testing), three testing frameworks are mentioned for - Python:\n\n1. **pytest** - Feature-rich testing framework\n2. **unittest** - - Built-in Python testing module\n3. **mock** - Library for mocking objects"}],"stop_reason":"end_turn","stop_sequence":null,"stop_details":null,"usage":{"input_tokens":66,"cache_creation_input_tokens":0,"cache_read_input_tokens":1074,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":60,"service_tier":"standard","inference_geo":"not_available"}}' + string: '{"model":"claude-sonnet-4-5-20250929","id":"msg_0171wLDvZineAWagVJbBmUQG","type":"message","role":"assistant","content":[{"type":"text","text":"According + to section 6.1 \"Python Testing,\" three testing frameworks are mentioned + for Python:\n\n1. **pytest** - Feature-rich testing framework\n2. **unittest** + - Built-in Python testing module\n3. **mock** - Library for mocking objects\n\nIf + you''re asking for just the first one mentioned, that would be **pytest**."}],"stop_reason":"end_turn","stop_sequence":null,"stop_details":null,"usage":{"input_tokens":71,"cache_creation_input_tokens":0,"cache_read_input_tokens":1074,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":78,"service_tier":"standard","inference_geo":"not_available"}}' headers: CF-RAY: - - 9ed499790bf952e6-YYZ + - 9ef5ec373b9cec6f-YYZ Connection: - keep-alive Content-Security-Policy: @@ -292,7 +295,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 16 Apr 2026 16:34:49 GMT + - Mon, 20 Apr 2026 17:38:29 GMT Server: - cloudflare Transfer-Encoding: @@ -306,39 +309,37 @@ interactions: anthropic-ratelimit-input-tokens-remaining: - '3000000' anthropic-ratelimit-input-tokens-reset: - - '2026-04-16T16:34:48Z' + - '2026-04-20T17:38:28Z' anthropic-ratelimit-output-tokens-limit: - '600000' anthropic-ratelimit-output-tokens-remaining: - '600000' anthropic-ratelimit-output-tokens-reset: - - '2026-04-16T16:34:49Z' + - '2026-04-20T17:38:29Z' anthropic-ratelimit-requests-limit: - '20000' anthropic-ratelimit-requests-remaining: - '19999' anthropic-ratelimit-requests-reset: - - '2026-04-16T16:34:47Z' + - '2026-04-20T17:38:27Z' anthropic-ratelimit-tokens-limit: - '3600000' anthropic-ratelimit-tokens-remaining: - '3600000' anthropic-ratelimit-tokens-reset: - - '2026-04-16T16:34:48Z' + - '2026-04-20T17:38:28Z' cf-cache-status: - DYNAMIC content-length: - - '697' + - '779' request-id: - - req_011Ca7mr9AfVSEXbVvcopoWS + - req_011CaFRwLar89trBjvaznLkS server-timing: - - x-originResponse;dur=1625 + - x-originResponse;dur=2155 strict-transport-security: - max-age=31536000; includeSubDomains; preload - vary: - - Accept-Encoding x-envoy-upstream-service-time: - - '1623' + - '2153' status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/langchain/cassettes/latest/test_streaming_ttft.yaml b/py/src/braintrust/integrations/langchain/cassettes/latest/test_streaming_ttft.yaml index fcba71c3..c2ac2724 100644 --- a/py/src/braintrust/integrations/langchain/cassettes/latest/test_streaming_ttft.yaml +++ b/py/src/braintrust/integrations/langchain/cassettes/latest/test_streaming_ttft.yaml @@ -12,8 +12,6 @@ interactions: - '164' Content-Type: - application/json - Cookie: - - __cf_bm=iw.zXguAJURbTziKldsDaB3u3aPGqilGYYj1X8WTDNs-1776355212.434837-1.0.1.1-jUdCC3t9KPFSKOIhn_wwX2HFspQaIaj9jmzwQJhvMyi.OriOcy_0hKXUbiqO5qTx9iF1pcZqorn3QkLvHYySNxZr2sZ2cpCLle7qBH5.JoF7BH8AFMHXXZWqGPnNEoJT Host: - api.openai.com User-Agent: @@ -38,59 +36,59 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: 'data: {"id":"chatcmpl-DVJQYx5H2fHKXOzH3AurEfVmAOKdo","object":"chat.completion.chunk","created":1776355218,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"x3hYNrQfY"} + string: 'data: {"id":"chatcmpl-DWmrfMloW0nay6iwW4oeUyCOESr0X","object":"chat.completion.chunk","created":1776706703,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_1cd0c2195a","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"wE0022Lvl"} - data: {"id":"chatcmpl-DVJQYx5H2fHKXOzH3AurEfVmAOKdo","object":"chat.completion.chunk","created":1776355218,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"1"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"zBY0RTNHCp"} + data: {"id":"chatcmpl-DWmrfMloW0nay6iwW4oeUyCOESr0X","object":"chat.completion.chunk","created":1776706703,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_1cd0c2195a","choices":[{"index":0,"delta":{"content":"1"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Ym5GDCB86X"} - data: {"id":"chatcmpl-DVJQYx5H2fHKXOzH3AurEfVmAOKdo","object":"chat.completion.chunk","created":1776355218,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"jXabzyqt5D"} + data: {"id":"chatcmpl-DWmrfMloW0nay6iwW4oeUyCOESr0X","object":"chat.completion.chunk","created":1776706703,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_1cd0c2195a","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"2q9J5RM6zV"} - data: {"id":"chatcmpl-DVJQYx5H2fHKXOzH3AurEfVmAOKdo","object":"chat.completion.chunk","created":1776355218,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"517qbnJVB4"} + data: {"id":"chatcmpl-DWmrfMloW0nay6iwW4oeUyCOESr0X","object":"chat.completion.chunk","created":1776706703,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_1cd0c2195a","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"oaZ6tnJ3zw"} - data: {"id":"chatcmpl-DVJQYx5H2fHKXOzH3AurEfVmAOKdo","object":"chat.completion.chunk","created":1776355218,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"2"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"dKWP3ZkAzV"} + data: {"id":"chatcmpl-DWmrfMloW0nay6iwW4oeUyCOESr0X","object":"chat.completion.chunk","created":1776706703,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_1cd0c2195a","choices":[{"index":0,"delta":{"content":"2"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"zxKEjfUrP6"} - data: {"id":"chatcmpl-DVJQYx5H2fHKXOzH3AurEfVmAOKdo","object":"chat.completion.chunk","created":1776355218,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"9Wzq7yPAnO"} + data: {"id":"chatcmpl-DWmrfMloW0nay6iwW4oeUyCOESr0X","object":"chat.completion.chunk","created":1776706703,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_1cd0c2195a","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"KIHpMyH7Zm"} - data: {"id":"chatcmpl-DVJQYx5H2fHKXOzH3AurEfVmAOKdo","object":"chat.completion.chunk","created":1776355218,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"GgFs98DbU0"} + data: {"id":"chatcmpl-DWmrfMloW0nay6iwW4oeUyCOESr0X","object":"chat.completion.chunk","created":1776706703,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_1cd0c2195a","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"rmllhjMFTo"} - data: {"id":"chatcmpl-DVJQYx5H2fHKXOzH3AurEfVmAOKdo","object":"chat.completion.chunk","created":1776355218,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"3"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"GSFuLbgIYt"} + data: {"id":"chatcmpl-DWmrfMloW0nay6iwW4oeUyCOESr0X","object":"chat.completion.chunk","created":1776706703,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_1cd0c2195a","choices":[{"index":0,"delta":{"content":"3"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"5foQMPAqB9"} - data: {"id":"chatcmpl-DVJQYx5H2fHKXOzH3AurEfVmAOKdo","object":"chat.completion.chunk","created":1776355218,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"mVIFBdCslH"} + data: {"id":"chatcmpl-DWmrfMloW0nay6iwW4oeUyCOESr0X","object":"chat.completion.chunk","created":1776706703,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_1cd0c2195a","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"z1Q4GWJQOG"} - data: {"id":"chatcmpl-DVJQYx5H2fHKXOzH3AurEfVmAOKdo","object":"chat.completion.chunk","created":1776355218,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"fgGmnEhmdE"} + data: {"id":"chatcmpl-DWmrfMloW0nay6iwW4oeUyCOESr0X","object":"chat.completion.chunk","created":1776706703,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_1cd0c2195a","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"y63HJBjUue"} - data: {"id":"chatcmpl-DVJQYx5H2fHKXOzH3AurEfVmAOKdo","object":"chat.completion.chunk","created":1776355218,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"4"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"tWsVezoSsb"} + data: {"id":"chatcmpl-DWmrfMloW0nay6iwW4oeUyCOESr0X","object":"chat.completion.chunk","created":1776706703,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_1cd0c2195a","choices":[{"index":0,"delta":{"content":"4"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"8LlC9ielnz"} - data: {"id":"chatcmpl-DVJQYx5H2fHKXOzH3AurEfVmAOKdo","object":"chat.completion.chunk","created":1776355218,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"UHp0H2pEsh"} + data: {"id":"chatcmpl-DWmrfMloW0nay6iwW4oeUyCOESr0X","object":"chat.completion.chunk","created":1776706703,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_1cd0c2195a","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"2WGPlwopQ9"} - data: {"id":"chatcmpl-DVJQYx5H2fHKXOzH3AurEfVmAOKdo","object":"chat.completion.chunk","created":1776355218,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Fk5LLxcXSU"} + data: {"id":"chatcmpl-DWmrfMloW0nay6iwW4oeUyCOESr0X","object":"chat.completion.chunk","created":1776706703,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_1cd0c2195a","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"RXXejgIMwr"} - data: {"id":"chatcmpl-DVJQYx5H2fHKXOzH3AurEfVmAOKdo","object":"chat.completion.chunk","created":1776355218,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"5"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"ewyPxnRkBa"} + data: {"id":"chatcmpl-DWmrfMloW0nay6iwW4oeUyCOESr0X","object":"chat.completion.chunk","created":1776706703,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_1cd0c2195a","choices":[{"index":0,"delta":{"content":"5"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"WOwM40LTq6"} - data: {"id":"chatcmpl-DVJQYx5H2fHKXOzH3AurEfVmAOKdo","object":"chat.completion.chunk","created":1776355218,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"0gW0McZpmV"} + data: {"id":"chatcmpl-DWmrfMloW0nay6iwW4oeUyCOESr0X","object":"chat.completion.chunk","created":1776706703,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_1cd0c2195a","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"oVgseVIE5u"} - data: {"id":"chatcmpl-DVJQYx5H2fHKXOzH3AurEfVmAOKdo","object":"chat.completion.chunk","created":1776355218,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"uJgo7"} + data: {"id":"chatcmpl-DWmrfMloW0nay6iwW4oeUyCOESr0X","object":"chat.completion.chunk","created":1776706703,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_1cd0c2195a","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"UY8a0"} - data: {"id":"chatcmpl-DVJQYx5H2fHKXOzH3AurEfVmAOKdo","object":"chat.completion.chunk","created":1776355218,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[],"usage":{"prompt_tokens":15,"completion_tokens":14,"total_tokens":29,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"A5jWNpIfNS"} + data: {"id":"chatcmpl-DWmrfMloW0nay6iwW4oeUyCOESr0X","object":"chat.completion.chunk","created":1776706703,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_1cd0c2195a","choices":[],"usage":{"prompt_tokens":15,"completion_tokens":14,"total_tokens":29,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"qmMcgDLOlS"} data: [DONE] @@ -101,13 +99,13 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9ed466f2be1daadf-YYZ + - 9ef5ec1ef98baadf-YYZ Connection: - keep-alive Content-Type: - text/event-stream; charset=utf-8 Date: - - Thu, 16 Apr 2026 16:00:18 GMT + - Mon, 20 Apr 2026 17:38:23 GMT Server: - cloudflare Strict-Transport-Security: @@ -123,11 +121,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '219' + - '180' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' + set-cookie: + - __cf_bm=aHiFy8dyMX_.KjR_hcUfBr8yy72omboMYt0wigrrr9M-1776706703.1999166-1.0.1.1-LBlLDLOrErUEVw6xeJHqeNNvtbN.H3zTa8Y9Rww9wf_YQtPYfHRbehQuR9pWtN4uRvkc0g6aiuz.5Cd8TbHsYpqZlLRPdIKuygqb6g5oFwrpmzDSRBkBrMdWgq1ww1lr; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 18:08:23 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -137,278 +139,13 @@ interactions: x-ratelimit-remaining-requests: - '29999' x-ratelimit-remaining-tokens: - - '149999995' + - '149999992' x-ratelimit-reset-requests: - 2ms x-ratelimit-reset-tokens: - 0s x-request-id: - - req_6b69bacf457844bf8cec0f42211849cf - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - User-Agent: - - python-requests/2.33.1 - method: GET - uri: https://api.braintrust.dev/version - response: - body: - string: '{"version":"2.0.0","date_version":"20260415","ff_version":24,"commit":"2948c562f7814224fb46b588186ba915efe1a690","deployment_mode":"lambda","deployment_type":"custom","brainstore_default":"force","brainstore_can_contain_row_refs":true,"skip_pg_config":"all","has_realtime_wal_bucket":true,"brainstore_wal_footer_version":"v3","brainstore_wal_use_efficient_format":true,"has_logs2":true,"js":true,"universal":true,"code_execution":true,"logs3_payload_max_bytes":5242880,"control_plane_telemetry":["status","memprof","usage"]}' - headers: - Connection: - - keep-alive - Content-Type: - - application/json; charset=utf-8 - Date: - - Thu, 16 Apr 2026 16:29:34 GMT - Via: - - 1.1 6a787632c3a1f06722022f5aab2624a4.cloudfront.net (CloudFront), 1.1 0e761f7a5b2481acd893422a702c9fa8.cloudfront.net - (CloudFront) - X-Amz-Cf-Id: - - xm6HCkb8lLoePZGlUKBtYX-11EuHMjzt-ZRkKEkYFLIJLaogQn1meg== - X-Amz-Cf-Pop: - - YTO53-P2 - - YTO50-P2 - X-Amzn-Trace-Id: - - Root=1-69e10e6e-0a7c94fc4d816bd8195db5b5;Parent=6af2b70612ab4c90;Sampled=0;Lineage=1:24be3d11:0 - X-Cache: - - Miss from cloudfront - access-control-allow-credentials: - - 'true' - access-control-expose-headers: - - x-bt-cursor,x-bt-found-existing,x-bt-query-plan,x-bt-api-duration-ms,x-bt-brainstore-duration-ms,x-bt-internal-trace-id - content-length: - - '524' - etag: - - W/"20c-ZBwksgRJM6bDkncB1u4FpDjAfIg" - vary: - - Origin - x-amz-apigw-id: - - b68xSFecoAMEKUw= - x-amzn-Remapped-content-length: - - '524' - x-amzn-RequestId: - - e8457e12-b027-45fd-83f7-470c6f14d376 - x-bt-internal-trace-id: - - 69e10e6e000000006dd2a04e59a0c69f - status: - code: 200 - message: OK -- request: - body: '{"rows": [{"context":{"caller_filename":"/Users/abhijeetprasad/.local/share/uv/python/cpython-3.14.3-macos-aarch64-none/lib/python3.14/concurrent/futures/thread.py","caller_functionname":"run","caller_lineno":73},"created":"2026-04-16T16:29:33.781738+00:00","id":"be73dc16-b1b3-45f8-9473-3e4cafca813c","input":{"number":"1"},"log_id":"g","metadata":{"braintrust":{"integration_name":"langchain-py","language":"python","sdk_version":"0.15.0"},"metadata":{},"name":null,"parent_run_id":null,"run_id":"839efe28-65f8-4074-bd2e-ff360186b7d7","serialized":{"id":["RunnableSequence"],"lc":1,"type":"not_implemented"},"tags":[]},"metrics":{"end":1776356973.781989,"start":1776356973.7817369},"output":{"content":"Result - for 1"},"project_id":"langchain-py","root_span_id":"08f55746-5aa0-4916-8861-a39f2578bfb1","span_attributes":{"exec_counter":16,"name":"RunnableSequence","type":"task"},"span_id":"23e9987d-073c-4c74-a154-88cf0bd6740b","span_parents":["9ed5e324-4694-4057-94ce-91a260c92ebb"]},{"context":{"caller_filename":"/Users/abhijeetprasad/.local/share/uv/python/cpython-3.14.3-macos-aarch64-none/lib/python3.14/concurrent/futures/thread.py","caller_functionname":"run","caller_lineno":73},"created":"2026-04-16T16:29:33.782182+00:00","id":"77e91ced-56d7-47df-a984-79d8c447e7c4","input":{"number":"2"},"log_id":"g","metadata":{"braintrust":{"integration_name":"langchain-py","language":"python","sdk_version":"0.15.0"},"metadata":{},"name":null,"parent_run_id":null,"run_id":"8c76842a-70ff-4e00-8926-46fa23f50770","serialized":{"id":["RunnableSequence"],"lc":1,"type":"not_implemented"},"tags":[]},"metrics":{"end":1776356973.782239,"start":1776356973.782181},"output":{"content":"Result - for 2"},"project_id":"langchain-py","root_span_id":"08f55746-5aa0-4916-8861-a39f2578bfb1","span_attributes":{"exec_counter":19,"name":"RunnableSequence","type":"task"},"span_id":"0ac4cc05-ef42-4cce-a457-442ba82d3dc8","span_parents":["ad261f1f-9c46-471d-a840-2d4a1dd20a4e"]}], - "api_version": 2}' - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Length: - - '1980' - User-Agent: - - python-requests/2.33.1 - method: POST - uri: https://api.braintrust.dev/logs3 - response: - body: - string: '{"Code":"ForbiddenError","Message":"Missing read access to project_log - id langchain-py, or the project_log does not exist [user_email=abhijeet@braintrustdata.com] - [user_org=abhi-test-org] [timestamp=1776356974.542]","InternalTraceId":"69e10e6e00000000524137b15c61ee15","Path":"/logs3","Service":"api"}' - headers: - Connection: - - keep-alive - Content-Type: - - application/json; charset=utf-8 - Date: - - Thu, 16 Apr 2026 16:29:34 GMT - Via: - - 1.1 6a787632c3a1f06722022f5aab2624a4.cloudfront.net (CloudFront), 1.1 d03af248468c898a111754f0666c2316.cloudfront.net - (CloudFront) - X-Amz-Cf-Id: - - bsNxVTNo4hxjJDvi8LHuvnFiyIzQQgeCEQquqKF5y3Qk5IOSNttr1w== - X-Amz-Cf-Pop: - - YTO53-P2 - - YTO50-P2 - X-Amzn-Trace-Id: - - Root=1-69e10e6e-6d7a845d2f5783b947f4aa8c;Parent=17fedf28ac8a1563;Sampled=0;Lineage=1:24be3d11:0 - X-Cache: - - Error from cloudfront - access-control-allow-credentials: - - 'true' - access-control-expose-headers: - - x-bt-cursor,x-bt-found-existing,x-bt-query-plan,x-bt-api-duration-ms,x-bt-brainstore-duration-ms,x-bt-internal-trace-id - content-length: - - '301' - etag: - - W/"12d-v4futv+2HnTcGJQxN4pkly/HjKY" - vary: - - Origin, Accept-Encoding - x-amz-apigw-id: - - b68xTHNnoAMEZXQ= - x-amzn-RequestId: - - 81239d9c-0d12-4f75-a2ee-5b525e749cec - x-bt-internal-trace-id: - - 69e10e6e00000000524137b15c61ee15 - status: - code: 403 - message: Forbidden -- request: - body: '{"messages":[{"content":"Count from 1 to 5.","role":"user"}],"model":"gpt-4o-mini","max_completion_tokens":50,"stream":true,"stream_options":{"include_usage":true}}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Length: - - '164' - Content-Type: - - application/json - Cookie: - - __cf_bm=FaBcTmQk5Nhn7p3eaXK7DMsDJ8P1jcVqMUfI2tayQVk-1776356969.3599713-1.0.1.1-rMbPAPWqYDhNpH2msu_p4kVx1oeBN8.XpOIvcUFqynxOJrvcNBq6XWLR6K7LYjYZKG8TodGSCmaUp776YReB3DZ9gIZ3v5BVQmJX1pkyAFFJeu7aHZLHE4uxCep4y9Nv - Host: - - api.openai.com - User-Agent: - - OpenAI/Python 2.31.0 - X-Stainless-Arch: - - arm64 - X-Stainless-Async: - - 'false' - X-Stainless-Lang: - - python - X-Stainless-OS: - - MacOS - X-Stainless-Package-Version: - - 2.31.0 - X-Stainless-Runtime: - - CPython - X-Stainless-Runtime-Version: - - 3.14.3 - x-stainless-retry-count: - - '0' - method: POST - uri: https://api.openai.com/v1/chat/completions - response: - body: - string: 'data: {"id":"chatcmpl-DVJssrowuQrGhRQcLG5PNfyek859S","object":"chat.completion.chunk","created":1776356974,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"YncTMdEcP"} - - - data: {"id":"chatcmpl-DVJssrowuQrGhRQcLG5PNfyek859S","object":"chat.completion.chunk","created":1776356974,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"1"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"bao5pACJbe"} - - - data: {"id":"chatcmpl-DVJssrowuQrGhRQcLG5PNfyek859S","object":"chat.completion.chunk","created":1776356974,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"ZdfAcsvMLM"} - - - data: {"id":"chatcmpl-DVJssrowuQrGhRQcLG5PNfyek859S","object":"chat.completion.chunk","created":1776356974,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"YTgxgPQ9tR"} - - - data: {"id":"chatcmpl-DVJssrowuQrGhRQcLG5PNfyek859S","object":"chat.completion.chunk","created":1776356974,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"2"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"GNMwtPzmH9"} - - - data: {"id":"chatcmpl-DVJssrowuQrGhRQcLG5PNfyek859S","object":"chat.completion.chunk","created":1776356974,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"2R4iPzZY79"} - - - data: {"id":"chatcmpl-DVJssrowuQrGhRQcLG5PNfyek859S","object":"chat.completion.chunk","created":1776356974,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"EUVNBv0zsK"} - - - data: {"id":"chatcmpl-DVJssrowuQrGhRQcLG5PNfyek859S","object":"chat.completion.chunk","created":1776356974,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"3"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"GiXSKgqVnv"} - - - data: {"id":"chatcmpl-DVJssrowuQrGhRQcLG5PNfyek859S","object":"chat.completion.chunk","created":1776356974,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"pgXFVQgWln"} - - - data: {"id":"chatcmpl-DVJssrowuQrGhRQcLG5PNfyek859S","object":"chat.completion.chunk","created":1776356974,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"ghXmJkss97"} - - - data: {"id":"chatcmpl-DVJssrowuQrGhRQcLG5PNfyek859S","object":"chat.completion.chunk","created":1776356974,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"4"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"1VxWxHgc5v"} - - - data: {"id":"chatcmpl-DVJssrowuQrGhRQcLG5PNfyek859S","object":"chat.completion.chunk","created":1776356974,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"FW7w0BH7sE"} - - - data: {"id":"chatcmpl-DVJssrowuQrGhRQcLG5PNfyek859S","object":"chat.completion.chunk","created":1776356974,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"VkrCIS4AgU"} - - - data: {"id":"chatcmpl-DVJssrowuQrGhRQcLG5PNfyek859S","object":"chat.completion.chunk","created":1776356974,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"5"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"gRdnax1AbS"} - - - data: {"id":"chatcmpl-DVJssrowuQrGhRQcLG5PNfyek859S","object":"chat.completion.chunk","created":1776356974,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"iNfEPwfwHS"} - - - data: {"id":"chatcmpl-DVJssrowuQrGhRQcLG5PNfyek859S","object":"chat.completion.chunk","created":1776356974,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"Fp52g"} - - - data: {"id":"chatcmpl-DVJssrowuQrGhRQcLG5PNfyek859S","object":"chat.completion.chunk","created":1776356974,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[],"usage":{"prompt_tokens":15,"completion_tokens":14,"total_tokens":29,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"2KGbiSWU2C"} - - - data: [DONE] - - - ' - headers: - CF-Cache-Status: - - DYNAMIC - CF-Ray: - - 9ed491cf2a2e38e1-YYZ - Connection: - - keep-alive - Content-Type: - - text/event-stream; charset=utf-8 - Date: - - Thu, 16 Apr 2026 16:29:34 GMT - Server: - - cloudflare - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-expose-headers: - - X-Request-ID - alt-svc: - - h3=":443"; ma=86400 - openai-organization: - - braintrust-data - openai-processing-ms: - - '279' - openai-project: - - proj_vsCSXafhhByzWOThMrJcZiw9 - openai-version: - - '2020-10-01' - x-openai-proxy-wasm: - - v0.1 - x-ratelimit-limit-requests: - - '30000' - x-ratelimit-limit-tokens: - - '150000000' - x-ratelimit-remaining-requests: - - '29999' - x-ratelimit-remaining-tokens: - - '149999995' - x-ratelimit-reset-requests: - - 2ms - x-ratelimit-reset-tokens: - - 0s - x-request-id: - - req_bcd54ab856b24cfdaf4888859e804b68 + - req_c49708571ffb473a96f0adeb9ffdc5cb status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/langchain/cassettes/latest/test_tool_usage.yaml b/py/src/braintrust/integrations/langchain/cassettes/latest/test_tool_usage.yaml index fc64b1c0..7e967781 100644 --- a/py/src/braintrust/integrations/langchain/cassettes/latest/test_tool_usage.yaml +++ b/py/src/braintrust/integrations/langchain/cassettes/latest/test_tool_usage.yaml @@ -17,7 +17,7 @@ interactions: Content-Type: - application/json Cookie: - - __cf_bm=iw.zXguAJURbTziKldsDaB3u3aPGqilGYYj1X8WTDNs-1776355212.434837-1.0.1.1-jUdCC3t9KPFSKOIhn_wwX2HFspQaIaj9jmzwQJhvMyi.OriOcy_0hKXUbiqO5qTx9iF1pcZqorn3QkLvHYySNxZr2sZ2cpCLle7qBH5.JoF7BH8AFMHXXZWqGPnNEoJT + - __cf_bm=ZbWlCHMf2dJU4RlSMlWMn7eHFxuRKDK79NO1f1u5oyQ-1776705535.1430848-1.0.1.1-cP3.NCaEuT309gzuM83MXBLWbLiISPr2bC.6W.oXHgZqsfDhntaMbZ3O2vKHaefzb3O7l1dU2maii5Hz.jC7tIN_MXReNoiqlNOgSsxzDU84u3reYZENxdX3i31CU_AG Host: - api.openai.com User-Agent: @@ -44,11 +44,11 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVJQUvK3CJlXDkVxgVM4W6VUD35qZ\",\n \"object\": - \"chat.completion\",\n \"created\": 1776355214,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmYqUAHNfdxh9TstMerCGEA7Sq6F\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705536,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": null,\n \"tool_calls\": [\n {\n - \ \"id\": \"call_HJvfemde3lRgOIKAJbjO2bWR\",\n \"type\": + \ \"id\": \"call_ZBphCq7OdJfTMjQAggWLt15t\",\n \"type\": \"function\",\n \"function\": {\n \"name\": \"calculator\",\n \ \"arguments\": \"{\\\"input\\\":{\\\"operation\\\":\\\"multiply\\\",\\\"number1\\\":3,\\\"number2\\\":12}}\"\n \ }\n }\n ],\n \"refusal\": null,\n \"annotations\": @@ -58,18 +58,18 @@ interactions: 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_3d695acdac\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_888e567758\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9ed466dc9cb9c4c7-YYZ + - 9ef5cfa3080baaf1-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Thu, 16 Apr 2026 16:00:15 GMT + - Mon, 20 Apr 2026 17:18:57 GMT Server: - cloudflare Strict-Transport-Security: @@ -87,119 +87,7 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '854' - openai-project: - - proj_vsCSXafhhByzWOThMrJcZiw9 - openai-version: - - '2020-10-01' - x-openai-proxy-wasm: - - v0.1 - x-ratelimit-limit-requests: - - '30000' - x-ratelimit-limit-tokens: - - '150000000' - x-ratelimit-remaining-requests: - - '29999' - x-ratelimit-remaining-tokens: - - '149999995' - x-ratelimit-reset-requests: - - 2ms - x-ratelimit-reset-tokens: - - 0s - x-request-id: - - req_a57b59727453460ba8bf402f51e95b70 - status: - code: 200 - message: OK -- request: - body: '{"messages":[{"content":"What is 3 * 12","role":"user"}],"model":"gpt-4o-mini","frequency_penalty":0.0,"n":1,"presence_penalty":0.0,"stream":false,"temperature":1.0,"tools":[{"type":"function","function":{"name":"calculator","description":"Can - perform mathematical operations.","parameters":{"properties":{"input":{"properties":{"operation":{"description":"The - type of operation to execute.","enum":["add","subtract","multiply","divide"],"type":"string"},"number1":{"description":"The - first number to operate on.","type":"number"},"number2":{"description":"The - second number to operate on.","type":"number"}},"required":["operation","number1","number2"],"type":"object"}},"required":["input"],"type":"object"}}}],"top_p":1.0}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Length: - - '725' - Content-Type: - - application/json - Cookie: - - __cf_bm=FaBcTmQk5Nhn7p3eaXK7DMsDJ8P1jcVqMUfI2tayQVk-1776356969.3599713-1.0.1.1-rMbPAPWqYDhNpH2msu_p4kVx1oeBN8.XpOIvcUFqynxOJrvcNBq6XWLR6K7LYjYZKG8TodGSCmaUp776YReB3DZ9gIZ3v5BVQmJX1pkyAFFJeu7aHZLHE4uxCep4y9Nv - Host: - - api.openai.com - User-Agent: - - OpenAI/Python 2.31.0 - X-Stainless-Arch: - - arm64 - X-Stainless-Async: - - 'false' - X-Stainless-Lang: - - python - X-Stainless-OS: - - MacOS - X-Stainless-Package-Version: - - 2.31.0 - X-Stainless-Raw-Response: - - 'true' - X-Stainless-Runtime: - - CPython - X-Stainless-Runtime-Version: - - 3.14.3 - x-stainless-retry-count: - - '0' - method: POST - uri: https://api.openai.com/v1/chat/completions - response: - body: - string: "{\n \"id\": \"chatcmpl-DVJspnqumVB1bexqrGLImvb3s6px1\",\n \"object\": - \"chat.completion\",\n \"created\": 1776356971,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n - \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": null,\n \"tool_calls\": [\n {\n - \ \"id\": \"call_b6NSugtjQxyj6qmCuJg7gMoH\",\n \"type\": - \"function\",\n \"function\": {\n \"name\": \"calculator\",\n - \ \"arguments\": \"{\\\"input\\\":{\\\"operation\\\":\\\"multiply\\\",\\\"number1\\\":3,\\\"number2\\\":12}}\"\n - \ }\n }\n ],\n \"refusal\": null,\n \"annotations\": - []\n },\n \"logprobs\": null,\n \"finish_reason\": \"tool_calls\"\n - \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 97,\n \"completion_tokens\": - 26,\n \"total_tokens\": 123,\n \"prompt_tokens_details\": {\n \"cached_tokens\": - 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": - {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": - 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_3d695acdac\"\n}\n" - headers: - CF-Cache-Status: - - DYNAMIC - CF-Ray: - - 9ed491c09f4ca1de-YYZ - Connection: - - keep-alive - Content-Type: - - application/json - Date: - - Thu, 16 Apr 2026 16:29:32 GMT - Server: - - cloudflare - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-expose-headers: - - X-Request-ID - alt-svc: - - h3=":443"; ma=86400 - content-length: - - '1133' - openai-organization: - - braintrust-data - openai-processing-ms: - - '923' + - '464' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: @@ -219,7 +107,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_d3490e03089f4fe9b25d1b0e9fad9c65 + - req_56c185884e3f4ea8961a567a7f104969 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/langchain/cassettes/latest/test_tool_use_with_result.yaml b/py/src/braintrust/integrations/langchain/cassettes/latest/test_tool_use_with_result.yaml index 1eb7c55d..fafca25a 100644 --- a/py/src/braintrust/integrations/langchain/cassettes/latest/test_tool_use_with_result.yaml +++ b/py/src/braintrust/integrations/langchain/cassettes/latest/test_tool_use_with_result.yaml @@ -1,65 +1,4 @@ interactions: -- request: - body: '{"rows": [{"context":{"caller_filename":"/Users/abhijeetprasad/.local/share/uv/python/cpython-3.14.3-macos-aarch64-none/lib/python3.14/concurrent/futures/thread.py","caller_functionname":"run","caller_lineno":73},"created":"2026-04-16T16:00:18.240949+00:00","id":"f67d5e2a-7fc8-4eda-81e8-7fc0923a3420","input":{"number":"1"},"log_id":"g","metadata":{"braintrust":{"integration_name":"langchain-py","language":"python","sdk_version":"0.15.0"},"metadata":{},"name":null,"parent_run_id":null,"run_id":"d313a314-4af9-4a60-adf6-8d4e6fad82b9","serialized":{"id":["RunnableSequence"],"lc":1,"type":"not_implemented"},"tags":[]},"metrics":{"end":1776355218.2415612,"start":1776355218.240948},"output":{"content":"Result - for 1"},"project_id":"langchain-py","root_span_id":"3a4279f0-0d99-435d-8a53-6fab6b2e48e1","span_attributes":{"exec_counter":16,"name":"RunnableSequence","type":"task"},"span_id":"2d78238d-29e4-4f61-a914-93f7cff4612e","span_parents":["abd4122f-d5aa-4e7c-b07e-455bf90872d0"]},{"context":{"caller_filename":"/Users/abhijeetprasad/.local/share/uv/python/cpython-3.14.3-macos-aarch64-none/lib/python3.14/concurrent/futures/thread.py","caller_functionname":"run","caller_lineno":73},"created":"2026-04-16T16:00:18.241392+00:00","id":"cd9389a7-20be-48ab-b89b-a83764f6d368","input":{"number":"2"},"log_id":"g","metadata":{"braintrust":{"integration_name":"langchain-py","language":"python","sdk_version":"0.15.0"},"metadata":{},"name":null,"parent_run_id":null,"run_id":"0ff43d7c-6382-4aa8-abd6-18dab3e3303d","serialized":{"id":["RunnableSequence"],"lc":1,"type":"not_implemented"},"tags":[]},"metrics":{"end":1776355218.2416399,"start":1776355218.2413912},"output":{"content":"Result - for 2"},"project_id":"langchain-py","root_span_id":"3a4279f0-0d99-435d-8a53-6fab6b2e48e1","span_attributes":{"exec_counter":19,"name":"RunnableSequence","type":"task"},"span_id":"7af2284b-4a1c-4703-a88d-59f7136588e7","span_parents":["f9dec764-6b3d-4958-a306-971da940c043"]}], - "api_version": 2}' - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Length: - - '1982' - User-Agent: - - python-requests/2.33.1 - method: POST - uri: https://staging-api.braintrust.dev/logs3 - response: - body: - string: '{"Code":"ForbiddenError","Message":"Missing read access to project_log - id langchain-py, or the project_log does not exist [user_email=abhijeet@braintrustdata.com] - [user_org=braintrustdata.com] [timestamp=1776355224.252]","InternalTraceId":"69e1079800000000627dde13207d1f8c","Path":"/logs3","Service":"api"}' - headers: - Connection: - - keep-alive - Content-Type: - - application/json; charset=utf-8 - Date: - - Thu, 16 Apr 2026 16:00:24 GMT - Via: - - 1.1 74fa2893a387420c4d3d2a3aac7dae04.cloudfront.net (CloudFront), 1.1 1469d4976bc2a36b5840519c9e3dbad6.cloudfront.net - (CloudFront) - X-Amz-Cf-Id: - - BngsFt5XnWjh1PiH74ffu_5NWWLqb-jeEXI_94_U7YshDgb0JdkQvQ== - X-Amz-Cf-Pop: - - YTO53-P2 - - YTO50-P1 - X-Amzn-Trace-Id: - - Root=1-69e10798-28f5de2d7dd8d817128375ae;Parent=64e52ab0d36f194c;Sampled=0;Lineage=1:fc3b4ff1:0 - X-Cache: - - Error from cloudfront - access-control-allow-credentials: - - 'true' - access-control-expose-headers: - - x-bt-cursor,x-bt-found-existing,x-bt-query-plan,x-bt-api-duration-ms,x-bt-brainstore-duration-ms,x-bt-internal-trace-id - content-length: - - '306' - etag: - - W/"132-eUZ0VF1JBsHMs4H01J4UoqwkZv4" - vary: - - Origin, Accept-Encoding - x-amz-apigw-id: - - b64f1FcCoAMEhEg= - x-amzn-RequestId: - - 4fedca98-d50e-45b1-b0f6-1724887af6bf - x-bt-internal-trace-id: - - 69e1079800000000627dde13207d1f8c - status: - code: 403 - message: Forbidden - request: body: '{"messages":[{"content":"What is 127 multiplied by 49?","role":"user"}],"model":"gpt-4o-mini","stream":false,"tools":[{"type":"function","function":{"name":"calculate","description":"Perform a mathematical calculation.\n\nArgs:\n operation: The mathematical operation @@ -76,7 +15,7 @@ interactions: Content-Type: - application/json Cookie: - - __cf_bm=iw.zXguAJURbTziKldsDaB3u3aPGqilGYYj1X8WTDNs-1776355212.434837-1.0.1.1-jUdCC3t9KPFSKOIhn_wwX2HFspQaIaj9jmzwQJhvMyi.OriOcy_0hKXUbiqO5qTx9iF1pcZqorn3QkLvHYySNxZr2sZ2cpCLle7qBH5.JoF7BH8AFMHXXZWqGPnNEoJT + - __cf_bm=aHiFy8dyMX_.KjR_hcUfBr8yy72omboMYt0wigrrr9M-1776706703.1999166-1.0.1.1-LBlLDLOrErUEVw6xeJHqeNNvtbN.H3zTa8Y9Rww9wf_YQtPYfHRbehQuR9pWtN4uRvkc0g6aiuz.5Cd8TbHsYpqZlLRPdIKuygqb6g5oFwrpmzDSRBkBrMdWgq1ww1lr Host: - api.openai.com User-Agent: @@ -103,11 +42,11 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVJQd8xUFH9jiv01GjQyqEOxXJQSi\",\n \"object\": - \"chat.completion\",\n \"created\": 1776355223,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmrmRWUU5lz8K1teFcmfU6ObwDQ0\",\n \"object\": + \"chat.completion\",\n \"created\": 1776706710,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": null,\n \"tool_calls\": [\n {\n - \ \"id\": \"call_MIAuWcd2Y0eflBu5EIYWRhZ3\",\n \"type\": + \ \"id\": \"call_stHJPMsHZSDC48ouyoJlHnZF\",\n \"type\": \"function\",\n \"function\": {\n \"name\": \"calculate\",\n \ \"arguments\": \"{\\\"operation\\\":\\\"multiply\\\",\\\"a\\\":127,\\\"b\\\":49}\"\n \ }\n }\n ],\n \"refusal\": null,\n \"annotations\": @@ -122,13 +61,13 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9ed467152a21aabc-YYZ + - 9ef5ec4a0eefaac5-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Thu, 16 Apr 2026 16:00:25 GMT + - Mon, 20 Apr 2026 17:38:31 GMT Server: - cloudflare Strict-Transport-Security: @@ -146,114 +85,7 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '1220' - openai-project: - - proj_vsCSXafhhByzWOThMrJcZiw9 - openai-version: - - '2020-10-01' - x-openai-proxy-wasm: - - v0.1 - x-ratelimit-limit-requests: - - '30000' - x-ratelimit-limit-tokens: - - '150000000' - x-ratelimit-remaining-requests: - - '29999' - x-ratelimit-remaining-tokens: - - '149999990' - x-ratelimit-reset-requests: - - 2ms - x-ratelimit-reset-tokens: - - 0s - x-request-id: - - req_039c9879ca514efe9b72eae72ee1f628 - status: - code: 200 - message: OK -- request: - body: '{"messages":[{"content":"What is 127 multiplied by 49?","role":"user"},{"content":null,"role":"assistant","tool_calls":[{"type":"function","id":"call_MIAuWcd2Y0eflBu5EIYWRhZ3","function":{"name":"calculate","arguments":"{\"operation\": - \"multiply\", \"a\": 127, \"b\": 49}"}}]},{"content":"6223","role":"tool","tool_call_id":"call_MIAuWcd2Y0eflBu5EIYWRhZ3"}],"model":"gpt-4o-mini","stream":false,"tools":[{"type":"function","function":{"name":"calculate","description":"Perform - a mathematical calculation.\n\nArgs:\n operation: The mathematical operation - (add, subtract, multiply, divide)\n a: First number\n b: Second number","parameters":{"properties":{"operation":{"type":"string"},"a":{"type":"number"},"b":{"type":"number"}},"required":["operation","a","b"],"type":"object"}}}]}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Length: - - '792' - Content-Type: - - application/json - Cookie: - - __cf_bm=iw.zXguAJURbTziKldsDaB3u3aPGqilGYYj1X8WTDNs-1776355212.434837-1.0.1.1-jUdCC3t9KPFSKOIhn_wwX2HFspQaIaj9jmzwQJhvMyi.OriOcy_0hKXUbiqO5qTx9iF1pcZqorn3QkLvHYySNxZr2sZ2cpCLle7qBH5.JoF7BH8AFMHXXZWqGPnNEoJT - Host: - - api.openai.com - User-Agent: - - OpenAI/Python 2.31.0 - X-Stainless-Arch: - - arm64 - X-Stainless-Async: - - 'false' - X-Stainless-Lang: - - python - X-Stainless-OS: - - MacOS - X-Stainless-Package-Version: - - 2.31.0 - X-Stainless-Raw-Response: - - 'true' - X-Stainless-Runtime: - - CPython - X-Stainless-Runtime-Version: - - 3.14.3 - x-stainless-retry-count: - - '0' - method: POST - uri: https://api.openai.com/v1/chat/completions - response: - body: - string: "{\n \"id\": \"chatcmpl-DVJQftSzJ197edxMdfdOTGZYZoiwQ\",\n \"object\": - \"chat.completion\",\n \"created\": 1776355225,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n - \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"127 multiplied by 49 is 6223.\",\n - \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": - null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": - 115,\n \"completion_tokens\": 11,\n \"total_tokens\": 126,\n \"prompt_tokens_details\": - {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": - {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": - 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_a7190374f3\"\n}\n" - headers: - CF-Cache-Status: - - DYNAMIC - CF-Ray: - - 9ed4671ddc0139c3-YYZ - Connection: - - keep-alive - Content-Type: - - application/json - Date: - - Thu, 16 Apr 2026 16:00:25 GMT - Server: - - cloudflare - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-expose-headers: - - X-Request-ID - alt-svc: - - h3=":443"; ma=86400 - content-length: - - '838' - openai-organization: - - braintrust-data - openai-processing-ms: - - '526' + - '889' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: @@ -273,123 +105,13 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_c061af73420243afb25c1f87961a8303 - status: - code: 200 - message: OK -- request: - body: '{"messages":[{"content":"What is 127 multiplied by 49?","role":"user"}],"model":"gpt-4o-mini","stream":false,"tools":[{"type":"function","function":{"name":"calculate","description":"Perform - a mathematical calculation.\n\nArgs:\n operation: The mathematical operation - (add, subtract, multiply, divide)\n a: First number\n b: Second number","parameters":{"properties":{"operation":{"type":"string"},"a":{"type":"number"},"b":{"type":"number"}},"required":["operation","a","b"],"type":"object"}}}]}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Length: - - '505' - Content-Type: - - application/json - Cookie: - - __cf_bm=FaBcTmQk5Nhn7p3eaXK7DMsDJ8P1jcVqMUfI2tayQVk-1776356969.3599713-1.0.1.1-rMbPAPWqYDhNpH2msu_p4kVx1oeBN8.XpOIvcUFqynxOJrvcNBq6XWLR6K7LYjYZKG8TodGSCmaUp776YReB3DZ9gIZ3v5BVQmJX1pkyAFFJeu7aHZLHE4uxCep4y9Nv - Host: - - api.openai.com - User-Agent: - - OpenAI/Python 2.31.0 - X-Stainless-Arch: - - arm64 - X-Stainless-Async: - - 'false' - X-Stainless-Lang: - - python - X-Stainless-OS: - - MacOS - X-Stainless-Package-Version: - - 2.31.0 - X-Stainless-Raw-Response: - - 'true' - X-Stainless-Runtime: - - CPython - X-Stainless-Runtime-Version: - - 3.14.3 - x-stainless-retry-count: - - '0' - method: POST - uri: https://api.openai.com/v1/chat/completions - response: - body: - string: "{\n \"id\": \"chatcmpl-DVJsxp215WK2YM4Lim3OfkZxTZElh\",\n \"object\": - \"chat.completion\",\n \"created\": 1776356979,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n - \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": null,\n \"tool_calls\": [\n {\n - \ \"id\": \"call_MaKhQ3oWzDFiIscrDLiyVKlb\",\n \"type\": - \"function\",\n \"function\": {\n \"name\": \"calculate\",\n - \ \"arguments\": \"{\\\"operation\\\":\\\"multiply\\\",\\\"a\\\":127,\\\"b\\\":49}\"\n - \ }\n }\n ],\n \"refusal\": null,\n \"annotations\": - []\n },\n \"logprobs\": null,\n \"finish_reason\": \"tool_calls\"\n - \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 85,\n \"completion_tokens\": - 21,\n \"total_tokens\": 106,\n \"prompt_tokens_details\": {\n \"cached_tokens\": - 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": - {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": - 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_a7190374f3\"\n}\n" - headers: - CF-Cache-Status: - - DYNAMIC - CF-Ray: - - 9ed491f03886b407-YYZ - Connection: - - keep-alive - Content-Type: - - application/json - Date: - - Thu, 16 Apr 2026 16:29:40 GMT - Server: - - cloudflare - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-expose-headers: - - X-Request-ID - alt-svc: - - h3=":443"; ma=86400 - content-length: - - '1110' - openai-organization: - - braintrust-data - openai-processing-ms: - - '734' - openai-project: - - proj_vsCSXafhhByzWOThMrJcZiw9 - openai-version: - - '2020-10-01' - x-openai-proxy-wasm: - - v0.1 - x-ratelimit-limit-requests: - - '30000' - x-ratelimit-limit-tokens: - - '150000000' - x-ratelimit-remaining-requests: - - '29999' - x-ratelimit-remaining-tokens: - - '149999990' - x-ratelimit-reset-requests: - - 2ms - x-ratelimit-reset-tokens: - - 0s - x-request-id: - - req_9ffd3bb7e90c4c9faddaea144f458584 + - req_55546dcea1f04b3786bc1c4c29bad861 status: code: 200 message: OK - request: - body: '{"messages":[{"content":"What is 127 multiplied by 49?","role":"user"},{"content":null,"role":"assistant","tool_calls":[{"type":"function","id":"call_MaKhQ3oWzDFiIscrDLiyVKlb","function":{"name":"calculate","arguments":"{\"operation\": - \"multiply\", \"a\": 127, \"b\": 49}"}}]},{"content":"6223","role":"tool","tool_call_id":"call_MaKhQ3oWzDFiIscrDLiyVKlb"}],"model":"gpt-4o-mini","stream":false,"tools":[{"type":"function","function":{"name":"calculate","description":"Perform + body: '{"messages":[{"content":"What is 127 multiplied by 49?","role":"user"},{"content":null,"role":"assistant","tool_calls":[{"type":"function","id":"call_stHJPMsHZSDC48ouyoJlHnZF","function":{"name":"calculate","arguments":"{\"operation\": + \"multiply\", \"a\": 127, \"b\": 49}"}}]},{"content":"6223","role":"tool","tool_call_id":"call_stHJPMsHZSDC48ouyoJlHnZF"}],"model":"gpt-4o-mini","stream":false,"tools":[{"type":"function","function":{"name":"calculate","description":"Perform a mathematical calculation.\n\nArgs:\n operation: The mathematical operation (add, subtract, multiply, divide)\n a: First number\n b: Second number","parameters":{"properties":{"operation":{"type":"string"},"a":{"type":"number"},"b":{"type":"number"}},"required":["operation","a","b"],"type":"object"}}}]}' headers: @@ -404,7 +126,7 @@ interactions: Content-Type: - application/json Cookie: - - __cf_bm=FaBcTmQk5Nhn7p3eaXK7DMsDJ8P1jcVqMUfI2tayQVk-1776356969.3599713-1.0.1.1-rMbPAPWqYDhNpH2msu_p4kVx1oeBN8.XpOIvcUFqynxOJrvcNBq6XWLR6K7LYjYZKG8TodGSCmaUp776YReB3DZ9gIZ3v5BVQmJX1pkyAFFJeu7aHZLHE4uxCep4y9Nv + - __cf_bm=aHiFy8dyMX_.KjR_hcUfBr8yy72omboMYt0wigrrr9M-1776706703.1999166-1.0.1.1-LBlLDLOrErUEVw6xeJHqeNNvtbN.H3zTa8Y9Rww9wf_YQtPYfHRbehQuR9pWtN4uRvkc0g6aiuz.5Cd8TbHsYpqZlLRPdIKuygqb6g5oFwrpmzDSRBkBrMdWgq1ww1lr Host: - api.openai.com User-Agent: @@ -431,8 +153,8 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVJsybdvNva6KV2BsPt1xjyhzvGB7\",\n \"object\": - \"chat.completion\",\n \"created\": 1776356980,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmrnt6EAH5wwh1xiTWnvZcF5oe9D\",\n \"object\": + \"chat.completion\",\n \"created\": 1776706711,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"127 multiplied by 49 is 6223.\",\n \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": @@ -446,13 +168,13 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9ed491f90e017db1-YYZ + - 9ef5ec511b66aeb6-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Thu, 16 Apr 2026 16:29:41 GMT + - Mon, 20 Apr 2026 17:38:32 GMT Server: - cloudflare Strict-Transport-Security: @@ -470,7 +192,7 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '609' + - '1292' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: @@ -490,7 +212,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_a4cd3a673d5745dc990c00a785da822b + - req_c33aa96133dc46f1a5516492379e7408 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/litellm/cassettes/latest/test_auto_litellm.yaml b/py/src/braintrust/integrations/litellm/cassettes/latest/test_auto_litellm.yaml index 7b8daa80..116cb9b8 100644 --- a/py/src/braintrust/integrations/litellm/cassettes/latest/test_auto_litellm.yaml +++ b/py/src/braintrust/integrations/litellm/cassettes/latest/test_auto_litellm.yaml @@ -40,8 +40,8 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeCWrNmhoTzzp0j9aoFcbZdwFpI0\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435072,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmZP1AOA3MfkmwkcRGGdJFxpnRGB\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705571,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"Hi there! How can I assist you today?\",\n \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": @@ -50,18 +50,18 @@ interactions: {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_fe7a5277a8\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_2f65f9541c\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc04837bcf39f3-YYZ + - 9ef5d07b5d66ac2e-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:11:13 GMT + - Mon, 20 Apr 2026 17:19:32 GMT Server: - cloudflare Strict-Transport-Security: @@ -79,15 +79,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '502' + - '866' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=f_VmVhl.oyQOT_rFa4YoYUNvyuv2_xiDXbZa9VpiL9k-1776435072.5526488-1.0.1.1-EPSgKXt1zZU6enaxbnTAZbPdDy3SFkpWU8ff9SBZ65CWuU9AqnOFPUFn_oVtm0rwAhuGFe.KmTqk85mJBeMlKw6mfgr_W.9UxtY1fscQTKFT0OukmEUeyPSAHDlETQdH; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:41:13 GMT + - __cf_bm=EURNQD_wNej7tWs7_6DEiHwQiEtF2oWmmXf6SPgZyrg-1776705571.1003156-1.0.1.1-J_3PhOKSC7R89A5Yr6jSj7.sjkID0ezWe4NdX.jujfctWFxzUx.GX0oaeuodfExGfYQ_ygo4IbVH9Ycr39ei1KkkQ9p7MchtSfinFkzUpnxQpj.iPPriy138fXryjji_; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:49:32 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -103,7 +103,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_b8979aa2605c492a8c2c9abab0102725 + - req_54a1dcf4831941cbaa40b6d2970cd25b status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_acompletion_metrics.yaml b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_acompletion_metrics.yaml index cf749340..baa5cf27 100644 --- a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_acompletion_metrics.yaml +++ b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_acompletion_metrics.yaml @@ -40,8 +40,8 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeBlLDtKC1cTJSlisR0IZce5f2iG\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435025,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmYZaz4z2ltXsCGKONCaafT336AK\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705519,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"12 + 12 equals 24.\",\n \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": null,\n @@ -50,26 +50,26 @@ interactions: {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_fe7a5277a8\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_0542ea89f6\"\n}\n" headers: Access-Control-Expose-Headers: - X-Request-ID CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc03599deeaac2-YYZ + - 9ef5cf381a8ca21c-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:10:25 GMT + - Mon, 20 Apr 2026 17:18:39 GMT Server: - cloudflare Set-Cookie: - - __cf_bm=Ck2mkd6ZTb2xrCdB9e3btYqykw1hLkleWPzYHowGSRY-1776435024.9001822-1.0.1.1-MncalcIPpcUyBENLAfaUlXrDjFasRkH1o7uE_JvYuzvbBemMfTyso5wHa9j.ockcaUt82JpvM6BE7TTzeH5_YmQPBW4QDlUm3nKVN4p_gr8p_UOHsuaBtXrLSq33fZbc; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:25 GMT + - __cf_bm=XYBaydix0XhnLFO0SCv8rJMVdXf1dxC5OuOxg.d1Sy8-1776705519.38036-1.0.1.1-JLe7FzLF3JDAEZGSrxob027SBXhSHOF9TTYKNNpgmX6NsjoNweLl7JQs29ixxYBzWYJOzkB48fXdEfNU.VWc_H9M04TXPOEYZxVjwQzCnF7oUyo2GK1SAqJF5LHh20lY; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:48:39 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: @@ -83,7 +83,7 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '387' + - '337' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: @@ -103,7 +103,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_a59f4c44949f48d3a8c1504ab32658cc + - req_6cccc644712947dcb5c22b3b136c0ec7 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_acompletion_streaming_async.yaml b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_acompletion_streaming_async.yaml index ee1a6a31..03f86df3 100644 --- a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_acompletion_streaming_async.yaml +++ b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_acompletion_streaming_async.yaml @@ -40,41 +40,41 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: 'data: {"id":"chatcmpl-DVeBnv3uSE5TaVuBpoN6WNSlZGTI8","object":"chat.completion.chunk","created":1776435027,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"2CceNrzDh"} + string: 'data: {"id":"chatcmpl-DWmYaFSdpooigVKUWfRF2K04s4Gph","object":"chat.completion.chunk","created":1776705520,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_04d92b3965","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"QbghqL67x"} - data: {"id":"chatcmpl-DVeBnv3uSE5TaVuBpoN6WNSlZGTI8","object":"chat.completion.chunk","created":1776435027,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"12"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"IjMCWTnlm"} + data: {"id":"chatcmpl-DWmYaFSdpooigVKUWfRF2K04s4Gph","object":"chat.completion.chunk","created":1776705520,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_04d92b3965","choices":[{"index":0,"delta":{"content":"12"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"1nuBgovzm"} - data: {"id":"chatcmpl-DVeBnv3uSE5TaVuBpoN6WNSlZGTI8","object":"chat.completion.chunk","created":1776435027,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - +"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"0mEzZwNDV"} + data: {"id":"chatcmpl-DWmYaFSdpooigVKUWfRF2K04s4Gph","object":"chat.completion.chunk","created":1776705520,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_04d92b3965","choices":[{"index":0,"delta":{"content":" + +"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"qWwRBhjkz"} - data: {"id":"chatcmpl-DVeBnv3uSE5TaVuBpoN6WNSlZGTI8","object":"chat.completion.chunk","created":1776435027,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Ssz9RxEJuR"} + data: {"id":"chatcmpl-DWmYaFSdpooigVKUWfRF2K04s4Gph","object":"chat.completion.chunk","created":1776705520,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_04d92b3965","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"yU2omC7ld0"} - data: {"id":"chatcmpl-DVeBnv3uSE5TaVuBpoN6WNSlZGTI8","object":"chat.completion.chunk","created":1776435027,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"12"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"sFbzLoXnO"} + data: {"id":"chatcmpl-DWmYaFSdpooigVKUWfRF2K04s4Gph","object":"chat.completion.chunk","created":1776705520,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_04d92b3965","choices":[{"index":0,"delta":{"content":"12"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"jx4IyWCns"} - data: {"id":"chatcmpl-DVeBnv3uSE5TaVuBpoN6WNSlZGTI8","object":"chat.completion.chunk","created":1776435027,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - equals"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"PETU"} + data: {"id":"chatcmpl-DWmYaFSdpooigVKUWfRF2K04s4Gph","object":"chat.completion.chunk","created":1776705520,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_04d92b3965","choices":[{"index":0,"delta":{"content":" + equals"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"hLVo"} - data: {"id":"chatcmpl-DVeBnv3uSE5TaVuBpoN6WNSlZGTI8","object":"chat.completion.chunk","created":1776435027,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"v7aVVK9MG9"} + data: {"id":"chatcmpl-DWmYaFSdpooigVKUWfRF2K04s4Gph","object":"chat.completion.chunk","created":1776705520,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_04d92b3965","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"WwuBroLbNt"} - data: {"id":"chatcmpl-DVeBnv3uSE5TaVuBpoN6WNSlZGTI8","object":"chat.completion.chunk","created":1776435027,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"24"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"eLGbdBNIb"} + data: {"id":"chatcmpl-DWmYaFSdpooigVKUWfRF2K04s4Gph","object":"chat.completion.chunk","created":1776705520,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_04d92b3965","choices":[{"index":0,"delta":{"content":"24"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"dHcmu1Kvl"} - data: {"id":"chatcmpl-DVeBnv3uSE5TaVuBpoN6WNSlZGTI8","object":"chat.completion.chunk","created":1776435027,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"lJ58CrUtcU"} + data: {"id":"chatcmpl-DWmYaFSdpooigVKUWfRF2K04s4Gph","object":"chat.completion.chunk","created":1776705520,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_04d92b3965","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"VdA1no7Sxf"} - data: {"id":"chatcmpl-DVeBnv3uSE5TaVuBpoN6WNSlZGTI8","object":"chat.completion.chunk","created":1776435027,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"qiDCO"} + data: {"id":"chatcmpl-DWmYaFSdpooigVKUWfRF2K04s4Gph","object":"chat.completion.chunk","created":1776705520,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_04d92b3965","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"UxEyp"} - data: {"id":"chatcmpl-DVeBnv3uSE5TaVuBpoN6WNSlZGTI8","object":"chat.completion.chunk","created":1776435027,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[],"usage":{"prompt_tokens":14,"completion_tokens":8,"total_tokens":22,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"KCAoAGuIYzd"} + data: {"id":"chatcmpl-DWmYaFSdpooigVKUWfRF2K04s4Gph","object":"chat.completion.chunk","created":1776705520,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_04d92b3965","choices":[],"usage":{"prompt_tokens":14,"completion_tokens":8,"total_tokens":22,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"j1gsSa2kFR9"} data: [DONE] @@ -87,19 +87,19 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc0369cf6ec45b-YYZ + - 9ef5cf3f9c564d63-YYZ Connection: - keep-alive Content-Type: - text/event-stream; charset=utf-8 Date: - - Fri, 17 Apr 2026 14:10:27 GMT + - Mon, 20 Apr 2026 17:18:41 GMT Server: - cloudflare Set-Cookie: - - __cf_bm=isKxPWfQ8UqCIOyCWDlwQlOOnaCR2ZbH4IDVvcHDvtQ-1776435027.4878457-1.0.1.1-zmI4ykheGt1ADvoXDafSc241SpZoPKk5hnbVXeAm69y5uWNbXKQKD09v0YYW7HUDZPEXCCR7YSBSm_2uc7BbR9TbwMZC3Z1pHbT_7EJroX_ogDIM9qG.TIi8xS7B4S4Q; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:27 GMT + - __cf_bm=CJgSCROFW.bKJzStlJ.ywZqEf6p3XR3GJAMsOq2PHtE-1776705520.5742373-1.0.1.1-QJWet1eq1u6wdyklHg8AlfE3RHYA2VRyVmSM94KhTWplEz4axwbXj65DyybDBd7vTWGN818Gp24PkLLJHbS3SeBP.JNBtSnpNCfnwzwl9jS4dUb.2LprTlnlDQAja6Fw; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:48:41 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: @@ -111,7 +111,7 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '227' + - '397' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: @@ -131,7 +131,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_44756c039024455fad42d05747769377 + - req_fa6562c1941741c5b5b79d5cee9098de status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_acompletion_with_system_prompt.yaml b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_acompletion_with_system_prompt.yaml index ee7f3ee4..35b40fe8 100644 --- a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_acompletion_with_system_prompt.yaml +++ b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_acompletion_with_system_prompt.yaml @@ -41,8 +41,8 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeCFOttJMBeLbzqbafQ5QJEzER9Y\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435055,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmZB4GN8Af0thlgvzPNc5Rw3hRHB\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705557,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"24\",\n \"refusal\": null,\n \ \"annotations\": []\n },\n \"logprobs\": null,\n \"finish_reason\": @@ -51,26 +51,26 @@ interactions: 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_fe7a5277a8\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_a7190374f3\"\n}\n" headers: Access-Control-Expose-Headers: - X-Request-ID CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc041b49effcd9-YYZ + - 9ef5d0235cd2ebba-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:10:56 GMT + - Mon, 20 Apr 2026 17:19:17 GMT Server: - cloudflare Set-Cookie: - - __cf_bm=5WY7_oyE0IMfF1o1eh7OdAXoL3WAI6egMyCVKNpPTDE-1776435055.8810427-1.0.1.1-oemPga7PrEglBNUZBer_fK1cSsWabAqkyofhtaLwAg9_MkTfXB1lZEC5Mi8VshEu8Q7E_chUDzzx2ppU3JLC.h3Gze2tZ6kq0NQLI52PJ5HndBTcDODg5gpF2GtBqr32; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:56 GMT + - __cf_bm=fmw1_7ban_7amJxNcB4i0dv2cLueQwIQbkjsWDGUmC8-1776705557.0134761-1.0.1.1-AVG19J2lue36CYV4.67IAiKNH7Vx_.dw93wiiE3aEBWxbvbTscQnteQJVvKzmGmOQNG7voH.wOSrFQLk6lJbsZaeAyrVUUgZQ8VLCpdxlAYI0I5BFsCAaHJJ.3_jqS4K; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:49:17 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: @@ -84,7 +84,7 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '208' + - '282' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: @@ -104,7 +104,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_b09684fa67e24d99a9715fc3a86fff81 + - req_27c4892969954b9b8e678ff3ededf9a1 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_aembedding.yaml b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_aembedding.yaml index 094a1a97..25d44a93 100644 --- a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_aembedding.yaml +++ b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_aembedding.yaml @@ -436,25 +436,25 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc038a8ba539e9-YYZ + - 9ef5cf833ac1ac30-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:10:32 GMT + - Mon, 20 Apr 2026 17:18:51 GMT Server: - cloudflare Set-Cookie: - - __cf_bm=uq3_xR.Ha3DBLPaQVF0D37J5g9vZS8zBxN8Rnf4Sw_M-1776435032.7290218-1.0.1.1-Dw0xni.1yYc7FyYzEmv5ZtnopdiLd5yJ_44NAWYHTHnmYsZBOyLaf9.q3Kbr7lwoyHJ8HwYj8Md3jnJFyQ_lfImyY6HupQGBTfKS2WC0ECPdLVVBjyvcgpstf0.cH4Dk; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:32 GMT + - __cf_bm=b8K6aJvVWfJzwSqLluRUW_se3YdvxbgHpGnq5dEymR8-1776705531.3949425-1.0.1.1-bIAF71T2h9Yu2i26XfSWA1i7N2mdnm6O5KaGIf8he031V9ub1ECzVjnIv4CTAmzos.Iaqq.YkQaDckM2B_Ejr1rTFMMc6h7SD._mdkhzMbWw7sOuEKfdz351NbP.wLwF; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:48:51 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked Via: - - envoy-router-5f54b44bd7-r9q56 + - envoy-router-7fcdb9c87b-ltbjb X-Content-Type-Options: - nosniff alt-svc: @@ -466,7 +466,7 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '82' + - '163' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: @@ -488,7 +488,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_609aa3ba9f24469fa50b0b0b959aba92 + - req_80c83cb72ef04e36aae43e38ef29ca69 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_aimage_generation.yaml b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_aimage_generation.yaml index e20629dd..ce1f638e 100644 --- a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_aimage_generation.yaml +++ b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_aimage_generation.yaml @@ -38,24 +38,24 @@ interactions: uri: https://api.openai.com/v1/images/generations response: body: - string: "{\n \"created\": 1776435051,\n \"data\": [\n {\n \"url\": - \"https://oaidalleapiprodscus.blob.core.windows.net/private/org-gY2CWXtioLkEfpHBJTrcdNID/user-jIouncdtCNqBNU7Q41fsSvZ2/img-rNxaDX1cLURVpDcdG4WJUUtc.png?st=2026-04-17T13%3A10%3A51Z&se=2026-04-17T15%3A10%3A51Z&sp=r&sv=2026-02-06&sr=b&rscd=inline&rsct=image/png&skoid=7daae675-7b42-4e2e-ab4c-8d8419a28d99&sktid=a48cca56-e6da-484e-a814-9c849652bcb3&skt=2026-04-16T17%3A01%3A31Z&ske=2026-04-17T17%3A01%3A31Z&sks=b&skv=2026-02-06&sig=Fjr8i3ZPWW3BgHx6%2BCJxrlqVhBtFO4pygPhhK8tFRyo%3D\"\n + string: "{\n \"created\": 1776705552,\n \"data\": [\n {\n \"url\": + \"https://oaidalleapiprodscus.blob.core.windows.net/private/org-gY2CWXtioLkEfpHBJTrcdNID/user-jIouncdtCNqBNU7Q41fsSvZ2/img-xo4aoKOqXJNakDEEeY58FJc7.png?st=2026-04-20T16%3A19%3A12Z&se=2026-04-20T18%3A19%3A12Z&sp=r&sv=2026-02-06&sr=b&rscd=inline&rsct=image/png&skoid=35890473-cca8-4a54-8305-05a39e0bc9c3&sktid=a48cca56-e6da-484e-a814-9c849652bcb3&skt=2026-04-19T17%3A22%3A50Z&ske=2026-04-20T17%3A22%3A50Z&sks=b&skv=2026-02-06&sig=FY4dDF6ZMLCTB%2BwMod4wqfSVggk%2BXvru1Pmghdt8PDw%3D\"\n \ }\n ]\n}" headers: CF-RAY: - - 9edc03cf595cac3a-YYZ + - 9ef5cfc67810f2bc-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:10:51 GMT + - Mon, 20 Apr 2026 17:19:12 GMT Server: - cloudflare Set-Cookie: - - __cf_bm=owsEPbqpzTuIuuOadIUgDlkk7ipoKvik905rofn1Nqc-1776435043.7366695-1.0.1.1-mPS4lhjyKVVPCQvV75lbHeEUEkYDH5qc48sAQ76OE05u.VYoXM6GHZc1YZS3BrgUqjufDGkPPhwcaBuaJ04upDDdX6h3_COTMjZyW88KyDa3GjhbjhUzQJ5CFDsECagt; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:51 GMT + - __cf_bm=VJL5zUclYuusE1IqSMpVZ1KRFT49dZ97XeZfRgjegTo-1776705542.1541994-1.0.1.1-m6kuUbSfxrzlPV_BU1d7ca4Tk8O2RCn_vtjOMaZPrsU1DSG.Jpzk2gTweRcleXD076YAvcDQGhu0knLbo3XaqCnmtgIgUp5S5WlXs5GDkY.Iuv4jpsKyFg_H1IhPJ1B2; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:49:12 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: @@ -67,17 +67,17 @@ interactions: cf-cache-status: - DYNAMIC content-length: - - '546' + - '548' openai-organization: - braintrust-data openai-processing-ms: - - '7599' + - '10022' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' x-request-id: - - req_4f2e5f42e8884377a111d25d28fcce1d + - req_65aee88c861a4b5fa6e39dd416029be1 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_aresponses_metrics.yaml b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_aresponses_metrics.yaml index f85afb5a..77be5aea 100644 --- a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_aresponses_metrics.yaml +++ b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_aresponses_metrics.yaml @@ -16,49 +16,49 @@ interactions: host: - api.openai.com user-agent: - - litellm/1.83.9 + - litellm/1.83.10 method: POST uri: https://api.openai.com/v1/responses response: body: - string: "{\n \"id\": \"resp_07eda298315974300069e23f559bb881a18cf5214faec4e73c\",\n - \ \"object\": \"response\",\n \"created_at\": 1776435029,\n \"status\": + string: "{\n \"id\": \"resp_004455992408ff650069e65ff92d888191ab2a609c81c3b85b\",\n + \ \"object\": \"response\",\n \"created_at\": 1776705529,\n \"status\": \"completed\",\n \"background\": false,\n \"billing\": {\n \"payer\": - \"developer\"\n },\n \"completed_at\": 1776435030,\n \"error\": null,\n + \"developer\"\n },\n \"completed_at\": 1776705529,\n \"error\": null,\n \ \"frequency_penalty\": 0.0,\n \"incomplete_details\": null,\n \"instructions\": \"Just the number please\",\n \"max_output_tokens\": null,\n \"max_tool_calls\": null,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \"output\": [\n {\n - \ \"id\": \"msg_07eda298315974300069e23f56408081a1b8d00374e9623774\",\n + \ \"id\": \"msg_004455992408ff650069e65ff9ccd48191a56673d5f80b675e\",\n \ \"type\": \"message\",\n \"status\": \"completed\",\n \"content\": [\n {\n \"type\": \"output_text\",\n \"annotations\": [],\n \"logprobs\": [],\n \"text\": \"24\"\n }\n \ ],\n \"role\": \"assistant\"\n }\n ],\n \"parallel_tool_calls\": true,\n \"presence_penalty\": 0.0,\n \"previous_response_id\": null,\n \"prompt_cache_key\": - null,\n \"prompt_cache_retention\": null,\n \"reasoning\": {\n \"effort\": - null,\n \"summary\": null\n },\n \"safety_identifier\": null,\n \"service_tier\": - \"default\",\n \"store\": true,\n \"temperature\": 1.0,\n \"text\": {\n - \ \"format\": {\n \"type\": \"text\"\n },\n \"verbosity\": \"medium\"\n - \ },\n \"tool_choice\": \"auto\",\n \"tools\": [],\n \"top_logprobs\": - 0,\n \"top_p\": 1.0,\n \"truncation\": \"disabled\",\n \"usage\": {\n \"input_tokens\": - 22,\n \"input_tokens_details\": {\n \"cached_tokens\": 0\n },\n - \ \"output_tokens\": 2,\n \"output_tokens_details\": {\n \"reasoning_tokens\": - 0\n },\n \"total_tokens\": 24\n },\n \"user\": null,\n \"metadata\": - {}\n}" + null,\n \"prompt_cache_retention\": \"in_memory\",\n \"reasoning\": {\n + \ \"effort\": null,\n \"summary\": null\n },\n \"safety_identifier\": + null,\n \"service_tier\": \"default\",\n \"store\": true,\n \"temperature\": + 1.0,\n \"text\": {\n \"format\": {\n \"type\": \"text\"\n },\n + \ \"verbosity\": \"medium\"\n },\n \"tool_choice\": \"auto\",\n \"tools\": + [],\n \"top_logprobs\": 0,\n \"top_p\": 1.0,\n \"truncation\": \"disabled\",\n + \ \"usage\": {\n \"input_tokens\": 22,\n \"input_tokens_details\": {\n + \ \"cached_tokens\": 0\n },\n \"output_tokens\": 2,\n \"output_tokens_details\": + {\n \"reasoning_tokens\": 0\n },\n \"total_tokens\": 24\n },\n + \ \"user\": null,\n \"metadata\": {}\n}" headers: CF-RAY: - - 9edc0376dc40ec6f-YYZ + - 9ef5cf752f6ec8b1-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:10:30 GMT + - Mon, 20 Apr 2026 17:18:50 GMT Server: - cloudflare Set-Cookie: - - __cf_bm=XtdP6Sq2Pb136CyNpy3QXi1wt6oNstgA4f9gzDz2lSs-1776435029.571403-1.0.1.1-YYH6FwOmcmBhfWAq_XCWg1BFqioR.ceHjdVEM8nSmy.tquSpXoMJ_wLh6VM_Cu35mCUBS69lt6AWKt5gY8qQ8xdfd9Cj9g9ljMOobdWa2Bg94snucjoD8TqRQe7LSAWD; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:30 GMT + - __cf_bm=6brnXm3tiiDRDSkpicpo9uH9FyOl9rqBZUUmvkj_LfA-1776705529.1471992-1.0.1.1-LEvVZeNj7Pp7U4mqcBFABdyDSMwE22B9m3gBDtknBxmZ7qAzmexzL49_UVbS4_ywx.y3h8tVz3zvBmh65jnI3zr_ZO_lYYBmlVu44sHEox7yj7gES2wZoJpKQtSLMdPj; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:48:50 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: @@ -70,11 +70,11 @@ interactions: cf-cache-status: - DYNAMIC content-length: - - '1549' + - '1556' openai-organization: - braintrust-data openai-processing-ms: - - '774' + - '860' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: @@ -86,13 +86,13 @@ interactions: x-ratelimit-remaining-requests: - '29999' x-ratelimit-remaining-tokens: - - '149999960' + - '149999957' x-ratelimit-reset-requests: - 2ms x-ratelimit-reset-tokens: - 0s x-request-id: - - req_8a6b571f2dd943f890e65fa4d474d5fc + - req_b1a3721d41c44f678864193e1cb58e4f status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_aresponses_streaming_async.yaml b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_aresponses_streaming_async.yaml index 96b33253..2b1342ea 100644 --- a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_aresponses_streaming_async.yaml +++ b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_aresponses_streaming_async.yaml @@ -15,111 +15,111 @@ interactions: host: - api.openai.com user-agent: - - litellm/1.83.9 + - litellm/1.83.10 method: POST uri: https://api.openai.com/v1/responses response: body: string: 'event: response.created - data: {"type":"response.created","response":{"id":"resp_06ac65cb76f860310069e23f72fe9c819fbe3988e937642eba","object":"response","created_at":1776435059,"status":"in_progress","background":false,"completed_at":null,"error":null,"frequency_penalty":0.0,"incomplete_details":null,"instructions":null,"max_output_tokens":null,"max_tool_calls":null,"model":"gpt-4o-mini-2024-07-18","output":[],"parallel_tool_calls":true,"presence_penalty":0.0,"previous_response_id":null,"prompt_cache_key":null,"prompt_cache_retention":null,"reasoning":{"effort":null,"summary":null},"safety_identifier":null,"service_tier":"auto","store":true,"temperature":1.0,"text":{"format":{"type":"text"},"verbosity":"medium"},"tool_choice":"auto","tools":[],"top_logprobs":0,"top_p":1.0,"truncation":"disabled","usage":null,"user":null,"metadata":{}},"sequence_number":0} + data: {"type":"response.created","response":{"id":"resp_0c53a1f7cc9b0d6c0069e660186588819093e5cb9f9bfe2a61","object":"response","created_at":1776705560,"status":"in_progress","background":false,"completed_at":null,"error":null,"frequency_penalty":0.0,"incomplete_details":null,"instructions":null,"max_output_tokens":null,"max_tool_calls":null,"model":"gpt-4o-mini-2024-07-18","output":[],"parallel_tool_calls":true,"presence_penalty":0.0,"previous_response_id":null,"prompt_cache_key":null,"prompt_cache_retention":"in_memory","reasoning":{"effort":null,"summary":null},"safety_identifier":null,"service_tier":"auto","store":true,"temperature":1.0,"text":{"format":{"type":"text"},"verbosity":"medium"},"tool_choice":"auto","tools":[],"top_logprobs":0,"top_p":1.0,"truncation":"disabled","usage":null,"user":null,"metadata":{}},"sequence_number":0} event: response.in_progress - data: {"type":"response.in_progress","response":{"id":"resp_06ac65cb76f860310069e23f72fe9c819fbe3988e937642eba","object":"response","created_at":1776435059,"status":"in_progress","background":false,"completed_at":null,"error":null,"frequency_penalty":0.0,"incomplete_details":null,"instructions":null,"max_output_tokens":null,"max_tool_calls":null,"model":"gpt-4o-mini-2024-07-18","output":[],"parallel_tool_calls":true,"presence_penalty":0.0,"previous_response_id":null,"prompt_cache_key":null,"prompt_cache_retention":null,"reasoning":{"effort":null,"summary":null},"safety_identifier":null,"service_tier":"auto","store":true,"temperature":1.0,"text":{"format":{"type":"text"},"verbosity":"medium"},"tool_choice":"auto","tools":[],"top_logprobs":0,"top_p":1.0,"truncation":"disabled","usage":null,"user":null,"metadata":{}},"sequence_number":1} + data: {"type":"response.in_progress","response":{"id":"resp_0c53a1f7cc9b0d6c0069e660186588819093e5cb9f9bfe2a61","object":"response","created_at":1776705560,"status":"in_progress","background":false,"completed_at":null,"error":null,"frequency_penalty":0.0,"incomplete_details":null,"instructions":null,"max_output_tokens":null,"max_tool_calls":null,"model":"gpt-4o-mini-2024-07-18","output":[],"parallel_tool_calls":true,"presence_penalty":0.0,"previous_response_id":null,"prompt_cache_key":null,"prompt_cache_retention":"in_memory","reasoning":{"effort":null,"summary":null},"safety_identifier":null,"service_tier":"auto","store":true,"temperature":1.0,"text":{"format":{"type":"text"},"verbosity":"medium"},"tool_choice":"auto","tools":[],"top_logprobs":0,"top_p":1.0,"truncation":"disabled","usage":null,"user":null,"metadata":{}},"sequence_number":1} event: response.output_item.added - data: {"type":"response.output_item.added","item":{"id":"msg_06ac65cb76f860310069e23f73618c819fb0c3bbf8ec7cf911","type":"message","status":"in_progress","content":[],"role":"assistant"},"output_index":0,"sequence_number":2} + data: {"type":"response.output_item.added","item":{"id":"msg_0c53a1f7cc9b0d6c0069e6601979d08190a58294f13ce90242","type":"message","status":"in_progress","content":[],"role":"assistant"},"output_index":0,"sequence_number":2} event: response.content_part.added - data: {"type":"response.content_part.added","content_index":0,"item_id":"msg_06ac65cb76f860310069e23f73618c819fb0c3bbf8ec7cf911","output_index":0,"part":{"type":"output_text","annotations":[],"logprobs":[],"text":""},"sequence_number":3} + data: {"type":"response.content_part.added","content_index":0,"item_id":"msg_0c53a1f7cc9b0d6c0069e6601979d08190a58294f13ce90242","output_index":0,"part":{"type":"output_text","annotations":[],"logprobs":[],"text":""},"sequence_number":3} event: response.output_text.delta - data: {"type":"response.output_text.delta","content_index":0,"delta":"12","item_id":"msg_06ac65cb76f860310069e23f73618c819fb0c3bbf8ec7cf911","logprobs":[],"obfuscation":"306KtNdYfGdpL3","output_index":0,"sequence_number":4} + data: {"type":"response.output_text.delta","content_index":0,"delta":"12","item_id":"msg_0c53a1f7cc9b0d6c0069e6601979d08190a58294f13ce90242","logprobs":[],"obfuscation":"RdXl35pS95P82i","output_index":0,"sequence_number":4} event: response.output_text.delta - data: {"type":"response.output_text.delta","content_index":0,"delta":" +","item_id":"msg_06ac65cb76f860310069e23f73618c819fb0c3bbf8ec7cf911","logprobs":[],"obfuscation":"sRHTSuPtzJj29n","output_index":0,"sequence_number":5} + data: {"type":"response.output_text.delta","content_index":0,"delta":" +","item_id":"msg_0c53a1f7cc9b0d6c0069e6601979d08190a58294f13ce90242","logprobs":[],"obfuscation":"kTZ5KyMxmHJ1Q6","output_index":0,"sequence_number":5} event: response.output_text.delta - data: {"type":"response.output_text.delta","content_index":0,"delta":" ","item_id":"msg_06ac65cb76f860310069e23f73618c819fb0c3bbf8ec7cf911","logprobs":[],"obfuscation":"NlZZht4qJKmcWR0","output_index":0,"sequence_number":6} + data: {"type":"response.output_text.delta","content_index":0,"delta":" ","item_id":"msg_0c53a1f7cc9b0d6c0069e6601979d08190a58294f13ce90242","logprobs":[],"obfuscation":"l0RVacFrTZDkmf9","output_index":0,"sequence_number":6} event: response.output_text.delta - data: {"type":"response.output_text.delta","content_index":0,"delta":"12","item_id":"msg_06ac65cb76f860310069e23f73618c819fb0c3bbf8ec7cf911","logprobs":[],"obfuscation":"8piSapsNLHzFJE","output_index":0,"sequence_number":7} + data: {"type":"response.output_text.delta","content_index":0,"delta":"12","item_id":"msg_0c53a1f7cc9b0d6c0069e6601979d08190a58294f13ce90242","logprobs":[],"obfuscation":"tMHzBHr5G2BlN4","output_index":0,"sequence_number":7} event: response.output_text.delta - data: {"type":"response.output_text.delta","content_index":0,"delta":" equals","item_id":"msg_06ac65cb76f860310069e23f73618c819fb0c3bbf8ec7cf911","logprobs":[],"obfuscation":"cIIqBenx2","output_index":0,"sequence_number":8} + data: {"type":"response.output_text.delta","content_index":0,"delta":" equals","item_id":"msg_0c53a1f7cc9b0d6c0069e6601979d08190a58294f13ce90242","logprobs":[],"obfuscation":"9fI7Xkios","output_index":0,"sequence_number":8} event: response.output_text.delta - data: {"type":"response.output_text.delta","content_index":0,"delta":" ","item_id":"msg_06ac65cb76f860310069e23f73618c819fb0c3bbf8ec7cf911","logprobs":[],"obfuscation":"Xgz92hGSqqfHxqx","output_index":0,"sequence_number":9} + data: {"type":"response.output_text.delta","content_index":0,"delta":" ","item_id":"msg_0c53a1f7cc9b0d6c0069e6601979d08190a58294f13ce90242","logprobs":[],"obfuscation":"d5JQw0lFX3yCfxi","output_index":0,"sequence_number":9} event: response.output_text.delta - data: {"type":"response.output_text.delta","content_index":0,"delta":"24","item_id":"msg_06ac65cb76f860310069e23f73618c819fb0c3bbf8ec7cf911","logprobs":[],"obfuscation":"2bshrf164bu9T6","output_index":0,"sequence_number":10} + data: {"type":"response.output_text.delta","content_index":0,"delta":"24","item_id":"msg_0c53a1f7cc9b0d6c0069e6601979d08190a58294f13ce90242","logprobs":[],"obfuscation":"layolA7Sqmlusp","output_index":0,"sequence_number":10} event: response.output_text.delta - data: {"type":"response.output_text.delta","content_index":0,"delta":".","item_id":"msg_06ac65cb76f860310069e23f73618c819fb0c3bbf8ec7cf911","logprobs":[],"obfuscation":"mpHMkfFj1f1MPc4","output_index":0,"sequence_number":11} + data: {"type":"response.output_text.delta","content_index":0,"delta":".","item_id":"msg_0c53a1f7cc9b0d6c0069e6601979d08190a58294f13ce90242","logprobs":[],"obfuscation":"ebR3rK88zJtGTpZ","output_index":0,"sequence_number":11} event: response.output_text.done - data: {"type":"response.output_text.done","content_index":0,"item_id":"msg_06ac65cb76f860310069e23f73618c819fb0c3bbf8ec7cf911","logprobs":[],"output_index":0,"sequence_number":12,"text":"12 + data: {"type":"response.output_text.done","content_index":0,"item_id":"msg_0c53a1f7cc9b0d6c0069e6601979d08190a58294f13ce90242","logprobs":[],"output_index":0,"sequence_number":12,"text":"12 + 12 equals 24."} event: response.content_part.done - data: {"type":"response.content_part.done","content_index":0,"item_id":"msg_06ac65cb76f860310069e23f73618c819fb0c3bbf8ec7cf911","output_index":0,"part":{"type":"output_text","annotations":[],"logprobs":[],"text":"12 + data: {"type":"response.content_part.done","content_index":0,"item_id":"msg_0c53a1f7cc9b0d6c0069e6601979d08190a58294f13ce90242","output_index":0,"part":{"type":"output_text","annotations":[],"logprobs":[],"text":"12 + 12 equals 24."},"sequence_number":13} event: response.output_item.done - data: {"type":"response.output_item.done","item":{"id":"msg_06ac65cb76f860310069e23f73618c819fb0c3bbf8ec7cf911","type":"message","status":"completed","content":[{"type":"output_text","annotations":[],"logprobs":[],"text":"12 + data: {"type":"response.output_item.done","item":{"id":"msg_0c53a1f7cc9b0d6c0069e6601979d08190a58294f13ce90242","type":"message","status":"completed","content":[{"type":"output_text","annotations":[],"logprobs":[],"text":"12 + 12 equals 24."}],"role":"assistant"},"output_index":0,"sequence_number":14} event: response.completed - data: {"type":"response.completed","response":{"id":"resp_06ac65cb76f860310069e23f72fe9c819fbe3988e937642eba","object":"response","created_at":1776435059,"status":"completed","background":false,"completed_at":1776435059,"error":null,"frequency_penalty":0.0,"incomplete_details":null,"instructions":null,"max_output_tokens":null,"max_tool_calls":null,"model":"gpt-4o-mini-2024-07-18","output":[{"id":"msg_06ac65cb76f860310069e23f73618c819fb0c3bbf8ec7cf911","type":"message","status":"completed","content":[{"type":"output_text","annotations":[],"logprobs":[],"text":"12 - + 12 equals 24."}],"role":"assistant"}],"parallel_tool_calls":true,"presence_penalty":0.0,"previous_response_id":null,"prompt_cache_key":null,"prompt_cache_retention":null,"reasoning":{"effort":null,"summary":null},"safety_identifier":null,"service_tier":"default","store":true,"temperature":1.0,"text":{"format":{"type":"text"},"verbosity":"medium"},"tool_choice":"auto","tools":[],"top_logprobs":0,"top_p":1.0,"truncation":"disabled","usage":{"input_tokens":14,"input_tokens_details":{"cached_tokens":0},"output_tokens":9,"output_tokens_details":{"reasoning_tokens":0},"total_tokens":23},"user":null,"metadata":{}},"sequence_number":15} + data: {"type":"response.completed","response":{"id":"resp_0c53a1f7cc9b0d6c0069e660186588819093e5cb9f9bfe2a61","object":"response","created_at":1776705560,"status":"completed","background":false,"completed_at":1776705561,"error":null,"frequency_penalty":0.0,"incomplete_details":null,"instructions":null,"max_output_tokens":null,"max_tool_calls":null,"model":"gpt-4o-mini-2024-07-18","output":[{"id":"msg_0c53a1f7cc9b0d6c0069e6601979d08190a58294f13ce90242","type":"message","status":"completed","content":[{"type":"output_text","annotations":[],"logprobs":[],"text":"12 + + 12 equals 24."}],"role":"assistant"}],"parallel_tool_calls":true,"presence_penalty":0.0,"previous_response_id":null,"prompt_cache_key":null,"prompt_cache_retention":"in_memory","reasoning":{"effort":null,"summary":null},"safety_identifier":null,"service_tier":"default","store":true,"temperature":1.0,"text":{"format":{"type":"text"},"verbosity":"medium"},"tool_choice":"auto","tools":[],"top_logprobs":0,"top_p":1.0,"truncation":"disabled","usage":{"input_tokens":14,"input_tokens_details":{"cached_tokens":0},"output_tokens":9,"output_tokens_details":{"reasoning_tokens":0},"total_tokens":23},"user":null,"metadata":{}},"sequence_number":15} ' headers: CF-RAY: - - 9edc042e7d67dde5-YYZ + - 9ef5d0380d76c9d6-YYZ Connection: - keep-alive Content-Type: - text/event-stream; charset=utf-8 Date: - - Fri, 17 Apr 2026 14:10:59 GMT + - Mon, 20 Apr 2026 17:19:20 GMT Server: - cloudflare Set-Cookie: - - __cf_bm=cHBkiObpus6IGFipCzWcHytBT7pqIRhS.I1_q4wnE2k-1776435058.95263-1.0.1.1-L8SmXEvI393LtiR0cuA3o._6v0nkrHLFx76krSxlu39RDiQ6kfcTX1CNUeAcUs8IveYHNg1bo1EHsvCnaLFboSqfOOY12RySgCnw_yctZIjC2BeJS_NTbomhE03LnAcj; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:59 GMT + - __cf_bm=BXuE9.WCnZWPAO5PinZgfRWz.9Kwz2POaZOiyatMXO0-1776705560.3248563-1.0.1.1-wJ6XeeDL7mZZGedbO3ZySqKiR41HCMiJsNbiXLMVXTHC1vyx3a84F0PgbMhqG8GNPtsgbcNlgLaTr04SOcpXVE6KmxXV2AuTc7hYf6V.Jcbzi13uk1usdbYxNZr3tRtE; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:49:20 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: @@ -133,13 +133,13 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '63' + - '156' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' x-request-id: - - req_194552b5aa0147e6b379a4c77fda0452 + - req_0ea8c6b914034d459fb27b4dff21befc status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_aspeech.yaml b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_aspeech.yaml index 9a8e3c4a..8bb019e5 100644 --- a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_aspeech.yaml +++ b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_aspeech.yaml @@ -39,482 +39,474 @@ interactions: response: body: string: !!binary | - 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 - lRhEQEFz0EiD6QCFSgK0EwVUkswUKDQiANGxTddDNFfIqoCkOKHBFdFlHJMZKlBpJ9KhMdLgOCLI - hQUqhIhpeK7a4xuCILiL/OqyZOkvEABwCsIISB0AGAIcMAHgx4UFDGASFUBk4RilzC/6KCTaFKJz - GZfQs1R+Qkl7gsGFzBEvTEFNRTMuMTAwVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV - VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV - VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV - VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV - VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + //PkxABg1DnYL1rQACDSbhoERqFhrlBnAwqXNvNO7hOvBEnZkUZpTZkxZix5kzJnz5nSoYPS0Mmf + Ne/ObXO/hO3PN+rAytoyYCm7X5UsIoIyyUqVlkzFCjEBC6DRQCLMmXMuREgRllB0aJzYJrzYOJwq + ytMChTGjTOGDMFDHCAMAQcRURUQkIoIA0i1TrvXeoGiuXfLxlmC0heBIhdDuRiGHIRXSLUHWOu9U + 673HoGdu/TQw/kOYxNnagixH4oWtrDqnYnI6e/KHYdyHIxDC7EV1B2Ju+/7ttbYesdIhUjEHIaww + xdjXKVrD8SVh6gaY6Y6x2Js4chyHIchyHIdyxhjK3ba2ztnbO2vs4YYuxdigixHEvQ2zhrjuP4/j + kM4a5FM5W1tYdU7E3fvxhy3Ld+H6fPcrctYjEIcxzuRh/JZnK3bYeoGiuoO0+gWHWO79ZrCgCYi6 + JSwxiEgibW2ds7Ym/cslEYlmMrf+ffRU6x37oHAXYsRiDiP3L8677sPXfA76JDororororpFqDsT + ftUIHQipoyKahXmUHR138HAoFPgUBKDEJMKQRjZIZoaGjHxmj4AVsLtxuhKQjyYihYpIxlB0woHQ + xIIIMzk0WIIDSYDgrEAGmBoHmIQJERFm//PkxE929DoUCZvoAgkIJigA5iaRZh6JZACZlEAZnEVh + hkRBl8RRgQMRiEBiOpggYxkcVJmYG5ioDRh4CxnIhhizYJhSNxqyLJgsI5hAA5hWGICDsw3C0wRA + IwsBIsBwZnCwYRCQYjjyZimYYrBiYUi+Z5haZEhGZkoSaLtiaijKkXAs46FC70CGDYJmAAEoVkIE + teHgZMDQsMLBeMHAAjhg8ABg+CQsPJiWDsPskSQd2XTUTpnIUGCAkLhs8WWl8tgHAIKAMYeDEYrA + MYOAYBAQDAZL2EoEl1Q4AasscSQM7cObhbt00mtgYAQwE3ES0cFR8AgCnGnomI/jLDA0ASyBggCw + UCdK8wvAkwNAEmDswqAhuBgOD5gYC+NHcnaWSNYoqWkv3JRZu8epe6ipEAYkBBfpWBkjQXnibT/j + MnjJgmEAGApM5UKPaAlDgNAQYEgHK3nQHvFafh94fr7mqStJcbFTPHC/F7dyzMXaemeeOw/G6a5E + bFPXtXL9PYo7FWpMbrO9bm8o3auXsrEP0EoppyGKu7dycmURHhrJmZcaGCAoNARCJgAdBwuDgEhL + zAw4yMPEYaQjBopACXMz9WNo+TOsEiDDdggwSGJT05cvJC84NJMhXTLyKJkoYBEC//PkxEZ11DIo + AdvgAQaCAeZFI5m0ymLRuHHIyClzS5pNeLw2tLjAJfNjIg12hDNyKNXq41QITIY+MLC0RkowODTF + AkBgZLKJ5igiHCICT2YiEphgXmDQIYLNoCYRi0zBA+MhkYw+3jPwwMQFkxGaTAJvJkeZiKRjIVGC + wmDhiRAwiBbmoMKAhAOMGgwvSjYNAExOZXhTZMCBMykXDIZFMqhQzMERhIGCw2ZDC5lAgAwQkQ1H + AGu4mBbOC7DOVpracuINcQVAoQL/BgVGA4ZKGBhwXiRhEhuQhcvMYDDxgQDmJRWYvFa60LQxBGCg + qYhAhgkEoBDGQqdwwAAEUkEgIEgQQDBAeMBAQAA4Lh0AgEKBAYBpgsCmAAMuiAhYGBgDDgEXmDAu + 6jcUrk4VDYUiOqujdMLaL3yNHtEhQNCBiAsBAcB0fWzhAPh5pSV6m78MsnH8cJdrBlzP6uy+8sft + VorSwdJX23NZ1e45P5TTso7Nz2NNe+/LN6s485G+V7/LP2MZXnL7tuX0mE5hMWN1q9/OvKLM/RZ2 + tdtXbVf2lTBcETH0KDTaFjcoUTrnozwF5TYuXTouHzHNEDc1szI1JhKVDY+ZTllETR5gDGwKzS1X + TXFQTZAODRc+zRlbTCQR//PkxEFwlDIoAO6zMUx8CgxuM4zgLQFHQYbgkZAkuZ6haZCiUAjIMuTP + MeSmNKhGMLylMQBiNFiYNLSyNDRcM2S+BfM5BM3Q4QFwMpMIfBxcSUmaCApYYwQISxWNMkKe0GoE + rCYI3wqZBokwgk0lU15UNENRGooMXnCNHebHaPmUSGWGGFUGqHGeKP8IwaRUpUqUHEi4GLCxKADD + EzZDTEIzEpjmBTrGAesMUkNqLO3hBxEzYDwFAjJgIiTqfUoUNU7RoUNgFJU3QA6wDeGQKFoDbsOQ + A2SiVkwJThMCACkwCviUBxmANs2KQE4pYqED4nWKdwpwBAts2XR5wXUDkA6BPIiuMos9mTInKUjX + DNO06S1oiRithjEg5gonYkhwTEcRp72mCAzBtUEwkOlXXQlPVG0+kAygUMNKfOwxGVzMtbFNvtA9 + aPYSaI0/08zSYb7Cp/KimL+GOd6ip9Waaiq09zs5DNepTTm9S2/lXx3UwlMosyWUbzuRvny2tft0 + 0d7d7Yn7dj/uZU9izYaVAKhgLAYmBEGUYSoahlhzSmMsAWYWoCoFCbM9ZxgxdROgELIYdoNJkEt2 + mDwFGYXQEhkrlKG18aaYygwZg+A2GHAUnfhggwVzFYPzAg0DO83z//PkxFFyTDo0Bvd0rBwEIwSF + syMVAxtSYxLBgyKd40bqcxVLYzXH4wELMyQIEwaGoxmDswaDMw2DwxNCwFPgEKNYHMmAWioGZAKT + DnnHAoBDpwAUADh40EC4BRlkjSSEUZE8QkS3wOPIdAqJFQJhjJrkBlUyvgK3NKqNmCMKURfQ6kRg + xYAQAzOggsQLOoBEAaI7sNJKxZggIOHGjZAZWmIayeIZRqTSz1DXfiNWtIIDijnLZRBa6l60oEhY + 0QhXbTWLxBBQmLmaGmRDBxEGgDEF2tKQAQMoUO0W5WwAgrnJLrjjBaEhDFmjIjEkk5WUg0ADgzjB + wZiQVBrhdFqUggVmjwsCggvEhYXXLvr7U3l8BKkbd4lqyScVtV3AK1mSuPtrkAy+Vu9Yl07MQfG5 + f8Tn7sojGcuicvoZ+9cmrTY7UiuOPQwA7dmDInahiQvvHn57QQTA0om5S0JoDgulDEIfaPPZEbkX + jMiomvuVqHWvujKHDqv7DkuhqX00xAMq5B8euQ+qUBMAgAfDA5wb0wmRCjMeJBrzAJAKgxWAHzh9 + Y+NcgGAwGSBjBiSPNwPdgxoRYTDYD3MQIP4yKxKTDjBwMA8A8wWQLjNZDJMHUEowEQITATEyMtsK + owIAQxIC//PkxFpxhC4kAP+0OSMpxDAw6gqzCSA9MF0GwwbQDjC9AxJgWChOfaeEAgAVVsEkiAZy + UpicuglHhJghTGl3s5MUIRjbK1h42mv4hsxBX7UTBhAEWbm3dH0ECTACTJEQFqBRg2LI7iMY7G0L + GYeGQOGlQGQJBBQlJtDWGQsS0LtJWtCCwExoEcsmcIlkgMeNncAOQLpwQQJUAYHdNxpAnxGXobpR + w6w2G0vgMChtaZCAFgRgBggMjJUYErKBAVfwNLKsL+ugWlLTq6gt5E+iyVErxpkHwPPNo/UPrtZu + 1xNyWrkRcZkkIiMxMcShcWDkIsYMMVJgpaUHFAQAFjaWZjRgcNMOMLNAUwFAbTEIk22sPSPAhIGm + iymoWp0po0pI2ytCJNIkqp2UuK0l22mNqy5ucPyVkDM3rguBJh0nel0tXpVqMzb56YCdp/ndZA0q + 4+UjisEY1nYsQ/SOva1Jn/q2aWxny5McqRitKpbnlQYV6HK/WrX/nQMCzASwHYwE4A5MEhBDDHnB + y4yIkF2MEqADzBEQJ8x/w5NMBcAWwUDnGEFChRrLgoGYQIBJGBjgOZgSQDgYbyAhGAWAJ5gA4BqY + HIA7GE+gXRAAJmAwATxgrAgcYF6AKA4AbMAQA/TD//PkxGdzZDooBP7w+HsGNMaKyoCCCFPFfjIw + gGBpmpObaRKjLYAwMWKX2HBAoLRYSlxd9MNnEIQFNs/awiHRv7TA2jvxBC2YRDVRAUXZbG4CmJYE + xgTWyZY0G6iJVgDHUwwYJBg0iqW7FkUmA0MwwfGhWJERYHDJhRkZcVmrl5iZUTLpqwyY2CGojAqB + hBWAdI9poIrrJVghcvaLJpfDcMRFwE7YYV4k+DUASIYwynTmQFHUBfYRKLogwxdczmSTXUgIJEhL + xwalJceaTbU6QIrkYonkp2gCUfKEgwSPLTC+S16ZdD5soVnbWBl6xlKNORb5MhgKwSU6EJeVUwGU + pOWsydNHl2bUNt1f2PNvKYi/jhOLDUZbVkDrN3pWbMvZus6B1+sQdh0mVvQ/CYMCNfgeGZ5uTuwM + 2yun2d2MOesCuqAXVj0xAMZkj7PUplZgtlTL2oObTwZA0DRu12D3+giItSmpPOfF5bMMto8qCs7V + ynnqMAQAgwRQOTDEEqNBHNowyhGjAqBLMaU4E7M23jGnAvMAkAIxaIEjq1WNMVIZIyNEDjXib8OI + CeMSTUNyoCOyYEMlw+MWBUMAmWNml1MbgXMGASNX+/OBXyM5xHNkJcOEj2LAzmF4dGMAMmwk//Pk + xGx1dDowAPd2jCZyimxpIOOAoIGgFxnB4YADmMCRkR0ZACsHQFhgOYAEAwGMWGDFAguWCAoxwkAo + gLFCViyFql22rKYA0NMLHTNw0gGBopMRKSgnKIk489NDXzGok7kONcNhqsMtKzCiAwoCEISGD5jQ + YY4IDQ4YcTGQCxmgkaKNmpHhnDcY0hAGLOZWz20k2MPNTRzF0U08zKygyQWMGCmDoAH/UPqF74uX + kMEDBIEQ4GCBSrTAwstEY4CGAEgGGCy5iQUYkBIQBQEMeNEHE7zJzUBGQYUg0bLXg4dDBYwEBAhi + WbIgYiCTHxdO8wYQApKDgZW8dAAUKKrNujcnq9KFCWSfCx3bXAnq9LcH4bymZMyKnh+7LZPW+MWL + lNVrXInS5Y1I3GI1N+70iqxOM5U0NSmrEo1TXJydpZXVqy3s/PVsuSSii0enbcVsazinYrUp5jtW + zar93hVtX+1dTtNSV9Xb+OcupcY3SblVW3N3u4y6IvgwBwETAuDmMYY9UmIRMFEF0wczyTCWBrMD + IFQwbRRTNpJgMUcHIw4AZTF+VqMUIrU3krjtnUMtncwWCjQSaMet0zUVzFJ1KGcYZPRsNkGsEAYC + wB9eaHLoUfCLQmQxojGxcmaWGnEC//PkxGleZCJMAvc0jaXMqMMQDMQcKEAcyAx8HLzCAAoRMCLC + wpqYGMCAOKhCgMMBEESqZfADEQaABoNG4mEGDDYhBgHGgFYMoJEZgRoQrnNoPNkhK35vQy0S0goG + DE7PV4ggu2Av2FxAYkIASIplxJgAQIRAJWBiQ6DCJYGIJvmCLIJUr1+LgdN53XhqigRlbsO8+Dpr + CLATrE3ITUagkW08IBShpi1QYJGhoKKqmTRKolGxD8tYIQCtqwDhKSVthbcH1h+xOyq1a1LaT9/n + Yv1butW88NZY4fhnhnhfyz1nVz5he5jd1rva/fwwz+pz87fK2fPsY8x1Z1qxlvPuXO8vZd3rWWWP + 8y+r9vfbuuaq9r8v55a+x3ty7udRWkxBTUUzLjEwMKqqqqqqqqqqqqqqqqqqqqqqqqqqCQBADGAM + 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 + Sw4LYwaY4LIldmZKGKfgK4aB2TTTTtiICZFMYcWYUIFBYsUqTEFNRTMuMTAwqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqHTibTckaRnwZwDyjIdkD/q2qtTqL3LqWszl2qRIp6WZNrKWsu6zkRiFjSZ3mkqONfFVB + zzg8u6WRThBg0uX1aohtPspgVmKgTA0BsFqRR+Lqt0iKNq/W7MGclW5/19LnX8u2TMiQ2ZC3JBlP + CELZThWNdVWQ2ZCh2TNXVMKDPsmEX1QVLuw///PkxIdWlDX5H9jAAIJUsoa24j9vKslQZBMx+KSe + IoSWNDDSI6FqCytq2k6o2zlL17lMUxVNXdnWkvwm2oiXF0hJdCNt2cZ0keVqrxS5WM3GkZC0hXNa + wl9D7cnbZgp9iUao2QpgtZTBgJVV926PfLJuwzFH2CJY4zcWWv7eiUDOzN0katy1kTBrrdlAW1rX + YMVNIq13tLS4W39oI/IH9jNJbs5QEu53qlHMO9lRy204NvB4XViUWqxmijNmGYdvWqWJRa67M5fn + X+n4zKKKXbqxllLax2DodiLu1Z2mlUuqTEFNRTMuMTAwqqoNDflnCsiM9qczMXjFpRGDMYSTZhFo + A10mCWGZSPRkUcmcQAFGIlRVclSYDaoJhmWPGJAoICoDJQAMFmNUGOgmGlgB4ZVCZYUCk5QcDCqU + sqBESBAwQRIwoPDETNMMR8heGDEe0vgECY5BmMmbcCPwZ8Y0QGzIjXXYQqcaBMcQwkQIyMLGCOEG + DQ6FgkcZxZmuGPMWIwIkYYJfBYMQjAxkRxDMAVTBASEtYBD0sDAkEWQAyIBKICS5iP7JHhAoxiNm + JOSQAU0tAoOvIAFmXMYnIA7BFxlrmUEDh0HEQyQQqlkBJAAo+wJMUskZCpj1BbUcvMBo//PkxPRy + BDlcBOaycMUctAmOqoi6SjDpYyGkIztuDS2WMWZa6UGQ2/DfOK4yxS4QMJCx4oUWnFgEWkNUTmfs + USJQyVTWIJLjSIKGL6rsUFUaVGX5LtFnQaUMIihwgASTfKWteXKkcOAkgCdjI2wNFaMz9mDI4Akl + 21FX6aaisBBwSgFVCE8LBInrCMbL7BQ8RsDKwhLLqK3qNI6joRCOIhEMFftNiDnLpR6WBUcbg78s + p6l2agmCKmpE6rLl2onBYURlCpQ6GmQttfSVINEAi4VgEcAVVAgSD6gC807hwUhKTEFNRTMuMTAw + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqq headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - - 9edc0412fc55e910-YYZ + - 9ef5d01e2d9236b4-YYZ Connection: - keep-alive Content-Type: - audio/mpeg Date: - - Fri, 17 Apr 2026 14:10:55 GMT + - Mon, 20 Apr 2026 17:19:16 GMT Server: - cloudflare Set-Cookie: - - __cf_bm=xN1OKBj4MlInUgrQUMuecqFxHnimlyfPAKIjbHVsa_w-1776435054.5595636-1.0.1.1-ewYS_3FoQXnvG3mpUMuufFFXJadHPl.9btmrU2vN0PHtUZzJaBvtvoEo6AE8Sf8hs06Q_xcRVmpG61DNS3rZxKvWVPdk028vpfZCa_8gKb4.6WhHDaDc5i9YpPFpLYX.; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:55 GMT + - __cf_bm=0i9zUuR7mRAadr017Wjvt7zg0OJT17X9N2.zoHFJPAo-1776705556.1840968-1.0.1.1-bPNzyANiGk88GqcD5THCmEbFHM5avgOyW0cZm.exVEsvmHn2cDYWCoQNG_SnSTpIJaMdpcKkNPRVbSM2v.A5cN4x5Spf2QXYwZGLGIzzJO_JkhJoafdzSgnIHgLuub43; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:49:16 GMT Transfer-Encoding: - chunked Via: - - envoy-router-6447bc5b78-mfdf6 + - envoy-router-5669f89f4d-6nj4b X-Content-Type-Options: - nosniff alt-svc: @@ -524,7 +516,7 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '571' + - '451' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: @@ -540,7 +532,7 @@ interactions: x-ratelimit-reset-requests: - 6ms x-request-id: - - req_30ed6f2373024d0a93ba8f4a1b27c565 + - req_cd32c075a5554b88b7f0bb3dcf109924 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_async_parallel_requests.yaml b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_async_parallel_requests.yaml index 41830717..8d510257 100644 --- a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_async_parallel_requests.yaml +++ b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_async_parallel_requests.yaml @@ -1,6 +1,6 @@ interactions: - request: - body: '{"messages":[{"role":"user","content":"What is 4 + 4?"}],"model":"gpt-4o-mini"}' + body: '{"messages":[{"role":"user","content":"What is 3 + 3?"}],"model":"gpt-4o-mini"}' headers: accept: - application/json @@ -40,36 +40,36 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeCGB46FP36DJ998IZnmAleVPYN3\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435056,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmZBrnspqmSUwqahI630mKxbx0mI\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705557,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"4 + 4 equals 8.\",\n \"refusal\": + \"assistant\",\n \"content\": \"3 + 3 equals 6.\",\n \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": null,\n \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 15,\n \"completion_tokens\": 8,\n \"total_tokens\": 23,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_fe7a5277a8\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_a7190374f3\"\n}\n" headers: Access-Control-Expose-Headers: - X-Request-ID CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc041dfcd7051b-YYZ + - 9ef5d0272f4b1a24-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:10:56 GMT + - Mon, 20 Apr 2026 17:19:17 GMT Server: - cloudflare Set-Cookie: - - __cf_bm=Uibn8n0PGYh3Hoo1i.pWL_WLdyC3OuV1IG_4GKZoWx8-1776435056.3206055-1.0.1.1-5ofRQYWgf8M2kwMcJ7E6.q.ANhJfrHNwVJx2YjZRK_6OKVnJqII0XjicDj7jtX34F73ErAlEye2ZmXSqf5u.fAMIo3AzoIjlYiehZKblgniEv8B0WejMpJvudaspE.4x; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:56 GMT + - __cf_bm=jDDIDmAERoIzUswVcIvuRg9eFyXsCaALDnrwVm7lhkA-1776705557.628944-1.0.1.1-SQrmSMIo8S8lWDuTKwK7tn9iUJJ958eO0EdpR65XdonIgb_Ior7tDni9iEw36YMOSFpcliqHlUMc.FqDBYoJiRdY.r9T2hi72dXHVVDyq6oQvKFfjRQQUR29NZ.ZLLVU; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:49:17 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: @@ -83,7 +83,7 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '344' + - '269' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: @@ -97,13 +97,13 @@ interactions: x-ratelimit-remaining-requests: - '29999' x-ratelimit-remaining-tokens: - - '149999992' + - '149999995' x-ratelimit-reset-requests: - 2ms x-ratelimit-reset-tokens: - 0s x-request-id: - - req_2503cefccf7c46ab8754c493756533c5 + - req_170e192c6d394f85bd67cffbbcc98084 status: code: 200 message: OK @@ -148,8 +148,8 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeCGNRyKr5yVSydd3KjjALuPl4hF\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435056,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmZBLfbS6v96mPq0Z35J2JrKLxa1\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705557,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"5 + 5 equals 10.\",\n \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": null,\n @@ -158,26 +158,26 @@ interactions: {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_fe7a5277a8\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_48f18beaba\"\n}\n" headers: Access-Control-Expose-Headers: - X-Request-ID CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc041e080f36c9-YYZ + - 9ef5d0272c634a29-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:10:56 GMT + - Mon, 20 Apr 2026 17:19:18 GMT Server: - cloudflare Set-Cookie: - - __cf_bm=6.tAg9kKltmv8j.iKSW2UvAnkhxEEWm8ktphCiNTzkw-1776435056.326755-1.0.1.1-P7Y67fSIvcDCHokCUAwFFHgLzYF1uM9djwZOnJPYH2cWZrz7ZU2K_M9nOmSRqz5KnAmgWJ4dEUmAfqoGqVz_DX61U2VFTwJxvCST1pFv4QHPd0avjT4pCg1VMtSlvcCk; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:56 GMT + - __cf_bm=4C3o3GJtAgxJaoY2NGu.KUsC6KjV3W1EGj0zX6Hf9RM-1776705557.62946-1.0.1.1-YKr43p8e9aUnJ0HdJGlf3Aq37vo4GeGb_1xkFJHPRwCjwFBabyVug1i8uPPwZYhilCZ1jszArkikWibXeD49OFqw2cdlm0mLTH3YP456pwsdmg76NtzYJ8KNjpuvjR68; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:49:18 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: @@ -191,7 +191,7 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '353' + - '319' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: @@ -211,12 +211,12 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_ac78616b60b34e8b89d5e09459b3545c + - req_741284138938442c9280784f4c40d7ce status: code: 200 message: OK - request: - body: '{"messages":[{"role":"user","content":"What is 3 + 3?"}],"model":"gpt-4o-mini"}' + body: '{"messages":[{"role":"user","content":"What is 4 + 4?"}],"model":"gpt-4o-mini"}' headers: accept: - application/json @@ -256,36 +256,36 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeCGkmi7N8MR77QIhzeEBCqhj3ff\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435056,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmZB4a1nrgVn39k6fHluSwjW17Qc\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705557,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"3 + 3 equals 6.\",\n \"refusal\": + \"assistant\",\n \"content\": \"4 + 4 equals 8.\",\n \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": null,\n \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 15,\n \"completion_tokens\": 8,\n \"total_tokens\": 23,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_fe7a5277a8\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_a7190374f3\"\n}\n" headers: Access-Control-Expose-Headers: - X-Request-ID CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc041e0c698631-YYZ + - 9ef5d02729f37aa8-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:10:56 GMT + - Mon, 20 Apr 2026 17:19:18 GMT Server: - cloudflare Set-Cookie: - - __cf_bm=INnxQ23gKMl3KrE.bFtktQF.CO5C2I9p0PBNVGkvemo-1776435056.3264387-1.0.1.1-W.9GZkFY5zlyUlSdxBx8W1cSpgan9cq6cbmW7v4qRPdapbwlTkzt7vxGxEhjemiOU7WCPskBrSibQgatldLphpB7fx7PF6wItJc44spS5FNgko1z4cOPWSVlfgGe_EEC; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:56 GMT + - __cf_bm=uRqn9E2zJjUaUa7hXi51dO4XKVAe8EM0vhcuQhLVpVM-1776705557.6241093-1.0.1.1-CEGCXiAyWaCY_kfdj9IBY2RrRdhrdU1AGO1bftgeCc_imt3s0hXVlF_9gnnLLN7l9hQ0gm1e6zztBHwJHCPaXUMVcPOJBKCiU0w3QnZVHqShJlb1hKNzzSdUjXp6.4Zi; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:49:18 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: @@ -299,7 +299,7 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '466' + - '533' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: @@ -319,7 +319,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_31cb9e78f544430f8d0e0b9909accef4 + - req_2d4c8b670b8d4c6091ae4bc64fec81be status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_async_streaming_with_break.yaml b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_async_streaming_with_break.yaml index 6af89444..ebba73bf 100644 --- a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_async_streaming_with_break.yaml +++ b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_async_streaming_with_break.yaml @@ -40,41 +40,41 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: 'data: {"id":"chatcmpl-DVeCJcYfLZC3bp0YwpvN0eYP4z5Ow","object":"chat.completion.chunk","created":1776435059,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"ORMmsMSSh"} + string: 'data: {"id":"chatcmpl-DWmZGtrKGK92iQaCCqT5Pqmm4BUvb","object":"chat.completion.chunk","created":1776705562,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_04d92b3965","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"qJJRjG7mT"} - data: {"id":"chatcmpl-DVeCJcYfLZC3bp0YwpvN0eYP4z5Ow","object":"chat.completion.chunk","created":1776435059,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"12"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"fIUSPvVV2"} + data: {"id":"chatcmpl-DWmZGtrKGK92iQaCCqT5Pqmm4BUvb","object":"chat.completion.chunk","created":1776705562,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_04d92b3965","choices":[{"index":0,"delta":{"content":"12"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"NtX7LFp3D"} - data: {"id":"chatcmpl-DVeCJcYfLZC3bp0YwpvN0eYP4z5Ow","object":"chat.completion.chunk","created":1776435059,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - +"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"LK204b9zu"} + data: {"id":"chatcmpl-DWmZGtrKGK92iQaCCqT5Pqmm4BUvb","object":"chat.completion.chunk","created":1776705562,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_04d92b3965","choices":[{"index":0,"delta":{"content":" + +"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"2v86BtWi1"} - data: {"id":"chatcmpl-DVeCJcYfLZC3bp0YwpvN0eYP4z5Ow","object":"chat.completion.chunk","created":1776435059,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"dtRm9uGr7I"} + data: {"id":"chatcmpl-DWmZGtrKGK92iQaCCqT5Pqmm4BUvb","object":"chat.completion.chunk","created":1776705562,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_04d92b3965","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"2V4pcxkgHN"} - data: {"id":"chatcmpl-DVeCJcYfLZC3bp0YwpvN0eYP4z5Ow","object":"chat.completion.chunk","created":1776435059,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"12"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"3wct9bX9R"} + data: {"id":"chatcmpl-DWmZGtrKGK92iQaCCqT5Pqmm4BUvb","object":"chat.completion.chunk","created":1776705562,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_04d92b3965","choices":[{"index":0,"delta":{"content":"12"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"1rGUMp2my"} - data: {"id":"chatcmpl-DVeCJcYfLZC3bp0YwpvN0eYP4z5Ow","object":"chat.completion.chunk","created":1776435059,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - equals"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"E5sV"} + data: {"id":"chatcmpl-DWmZGtrKGK92iQaCCqT5Pqmm4BUvb","object":"chat.completion.chunk","created":1776705562,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_04d92b3965","choices":[{"index":0,"delta":{"content":" + equals"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"se79"} - data: {"id":"chatcmpl-DVeCJcYfLZC3bp0YwpvN0eYP4z5Ow","object":"chat.completion.chunk","created":1776435059,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"DjNgIFLI7h"} + data: {"id":"chatcmpl-DWmZGtrKGK92iQaCCqT5Pqmm4BUvb","object":"chat.completion.chunk","created":1776705562,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_04d92b3965","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"dZt4ostPg2"} - data: {"id":"chatcmpl-DVeCJcYfLZC3bp0YwpvN0eYP4z5Ow","object":"chat.completion.chunk","created":1776435059,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"24"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"L3qEXsXFm"} + data: {"id":"chatcmpl-DWmZGtrKGK92iQaCCqT5Pqmm4BUvb","object":"chat.completion.chunk","created":1776705562,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_04d92b3965","choices":[{"index":0,"delta":{"content":"24"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"sqUEJrmiP"} - data: {"id":"chatcmpl-DVeCJcYfLZC3bp0YwpvN0eYP4z5Ow","object":"chat.completion.chunk","created":1776435059,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"TXMFCmGvOa"} + data: {"id":"chatcmpl-DWmZGtrKGK92iQaCCqT5Pqmm4BUvb","object":"chat.completion.chunk","created":1776705562,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_04d92b3965","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"ny5LERsXmu"} - data: {"id":"chatcmpl-DVeCJcYfLZC3bp0YwpvN0eYP4z5Ow","object":"chat.completion.chunk","created":1776435059,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"TcjPB"} + data: {"id":"chatcmpl-DWmZGtrKGK92iQaCCqT5Pqmm4BUvb","object":"chat.completion.chunk","created":1776705562,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_04d92b3965","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"kzRni"} - data: {"id":"chatcmpl-DVeCJcYfLZC3bp0YwpvN0eYP4z5Ow","object":"chat.completion.chunk","created":1776435059,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[],"usage":{"prompt_tokens":14,"completion_tokens":8,"total_tokens":22,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"zypfFbzo6uz"} + data: {"id":"chatcmpl-DWmZGtrKGK92iQaCCqT5Pqmm4BUvb","object":"chat.completion.chunk","created":1776705562,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_04d92b3965","choices":[],"usage":{"prompt_tokens":14,"completion_tokens":8,"total_tokens":22,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"t3S8NnAdRPN"} data: [DONE] @@ -87,19 +87,19 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc0433e9beb1a2-YYZ + - 9ef5d042c8295437-YYZ Connection: - keep-alive Content-Type: - text/event-stream; charset=utf-8 Date: - - Fri, 17 Apr 2026 14:11:00 GMT + - Mon, 20 Apr 2026 17:19:22 GMT Server: - cloudflare Set-Cookie: - - __cf_bm=nwnH4YDtd.oE.hp8DutGndgm4qFsNgKE9A0K2cqUYUQ-1776435059.8278348-1.0.1.1-djNrKHqZxjrmm.Y8k2JW3Snb_BzUMO.zQurK3ird1pBdMzwm60YW_BHLC44xsApYwi1rH6A0MAaDBWFrB73MuazQJ2hRcW7IzEMrBXjcO.6M8ehFgVJFu03yFPEr5BNo; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:41:00 GMT + - __cf_bm=CLSSzlBcKQDORKC9DIb5Wseu.0JoqnIhwssCq_KMmrY-1776705562.051842-1.0.1.1-ALuo3_1W0HY8oNuiFP0_T.czAtsfxCfwRndIQt8JTslcyTy1GeIeOdm8vMf5UlRDoDYs.Q_lwiRKDQXYhim_SBdDjFwLakuvahCqBWNojma.tBwN8_x0OAEMfYaFqZ7X; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:49:22 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: @@ -111,7 +111,7 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '438' + - '251' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: @@ -125,13 +125,13 @@ interactions: x-ratelimit-remaining-requests: - '29999' x-ratelimit-remaining-tokens: - - '149999995' + - '149999992' x-ratelimit-reset-requests: - 2ms x-ratelimit-reset-tokens: - 0s x-request-id: - - req_d296f1aee06a465099869bdd7f46fb5c + - req_aa226e8d3ecd4343a6f8ac2ddc4dcd1d status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_atranscription.yaml b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_atranscription.yaml index 44792d4e..cb313f18 100644 --- a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_atranscription.yaml +++ b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_atranscription.yaml @@ -3,7 +3,7 @@ interactions: body: !!python/object/apply:builtins.iter args: - - !!binary | - LS02ZGNhYmYyMGMzMzkyNDU0NmExNzQ3NTI1MzNiYzBmZQ0K + LS05MDZmYmEzNTY2ZTgyZmY0ZmYzYzQ3ZGNlYmFlYTYzZg0K - !!binary | Q29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPSJtb2RlbCINCg0K - !!binary | @@ -11,7 +11,7 @@ interactions: - !!binary | DQo= - !!binary | - LS02ZGNhYmYyMGMzMzkyNDU0NmExNzQ3NTI1MzNiYzBmZQ0K + LS05MDZmYmEzNTY2ZTgyZmY0ZmYzYzQ3ZGNlYmFlYTYzZg0K - !!binary | Q29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPSJyZXNwb25zZV9mb3JtYXQiDQoN Cg== @@ -20,7 +20,7 @@ interactions: - !!binary | DQo= - !!binary | - LS02ZGNhYmYyMGMzMzkyNDU0NmExNzQ3NTI1MzNiYzBmZQ0K + LS05MDZmYmEzNTY2ZTgyZmY0ZmYzYzQ3ZGNlYmFlYTYzZg0K - !!binary | Q29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPSJmaWxlIjsgZmlsZW5hbWU9InRl c3RfYXVkaW8ud2F2Ig0KQ29udGVudC1UeXBlOiBhdWRpby94LXdhdg0KDQo= @@ -591,7 +591,7 @@ interactions: - !!binary | DQo= - !!binary | - LS02ZGNhYmYyMGMzMzkyNDU0NmExNzQ3NTI1MzNiYzBmZS0tDQo= + LS05MDZmYmEzNTY2ZTgyZmY0ZmYzYzQ3ZGNlYmFlYTYzZi0tDQo= state: 0 headers: accept: @@ -603,7 +603,7 @@ interactions: content-length: - '32424' content-type: - - multipart/form-data; boundary=6dcabf20c33924546a174752533bc0fe + - multipart/form-data; boundary=906fba3566e82ff4ff3c47dcebaea63f host: - api.openai.com user-agent: @@ -633,28 +633,28 @@ interactions: response: body: string: '{"task":"transcribe","language":"english","duration":1.0,"text":"you","segments":[{"id":0,"seek":0,"start":0.0,"end":2.059999942779541,"text":" - you","tokens":[50364,291,50467],"temperature":0.0,"avg_logprob":-0.5146503448486328,"compression_ratio":0.27272728085517883,"no_speech_prob":0.9428148865699768}],"usage":{"type":"duration","seconds":1}}' + you","tokens":[50364,291,50467],"temperature":0.0,"avg_logprob":-0.5146503448486328,"compression_ratio":0.27272728085517883,"no_speech_prob":0.9425907731056213}],"usage":{"type":"duration","seconds":1}}' headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - - 9edc04071ae9f2bc-YYZ + - 9ef5d0150f7d8ea1-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:10:52 GMT + - Mon, 20 Apr 2026 17:19:15 GMT Server: - cloudflare Set-Cookie: - - __cf_bm=BzpVykXkT3yUc4lC6vrEV_Rx987OKMjmXS33i.1NqF8-1776435052.6589766-1.0.1.1-dw2t3SEGtic1zZjDTO_hUNN4xhvtJb5qXLvFoG0FoCwJt1YoTp4tjLtrSFC5E82xnM4aQtl_q5fyHBc4FmTM_8YPmeIz2Eki605vsIVhhNdOF4UNHBAJWNGfLAR3CjhH; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:52 GMT + - __cf_bm=SRRIXW7XK_X.S_AqLW1vQNKhT7TOSgCR99QMB.WSNaE-1776705554.7311463-1.0.1.1-Zn9ZZSwRzWi.xMdx0jgiS4.4L3xQu9UWBqJcme8iVgQUzigLChACcOUwhrjI2x4Q.N.PWKYbR7SMp4yQg1KLmUFwvww2mb6bzeVU0KrSU_2DGdddnod0LfGUaOTYfCC_; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:49:15 GMT Transfer-Encoding: - chunked Via: - - envoy-router-6c8cdcc898-4lznj + - envoy-router-6f954ccc87-jcf8w X-Content-Type-Options: - nosniff alt-svc: @@ -666,7 +666,7 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '173' + - '537' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: @@ -682,7 +682,7 @@ interactions: x-ratelimit-reset-requests: - 6ms x-request-id: - - req_44be578a62664d338330f1596cc6ee1a + - req_8f5e445365f34ec9bdd0892a50c2adc6 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_completion_metrics.yaml b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_completion_metrics.yaml index 300c3cd2..9fb21c22 100644 --- a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_completion_metrics.yaml +++ b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_completion_metrics.yaml @@ -40,8 +40,8 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeBjiCniTFGhZx1hX7MpjDzaGHbt\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435023,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmYY2a0q3BC9SD4Fho4wHmF4M66k\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705518,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"12 + 12 equals 24.\",\n \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": null,\n @@ -50,18 +50,18 @@ interactions: {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_fe7a5277a8\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_04d92b3965\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc034e8b2176ed-YYZ + - 9ef5cf2dae16a216-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:10:24 GMT + - Mon, 20 Apr 2026 17:18:39 GMT Server: - cloudflare Strict-Transport-Security: @@ -79,15 +79,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '706' + - '403' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=iPBq_2jcQurLTNaDe9i.BXI5vqqpE6tzaUfqLRCKsi0-1776435023.1295285-1.0.1.1-9nGgRZrlLJaInSsKoKKo7sqIB_UgQfQywAIXNj0d48TIyivCjXnGNNg3_8uX8DiHXFbWem55uhnziTwx3088Acx.jaF3YCwGAVWzCxLB4VX5QPNnkZLj7U28Md5EL6KE; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:24 GMT + - __cf_bm=iVojiUJMoE6Xggzhh8Xl6djpU3_KJwIiUKTtdJL6xzc-1776705517.7032545-1.0.1.1-Y9oRXXyfLSVqKSPP6rs24GyRV8AeJ5bSFY.naRS43JvsjnBp335Jk_F82tM1I3o7cAk01K34vjGy3CE0NzudvA.1OJLoOxgXDfL2bb3drNJsVnnnxnbB0XiAmH4RaccK; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:48:39 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -97,13 +97,13 @@ interactions: x-ratelimit-remaining-requests: - '29999' x-ratelimit-remaining-tokens: - - '149999995' + - '149999992' x-ratelimit-reset-requests: - 2ms x-ratelimit-reset-tokens: - 0s x-request-id: - - req_1e890f9956994a84bcdfa84632c62305 + - req_782d797c025f460095b37a1884203986 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_completion_streaming_sync.yaml b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_completion_streaming_sync.yaml index d99d8e6d..e9426e1d 100644 --- a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_completion_streaming_sync.yaml +++ b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_completion_streaming_sync.yaml @@ -13,7 +13,7 @@ interactions: Content-Type: - application/json Cookie: - - __cf_bm=iPBq_2jcQurLTNaDe9i.BXI5vqqpE6tzaUfqLRCKsi0-1776435023.1295285-1.0.1.1-9nGgRZrlLJaInSsKoKKo7sqIB_UgQfQywAIXNj0d48TIyivCjXnGNNg3_8uX8DiHXFbWem55uhnziTwx3088Acx.jaF3YCwGAVWzCxLB4VX5QPNnkZLj7U28Md5EL6KE + - __cf_bm=iVojiUJMoE6Xggzhh8Xl6djpU3_KJwIiUKTtdJL6xzc-1776705517.7032545-1.0.1.1-Y9oRXXyfLSVqKSPP6rs24GyRV8AeJ5bSFY.naRS43JvsjnBp335Jk_F82tM1I3o7cAk01K34vjGy3CE0NzudvA.1OJLoOxgXDfL2bb3drNJsVnnnxnbB0XiAmH4RaccK Host: - api.openai.com User-Agent: @@ -42,41 +42,41 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: 'data: {"id":"chatcmpl-DVeBlqWOAcwIHXyC7d9dl4Va3ktk4","object":"chat.completion.chunk","created":1776435025,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"jYgBhTYBk"} + string: 'data: {"id":"chatcmpl-DWmYaOXfc2IyBW5hJlXVOuVz99xOx","object":"chat.completion.chunk","created":1776705520,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_0542ea89f6","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"q6lycQ4mN"} - data: {"id":"chatcmpl-DVeBlqWOAcwIHXyC7d9dl4Va3ktk4","object":"chat.completion.chunk","created":1776435025,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"12"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"bgOG72nfr"} + data: {"id":"chatcmpl-DWmYaOXfc2IyBW5hJlXVOuVz99xOx","object":"chat.completion.chunk","created":1776705520,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_0542ea89f6","choices":[{"index":0,"delta":{"content":"12"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"8uPdoIs9V"} - data: {"id":"chatcmpl-DVeBlqWOAcwIHXyC7d9dl4Va3ktk4","object":"chat.completion.chunk","created":1776435025,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - +"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"PKkrHl8g9"} + data: {"id":"chatcmpl-DWmYaOXfc2IyBW5hJlXVOuVz99xOx","object":"chat.completion.chunk","created":1776705520,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_0542ea89f6","choices":[{"index":0,"delta":{"content":" + +"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"clnuCZEch"} - data: {"id":"chatcmpl-DVeBlqWOAcwIHXyC7d9dl4Va3ktk4","object":"chat.completion.chunk","created":1776435025,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"RbK3CXwmV1"} + data: {"id":"chatcmpl-DWmYaOXfc2IyBW5hJlXVOuVz99xOx","object":"chat.completion.chunk","created":1776705520,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_0542ea89f6","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Z5cqm5CcQ7"} - data: {"id":"chatcmpl-DVeBlqWOAcwIHXyC7d9dl4Va3ktk4","object":"chat.completion.chunk","created":1776435025,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"12"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"qpx1lubwB"} + data: {"id":"chatcmpl-DWmYaOXfc2IyBW5hJlXVOuVz99xOx","object":"chat.completion.chunk","created":1776705520,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_0542ea89f6","choices":[{"index":0,"delta":{"content":"12"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"hlfZWDRft"} - data: {"id":"chatcmpl-DVeBlqWOAcwIHXyC7d9dl4Va3ktk4","object":"chat.completion.chunk","created":1776435025,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - equals"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"ueF1"} + data: {"id":"chatcmpl-DWmYaOXfc2IyBW5hJlXVOuVz99xOx","object":"chat.completion.chunk","created":1776705520,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_0542ea89f6","choices":[{"index":0,"delta":{"content":" + equals"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"gNYV"} - data: {"id":"chatcmpl-DVeBlqWOAcwIHXyC7d9dl4Va3ktk4","object":"chat.completion.chunk","created":1776435025,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"T3zTNIiNqe"} + data: {"id":"chatcmpl-DWmYaOXfc2IyBW5hJlXVOuVz99xOx","object":"chat.completion.chunk","created":1776705520,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_0542ea89f6","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"bD8fNxYswI"} - data: {"id":"chatcmpl-DVeBlqWOAcwIHXyC7d9dl4Va3ktk4","object":"chat.completion.chunk","created":1776435025,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"24"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"2WJ6IMRtL"} + data: {"id":"chatcmpl-DWmYaOXfc2IyBW5hJlXVOuVz99xOx","object":"chat.completion.chunk","created":1776705520,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_0542ea89f6","choices":[{"index":0,"delta":{"content":"24"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"qln4UASvr"} - data: {"id":"chatcmpl-DVeBlqWOAcwIHXyC7d9dl4Va3ktk4","object":"chat.completion.chunk","created":1776435025,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"oiK4vmz2nZ"} + data: {"id":"chatcmpl-DWmYaOXfc2IyBW5hJlXVOuVz99xOx","object":"chat.completion.chunk","created":1776705520,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_0542ea89f6","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"yLbk1J30r8"} - data: {"id":"chatcmpl-DVeBlqWOAcwIHXyC7d9dl4Va3ktk4","object":"chat.completion.chunk","created":1776435025,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"QfVmz"} + data: {"id":"chatcmpl-DWmYaOXfc2IyBW5hJlXVOuVz99xOx","object":"chat.completion.chunk","created":1776705520,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_0542ea89f6","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"g1a03"} - data: {"id":"chatcmpl-DVeBlqWOAcwIHXyC7d9dl4Va3ktk4","object":"chat.completion.chunk","created":1776435025,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[],"usage":{"prompt_tokens":14,"completion_tokens":8,"total_tokens":22,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"IcUE3uHCpqM"} + data: {"id":"chatcmpl-DWmYaOXfc2IyBW5hJlXVOuVz99xOx","object":"chat.completion.chunk","created":1776705520,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_0542ea89f6","choices":[],"usage":{"prompt_tokens":14,"completion_tokens":8,"total_tokens":22,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"Nqhdcz9qViI"} data: [DONE] @@ -87,13 +87,13 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc035f8af578a5-YYZ + - 9ef5cf3ba911ebb9-YYZ Connection: - keep-alive Content-Type: - text/event-stream; charset=utf-8 Date: - - Fri, 17 Apr 2026 14:10:26 GMT + - Mon, 20 Apr 2026 17:18:40 GMT Server: - cloudflare Strict-Transport-Security: @@ -109,7 +109,7 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '198' + - '226' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: @@ -123,13 +123,13 @@ interactions: x-ratelimit-remaining-requests: - '29999' x-ratelimit-remaining-tokens: - - '149999995' + - '149999992' x-ratelimit-reset-requests: - 2ms x-ratelimit-reset-tokens: - 0s x-request-id: - - req_e60ccd9bee5342448ce45efa6f24ad44 + - req_9c9fd8532c004687a4918e738f75a040 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_completion_with_system_prompt.yaml b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_completion_with_system_prompt.yaml index 3cdcf82f..f97109d8 100644 --- a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_completion_with_system_prompt.yaml +++ b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_completion_with_system_prompt.yaml @@ -14,7 +14,7 @@ interactions: Content-Type: - application/json Cookie: - - __cf_bm=iPBq_2jcQurLTNaDe9i.BXI5vqqpE6tzaUfqLRCKsi0-1776435023.1295285-1.0.1.1-9nGgRZrlLJaInSsKoKKo7sqIB_UgQfQywAIXNj0d48TIyivCjXnGNNg3_8uX8DiHXFbWem55uhnziTwx3088Acx.jaF3YCwGAVWzCxLB4VX5QPNnkZLj7U28Md5EL6KE + - __cf_bm=iVojiUJMoE6Xggzhh8Xl6djpU3_KJwIiUKTtdJL6xzc-1776705517.7032545-1.0.1.1-Y9oRXXyfLSVqKSPP6rs24GyRV8AeJ5bSFY.naRS43JvsjnBp335Jk_F82tM1I3o7cAk01K34vjGy3CE0NzudvA.1OJLoOxgXDfL2bb3drNJsVnnnxnbB0XiAmH4RaccK Host: - api.openai.com User-Agent: @@ -43,8 +43,8 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeCBNRCXVC2lIO1kqND7zrc5iJQb\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435051,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmZ6OK3AEr9lX6uE5GZiFysvfUNs\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705552,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"24\",\n \"refusal\": null,\n \ \"annotations\": []\n },\n \"logprobs\": null,\n \"finish_reason\": @@ -53,18 +53,18 @@ interactions: 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_fe7a5277a8\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_a7190374f3\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc04001836a234-YYZ + - 9ef5d00679606d93-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:10:51 GMT + - Mon, 20 Apr 2026 17:19:12 GMT Server: - cloudflare Strict-Transport-Security: @@ -82,7 +82,7 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '244' + - '521' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: @@ -102,7 +102,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_c4b2fe2676c84011991d22035fafbb4f + - req_64968ba66d3b447580446815c1be9b59 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_embeddings.yaml b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_embeddings.yaml index 39295d0b..78b8e3f3 100644 --- a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_embeddings.yaml +++ b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_embeddings.yaml @@ -434,13 +434,13 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc0380aee434dc-YYZ + - 9ef5cf7bb8c6813d-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:10:31 GMT + - Mon, 20 Apr 2026 17:18:51 GMT Server: - cloudflare Strict-Transport-Security: @@ -448,7 +448,7 @@ interactions: Transfer-Encoding: - chunked Via: - - envoy-router-786fff7584-9zsxz + - envoy-router-7fcdb9c87b-ltbjb X-Content-Type-Options: - nosniff access-control-expose-headers: @@ -462,15 +462,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '53' + - '73' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=oLBMCwdZjrY_YaI6CYJ822JYvMeemGdf4yJkC2Xl4LE-1776435031.1451778-1.0.1.1-L4wvXEj5JUtKlWCV6dBDu19w6n00Y6oPNmBBMMT8vFfBJ1fxE0udgkBk3bBN3NlSVFsUUElqpiMXe6BT7PoKTUqjJ3GoD5aLsYPflljxKrLo7a7.oUIUMZoK0VuGYW7X; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:31 GMT + - __cf_bm=k.fPsjELGzN0ulYQCQY_cz7OetvpvrsH2IpeNBGldfc-1776705530.1943758-1.0.1.1-1CKJVlmC07LqH0_9PMM5INSwkEQnRa9316aBeL3pdM7cxBCIL5RQGhFQp9UYXGiNpcdK1v8ZXVkQw_zmJIbTjUMaOZW5Zppe3WQOqxM_d_HUadQvwlDadyESz0IYnFgg; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:48:51 GMT x-engine-geography: - US x-openai-proxy-wasm: @@ -488,7 +488,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_b05912c0aa23445aab5e280f0418ba6e + - req_b30d7bbc1c134528963ade189254b3b7 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_image_generation.yaml b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_image_generation.yaml index 9f1da96f..cb091bef 100644 --- a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_image_generation.yaml +++ b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_image_generation.yaml @@ -38,18 +38,18 @@ interactions: uri: https://api.openai.com/v1/images/generations response: body: - string: "{\n \"created\": 1776435043,\n \"data\": [\n {\n \"url\": - \"https://oaidalleapiprodscus.blob.core.windows.net/private/org-gY2CWXtioLkEfpHBJTrcdNID/user-jIouncdtCNqBNU7Q41fsSvZ2/img-gsdQNugRscG1PI9o1jcxk2fJ.png?st=2026-04-17T13%3A10%3A43Z&se=2026-04-17T15%3A10%3A43Z&sp=r&sv=2026-02-06&sr=b&rscd=inline&rsct=image/png&skoid=13da7400-b3f7-4f8c-9cba-908fecbd114c&sktid=a48cca56-e6da-484e-a814-9c849652bcb3&skt=2026-04-17T06%3A45%3A56Z&ske=2026-04-18T06%3A45%3A56Z&sks=b&skv=2026-02-06&sig=hU7ZDHXYPNSbKi58RAhz7OFpzqA6kheWWu%2Bozuk3uI0%3D\"\n + string: "{\n \"created\": 1776705541,\n \"data\": [\n {\n \"url\": + \"https://oaidalleapiprodscus.blob.core.windows.net/private/org-gY2CWXtioLkEfpHBJTrcdNID/user-jIouncdtCNqBNU7Q41fsSvZ2/img-gmy27riBR2mTrgMQrLL8Qtwg.png?st=2026-04-20T16%3A19%3A01Z&se=2026-04-20T18%3A19%3A01Z&sp=r&sv=2026-02-06&sr=b&rscd=inline&rsct=image/png&skoid=9346e9b9-5d29-4d37-a0a9-c6f95f09f79d&sktid=a48cca56-e6da-484e-a814-9c849652bcb3&skt=2026-04-20T03%3A39%3A45Z&ske=2026-04-21T03%3A39%3A45Z&sks=b&skv=2026-02-06&sig=uHzNsB8%2B6CIPx/1PLgu47D02s2UXhq%2BNyQR4Hhp41Vo%3D\"\n \ }\n ]\n}" headers: CF-RAY: - - 9edc038f6b1bac42-YYZ + - 9ef5cf889c0dab64-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:10:43 GMT + - Mon, 20 Apr 2026 17:19:02 GMT Server: - cloudflare Strict-Transport-Security: @@ -63,21 +63,21 @@ interactions: cf-cache-status: - DYNAMIC content-length: - - '546' + - '548' openai-organization: - braintrust-data openai-processing-ms: - - '9521' + - '9701' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=4Oyi.dRnrJrAgBzeVXy4MVXak0gLttykkSFcg0QpGL0-1776435033.5057952-1.0.1.1-1Euf.__5qmSIGASt5UqJfEGdAFuxkUsUDNuwLipi5_JyzgeqMz0K9njtU1_0HSZtlTwU_tlQx4JyyosRcncZyDduGhfWvPSRhSlIkE9kzOG6_jrObjCXY6WLLmiOM9gK; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:43 GMT + - __cf_bm=3AlDVP1TzBqgOIyVPY6g3JqX9bZknOjRyRCcBEL0zpM-1776705532.2555895-1.0.1.1-2rHUin439KVJGyHEGV7FRGcDTFxayoxCRld5dTXqrbvbcXiGSuFeEVWCvTqHwVsuphwqmEL5KVBkZazEXstqpoi_Ts_5UCPvAUqWV3lUhRA3Ytx75Aqq3xpbloH880mx; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:49:02 GMT x-request-id: - - req_d7f4da39adad4e3ba0611ba1e9823603 + - req_5e3e924b8a174d229dab64b4eec1136b status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_moderation.yaml b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_moderation.yaml index 28c834e3..cd01638f 100644 --- a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_moderation.yaml +++ b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_moderation.yaml @@ -38,7 +38,7 @@ interactions: uri: https://api.openai.com/v1/moderations response: body: - string: "{\n \"id\": \"modr-6308\",\n \"model\": \"omni-moderation-latest\",\n + string: "{\n \"id\": \"modr-4661\",\n \"model\": \"omni-moderation-latest\",\n \ \"results\": [\n {\n \"flagged\": false,\n \"categories\": {\n \"harassment\": false,\n \"harassment/threatening\": false,\n \ \"sexual\": false,\n \"hate\": false,\n \"hate/threatening\": @@ -46,15 +46,15 @@ interactions: \ \"self-harm/intent\": false,\n \"self-harm/instructions\": false,\n \"self-harm\": false,\n \"sexual/minors\": false,\n \ \"violence\": false,\n \"violence/graphic\": false\n },\n - \ \"category_scores\": {\n \"harassment\": 0.00004802972318863164,\n - \ \"harassment/threatening\": 4.331903899346328e-6,\n \"sexual\": - 0.00002868540823874629,\n \"hate\": 0.000010554685795431098,\n \"hate/threatening\": - 2.561282210758673e-7,\n \"illicit\": 0.00004238847419937498,\n \"illicit/violent\": - 8.61465062380632e-6,\n \"self-harm/intent\": 0.0002117642425769555,\n - \ \"self-harm/instructions\": 1.3846004563753396e-6,\n \"self-harm\": - 8.750299760661308e-6,\n \"sexual/minors\": 2.586743108135441e-6,\n - \ \"violence\": 0.00048297182378774457,\n \"violence/graphic\": - 4.683888424952456e-6\n },\n \"category_applied_input_types\": {\n + \ \"category_scores\": {\n \"harassment\": 0.000048785712278226595,\n + \ \"harassment/threatening\": 4.469407144215697e-6,\n \"sexual\": + 0.00002868540823874629,\n \"hate\": 0.000010889691002655445,\n \"hate/threatening\": + 2.72647027069593e-7,\n \"illicit\": 0.00004238847419937498,\n \"illicit/violent\": + 9.028039015031105e-6,\n \"self-harm/intent\": 0.0002117642425769555,\n + \ \"self-harm/instructions\": 1.4285517650093407e-6,\n \"self-harm\": + 9.028039015031105e-6,\n \"sexual/minors\": 2.710880136557205e-6,\n + \ \"violence\": 0.00048422495919655346,\n \"violence/graphic\": + 4.98595821272702e-6\n },\n \"category_applied_input_types\": {\n \ \"harassment\": [\n \"text\"\n ],\n \"harassment/threatening\": [\n \"text\"\n ],\n \"sexual\": [\n \"text\"\n \ ],\n \"hate\": [\n \"text\"\n ],\n \"hate/threatening\": @@ -67,13 +67,13 @@ interactions: [\n \"text\"\n ]\n }\n }\n ]\n}" headers: CF-RAY: - - 9edc08f17d6161e9-YYZ + - 9ef5cf868aeae702-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:14:14 GMT + - Mon, 20 Apr 2026 17:18:52 GMT Server: - cloudflare Strict-Transport-Security: @@ -91,19 +91,19 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '96' + - '138' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=OyBcsckwhf3YL7hsqpEt3Atb_UhpNQg7Kef4rM6RVfM-1776435253.9939783-1.0.1.1-xodsi1y4I0qLc.FXu39dj0sY9iq40K6JlnO8C1xu8yJULsykAz1YQ9vZmt_flGuQrrgrx1R9QZiBr_eAm5Eckw4nhk0aWzI3hOOWxxR8pbnGJbpy_7v9o1eBTgNRTO77; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:44:14 GMT + - __cf_bm=7d.vPJPC.kY_sbYq0W0NcKoThyuPEG0REJ5xEHX32pY-1776705531.9226751-1.0.1.1-1XoMhihfPSgNDNoq3I5MJYzfpG.2ZoI9V5HY_eMyVjrGAQ3QX6.MXWG.1Xy0RAt1OKdoDukn0mGHWNRrWJWW.Tjp9CVAewr17ZjSs1BfvYeJgUiKs9bagyla.ZOnv7n8; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:48:52 GMT x-openai-proxy-wasm: - v0.1 x-request-id: - - req_a94e98067e1a4f59b8c578ac7cd552d6 + - req_faa0fbc74fd14cf2a05532993afd1b7d status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_openrouter_no_booleans_in_metrics.yaml b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_openrouter_no_booleans_in_metrics.yaml index 8378e4ff..565719b3 100644 --- a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_openrouter_no_booleans_in_metrics.yaml +++ b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_openrouter_no_booleans_in_metrics.yaml @@ -19,25 +19,25 @@ interactions: Host: - openrouter.ai User-Agent: - - litellm/1.83.9 + - litellm/1.83.10 X-Title: - liteLLM method: POST uri: https://openrouter.ai/api/v1/chat/completions response: body: - string: "\n \n{\"id\":\"gen-1776435070-S7k6GPfRKTKhH9KvyngA\",\"object\":\"chat.completion\",\"created\":1776435070,\"model\":\"openai/gpt-4o-mini\",\"provider\":\"Azure\",\"system_fingerprint\":\"fp_eb37e061ec\",\"choices\":[{\"index\":0,\"logprobs\":null,\"finish_reason\":\"stop\",\"native_finish_reason\":\"stop\",\"message\":{\"role\":\"assistant\",\"content\":\"4\",\"refusal\":null,\"reasoning\":null}}],\"usage\":{\"prompt_tokens\":20,\"completion_tokens\":2,\"total_tokens\":22,\"cost\":0.0000042,\"is_byok\":false,\"prompt_tokens_details\":{\"cached_tokens\":0,\"cache_write_tokens\":0,\"audio_tokens\":0,\"video_tokens\":0},\"cost_details\":{\"upstream_inference_cost\":0.0000042,\"upstream_inference_prompt_cost\":0.000003,\"upstream_inference_completions_cost\":0.0000012},\"completion_tokens_details\":{\"reasoning_tokens\":0,\"image_tokens\":0,\"audio_tokens\":0}}}" + string: '{"id":"gen-1776705569-KqpnuQCaCBVZ9cN9guVZ","object":"chat.completion","created":1776705569,"model":"openai/gpt-4o-mini","provider":"Azure","system_fingerprint":"fp_eb37e061ec","choices":[{"index":0,"logprobs":null,"finish_reason":"stop","native_finish_reason":"stop","message":{"role":"assistant","content":"4","refusal":null,"reasoning":null}}],"usage":{"prompt_tokens":20,"completion_tokens":2,"total_tokens":22,"cost":0.0000042,"is_byok":false,"prompt_tokens_details":{"cached_tokens":0,"cache_write_tokens":0,"audio_tokens":0,"video_tokens":0},"cost_details":{"upstream_inference_cost":0.0000042,"upstream_inference_prompt_cost":0.000003,"upstream_inference_completions_cost":0.0000012},"completion_tokens_details":{"reasoning_tokens":0,"image_tokens":0,"audio_tokens":0}}}' headers: Access-Control-Allow-Origin: - '*' CF-RAY: - - 9edc04732d8b4a29-YYZ + - 9ef5d06f2bc5378a-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:11:10 GMT + - Mon, 20 Apr 2026 17:19:29 GMT Permissions-Policy: - payment=(self "https://checkout.stripe.com" "https://connect-js.stripe.com" "https://js.stripe.com" "https://*.js.stripe.com" "https://hooks.stripe.com") @@ -50,11 +50,11 @@ interactions: X-Content-Type-Options: - nosniff X-Generation-Id: - - gen-1776435070-S7k6GPfRKTKhH9KvyngA + - gen-1776705569-KqpnuQCaCBVZ9cN9guVZ access-control-expose-headers: - X-Generation-Id,cf-ray content-length: - - '789' + - '778' status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_responses_metrics.yaml b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_responses_metrics.yaml index 1a68bad0..2dddbe0d 100644 --- a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_responses_metrics.yaml +++ b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_responses_metrics.yaml @@ -16,43 +16,43 @@ interactions: Host: - api.openai.com User-Agent: - - litellm/1.83.9 + - litellm/1.83.10 method: POST uri: https://api.openai.com/v1/responses response: body: - string: "{\n \"id\": \"resp_0e31fbb79ff657a70069e23f54817481a3a2e329cbb5a8fc56\",\n - \ \"object\": \"response\",\n \"created_at\": 1776435028,\n \"status\": + string: "{\n \"id\": \"resp_0c00f878c45226fe0069e65ff4b3c881a3bae1585f839fdcc3\",\n + \ \"object\": \"response\",\n \"created_at\": 1776705525,\n \"status\": \"completed\",\n \"background\": false,\n \"billing\": {\n \"payer\": - \"developer\"\n },\n \"completed_at\": 1776435029,\n \"error\": null,\n + \"developer\"\n },\n \"completed_at\": 1776705527,\n \"error\": null,\n \ \"frequency_penalty\": 0.0,\n \"incomplete_details\": null,\n \"instructions\": \"Just the number please\",\n \"max_output_tokens\": null,\n \"max_tool_calls\": null,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \"output\": [\n {\n - \ \"id\": \"msg_0e31fbb79ff657a70069e23f554dc481a3bd56bbf1b52ecefb\",\n + \ \"id\": \"msg_0c00f878c45226fe0069e65ff6f28081a381962a032a5bc150\",\n \ \"type\": \"message\",\n \"status\": \"completed\",\n \"content\": [\n {\n \"type\": \"output_text\",\n \"annotations\": [],\n \"logprobs\": [],\n \"text\": \"24\"\n }\n \ ],\n \"role\": \"assistant\"\n }\n ],\n \"parallel_tool_calls\": true,\n \"presence_penalty\": 0.0,\n \"previous_response_id\": null,\n \"prompt_cache_key\": - null,\n \"prompt_cache_retention\": null,\n \"reasoning\": {\n \"effort\": - null,\n \"summary\": null\n },\n \"safety_identifier\": null,\n \"service_tier\": - \"default\",\n \"store\": true,\n \"temperature\": 1.0,\n \"text\": {\n - \ \"format\": {\n \"type\": \"text\"\n },\n \"verbosity\": \"medium\"\n - \ },\n \"tool_choice\": \"auto\",\n \"tools\": [],\n \"top_logprobs\": - 0,\n \"top_p\": 1.0,\n \"truncation\": \"disabled\",\n \"usage\": {\n \"input_tokens\": - 22,\n \"input_tokens_details\": {\n \"cached_tokens\": 0\n },\n - \ \"output_tokens\": 2,\n \"output_tokens_details\": {\n \"reasoning_tokens\": - 0\n },\n \"total_tokens\": 24\n },\n \"user\": null,\n \"metadata\": - {}\n}" + null,\n \"prompt_cache_retention\": \"in_memory\",\n \"reasoning\": {\n + \ \"effort\": null,\n \"summary\": null\n },\n \"safety_identifier\": + null,\n \"service_tier\": \"default\",\n \"store\": true,\n \"temperature\": + 1.0,\n \"text\": {\n \"format\": {\n \"type\": \"text\"\n },\n + \ \"verbosity\": \"medium\"\n },\n \"tool_choice\": \"auto\",\n \"tools\": + [],\n \"top_logprobs\": 0,\n \"top_p\": 1.0,\n \"truncation\": \"disabled\",\n + \ \"usage\": {\n \"input_tokens\": 22,\n \"input_tokens_details\": {\n + \ \"cached_tokens\": 0\n },\n \"output_tokens\": 2,\n \"output_tokens_details\": + {\n \"reasoning_tokens\": 0\n },\n \"total_tokens\": 24\n },\n + \ \"user\": null,\n \"metadata\": {}\n}" headers: CF-RAY: - - 9edc036feb2c180e-YYZ + - 9ef5cf444a7271ff-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:10:29 GMT + - Mon, 20 Apr 2026 17:18:49 GMT Server: - cloudflare Strict-Transport-Security: @@ -66,19 +66,19 @@ interactions: cf-cache-status: - DYNAMIC content-length: - - '1549' + - '1556' openai-organization: - braintrust-data openai-processing-ms: - - '937' + - '7257' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=cDCpWUsK0_He1OclxthRzf3vFmYItgsO7aNLuSDAEQw-1776435028.4653869-1.0.1.1-FMonSbAWJj41YbWc4HxsuV0plo.OBFRZmfjc1e5iGkDSVV0rjzwJMHVFAn9aOMllifJOddGcenQRoTd4EPKwr0SF74rtWnLL37I4mrQrNEY2vdS7XOnNa7QuQFn_DpJU; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:29 GMT + - __cf_bm=4JHeoGW5Gj2KE.jHeAdH2HT_2aISV7SwDyCrhn2edtc-1776705521.3286204-1.0.1.1-OS61AsPs5pmKJUD6oa3CONyzzH4VnhQzF4ROEog4K.05oEMTCl05ZhIcNnoE5cuKNuGi.98gx_RGF1LKnnreMasaeVoAS6.7hDuvSipc2zdVzUwsdrXECRl187ldGZKz; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:48:49 GMT x-ratelimit-limit-requests: - '30000' x-ratelimit-limit-tokens: @@ -92,7 +92,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_5a203cba90144d38b9d80d7b78cecf07 + - req_a4833aacd2484b5b94ce1c312ed7271c status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_responses_streaming_sync.yaml b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_responses_streaming_sync.yaml index 0fcd93bd..e7adb5ba 100644 --- a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_responses_streaming_sync.yaml +++ b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_responses_streaming_sync.yaml @@ -13,109 +13,109 @@ interactions: Content-Type: - application/json Cookie: - - __cf_bm=cDCpWUsK0_He1OclxthRzf3vFmYItgsO7aNLuSDAEQw-1776435028.4653869-1.0.1.1-FMonSbAWJj41YbWc4HxsuV0plo.OBFRZmfjc1e5iGkDSVV0rjzwJMHVFAn9aOMllifJOddGcenQRoTd4EPKwr0SF74rtWnLL37I4mrQrNEY2vdS7XOnNa7QuQFn_DpJU + - __cf_bm=4JHeoGW5Gj2KE.jHeAdH2HT_2aISV7SwDyCrhn2edtc-1776705521.3286204-1.0.1.1-OS61AsPs5pmKJUD6oa3CONyzzH4VnhQzF4ROEog4K.05oEMTCl05ZhIcNnoE5cuKNuGi.98gx_RGF1LKnnreMasaeVoAS6.7hDuvSipc2zdVzUwsdrXECRl187ldGZKz Host: - api.openai.com User-Agent: - - litellm/1.83.9 + - litellm/1.83.10 method: POST uri: https://api.openai.com/v1/responses response: body: string: 'event: response.created - data: {"type":"response.created","response":{"id":"resp_0b9f7d753473ef240069e23f71bf18819cb08b0c7f30ffdb1d","object":"response","created_at":1776435057,"status":"in_progress","background":false,"completed_at":null,"error":null,"frequency_penalty":0.0,"incomplete_details":null,"instructions":null,"max_output_tokens":null,"max_tool_calls":null,"model":"gpt-4o-mini-2024-07-18","output":[],"parallel_tool_calls":true,"presence_penalty":0.0,"previous_response_id":null,"prompt_cache_key":null,"prompt_cache_retention":null,"reasoning":{"effort":null,"summary":null},"safety_identifier":null,"service_tier":"auto","store":true,"temperature":1.0,"text":{"format":{"type":"text"},"verbosity":"medium"},"tool_choice":"auto","tools":[],"top_logprobs":0,"top_p":1.0,"truncation":"disabled","usage":null,"user":null,"metadata":{}},"sequence_number":0} + data: {"type":"response.created","response":{"id":"resp_0147b0e842b352340069e660172064819e806681206cd40012","object":"response","created_at":1776705559,"status":"in_progress","background":false,"completed_at":null,"error":null,"frequency_penalty":0.0,"incomplete_details":null,"instructions":null,"max_output_tokens":null,"max_tool_calls":null,"model":"gpt-4o-mini-2024-07-18","output":[],"parallel_tool_calls":true,"presence_penalty":0.0,"previous_response_id":null,"prompt_cache_key":null,"prompt_cache_retention":"in_memory","reasoning":{"effort":null,"summary":null},"safety_identifier":null,"service_tier":"auto","store":true,"temperature":1.0,"text":{"format":{"type":"text"},"verbosity":"medium"},"tool_choice":"auto","tools":[],"top_logprobs":0,"top_p":1.0,"truncation":"disabled","usage":null,"user":null,"metadata":{}},"sequence_number":0} event: response.in_progress - data: {"type":"response.in_progress","response":{"id":"resp_0b9f7d753473ef240069e23f71bf18819cb08b0c7f30ffdb1d","object":"response","created_at":1776435057,"status":"in_progress","background":false,"completed_at":null,"error":null,"frequency_penalty":0.0,"incomplete_details":null,"instructions":null,"max_output_tokens":null,"max_tool_calls":null,"model":"gpt-4o-mini-2024-07-18","output":[],"parallel_tool_calls":true,"presence_penalty":0.0,"previous_response_id":null,"prompt_cache_key":null,"prompt_cache_retention":null,"reasoning":{"effort":null,"summary":null},"safety_identifier":null,"service_tier":"auto","store":true,"temperature":1.0,"text":{"format":{"type":"text"},"verbosity":"medium"},"tool_choice":"auto","tools":[],"top_logprobs":0,"top_p":1.0,"truncation":"disabled","usage":null,"user":null,"metadata":{}},"sequence_number":1} + data: {"type":"response.in_progress","response":{"id":"resp_0147b0e842b352340069e660172064819e806681206cd40012","object":"response","created_at":1776705559,"status":"in_progress","background":false,"completed_at":null,"error":null,"frequency_penalty":0.0,"incomplete_details":null,"instructions":null,"max_output_tokens":null,"max_tool_calls":null,"model":"gpt-4o-mini-2024-07-18","output":[],"parallel_tool_calls":true,"presence_penalty":0.0,"previous_response_id":null,"prompt_cache_key":null,"prompt_cache_retention":"in_memory","reasoning":{"effort":null,"summary":null},"safety_identifier":null,"service_tier":"auto","store":true,"temperature":1.0,"text":{"format":{"type":"text"},"verbosity":"medium"},"tool_choice":"auto","tools":[],"top_logprobs":0,"top_p":1.0,"truncation":"disabled","usage":null,"user":null,"metadata":{}},"sequence_number":1} event: response.output_item.added - data: {"type":"response.output_item.added","item":{"id":"msg_0b9f7d753473ef240069e23f722c24819cbca662633c49467b","type":"message","status":"in_progress","content":[],"role":"assistant"},"output_index":0,"sequence_number":2} + data: {"type":"response.output_item.added","item":{"id":"msg_0147b0e842b352340069e66017fa98819eb17f9ac45ad21195","type":"message","status":"in_progress","content":[],"role":"assistant"},"output_index":0,"sequence_number":2} event: response.content_part.added - data: {"type":"response.content_part.added","content_index":0,"item_id":"msg_0b9f7d753473ef240069e23f722c24819cbca662633c49467b","output_index":0,"part":{"type":"output_text","annotations":[],"logprobs":[],"text":""},"sequence_number":3} + data: {"type":"response.content_part.added","content_index":0,"item_id":"msg_0147b0e842b352340069e66017fa98819eb17f9ac45ad21195","output_index":0,"part":{"type":"output_text","annotations":[],"logprobs":[],"text":""},"sequence_number":3} event: response.output_text.delta - data: {"type":"response.output_text.delta","content_index":0,"delta":"12","item_id":"msg_0b9f7d753473ef240069e23f722c24819cbca662633c49467b","logprobs":[],"obfuscation":"9tV0uLLSx4g7va","output_index":0,"sequence_number":4} + data: {"type":"response.output_text.delta","content_index":0,"delta":"12","item_id":"msg_0147b0e842b352340069e66017fa98819eb17f9ac45ad21195","logprobs":[],"obfuscation":"6WZg4phKBv9L1O","output_index":0,"sequence_number":4} event: response.output_text.delta - data: {"type":"response.output_text.delta","content_index":0,"delta":" +","item_id":"msg_0b9f7d753473ef240069e23f722c24819cbca662633c49467b","logprobs":[],"obfuscation":"97kzJHImCFnM74","output_index":0,"sequence_number":5} + data: {"type":"response.output_text.delta","content_index":0,"delta":" +","item_id":"msg_0147b0e842b352340069e66017fa98819eb17f9ac45ad21195","logprobs":[],"obfuscation":"cuSKVeWpczFpY4","output_index":0,"sequence_number":5} event: response.output_text.delta - data: {"type":"response.output_text.delta","content_index":0,"delta":" ","item_id":"msg_0b9f7d753473ef240069e23f722c24819cbca662633c49467b","logprobs":[],"obfuscation":"bRGNFFSS4enjmbc","output_index":0,"sequence_number":6} + data: {"type":"response.output_text.delta","content_index":0,"delta":" ","item_id":"msg_0147b0e842b352340069e66017fa98819eb17f9ac45ad21195","logprobs":[],"obfuscation":"uaprpVbTY7e3Jrq","output_index":0,"sequence_number":6} event: response.output_text.delta - data: {"type":"response.output_text.delta","content_index":0,"delta":"12","item_id":"msg_0b9f7d753473ef240069e23f722c24819cbca662633c49467b","logprobs":[],"obfuscation":"qcvsYs16whNQ9V","output_index":0,"sequence_number":7} + data: {"type":"response.output_text.delta","content_index":0,"delta":"12","item_id":"msg_0147b0e842b352340069e66017fa98819eb17f9ac45ad21195","logprobs":[],"obfuscation":"zKyvVK0aXPIaCa","output_index":0,"sequence_number":7} event: response.output_text.delta - data: {"type":"response.output_text.delta","content_index":0,"delta":" equals","item_id":"msg_0b9f7d753473ef240069e23f722c24819cbca662633c49467b","logprobs":[],"obfuscation":"5bqUK3c8I","output_index":0,"sequence_number":8} + data: {"type":"response.output_text.delta","content_index":0,"delta":" equals","item_id":"msg_0147b0e842b352340069e66017fa98819eb17f9ac45ad21195","logprobs":[],"obfuscation":"2hbC90OxC","output_index":0,"sequence_number":8} event: response.output_text.delta - data: {"type":"response.output_text.delta","content_index":0,"delta":" ","item_id":"msg_0b9f7d753473ef240069e23f722c24819cbca662633c49467b","logprobs":[],"obfuscation":"vY2Q8XTXTPWxxVo","output_index":0,"sequence_number":9} + data: {"type":"response.output_text.delta","content_index":0,"delta":" ","item_id":"msg_0147b0e842b352340069e66017fa98819eb17f9ac45ad21195","logprobs":[],"obfuscation":"G9iTSkPvuIm6ZRS","output_index":0,"sequence_number":9} event: response.output_text.delta - data: {"type":"response.output_text.delta","content_index":0,"delta":"24","item_id":"msg_0b9f7d753473ef240069e23f722c24819cbca662633c49467b","logprobs":[],"obfuscation":"yenXwexTe8rIQK","output_index":0,"sequence_number":10} + data: {"type":"response.output_text.delta","content_index":0,"delta":"24","item_id":"msg_0147b0e842b352340069e66017fa98819eb17f9ac45ad21195","logprobs":[],"obfuscation":"OTjfnEoawEpUCk","output_index":0,"sequence_number":10} event: response.output_text.delta - data: {"type":"response.output_text.delta","content_index":0,"delta":".","item_id":"msg_0b9f7d753473ef240069e23f722c24819cbca662633c49467b","logprobs":[],"obfuscation":"dxGXKhsyduyBqOp","output_index":0,"sequence_number":11} + data: {"type":"response.output_text.delta","content_index":0,"delta":".","item_id":"msg_0147b0e842b352340069e66017fa98819eb17f9ac45ad21195","logprobs":[],"obfuscation":"MzkB3oTPi3S5Clv","output_index":0,"sequence_number":11} event: response.output_text.done - data: {"type":"response.output_text.done","content_index":0,"item_id":"msg_0b9f7d753473ef240069e23f722c24819cbca662633c49467b","logprobs":[],"output_index":0,"sequence_number":12,"text":"12 + data: {"type":"response.output_text.done","content_index":0,"item_id":"msg_0147b0e842b352340069e66017fa98819eb17f9ac45ad21195","logprobs":[],"output_index":0,"sequence_number":12,"text":"12 + 12 equals 24."} event: response.content_part.done - data: {"type":"response.content_part.done","content_index":0,"item_id":"msg_0b9f7d753473ef240069e23f722c24819cbca662633c49467b","output_index":0,"part":{"type":"output_text","annotations":[],"logprobs":[],"text":"12 + data: {"type":"response.content_part.done","content_index":0,"item_id":"msg_0147b0e842b352340069e66017fa98819eb17f9ac45ad21195","output_index":0,"part":{"type":"output_text","annotations":[],"logprobs":[],"text":"12 + 12 equals 24."},"sequence_number":13} event: response.output_item.done - data: {"type":"response.output_item.done","item":{"id":"msg_0b9f7d753473ef240069e23f722c24819cbca662633c49467b","type":"message","status":"completed","content":[{"type":"output_text","annotations":[],"logprobs":[],"text":"12 + data: {"type":"response.output_item.done","item":{"id":"msg_0147b0e842b352340069e66017fa98819eb17f9ac45ad21195","type":"message","status":"completed","content":[{"type":"output_text","annotations":[],"logprobs":[],"text":"12 + 12 equals 24."}],"role":"assistant"},"output_index":0,"sequence_number":14} event: response.completed - data: {"type":"response.completed","response":{"id":"resp_0b9f7d753473ef240069e23f71bf18819cb08b0c7f30ffdb1d","object":"response","created_at":1776435057,"status":"completed","background":false,"completed_at":1776435058,"error":null,"frequency_penalty":0.0,"incomplete_details":null,"instructions":null,"max_output_tokens":null,"max_tool_calls":null,"model":"gpt-4o-mini-2024-07-18","output":[{"id":"msg_0b9f7d753473ef240069e23f722c24819cbca662633c49467b","type":"message","status":"completed","content":[{"type":"output_text","annotations":[],"logprobs":[],"text":"12 - + 12 equals 24."}],"role":"assistant"}],"parallel_tool_calls":true,"presence_penalty":0.0,"previous_response_id":null,"prompt_cache_key":null,"prompt_cache_retention":null,"reasoning":{"effort":null,"summary":null},"safety_identifier":null,"service_tier":"default","store":true,"temperature":1.0,"text":{"format":{"type":"text"},"verbosity":"medium"},"tool_choice":"auto","tools":[],"top_logprobs":0,"top_p":1.0,"truncation":"disabled","usage":{"input_tokens":14,"input_tokens_details":{"cached_tokens":0},"output_tokens":9,"output_tokens_details":{"reasoning_tokens":0},"total_tokens":23},"user":null,"metadata":{}},"sequence_number":15} + data: {"type":"response.completed","response":{"id":"resp_0147b0e842b352340069e660172064819e806681206cd40012","object":"response","created_at":1776705559,"status":"completed","background":false,"completed_at":1776705560,"error":null,"frequency_penalty":0.0,"incomplete_details":null,"instructions":null,"max_output_tokens":null,"max_tool_calls":null,"model":"gpt-4o-mini-2024-07-18","output":[{"id":"msg_0147b0e842b352340069e66017fa98819eb17f9ac45ad21195","type":"message","status":"completed","content":[{"type":"output_text","annotations":[],"logprobs":[],"text":"12 + + 12 equals 24."}],"role":"assistant"}],"parallel_tool_calls":true,"presence_penalty":0.0,"previous_response_id":null,"prompt_cache_key":null,"prompt_cache_retention":"in_memory","reasoning":{"effort":null,"summary":null},"safety_identifier":null,"service_tier":"default","store":true,"temperature":1.0,"text":{"format":{"type":"text"},"verbosity":"medium"},"tool_choice":"auto","tools":[],"top_logprobs":0,"top_p":1.0,"truncation":"disabled","usage":{"input_tokens":14,"input_tokens_details":{"cached_tokens":0},"output_tokens":9,"output_tokens_details":{"reasoning_tokens":0},"total_tokens":23},"user":null,"metadata":{}},"sequence_number":15} ' headers: CF-RAY: - - 9edc0426af3aaad0-YYZ + - 9ef5d0304ff3de44-YYZ Connection: - keep-alive Content-Type: - text/event-stream; charset=utf-8 Date: - - Fri, 17 Apr 2026 14:10:57 GMT + - Mon, 20 Apr 2026 17:19:19 GMT Server: - cloudflare Strict-Transport-Security: @@ -131,13 +131,13 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '64' + - '88' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' x-request-id: - - req_d6816401face4a4b8cb7dd114c34c1c2 + - req_7017981aeb1549deafa65657bdf843f9 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_speech.yaml b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_speech.yaml index 36e665dc..df802476 100644 --- a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_speech.yaml +++ b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_speech.yaml @@ -39,470 +39,453 @@ interactions: response: body: string: !!binary | - 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 - fWAKKiXqlmw2GQEoIQBiATEDBCDHCC7gkmMMgNMMFpZklRriRNWMYgMoCM+Jk6RhlQ5QTCAAJEOS - okBQyeqgRgyAWCoGo9AQSAlKmQUHmUEoUoSTFCTBAVHS5JjibsRp2Y41pzZfKlg1PYvvZiTwOS79 - 9/5iBmMqTEFNRTMuMTAwqqqqqqqqqqqqqqqqqqqqBqRx0HXQcrxspGaMDgm2qLRAgZiDmIGWtbMj - cYpRmoGIKWtWKzlhqCUABmMSZAqsSeoAFMYkxhQUC2gVAMURS1PYAhGGEWiWs9Jf0sqptL4ZlvNv - quVE0usWSLRJhQ2hiYApkFmUeYoxihGGEYYRhhAIJAE059kqTAFMgkyBzEBLipEqlWFWGTGVMxKH - qbLKJOCsKqVUq7VSpCoqqCu9blLKUvS2JZEsigBh8vaYQ5kFmUWZA5iBmECWRRWadJWG//PkxMBk - 1Dm4AdnIAKpUxS/pZUwBwCEAgizRbYuUg8uqROipkXCLJGCAYYRikGaka7RvyGs2ayppJmgiZxpl - EmICXFUFh6vGbDpKZIrIrJDLCpil/S0pZEsiWlLwoOqma9D1rLv447pYzGYzZrQ0/16JMOVMqZl0 - 2raX9QlIrIrJFKDLGXcu5nUtmmtKBF/iyxghGKIYpRhDmMOYgphAlmS8KDqKqYrEn6rspS9LulpS - 0pbEv8gGSKWM16XXYy/sNP87TWl3KmVMsZnTkuS7sOy3H8q0pjMZjL+tZWFTFTFqTEFNRTMuMTAw - qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq - qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq - qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq - qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq - qqqqqqqqqqqqqqqqqqqqqqqq//PkxAAAAANIAAAAAExBTUUzLjEwMKqqqqqqqqqqqqqqqqqqqqqq - qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq - qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq - qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq - qqqqqqqqqqqqqqqqqqqqTEFNRTMuMTAwqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq - qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq - qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq - qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq - qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + //PkxABmLDnsA1nQABpELofxwEeCyhdheJkonVYeGB3WHVUdEhwNGgIpiZap3ZHpoeWB3VHNEbig + CUVVMk80iQ0R4yxAxgoxg4yhgzh4zxwywwyIkxZEzKM17s5NU7+M8uE7Ms3qc1RoyxYyQwMCLbMG + LMiVMybM2VNAaM4cM4cM0YMsSMcKMMEMMOM0cNmvNSfMmHLtl1zBizIlzLlTIiTFBDBAjBAC4imj + 8UkochYdQNIdFdItY7E3LZ2sRrkOWKkYdhhixEx1B1TrvXeu9d7O2vuQ/kssZ17faSN26ksxhtrb + X6ONz8ojFl93Li8QWHUDTHSHSLUHWOu9iaxGcOQ5DOFhFSKkZY77ts7WHUDTHTHVOxNrjWGcM4Zw + zhnDOGuNfcty3Lcty3Lct32uOQ5DkOQ5DkOQ5DX2duW5bluW5bltfYgzhhi7GcM4ZwzhrjE2ds7Z + 2ztnbO2dsTWIsIuxdi7F2LsZwzhia713sTZ2ztnbluWzhnDOGcM4ZwzhnDXGJs7Z2ztr7lu+/7/u + Q5DWGcM4a45DuQ5G4bdtrbO2vuW78PowArFk42S0MhIjT1kRrBjwmWgFktUwUHRADMDM0BwCtmsp + JlCiZdhmRySZZPpi0cm6FIYhUhn8MHJi//PkxDpyfDIcAZvgAemUBWcEI5m0fmAwUYvDJhEWAxMK + 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 + TEFNRTMuMTAwVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWqYGHkJpgQ2aM7nGPZngIaO + lGSgRiJcY4OmUF5iQANFxjhSYMAGIhBe8yAvARZuLl4DNOMkQxSAEkoEY6wYTKoCV0hNToSCMZUz + ASzy70yDPORKhhQJQIs8gFLgl2UTTENMoUxDzetPCEZJNhUzA0zC8SPRlsGuUn2gGGCTSHFVDnkN + lA1WjXCGA0ukbQECrkEEkxBjlGCMb9Q0hUToF4mlpEv4oEjubeHlRaJT5dViCVwWadnlUp0yeKkx + CyTW2sGFBtkaHnK5ySXxRNLKl0RkRlYYho4v//PkxNdqxDm4FN5wvFKma9DyWpmOWtQTJXM6iz/J + kgIrQIeul9TQct6WlZosZ0y5I4EDNVQMpgUIu8lc6LsIJS0LNYJXSKgM4GJoBX6XkrEylny9kbUN + Z1eQFAYQAYTNk9gMJ34hGYzMRqmg1BKnylU+UPSp6S7qnkTnHXSsCgq+iYzBrcZbsis4rIS8L8QG + umSMbMRWJltWUJ1KGoKtdisBQ7DKmKubL6o8goLuQ6zEtK0B1lopgr4MJlaQKJPstKzhqQUCAio+ + v1BLOWGsRkzhQNeZCg7BywKfKlS1oaSqTEFNRTMuMTAwVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV headers: CF-RAY: - - 9edc04095ef7ab0c-YYZ + - 9ef5d019cf61ab99-YYZ Connection: - keep-alive Content-Type: - audio/mpeg Date: - - Fri, 17 Apr 2026 14:10:54 GMT + - Mon, 20 Apr 2026 17:19:15 GMT Server: - cloudflare Transfer-Encoding: @@ -518,19 +501,19 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '1142' + - '416' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=OQDnDqkv4IB.W3ariGlSjM.ZMPd7JtgVdC0.QajfaFg-1776435053.01554-1.0.1.1-b8CfQvL1_rtukGamk3pefIc.rIkghBusRQDIuqfdtBmdY0iub1fpwS.xzki52e0rwKp1hWV0nXJQN8vnTzgWEDeBbTQE4y5Xf7lV.BENqX9sYYuRrKCwDz90Bhg8ROjP; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:54 GMT + - __cf_bm=hQhi9.fFjO6ixG9_FH3Ss6KkY9t371X5VJdYJw_KthU-1776705555.482994-1.0.1.1-5TkGhpLOVLhhKqvHPHoWuyc1whqvlR.AP6SwIBhzobxHSDqmc1qYYXpgkhsrYTIBoHZMExRZxr1Cc5jfFlwV63L_73fnVypqeVhK5tCWAIwnVaqyrFuje5nzPLKtEsOw; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:49:15 GMT strict-transport-security: - max-age=31536000; includeSubDomains; preload via: - - envoy-router-6c8cdcc898-nzqcp + - envoy-router-5c784944c4-vjqtx x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -540,7 +523,7 @@ interactions: x-ratelimit-reset-requests: - 6ms x-request-id: - - req_75baeb8b2dad421f918bc236c8675397 + - req_7dd72f2350d84ae2ad22c03735bd625f status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_tool_calls.yaml b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_tool_calls.yaml index 9c1a8c00..31d487cc 100644 --- a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_tool_calls.yaml +++ b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_tool_calls.yaml @@ -15,7 +15,7 @@ interactions: Content-Type: - application/json Cookie: - - __cf_bm=iPBq_2jcQurLTNaDe9i.BXI5vqqpE6tzaUfqLRCKsi0-1776435023.1295285-1.0.1.1-9nGgRZrlLJaInSsKoKKo7sqIB_UgQfQywAIXNj0d48TIyivCjXnGNNg3_8uX8DiHXFbWem55uhnziTwx3088Acx.jaF3YCwGAVWzCxLB4VX5QPNnkZLj7U28Md5EL6KE + - __cf_bm=iVojiUJMoE6Xggzhh8Xl6djpU3_KJwIiUKTtdJL6xzc-1776705517.7032545-1.0.1.1-Y9oRXXyfLSVqKSPP6rs24GyRV8AeJ5bSFY.naRS43JvsjnBp335Jk_F82tM1I3o7cAk01K34vjGy3CE0NzudvA.1OJLoOxgXDfL2bb3drNJsVnnnxnbB0XiAmH4RaccK Host: - api.openai.com User-Agent: @@ -44,11 +44,11 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeCHhHisZExSDcgLiB6KUmoocxqo\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435057,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmZCDv6hLqxsR5QoJGLOGikXmj8z\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705558,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": null,\n \"tool_calls\": [\n {\n - \ \"id\": \"call_tW4NJhzMURe9GBjQfxr6ke8i\",\n \"type\": + \ \"id\": \"call_3RY0l6iv6bbRqFCNyZgB9fqw\",\n \"type\": \"function\",\n \"function\": {\n \"name\": \"get_weather\",\n \ \"arguments\": \"{\\\"location\\\":\\\"New York\\\"}\"\n }\n \ }\n ],\n \"refusal\": null,\n \"annotations\": @@ -58,18 +58,18 @@ interactions: 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_e2f9fd5023\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_b8fcb14f26\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc04224e20a244-YYZ + - 9ef5d02bccfeb405-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:10:57 GMT + - Mon, 20 Apr 2026 17:19:18 GMT Server: - cloudflare Strict-Transport-Security: @@ -87,7 +87,7 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '470' + - '477' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: @@ -107,7 +107,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_44a02b19a75346018b514623e5c40213 + - req_40661af463814de2a3980b230f15031d status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_transcription.yaml b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_transcription.yaml index 658f1b8d..f34b39b2 100644 --- a/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_transcription.yaml +++ b/py/src/braintrust/integrations/litellm/cassettes/latest/test_litellm_transcription.yaml @@ -1,11 +1,11 @@ interactions: - request: body: !!binary | - LS05Mjc2MmRmODI5YTgyYWZmODIyMjgxMTMzZWRiZTcxMg0KQ29udGVudC1EaXNwb3NpdGlvbjog - Zm9ybS1kYXRhOyBuYW1lPSJtb2RlbCINCg0Kd2hpc3Blci0xDQotLTkyNzYyZGY4MjlhODJhZmY4 - MjIyODExMzNlZGJlNzEyDQpDb250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9InJl - c3BvbnNlX2Zvcm1hdCINCg0KdmVyYm9zZV9qc29uDQotLTkyNzYyZGY4MjlhODJhZmY4MjIyODEx - MzNlZGJlNzEyDQpDb250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9ImZpbGUiOyBm + LS02OThhZWViNDYxYTZlNzRlZDM2NmYxODhkYzU2NWM4OA0KQ29udGVudC1EaXNwb3NpdGlvbjog + Zm9ybS1kYXRhOyBuYW1lPSJtb2RlbCINCg0Kd2hpc3Blci0xDQotLTY5OGFlZWI0NjFhNmU3NGVk + MzY2ZjE4OGRjNTY1Yzg4DQpDb250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9InJl + c3BvbnNlX2Zvcm1hdCINCg0KdmVyYm9zZV9qc29uDQotLTY5OGFlZWI0NjFhNmU3NGVkMzY2ZjE4 + OGRjNTY1Yzg4DQpDb250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9ImZpbGUiOyBm aWxlbmFtZT0idGVzdF9hdWRpby53YXYiDQpDb250ZW50LVR5cGU6IGF1ZGlvL3gtd2F2DQoNClJJ RkYkfQAAV0FWRWZtdCAQAAAAAQABAIA+AAAAfQAAAgAQAGRhdGEAfQAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA @@ -569,7 +569,7 @@ interactions: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAANCi0tOTI3NjJkZjgyOWE4MmFmZjgyMjI4MTEzM2VkYmU3MTItLQ0K + AAAAAAAAAAANCi0tNjk4YWVlYjQ2MWE2ZTc0ZWQzNjZmMTg4ZGM1NjVjODgtLQ0K headers: Accept: - application/json @@ -580,9 +580,9 @@ interactions: Content-Length: - '32424' Content-Type: - - multipart/form-data; boundary=92762df829a82aff822281133edbe712 + - multipart/form-data; boundary=698aeeb461a6e74ed366f188dc565c88 Cookie: - - __cf_bm=oLBMCwdZjrY_YaI6CYJ822JYvMeemGdf4yJkC2Xl4LE-1776435031.1451778-1.0.1.1-L4wvXEj5JUtKlWCV6dBDu19w6n00Y6oPNmBBMMT8vFfBJ1fxE0udgkBk3bBN3NlSVFsUUElqpiMXe6BT7PoKTUqjJ3GoD5aLsYPflljxKrLo7a7.oUIUMZoK0VuGYW7X + - __cf_bm=k.fPsjELGzN0ulYQCQY_cz7OetvpvrsH2IpeNBGldfc-1776705530.1943758-1.0.1.1-1CKJVlmC07LqH0_9PMM5INSwkEQnRa9316aBeL3pdM7cxBCIL5RQGhFQp9UYXGiNpcdK1v8ZXVkQw_zmJIbTjUMaOZW5Zppe3WQOqxM_d_HUadQvwlDadyESz0IYnFgg Host: - api.openai.com User-Agent: @@ -610,16 +610,16 @@ interactions: response: body: string: '{"task":"transcribe","language":"english","duration":1.0,"text":"you","segments":[{"id":0,"seek":0,"start":0.0,"end":2.059999942779541,"text":" - you","tokens":[50364,291,50467],"temperature":0.0,"avg_logprob":-0.5146503448486328,"compression_ratio":0.27272728085517883,"no_speech_prob":0.9428148865699768}],"usage":{"type":"duration","seconds":1}}' + you","tokens":[50364,291,50467],"temperature":0.0,"avg_logprob":-0.5146503448486328,"compression_ratio":0.27272728085517883,"no_speech_prob":0.9425907731056213}],"usage":{"type":"duration","seconds":1}}' headers: CF-RAY: - - 9edc0402cb3739cf-YYZ + - 9ef5d00aff8474a7-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:10:52 GMT + - Mon, 20 Apr 2026 17:19:14 GMT Server: - cloudflare Transfer-Encoding: @@ -637,7 +637,7 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '352' + - '1259' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: @@ -645,7 +645,7 @@ interactions: strict-transport-security: - max-age=31536000; includeSubDomains; preload via: - - envoy-router-54658b9576-s8db7 + - envoy-router-558cb67c76-s5wzg x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -655,7 +655,7 @@ interactions: x-ratelimit-reset-requests: - 6ms x-request-id: - - req_b581262b38a79c4abdfdcb13640529ef + - req_283a47bbfa784e2180faebf3339f2fdd status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/litellm/cassettes/latest/test_patch_litellm_aresponses.yaml b/py/src/braintrust/integrations/litellm/cassettes/latest/test_patch_litellm_aresponses.yaml index fcbf7d04..7dad4531 100644 --- a/py/src/braintrust/integrations/litellm/cassettes/latest/test_patch_litellm_aresponses.yaml +++ b/py/src/braintrust/integrations/litellm/cassettes/latest/test_patch_litellm_aresponses.yaml @@ -16,49 +16,49 @@ interactions: host: - api.openai.com user-agent: - - litellm/1.83.9 + - litellm/1.83.10 method: POST uri: https://api.openai.com/v1/responses response: body: - string: "{\n \"id\": \"resp_0099a965b2d3f21b0069e23f7b0010819ea1a2a7fae019c152\",\n - \ \"object\": \"response\",\n \"created_at\": 1776435067,\n \"status\": + string: "{\n \"id\": \"resp_0dad2da1f57570020069e6601f109c81a0ad04c2bde0ff814a\",\n + \ \"object\": \"response\",\n \"created_at\": 1776705567,\n \"status\": \"completed\",\n \"background\": false,\n \"billing\": {\n \"payer\": - \"developer\"\n },\n \"completed_at\": 1776435067,\n \"error\": null,\n + \"developer\"\n },\n \"completed_at\": 1776705568,\n \"error\": null,\n \ \"frequency_penalty\": 0.0,\n \"incomplete_details\": null,\n \"instructions\": \"Just the number please\",\n \"max_output_tokens\": null,\n \"max_tool_calls\": null,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \"output\": [\n {\n - \ \"id\": \"msg_0099a965b2d3f21b0069e23f7b80f8819eacc96a5985cb9e3b\",\n + \ \"id\": \"msg_0dad2da1f57570020069e66020603481a09fce24439d6d8f1e\",\n \ \"type\": \"message\",\n \"status\": \"completed\",\n \"content\": [\n {\n \"type\": \"output_text\",\n \"annotations\": [],\n \"logprobs\": [],\n \"text\": \"24\"\n }\n \ ],\n \"role\": \"assistant\"\n }\n ],\n \"parallel_tool_calls\": true,\n \"presence_penalty\": 0.0,\n \"previous_response_id\": null,\n \"prompt_cache_key\": - null,\n \"prompt_cache_retention\": null,\n \"reasoning\": {\n \"effort\": - null,\n \"summary\": null\n },\n \"safety_identifier\": null,\n \"service_tier\": - \"default\",\n \"store\": true,\n \"temperature\": 1.0,\n \"text\": {\n - \ \"format\": {\n \"type\": \"text\"\n },\n \"verbosity\": \"medium\"\n - \ },\n \"tool_choice\": \"auto\",\n \"tools\": [],\n \"top_logprobs\": - 0,\n \"top_p\": 1.0,\n \"truncation\": \"disabled\",\n \"usage\": {\n \"input_tokens\": - 22,\n \"input_tokens_details\": {\n \"cached_tokens\": 0\n },\n - \ \"output_tokens\": 2,\n \"output_tokens_details\": {\n \"reasoning_tokens\": - 0\n },\n \"total_tokens\": 24\n },\n \"user\": null,\n \"metadata\": - {}\n}" + null,\n \"prompt_cache_retention\": \"in_memory\",\n \"reasoning\": {\n + \ \"effort\": null,\n \"summary\": null\n },\n \"safety_identifier\": + null,\n \"service_tier\": \"default\",\n \"store\": true,\n \"temperature\": + 1.0,\n \"text\": {\n \"format\": {\n \"type\": \"text\"\n },\n + \ \"verbosity\": \"medium\"\n },\n \"tool_choice\": \"auto\",\n \"tools\": + [],\n \"top_logprobs\": 0,\n \"top_p\": 1.0,\n \"truncation\": \"disabled\",\n + \ \"usage\": {\n \"input_tokens\": 22,\n \"input_tokens_details\": {\n + \ \"cached_tokens\": 0\n },\n \"output_tokens\": 2,\n \"output_tokens_details\": + {\n \"reasoning_tokens\": 0\n },\n \"total_tokens\": 24\n },\n + \ \"user\": null,\n \"metadata\": {}\n}" headers: CF-RAY: - - 9edc04607e2eab8e-YYZ + - 9ef5d061db12180e-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:11:07 GMT + - Mon, 20 Apr 2026 17:19:28 GMT Server: - cloudflare Set-Cookie: - - __cf_bm=dvFt5NUQ18EjdkIIjwOaU7hRpYsy3tKotax3Vjk9kKo-1776435066.9595757-1.0.1.1-_N1cauKHWlAy98AhtJwzZxQEoQwyD1ZgRetW.I9EXzbIDqOJOZVUAivSTaDPNTn9jUAsK4t9ZQZ4n6x1TY_CpjNXbYFdYixntPmWnlWTSL4UgZ8r0MgRPZDw34838QbR; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:41:07 GMT + - __cf_bm=lxs1fQDRb29CBkk4N9CiDR8josAJw6xdNClmG.Hu67U-1776705567.0139844-1.0.1.1-oIE6ti9mXutO4rq2eMohl87br67Ewm.u1mICES60ci6mPivc.qBTIcZb1OrFA5Tm5R1NfGX0EaqtDrFer_wz0pzMNEW8a0nnG.O2L3UEZvFYMPX9T9tmBFNFgK3Qyw2z; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:49:28 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: @@ -70,11 +70,11 @@ interactions: cf-cache-status: - DYNAMIC content-length: - - '1549' + - '1556' openai-organization: - braintrust-data openai-processing-ms: - - '619' + - '1506' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: @@ -92,7 +92,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_12e79be58b5442b9b79e6cd4a0567113 + - req_cc6ceffbb6a344738bdc683f3cbaf79d status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/litellm/cassettes/latest/test_patch_litellm_responses.yaml b/py/src/braintrust/integrations/litellm/cassettes/latest/test_patch_litellm_responses.yaml index 02a0b84d..4e7b87be 100644 --- a/py/src/braintrust/integrations/litellm/cassettes/latest/test_patch_litellm_responses.yaml +++ b/py/src/braintrust/integrations/litellm/cassettes/latest/test_patch_litellm_responses.yaml @@ -16,43 +16,43 @@ interactions: Host: - api.openai.com User-Agent: - - litellm/1.83.9 + - litellm/1.83.10 method: POST uri: https://api.openai.com/v1/responses response: body: - string: "{\n \"id\": \"resp_0e9f0bbc159beb560069e23f77cc088193bbb4f9b2896f2ca9\",\n - \ \"object\": \"response\",\n \"created_at\": 1776435063,\n \"status\": + string: "{\n \"id\": \"resp_061a0e56ee64d9b60069e6601cbda88194a0f7b55f6271eb8c\",\n + \ \"object\": \"response\",\n \"created_at\": 1776705564,\n \"status\": \"completed\",\n \"background\": false,\n \"billing\": {\n \"payer\": - \"developer\"\n },\n \"completed_at\": 1776435064,\n \"error\": null,\n + \"developer\"\n },\n \"completed_at\": 1776705565,\n \"error\": null,\n \ \"frequency_penalty\": 0.0,\n \"incomplete_details\": null,\n \"instructions\": \"Just the number please\",\n \"max_output_tokens\": null,\n \"max_tool_calls\": null,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \"output\": [\n {\n - \ \"id\": \"msg_0e9f0bbc159beb560069e23f7830dc8193a87b2c1001a8a24f\",\n + \ \"id\": \"msg_061a0e56ee64d9b60069e6601d368081949a4c74976aad1891\",\n \ \"type\": \"message\",\n \"status\": \"completed\",\n \"content\": [\n {\n \"type\": \"output_text\",\n \"annotations\": [],\n \"logprobs\": [],\n \"text\": \"24\"\n }\n \ ],\n \"role\": \"assistant\"\n }\n ],\n \"parallel_tool_calls\": true,\n \"presence_penalty\": 0.0,\n \"previous_response_id\": null,\n \"prompt_cache_key\": - null,\n \"prompt_cache_retention\": null,\n \"reasoning\": {\n \"effort\": - null,\n \"summary\": null\n },\n \"safety_identifier\": null,\n \"service_tier\": - \"default\",\n \"store\": true,\n \"temperature\": 1.0,\n \"text\": {\n - \ \"format\": {\n \"type\": \"text\"\n },\n \"verbosity\": \"medium\"\n - \ },\n \"tool_choice\": \"auto\",\n \"tools\": [],\n \"top_logprobs\": - 0,\n \"top_p\": 1.0,\n \"truncation\": \"disabled\",\n \"usage\": {\n \"input_tokens\": - 22,\n \"input_tokens_details\": {\n \"cached_tokens\": 0\n },\n - \ \"output_tokens\": 2,\n \"output_tokens_details\": {\n \"reasoning_tokens\": - 0\n },\n \"total_tokens\": 24\n },\n \"user\": null,\n \"metadata\": - {}\n}" + null,\n \"prompt_cache_retention\": \"in_memory\",\n \"reasoning\": {\n + \ \"effort\": null,\n \"summary\": null\n },\n \"safety_identifier\": + null,\n \"service_tier\": \"default\",\n \"store\": true,\n \"temperature\": + 1.0,\n \"text\": {\n \"format\": {\n \"type\": \"text\"\n },\n + \ \"verbosity\": \"medium\"\n },\n \"tool_choice\": \"auto\",\n \"tools\": + [],\n \"top_logprobs\": 0,\n \"top_p\": 1.0,\n \"truncation\": \"disabled\",\n + \ \"usage\": {\n \"input_tokens\": 22,\n \"input_tokens_details\": {\n + \ \"cached_tokens\": 0\n },\n \"output_tokens\": 2,\n \"output_tokens_details\": + {\n \"reasoning_tokens\": 0\n },\n \"total_tokens\": 24\n },\n + \ \"user\": null,\n \"metadata\": {}\n}" headers: CF-RAY: - - 9edc044c7a9e8af6-YYZ + - 9ef5d0534bafac2e-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:11:04 GMT + - Mon, 20 Apr 2026 17:19:25 GMT Server: - cloudflare Strict-Transport-Security: @@ -66,19 +66,19 @@ interactions: cf-cache-status: - DYNAMIC content-length: - - '1549' + - '1556' openai-organization: - braintrust-data openai-processing-ms: - - '523' + - '701' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=OX6Z978.8iZM6Dq0rR2MZNNblRI1YG6ulmDk8aqVs2c-1776435063.7552366-1.0.1.1-Fg9HcHznIDXzYC6j0yZdvdiEtBqpS5pPq1KIx6kXQ8EARVchtpUYUK7zZU6vZdIG..e6Tpy3B1o77EBtk11IKpH.N6JlIRPRQzgmiRzVszbXx38855UTE.8bcJJJT9qP; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:41:04 GMT + - __cf_bm=JTckIga0gDN78sWF0XbCPu4x8OkbqxL6CIBSFhQf0V0-1776705564.6895103-1.0.1.1-v7beS0eu43aN6q3AqUtHgxx6nKaK_rt8rwS9HNC.H76w6SNnhMgs8BgcpnY0Ibvj87tjgn_eDGWjFOxHq2Kgd4J9TZ6fIIWbCk_6mvT3bUC8p0q5s39zr.qAvSSKfXWb; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:49:25 GMT x-ratelimit-limit-requests: - '30000' x-ratelimit-limit-tokens: @@ -92,7 +92,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_7b8fdf52249f43b8af838d3f41a18b87 + - req_6e5091e08e4a485e9c675ff85dbbfe47 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/openai_agents/cassettes/latest/test_auto_openai_agents.yaml b/py/src/braintrust/integrations/openai_agents/cassettes/latest/test_auto_openai_agents.yaml index de5d2e89..a73276a5 100644 --- a/py/src/braintrust/integrations/openai_agents/cassettes/latest/test_auto_openai_agents.yaml +++ b/py/src/braintrust/integrations/openai_agents/cassettes/latest/test_auto_openai_agents.yaml @@ -1,7 +1,7 @@ interactions: - request: body: '{"include":[],"input":[{"content":"What is 2+2? Just the number.","role":"user"}],"instructions":"You - are a helpful assistant. Be very concise.","model":"gpt-4o-mini","prompt_cache_key":"agents-sdk:run:c388f7c07f524992a7baad3acb478241","tools":[]}' + are a helpful assistant. Be very concise.","model":"gpt-4o-mini","prompt_cache_key":"agents-sdk:run:88cf69778efa42f3a0be9e88007d11c2","tools":[]}' headers: Accept: - application/json @@ -16,7 +16,7 @@ interactions: Host: - api.openai.com User-Agent: - - Agents/Python 0.14.1 + - Agents/Python 0.14.2 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -30,7 +30,7 @@ interactions: X-Stainless-Runtime: - CPython X-Stainless-Runtime-Version: - - 3.13.3 + - 3.14.3 x-stainless-read-timeout: - '600' x-stainless-retry-count: @@ -39,38 +39,39 @@ interactions: uri: https://api.openai.com/v1/responses response: body: - string: "{\n \"id\": \"resp_034f0ff38b37bcee0069e01ad6ee70819cba62bd2d81bf7bee\",\n - \ \"object\": \"response\",\n \"created_at\": 1776294614,\n \"status\": + string: "{\n \"id\": \"resp_01a1db659a6b0c6c0069e65ff086b4819c92033e2807ceac26\",\n + \ \"object\": \"response\",\n \"created_at\": 1776705520,\n \"status\": \"completed\",\n \"background\": false,\n \"billing\": {\n \"payer\": - \"developer\"\n },\n \"completed_at\": 1776294615,\n \"error\": null,\n + \"developer\"\n },\n \"completed_at\": 1776705521,\n \"error\": null,\n \ \"frequency_penalty\": 0.0,\n \"incomplete_details\": null,\n \"instructions\": \"You are a helpful assistant. Be very concise.\",\n \"max_output_tokens\": null,\n \"max_tool_calls\": null,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n - \ \"output\": [\n {\n \"id\": \"msg_034f0ff38b37bcee0069e01ad74b90819ca6759994ced179d9\",\n + \ \"output\": [\n {\n \"id\": \"msg_01a1db659a6b0c6c0069e65ff13220819cb023c6b85fb94cfe\",\n \ \"type\": \"message\",\n \"status\": \"completed\",\n \"content\": [\n {\n \"type\": \"output_text\",\n \"annotations\": [],\n \"logprobs\": [],\n \"text\": \"4\"\n }\n ],\n \ \"role\": \"assistant\"\n }\n ],\n \"parallel_tool_calls\": true,\n \ \"presence_penalty\": 0.0,\n \"previous_response_id\": null,\n \"prompt_cache_key\": - \"agents-sdk:run:c388f7c07f524992a7baad3acb478241\",\n \"prompt_cache_retention\": - null,\n \"reasoning\": {\n \"effort\": null,\n \"summary\": null\n - \ },\n \"safety_identifier\": null,\n \"service_tier\": \"default\",\n \"store\": - true,\n \"temperature\": 1.0,\n \"text\": {\n \"format\": {\n \"type\": - \"text\"\n },\n \"verbosity\": \"medium\"\n },\n \"tool_choice\": - \"auto\",\n \"tools\": [],\n \"top_logprobs\": 0,\n \"top_p\": 1.0,\n \"truncation\": - \"disabled\",\n \"usage\": {\n \"input_tokens\": 32,\n \"input_tokens_details\": - {\n \"cached_tokens\": 0\n },\n \"output_tokens\": 2,\n \"output_tokens_details\": - {\n \"reasoning_tokens\": 0\n },\n \"total_tokens\": 34\n },\n - \ \"user\": null,\n \"metadata\": {}\n}" + \"agents-sdk:run:88cf69778efa42f3a0be9e88007d11c2\",\n \"prompt_cache_retention\": + \"in_memory\",\n \"reasoning\": {\n \"effort\": null,\n \"summary\": + null\n },\n \"safety_identifier\": null,\n \"service_tier\": \"default\",\n + \ \"store\": true,\n \"temperature\": 1.0,\n \"text\": {\n \"format\": + {\n \"type\": \"text\"\n },\n \"verbosity\": \"medium\"\n },\n + \ \"tool_choice\": \"auto\",\n \"tools\": [],\n \"top_logprobs\": 0,\n \"top_p\": + 1.0,\n \"truncation\": \"disabled\",\n \"usage\": {\n \"input_tokens\": + 32,\n \"input_tokens_details\": {\n \"cached_tokens\": 0\n },\n + \ \"output_tokens\": 2,\n \"output_tokens_details\": {\n \"reasoning_tokens\": + 0\n },\n \"total_tokens\": 34\n },\n \"user\": null,\n \"metadata\": + {}\n}" headers: CF-RAY: - - 9ece9f5efc9daaae-YYZ + - 9ef5cf3f0ac1299a-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Wed, 15 Apr 2026 23:10:15 GMT + - Mon, 20 Apr 2026 17:18:41 GMT Server: - cloudflare Strict-Transport-Security: @@ -84,19 +85,19 @@ interactions: cf-cache-status: - DYNAMIC content-length: - - '1616' + - '1623' openai-organization: - braintrust-data openai-processing-ms: - - '463' + - '891' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=51eeLUpWxrTbdCKZHH..thMP1Wbd.u76E4V7CxCdubo-1776294614.8778224-1.0.1.1-nuFbNwfPAlqV441b8Y.ALaASvUI200TnzeF0VABhsrVhU23MVb638MBOmtrC6EUJk.c3zky5IdQuDka9fKdNaqVE5MMsbSSBwUqWBzI1dVJfutx8a.42LT4TMAXPI92P; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Wed, 15 Apr 2026 - 23:40:15 GMT + - __cf_bm=ETxRU0EwTc9f9nS0YK_MEb.1tOTs9Q3tH5Yv2g0p06g-1776705520.488564-1.0.1.1-A6TF1iQUy7dGOgBDjZVJAS1BXIcSLxh5EfH6jmrbjMUNb0O9ltlBXU9wS0a0HV3Tk3LkI9_IWVASwO6eE0AL9golx4CnW4mhQP8b8rCAAtphA1TcBUgSNXnpt_3Y8pjk; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:48:41 GMT x-ratelimit-limit-requests: - '30000' x-ratelimit-limit-tokens: @@ -110,7 +111,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_0e1159c20488460796cee3fceb3c41f7 + - req_037df987f9eb4fccbf431904053cfb58 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/openai_agents/cassettes/latest/test_braintrust_tracing_processor_concurrency_bug.yaml b/py/src/braintrust/integrations/openai_agents/cassettes/latest/test_braintrust_tracing_processor_concurrency_bug.yaml index 87c771a2..dc130604 100644 --- a/py/src/braintrust/integrations/openai_agents/cassettes/latest/test_braintrust_tracing_processor_concurrency_bug.yaml +++ b/py/src/braintrust/integrations/openai_agents/cassettes/latest/test_braintrust_tracing_processor_concurrency_bug.yaml @@ -1,7 +1,7 @@ interactions: - request: - body: '{"include":[],"input":[{"content":"What''s your name?","role":"user"}],"instructions":"You - are agent A. Just respond with ''A'' and nothing else.","model":"gpt-4o-mini","prompt_cache_key":"agents-sdk:run:7b459f941cc649ae83f12ac03b607180","tools":[]}' + body: '{"include":[],"input":[{"content":"Who are you?","role":"user"}],"instructions":"You + are agent B. Just respond with ''B'' and nothing else.","model":"gpt-4o-mini","prompt_cache_key":"agents-sdk:run:ea844748057f44f3a33950c0c0896132","tools":[]}' headers: Accept: - application/json @@ -10,15 +10,15 @@ interactions: Connection: - keep-alive Content-Length: - - '246' + - '241' Content-Type: - application/json Cookie: - - __cf_bm=5xhOv8Mpe1ATIPgdKxFqK9PNA3Ckc8fDk8sndQp.Y9k-1776294609.3562365-1.0.1.1-xM7sy9ZAyeEl9KSTtqpFPWyzsOrDj0kiasVWriUsmbsT3ra.jFmgxYmm6_5W2ciNXfO1voIel01iHy7NPdltBxLyRCPVB.XxQ4ELl0VOvhmdE1oLvVl6jps7COVoyFGj + - __cf_bm=1UYuRzTAaXdwrDIKtmJddLjN6X.kdb2B_sJOOShjPVQ-1776705511.6388433-1.0.1.1-.P8CAFbGX2vjRmxqBIdN8CbYeUgLzdhtlvrjAMFvK8zOJ9Z8aRHu7wADoouY9HW.PoEvQ0bn9NyKEa5Fi5Ni9tPsfshKjJXWNBJpd7U3VTqKXVsVc.rl_xx4BzgAgkUx Host: - api.openai.com User-Agent: - - Agents/Python 0.14.1 + - Agents/Python 0.14.2 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -32,7 +32,7 @@ interactions: X-Stainless-Runtime: - CPython X-Stainless-Runtime-Version: - - 3.13.3 + - 3.14.3 x-stainless-read-timeout: - '600' x-stainless-retry-count: @@ -41,38 +41,39 @@ interactions: uri: https://api.openai.com/v1/responses response: body: - string: "{\n \"id\": \"resp_0a515a6dbc6482e80069e01ad3c900819788990ddeefc3634b\",\n - \ \"object\": \"response\",\n \"created_at\": 1776294611,\n \"status\": + string: "{\n \"id\": \"resp_0a5fc53af8bb52290069e65fec9ec08192bf83198d1c850447\",\n + \ \"object\": \"response\",\n \"created_at\": 1776705516,\n \"status\": \"completed\",\n \"background\": false,\n \"billing\": {\n \"payer\": - \"developer\"\n },\n \"completed_at\": 1776294612,\n \"error\": null,\n + \"developer\"\n },\n \"completed_at\": 1776705517,\n \"error\": null,\n \ \"frequency_penalty\": 0.0,\n \"incomplete_details\": null,\n \"instructions\": - \"You are agent A. Just respond with 'A' and nothing else.\",\n \"max_output_tokens\": + \"You are agent B. Just respond with 'B' and nothing else.\",\n \"max_output_tokens\": null,\n \"max_tool_calls\": null,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n - \ \"output\": [\n {\n \"id\": \"msg_0a515a6dbc6482e80069e01ad44d7081979a5d0c0595237861\",\n + \ \"output\": [\n {\n \"id\": \"msg_0a5fc53af8bb52290069e65fed0a648192be09fdd2da3cb881\",\n \ \"type\": \"message\",\n \"status\": \"completed\",\n \"content\": [\n {\n \"type\": \"output_text\",\n \"annotations\": - [],\n \"logprobs\": [],\n \"text\": \"A\"\n }\n ],\n + [],\n \"logprobs\": [],\n \"text\": \"B\"\n }\n ],\n \ \"role\": \"assistant\"\n }\n ],\n \"parallel_tool_calls\": true,\n \ \"presence_penalty\": 0.0,\n \"previous_response_id\": null,\n \"prompt_cache_key\": - \"agents-sdk:run:7b459f941cc649ae83f12ac03b607180\",\n \"prompt_cache_retention\": - null,\n \"reasoning\": {\n \"effort\": null,\n \"summary\": null\n - \ },\n \"safety_identifier\": null,\n \"service_tier\": \"default\",\n \"store\": - true,\n \"temperature\": 1.0,\n \"text\": {\n \"format\": {\n \"type\": - \"text\"\n },\n \"verbosity\": \"medium\"\n },\n \"tool_choice\": - \"auto\",\n \"tools\": [],\n \"top_logprobs\": 0,\n \"top_p\": 1.0,\n \"truncation\": - \"disabled\",\n \"usage\": {\n \"input_tokens\": 30,\n \"input_tokens_details\": - {\n \"cached_tokens\": 0\n },\n \"output_tokens\": 2,\n \"output_tokens_details\": - {\n \"reasoning_tokens\": 0\n },\n \"total_tokens\": 32\n },\n - \ \"user\": null,\n \"metadata\": {}\n}" + \"agents-sdk:run:ea844748057f44f3a33950c0c0896132\",\n \"prompt_cache_retention\": + \"in_memory\",\n \"reasoning\": {\n \"effort\": null,\n \"summary\": + null\n },\n \"safety_identifier\": null,\n \"service_tier\": \"default\",\n + \ \"store\": true,\n \"temperature\": 1.0,\n \"text\": {\n \"format\": + {\n \"type\": \"text\"\n },\n \"verbosity\": \"medium\"\n },\n + \ \"tool_choice\": \"auto\",\n \"tools\": [],\n \"top_logprobs\": 0,\n \"top_p\": + 1.0,\n \"truncation\": \"disabled\",\n \"usage\": {\n \"input_tokens\": + 30,\n \"input_tokens_details\": {\n \"cached_tokens\": 0\n },\n + \ \"output_tokens\": 2,\n \"output_tokens_details\": {\n \"reasoning_tokens\": + 0\n },\n \"total_tokens\": 32\n },\n \"user\": null,\n \"metadata\": + {}\n}" headers: CF-RAY: - - 9ece9f4b4f1436d6-YYZ + - 9ef5cf269cffac26-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Wed, 15 Apr 2026 23:10:12 GMT + - Mon, 20 Apr 2026 17:18:37 GMT Server: - cloudflare Strict-Transport-Security: @@ -86,11 +87,11 @@ interactions: cf-cache-status: - DYNAMIC content-length: - - '1627' + - '1634' openai-organization: - braintrust-data openai-processing-ms: - - '702' + - '654' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: @@ -102,19 +103,139 @@ interactions: x-ratelimit-remaining-requests: - '29999' x-ratelimit-remaining-tokens: - - '149999950' + - '149999952' x-ratelimit-reset-requests: - 2ms x-ratelimit-reset-tokens: - 0s x-request-id: - - req_7130e895cff74031a0c2f6e7155f7583 + - req_264274b282fd474fb846f672479ea1c8 status: code: 200 message: OK - request: - body: '{"include":[],"input":[{"content":"Who are you?","role":"user"}],"instructions":"You - are agent B. Just respond with ''B'' and nothing else.","model":"gpt-4o-mini","prompt_cache_key":"agents-sdk:run:40a1e7932ebd4088b674a753aedc48d1","tools":[]}' + body: '{"data":[{"object":"trace.span","id":"span_7ccb5a3bcd3941e9a8f41d24","trace_id":"trace_de274b93505748249e9cb0fcc80e0717","parent_id":"span_c97c744f133743eabbac58be","started_at":"2026-04-20T17:18:33.684618+00:00","ended_at":"2026-04-20T17:18:36.406565+00:00","span_data":{"type":"response","response_id":"resp_0117b1da116416ae0069e65fe9da5c81a3b60ad374b43d1b51"},"error":null},{"object":"trace.span","id":"span_c97c744f133743eabbac58be","trace_id":"trace_de274b93505748249e9cb0fcc80e0717","parent_id":"span_35824ef1e3454d5eb79b7f66","started_at":"2026-04-20T17:18:33.684175+00:00","ended_at":"2026-04-20T17:18:36.406988+00:00","span_data":{"type":"custom","name":"turn","data":{"sdk_span_type":"turn","turn":1,"agent_name":"test-agent","usage":{"input_tokens":32,"output_tokens":2,"cached_input_tokens":0}}},"error":null},{"object":"trace.span","id":"span_35824ef1e3454d5eb79b7f66","trace_id":"trace_de274b93505748249e9cb0fcc80e0717","parent_id":"span_7ad8edf3821e446cb69b0cb6","started_at":"2026-04-20T17:18:33.684140+00:00","ended_at":"2026-04-20T17:18:36.407121+00:00","span_data":{"type":"agent","name":"test-agent","handoffs":[],"tools":[],"output_type":"str"},"error":null},{"object":"trace.span","id":"span_7ad8edf3821e446cb69b0cb6","trace_id":"trace_de274b93505748249e9cb0fcc80e0717","parent_id":null,"started_at":"2026-04-20T17:18:33.683972+00:00","ended_at":"2026-04-20T17:18:36.407150+00:00","span_data":{"type":"custom","name":"task","data":{"sdk_span_type":"task","name":"Agent + workflow","usage":{"input_tokens":32,"output_tokens":2,"cached_input_tokens":0,"requests":1,"total_tokens":34}}},"error":null},{"object":"trace","id":"trace_7b62ee91f78944189cfc4e8a47bc2a4b","workflow_name":"Agent + workflow","group_id":null,"metadata":null},{"object":"trace","id":"trace_b1f27e463cea4c4cb563795e828de0f2","workflow_name":"Agent + workflow","group_id":null,"metadata":null}]}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '1879' + Content-Type: + - application/json + Cookie: + - __cf_bm=f8sYtWAyFIYfhNSIt6EeE6opbe1MBvZlRVFjd.HShjc-1776705515.3928144-1.0.1.1-ZsCY0T6H2s4_b.v7SYgC4fQQKYS4gy8t810wAlKqFZ9u_KxzXPEv0UTNemT3mcq68_XIBPPO.gT7tYK4lPDUeJQkYMN0wauq0jKSE2W95kSzLu1783AZ2ksHVnf7UV5g + Host: + - api.openai.com + OpenAI-Beta: + - traces=v1 + User-Agent: + - python-httpx/0.28.1 + method: POST + uri: https://api.openai.com/v1/traces/ingest + response: + body: + string: '' + headers: + CF-RAY: + - 9ef5cf27490aaaf1-YYZ + Connection: + - keep-alive + Date: + - Mon, 20 Apr 2026 17:18:37 GMT + Server: + - cloudflare + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - braintrust-data + openai-processing-ms: + - '494' + openai-project: + - proj_vsCSXafhhByzWOThMrJcZiw9 + openai-version: + - '2020-10-01' + x-openai-proxy-wasm: + - v0.1 + x-request-id: + - req_b1a71f6070f7423c947c69a659af593a + status: + code: 204 + message: No Content +- request: + body: '{"data":[{"object":"trace.span","id":"span_c83c92aaed444d0f968d585d","trace_id":"trace_b1f27e463cea4c4cb563795e828de0f2","parent_id":"span_3e0348c76214434da4a94e59","started_at":"2026-04-20T17:18:36.411943+00:00","ended_at":"2026-04-20T17:18:37.269020+00:00","span_data":{"type":"response","response_id":"resp_0a5fc53af8bb52290069e65fec9ec08192bf83198d1c850447"},"error":null},{"object":"trace.span","id":"span_3e0348c76214434da4a94e59","trace_id":"trace_b1f27e463cea4c4cb563795e828de0f2","parent_id":"span_5e1f5ff856204f87908239c9","started_at":"2026-04-20T17:18:36.410848+00:00","ended_at":"2026-04-20T17:18:37.269446+00:00","span_data":{"type":"custom","name":"turn","data":{"sdk_span_type":"turn","turn":1,"agent_name":"agent-b","usage":{"input_tokens":30,"output_tokens":2,"cached_input_tokens":0}}},"error":null},{"object":"trace.span","id":"span_5e1f5ff856204f87908239c9","trace_id":"trace_b1f27e463cea4c4cb563795e828de0f2","parent_id":"span_3066d4753cc54c64b3858ba6","started_at":"2026-04-20T17:18:36.410820+00:00","ended_at":"2026-04-20T17:18:37.269582+00:00","span_data":{"type":"agent","name":"agent-b","handoffs":[],"tools":[],"output_type":"str"},"error":null},{"object":"trace.span","id":"span_3066d4753cc54c64b3858ba6","trace_id":"trace_b1f27e463cea4c4cb563795e828de0f2","parent_id":null,"started_at":"2026-04-20T17:18:36.410729+00:00","ended_at":"2026-04-20T17:18:37.269612+00:00","span_data":{"type":"custom","name":"task","data":{"sdk_span_type":"task","name":"Agent + workflow","usage":{"input_tokens":30,"output_tokens":2,"cached_input_tokens":0,"requests":1,"total_tokens":32}}},"error":null}]}' + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '1613' + Content-Type: + - application/json + Cookie: + - __cf_bm=f8sYtWAyFIYfhNSIt6EeE6opbe1MBvZlRVFjd.HShjc-1776705515.3928144-1.0.1.1-ZsCY0T6H2s4_b.v7SYgC4fQQKYS4gy8t810wAlKqFZ9u_KxzXPEv0UTNemT3mcq68_XIBPPO.gT7tYK4lPDUeJQkYMN0wauq0jKSE2W95kSzLu1783AZ2ksHVnf7UV5g + Host: + - api.openai.com + OpenAI-Beta: + - traces=v1 + User-Agent: + - python-httpx/0.28.1 + method: POST + uri: https://api.openai.com/v1/traces/ingest + response: + body: + string: '' + headers: + CF-RAY: + - 9ef5cf2bc935c8b1-YYZ + Connection: + - keep-alive + Date: + - Mon, 20 Apr 2026 17:18:37 GMT + Server: + - cloudflare + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - braintrust-data + openai-processing-ms: + - '111' + openai-project: + - proj_vsCSXafhhByzWOThMrJcZiw9 + openai-version: + - '2020-10-01' + x-openai-proxy-wasm: + - v0.1 + x-request-id: + - req_fc55844109cd4a3f94b2f76ef489058e + status: + code: 204 + message: No Content +- request: + body: '{"include":[],"input":[{"content":"What''s your name?","role":"user"}],"instructions":"You + are agent A. Just respond with ''A'' and nothing else.","model":"gpt-4o-mini","prompt_cache_key":"agents-sdk:run:b906c748dc6a418995a4c0d2e3686c24","tools":[]}' headers: Accept: - application/json @@ -123,15 +244,15 @@ interactions: Connection: - keep-alive Content-Length: - - '241' + - '246' Content-Type: - application/json Cookie: - - __cf_bm=5xhOv8Mpe1ATIPgdKxFqK9PNA3Ckc8fDk8sndQp.Y9k-1776294609.3562365-1.0.1.1-xM7sy9ZAyeEl9KSTtqpFPWyzsOrDj0kiasVWriUsmbsT3ra.jFmgxYmm6_5W2ciNXfO1voIel01iHy7NPdltBxLyRCPVB.XxQ4ELl0VOvhmdE1oLvVl6jps7COVoyFGj + - __cf_bm=1UYuRzTAaXdwrDIKtmJddLjN6X.kdb2B_sJOOShjPVQ-1776705511.6388433-1.0.1.1-.P8CAFbGX2vjRmxqBIdN8CbYeUgLzdhtlvrjAMFvK8zOJ9Z8aRHu7wADoouY9HW.PoEvQ0bn9NyKEa5Fi5Ni9tPsfshKjJXWNBJpd7U3VTqKXVsVc.rl_xx4BzgAgkUx Host: - api.openai.com User-Agent: - - Agents/Python 0.14.1 + - Agents/Python 0.14.2 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -145,7 +266,7 @@ interactions: X-Stainless-Runtime: - CPython X-Stainless-Runtime-Version: - - 3.13.3 + - 3.14.3 x-stainless-read-timeout: - '600' x-stainless-retry-count: @@ -154,38 +275,39 @@ interactions: uri: https://api.openai.com/v1/responses response: body: - string: "{\n \"id\": \"resp_078e8ccbc6b7e22e0069e01ad3c6bc81908c4f90a366bf1697\",\n - \ \"object\": \"response\",\n \"created_at\": 1776294611,\n \"status\": + string: "{\n \"id\": \"resp_000eb75249cd006d0069e65feca36481a2981501c2737ffb74\",\n + \ \"object\": \"response\",\n \"created_at\": 1776705516,\n \"status\": \"completed\",\n \"background\": false,\n \"billing\": {\n \"payer\": - \"developer\"\n },\n \"completed_at\": 1776294612,\n \"error\": null,\n + \"developer\"\n },\n \"completed_at\": 1776705517,\n \"error\": null,\n \ \"frequency_penalty\": 0.0,\n \"incomplete_details\": null,\n \"instructions\": - \"You are agent B. Just respond with 'B' and nothing else.\",\n \"max_output_tokens\": + \"You are agent A. Just respond with 'A' and nothing else.\",\n \"max_output_tokens\": null,\n \"max_tool_calls\": null,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n - \ \"output\": [\n {\n \"id\": \"msg_078e8ccbc6b7e22e0069e01ad4782c8190a169fcfbb52f7fc0\",\n + \ \"output\": [\n {\n \"id\": \"msg_000eb75249cd006d0069e65fed8af481a2a431fec46e89daff\",\n \ \"type\": \"message\",\n \"status\": \"completed\",\n \"content\": [\n {\n \"type\": \"output_text\",\n \"annotations\": - [],\n \"logprobs\": [],\n \"text\": \"B\"\n }\n ],\n + [],\n \"logprobs\": [],\n \"text\": \"A\"\n }\n ],\n \ \"role\": \"assistant\"\n }\n ],\n \"parallel_tool_calls\": true,\n \ \"presence_penalty\": 0.0,\n \"previous_response_id\": null,\n \"prompt_cache_key\": - \"agents-sdk:run:40a1e7932ebd4088b674a753aedc48d1\",\n \"prompt_cache_retention\": - null,\n \"reasoning\": {\n \"effort\": null,\n \"summary\": null\n - \ },\n \"safety_identifier\": null,\n \"service_tier\": \"default\",\n \"store\": - true,\n \"temperature\": 1.0,\n \"text\": {\n \"format\": {\n \"type\": - \"text\"\n },\n \"verbosity\": \"medium\"\n },\n \"tool_choice\": - \"auto\",\n \"tools\": [],\n \"top_logprobs\": 0,\n \"top_p\": 1.0,\n \"truncation\": - \"disabled\",\n \"usage\": {\n \"input_tokens\": 30,\n \"input_tokens_details\": - {\n \"cached_tokens\": 0\n },\n \"output_tokens\": 2,\n \"output_tokens_details\": - {\n \"reasoning_tokens\": 0\n },\n \"total_tokens\": 32\n },\n - \ \"user\": null,\n \"metadata\": {}\n}" + \"agents-sdk:run:b906c748dc6a418995a4c0d2e3686c24\",\n \"prompt_cache_retention\": + \"in_memory\",\n \"reasoning\": {\n \"effort\": null,\n \"summary\": + null\n },\n \"safety_identifier\": null,\n \"service_tier\": \"default\",\n + \ \"store\": true,\n \"temperature\": 1.0,\n \"text\": {\n \"format\": + {\n \"type\": \"text\"\n },\n \"verbosity\": \"medium\"\n },\n + \ \"tool_choice\": \"auto\",\n \"tools\": [],\n \"top_logprobs\": 0,\n \"top_p\": + 1.0,\n \"truncation\": \"disabled\",\n \"usage\": {\n \"input_tokens\": + 30,\n \"input_tokens_details\": {\n \"cached_tokens\": 0\n },\n + \ \"output_tokens\": 2,\n \"output_tokens_details\": {\n \"reasoning_tokens\": + 0\n },\n \"total_tokens\": 32\n },\n \"user\": null,\n \"metadata\": + {}\n}" headers: CF-RAY: - - 9ece9f4b5b76076d-YYZ + - 9ef5cf269f640f01-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Wed, 15 Apr 2026 23:10:12 GMT + - Mon, 20 Apr 2026 17:18:37 GMT Server: - cloudflare Strict-Transport-Security: @@ -199,11 +321,11 @@ interactions: cf-cache-status: - DYNAMIC content-length: - - '1627' + - '1634' openai-organization: - braintrust-data openai-processing-ms: - - '878' + - '1131' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: @@ -215,13 +337,13 @@ interactions: x-ratelimit-remaining-requests: - '29999' x-ratelimit-remaining-tokens: - - '149999950' + - '149999952' x-ratelimit-reset-requests: - 2ms x-ratelimit-reset-tokens: - 0s x-request-id: - - req_262fe1e932534b7883ef62fcf580ba6d + - req_cb9ed565accd4a67a0544d07e94ee5eb status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/openai_agents/cassettes/latest/test_braintrust_tracing_processor_current_span_detection.yaml b/py/src/braintrust/integrations/openai_agents/cassettes/latest/test_braintrust_tracing_processor_current_span_detection.yaml index 80b2ccee..c50a1a73 100644 --- a/py/src/braintrust/integrations/openai_agents/cassettes/latest/test_braintrust_tracing_processor_current_span_detection.yaml +++ b/py/src/braintrust/integrations/openai_agents/cassettes/latest/test_braintrust_tracing_processor_current_span_detection.yaml @@ -1,7 +1,7 @@ interactions: - request: body: '{"include":[],"input":[{"content":"What is 2+2? Just the number.","role":"user"}],"instructions":"You - are a helpful assistant. Be very concise.","model":"gpt-4o-mini","prompt_cache_key":"agents-sdk:run:8b5e7d4a4a464135bcc3cdc5f1513e7d","tools":[]}' + are a helpful assistant. Be very concise.","model":"gpt-4o-mini","prompt_cache_key":"agents-sdk:run:927cc3deb2104e639f5698f25397d5ef","tools":[]}' headers: Accept: - application/json @@ -14,11 +14,11 @@ interactions: Content-Type: - application/json Cookie: - - __cf_bm=5xhOv8Mpe1ATIPgdKxFqK9PNA3Ckc8fDk8sndQp.Y9k-1776294609.3562365-1.0.1.1-xM7sy9ZAyeEl9KSTtqpFPWyzsOrDj0kiasVWriUsmbsT3ra.jFmgxYmm6_5W2ciNXfO1voIel01iHy7NPdltBxLyRCPVB.XxQ4ELl0VOvhmdE1oLvVl6jps7COVoyFGj + - __cf_bm=1UYuRzTAaXdwrDIKtmJddLjN6X.kdb2B_sJOOShjPVQ-1776705511.6388433-1.0.1.1-.P8CAFbGX2vjRmxqBIdN8CbYeUgLzdhtlvrjAMFvK8zOJ9Z8aRHu7wADoouY9HW.PoEvQ0bn9NyKEa5Fi5Ni9tPsfshKjJXWNBJpd7U3VTqKXVsVc.rl_xx4BzgAgkUx Host: - api.openai.com User-Agent: - - Agents/Python 0.14.1 + - Agents/Python 0.14.2 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -32,7 +32,7 @@ interactions: X-Stainless-Runtime: - CPython X-Stainless-Runtime-Version: - - 3.13.3 + - 3.14.3 x-stainless-read-timeout: - '600' x-stainless-retry-count: @@ -41,38 +41,39 @@ interactions: uri: https://api.openai.com/v1/responses response: body: - string: "{\n \"id\": \"resp_0967de48ac67d5a80069e01ad2c964819f8b558938ebe9346d\",\n - \ \"object\": \"response\",\n \"created_at\": 1776294610,\n \"status\": + string: "{\n \"id\": \"resp_0117b1da116416ae0069e65fe9da5c81a3b60ad374b43d1b51\",\n + \ \"object\": \"response\",\n \"created_at\": 1776705513,\n \"status\": \"completed\",\n \"background\": false,\n \"billing\": {\n \"payer\": - \"developer\"\n },\n \"completed_at\": 1776294611,\n \"error\": null,\n + \"developer\"\n },\n \"completed_at\": 1776705516,\n \"error\": null,\n \ \"frequency_penalty\": 0.0,\n \"incomplete_details\": null,\n \"instructions\": \"You are a helpful assistant. Be very concise.\",\n \"max_output_tokens\": null,\n \"max_tool_calls\": null,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n - \ \"output\": [\n {\n \"id\": \"msg_0967de48ac67d5a80069e01ad374c8819f9d5d00fd3d7af247\",\n + \ \"output\": [\n {\n \"id\": \"msg_0117b1da116416ae0069e65fec27bc81a3b9e47d1c6a77f5a2\",\n \ \"type\": \"message\",\n \"status\": \"completed\",\n \"content\": [\n {\n \"type\": \"output_text\",\n \"annotations\": [],\n \"logprobs\": [],\n \"text\": \"4\"\n }\n ],\n \ \"role\": \"assistant\"\n }\n ],\n \"parallel_tool_calls\": true,\n \ \"presence_penalty\": 0.0,\n \"previous_response_id\": null,\n \"prompt_cache_key\": - \"agents-sdk:run:8b5e7d4a4a464135bcc3cdc5f1513e7d\",\n \"prompt_cache_retention\": - null,\n \"reasoning\": {\n \"effort\": null,\n \"summary\": null\n - \ },\n \"safety_identifier\": null,\n \"service_tier\": \"default\",\n \"store\": - true,\n \"temperature\": 1.0,\n \"text\": {\n \"format\": {\n \"type\": - \"text\"\n },\n \"verbosity\": \"medium\"\n },\n \"tool_choice\": - \"auto\",\n \"tools\": [],\n \"top_logprobs\": 0,\n \"top_p\": 1.0,\n \"truncation\": - \"disabled\",\n \"usage\": {\n \"input_tokens\": 32,\n \"input_tokens_details\": - {\n \"cached_tokens\": 0\n },\n \"output_tokens\": 2,\n \"output_tokens_details\": - {\n \"reasoning_tokens\": 0\n },\n \"total_tokens\": 34\n },\n - \ \"user\": null,\n \"metadata\": {}\n}" + \"agents-sdk:run:927cc3deb2104e639f5698f25397d5ef\",\n \"prompt_cache_retention\": + \"in_memory\",\n \"reasoning\": {\n \"effort\": null,\n \"summary\": + null\n },\n \"safety_identifier\": null,\n \"service_tier\": \"default\",\n + \ \"store\": true,\n \"temperature\": 1.0,\n \"text\": {\n \"format\": + {\n \"type\": \"text\"\n },\n \"verbosity\": \"medium\"\n },\n + \ \"tool_choice\": \"auto\",\n \"tools\": [],\n \"top_logprobs\": 0,\n \"top_p\": + 1.0,\n \"truncation\": \"disabled\",\n \"usage\": {\n \"input_tokens\": + 32,\n \"input_tokens_details\": {\n \"cached_tokens\": 0\n },\n + \ \"output_tokens\": 2,\n \"output_tokens_details\": {\n \"reasoning_tokens\": + 0\n },\n \"total_tokens\": 34\n },\n \"user\": null,\n \"metadata\": + {}\n}" headers: CF-RAY: - - 9ece9f451ebfa238-YYZ + - 9ef5cf153c7de080-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Wed, 15 Apr 2026 23:10:11 GMT + - Mon, 20 Apr 2026 17:18:36 GMT Server: - cloudflare Strict-Transport-Security: @@ -86,11 +87,11 @@ interactions: cf-cache-status: - DYNAMIC content-length: - - '1616' + - '1623' openai-organization: - braintrust-data openai-processing-ms: - - '823' + - '2509' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: @@ -108,7 +109,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_b599ea8260ac48828cf2c00678fe8703 + - req_526289993c4b4c6d9e84bf2ada61afb5 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/openai_agents/cassettes/latest/test_openai_agents_integration_setup_creates_spans.yaml b/py/src/braintrust/integrations/openai_agents/cassettes/latest/test_openai_agents_integration_setup_creates_spans.yaml index 295b5bad..3df4b4b0 100644 --- a/py/src/braintrust/integrations/openai_agents/cassettes/latest/test_openai_agents_integration_setup_creates_spans.yaml +++ b/py/src/braintrust/integrations/openai_agents/cassettes/latest/test_openai_agents_integration_setup_creates_spans.yaml @@ -1,7 +1,7 @@ interactions: - request: body: '{"include":[],"input":[{"content":"What is 2+2? Just the number.","role":"user"}],"instructions":"You - are a helpful assistant. Be very concise.","model":"gpt-4o-mini","prompt_cache_key":"agents-sdk:run:6270f4a87852477494566aabaf5b84a8","tools":[]}' + are a helpful assistant. Be very concise.","model":"gpt-4o-mini","prompt_cache_key":"agents-sdk:run:b31de54f1fa0449788bb8907f3a295a2","tools":[]}' headers: Accept: - application/json @@ -16,7 +16,7 @@ interactions: Host: - api.openai.com User-Agent: - - Agents/Python 0.14.1 + - Agents/Python 0.14.2 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -30,7 +30,7 @@ interactions: X-Stainless-Runtime: - CPython X-Stainless-Runtime-Version: - - 3.13.3 + - 3.14.3 x-stainless-read-timeout: - '600' x-stainless-retry-count: @@ -39,38 +39,39 @@ interactions: uri: https://api.openai.com/v1/responses response: body: - string: "{\n \"id\": \"resp_0ba334475648a89c0069e01ad164408195807293f6050dfac1\",\n - \ \"object\": \"response\",\n \"created_at\": 1776294609,\n \"status\": + string: "{\n \"id\": \"resp_09422bbd5a7dc8160069e65fe8469081a1a6964574f5ad2a1d\",\n + \ \"object\": \"response\",\n \"created_at\": 1776705512,\n \"status\": \"completed\",\n \"background\": false,\n \"billing\": {\n \"payer\": - \"developer\"\n },\n \"completed_at\": 1776294610,\n \"error\": null,\n + \"developer\"\n },\n \"completed_at\": 1776705513,\n \"error\": null,\n \ \"frequency_penalty\": 0.0,\n \"incomplete_details\": null,\n \"instructions\": \"You are a helpful assistant. Be very concise.\",\n \"max_output_tokens\": null,\n \"max_tool_calls\": null,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n - \ \"output\": [\n {\n \"id\": \"msg_0ba334475648a89c0069e01ad26fa8819598b0bb921726fdfd\",\n + \ \"output\": [\n {\n \"id\": \"msg_09422bbd5a7dc8160069e65fe9608081a182dc08a29c5edb38\",\n \ \"type\": \"message\",\n \"status\": \"completed\",\n \"content\": [\n {\n \"type\": \"output_text\",\n \"annotations\": [],\n \"logprobs\": [],\n \"text\": \"4\"\n }\n ],\n \ \"role\": \"assistant\"\n }\n ],\n \"parallel_tool_calls\": true,\n \ \"presence_penalty\": 0.0,\n \"previous_response_id\": null,\n \"prompt_cache_key\": - \"agents-sdk:run:6270f4a87852477494566aabaf5b84a8\",\n \"prompt_cache_retention\": - null,\n \"reasoning\": {\n \"effort\": null,\n \"summary\": null\n - \ },\n \"safety_identifier\": null,\n \"service_tier\": \"default\",\n \"store\": - true,\n \"temperature\": 1.0,\n \"text\": {\n \"format\": {\n \"type\": - \"text\"\n },\n \"verbosity\": \"medium\"\n },\n \"tool_choice\": - \"auto\",\n \"tools\": [],\n \"top_logprobs\": 0,\n \"top_p\": 1.0,\n \"truncation\": - \"disabled\",\n \"usage\": {\n \"input_tokens\": 32,\n \"input_tokens_details\": - {\n \"cached_tokens\": 0\n },\n \"output_tokens\": 2,\n \"output_tokens_details\": - {\n \"reasoning_tokens\": 0\n },\n \"total_tokens\": 34\n },\n - \ \"user\": null,\n \"metadata\": {}\n}" + \"agents-sdk:run:b31de54f1fa0449788bb8907f3a295a2\",\n \"prompt_cache_retention\": + \"in_memory\",\n \"reasoning\": {\n \"effort\": null,\n \"summary\": + null\n },\n \"safety_identifier\": null,\n \"service_tier\": \"default\",\n + \ \"store\": true,\n \"temperature\": 1.0,\n \"text\": {\n \"format\": + {\n \"type\": \"text\"\n },\n \"verbosity\": \"medium\"\n },\n + \ \"tool_choice\": \"auto\",\n \"tools\": [],\n \"top_logprobs\": 0,\n \"top_p\": + 1.0,\n \"truncation\": \"disabled\",\n \"usage\": {\n \"input_tokens\": + 32,\n \"input_tokens_details\": {\n \"cached_tokens\": 0\n },\n + \ \"output_tokens\": 2,\n \"output_tokens_details\": {\n \"reasoning_tokens\": + 0\n },\n \"total_tokens\": 34\n },\n \"user\": null,\n \"metadata\": + {}\n}" headers: CF-RAY: - - 9ece9f3c79504cc4-YYZ + - 9ef5cf07be74e21a-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Wed, 15 Apr 2026 23:10:10 GMT + - Mon, 20 Apr 2026 17:18:33 GMT Server: - cloudflare Strict-Transport-Security: @@ -84,19 +85,19 @@ interactions: cf-cache-status: - DYNAMIC content-length: - - '1616' + - '1623' openai-organization: - braintrust-data openai-processing-ms: - - '1179' + - '1362' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=5xhOv8Mpe1ATIPgdKxFqK9PNA3Ckc8fDk8sndQp.Y9k-1776294609.3562365-1.0.1.1-xM7sy9ZAyeEl9KSTtqpFPWyzsOrDj0kiasVWriUsmbsT3ra.jFmgxYmm6_5W2ciNXfO1voIel01iHy7NPdltBxLyRCPVB.XxQ4ELl0VOvhmdE1oLvVl6jps7COVoyFGj; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Wed, 15 Apr 2026 - 23:40:10 GMT + - __cf_bm=1UYuRzTAaXdwrDIKtmJddLjN6X.kdb2B_sJOOShjPVQ-1776705511.6388433-1.0.1.1-.P8CAFbGX2vjRmxqBIdN8CbYeUgLzdhtlvrjAMFvK8zOJ9Z8aRHu7wADoouY9HW.PoEvQ0bn9NyKEa5Fi5Ni9tPsfshKjJXWNBJpd7U3VTqKXVsVc.rl_xx4BzgAgkUx; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:48:33 GMT x-ratelimit-limit-requests: - '30000' x-ratelimit-limit-tokens: @@ -110,7 +111,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_993f60370d1d4bc1806a60ae2a77b5f9 + - req_d81cccdcc9a749d88155cb1e69986e5e status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/openai_agents/cassettes/latest/test_openai_agents_task_and_turn_span_types.yaml b/py/src/braintrust/integrations/openai_agents/cassettes/latest/test_openai_agents_task_and_turn_span_types.yaml index f18740eb..fcd5ef41 100644 --- a/py/src/braintrust/integrations/openai_agents/cassettes/latest/test_openai_agents_task_and_turn_span_types.yaml +++ b/py/src/braintrust/integrations/openai_agents/cassettes/latest/test_openai_agents_task_and_turn_span_types.yaml @@ -1,76 +1,7 @@ interactions: -- request: - body: '{"data":[{"object":"trace","id":"trace_708cab2fe08948bf889af1ac63ab47e6","workflow_name":"Agent - workflow","group_id":null,"metadata":null},{"object":"trace.span","id":"span_445dd203aa0b4e6db9a62edf","trace_id":"trace_708cab2fe08948bf889af1ac63ab47e6","parent_id":"span_8763f1c5c1ff447cb7e70788","started_at":"2026-04-15T23:10:08.537691+00:00","ended_at":"2026-04-15T23:10:10.632333+00:00","span_data":{"type":"response","response_id":"resp_0ba334475648a89c0069e01ad164408195807293f6050dfac1"},"error":null},{"object":"trace.span","id":"span_8763f1c5c1ff447cb7e70788","trace_id":"trace_708cab2fe08948bf889af1ac63ab47e6","parent_id":"span_bb8d6b8cc9f24b7ab33a45d7","started_at":"2026-04-15T23:10:08.527805+00:00","ended_at":"2026-04-15T23:10:10.634107+00:00","span_data":{"type":"custom","name":"turn","data":{"sdk_span_type":"turn","turn":1,"agent_name":"test-agent","usage":{"input_tokens":32,"output_tokens":2,"cached_input_tokens":0}}},"error":null},{"object":"trace.span","id":"span_bb8d6b8cc9f24b7ab33a45d7","trace_id":"trace_708cab2fe08948bf889af1ac63ab47e6","parent_id":"span_016a9185ba8745f2929e1775","started_at":"2026-04-15T23:10:08.527764+00:00","ended_at":"2026-04-15T23:10:10.634338+00:00","span_data":{"type":"agent","name":"test-agent","handoffs":[],"tools":[],"output_type":"str"},"error":null},{"object":"trace.span","id":"span_016a9185ba8745f2929e1775","trace_id":"trace_708cab2fe08948bf889af1ac63ab47e6","parent_id":null,"started_at":"2026-04-15T23:10:08.527571+00:00","ended_at":"2026-04-15T23:10:10.634380+00:00","span_data":{"type":"custom","name":"task","data":{"sdk_span_type":"task","name":"Agent - workflow","usage":{"input_tokens":32,"output_tokens":2,"cached_input_tokens":0,"requests":1,"total_tokens":34}}},"error":null},{"object":"trace","id":"trace_e1dedea365d14a94927ea421b9f28ee4","workflow_name":"Agent - workflow","group_id":null,"metadata":null},{"object":"trace.span","id":"span_1abbc9dc898841b8aefed014","trace_id":"trace_e1dedea365d14a94927ea421b9f28ee4","parent_id":"span_152a5b8de1c54af9985682f2","started_at":"2026-04-15T23:10:10.638820+00:00","ended_at":"2026-04-15T23:10:11.607176+00:00","span_data":{"type":"response","response_id":"resp_0967de48ac67d5a80069e01ad2c964819f8b558938ebe9346d"},"error":null},{"object":"trace.span","id":"span_152a5b8de1c54af9985682f2","trace_id":"trace_e1dedea365d14a94927ea421b9f28ee4","parent_id":"span_ff8810fa5c604e0597ea2a4c","started_at":"2026-04-15T23:10:10.638407+00:00","ended_at":"2026-04-15T23:10:11.607580+00:00","span_data":{"type":"custom","name":"turn","data":{"sdk_span_type":"turn","turn":1,"agent_name":"test-agent","usage":{"input_tokens":32,"output_tokens":2,"cached_input_tokens":0}}},"error":null},{"object":"trace.span","id":"span_ff8810fa5c604e0597ea2a4c","trace_id":"trace_e1dedea365d14a94927ea421b9f28ee4","parent_id":"span_52f5a0ca57394072a0c0f3ab","started_at":"2026-04-15T23:10:10.638373+00:00","ended_at":"2026-04-15T23:10:11.607694+00:00","span_data":{"type":"agent","name":"test-agent","handoffs":[],"tools":[],"output_type":"str"},"error":null},{"object":"trace.span","id":"span_52f5a0ca57394072a0c0f3ab","trace_id":"trace_e1dedea365d14a94927ea421b9f28ee4","parent_id":null,"started_at":"2026-04-15T23:10:10.638189+00:00","ended_at":"2026-04-15T23:10:11.607727+00:00","span_data":{"type":"custom","name":"task","data":{"sdk_span_type":"task","name":"Agent - workflow","usage":{"input_tokens":32,"output_tokens":2,"cached_input_tokens":0,"requests":1,"total_tokens":34}}},"error":null},{"object":"trace","id":"trace_5f8819be6c654efd9472bdfb9f97d820","workflow_name":"Agent - workflow","group_id":null,"metadata":null},{"object":"trace","id":"trace_5c340938a23743d1a95a53522eef5d42","workflow_name":"Agent - workflow","group_id":null,"metadata":null},{"object":"trace.span","id":"span_4c69702d85024db7b47d1df3","trace_id":"trace_5f8819be6c654efd9472bdfb9f97d820","parent_id":"span_5f8cdbdb630b428e9b796e1a","started_at":"2026-04-15T23:10:11.612167+00:00","ended_at":"2026-04-15T23:10:12.513125+00:00","span_data":{"type":"response","response_id":"resp_0a515a6dbc6482e80069e01ad3c900819788990ddeefc3634b"},"error":null},{"object":"trace.span","id":"span_5f8cdbdb630b428e9b796e1a","trace_id":"trace_5f8819be6c654efd9472bdfb9f97d820","parent_id":"span_750410cee13840039ff45837","started_at":"2026-04-15T23:10:11.611154+00:00","ended_at":"2026-04-15T23:10:12.513692+00:00","span_data":{"type":"custom","name":"turn","data":{"sdk_span_type":"turn","turn":1,"agent_name":"agent-a","usage":{"input_tokens":30,"output_tokens":2,"cached_input_tokens":0}}},"error":null},{"object":"trace.span","id":"span_750410cee13840039ff45837","trace_id":"trace_5f8819be6c654efd9472bdfb9f97d820","parent_id":"span_9764da1decc94852985d10ad","started_at":"2026-04-15T23:10:11.611121+00:00","ended_at":"2026-04-15T23:10:12.513871+00:00","span_data":{"type":"agent","name":"agent-a","handoffs":[],"tools":[],"output_type":"str"},"error":null},{"object":"trace.span","id":"span_9764da1decc94852985d10ad","trace_id":"trace_5f8819be6c654efd9472bdfb9f97d820","parent_id":null,"started_at":"2026-04-15T23:10:11.611001+00:00","ended_at":"2026-04-15T23:10:12.513923+00:00","span_data":{"type":"custom","name":"task","data":{"sdk_span_type":"task","name":"Agent - workflow","usage":{"input_tokens":30,"output_tokens":2,"cached_input_tokens":0,"requests":1,"total_tokens":32}}},"error":null},{"object":"trace.span","id":"span_9c864844517841bbb62d01d3","trace_id":"trace_5c340938a23743d1a95a53522eef5d42","parent_id":"span_93f74c75d6b647aca3c5ca22","started_at":"2026-04-15T23:10:11.612563+00:00","ended_at":"2026-04-15T23:10:12.649174+00:00","span_data":{"type":"response","response_id":"resp_078e8ccbc6b7e22e0069e01ad3c6bc81908c4f90a366bf1697"},"error":null},{"object":"trace.span","id":"span_93f74c75d6b647aca3c5ca22","trace_id":"trace_5c340938a23743d1a95a53522eef5d42","parent_id":"span_16f6e5678c1547cca5b00a56","started_at":"2026-04-15T23:10:11.611344+00:00","ended_at":"2026-04-15T23:10:12.649695+00:00","span_data":{"type":"custom","name":"turn","data":{"sdk_span_type":"turn","turn":1,"agent_name":"agent-b","usage":{"input_tokens":30,"output_tokens":2,"cached_input_tokens":0}}},"error":null},{"object":"trace.span","id":"span_16f6e5678c1547cca5b00a56","trace_id":"trace_5c340938a23743d1a95a53522eef5d42","parent_id":"span_c35ca2e2db964ca195d1092d","started_at":"2026-04-15T23:10:11.611318+00:00","ended_at":"2026-04-15T23:10:12.649859+00:00","span_data":{"type":"agent","name":"agent-b","handoffs":[],"tools":[],"output_type":"str"},"error":null},{"object":"trace.span","id":"span_c35ca2e2db964ca195d1092d","trace_id":"trace_5c340938a23743d1a95a53522eef5d42","parent_id":null,"started_at":"2026-04-15T23:10:11.611244+00:00","ended_at":"2026-04-15T23:10:12.649903+00:00","span_data":{"type":"custom","name":"task","data":{"sdk_span_type":"task","name":"Agent - workflow","usage":{"input_tokens":30,"output_tokens":2,"cached_input_tokens":0,"requests":1,"total_tokens":32}}},"error":null},{"object":"trace","id":"trace_598af51a844e4ea680bd4a092198785a","workflow_name":"Agent - workflow","group_id":null,"metadata":null}]}' - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '7084' - Content-Type: - - application/json - Host: - - api.openai.com - OpenAI-Beta: - - traces=v1 - User-Agent: - - python-httpx/0.28.1 - method: POST - uri: https://api.openai.com/v1/traces/ingest - response: - body: - string: '' - headers: - CF-RAY: - - 9ece9f576878aa9b-YYZ - Connection: - - keep-alive - Date: - - Wed, 15 Apr 2026 23:10:13 GMT - Server: - - cloudflare - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - X-Content-Type-Options: - - nosniff - alt-svc: - - h3=":443"; ma=86400 - cf-cache-status: - - DYNAMIC - openai-organization: - - braintrust-data - openai-processing-ms: - - '146' - openai-project: - - proj_vsCSXafhhByzWOThMrJcZiw9 - openai-version: - - '2020-10-01' - set-cookie: - - __cf_bm=u52h4D_eEIMrH6JLGxN0LvElLsreuHhgzho8Y1gIl0E-1776294613.6675758-1.0.1.1-jJLzkcDsAgoCr6J0Qp.jGnJfaQyq8ciKCsrI.YAt.sue58ye41NBKgkTbJQ5HFS_PuW4y6f0a62DpMNrlYsRbgtg7ejrMWz0mWDBtdIaw5_gIvd6uVzr3z.LXIiyYS3g; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Wed, 15 Apr 2026 - 23:40:13 GMT - x-openai-proxy-wasm: - - v0.1 - x-request-id: - - req_b8338299ea314e5d8fc149c0fabfe7de - status: - code: 204 - message: No Content - request: body: '{"include":[],"input":[{"content":"What is 2+2? Just the number.","role":"user"}],"instructions":"You - are a helpful assistant. Be very concise.","model":"gpt-4o-mini","prompt_cache_key":"agents-sdk:run:162c5712287a46efa8d5392af19bbc5f","tools":[]}' + are a helpful assistant. Be very concise.","model":"gpt-4o-mini","prompt_cache_key":"agents-sdk:run:8102b52318844537bbf60c0011779a37","tools":[]}' headers: Accept: - application/json @@ -83,11 +14,11 @@ interactions: Content-Type: - application/json Cookie: - - __cf_bm=5xhOv8Mpe1ATIPgdKxFqK9PNA3Ckc8fDk8sndQp.Y9k-1776294609.3562365-1.0.1.1-xM7sy9ZAyeEl9KSTtqpFPWyzsOrDj0kiasVWriUsmbsT3ra.jFmgxYmm6_5W2ciNXfO1voIel01iHy7NPdltBxLyRCPVB.XxQ4ELl0VOvhmdE1oLvVl6jps7COVoyFGj + - __cf_bm=1UYuRzTAaXdwrDIKtmJddLjN6X.kdb2B_sJOOShjPVQ-1776705511.6388433-1.0.1.1-.P8CAFbGX2vjRmxqBIdN8CbYeUgLzdhtlvrjAMFvK8zOJ9Z8aRHu7wADoouY9HW.PoEvQ0bn9NyKEa5Fi5Ni9tPsfshKjJXWNBJpd7U3VTqKXVsVc.rl_xx4BzgAgkUx Host: - api.openai.com User-Agent: - - Agents/Python 0.14.1 + - Agents/Python 0.14.2 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -101,7 +32,7 @@ interactions: X-Stainless-Runtime: - CPython X-Stainless-Runtime-Version: - - 3.13.3 + - 3.14.3 x-stainless-read-timeout: - '600' x-stainless-retry-count: @@ -110,38 +41,39 @@ interactions: uri: https://api.openai.com/v1/responses response: body: - string: "{\n \"id\": \"resp_03d4b7f664205e960069e01ad4cfb88194b7e462ca3ba0d84c\",\n - \ \"object\": \"response\",\n \"created_at\": 1776294612,\n \"status\": + string: "{\n \"id\": \"resp_0cd39b45584be56a0069e65fee21f881a2a951be9378fc9644\",\n + \ \"object\": \"response\",\n \"created_at\": 1776705518,\n \"status\": \"completed\",\n \"background\": false,\n \"billing\": {\n \"payer\": - \"developer\"\n },\n \"completed_at\": 1776294613,\n \"error\": null,\n + \"developer\"\n },\n \"completed_at\": 1776705519,\n \"error\": null,\n \ \"frequency_penalty\": 0.0,\n \"incomplete_details\": null,\n \"instructions\": \"You are a helpful assistant. Be very concise.\",\n \"max_output_tokens\": null,\n \"max_tool_calls\": null,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n - \ \"output\": [\n {\n \"id\": \"msg_03d4b7f664205e960069e01ad5c2248194909d73135ac495f0\",\n + \ \"output\": [\n {\n \"id\": \"msg_0cd39b45584be56a0069e65fef5bec81a2b0330679e48aca9f\",\n \ \"type\": \"message\",\n \"status\": \"completed\",\n \"content\": [\n {\n \"type\": \"output_text\",\n \"annotations\": [],\n \"logprobs\": [],\n \"text\": \"4\"\n }\n ],\n \ \"role\": \"assistant\"\n }\n ],\n \"parallel_tool_calls\": true,\n \ \"presence_penalty\": 0.0,\n \"previous_response_id\": null,\n \"prompt_cache_key\": - \"agents-sdk:run:162c5712287a46efa8d5392af19bbc5f\",\n \"prompt_cache_retention\": - null,\n \"reasoning\": {\n \"effort\": null,\n \"summary\": null\n - \ },\n \"safety_identifier\": null,\n \"service_tier\": \"default\",\n \"store\": - true,\n \"temperature\": 1.0,\n \"text\": {\n \"format\": {\n \"type\": - \"text\"\n },\n \"verbosity\": \"medium\"\n },\n \"tool_choice\": - \"auto\",\n \"tools\": [],\n \"top_logprobs\": 0,\n \"top_p\": 1.0,\n \"truncation\": - \"disabled\",\n \"usage\": {\n \"input_tokens\": 32,\n \"input_tokens_details\": - {\n \"cached_tokens\": 0\n },\n \"output_tokens\": 2,\n \"output_tokens_details\": - {\n \"reasoning_tokens\": 0\n },\n \"total_tokens\": 34\n },\n - \ \"user\": null,\n \"metadata\": {}\n}" + \"agents-sdk:run:8102b52318844537bbf60c0011779a37\",\n \"prompt_cache_retention\": + \"in_memory\",\n \"reasoning\": {\n \"effort\": null,\n \"summary\": + null\n },\n \"safety_identifier\": null,\n \"service_tier\": \"default\",\n + \ \"store\": true,\n \"temperature\": 1.0,\n \"text\": {\n \"format\": + {\n \"type\": \"text\"\n },\n \"verbosity\": \"medium\"\n },\n + \ \"tool_choice\": \"auto\",\n \"tools\": [],\n \"top_logprobs\": 0,\n \"top_p\": + 1.0,\n \"truncation\": \"disabled\",\n \"usage\": {\n \"input_tokens\": + 32,\n \"input_tokens_details\": {\n \"cached_tokens\": 0\n },\n + \ \"output_tokens\": 2,\n \"output_tokens_details\": {\n \"reasoning_tokens\": + 0\n },\n \"total_tokens\": 34\n },\n \"user\": null,\n \"metadata\": + {}\n}" headers: CF-RAY: - - 9ece9f51acb2c85f-YYZ + - 9ef5cf2fd909813d-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Wed, 15 Apr 2026 23:10:13 GMT + - Mon, 20 Apr 2026 17:18:39 GMT Server: - cloudflare Strict-Transport-Security: @@ -155,11 +87,11 @@ interactions: cf-cache-status: - DYNAMIC content-length: - - '1616' + - '1623' openai-organization: - braintrust-data openai-processing-ms: - - '1124' + - '1476' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: @@ -171,13 +103,13 @@ interactions: x-ratelimit-remaining-requests: - '29999' x-ratelimit-remaining-tokens: - - '149999950' + - '149999947' x-ratelimit-reset-requests: - 2ms x-ratelimit-reset-tokens: - 0s x-request-id: - - req_e1d2a409b5794b368efa34224cb7e7f6 + - req_0f654fe8b28f40138d71094c126ed40e status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_run_async.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_run_async.yaml index 9ca2cfa3..b37eadf7 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_run_async.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_run_async.yaml @@ -16,7 +16,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -39,8 +39,8 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeBllfIhcpKsaEGt1LrE6tybAxEo\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435025,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmZplFWSTkogFGtQIEaz8IRWJolk\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705597,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"4\",\n \"refusal\": null,\n \ \"annotations\": []\n },\n \"logprobs\": null,\n \"finish_reason\": @@ -49,18 +49,18 @@ interactions: 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_fe7a5277a8\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_a7190374f3\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc03599a660f01-YYZ + - 9ef5d11ecb3aebba-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:10:25 GMT + - Mon, 20 Apr 2026 17:19:57 GMT Server: - cloudflare Strict-Transport-Security: @@ -78,15 +78,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '220' + - '301' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=cM5iZHRCSmQI.XNCqef_yIDEwDHYHwBPdriyjdaSmQw-1776435024.9002633-1.0.1.1-PdarEl_Od4RDjHdhsIkTijyA5ZcFmKqt4S8q6AUN4E46_U6D_.BYMe32alJuNcK2BxfGRYScaMR_SaRSyKqeF9MO1sBJdwIXLEgXDKgDVppB0vJ1GVcD5PpPY3px0tTq; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:25 GMT + - __cf_bm=FLIDcvj1jLc7H32PvQvmbrhuzT7oApJDaG5rpHHTKG0-1776705597.2450578-1.0.1.1-mYOBiY9283J1A4CKo41SUcgbLI76b2yrl9JT_2YVsaTU1BVSqMsC4s_93mqcZfk6GK3IlhdLr5VFikeBn3ntrtXvovNtVAn_3tpLF3oERc3vyy_CQJhWKOXEqlPJrWQc; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:49:57 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -102,7 +102,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_e9131e2255a74d97a23984b04790bbd0 + - req_49400041540d4893813d98b1075b76cc status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_run_stream.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_run_stream.yaml index 342b7525..9e8ac645 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_run_stream.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_run_stream.yaml @@ -15,7 +15,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -38,59 +38,84 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: 'data: {"id":"chatcmpl-DVeBuWFIFKpIlOgNmrxatyH8xnOO4","object":"chat.completion.chunk","created":1776435034,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"1jEX2L4dR"} + string: 'data: {"id":"chatcmpl-DWmZuCGxymDrDm4HoaoK60191j73q","object":"chat.completion.chunk","created":1776705602,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"BjzP08ogr"} - data: {"id":"chatcmpl-DVeBuWFIFKpIlOgNmrxatyH8xnOO4","object":"chat.completion.chunk","created":1776435034,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"1"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"wUO75ZVGg0"} + data: {"id":"chatcmpl-DWmZuCGxymDrDm4HoaoK60191j73q","object":"chat.completion.chunk","created":1776705602,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"Sure"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"bZNOwGR"} - data: {"id":"chatcmpl-DVeBuWFIFKpIlOgNmrxatyH8xnOO4","object":"chat.completion.chunk","created":1776435034,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"9wl9MXfDnh"} + data: {"id":"chatcmpl-DWmZuCGxymDrDm4HoaoK60191j73q","object":"chat.completion.chunk","created":1776705602,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"!"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"SqNwCoXa0B"} - data: {"id":"chatcmpl-DVeBuWFIFKpIlOgNmrxatyH8xnOO4","object":"chat.completion.chunk","created":1776435034,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"WxnOsAg6Xx"} + data: {"id":"chatcmpl-DWmZuCGxymDrDm4HoaoK60191j73q","object":"chat.completion.chunk","created":1776705602,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":" + Here"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"HqjL1h"} - data: {"id":"chatcmpl-DVeBuWFIFKpIlOgNmrxatyH8xnOO4","object":"chat.completion.chunk","created":1776435034,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"2"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"zIUOg9nYUl"} + data: {"id":"chatcmpl-DWmZuCGxymDrDm4HoaoK60191j73q","object":"chat.completion.chunk","created":1776705602,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":" + you"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"gwzE6sE"} - data: {"id":"chatcmpl-DVeBuWFIFKpIlOgNmrxatyH8xnOO4","object":"chat.completion.chunk","created":1776435034,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Qzk9fuYAch"} + data: {"id":"chatcmpl-DWmZuCGxymDrDm4HoaoK60191j73q","object":"chat.completion.chunk","created":1776705602,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":" + go"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"y9ewcJel"} - data: {"id":"chatcmpl-DVeBuWFIFKpIlOgNmrxatyH8xnOO4","object":"chat.completion.chunk","created":1776435034,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"1xzvAIGjsJ"} + data: {"id":"chatcmpl-DWmZuCGxymDrDm4HoaoK60191j73q","object":"chat.completion.chunk","created":1776705602,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":":"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"53GVmshv2X"} - data: {"id":"chatcmpl-DVeBuWFIFKpIlOgNmrxatyH8xnOO4","object":"chat.completion.chunk","created":1776435034,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"3"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"F8rdkOFF1F"} + data: {"id":"chatcmpl-DWmZuCGxymDrDm4HoaoK60191j73q","object":"chat.completion.chunk","created":1776705602,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"O5VtlFtv7i"} - data: {"id":"chatcmpl-DVeBuWFIFKpIlOgNmrxatyH8xnOO4","object":"chat.completion.chunk","created":1776435034,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"7DDQuqf1ZE"} + data: {"id":"chatcmpl-DWmZuCGxymDrDm4HoaoK60191j73q","object":"chat.completion.chunk","created":1776705602,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"1"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"lSmOj3g2Wo"} - data: {"id":"chatcmpl-DVeBuWFIFKpIlOgNmrxatyH8xnOO4","object":"chat.completion.chunk","created":1776435034,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"SHBIP6xTCG"} + data: {"id":"chatcmpl-DWmZuCGxymDrDm4HoaoK60191j73q","object":"chat.completion.chunk","created":1776705602,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"1wzLidMQGt"} - data: {"id":"chatcmpl-DVeBuWFIFKpIlOgNmrxatyH8xnOO4","object":"chat.completion.chunk","created":1776435034,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"4"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"yUYFwYlcfR"} + data: {"id":"chatcmpl-DWmZuCGxymDrDm4HoaoK60191j73q","object":"chat.completion.chunk","created":1776705602,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"spihWs41Md"} - data: {"id":"chatcmpl-DVeBuWFIFKpIlOgNmrxatyH8xnOO4","object":"chat.completion.chunk","created":1776435034,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"9RMAvl6m95"} + data: {"id":"chatcmpl-DWmZuCGxymDrDm4HoaoK60191j73q","object":"chat.completion.chunk","created":1776705602,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"2"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"uk44Plqde9"} - data: {"id":"chatcmpl-DVeBuWFIFKpIlOgNmrxatyH8xnOO4","object":"chat.completion.chunk","created":1776435034,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"iS78m9q67w"} + data: {"id":"chatcmpl-DWmZuCGxymDrDm4HoaoK60191j73q","object":"chat.completion.chunk","created":1776705602,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"N4PC3NDhla"} - data: {"id":"chatcmpl-DVeBuWFIFKpIlOgNmrxatyH8xnOO4","object":"chat.completion.chunk","created":1776435034,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"5"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"ksoL1VJbfM"} + data: {"id":"chatcmpl-DWmZuCGxymDrDm4HoaoK60191j73q","object":"chat.completion.chunk","created":1776705602,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"MsVjKC1IJj"} - data: {"id":"chatcmpl-DVeBuWFIFKpIlOgNmrxatyH8xnOO4","object":"chat.completion.chunk","created":1776435034,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"s3j94QUqCx"} + data: {"id":"chatcmpl-DWmZuCGxymDrDm4HoaoK60191j73q","object":"chat.completion.chunk","created":1776705602,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"3"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"UTn958tUE3"} - data: {"id":"chatcmpl-DVeBuWFIFKpIlOgNmrxatyH8xnOO4","object":"chat.completion.chunk","created":1776435034,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"KY9Ns"} + data: {"id":"chatcmpl-DWmZuCGxymDrDm4HoaoK60191j73q","object":"chat.completion.chunk","created":1776705602,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"BzvDBtUal7"} - data: {"id":"chatcmpl-DVeBuWFIFKpIlOgNmrxatyH8xnOO4","object":"chat.completion.chunk","created":1776435034,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[],"usage":{"prompt_tokens":14,"completion_tokens":14,"total_tokens":28,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"DsXmbjjcXM"} + data: {"id":"chatcmpl-DWmZuCGxymDrDm4HoaoK60191j73q","object":"chat.completion.chunk","created":1776705602,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"dwx358v3y3"} + + + data: {"id":"chatcmpl-DWmZuCGxymDrDm4HoaoK60191j73q","object":"chat.completion.chunk","created":1776705602,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"4"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"pNgPSxtmvn"} + + + data: {"id":"chatcmpl-DWmZuCGxymDrDm4HoaoK60191j73q","object":"chat.completion.chunk","created":1776705602,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"fixMQP1TvL"} + + + data: {"id":"chatcmpl-DWmZuCGxymDrDm4HoaoK60191j73q","object":"chat.completion.chunk","created":1776705602,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"hhh6Wa9TSw"} + + + data: {"id":"chatcmpl-DWmZuCGxymDrDm4HoaoK60191j73q","object":"chat.completion.chunk","created":1776705602,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"5"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Xg6rM3Lc25"} + + + data: {"id":"chatcmpl-DWmZuCGxymDrDm4HoaoK60191j73q","object":"chat.completion.chunk","created":1776705602,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Djum6XANd6"} + + + data: {"id":"chatcmpl-DWmZuCGxymDrDm4HoaoK60191j73q","object":"chat.completion.chunk","created":1776705602,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"jhwNe"} + + + data: {"id":"chatcmpl-DWmZuCGxymDrDm4HoaoK60191j73q","object":"chat.completion.chunk","created":1776705602,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[],"usage":{"prompt_tokens":14,"completion_tokens":21,"total_tokens":35,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"M0y9JU8wSz"} data: [DONE] @@ -101,13 +126,13 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc0392acd1aac7-YYZ + - 9ef5d13e6a0a8ea1-YYZ Connection: - keep-alive Content-Type: - text/event-stream; charset=utf-8 Date: - - Fri, 17 Apr 2026 14:10:34 GMT + - Mon, 20 Apr 2026 17:20:02 GMT Server: - cloudflare Strict-Transport-Security: @@ -123,15 +148,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '229' + - '252' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=3B2FUvz3X3UJTc.1ZDnxIl7w0umSppudPJAWV4JUbOY-1776435034.029189-1.0.1.1-Ij4c6S3nZ7u7Kh2EvqqFO8SXE6s1aDKhLQ4Bkcv.0uhNwjp_F1C7h76yw46TVQGnCgvLVpjspBVBGonsPBgOXWw.EWQyKPqdt0six_DLM3IyNzgNBM.aibtT76ZTU02z; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:34 GMT + - __cf_bm=DnKPMsn9Q7t3A5fKg_vjEfpiAtt3RErfqkLzwkGJk0c-1776705602.309951-1.0.1.1-VUL_cI.b97eHLNVfpRMzLijaoTeYM4guHLYBsymIBAgYOc1ijocg7oJ8DEltExAmbJaLWi5A0hLKHe3OQtJ4bY9QwkGr.od17gMsn8YN64C9E0m_k4Os3eRll4166.pH; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:50:02 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -141,13 +166,13 @@ interactions: x-ratelimit-remaining-requests: - '29999' x-ratelimit-remaining-tokens: - - '149999992' + - '149999995' x-ratelimit-reset-requests: - 2ms x-ratelimit-reset-tokens: - 0s x-request-id: - - req_cdad82f2eb9f4ff6b8abf9df157d4711 + - req_a477bddc7a1f4fc8b2f579085154b442 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_run_stream_events.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_run_stream_events.yaml index c1eea4cb..223d32eb 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_run_stream_events.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_run_stream_events.yaml @@ -15,7 +15,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -38,41 +38,41 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: 'data: {"id":"chatcmpl-DVeCKbw6QQUwVKa6yGEzh7pmoKCJI","object":"chat.completion.chunk","created":1776435060,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_2f65f9541c","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"uF0b5HrfH"} + string: 'data: {"id":"chatcmpl-DWmaCKbOgMg9h5SbR4dBAVpjBLpFa","object":"chat.completion.chunk","created":1776705620,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_255abcd69b","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"ShhspAEi7"} - data: {"id":"chatcmpl-DVeCKbw6QQUwVKa6yGEzh7pmoKCJI","object":"chat.completion.chunk","created":1776435060,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_2f65f9541c","choices":[{"index":0,"delta":{"content":"5"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"R8Exxjo3HR"} + data: {"id":"chatcmpl-DWmaCKbOgMg9h5SbR4dBAVpjBLpFa","object":"chat.completion.chunk","created":1776705620,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_255abcd69b","choices":[{"index":0,"delta":{"content":"5"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"vwY95B6xoo"} - data: {"id":"chatcmpl-DVeCKbw6QQUwVKa6yGEzh7pmoKCJI","object":"chat.completion.chunk","created":1776435060,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_2f65f9541c","choices":[{"index":0,"delta":{"content":" - +"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"lkPDMfXaR"} + data: {"id":"chatcmpl-DWmaCKbOgMg9h5SbR4dBAVpjBLpFa","object":"chat.completion.chunk","created":1776705620,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_255abcd69b","choices":[{"index":0,"delta":{"content":" + +"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"tfgkjDbRK"} - data: {"id":"chatcmpl-DVeCKbw6QQUwVKa6yGEzh7pmoKCJI","object":"chat.completion.chunk","created":1776435060,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_2f65f9541c","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"tIhh09676V"} + data: {"id":"chatcmpl-DWmaCKbOgMg9h5SbR4dBAVpjBLpFa","object":"chat.completion.chunk","created":1776705620,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_255abcd69b","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"LNsxfW9Y5e"} - data: {"id":"chatcmpl-DVeCKbw6QQUwVKa6yGEzh7pmoKCJI","object":"chat.completion.chunk","created":1776435060,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_2f65f9541c","choices":[{"index":0,"delta":{"content":"5"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"PYxZ0CYZOf"} + data: {"id":"chatcmpl-DWmaCKbOgMg9h5SbR4dBAVpjBLpFa","object":"chat.completion.chunk","created":1776705620,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_255abcd69b","choices":[{"index":0,"delta":{"content":"5"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Ut8DHd0YO2"} - data: {"id":"chatcmpl-DVeCKbw6QQUwVKa6yGEzh7pmoKCJI","object":"chat.completion.chunk","created":1776435060,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_2f65f9541c","choices":[{"index":0,"delta":{"content":" - equals"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"N6L3"} + data: {"id":"chatcmpl-DWmaCKbOgMg9h5SbR4dBAVpjBLpFa","object":"chat.completion.chunk","created":1776705620,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_255abcd69b","choices":[{"index":0,"delta":{"content":" + equals"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"RI9Q"} - data: {"id":"chatcmpl-DVeCKbw6QQUwVKa6yGEzh7pmoKCJI","object":"chat.completion.chunk","created":1776435060,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_2f65f9541c","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"JqqraUJAfG"} + data: {"id":"chatcmpl-DWmaCKbOgMg9h5SbR4dBAVpjBLpFa","object":"chat.completion.chunk","created":1776705620,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_255abcd69b","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"vXWhbZruQV"} - data: {"id":"chatcmpl-DVeCKbw6QQUwVKa6yGEzh7pmoKCJI","object":"chat.completion.chunk","created":1776435060,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_2f65f9541c","choices":[{"index":0,"delta":{"content":"10"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"B0dVRvoMT"} + data: {"id":"chatcmpl-DWmaCKbOgMg9h5SbR4dBAVpjBLpFa","object":"chat.completion.chunk","created":1776705620,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_255abcd69b","choices":[{"index":0,"delta":{"content":"10"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"M6hg08str"} - data: {"id":"chatcmpl-DVeCKbw6QQUwVKa6yGEzh7pmoKCJI","object":"chat.completion.chunk","created":1776435060,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_2f65f9541c","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Mrz6ADFlbW"} + data: {"id":"chatcmpl-DWmaCKbOgMg9h5SbR4dBAVpjBLpFa","object":"chat.completion.chunk","created":1776705620,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_255abcd69b","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"yqVQRlclvj"} - data: {"id":"chatcmpl-DVeCKbw6QQUwVKa6yGEzh7pmoKCJI","object":"chat.completion.chunk","created":1776435060,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_2f65f9541c","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"xeSrz"} + data: {"id":"chatcmpl-DWmaCKbOgMg9h5SbR4dBAVpjBLpFa","object":"chat.completion.chunk","created":1776705620,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_255abcd69b","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"VqL6R"} - data: {"id":"chatcmpl-DVeCKbw6QQUwVKa6yGEzh7pmoKCJI","object":"chat.completion.chunk","created":1776435060,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_2f65f9541c","choices":[],"usage":{"prompt_tokens":14,"completion_tokens":8,"total_tokens":22,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"PJmGcCxPDGW"} + data: {"id":"chatcmpl-DWmaCKbOgMg9h5SbR4dBAVpjBLpFa","object":"chat.completion.chunk","created":1776705620,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_255abcd69b","choices":[],"usage":{"prompt_tokens":14,"completion_tokens":8,"total_tokens":22,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"QzXxcob2wHF"} data: [DONE] @@ -83,13 +83,13 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc04398835f80e-YYZ + - 9ef5d1ad6b29ac2e-YYZ Connection: - keep-alive Content-Type: - text/event-stream; charset=utf-8 Date: - - Fri, 17 Apr 2026 14:11:01 GMT + - Mon, 20 Apr 2026 17:20:22 GMT Server: - cloudflare Strict-Transport-Security: @@ -105,15 +105,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '211' + - '2385' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=Qvro2tsqq_WAPQL86QkrmCAT1OMs_LfSzeNZp_uXJgQ-1776435060.7215958-1.0.1.1-djj.ucRrbINzMLerQWiWa8yfqrgap3Uiubdizit17nTpPt9lwOOqmanrJvdStGw3xe8ZaNynJGKMRDalqtPQ6Gv87VQemJ2ZG2sv..y8RCVPtcNUaLaz3LvOXPKO.FDV; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:41:01 GMT + - __cf_bm=PbdL9aOz.u4wJzT7.0UZDt1jLkodIl5ARU64MrTa090-1776705620.0643613-1.0.1.1-IOkylYAj8HKQeLu6SVUTDaTPq.JoHFgL2xuK1nIvhGEct9Jri6J.kqHKIM1KhYRgMNVpZ6Dk.XCGOOhHRUtcZ3XqBHkI0i53Wq9vQe.o9uR4pLHLf9JYOSZFeZhtlP.p; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:50:22 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -129,7 +129,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_1c515036fb0e46fb9a8cb8fe2f5ad5c3 + - req_3b03ea42dee24b72a347801b5c65efee status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_run_stream_structured_output.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_run_stream_structured_output.yaml index b0bdb744..208b347b 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_run_stream_structured_output.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_run_stream_structured_output.yaml @@ -17,7 +17,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -40,50 +40,50 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: 'data: {"id":"chatcmpl-DVeCbJpoCcd2WPTJVoarX8TvKGI7X","object":"chat.completion.chunk","created":1776435077,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_2153ead53d","choices":[{"index":0,"delta":{"role":"assistant","content":null,"tool_calls":[{"index":0,"id":"call_lXVHWiweH8WD0JFS849wlOQf","type":"function","function":{"name":"final_result","arguments":""}}],"refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"t7L"} + string: 'data: {"id":"chatcmpl-DWmaPyFclUKYbDtgtL2x8CPqv0xIt","object":"chat.completion.chunk","created":1776705633,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"role":"assistant","content":null,"tool_calls":[{"index":0,"id":"call_PUnIV8lCTV6Tf4AzZAVs4fKQ","type":"function","function":{"name":"final_result","arguments":""}}],"refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"IhE"} - data: {"id":"chatcmpl-DVeCbJpoCcd2WPTJVoarX8TvKGI7X","object":"chat.completion.chunk","created":1776435077,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_2153ead53d","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\""}}]},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"f6VEC0vtaNmADM"} + data: {"id":"chatcmpl-DWmaPyFclUKYbDtgtL2x8CPqv0xIt","object":"chat.completion.chunk","created":1776705633,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\""}}]},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"OWpuYN2qSdmd6Z"} - data: {"id":"chatcmpl-DVeCbJpoCcd2WPTJVoarX8TvKGI7X","object":"chat.completion.chunk","created":1776435077,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_2153ead53d","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"name"}}]},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"V5gqlJ68Mg98t"} + data: {"id":"chatcmpl-DWmaPyFclUKYbDtgtL2x8CPqv0xIt","object":"chat.completion.chunk","created":1776705633,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"name"}}]},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"smra4OOa5Ad11"} - data: {"id":"chatcmpl-DVeCbJpoCcd2WPTJVoarX8TvKGI7X","object":"chat.completion.chunk","created":1776435077,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_2153ead53d","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\":\""}}]},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"yTDML1emQjOw"} + data: {"id":"chatcmpl-DWmaPyFclUKYbDtgtL2x8CPqv0xIt","object":"chat.completion.chunk","created":1776705633,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\":\""}}]},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"dAnoa8lCmzyT"} - data: {"id":"chatcmpl-DVeCbJpoCcd2WPTJVoarX8TvKGI7X","object":"chat.completion.chunk","created":1776435077,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_2153ead53d","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Wireless"}}]},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"5vmRakwHQ"} + data: {"id":"chatcmpl-DWmaPyFclUKYbDtgtL2x8CPqv0xIt","object":"chat.completion.chunk","created":1776705633,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Wireless"}}]},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"YarTx6JHc"} - data: {"id":"chatcmpl-DVeCbJpoCcd2WPTJVoarX8TvKGI7X","object":"chat.completion.chunk","created":1776435077,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_2153ead53d","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" - Mouse"}}]},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"mExsq50Z0ag"} + data: {"id":"chatcmpl-DWmaPyFclUKYbDtgtL2x8CPqv0xIt","object":"chat.completion.chunk","created":1776705633,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" + Mouse"}}]},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"flZVpsAg8PZ"} - data: {"id":"chatcmpl-DVeCbJpoCcd2WPTJVoarX8TvKGI7X","object":"chat.completion.chunk","created":1776435077,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_2153ead53d","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\",\""}}]},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"bt5QrxezKI73"} + data: {"id":"chatcmpl-DWmaPyFclUKYbDtgtL2x8CPqv0xIt","object":"chat.completion.chunk","created":1776705633,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\",\""}}]},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"V4yfVjqM9ZH4"} - data: {"id":"chatcmpl-DVeCbJpoCcd2WPTJVoarX8TvKGI7X","object":"chat.completion.chunk","created":1776435077,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_2153ead53d","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"price"}}]},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"fdAZvrbSRXx3"} + data: {"id":"chatcmpl-DWmaPyFclUKYbDtgtL2x8CPqv0xIt","object":"chat.completion.chunk","created":1776705633,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"price"}}]},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"PBMwXZrDiqbD"} - data: {"id":"chatcmpl-DVeCbJpoCcd2WPTJVoarX8TvKGI7X","object":"chat.completion.chunk","created":1776435077,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_2153ead53d","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\":"}}]},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"DJr3yQYAIGCnaz"} + data: {"id":"chatcmpl-DWmaPyFclUKYbDtgtL2x8CPqv0xIt","object":"chat.completion.chunk","created":1776705633,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\":"}}]},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"S0TFzzntCXd2BR"} - data: {"id":"chatcmpl-DVeCbJpoCcd2WPTJVoarX8TvKGI7X","object":"chat.completion.chunk","created":1776435077,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_2153ead53d","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"29"}}]},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"4pDbgONAO7xvk4f"} + data: {"id":"chatcmpl-DWmaPyFclUKYbDtgtL2x8CPqv0xIt","object":"chat.completion.chunk","created":1776705633,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"29"}}]},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"MWZaKG2l48FCoMj"} - data: {"id":"chatcmpl-DVeCbJpoCcd2WPTJVoarX8TvKGI7X","object":"chat.completion.chunk","created":1776435077,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_2153ead53d","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"."}}]},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":""} + data: {"id":"chatcmpl-DWmaPyFclUKYbDtgtL2x8CPqv0xIt","object":"chat.completion.chunk","created":1776705633,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"."}}]},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":""} - data: {"id":"chatcmpl-DVeCbJpoCcd2WPTJVoarX8TvKGI7X","object":"chat.completion.chunk","created":1776435077,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_2153ead53d","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"99"}}]},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"XJsiVbd62k5QJLv"} + data: {"id":"chatcmpl-DWmaPyFclUKYbDtgtL2x8CPqv0xIt","object":"chat.completion.chunk","created":1776705633,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"99"}}]},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"g8S2WUIXBC0Vg1K"} - data: {"id":"chatcmpl-DVeCbJpoCcd2WPTJVoarX8TvKGI7X","object":"chat.completion.chunk","created":1776435077,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_2153ead53d","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"}"}}]},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":""} + data: {"id":"chatcmpl-DWmaPyFclUKYbDtgtL2x8CPqv0xIt","object":"chat.completion.chunk","created":1776705633,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"}"}}]},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":""} - data: {"id":"chatcmpl-DVeCbJpoCcd2WPTJVoarX8TvKGI7X","object":"chat.completion.chunk","created":1776435077,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_2153ead53d","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"tool_calls"}],"usage":null,"obfuscation":"BO87Ed6TF8Z5Lpn"} + data: {"id":"chatcmpl-DWmaPyFclUKYbDtgtL2x8CPqv0xIt","object":"chat.completion.chunk","created":1776705633,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"tool_calls"}],"usage":null,"obfuscation":"Cero1wpUYKC0feR"} - data: {"id":"chatcmpl-DVeCbJpoCcd2WPTJVoarX8TvKGI7X","object":"chat.completion.chunk","created":1776435077,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_2153ead53d","choices":[],"usage":{"prompt_tokens":60,"completion_tokens":21,"total_tokens":81,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"thn08QyIHm"} + data: {"id":"chatcmpl-DWmaPyFclUKYbDtgtL2x8CPqv0xIt","object":"chat.completion.chunk","created":1776705633,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[],"usage":{"prompt_tokens":60,"completion_tokens":21,"total_tokens":81,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"Vd8g0o3OWW"} data: [DONE] @@ -94,13 +94,13 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc049edceeebbc-YYZ + - 9ef5d200c876eff9-YYZ Connection: - keep-alive Content-Type: - text/event-stream; charset=utf-8 Date: - - Fri, 17 Apr 2026 14:11:17 GMT + - Mon, 20 Apr 2026 17:20:33 GMT Server: - cloudflare Strict-Transport-Security: @@ -116,15 +116,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '371' + - '331' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=C17_TIwNn1QeVgQvmJiAwOdPaDHv.jwpYMQbMux0Ruw-1776435076.9405296-1.0.1.1-GM_M2hOKtp3SThw_KrBlTetVgydU_xR1KtzPiyZs1lwakfvHaK6HVw.Ydq1HlLoXnd2Y9rmkQKVXcFInMQObSYqxazIeInNLQWRDDq_xhfgMJD.l9lJ.xubwxN4uabYi; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:41:17 GMT + - __cf_bm=c3GwdK25cwvejpOIi4HW5mULQC.guwsRta4l_HHlrxQ-1776705633.4037268-1.0.1.1-JdX6f0Ye7Hr4lAyNuLL9c24.ma6eAu6Z6wAp_SfCrHq1C6G0OA5I7ZoDIzJ_78IFmKMUBm0SFZsgWbgaMtpDjgbZz72vvrmDZthQK5BGMCCc7M_ex9FjZuRat3uWIpXg; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:50:33 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -140,7 +140,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_89fab2d3748a4a6a9ebe3fa8f2f5352c + - req_380777c9567b4b5e8f4296d0e96d6706 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_run_stream_sync.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_run_stream_sync.yaml index 34d13fa4..4650ce0e 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_run_stream_sync.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_run_stream_sync.yaml @@ -15,7 +15,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -38,39 +38,39 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: 'data: {"id":"chatcmpl-DVeCKxLw1oxQCRBmVghBqPVahSzcp","object":"chat.completion.chunk","created":1776435060,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"8iT3DSQE2"} + string: 'data: {"id":"chatcmpl-DWmaBrkdySGT97yFLYWaWWWJKjGkV","object":"chat.completion.chunk","created":1776705619,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"yosSWywRQ"} - data: {"id":"chatcmpl-DVeCKxLw1oxQCRBmVghBqPVahSzcp","object":"chat.completion.chunk","created":1776435060,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"1"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"hw0N1xAZ2e"} + data: {"id":"chatcmpl-DWmaBrkdySGT97yFLYWaWWWJKjGkV","object":"chat.completion.chunk","created":1776705619,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"1"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"O5lZxtnfBx"} - data: {"id":"chatcmpl-DVeCKxLw1oxQCRBmVghBqPVahSzcp","object":"chat.completion.chunk","created":1776435060,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Yi5R85rdtG"} + data: {"id":"chatcmpl-DWmaBrkdySGT97yFLYWaWWWJKjGkV","object":"chat.completion.chunk","created":1776705619,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"8VAPNkPDXV"} - data: {"id":"chatcmpl-DVeCKxLw1oxQCRBmVghBqPVahSzcp","object":"chat.completion.chunk","created":1776435060,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"NbaU6z9WAC"} + data: {"id":"chatcmpl-DWmaBrkdySGT97yFLYWaWWWJKjGkV","object":"chat.completion.chunk","created":1776705619,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"0ELgHJFpM3"} - data: {"id":"chatcmpl-DVeCKxLw1oxQCRBmVghBqPVahSzcp","object":"chat.completion.chunk","created":1776435060,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"2"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"lGEd0wdnMM"} + data: {"id":"chatcmpl-DWmaBrkdySGT97yFLYWaWWWJKjGkV","object":"chat.completion.chunk","created":1776705619,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"2"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"trffWjFnyp"} - data: {"id":"chatcmpl-DVeCKxLw1oxQCRBmVghBqPVahSzcp","object":"chat.completion.chunk","created":1776435060,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"vD5YZyHgqC"} + data: {"id":"chatcmpl-DWmaBrkdySGT97yFLYWaWWWJKjGkV","object":"chat.completion.chunk","created":1776705619,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"YkwP6ukX1P"} - data: {"id":"chatcmpl-DVeCKxLw1oxQCRBmVghBqPVahSzcp","object":"chat.completion.chunk","created":1776435060,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"y1FsYj3zem"} + data: {"id":"chatcmpl-DWmaBrkdySGT97yFLYWaWWWJKjGkV","object":"chat.completion.chunk","created":1776705619,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"SiWtn18aaY"} - data: {"id":"chatcmpl-DVeCKxLw1oxQCRBmVghBqPVahSzcp","object":"chat.completion.chunk","created":1776435060,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"3"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"uTNvs2YVlQ"} + data: {"id":"chatcmpl-DWmaBrkdySGT97yFLYWaWWWJKjGkV","object":"chat.completion.chunk","created":1776705619,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"3"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"o6LyKL1c5p"} - data: {"id":"chatcmpl-DVeCKxLw1oxQCRBmVghBqPVahSzcp","object":"chat.completion.chunk","created":1776435060,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Zz2wBbXgky"} + data: {"id":"chatcmpl-DWmaBrkdySGT97yFLYWaWWWJKjGkV","object":"chat.completion.chunk","created":1776705619,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"w171XjGo7y"} - data: {"id":"chatcmpl-DVeCKxLw1oxQCRBmVghBqPVahSzcp","object":"chat.completion.chunk","created":1776435060,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"cy8G7"} + data: {"id":"chatcmpl-DWmaBrkdySGT97yFLYWaWWWJKjGkV","object":"chat.completion.chunk","created":1776705619,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"ej1jb"} - data: {"id":"chatcmpl-DVeCKxLw1oxQCRBmVghBqPVahSzcp","object":"chat.completion.chunk","created":1776435060,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[],"usage":{"prompt_tokens":14,"completion_tokens":8,"total_tokens":22,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"yRah5q52qoe"} + data: {"id":"chatcmpl-DWmaBrkdySGT97yFLYWaWWWJKjGkV","object":"chat.completion.chunk","created":1776705619,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[],"usage":{"prompt_tokens":14,"completion_tokens":8,"total_tokens":22,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"eV2HCWBlVag"} data: [DONE] @@ -81,13 +81,13 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc0433ddd8abe2-YYZ + - 9ef5d1aa49bdc85f-YYZ Connection: - keep-alive Content-Type: - text/event-stream; charset=utf-8 Date: - - Fri, 17 Apr 2026 14:11:00 GMT + - Mon, 20 Apr 2026 17:20:19 GMT Server: - cloudflare Strict-Transport-Security: @@ -103,15 +103,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '411' + - '195' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=1dY6wCyVrqp5N3M7TKCHp7Q5sjlgdhhYPbauP0aB1J8-1776435059.8142405-1.0.1.1-E30agjj5d3kGAN9bVTJtdn3KuvKD6WstGUKUzzY8skLWzFNns9Yv26Ths1TcRmjUQLCwfYz70x021jhORbV4ipixleagzHIhCagTuqVv5B5BLvoe0rmZI4nNcMfTKlPc; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:41:00 GMT + - __cf_bm=730kc88BysDj5DXSQz8VXpVWzh01KftsY3jOlTFfOhc-1776705619.5649538-1.0.1.1-jpFptFiKwihqSkinrAHpLiyG_S4s.2tE2wWmE3vCWVbbMSGr_Ays4J8z5dXRSAvDNG.D.FRQ0OIefn1tW9630V7wrZyS_sYZ3aDEXoZy4prDod9qR0GCWT9NL4iYWuxN; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:50:19 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -121,13 +121,13 @@ interactions: x-ratelimit-remaining-requests: - '29999' x-ratelimit-remaining-tokens: - - '149999995' + - '149999992' x-ratelimit-reset-requests: - 2ms x-ratelimit-reset-tokens: - 0s x-request-id: - - req_24e69a4f323847bbb433ab7acb8aa9dc + - req_01cfddbe903649a69af2eb3280d719ad status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_run_sync.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_run_sync.yaml index 39cf011b..9e8feeb0 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_run_sync.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_run_sync.yaml @@ -16,7 +16,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -39,8 +39,8 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeBmnPD77lAICnX3q0cT2HdM95A6\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435026,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmZqWbEm2glLJ6mIHxmOraK1MazE\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705598,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"4\",\n \"refusal\": null,\n \ \"annotations\": []\n },\n \"logprobs\": null,\n \"finish_reason\": @@ -49,18 +49,18 @@ interactions: 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_fe7a5277a8\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_a7190374f3\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc035fd967a1f8-YYZ + - 9ef5d1255ad1ec6f-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:10:26 GMT + - Mon, 20 Apr 2026 17:19:58 GMT Server: - cloudflare Strict-Transport-Security: @@ -78,15 +78,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '338' + - '489' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=vKCRVLCO.udofXwfyqt0tWOgmOYcDXvQ_o9iY.J_x7E-1776435025.893062-1.0.1.1-_t28kKJ6AoAfKkiAWtjYlif1mqROcGVJuvD7HI2gc62MZVZ_FaFGPzFdOrx_tocuhyzzXsrwUq8B_HMoA.Ce3YymB9ecnjrwv4vT3v5jfE0AL_Q5wCiPg.lKrtymqSqd; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:26 GMT + - __cf_bm=HtFSQPesvST31eZD03LROW0ClqYSeTKcg9sCzjagiic-1776705598.299767-1.0.1.1-4.aalqSDoVGybFKIXkDuzBO_EjJ83GVzZmWvyjrsQ_1H1LRsoRXdBKIbflejxfWtuN.jLIyuN4_WAdjEcJ5BgWRRpCBAjlFxzZzACIOcWi6YA.6XINKLkXg0FEBZK6dp; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:49:58 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -102,7 +102,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_31f4abada08942e498f68724216fec62 + - req_3fae5437844945abaf09a7fa629efb8e status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_stream_buffer_pattern_early_return.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_stream_buffer_pattern_early_return.yaml index cb187fb4..66bb463b 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_stream_buffer_pattern_early_return.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_stream_buffer_pattern_early_return.yaml @@ -15,7 +15,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -38,59 +38,59 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: 'data: {"id":"chatcmpl-DVeCSWTqijzC5xcfP14kbijAfmAwr","object":"chat.completion.chunk","created":1776435068,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Ejki0igxW"} + string: 'data: {"id":"chatcmpl-DWmaHPF5jpoJHsg0QvSAbgUUPcVCl","object":"chat.completion.chunk","created":1776705625,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"PB2HAZuXT"} - data: {"id":"chatcmpl-DVeCSWTqijzC5xcfP14kbijAfmAwr","object":"chat.completion.chunk","created":1776435068,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"1"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"i0HICqzDoq"} + data: {"id":"chatcmpl-DWmaHPF5jpoJHsg0QvSAbgUUPcVCl","object":"chat.completion.chunk","created":1776705625,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"1"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"vW7jKvwitL"} - data: {"id":"chatcmpl-DVeCSWTqijzC5xcfP14kbijAfmAwr","object":"chat.completion.chunk","created":1776435068,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"gpffpYBvTu"} + data: {"id":"chatcmpl-DWmaHPF5jpoJHsg0QvSAbgUUPcVCl","object":"chat.completion.chunk","created":1776705625,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Tm6dora8rS"} - data: {"id":"chatcmpl-DVeCSWTqijzC5xcfP14kbijAfmAwr","object":"chat.completion.chunk","created":1776435068,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"1yJYzGUoQJ"} + data: {"id":"chatcmpl-DWmaHPF5jpoJHsg0QvSAbgUUPcVCl","object":"chat.completion.chunk","created":1776705625,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"0sltJ9zCPb"} - data: {"id":"chatcmpl-DVeCSWTqijzC5xcfP14kbijAfmAwr","object":"chat.completion.chunk","created":1776435068,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"2"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"wuPkzBSMBo"} + data: {"id":"chatcmpl-DWmaHPF5jpoJHsg0QvSAbgUUPcVCl","object":"chat.completion.chunk","created":1776705625,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"2"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"4M6OBE0GKj"} - data: {"id":"chatcmpl-DVeCSWTqijzC5xcfP14kbijAfmAwr","object":"chat.completion.chunk","created":1776435068,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"OT2qa3aZAw"} + data: {"id":"chatcmpl-DWmaHPF5jpoJHsg0QvSAbgUUPcVCl","object":"chat.completion.chunk","created":1776705625,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"L1AKZFVYet"} - data: {"id":"chatcmpl-DVeCSWTqijzC5xcfP14kbijAfmAwr","object":"chat.completion.chunk","created":1776435068,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"eixPf3aV47"} + data: {"id":"chatcmpl-DWmaHPF5jpoJHsg0QvSAbgUUPcVCl","object":"chat.completion.chunk","created":1776705625,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"x2KyVnTnY4"} - data: {"id":"chatcmpl-DVeCSWTqijzC5xcfP14kbijAfmAwr","object":"chat.completion.chunk","created":1776435068,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"3"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"WNus3uNyXF"} + data: {"id":"chatcmpl-DWmaHPF5jpoJHsg0QvSAbgUUPcVCl","object":"chat.completion.chunk","created":1776705625,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"3"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"FuOcEOGj4W"} - data: {"id":"chatcmpl-DVeCSWTqijzC5xcfP14kbijAfmAwr","object":"chat.completion.chunk","created":1776435068,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"UBBk30Qju2"} + data: {"id":"chatcmpl-DWmaHPF5jpoJHsg0QvSAbgUUPcVCl","object":"chat.completion.chunk","created":1776705625,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"guwhBF6Co1"} - data: {"id":"chatcmpl-DVeCSWTqijzC5xcfP14kbijAfmAwr","object":"chat.completion.chunk","created":1776435068,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"WbgqRJIZhq"} + data: {"id":"chatcmpl-DWmaHPF5jpoJHsg0QvSAbgUUPcVCl","object":"chat.completion.chunk","created":1776705625,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"337YYzd9Jn"} - data: {"id":"chatcmpl-DVeCSWTqijzC5xcfP14kbijAfmAwr","object":"chat.completion.chunk","created":1776435068,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"4"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"jzl67pBzcI"} + data: {"id":"chatcmpl-DWmaHPF5jpoJHsg0QvSAbgUUPcVCl","object":"chat.completion.chunk","created":1776705625,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"4"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"LQqqOKtGQJ"} - data: {"id":"chatcmpl-DVeCSWTqijzC5xcfP14kbijAfmAwr","object":"chat.completion.chunk","created":1776435068,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"E2CFSbpzkZ"} + data: {"id":"chatcmpl-DWmaHPF5jpoJHsg0QvSAbgUUPcVCl","object":"chat.completion.chunk","created":1776705625,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"DA4GjfXdS0"} - data: {"id":"chatcmpl-DVeCSWTqijzC5xcfP14kbijAfmAwr","object":"chat.completion.chunk","created":1776435068,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"2HAF0h0KVt"} + data: {"id":"chatcmpl-DWmaHPF5jpoJHsg0QvSAbgUUPcVCl","object":"chat.completion.chunk","created":1776705625,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"2wi3IktCJS"} - data: {"id":"chatcmpl-DVeCSWTqijzC5xcfP14kbijAfmAwr","object":"chat.completion.chunk","created":1776435068,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"5"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"uk3mPRqrOy"} + data: {"id":"chatcmpl-DWmaHPF5jpoJHsg0QvSAbgUUPcVCl","object":"chat.completion.chunk","created":1776705625,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"5"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"q3sdXOVcVi"} - data: {"id":"chatcmpl-DVeCSWTqijzC5xcfP14kbijAfmAwr","object":"chat.completion.chunk","created":1776435068,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"xsrgXP2umS"} + data: {"id":"chatcmpl-DWmaHPF5jpoJHsg0QvSAbgUUPcVCl","object":"chat.completion.chunk","created":1776705625,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"JAsm42Gcg9"} - data: {"id":"chatcmpl-DVeCSWTqijzC5xcfP14kbijAfmAwr","object":"chat.completion.chunk","created":1776435068,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"dAajg"} + data: {"id":"chatcmpl-DWmaHPF5jpoJHsg0QvSAbgUUPcVCl","object":"chat.completion.chunk","created":1776705625,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"iw9CT"} - data: {"id":"chatcmpl-DVeCSWTqijzC5xcfP14kbijAfmAwr","object":"chat.completion.chunk","created":1776435068,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[],"usage":{"prompt_tokens":14,"completion_tokens":14,"total_tokens":28,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"EWgSQdrcqE"} + data: {"id":"chatcmpl-DWmaHPF5jpoJHsg0QvSAbgUUPcVCl","object":"chat.completion.chunk","created":1776705625,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[],"usage":{"prompt_tokens":14,"completion_tokens":14,"total_tokens":28,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"XIODidP8j4"} data: [DONE] @@ -101,13 +101,13 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc04698d728af6-YYZ + - 9ef5d1d0fc8daaa7-YYZ Connection: - keep-alive Content-Type: - text/event-stream; charset=utf-8 Date: - - Fri, 17 Apr 2026 14:11:08 GMT + - Mon, 20 Apr 2026 17:20:26 GMT Server: - cloudflare Strict-Transport-Security: @@ -123,15 +123,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '243' + - '220' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=zSfMzAodiOLeP5TZr5vOe8WhsPkuLxwjdNm.VLErPBk-1776435068.4045851-1.0.1.1-2vZxWH1dlErsEJgKF_d.kMWxN8DxeFzXcKbUNKUirFVVnqXjli6G7adLuzxDI6sThNjAV_8oWpruspDqKATdMvX2sV0sI3r2FZ9d7_TTgLytlmjmCdeKiYfkNNl30Y4q; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:41:08 GMT + - __cf_bm=Kn2tCJJIxxgIh77A.BrRl8Hf1PHqwr1ZZbYBSd_rpR8-1776705625.7613223-1.0.1.1-5dczSN1nQAlOM295E_uQ..8FfKkMU5IPHZU_jaVipVwM4O98Ov1Bh9qzZLULHPE0mjOSlEIpxdJNG.7Q1BpVSFcdhHOJdZnbTRaOeLhkHXLebKqas2qvBFdenxtqOC5Z; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:50:26 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -147,7 +147,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_d366b6d15ef54d3482321e629fec2581 + - req_7779cd891d654cbdadc9a3f170933e42 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_stream_early_break.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_stream_early_break.yaml index ec3e3f3b..d3939ca9 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_stream_early_break.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_stream_early_break.yaml @@ -15,7 +15,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -38,134 +38,109 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: 'data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"VhnszZrVT"} + string: 'data: {"id":"chatcmpl-DWmaGuXF5NUxppQ0k39O8Rw4aXCMA","object":"chat.completion.chunk","created":1776705624,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"ls3ht8p9S"} - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"Sure"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"PuEqqf7"} + data: {"id":"chatcmpl-DWmaGuXF5NUxppQ0k39O8Rw4aXCMA","object":"chat.completion.chunk","created":1776705624,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":"1"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"ybr5dKBMJz"} - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"!"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"t0wQFPmgYL"} + data: {"id":"chatcmpl-DWmaGuXF5NUxppQ0k39O8Rw4aXCMA","object":"chat.completion.chunk","created":1776705624,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"HIDvTJEYD5"} - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - Here"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"nALQ1k"} + data: {"id":"chatcmpl-DWmaGuXF5NUxppQ0k39O8Rw4aXCMA","object":"chat.completion.chunk","created":1776705624,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"v8iSmeSW1I"} - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - you"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"jRwvXpQ"} + data: {"id":"chatcmpl-DWmaGuXF5NUxppQ0k39O8Rw4aXCMA","object":"chat.completion.chunk","created":1776705624,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":"2"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"jSQoZN6FGT"} - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - go"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"JcBtcSKK"} + data: {"id":"chatcmpl-DWmaGuXF5NUxppQ0k39O8Rw4aXCMA","object":"chat.completion.chunk","created":1776705624,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"3kMdUILBtB"} - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":":"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"TxGyWzyOZO"} + data: {"id":"chatcmpl-DWmaGuXF5NUxppQ0k39O8Rw4aXCMA","object":"chat.completion.chunk","created":1776705624,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"HvMEut2D9w"} - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - \n\n"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"HUK9Nn"} + data: {"id":"chatcmpl-DWmaGuXF5NUxppQ0k39O8Rw4aXCMA","object":"chat.completion.chunk","created":1776705624,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":"3"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"bUATaMLUnJ"} - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"1"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"9QvAugL4nr"} + data: {"id":"chatcmpl-DWmaGuXF5NUxppQ0k39O8Rw4aXCMA","object":"chat.completion.chunk","created":1776705624,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"RfC5OdJzul"} - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"TPe7GcvafJ"} + data: {"id":"chatcmpl-DWmaGuXF5NUxppQ0k39O8Rw4aXCMA","object":"chat.completion.chunk","created":1776705624,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Cr2loYbBmv"} - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"MabvusqI1m"} + data: {"id":"chatcmpl-DWmaGuXF5NUxppQ0k39O8Rw4aXCMA","object":"chat.completion.chunk","created":1776705624,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":"4"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"JqtOJxuNFc"} - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"2"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"y7S1GhN16m"} + data: {"id":"chatcmpl-DWmaGuXF5NUxppQ0k39O8Rw4aXCMA","object":"chat.completion.chunk","created":1776705624,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"G7Rg3ljcs7"} - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"6nHj4BYVkR"} + data: {"id":"chatcmpl-DWmaGuXF5NUxppQ0k39O8Rw4aXCMA","object":"chat.completion.chunk","created":1776705624,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"xY2ruzaKY2"} - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"roI3broCT3"} + data: {"id":"chatcmpl-DWmaGuXF5NUxppQ0k39O8Rw4aXCMA","object":"chat.completion.chunk","created":1776705624,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":"5"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"eywhO2Fjhp"} - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"3"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"UJUJzeHmV2"} + data: {"id":"chatcmpl-DWmaGuXF5NUxppQ0k39O8Rw4aXCMA","object":"chat.completion.chunk","created":1776705624,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"qa6e1M1Q9I"} - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"liWqjZjXqs"} + data: {"id":"chatcmpl-DWmaGuXF5NUxppQ0k39O8Rw4aXCMA","object":"chat.completion.chunk","created":1776705624,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Sv7YKs04OD"} - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"XMaNh5zumL"} + data: {"id":"chatcmpl-DWmaGuXF5NUxppQ0k39O8Rw4aXCMA","object":"chat.completion.chunk","created":1776705624,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":"6"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"cS17gGvdqF"} - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"4"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"o26kQiTiPO"} + data: {"id":"chatcmpl-DWmaGuXF5NUxppQ0k39O8Rw4aXCMA","object":"chat.completion.chunk","created":1776705624,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"sN7G1zUGhW"} - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"csBWGHpfuf"} + data: {"id":"chatcmpl-DWmaGuXF5NUxppQ0k39O8Rw4aXCMA","object":"chat.completion.chunk","created":1776705624,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"rPLgyl5UP5"} - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"nAihEHqysY"} + data: {"id":"chatcmpl-DWmaGuXF5NUxppQ0k39O8Rw4aXCMA","object":"chat.completion.chunk","created":1776705624,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":"7"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"ArC16ZLaXn"} - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"5"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"APhcJjjT1d"} + data: {"id":"chatcmpl-DWmaGuXF5NUxppQ0k39O8Rw4aXCMA","object":"chat.completion.chunk","created":1776705624,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"QnbedSfTF5"} - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"1cjdVwcuAN"} + data: {"id":"chatcmpl-DWmaGuXF5NUxppQ0k39O8Rw4aXCMA","object":"chat.completion.chunk","created":1776705624,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"oFUATWvGXK"} - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"gM4wkAHypR"} + data: {"id":"chatcmpl-DWmaGuXF5NUxppQ0k39O8Rw4aXCMA","object":"chat.completion.chunk","created":1776705624,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":"8"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"18CkMkztJ5"} - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"6"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"KhV9HblRV1"} + data: {"id":"chatcmpl-DWmaGuXF5NUxppQ0k39O8Rw4aXCMA","object":"chat.completion.chunk","created":1776705624,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"K7UBbLCxbd"} - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"YlM0oVJSz8"} + data: {"id":"chatcmpl-DWmaGuXF5NUxppQ0k39O8Rw4aXCMA","object":"chat.completion.chunk","created":1776705624,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"D7L4WRvJsy"} - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"yezW8wSpmd"} + data: {"id":"chatcmpl-DWmaGuXF5NUxppQ0k39O8Rw4aXCMA","object":"chat.completion.chunk","created":1776705624,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":"9"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"HLtf9U8dB0"} - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"7"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"qXE2h0nBhH"} + data: {"id":"chatcmpl-DWmaGuXF5NUxppQ0k39O8Rw4aXCMA","object":"chat.completion.chunk","created":1776705624,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"x49n0s79LF"} - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"XVb4KkCUdf"} + data: {"id":"chatcmpl-DWmaGuXF5NUxppQ0k39O8Rw4aXCMA","object":"chat.completion.chunk","created":1776705624,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"AQP0bJ1OQs"} - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"I99QRGIcqr"} + data: {"id":"chatcmpl-DWmaGuXF5NUxppQ0k39O8Rw4aXCMA","object":"chat.completion.chunk","created":1776705624,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":"10"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"HKjGGHWuh"} - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"8"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"EM2xYgjOFd"} + data: {"id":"chatcmpl-DWmaGuXF5NUxppQ0k39O8Rw4aXCMA","object":"chat.completion.chunk","created":1776705624,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"INDCwz3zfI"} - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"L52OQ1K2R0"} + data: {"id":"chatcmpl-DWmaGuXF5NUxppQ0k39O8Rw4aXCMA","object":"chat.completion.chunk","created":1776705624,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"3JpHy"} - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"hBaCI4ij0C"} - - - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"9"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"3D61ihZWGF"} - - - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"7HUpt13jt3"} - - - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"RKhZedp6B0"} - - - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"10"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"4AC7nb3o8"} - - - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"3ksbWcV4fd"} - - - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"8H7cl"} - - - data: {"id":"chatcmpl-DVeCPiR8rwoxZAsVlc5VOxzTfa3I8","object":"chat.completion.chunk","created":1776435065,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[],"usage":{"prompt_tokens":14,"completion_tokens":36,"total_tokens":50,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"SvwosKwUvo"} + data: {"id":"chatcmpl-DWmaGuXF5NUxppQ0k39O8Rw4aXCMA","object":"chat.completion.chunk","created":1776705624,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[],"usage":{"prompt_tokens":14,"completion_tokens":29,"total_tokens":43,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"4lDAMOjKBh"} data: [DONE] @@ -176,13 +151,13 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc04565e6136a5-YYZ + - 9ef5d1c6dbbaab1c-YYZ Connection: - keep-alive Content-Type: - text/event-stream; charset=utf-8 Date: - - Fri, 17 Apr 2026 14:11:06 GMT + - Mon, 20 Apr 2026 17:20:24 GMT Server: - cloudflare Strict-Transport-Security: @@ -198,15 +173,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '551' + - '248' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=XfReO6og35pj_5cyx.Y7aMUHt_y4ui8uilrVDBpbA.A-1776435065.3334138-1.0.1.1-.ui2m87DZ6gYkpk2XASpeypRn6RYvydzZEgKa0oDp2pJDTXG6Oib.M7GH2RD3216KCybnkPwxi2oMk5qJmF7Z..C3WtvRHz9RWvJwicFKp29LpDFsnNQPJQpeZvllBD9; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:41:06 GMT + - __cf_bm=OC7PZJySy6QI69S2GNU296zop1Bjcoq7HCwUJWCo08A-1776705624.1378484-1.0.1.1-ir1vwpzsCGN2zjd1a2HO3xifCyLd2MT7iqeluMQvkx.jGIpl6kjuNmASoHT9byUZP.KrQXJdYNDzVph8pOm1zjnfZMYR.U2K41eJUo.Ikpha2sPHeIqR4wjSxsm5HuGz; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:50:24 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -222,7 +197,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_213e34f33ba14af5945c9d8eee51159c + - req_70c74af6f00d450bbf130e36095e5aae status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_structured_output.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_structured_output.yaml index a9f495f7..29d4aee7 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_structured_output.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_structured_output.yaml @@ -16,7 +16,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -39,18 +39,18 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeC4UaHRg6mmwawxF9t9Qmzk6Ych\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435044,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmZzLg4YsYkz3pFDVloO3zuPZmnO\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705607,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": null,\n \"tool_calls\": [\n {\n - \ \"id\": \"call_HHxXnQn4CynB5bKz2kDXfayQ\",\n \"type\": + \ \"id\": \"call_ZapnsZ9OCzq42FupRBWJn6Si\",\n \"type\": \"function\",\n \"function\": {\n \"name\": \"final_result\",\n \ \"arguments\": \"{\\\"answer\\\":25,\\\"explanation\\\":\\\"The - sum of 10 and 15 is calculated by adding both numbers together: 10 + 15 = - 25.\\\"}\"\n }\n }\n ],\n \"refusal\": null,\n - \ \"annotations\": []\n },\n \"logprobs\": null,\n \"finish_reason\": - \"tool_calls\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 57,\n - \ \"completion_tokens\": 43,\n \"total_tokens\": 100,\n \"prompt_tokens_details\": + sum of 10 and 15 is calculated by adding the two numbers together: 10 + 15 + = 25.\\\"}\"\n }\n }\n ],\n \"refusal\": + null,\n \"annotations\": []\n },\n \"logprobs\": null,\n + \ \"finish_reason\": \"tool_calls\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 57,\n \"completion_tokens\": 44,\n \"total_tokens\": 101,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": @@ -59,13 +59,13 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc03d468c2ab72-YYZ + - 9ef5d15dda2e4a29-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:10:45 GMT + - Mon, 20 Apr 2026 17:20:08 GMT Server: - cloudflare Strict-Transport-Security: @@ -79,19 +79,19 @@ interactions: alt-svc: - h3=":443"; ma=86400 content-length: - - '1183' + - '1186' openai-organization: - braintrust-data openai-processing-ms: - - '980' + - '1052' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=8bPW2WLdH8zABekbVM9X5mLrfqIsNqTJmEzGmi.K7XY-1776435044.5508523-1.0.1.1-f2ZlbtOlvVGhTXRdSxTDxjh9SbxlkPIe0NsKcOKjDURlWbwrk1qs246CLfXpscS_598W0LWEFuqewOc4.VVlVpge1seUCXVVW5KnaKgkVp4rTFam6Gmj4r8QN5kB0LlW; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:45 GMT + - __cf_bm=80MFLltunokELvxIgsPkzjIsAgzOiy0F33IA23z9y_U-1776705607.3340497-1.0.1.1-szLnEj.vWrccY3HOFv.0AkvhWbemDfPP9xEhPqAfzdskPxyy0dWk5aq4g.vxrFrp8lR3H63QoF2LXXivAYBZ6Jay_GrA.k0azgOm0nff7rSbby_sN2_ih39eON_66swN; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:50:08 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -107,7 +107,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_dabc2ce7711241149f46a74192b3ce7e + - req_a4aedadf1a674039a83abc95fa4afdba status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_binary_content.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_binary_content.yaml index d00e1c8c..590a21e3 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_binary_content.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_binary_content.yaml @@ -1,94 +1,4 @@ interactions: -- request: - body: '{"rows": [{"_is_merge": true, "id": "9eb7a618-8dcf-40a8-a91a-00f4eda9ad4d", - "log_id": "g", "metrics": {"completion_tokens": 8.0, "duration": 1.5808079242706299, - "end": 1776435063.57685, "prompt_cache_creation_tokens": 0.0, "prompt_cached_tokens": - 0.0, "prompt_tokens": 14.0, "start": 1776435061.996042, "time_to_first_token": - 1.579916000366211, "tokens": 22.0}, "output": {"finish_reason": "stop", "kind": - "response", "metadata": null, "model_name": "gpt-4o-mini-2024-07-18", "parts": - [{"content": "1, 2, 3.", "id": null, "part_kind": "text", "provider_details": - null, "provider_name": null}], "provider_details": {"finish_reason": "stop", - "timestamp": "2026-04-17 14:11:02+00:00"}, "provider_name": "openai", "provider_response_id": - "chatcmpl-DVeCMjVZIIA6rT7bbSffo43jztj50", "provider_url": "https://api.openai.com/v1/", - "run_id": null, "timestamp": "2026-04-17 14:11:03.575856+00:00", "usage": {"cache_audio_read_tokens": - 0, "cache_read_tokens": 0, "cache_write_tokens": 0, "details": {"accepted_prediction_tokens": - 0, "audio_tokens": 0, "reasoning_tokens": 0, "rejected_prediction_tokens": 0}, - "input_audio_tokens": 0, "input_tokens": 14, "output_audio_tokens": 0, "output_tokens": - 8}}, "project_id": "test-pydantic-ai-integration", "root_span_id": "18c3fc56-b2da-47e3-8ca0-66b5f8d36192", - "span_id": "e2190315-36e7-4bce-a388-1b1e49aae5a9", "span_parents": ["f8eb85c2-f627-483c-a989-85ca91d616cb"]},{"_is_merge": - true, "id": "768fc0a0-d899-4306-9b3a-ed8e74a74dad", "log_id": "g", "metrics": - {"completion_tokens": 8.0, "duration": 1.5809988975524902, "end": 1776435063.576978, - "prompt_cache_creation_tokens": 0.0, "prompt_cached_tokens": 0.0, "prompt_tokens": - 14.0, "start": 1776435061.995979, "time_to_first_token": 1.5799798965454102, - "tokens": 22.0}, "output": {"finish_reason": "stop", "kind": "response", "metadata": - null, "model_name": "gpt-4o-mini-2024-07-18", "parts": [{"content": "1, 2, 3.", - "id": null, "part_kind": "text", "provider_details": null, "provider_name": - null}], "provider_details": {"finish_reason": "stop", "timestamp": "2026-04-17 - 14:11:02+00:00"}, "provider_name": "openai", "provider_response_id": "chatcmpl-DVeCMjVZIIA6rT7bbSffo43jztj50", - "provider_url": "https://api.openai.com/v1/", "run_id": null, "timestamp": "2026-04-17 - 14:11:03.575856+00:00", "usage": {"cache_audio_read_tokens": 0, "cache_read_tokens": - 0, "cache_write_tokens": 0, "details": {"accepted_prediction_tokens": 0, "audio_tokens": - 0, "reasoning_tokens": 0, "rejected_prediction_tokens": 0}, "input_audio_tokens": - 0, "input_tokens": 14, "output_audio_tokens": 0, "output_tokens": 8}}, "project_id": - "test-pydantic-ai-integration", "root_span_id": "18c3fc56-b2da-47e3-8ca0-66b5f8d36192", - "span_id": "f8eb85c2-f627-483c-a989-85ca91d616cb", "span_parents": ["18c3fc56-b2da-47e3-8ca0-66b5f8d36192"]}], - "api_version": 2}' - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Length: - - '2813' - User-Agent: - - python-requests/2.33.1 - method: POST - uri: https://staging-api.braintrust.dev/logs3 - response: - body: - string: '{"Code":"ForbiddenError","Message":"Missing read access to project_log - id test-pydantic-ai-integration, or the project_log does not exist [user_email=abhijeet@braintrustdata.com] - [user_org=braintrustdata.com] [timestamp=1776435070.442]","InternalTraceId":"69e23f7e000000003cf6258de65e98d3","Path":"/logs3","Service":"api"}' - headers: - Connection: - - keep-alive - Content-Type: - - application/json; charset=utf-8 - Date: - - Fri, 17 Apr 2026 14:11:10 GMT - Via: - - 1.1 829010acd0fdda0ad4dee0ccb1db7af4.cloudfront.net (CloudFront), 1.1 a44cf9ed8a499212c53e0b8f57aa31f4.cloudfront.net - (CloudFront) - X-Amz-Cf-Id: - - YFgz6LYCoLX1mfCz3NysXv16fwOb2NqudB3VUVt7BAHvVYZBk4OqGA== - X-Amz-Cf-Pop: - - YTO53-P2 - - YTO50-P1 - X-Amzn-Trace-Id: - - Root=1-69e23f7e-7a102872597b95e44eb9ef26;Parent=769502cb07c99421;Sampled=0;Lineage=1:fc3b4ff1:0 - X-Cache: - - Error from cloudfront - access-control-allow-credentials: - - 'true' - access-control-expose-headers: - - x-bt-cursor,x-bt-found-existing,x-bt-query-plan,x-bt-api-duration-ms,x-bt-brainstore-duration-ms,x-bt-internal-trace-id - content-length: - - '322' - etag: - - W/"142-kqBjXgvXB2B0/LwjInT8rApXvj0" - vary: - - Origin, Accept-Encoding - x-amz-apigw-id: - - b97byF6joAMEMzA= - x-amzn-RequestId: - - 5685c32b-7d97-4e0a-ba26-511b34a73d03 - x-bt-internal-trace-id: - - 69e23f7e000000003cf6258de65e98d3 - status: - code: 403 - message: Forbidden - request: body: '{"messages":[{"role":"user","content":[{"image_url":{"url":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACklEQVR4nGMAAQAABQABDQottAAAAABJRU5ErkJggg=="},"type":"image_url"},{"text":"What color is this image?","type":"text"}]}],"model":"gpt-4o-mini","max_completion_tokens":50,"stream":false}' @@ -106,7 +16,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -129,28 +39,29 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeCUFPkKlLP9OTrAsg6PCGg3qMIs\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435070,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmrsQsAOUNbVoilSffnwixSQP7mg\",\n \"object\": + \"chat.completion\",\n \"created\": 1776706716,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"The image is black.\",\n \"refusal\": - null,\n \"annotations\": []\n },\n \"logprobs\": null,\n - \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": - 8513,\n \"completion_tokens\": 5,\n \"total_tokens\": 8518,\n \"prompt_tokens_details\": - {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + \"assistant\",\n \"content\": \"The image appears to be a solid color, + specifically black.\",\n \"refusal\": null,\n \"annotations\": + []\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n + \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 8513,\n \"completion_tokens\": + 12,\n \"total_tokens\": 8525,\n \"prompt_tokens_details\": {\n \"cached_tokens\": + 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_a7190374f3\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_4debc47fe0\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc04734f77ac3f-YYZ + - 9ef5ec709e36e080-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:11:10 GMT + - Mon, 20 Apr 2026 17:38:36 GMT Server: - cloudflare Strict-Transport-Security: @@ -164,19 +75,19 @@ interactions: alt-svc: - h3=":443"; ma=86400 content-length: - - '829' + - '869' openai-organization: - braintrust-data openai-processing-ms: - - '417' + - '551' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=bXDrB.1Tlk4H8u.deZFXcAWl9pIUHQ5sxlyWS5CHVU8-1776435069.9710972-1.0.1.1-HETd8.QF1gAlX5yx2y.Ake.2n.9__tqiUV64vFDq4PPU7aOkuJtYL25eOKlakutz0nXNxqfnpV31J.RQl9uNBDZDf9gddZyI.ADPiKrSqrwSz9nDAopvovnd1ogJOVIh; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:41:10 GMT + - __cf_bm=z8GCCnsSE28gNX5PP0SpCdRb32dHoELlLAIfZdMxg8g-1776706716.2516613-1.0.1.1-BnuJNWsAZrU1Ik8hE87NdfczXGY5fUHLBvPElXfHHFRBbXIGI_rdCKuKEFTsgkIN0PGzDSNMDAhNkMzxGaXWUUv5FHX1S0Nz86EHJNCflqdPiKLZnOvW7b_tVrB1qN2j; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 18:08:36 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-input-images: @@ -198,7 +109,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_6699c0906c464544919da95a19403f79 + - req_2e2c68cff4b247349450cff53fcda60b status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_custom_settings.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_custom_settings.yaml index d757cae1..bf2e8b7b 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_custom_settings.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_custom_settings.yaml @@ -15,7 +15,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -38,8 +38,8 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeCJbqntni0HcfZm1cl8OKP9PUT5\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435059,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmaBuNVxPt08zKkybFnIyyaT2vBF\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705619,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"Hello! How can I assist you today?\",\n \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": @@ -48,18 +48,18 @@ interactions: {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_fe7a5277a8\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_a7190374f3\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc042e484336bc-YYZ + - 9ef5d1a678e3f4cc-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:10:59 GMT + - Mon, 20 Apr 2026 17:20:19 GMT Server: - cloudflare Strict-Transport-Security: @@ -77,15 +77,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '362' + - '320' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=AeZCvNfWaU4UwOZyC3rqxpio6K5OVDlAF.QNJCYo9pw-1776435058.927155-1.0.1.1-cGNQKRMfEfPBhzXRHQGDSU_NQATgJKID2POM7Q0_z5.QYQpzbQpKJLDyT1eQvitiyUwm_CGVxx8.LNlyLrQ_PhMXdIRfdwyPFLHLZKhKT4CX0kr.3Ty9cXV3nrPhdVWU; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:59 GMT + - __cf_bm=ohJIB6SpFzdoPibZIgDnTSMiAStCRpxwyans87ymST0-1776705618.9536862-1.0.1.1-k6ZjX_gc.EAFoXR8Cn3qmS4re_ekP2F5G5b_B1.SEGtk4LYMIxHnwzj.xaeww6DNxhDSZzb8bFjEh1zq107aNuXY0cNLsNJqwY7vvtRK2TOlOtpphjFmSCr9OMoo5TTm; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:50:19 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -101,7 +101,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_6bce463b3e9241c090cec521061da14f + - req_d11f017772c6470eb022ef01f81d0235 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_document_input.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_document_input.yaml index 28b72e7a..26af26f7 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_document_input.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_document_input.yaml @@ -1,94 +1,4 @@ interactions: -- request: - body: '{"rows": [{"_is_merge": true, "id": "9eb7a618-8dcf-40a8-a91a-00f4eda9ad4d", - "log_id": "g", "metrics": {"completion_tokens": 8.0, "duration": 1.5808079242706299, - "end": 1776435063.57685, "prompt_cache_creation_tokens": 0.0, "prompt_cached_tokens": - 0.0, "prompt_tokens": 14.0, "start": 1776435061.996042, "time_to_first_token": - 1.579916000366211, "tokens": 22.0}, "output": {"finish_reason": "stop", "kind": - "response", "metadata": null, "model_name": "gpt-4o-mini-2024-07-18", "parts": - [{"content": "1, 2, 3.", "id": null, "part_kind": "text", "provider_details": - null, "provider_name": null}], "provider_details": {"finish_reason": "stop", - "timestamp": "2026-04-17 14:11:02+00:00"}, "provider_name": "openai", "provider_response_id": - "chatcmpl-DVeCMjVZIIA6rT7bbSffo43jztj50", "provider_url": "https://api.openai.com/v1/", - "run_id": null, "timestamp": "2026-04-17 14:11:03.575856+00:00", "usage": {"cache_audio_read_tokens": - 0, "cache_read_tokens": 0, "cache_write_tokens": 0, "details": {"accepted_prediction_tokens": - 0, "audio_tokens": 0, "reasoning_tokens": 0, "rejected_prediction_tokens": 0}, - "input_audio_tokens": 0, "input_tokens": 14, "output_audio_tokens": 0, "output_tokens": - 8}}, "project_id": "test-pydantic-ai-integration", "root_span_id": "18c3fc56-b2da-47e3-8ca0-66b5f8d36192", - "span_id": "e2190315-36e7-4bce-a388-1b1e49aae5a9", "span_parents": ["f8eb85c2-f627-483c-a989-85ca91d616cb"]},{"_is_merge": - true, "id": "768fc0a0-d899-4306-9b3a-ed8e74a74dad", "log_id": "g", "metrics": - {"completion_tokens": 8.0, "duration": 1.5809988975524902, "end": 1776435063.576978, - "prompt_cache_creation_tokens": 0.0, "prompt_cached_tokens": 0.0, "prompt_tokens": - 14.0, "start": 1776435061.995979, "time_to_first_token": 1.5799798965454102, - "tokens": 22.0}, "output": {"finish_reason": "stop", "kind": "response", "metadata": - null, "model_name": "gpt-4o-mini-2024-07-18", "parts": [{"content": "1, 2, 3.", - "id": null, "part_kind": "text", "provider_details": null, "provider_name": - null}], "provider_details": {"finish_reason": "stop", "timestamp": "2026-04-17 - 14:11:02+00:00"}, "provider_name": "openai", "provider_response_id": "chatcmpl-DVeCMjVZIIA6rT7bbSffo43jztj50", - "provider_url": "https://api.openai.com/v1/", "run_id": null, "timestamp": "2026-04-17 - 14:11:03.575856+00:00", "usage": {"cache_audio_read_tokens": 0, "cache_read_tokens": - 0, "cache_write_tokens": 0, "details": {"accepted_prediction_tokens": 0, "audio_tokens": - 0, "reasoning_tokens": 0, "rejected_prediction_tokens": 0}, "input_audio_tokens": - 0, "input_tokens": 14, "output_audio_tokens": 0, "output_tokens": 8}}, "project_id": - "test-pydantic-ai-integration", "root_span_id": "18c3fc56-b2da-47e3-8ca0-66b5f8d36192", - "span_id": "f8eb85c2-f627-483c-a989-85ca91d616cb", "span_parents": ["18c3fc56-b2da-47e3-8ca0-66b5f8d36192"]}], - "api_version": 2}' - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Length: - - '2813' - User-Agent: - - python-requests/2.33.1 - method: POST - uri: https://staging-api.braintrust.dev/logs3 - response: - body: - string: '{"Code":"ForbiddenError","Message":"Missing read access to project_log - id test-pydantic-ai-integration, or the project_log does not exist [user_email=abhijeet@braintrustdata.com] - [user_org=braintrustdata.com] [timestamp=1776435071.685]","InternalTraceId":"69e23f7f00000000047d47df2e22ce51","Path":"/logs3","Service":"api"}' - headers: - Connection: - - keep-alive - Content-Type: - - application/json; charset=utf-8 - Date: - - Fri, 17 Apr 2026 14:11:11 GMT - Via: - - 1.1 8757e4d26d0f26e2f05769a88e8a5ace.cloudfront.net (CloudFront), 1.1 9b2dd59575ce5b546a63dbe37a7ae2de.cloudfront.net - (CloudFront) - X-Amz-Cf-Id: - - mtegZ9BDlbbA-RIpBzD_AAc3DN93WKgB8BNuedfLnw_0ZfImhOPQUQ== - X-Amz-Cf-Pop: - - YTO53-P2 - - YTO50-P1 - X-Amzn-Trace-Id: - - Root=1-69e23f7f-561f1e50284c21366eb438a4;Parent=6f443dad89f7529b;Sampled=0;Lineage=1:fc3b4ff1:0 - X-Cache: - - Error from cloudfront - access-control-allow-credentials: - - 'true' - access-control-expose-headers: - - x-bt-cursor,x-bt-found-existing,x-bt-query-plan,x-bt-api-duration-ms,x-bt-brainstore-duration-ms,x-bt-internal-trace-id - content-length: - - '322' - etag: - - W/"142-Hq+Yi+tUrpSWkPFRQyYbm3FGgXY" - vary: - - Origin, Accept-Encoding - x-amz-apigw-id: - - b97b_HaGoAMEE3w= - x-amzn-RequestId: - - ed25ff49-7644-422b-be80-8c123e184a5f - x-bt-internal-trace-id: - - 69e23f7f00000000047d47df2e22ce51 - status: - code: 403 - message: Forbidden - request: body: '{"messages":[{"role":"user","content":[{"file":{"file_data":"data:application/pdf;base64,JVBERi0xLjQKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4+ZW5kb2JqIDIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDE+PmVuZG9iaiAzIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vQ29udGVudHMgNCAwIFI+PmVuZG9iaiA0IDAgb2JqPDwvTGVuZ3RoIDQ0Pj5zdHJlYW0KQlQgL0YxIDEyIFRmIDEwMCA3MDAgVGQgKFRlc3QgRG9jdW1lbnQpIFRqIEVUCmVuZHN0cmVhbQplbmRvYmoKeHJlZgowIDUKMDAwMDAwMDAwMCA2NTUzNSBmCjAwMDAwMDAwMDkgMDAwMDAgbgowMDAwMDAwMDU4IDAwMDAwIG4KMDAwMDAwMDExNSAwMDAwMCBuCjAwMDAwMDAyMTQgMDAwMDAgbgp0cmFpbGVyPDwvU2l6ZSA1L1Jvb3QgMSAwIFI+PgpzdGFydHhyZWYKMzA3CiUlRU9G","filename":"filename.pdf"},"type":"file"},{"text":"What is in this document?","type":"text"}]}],"model":"gpt-4o-mini","max_completion_tokens":150,"stream":false}' @@ -106,7 +16,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -129,17 +39,17 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeCUVh7FNdtrvZ4noXZy0G3IY2YI\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435070,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmrt89VBbkBY7h4O7xClCgLh9E9w\",\n \"object\": + \"chat.completion\",\n \"created\": 1776706717,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"The document contains a section labeled - \\\"Test Document,\\\" but there is no further content or details provided - in the parsed text. If you need specific information about the document's - contents or if there are images or specific sections you'd like to explore, - please let me know!\",\n \"refusal\": null,\n \"annotations\": - []\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n - \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 231,\n \"completion_tokens\": - 52,\n \"total_tokens\": 283,\n \"prompt_tokens_details\": {\n \"cached_tokens\": + \"assistant\",\n \"content\": \"The document appears to be a test document, + but there's no specific content provided for analysis. If you need detailed + information about the contents, you could share the document or specify a + particular section you're interested in, and I can help summarize or explain + further.\",\n \"refusal\": null,\n \"annotations\": []\n },\n + \ \"logprobs\": null,\n \"finish_reason\": \"stop\"\n }\n ],\n + \ \"usage\": {\n \"prompt_tokens\": 231,\n \"completion_tokens\": 50,\n + \ \"total_tokens\": 281,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": @@ -148,13 +58,13 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc04771cc228db-YYZ + - 9ef5ec753b18e21a-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:11:12 GMT + - Mon, 20 Apr 2026 17:38:38 GMT Server: - cloudflare Strict-Transport-Security: @@ -168,19 +78,19 @@ interactions: alt-svc: - h3=":443"; ma=86400 content-length: - - '1089' + - '1088' openai-organization: - braintrust-data openai-processing-ms: - - '1375' + - '1150' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=KQAiXHZ8G9msMNhr9ub0wlm65FWtLgkCI8q6NRdvxv8-1776435070.5803003-1.0.1.1-IPKXJQf_pwvBCD1eEJC1Wsb7ennpT4f.5hvIcMiBVQRvzFa_FSg.I4TOGIyRdZ9m7.bBHPUAhi8g0yv6PtbIlgjCVCwExEjNXkxtxy2lJWYckFy2FcQ0PTqT52_xNNqx; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:41:12 GMT + - __cf_bm=TM.YgdiIsdDeccA5GW2yzHz5cf492ARGsGW_oJLuipo-1776706716.9971585-1.0.1.1-WJHXuV_dLEhkBOHueYGDo9LOvEeGwhjvul3n_JZXnFCLKGABEc65P2SMGT18aUm9.Yp0NlNZLVS.ExUMG_nEvD_JUDV1PUywrukSuu8y5chiHP8BbQHzeMIBAHAUWqhT; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 18:08:38 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -190,13 +100,13 @@ interactions: x-ratelimit-remaining-requests: - '29999' x-ratelimit-remaining-tokens: - - '149999227' + - '149999225' x-ratelimit-reset-requests: - 2ms x-ratelimit-reset-tokens: - 0s x-request-id: - - req_27b52ee94da64a9b8d0e5562ba90b93b + - req_1c6b340a1d1948019e60d4883f669a4b status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_error_handling.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_error_handling.yaml index 47056ca4..fb02a5d9 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_error_handling.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_error_handling.yaml @@ -16,7 +16,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -47,7 +47,7 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc04faedf6ac09-YYZ + - 9ef5d24dbfb1ab0c-YYZ Connection: - keep-alive Content-Length: @@ -55,7 +55,7 @@ interactions: Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:11:31 GMT + - Mon, 20 Apr 2026 17:20:45 GMT Server: - cloudflare Strict-Transport-Security: @@ -69,15 +69,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '27' + - '13' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=.vAdpm5zw2GRZI1dVcqrkiL3d8fFGI5hX35lAU3TmSo-1776435091.6622107-1.0.1.1-IDNhCrH876TvR7gzKQ918NL2XT.sWH68kMd.kz1w7J5RjOjwKXDCs2T2THIsM4FdvNwH7cB8Z1ns7pMRZacue7EH_bbC5qe2pWSdH1a_ZOX8et2Un80PymrT97DWEM_g; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:41:31 GMT + - __cf_bm=suVPnwOpvA1vAGD3Ox4WTlUr7v0RQrd.3b.5vekuWGQ-1776705645.721592-1.0.1.1-5KniWRh8fKNWNAV9yuebRX22MNO2wubW4tbLqWr3330mZpwkno3FiH5DY5JqePrxlVZEzjvHytRcMGwTJWBmYpxLFG30TjVd8G68ujwdUH3j.T5zSOe5gPTIs_dfPLxV; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:50:45 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-input-images: @@ -99,7 +99,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_60058533169941c080979d8551d03db1 + - req_645fa1a32f70400ca888e83979677faf status: code: 400 message: Bad Request diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_long_context.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_long_context.yaml index 372b71d0..011e8ba3 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_long_context.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_long_context.yaml @@ -27,7 +27,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -50,8 +50,8 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeCp2KzREUtmDqFvr6kvyk372eza\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435091,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmabiymYQftHWO3hRlwCmB0LYBjt\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705645,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"The word 'fox' appears 20 times in the text.\",\n \"refusal\": null,\n \"annotations\": []\n },\n @@ -61,18 +61,18 @@ interactions: 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_42fcdba006\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_aac876239c\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc04f789e6076d-YYZ + - 9ef5d249894bab7e-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:11:31 GMT + - Mon, 20 Apr 2026 17:20:45 GMT Server: - cloudflare Strict-Transport-Security: @@ -90,15 +90,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '369' + - '448' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=sKwrE6RHuvlSTcL8rbMi2b3U9uhCX_g7bSeKGEPEdIA-1776435091.1263003-1.0.1.1-C74hMbS1UQUABrsIN2_i3M0Q41wgLl8xCZxWGcPpPJtStr1uU3cvDyZCg_7VIr4QySsQY4UeLRc5.j6mKf8TcZxmuDr0wQ28CLk7iE.5aDzpebMM7WAWL37jed8bFAUz; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:41:31 GMT + - __cf_bm=7ZTrMxAYKw1caUzx3hK.FD8EALZttx76p4S6xKwklyo-1776705645.0473905-1.0.1.1-YJH5KmFcevdBiUoJlibh524G_M.tAtWuE5Azvd5Jl0YZDU3_PBuGS0r.GRLQUYb_eoFljutVC990ehCFUeB7akXEFbH09_1.Cec7g2Y_UFfxNGQiAe7cZN0i5KApUuJl; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:50:45 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -114,7 +114,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_27de56323fd5469fa5d508043ca94d3d + - req_f089c62041e948449a6148a0f3aabc5d status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_message_history.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_message_history.yaml index ffe00257..5fcf24b2 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_message_history.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_message_history.yaml @@ -15,7 +15,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -38,8 +38,8 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeCGh1pMoCJZY92EzzRnKSqxhWxt\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435056,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWma5CXRgb8PNCNxYhFIcYEr8bTcw\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705613,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"Nice to meet you, Alice! How can I assist you today?\",\n \"refusal\": null,\n \"annotations\": @@ -49,18 +49,18 @@ interactions: 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_fe7a5277a8\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_a7190374f3\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc041b284674a5-YYZ + - 9ef5d1851df1a21a-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:10:57 GMT + - Mon, 20 Apr 2026 17:20:14 GMT Server: - cloudflare Strict-Transport-Security: @@ -78,15 +78,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '660' + - '777' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=XkWDVe.WWI8foStTjpo00o_pNoL80PdsfzxceW0rT3s-1776435055.8685446-1.0.1.1-HY4xc35YfSnXoOKaC4.OwdSiJ08jqTjbkPIMTS_ntTx9jmbK5cKIqxLb4ffwID.l2xVi_oTkbJuKzMYcU2CbGDFyF9hV_YQ1QCEBOp6pQpfVnDKMq.2ZNRM.kRa5v5hq; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:57 GMT + - __cf_bm=GyI_FvV0PM_Hbx51vWEsjk.6IQh3DWfjukNiXvEibFY-1776705613.620603-1.0.1.1-P89GGA3vFfkxVsP9yr4qt9D6rffM4qbjatixmxrzYE0f4wS9gGeUw3o9SEREeNnioVK59FIq5oXKtHYXwz0XxtnUzusga4u4BRgcBZGWA9wJOMFTfBZjNfkCXk.evmJw; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:50:14 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -96,13 +96,13 @@ interactions: x-ratelimit-remaining-requests: - '29999' x-ratelimit-remaining-tokens: - - '149999992' + - '149999995' x-ratelimit-reset-requests: - 2ms x-ratelimit-reset-tokens: - 0s x-request-id: - - req_f4133ff8113540a398b795ed462111f2 + - req_09db8c7cde3e4e2f978d384a2376a90f status: code: 200 message: OK @@ -122,11 +122,11 @@ interactions: Content-Type: - application/json Cookie: - - __cf_bm=XkWDVe.WWI8foStTjpo00o_pNoL80PdsfzxceW0rT3s-1776435055.8685446-1.0.1.1-HY4xc35YfSnXoOKaC4.OwdSiJ08jqTjbkPIMTS_ntTx9jmbK5cKIqxLb4ffwID.l2xVi_oTkbJuKzMYcU2CbGDFyF9hV_YQ1QCEBOp6pQpfVnDKMq.2ZNRM.kRa5v5hq + - __cf_bm=GyI_FvV0PM_Hbx51vWEsjk.6IQh3DWfjukNiXvEibFY-1776705613.620603-1.0.1.1-P89GGA3vFfkxVsP9yr4qt9D6rffM4qbjatixmxrzYE0f4wS9gGeUw3o9SEREeNnioVK59FIq5oXKtHYXwz0XxtnUzusga4u4BRgcBZGWA9wJOMFTfBZjNfkCXk.evmJw Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -149,29 +149,29 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeCH9N6anO0J30fs1VhwURic64vN\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435057,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWma6g95bjCBsgTMMYwHClf8qnqXU\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705614,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"Your name is Alice. How can I help - you today, Alice?\",\n \"refusal\": null,\n \"annotations\": - []\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n - \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 38,\n \"completion_tokens\": - 14,\n \"total_tokens\": 52,\n \"prompt_tokens_details\": {\n \"cached_tokens\": + you further?\",\n \"refusal\": null,\n \"annotations\": []\n + \ },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n }\n + \ ],\n \"usage\": {\n \"prompt_tokens\": 38,\n \"completion_tokens\": + 12,\n \"total_tokens\": 50,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_fe7a5277a8\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_1cd0c2195a\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc04233e5ea3f1-YYZ + - 9ef5d18b6fffde44-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:10:57 GMT + - Mon, 20 Apr 2026 17:20:18 GMT Server: - cloudflare Strict-Transport-Security: @@ -185,11 +185,11 @@ interactions: alt-svc: - h3=":443"; ma=86400 content-length: - - '859' + - '854' openai-organization: - braintrust-data openai-processing-ms: - - '483' + - '3997' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: @@ -209,7 +209,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_432f9b61bbbe426ebba41c1d245308eb + - req_b772225b22964075b1b9e8dd0d00928b status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_model_settings_in_metadata.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_model_settings_in_metadata.yaml index 678bca8d..07870f6d 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_model_settings_in_metadata.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_model_settings_in_metadata.yaml @@ -15,7 +15,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -38,8 +38,8 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeC6Iq1B9Tw56kz2y3b5EjYxoRbl\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435046,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWma0l0jEAnOcVs7o1VZXY039YQCA\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705608,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"Hello! How can I assist you today?\",\n \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": @@ -48,18 +48,18 @@ interactions: {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_fe7a5277a8\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_a7190374f3\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc03dfa9aef337-YYZ + - 9ef5d165ce8d180e-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:10:46 GMT + - Mon, 20 Apr 2026 17:20:09 GMT Server: - cloudflare Strict-Transport-Security: @@ -77,15 +77,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '355' + - '328' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=J13vsHVi.bmwwEfcjPALXvG2UqtXYcIaSRPZKjt9nmo-1776435046.3470476-1.0.1.1-S.FODCBqYg_httYdtA_69HDGw6juLgfUQHkl0dy.2NvvZYhxZpw92ZldIq1208QvI0hX3vdq0c4sJs4jD0oVNkRxr5sxl7a9SdTI3FU55Sey9NfEBHe85oYlf9cFov9P; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:46 GMT + - __cf_bm=Pi1csUlbTCjs6tZYq32.llybYdMtxs3iMCabHggQSg4-1776705608.6020117-1.0.1.1-jVMRpveaY.5gh2AM8Xj2fCrGXOPlxM0hcPidxJR.7vqgBamCqiRPBWk1CTG8A1chAbzdbLPymGTTh2eny6RzezTlQ3jeiqFfGFci8aW_fbW_ju97h5.61mSjqJ3JFGnB; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:50:09 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -101,7 +101,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_42b66a3fc81f4e5cb4a7565a60ca29d0 + - req_cb28e55a05464f34921665bfb0fb6280 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_model_settings_override_in_input.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_model_settings_override_in_input.yaml index e850db7c..70491de1 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_model_settings_override_in_input.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_model_settings_override_in_input.yaml @@ -15,7 +15,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -38,41 +38,40 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeC8QQaKw1OejtIZJXD1gFb9dWQr\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435048,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWma1F6gl3erYtFwE1Kx75EGnlGu3\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705609,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"Once upon a time, in a small village - nestled between two towering mountains, there lived a curious girl named Lila. - Lila had an insatiable thirst for adventure and dreams that soared higher - than the peaks surrounding her home. She often spent her days exploring the - meadows and forests, collecting interesting stones and talking to the animals.\\n\\nOne - sunny afternoon, while wandering deeper into the woods than she ever had before, - Lila stumbled upon a hidden glade filled with vibrant, glowing flowers. The - colors were like nothing she had ever seen\u2014violets that shimmered with - silver, reds that glowed like embers, and blues that sparkled like the night - sky. In the center of the glade stood an ancient tree, its trunk wide and - gnarled, with branches that stretched far above, adorned with blossoms that - dripped light.\\n\\nAs she approached the tree, an old woman emerged from - behind it. Her hair was as white as snow, and her eyes sparkled with the wisdom - of\",\n \"refusal\": null,\n \"annotations\": []\n },\n - \ \"logprobs\": null,\n \"finish_reason\": \"length\"\n }\n ],\n - \ \"usage\": {\n \"prompt_tokens\": 11,\n \"completion_tokens\": 200,\n - \ \"total_tokens\": 211,\n \"prompt_tokens_details\": {\n \"cached_tokens\": + nestled between rolling hills and dense forests, there lived a young girl + named Lila. Lila was known for her adventurous spirit and insatiable curiosity. + Every day after school, she would explore the woods, searching for hidden + pathways and secret glades.\\n\\nOne sunny afternoon, as Lila wandered deeper + into the forest than ever before, she stumbled upon an ancient oak tree. Its + gnarled branches stretched high into the sky, and its trunk was wide enough + for her to wrap her arms around it twice. As she approached, Lila noticed + a faint glow emanating from a small hollow at the base of the tree.\\n\\nIntrigued, + she knelt down and peered inside. To her astonishment, she found a shimmering, + golden key resting on a bed of moss. The moment she picked it up, a soft voice + filled the air around her. \u201CYou have found the key to the Whispering + Glade,\u201D it said. \u201CBut\",\n \"refusal\": null,\n \"annotations\": + []\n },\n \"logprobs\": null,\n \"finish_reason\": \"length\"\n + \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 11,\n \"completion_tokens\": + 200,\n \"total_tokens\": 211,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_fe7a5277a8\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_f9565ce549\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc03e99c8f3870-YYZ + - 9ef5d169a9ae4b56-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:10:52 GMT + - Mon, 20 Apr 2026 17:20:12 GMT Server: - cloudflare Strict-Transport-Security: @@ -86,19 +85,19 @@ interactions: alt-svc: - h3=":443"; ma=86400 content-length: - - '1774' + - '1715' openai-organization: - braintrust-data openai-processing-ms: - - '4086' + - '2744' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=sgsB48.i6FfJSlbd_0lrbUtRAAolf5h_ag44UZKRHIo-1776435047.937362-1.0.1.1-vz6daLyVXOqx43kEZn9LmVk4NuHpXuAjQZrbvPQDXOqZhqanUlBzlueApKT7RBw63NOhdYJGjMpCbHH6Gs2joSIznhOIyyvkNdOw74qW.BjtpTMK4xwVrb9Xll_CtIu6; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:52 GMT + - __cf_bm=9g48ieHBurucGqoPH8qV_6PZ.IKNfzCCiXpLqL8zlZ8-1776705609.2300427-1.0.1.1-oIPRnPCc00BzgbVvliDGXgmM6FXwarOF5oyIPvIjBUfEFuJsQNMTJDnrCUXYTgH1YqXU2LMu3euHNaAhMgM..nionpsy3MFQ7tUFLHBQqTd7NXNxl.lLylidTs52WdCV; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:50:12 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -114,7 +113,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_deb69b4aa3fb4916b30c27913e35876c + - req_e87140f5199346e6bdca11a442b32ab2 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_prefill.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_prefill.yaml index f3a0eb56..74c56a07 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_prefill.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_prefill.yaml @@ -1,84 +1,4 @@ interactions: -- request: - body: '{"rows": [{"_is_merge": false, "context": {"caller_filename": "/Users/abhijeetprasad/workspace/braintrust-sdk-python/py/.nox/test_pydantic_ai_integration-latest/lib/python3.14/site-packages/pydantic_ai/direct.py", - "caller_functionname": "_consume_async_stream", "caller_lineno": 384}, "created": - "2026-04-17T14:11:25.985359+00:00", "id": "d5d60ba6-54bd-4623-9e2b-2faa647770c9", - "input": {"instrument": null, "messages": [{"instructions": null, "kind": "request", - "metadata": null, "parts": [{"content": "Hello", "part_kind": "user-prompt", - "timestamp": "2026-04-17 14:11:25.979607+00:00"}], "run_id": null, "timestamp": - null}], "model": "openai:gpt-4o-mini", "model_request_parameters": null, "model_settings": - null}, "log_id": "g", "metadata": {"model": "gpt-4o-mini", "provider": "openai"}, - "metrics": {"start": 1776435085.985357}, "project_id": "test-pydantic-ai-integration", - "root_span_id": "7244eee1-cc67-4fc7-a4d8-028ed419932d", "span_attributes": {"exec_counter": - 99, "name": "model_request_stream", "type": "task"}, "span_id": "9c33f03c-f65d-4112-821d-e00ffb4e85ab", - "span_parents": ["e95b8f26-bd34-4a59-8d82-7d3825f30de3"]},{"_is_merge": false, - "context": {"caller_filename": "/Users/abhijeetprasad/workspace/braintrust-sdk-python/py/.nox/test_pydantic_ai_integration-latest/lib/python3.14/site-packages/pydantic_ai/direct.py", - "caller_functionname": "_consume_async_stream", "caller_lineno": 384}, "created": - "2026-04-17T14:11:25.985494+00:00", "id": "a41906f8-8739-4fbb-860e-2cf5d72a31c7", - "input": {"messages": [{"instructions": null, "kind": "request", "metadata": - null, "parts": [{"content": "Hello", "part_kind": "user-prompt", "timestamp": - "2026-04-17 14:11:25.979607+00:00"}], "run_id": null, "timestamp": null}]}, - "log_id": "g", "metadata": {"model": "gpt-4o-mini", "provider": "openai"}, "metrics": - {"start": 1776435085.985493}, "project_id": "test-pydantic-ai-integration", - "root_span_id": "7244eee1-cc67-4fc7-a4d8-028ed419932d", "span_attributes": {"exec_counter": - 100, "name": "chat gpt-4o-mini", "type": "llm"}, "span_id": "1ec781e0-0f61-4f87-a4d7-7060b3b9c94d", - "span_parents": ["9c33f03c-f65d-4112-821d-e00ffb4e85ab"]}], "api_version": 2}' - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Length: - - '2164' - User-Agent: - - python-requests/2.33.1 - method: POST - uri: https://staging-api.braintrust.dev/logs3 - response: - body: - string: '{"Code":"ForbiddenError","Message":"Missing read access to project_log - id test-pydantic-ai-integration, or the project_log does not exist [user_email=abhijeet@braintrustdata.com] - [user_org=braintrustdata.com] [timestamp=1776435090.233]","InternalTraceId":"69e23f92000000007fb1656a3f23a3fb","Path":"/logs3","Service":"api"}' - headers: - Connection: - - keep-alive - Content-Type: - - application/json; charset=utf-8 - Date: - - Fri, 17 Apr 2026 14:11:30 GMT - Via: - - 1.1 829010acd0fdda0ad4dee0ccb1db7af4.cloudfront.net (CloudFront), 1.1 dc63ed289fa4d9a64b4cc2f12891a350.cloudfront.net - (CloudFront) - X-Amz-Cf-Id: - - phP6BxX1TR_EoV5nJb8LQRktHJsaXnEuOYnoZadjagCetGAnF5XoFg== - X-Amz-Cf-Pop: - - YTO53-P2 - - YTO50-P1 - X-Amzn-Trace-Id: - - Root=1-69e23f92-67b50d014677524e5b7436b0;Parent=039a5393de963575;Sampled=0;Lineage=1:fc3b4ff1:0 - X-Cache: - - Error from cloudfront - access-control-allow-credentials: - - 'true' - access-control-expose-headers: - - x-bt-cursor,x-bt-found-existing,x-bt-query-plan,x-bt-api-duration-ms,x-bt-brainstore-duration-ms,x-bt-internal-trace-id - content-length: - - '322' - etag: - - W/"142-7UwpQIDwkJUQgxbIy+fVBvFENYs" - vary: - - Origin, Accept-Encoding - x-amz-apigw-id: - - b97e4FntoAMEuyw= - x-amzn-RequestId: - - 2964a3e4-5da3-4b1b-99d5-ce7f907f00a5 - x-bt-internal-trace-id: - - 69e23f92000000007fb1656a3f23a3fb - status: - code: 403 - message: Forbidden - request: body: '{"messages":[{"role":"user","content":"Write a haiku about coding."},{"role":"assistant","content":"Here is a haiku:"},{"role":"user","content":"Write a haiku about coding."}],"model":"gpt-4o-mini","max_completion_tokens":200,"stream":false}' @@ -96,7 +16,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -119,29 +39,29 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeCnJ09qDOylgH10sOwdr1efaRss\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435089,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWms1b7p0xOa06V6t7oykfGWH2Lk5\",\n \"object\": + \"chat.completion\",\n \"created\": 1776706725,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"Fingers dance on keys, \\nLogic flows - like silent streams, \\nLines of code take shape.\",\n \"refusal\": + in lines of light, \\nDreams in code take flight.\",\n \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": null,\n \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": - 35,\n \"completion_tokens\": 20,\n \"total_tokens\": 55,\n \"prompt_tokens_details\": + 35,\n \"completion_tokens\": 22,\n \"total_tokens\": 57,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_fe7a5277a8\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_93a2164d78\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc04ee9e05a1e1-YYZ + - 9ef5ecab5a3e3a53-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:11:30 GMT + - Mon, 20 Apr 2026 17:38:46 GMT Server: - cloudflare Strict-Transport-Security: @@ -159,15 +79,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '600' + - '549' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=3EZRaEblNE2sHeFs_5wX1H7nFT3t9PKQS4jSnXxYLVY-1776435089.6940992-1.0.1.1-wog9saTB1tbbfnNjFJUD0_fg79o.Irg.G.7yUXhfSP3mWNibDmWVxENIpf0FL.ILCm13YlYyJpRGnU6Iu9p3iUZIANWPzIucDb3dboLikm6uyYlR6bhJ.MEfdueFd0.F; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:41:30 GMT + - __cf_bm=mClQ0A8PPhzoW2Px1X6LAcGq9MAl1.4TvR1FhYHL5Yk-1776706725.6569138-1.0.1.1-n5KTJ9LrleBtBPi30ywK_cjPUq1KSNddexZScOreooOpV1kirevEItOdUbSNZuZLMq_k0ATFyfqqq1ElaEkH.JzuohjJ2Mtbt9SqWJf6scvyV275b185Wcr8zQo0RjBd; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 18:08:46 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -183,7 +103,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_ce94f3d1c6ef4ea2b79a3067ec6fdd85 + - req_5ee6a2cf28af45a0a665d07dcd70d83c status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_short_max_tokens.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_short_max_tokens.yaml index 9eb19294..21e07c29 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_short_max_tokens.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_short_max_tokens.yaml @@ -15,7 +15,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -38,8 +38,8 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeCoOlgcY6cDLIYVKbdHi1RmjMQR\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435090,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmaafir3lCB2wAYqpfPmZGaD7LHI\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705644,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"Artificial Intelligence (AI)\",\n \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": null,\n @@ -48,18 +48,18 @@ interactions: {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_fe7a5277a8\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_77c1b30b18\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc04f3bfafa0c2-YYZ + - 9ef5d245cc91ccd9-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:11:30 GMT + - Mon, 20 Apr 2026 17:20:44 GMT Server: - cloudflare Strict-Transport-Security: @@ -77,15 +77,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '379' + - '361' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=tWztffI4dYdVIyU2tg0PyR_v4mkzqZSfsOFCmDcUeJw-1776435090.5196683-1.0.1.1-qsoJTfQviRSllxO6zmptI5T0yHXmcFSyiTiiINmKySnpT9ZpvmTRoHurAYlmYkk0lNWT4d4OpqSVALQAetKztrcdj1Dcroq0k6X7QTU0XJt.hVaFKNj4G6q1rkYfH8nt; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:41:30 GMT + - __cf_bm=BC.vphBghE907DXLLsl7LBDOVjnsX2lR33Tw6ZpzO9g-1776705644.4440122-1.0.1.1-uP54f4vyMCn1ev0u0u6GE3QfY1vE4QLbfyJR4IgI.S8iHCDIa6G2W74Yb7taWimaycxvdFOYJC3kuduoTDv9hnac2gYxC3Ms8JiBYbQpA7NsZwDQcc1_2i9Tzf_PBMmT; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:50:44 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -101,7 +101,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_4cae9a5736bb4cbdb0ddd41d7674214d + - req_1ad69913d4cd4c00b1f8d3958333e020 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_stop_sequences.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_stop_sequences.yaml index bc7306d1..1e56a657 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_stop_sequences.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_stop_sequences.yaml @@ -1,84 +1,4 @@ interactions: -- request: - body: '{"rows": [{"_is_merge": false, "context": {"caller_filename": "/Users/abhijeetprasad/workspace/braintrust-sdk-python/py/.nox/test_pydantic_ai_integration-latest/lib/python3.14/site-packages/pydantic_ai/direct.py", - "caller_functionname": "_consume_async_stream", "caller_lineno": 384}, "created": - "2026-04-17T14:11:25.985359+00:00", "id": "d5d60ba6-54bd-4623-9e2b-2faa647770c9", - "input": {"instrument": null, "messages": [{"instructions": null, "kind": "request", - "metadata": null, "parts": [{"content": "Hello", "part_kind": "user-prompt", - "timestamp": "2026-04-17 14:11:25.979607+00:00"}], "run_id": null, "timestamp": - null}], "model": "openai:gpt-4o-mini", "model_request_parameters": null, "model_settings": - null}, "log_id": "g", "metadata": {"model": "gpt-4o-mini", "provider": "openai"}, - "metrics": {"start": 1776435085.985357}, "project_id": "test-pydantic-ai-integration", - "root_span_id": "7244eee1-cc67-4fc7-a4d8-028ed419932d", "span_attributes": {"exec_counter": - 99, "name": "model_request_stream", "type": "task"}, "span_id": "9c33f03c-f65d-4112-821d-e00ffb4e85ab", - "span_parents": ["e95b8f26-bd34-4a59-8d82-7d3825f30de3"]},{"_is_merge": false, - "context": {"caller_filename": "/Users/abhijeetprasad/workspace/braintrust-sdk-python/py/.nox/test_pydantic_ai_integration-latest/lib/python3.14/site-packages/pydantic_ai/direct.py", - "caller_functionname": "_consume_async_stream", "caller_lineno": 384}, "created": - "2026-04-17T14:11:25.985494+00:00", "id": "a41906f8-8739-4fbb-860e-2cf5d72a31c7", - "input": {"messages": [{"instructions": null, "kind": "request", "metadata": - null, "parts": [{"content": "Hello", "part_kind": "user-prompt", "timestamp": - "2026-04-17 14:11:25.979607+00:00"}], "run_id": null, "timestamp": null}]}, - "log_id": "g", "metadata": {"model": "gpt-4o-mini", "provider": "openai"}, "metrics": - {"start": 1776435085.985493}, "project_id": "test-pydantic-ai-integration", - "root_span_id": "7244eee1-cc67-4fc7-a4d8-028ed419932d", "span_attributes": {"exec_counter": - 100, "name": "chat gpt-4o-mini", "type": "llm"}, "span_id": "1ec781e0-0f61-4f87-a4d7-7060b3b9c94d", - "span_parents": ["9c33f03c-f65d-4112-821d-e00ffb4e85ab"]}], "api_version": 2}' - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Length: - - '2164' - User-Agent: - - python-requests/2.33.1 - method: POST - uri: https://staging-api.braintrust.dev/logs3 - response: - body: - string: '{"Code":"ForbiddenError","Message":"Missing read access to project_log - id test-pydantic-ai-integration, or the project_log does not exist [user_email=abhijeet@braintrustdata.com] - [user_org=braintrustdata.com] [timestamp=1776435087.901]","InternalTraceId":"69e23f8f0000000064d6d6dfaf1c8170","Path":"/logs3","Service":"api"}' - headers: - Connection: - - keep-alive - Content-Type: - - application/json; charset=utf-8 - Date: - - Fri, 17 Apr 2026 14:11:27 GMT - Via: - - 1.1 cf658ee9f945547220eb3f4e1f7ef2fe.cloudfront.net (CloudFront), 1.1 ed31b4e68abf63ec3ae0c1e539b4d67c.cloudfront.net - (CloudFront) - X-Amz-Cf-Id: - - vJVywXZCvY_7lbHBGbpcBHR1s4TYn11GXcYNHzl-gzRk72NhPg-Aow== - X-Amz-Cf-Pop: - - YTO53-P2 - - YTO50-P1 - X-Amzn-Trace-Id: - - Root=1-69e23f8f-0ca211092021949c2886371b;Parent=040cecc74801747d;Sampled=0;Lineage=1:fc3b4ff1:0 - X-Cache: - - Error from cloudfront - access-control-allow-credentials: - - 'true' - access-control-expose-headers: - - x-bt-cursor,x-bt-found-existing,x-bt-query-plan,x-bt-api-duration-ms,x-bt-brainstore-duration-ms,x-bt-internal-trace-id - content-length: - - '322' - etag: - - W/"142-Guj0Hqnv9ftkcGpwbmud75o91jQ" - vary: - - Origin, Accept-Encoding - x-amz-apigw-id: - - b97ehHgaIAMEu4Q= - x-amzn-RequestId: - - be041ea5-747d-4e4d-b52b-45dc49fae759 - x-bt-internal-trace-id: - - 69e23f8f0000000064d6d6dfaf1c8170 - status: - code: 403 - message: Forbidden - request: body: '{"messages":[{"role":"user","content":"Write a short story about a robot."}],"model":"gpt-4o-mini","max_completion_tokens":500,"stop":["END","\n\n"],"stream":false}' headers: @@ -95,7 +15,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -118,33 +38,34 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeClT9zEw1AfeawwJfFqQPCYvaXS\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435087,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmrzFqzdzHXO4SWim1vsJDg29FHb\",\n \"object\": + \"chat.completion\",\n \"created\": 1776706723,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"In a bustling city overshadowed by - towering skyscrapers, there lived a robot named Elara. Unlike the robust construction - bots that built the buildings or the sleek AI-driven vehicles that zoomed - through traffic, Elara was designed for a singular purpose: companionship. - She was a prototype intended to bridge the gap between humans and technology, - equipped with the ability to understand emotions and respond with empathy.\",\n - \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": - null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": - 15,\n \"completion_tokens\": 77,\n \"total_tokens\": 92,\n \"prompt_tokens_details\": - {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + \"assistant\",\n \"content\": \"In the quaint little town of Eldrin + Hollow, nestled between rolling hills and shimmering rivers, there lived a + robot named C1-9Y, affectionately known as \\\"Cy.\\\" Built by a kind-hearted + inventor named Elara, Cy was designed to assist with everyday tasks, but he + was unlike any other robot in the town. Instead of following a rigid programming + system, Cy had a unique feature: a curiosity circuit that allowed him to learn + and adapt from his surroundings. \",\n \"refusal\": null,\n \"annotations\": + []\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n + \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 15,\n \"completion_tokens\": + 95,\n \"total_tokens\": 110,\n \"prompt_tokens_details\": {\n \"cached_tokens\": + 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_fe7a5277a8\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_23d0326066\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc04e05e1152cf-YYZ + - 9ef5eca01e30de74-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:11:29 GMT + - Mon, 20 Apr 2026 17:38:45 GMT Server: - cloudflare Strict-Transport-Security: @@ -158,19 +79,19 @@ interactions: alt-svc: - h3=":443"; ma=86400 content-length: - - '1229' + - '1263' openai-organization: - braintrust-data openai-processing-ms: - - '2092' + - '1571' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=EAv863a8d1FRSjmjuGJMIIK_xwHwZ2Ffz0PoOdy.VuY-1776435087.4113066-1.0.1.1-P83kKVaHw4tyBTcEbPOyvY3WI_TSgENTPxfhwbHnHWOg.1dUvt9ZE7kM8AHJIoQSTUfyuVBt30.7KMVNcsubHwSFBUyPHKiekprdfRIp89OkUnPeIXdzzS5leSq.MhHF; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:41:29 GMT + - __cf_bm=P1PMZkBN6uzXyTC86lPGkB2V_IhxUWYZIDQdUxxD3Sc-1776706723.8520415-1.0.1.1-gfJ8llTuKnB0wYolsmS.BTj50BjOJ2UbJgXkxK2rQvDJ3g0QfH5_z8P.Op8SNqzevZXIl6U2JE.E0qtHvD3Btf68F0LrelLAVH4a6O_d3Zdb62zSX1DbHKv1NiIz6EdV; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 18:08:45 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -186,7 +107,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_bec261c2182a93e8a44cd1fc07c7c1d4 + - req_cd22f9927b3e4e95b46a57a34e88eb38 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_system_prompt_in_metadata.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_system_prompt_in_metadata.yaml index 1ede00a6..32d8b71d 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_system_prompt_in_metadata.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_system_prompt_in_metadata.yaml @@ -16,7 +16,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -39,33 +39,31 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeCCPFGepZjtryiy7VSkSCACK3iK\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435052,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWma4gGITNdPO0pvypu3uKLgYRbwY\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705612,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"Ahoy, matey! I be not havin' the ability - to check the weather for ye in real time. But fear not! Ye can check yer local - weather forecast on the high seas of the internet or consult the trusty weather - app on yer magical communication device. If ye be wantin' to know the general - conditions for a certain time o' year or a region, I can surely help with - that! What say ye?\",\n \"refusal\": null,\n \"annotations\": - []\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n - \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 28,\n \"completion_tokens\": - 87,\n \"total_tokens\": 115,\n \"prompt_tokens_details\": {\n \"cached_tokens\": - 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + \"assistant\",\n \"content\": \"Arrr, matey! I be not havin' access + to the current weather conditions, as me knowledge be landlocked to October + 2023. But ye can check ye trusty weather app or look to the skies! What be + ye seekin\u2019 to know \u2018bout the weather, eh?\",\n \"refusal\": + null,\n \"annotations\": []\n },\n \"logprobs\": null,\n + \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 28,\n \"completion_tokens\": 60,\n \"total_tokens\": 88,\n \"prompt_tokens_details\": + {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_fe7a5277a8\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_48f18beaba\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc04047ace713b-YYZ + - 9ef5d17e3b82b405-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:10:55 GMT + - Mon, 20 Apr 2026 17:20:13 GMT Server: - cloudflare Strict-Transport-Security: @@ -79,19 +77,19 @@ interactions: alt-svc: - h3=":443"; ma=86400 content-length: - - '1178' + - '1039' openai-organization: - braintrust-data openai-processing-ms: - - '2913' + - '856' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=OYZDjvsPzLloNrYS4ujoo5YbQDbRmACvNdunV4.BRZ8-1776435052.2352858-1.0.1.1-dlSdOXIUxst4tbYS2P8sJHxt1ESGYqgtEDCM.G.ZR6St1Yvy7NwpmZ2HSV1tCunZke5z9k93.1h22kWHmanaHHiViVgUwRlSeaD6IJ5ulLbBnEr3AENEQiP_LlGuxxOc; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:55 GMT + - __cf_bm=JZlKBGwz6IxUvEYTsNXAm5vdeNHLJpuricdFrL9S60Y-1776705612.5188093-1.0.1.1-.GQyaYabN6yTIrl3TIycwIepbhvLCg3Xitf6cyaB.ZasrtDc.9JSvPGBwnFo4_bmD9ZcHqg1pYP489twUZSslcQXSYi95.6loQbleXqgQ5.OzLwL0NestyEOXILZRDVw; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:50:13 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -107,7 +105,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_ef51638f1892429ba1540d4a4f9870ce + - req_f47725fe14ea4805b4bff129b29ff66d status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_tool_execution.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_tool_execution.yaml index 58d6a945..a5b99db3 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_tool_execution.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_tool_execution.yaml @@ -18,7 +18,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -41,11 +41,11 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeCWQPcj4sfTER9wCGNtxrBUkr0a\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435072,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmruGunOTd39yj4h7buzch7AIPGd\",\n \"object\": + \"chat.completion\",\n \"created\": 1776706718,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": null,\n \"tool_calls\": [\n {\n - \ \"id\": \"call_tbqz6HjQJaofzHDmsGPeG4Mu\",\n \"type\": + \ \"id\": \"call_BJS7r1VQ8lKGvC62qLMcE2Cr\",\n \"type\": \"function\",\n \"function\": {\n \"name\": \"calculate\",\n \ \"arguments\": \"{\\\"operation\\\":\\\"multiply\\\",\\\"a\\\":127,\\\"b\\\":49}\"\n \ }\n }\n ],\n \"refusal\": null,\n \"annotations\": @@ -55,18 +55,18 @@ interactions: 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_83e2dd34fc\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_a7190374f3\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc0480ef5cab2a-YYZ + - 9ef5ec7f587939dd-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:11:12 GMT + - Mon, 20 Apr 2026 17:38:39 GMT Server: - cloudflare Strict-Transport-Security: @@ -84,15 +84,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '671' + - '487' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=a46RRewryTLhH6qWVCXRCQ5irvR1rt1tsOH.u8OxF2E-1776435072.1483204-1.0.1.1-A9aNt9qTIBrumpZNl0rI.HtAZFWTmpHYT0mlr_XtuFq3hOxYGvxsv_VbE_6E9vPV8uhTs8tB.m71q_SxY1hp0Kcc_2B4MX9._SsJf0PTTnJXOGNrAJ_y.RJEvcr48yVf; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:41:12 GMT + - __cf_bm=9WpnCuUAUo4EYlIDIBOrVfvS.zE1GHwrB_sSdci1UhY-1776706718.6139734-1.0.1.1-sQ2gApM2qs2L_TAMccqmclDmdGA.3IdFE7xvHRvYHPcL69_e4pPSvEIbFQSARnJC1L_xa.RwZleWia3Jq0OjOOJVHcrEaHV6SYiRpTUf9o5xGNFpI.5lMFV6U8sFO61Q; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 18:08:39 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -108,12 +108,12 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_1b0f28c90c97486095f9f286503f1f03 + - req_94309012abbb46909de28adce97d76f3 status: code: 200 message: OK - request: - body: '{"messages":[{"role":"user","content":"What is 127 multiplied by 49?"},{"role":"assistant","content":null,"tool_calls":[{"id":"call_tbqz6HjQJaofzHDmsGPeG4Mu","type":"function","function":{"name":"calculate","arguments":"{\"operation\":\"multiply\",\"a\":127,\"b\":49}"}}]},{"role":"tool","tool_call_id":"call_tbqz6HjQJaofzHDmsGPeG4Mu","content":"6223.0"}],"model":"gpt-4o-mini","max_completion_tokens":200,"stream":false,"tool_choice":"auto","tools":[{"type":"function","function":{"name":"calculate","description":"Perform + body: '{"messages":[{"role":"user","content":"What is 127 multiplied by 49?"},{"role":"assistant","content":null,"tool_calls":[{"id":"call_BJS7r1VQ8lKGvC62qLMcE2Cr","type":"function","function":{"name":"calculate","arguments":"{\"operation\":\"multiply\",\"a\":127,\"b\":49}"}}]},{"role":"tool","tool_call_id":"call_BJS7r1VQ8lKGvC62qLMcE2Cr","content":"6223.0"}],"model":"gpt-4o-mini","max_completion_tokens":200,"stream":false,"tool_choice":"auto","tools":[{"type":"function","function":{"name":"calculate","description":"Perform a mathematical calculation.","parameters":{"additionalProperties":false,"properties":{"operation":{"description":"The mathematical operation (add, subtract, multiply, divide)","type":"string"},"a":{"description":"First number","type":"number"},"b":{"description":"Second number","type":"number"}},"required":["operation","a","b"],"type":"object"},"strict":true}}]}' @@ -129,11 +129,11 @@ interactions: Content-Type: - application/json Cookie: - - __cf_bm=a46RRewryTLhH6qWVCXRCQ5irvR1rt1tsOH.u8OxF2E-1776435072.1483204-1.0.1.1-A9aNt9qTIBrumpZNl0rI.HtAZFWTmpHYT0mlr_XtuFq3hOxYGvxsv_VbE_6E9vPV8uhTs8tB.m71q_SxY1hp0Kcc_2B4MX9._SsJf0PTTnJXOGNrAJ_y.RJEvcr48yVf + - __cf_bm=9WpnCuUAUo4EYlIDIBOrVfvS.zE1GHwrB_sSdci1UhY-1776706718.6139734-1.0.1.1-sQ2gApM2qs2L_TAMccqmclDmdGA.3IdFE7xvHRvYHPcL69_e4pPSvEIbFQSARnJC1L_xa.RwZleWia3Jq0OjOOJVHcrEaHV6SYiRpTUf9o5xGNFpI.5lMFV6U8sFO61Q Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -156,8 +156,8 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeCX8Slagbju9qqbek82cty46LRg\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435073,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmrvbx40cdvnzVDvF1qn7LmvoUqZ\",\n \"object\": + \"chat.completion\",\n \"created\": 1776706719,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"127 multiplied by 49 is 6223.\",\n \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": @@ -166,18 +166,18 @@ interactions: {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_a64aa7d0ff\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_a7190374f3\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc0486cbf74cc4-YYZ + - 9ef5ec85daa452cf-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:11:13 GMT + - Mon, 20 Apr 2026 17:38:40 GMT Server: - cloudflare Strict-Transport-Security: @@ -195,7 +195,7 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '595' + - '464' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: @@ -215,7 +215,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_92d2dd89fab6469b8da59ed538962715 + - req_4a48957d53f04038ab7939135eaba1be status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_tools.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_tools.yaml index 3be69228..4bd043b7 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_tools.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_agent_with_tools.yaml @@ -17,7 +17,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -40,11 +40,11 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeBvegJefkJTVKltZzysD3nvTd6l\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435035,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmZvma18Xi1TrvJs6L28BSmoyVXY\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705603,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": null,\n \"tool_calls\": [\n {\n - \ \"id\": \"call_r9lHzSUliNVjvG9rCIBB8xpJ\",\n \"type\": + \ \"id\": \"call_r3Dm95ajBg8P0kMcHrBBCAru\",\n \"type\": \"function\",\n \"function\": {\n \"name\": \"get_weather\",\n \ \"arguments\": \"{\\\"city\\\":\\\"Paris\\\"}\"\n }\n \ }\n ],\n \"refusal\": null,\n \"annotations\": @@ -59,13 +59,13 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc039adb23fcd9-YYZ + - 9ef5d143a88fab3c-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:10:36 GMT + - Mon, 20 Apr 2026 17:20:03 GMT Server: - cloudflare Strict-Transport-Security: @@ -83,15 +83,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '542' + - '429' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=u3_4zJf2xzsfeAI_WXbH0jMAN1EStFUQIji8IJt7fMU-1776435035.3397563-1.0.1.1-sPDT_f24Fr3S32b7UJh58RWDgA61WUmUvxWVI46znASf.gE3G1n_YhAYge4sPfmZMaEj1wRS07_EzOQS4G4Lcq1Y2uLMr3.t_Tt1jHeAtms0YdyDRIWVx.tUuY.RPjSu; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:36 GMT + - __cf_bm=..i6btsxtp.nizeS2YYttgTSIGzBYHe2.Bz2.cPwitI-1776705603.1433825-1.0.1.1-XsLWOPD1Il2q5M8QXDrx.paaHUHj8mK4UcOcSh_9ECrhcdDrZO3LAaj3o8SYygPbQSqZqvL19e0ANPpbZbWq2FqoUbmHfOKONH6YsjxTES8szxDhnFwRDKEG3P0jaWIS; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:50:03 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -101,18 +101,18 @@ interactions: x-ratelimit-remaining-requests: - '29999' x-ratelimit-remaining-tokens: - - '149999990' + - '149999992' x-ratelimit-reset-requests: - 2ms x-ratelimit-reset-tokens: - 0s x-request-id: - - req_ceb82c73836248a49b7e558d10d68c2c + - req_bf20bd285ca248a7912c05d24c86727f status: code: 200 message: OK - request: - body: '{"messages":[{"role":"user","content":"What''s the weather in Paris?"},{"role":"assistant","content":null,"tool_calls":[{"id":"call_r9lHzSUliNVjvG9rCIBB8xpJ","type":"function","function":{"name":"get_weather","arguments":"{\"city\":\"Paris\"}"}}]},{"role":"tool","tool_call_id":"call_r9lHzSUliNVjvG9rCIBB8xpJ","content":"It''s + body: '{"messages":[{"role":"user","content":"What''s the weather in Paris?"},{"role":"assistant","content":null,"tool_calls":[{"id":"call_r3Dm95ajBg8P0kMcHrBBCAru","type":"function","function":{"name":"get_weather","arguments":"{\"city\":\"Paris\"}"}}]},{"role":"tool","tool_call_id":"call_r3Dm95ajBg8P0kMcHrBBCAru","content":"It''s sunny in Paris"}],"model":"gpt-4o-mini","max_completion_tokens":200,"stream":false,"tool_choice":"auto","tools":[{"type":"function","function":{"name":"get_weather","description":"Get weather for a city.","parameters":{"additionalProperties":false,"properties":{"city":{"description":"The city name","type":"string"}},"required":["city"],"type":"object"},"strict":true}}]}' @@ -128,11 +128,11 @@ interactions: Content-Type: - application/json Cookie: - - __cf_bm=u3_4zJf2xzsfeAI_WXbH0jMAN1EStFUQIji8IJt7fMU-1776435035.3397563-1.0.1.1-sPDT_f24Fr3S32b7UJh58RWDgA61WUmUvxWVI46znASf.gE3G1n_YhAYge4sPfmZMaEj1wRS07_EzOQS4G4Lcq1Y2uLMr3.t_Tt1jHeAtms0YdyDRIWVx.tUuY.RPjSu + - __cf_bm=..i6btsxtp.nizeS2YYttgTSIGzBYHe2.Bz2.cPwitI-1776705603.1433825-1.0.1.1-XsLWOPD1Il2q5M8QXDrx.paaHUHj8mK4UcOcSh_9ECrhcdDrZO3LAaj3o8SYygPbQSqZqvL19e0ANPpbZbWq2FqoUbmHfOKONH6YsjxTES8szxDhnFwRDKEG3P0jaWIS Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -155,8 +155,8 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeBwhs829Ief0EbH18PrNzl1GEkT\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435036,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmZwyL433eR908on8gQ9wWua0lL5\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705604,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"The weather in Paris is sunny.\",\n \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": @@ -170,13 +170,13 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc03a07ebcabd6-YYZ + - 9ef5d1488c101a24-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:10:36 GMT + - Mon, 20 Apr 2026 17:20:04 GMT Server: - cloudflare Strict-Transport-Security: @@ -194,7 +194,7 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '455' + - '354' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: @@ -214,7 +214,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_cbb6cb73b689494ea2048bb41e2af1f3 + - req_94d7d361aa184aba9eec6c4370f0b748 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_auto_pydantic_ai.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_auto_pydantic_ai.yaml index fb495fcc..e761b10e 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_auto_pydantic_ai.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_auto_pydantic_ai.yaml @@ -15,7 +15,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -38,8 +38,8 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeCiB0QTPKnUZqTE4OG9NA68Vr11\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435084,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmaUMeleLwezaZQPF3QFicz6bHd0\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705638,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"Hi there! How can I assist you today?\",\n \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": @@ -48,18 +48,18 @@ interactions: {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_fe7a5277a8\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_83e2dd34fc\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc04cebc9daaa4-YYZ + - 9ef5d2221f80e080-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:11:25 GMT + - Mon, 20 Apr 2026 17:20:39 GMT Server: - cloudflare Strict-Transport-Security: @@ -77,15 +77,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '563' + - '310' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=b1OwaOff13GJjHBH4o_vXkYrpaCwP5YVPcoZSn8ra7s-1776435084.5965178-1.0.1.1-2aNgcjpTevr27E60wuWikKlOZDrF3mAntBBsE6Wc0eXIBeljJ1m3aZu8eJHvqIoF4sekGxHmOvOynA41jvGKLdeVAQDbTx29EJe5LyQaJ7q8tGNINFMHR9QHQrmAZPRQ; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:41:25 GMT + - __cf_bm=gDFhoIFdzL3CiK4jsU_voa3zLr28znb_TtWdE_ZukuU-1776705638.738667-1.0.1.1-ZFmUZv73aDFoqjerGDJQ4JMM.X5AtKAGsQFxrQ0vHPWpQafGNFThI9rEME4xGd9OVX6uW.40VCZRd869nux4FK0QQp_Wgpp_6onlukmN5NsXqrgWEQ.5dclODPFdk9AJ; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:50:39 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -101,7 +101,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_b5658f732bfb49a0b402f431d5d23600 + - req_6015781e6f464712bee9edda73024bb8 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_direct_model_request.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_direct_model_request.yaml index a44c01ad..cae9e4c5 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_direct_model_request.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_direct_model_request.yaml @@ -16,7 +16,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -39,8 +39,8 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeBxtE1l7lFJCNQe03B15suugjHQ\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435037,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmZwa3LxIRK8jv8LAUdO14G2XnYR\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705604,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"4\",\n \"refusal\": null,\n \ \"annotations\": []\n },\n \"logprobs\": null,\n \"finish_reason\": @@ -49,18 +49,18 @@ interactions: 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_fe7a5277a8\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_a7190374f3\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc03a4cb67ac9f-YYZ + - 9ef5d14c0adcebba-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:10:37 GMT + - Mon, 20 Apr 2026 17:20:04 GMT Server: - cloudflare Strict-Transport-Security: @@ -78,15 +78,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '291' + - '250' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=EWTH8awXg0rDHoEPx.PykZ9HznNswGrnzjfxBrC1CnQ-1776435036.9259286-1.0.1.1-wcHWSxJTW8ZjBCQ7nMpoVW_FjTPevENY9HP5VsuuIfkmAEWJoyC8jLoXzs8McVX9o5vq7__sQ4Y1Q_ZjMvhUaqIb7KtCCw6SCAuH9zpdPoUeaVYe71Fayq0lhMLdQhWD; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:37 GMT + - __cf_bm=iw01B8Nf685oYNjTJzph6j1sv4PgDl90JijbMFl9z9A-1776705604.481741-1.0.1.1-v89BjGZTkA_HuqjfgYhejX2TNmi9_mtg2nWjE5QiFX93Q2OTGdxZcKmazIhqPx.Kxf2zMBSS5RAdCMmU5V002h4c9aE2veT.rH9QV0FtqIriplnvv5P2Itnd8HgJvY19; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:50:04 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -102,7 +102,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_2e5a2e4c9d7c47f3831144ef1c250416 + - req_ccd6c39c72e94fa6ba79bf577ce159c9 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_direct_model_request_creates_nested_chat_span_without_class_scan.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_direct_model_request_creates_nested_chat_span_without_class_scan.yaml index 522d853f..47539c33 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_direct_model_request_creates_nested_chat_span_without_class_scan.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_direct_model_request_creates_nested_chat_span_without_class_scan.yaml @@ -16,7 +16,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -39,8 +39,8 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeBjFjDvMw7YgFfHyY9wzTF8NxY6\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435023,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmZoFAlGQeLyt0ynFM8AqDPF1HN1\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705596,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"4\",\n \"refusal\": null,\n \ \"annotations\": []\n },\n \"logprobs\": null,\n \"finish_reason\": @@ -49,18 +49,18 @@ interactions: 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_fe7a5277a8\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_a7190374f3\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc034e8bb33703-YYZ + - 9ef5d119f8bb3786-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:10:24 GMT + - Mon, 20 Apr 2026 17:19:57 GMT Server: - cloudflare Strict-Transport-Security: @@ -78,15 +78,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '604' + - '291' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=BxnEbBLpYwtQuW6e4K6.fHC_NfgntWiEU37jePQzJlE-1776435023.1297026-1.0.1.1-EW2dy51hSS3igokvDqCf34W4XEQzKLLhh_iCWThDBXDERtciTsfOQbPv74WhLj1FIyesi0EQFPWntaRKqnklnYqznd_c46Ljhb9YqjEXxwrCKqhG3SNfreyVOl8kkJPu; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:24 GMT + - __cf_bm=6L8MOws7RJiDGw_wl_Q4ufHGUiVH7J3uxrNSaglB9bE-1776705596.4719436-1.0.1.1-XSW81fhqOc41d7DyDgwlzMqWJdGlehdX1QdIIRIfiCE4gIaJpbKb0dzhryalfRsj8kpzR.OBOmynOHbkG7xBTuXmjn5xm1sekf0SHNNKNRKAR9sZXcOy1om3.rE2.zp6; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:49:57 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -102,7 +102,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_2c9ba7dfeb3e49cbabe07093adff94c1 + - req_30d044a761344d658ff8f979cb809b21 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_direct_model_request_stream.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_direct_model_request_stream.yaml index 110e0e55..888e2ac2 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_direct_model_request_stream.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_direct_model_request_stream.yaml @@ -15,7 +15,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -38,39 +38,39 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: 'data: {"id":"chatcmpl-DVeC1OtXewscYwgdNsGqqVzhTeKbI","object":"chat.completion.chunk","created":1776435041,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4181e24c46","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"2Tb4f0yTO"} + string: 'data: {"id":"chatcmpl-DWmZyQFIAoS4146v0bAcLX4qBKADn","object":"chat.completion.chunk","created":1776705606,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"NEXz8bu1W"} - data: {"id":"chatcmpl-DVeC1OtXewscYwgdNsGqqVzhTeKbI","object":"chat.completion.chunk","created":1776435041,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4181e24c46","choices":[{"index":0,"delta":{"content":"1"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Vl0LxaX8rx"} + data: {"id":"chatcmpl-DWmZyQFIAoS4146v0bAcLX4qBKADn","object":"chat.completion.chunk","created":1776705606,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"1"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"27jgm8Um9X"} - data: {"id":"chatcmpl-DVeC1OtXewscYwgdNsGqqVzhTeKbI","object":"chat.completion.chunk","created":1776435041,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4181e24c46","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"xxgyrEBWrk"} + data: {"id":"chatcmpl-DWmZyQFIAoS4146v0bAcLX4qBKADn","object":"chat.completion.chunk","created":1776705606,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"B4dIZor6jH"} - data: {"id":"chatcmpl-DVeC1OtXewscYwgdNsGqqVzhTeKbI","object":"chat.completion.chunk","created":1776435041,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4181e24c46","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"a7mlEdsGvi"} + data: {"id":"chatcmpl-DWmZyQFIAoS4146v0bAcLX4qBKADn","object":"chat.completion.chunk","created":1776705606,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"xFHBqZxDwk"} - data: {"id":"chatcmpl-DVeC1OtXewscYwgdNsGqqVzhTeKbI","object":"chat.completion.chunk","created":1776435041,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4181e24c46","choices":[{"index":0,"delta":{"content":"2"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"QcwLtoDszu"} + data: {"id":"chatcmpl-DWmZyQFIAoS4146v0bAcLX4qBKADn","object":"chat.completion.chunk","created":1776705606,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"2"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"ClgZwqk1Xr"} - data: {"id":"chatcmpl-DVeC1OtXewscYwgdNsGqqVzhTeKbI","object":"chat.completion.chunk","created":1776435041,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4181e24c46","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"7PjnEcpMDl"} + data: {"id":"chatcmpl-DWmZyQFIAoS4146v0bAcLX4qBKADn","object":"chat.completion.chunk","created":1776705606,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"y8x5FA3bXU"} - data: {"id":"chatcmpl-DVeC1OtXewscYwgdNsGqqVzhTeKbI","object":"chat.completion.chunk","created":1776435041,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4181e24c46","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"reXbTYCJbB"} + data: {"id":"chatcmpl-DWmZyQFIAoS4146v0bAcLX4qBKADn","object":"chat.completion.chunk","created":1776705606,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"rKIFKwfOxr"} - data: {"id":"chatcmpl-DVeC1OtXewscYwgdNsGqqVzhTeKbI","object":"chat.completion.chunk","created":1776435041,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4181e24c46","choices":[{"index":0,"delta":{"content":"3"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"26YWzVIBOc"} + data: {"id":"chatcmpl-DWmZyQFIAoS4146v0bAcLX4qBKADn","object":"chat.completion.chunk","created":1776705606,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"3"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"oq95ASPzPL"} - data: {"id":"chatcmpl-DVeC1OtXewscYwgdNsGqqVzhTeKbI","object":"chat.completion.chunk","created":1776435041,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4181e24c46","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"JKdUGu2eBY"} + data: {"id":"chatcmpl-DWmZyQFIAoS4146v0bAcLX4qBKADn","object":"chat.completion.chunk","created":1776705606,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"ZAJQl8yy0V"} - data: {"id":"chatcmpl-DVeC1OtXewscYwgdNsGqqVzhTeKbI","object":"chat.completion.chunk","created":1776435041,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4181e24c46","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"5ZkZA"} + data: {"id":"chatcmpl-DWmZyQFIAoS4146v0bAcLX4qBKADn","object":"chat.completion.chunk","created":1776705606,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"5K5z8"} - data: {"id":"chatcmpl-DVeC1OtXewscYwgdNsGqqVzhTeKbI","object":"chat.completion.chunk","created":1776435041,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4181e24c46","choices":[],"usage":{"prompt_tokens":14,"completion_tokens":8,"total_tokens":22,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"fQyOdjtz1lQ"} + data: {"id":"chatcmpl-DWmZyQFIAoS4146v0bAcLX4qBKADn","object":"chat.completion.chunk","created":1776705606,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[],"usage":{"prompt_tokens":14,"completion_tokens":8,"total_tokens":22,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"hVaJSK3npCG"} data: [DONE] @@ -81,13 +81,13 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc03c24eab35ae-YYZ + - 9ef5d1568c3f5437-YYZ Connection: - keep-alive Content-Type: - text/event-stream; charset=utf-8 Date: - - Fri, 17 Apr 2026 14:10:42 GMT + - Mon, 20 Apr 2026 17:20:06 GMT Server: - cloudflare Strict-Transport-Security: @@ -103,15 +103,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '591' + - '213' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=LX5AyWsCCiaDOK.tQDH3cVhLzupw1LvD.WcWtuBVNCM-1776435041.644122-1.0.1.1-5l4xFxB7Y16SRKjdvSI5Zom9bSny1D6oJoHd93n25z3Wi.0.1WR3bNZe1qIABEArplknBI8L5UImv6SR4B3JoM61i.XrKVdIAsx0cPpkOIYE1vv3cy011LqcqZRYuL9X; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:42 GMT + - __cf_bm=AbZihcMmH1o2jGOLu.dfZDkYR2nODQvF6IKGCJ9UAag-1776705606.1658077-1.0.1.1-zFyB5xAhxGcboPNxL50ewtmN.x4dRS2AYkXpPQXAQNVgNkcAqyeI6Kxd.9JH.aIHTzB7uBefx4wrFTyStbF0pqAEGReq3kMDjPeIugY_MVGKqJ8fnvu4mukhUsaSUTpR; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:50:06 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -127,7 +127,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_fd78a374bb9e4dcaa498bd6f4029b410 + - req_254edfaf5b184405b231e54a0b4e25dd status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_direct_model_request_stream_complete_output.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_direct_model_request_stream_complete_output.yaml index f187fcd6..207811b4 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_direct_model_request_stream_complete_output.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_direct_model_request_stream_complete_output.yaml @@ -15,7 +15,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -38,36 +38,36 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: 'data: {"id":"chatcmpl-DVeC4Nj6KH3C5hBQ60pBU0hnh7zb1","object":"chat.completion.chunk","created":1776435044,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"aYQlHh2Ja"} + string: 'data: {"id":"chatcmpl-DWmZy5RYpKYcHQi2M2gLbJRlqEwWq","object":"chat.completion.chunk","created":1776705606,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"O3m8xtfA9"} - data: {"id":"chatcmpl-DVeC4Nj6KH3C5hBQ60pBU0hnh7zb1","object":"chat.completion.chunk","created":1776435044,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"1"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"7Kv9Ky4N0M"} + data: {"id":"chatcmpl-DWmZy5RYpKYcHQi2M2gLbJRlqEwWq","object":"chat.completion.chunk","created":1776705606,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":"1"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"wEKbjSb1eN"} - data: {"id":"chatcmpl-DVeC4Nj6KH3C5hBQ60pBU0hnh7zb1","object":"chat.completion.chunk","created":1776435044,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"15WIRST1bc"} + data: {"id":"chatcmpl-DWmZy5RYpKYcHQi2M2gLbJRlqEwWq","object":"chat.completion.chunk","created":1776705606,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Axy95jIxAP"} - data: {"id":"chatcmpl-DVeC4Nj6KH3C5hBQ60pBU0hnh7zb1","object":"chat.completion.chunk","created":1776435044,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"SiY4c2qzwS"} + data: {"id":"chatcmpl-DWmZy5RYpKYcHQi2M2gLbJRlqEwWq","object":"chat.completion.chunk","created":1776705606,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"wcf3i75Yev"} - data: {"id":"chatcmpl-DVeC4Nj6KH3C5hBQ60pBU0hnh7zb1","object":"chat.completion.chunk","created":1776435044,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"2"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"9kWiqEHtl8"} + data: {"id":"chatcmpl-DWmZy5RYpKYcHQi2M2gLbJRlqEwWq","object":"chat.completion.chunk","created":1776705606,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":"2"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"UXfz6lRdyz"} - data: {"id":"chatcmpl-DVeC4Nj6KH3C5hBQ60pBU0hnh7zb1","object":"chat.completion.chunk","created":1776435044,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"LVRK23GyZU"} + data: {"id":"chatcmpl-DWmZy5RYpKYcHQi2M2gLbJRlqEwWq","object":"chat.completion.chunk","created":1776705606,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"wBCYsjzz4j"} - data: {"id":"chatcmpl-DVeC4Nj6KH3C5hBQ60pBU0hnh7zb1","object":"chat.completion.chunk","created":1776435044,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"yWJkJV9xhl"} + data: {"id":"chatcmpl-DWmZy5RYpKYcHQi2M2gLbJRlqEwWq","object":"chat.completion.chunk","created":1776705606,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"dHjVyNMaya"} - data: {"id":"chatcmpl-DVeC4Nj6KH3C5hBQ60pBU0hnh7zb1","object":"chat.completion.chunk","created":1776435044,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"3"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"YPqLkv7teM"} + data: {"id":"chatcmpl-DWmZy5RYpKYcHQi2M2gLbJRlqEwWq","object":"chat.completion.chunk","created":1776705606,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{"content":"3"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Sg11CxFtYw"} - data: {"id":"chatcmpl-DVeC4Nj6KH3C5hBQ60pBU0hnh7zb1","object":"chat.completion.chunk","created":1776435044,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"R1Y37"} + data: {"id":"chatcmpl-DWmZy5RYpKYcHQi2M2gLbJRlqEwWq","object":"chat.completion.chunk","created":1776705606,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"v7iiM"} - data: {"id":"chatcmpl-DVeC4Nj6KH3C5hBQ60pBU0hnh7zb1","object":"chat.completion.chunk","created":1776435044,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[],"usage":{"prompt_tokens":18,"completion_tokens":7,"total_tokens":25,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"JfuRqQ95QHu"} + data: {"id":"chatcmpl-DWmZy5RYpKYcHQi2M2gLbJRlqEwWq","object":"chat.completion.chunk","created":1776705606,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f5a773b015","choices":[],"usage":{"prompt_tokens":18,"completion_tokens":7,"total_tokens":25,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"Tglauhrjckp"} data: [DONE] @@ -78,13 +78,13 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc03d0bd74de04-YYZ + - 9ef5d15a18676d93-YYZ Connection: - keep-alive Content-Type: - text/event-stream; charset=utf-8 Date: - - Fri, 17 Apr 2026 14:10:44 GMT + - Mon, 20 Apr 2026 17:20:07 GMT Server: - cloudflare Strict-Transport-Security: @@ -100,15 +100,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '193' + - '287' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=mtKyiyXaQMTLiHM0gTfMwaoT9Vj5Ve8rt_xk9aXq9_0-1776435043.9585454-1.0.1.1-ejGOxZ1KzGUm2H36Ic292qsrTerLKYby7o0v1DHqrnO.YekJo5PH4UeYObqAoI92Tat1zmXOwXuU1OJLPy6HeRsWV49RmRnkxM_JqvQeKU_UZlb_rfiAYgJbkrCsxTA_; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:44 GMT + - __cf_bm=8q5S_sGckEeYxrxZ8yFt7tTKNSeAdFVkDMqCbtoLWLU-1776705606.7347467-1.0.1.1-ApWbp8VV0ZLv6edf1.TYyPP8KJT3sb0gFdCxVzN3M4sA1HDAAmMLZOQ6sQokYo1kBb0qa5s5X8H3ajZjpYkte3NqovBkBJvhj5CBkP_AnCLTRy64mW_.FWUMcKuO2yZ8; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:50:07 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -124,7 +124,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_08e6f72efab54e97a49cf00a1e6d0ede + - req_bd9dc4e86b114fd483f3631397ddd7a4 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_direct_model_request_stream_sync.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_direct_model_request_stream_sync.yaml index 85fe6ac9..62b946f1 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_direct_model_request_stream_sync.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_direct_model_request_stream_sync.yaml @@ -1,218 +1,4 @@ interactions: -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Length: - - '0' - User-Agent: - - python-requests/2.33.1 - method: POST - uri: https://www.braintrust.dev/api/apikey/login - response: - body: - string: '{"org_info":[{"id":"5d7c97d7-fef1-4cb7-bda6-7e3756a0ca8e","name":"braintrustdata.com","api_url":"https://staging-api.braintrust.dev","git_metadata":{"fields":["commit","branch","tag","author_name","author_email","commit_message","commit_time","dirty"],"collect":"some"},"is_universal_api":true,"proxy_url":"https://staging-api.braintrust.dev","realtime_url":"wss://realtime.braintrustapi.com"}]}' - headers: - Access-Control-Allow-Credentials: - - 'true' - Access-Control-Allow-Headers: - - X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, - Content-Type, Date, X-Api-Version - Access-Control-Allow-Methods: - - GET,OPTIONS,PATCH,DELETE,POST,PUT - Access-Control-Allow-Origin: - - '*' - Cache-Control: - - public, max-age=0, must-revalidate - Content-Length: - - '395' - Content-Security-Policy: - - 'script-src ''self'' ''unsafe-eval'' ''wasm-unsafe-eval'' ''strict-dynamic'' - ''nonce-M2Y3ODBiNjQtODRmMS00NWE4LTlmMDEtODE3Zjc2OGM2YTQy'' *.js.stripe.com - js.stripe.com maps.googleapis.com ; style-src ''self'' ''unsafe-inline'' *.braintrust.dev - btcm6qilbbhv4yi1.public.blob.vercel-storage.com fonts.googleapis.com www.gstatic.com - d4tuoctqmanu0.cloudfront.net; font-src ''self'' data: fonts.gstatic.com btcm6qilbbhv4yi1.public.blob.vercel-storage.com - cdn.jsdelivr.net d4tuoctqmanu0.cloudfront.net fonts.googleapis.com mintlify-assets.b-cdn.net - fonts.cdnfonts.com; object-src ''none''; base-uri ''self''; form-action ''self''; - frame-ancestors ''self''; worker-src ''self'' blob:; report-uri https://o4507221741076480.ingest.us.sentry.io/api/4507221754380288/security/?sentry_key=27fa5ac907cf7c6ce4a1ab2a03f805b4&sentry_environment=production&sentry_release=16; - report-to csp-endpoint-0' - Content-Type: - - application/json; charset=utf-8 - Date: - - Fri, 17 Apr 2026 14:11:02 GMT - Etag: - - '"12n7ok4b5phaz"' - Reporting-Endpoints: - - csp-endpoint-0="https://o4507221741076480.ingest.us.sentry.io/api/4507221754380288/security/?sentry_key=27fa5ac907cf7c6ce4a1ab2a03f805b4&sentry_environment=production&sentry_release=16" - Server: - - Vercel - Strict-Transport-Security: - - max-age=63072000 - X-Bt-Was-Udf-Cached: - - 'true' - X-Clerk-Auth-Message: - - Invalid JWT form. A JWT consists of three parts separated by dots. (reason=token-invalid, - token-carrier=header) - X-Clerk-Auth-Reason: - - token-invalid - X-Clerk-Auth-Status: - - signed-out - X-Content-Type-Options: - - nosniff - X-Frame-Options: - - SAMEORIGIN - X-Matched-Path: - - /api/apikey/login - X-Nonce: - - M2Y3ODBiNjQtODRmMS00NWE4LTlmMDEtODE3Zjc2OGM2YTQy - X-Vercel-Cache: - - MISS - X-Vercel-Id: - - yul1::iad1::jwkxx-1776435062119-af716ebb07b5 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - User-Agent: - - python-requests/2.33.1 - method: GET - uri: https://staging-api.braintrust.dev/version - response: - body: - string: '{"version":"2.0.0","date_version":"20260417","ff_version":24,"commit":"0d9d9d17b59a872d1cac7f50d67429265387324c","deployment_mode":"lambda","deployment_type":"custom","brainstore_default":"force","brainstore_can_contain_row_refs":true,"skip_pg_config":"all","has_realtime_wal_bucket":true,"brainstore_wal_footer_version":"v3","brainstore_wal_use_efficient_format":true,"has_logs2":true,"js":true,"universal":true,"code_execution":true,"logs3_payload_max_bytes":5242880,"control_plane_telemetry":["status","metrics","logs","traces","memprof","usage"]}' - headers: - Connection: - - keep-alive - Content-Length: - - '550' - Content-Type: - - application/json; charset=utf-8 - Date: - - Fri, 17 Apr 2026 14:11:02 GMT - Via: - - 1.1 cf658ee9f945547220eb3f4e1f7ef2fe.cloudfront.net (CloudFront), 1.1 dc63ed289fa4d9a64b4cc2f12891a350.cloudfront.net - (CloudFront) - X-Amz-Cf-Id: - - WxdY5BQr4kpU-5Ov4piF8XtcCaBZxrjt1lR6I_xyvdSaeCd8T2t8gA== - X-Amz-Cf-Pop: - - YTO53-P2 - - YTO50-P1 - X-Amzn-Trace-Id: - - Root=1-69e23f76-7bd57add2fbf67af081e2232;Parent=760122e6ee5de8b7;Sampled=0;Lineage=1:fc3b4ff1:0 - X-Cache: - - Miss from cloudfront - access-control-allow-credentials: - - 'true' - access-control-expose-headers: - - x-bt-cursor,x-bt-found-existing,x-bt-query-plan,x-bt-api-duration-ms,x-bt-brainstore-duration-ms,x-bt-internal-trace-id - etag: - - W/"226-EfRuYziO2Q1Ux8maLsFk5foD01A" - vary: - - Origin - x-amz-apigw-id: - - b97ajFKEoAMEcfQ= - x-amzn-Remapped-content-length: - - '550' - x-amzn-RequestId: - - d3b5a057-0649-4bcf-9c37-9e1015142be9 - x-bt-internal-trace-id: - - 69e23f7600000000524896afafdc0b34 - status: - code: 200 - message: OK -- request: - body: '{"rows": [{"_is_merge": false, "context": {"caller_filename": "/Users/abhijeetprasad/workspace/braintrust-sdk-python/py/.nox/test_pydantic_ai_integration-latest/lib/python3.14/site-packages/pydantic_ai/direct.py", - "caller_functionname": "_consume_async_stream", "caller_lineno": 384}, "created": - "2026-04-17T14:11:01.995881+00:00", "id": "768fc0a0-d899-4306-9b3a-ed8e74a74dad", - "input": {"instrument": null, "messages": [{"instructions": null, "kind": "request", - "metadata": null, "parts": [{"content": "Count from 1 to 3", "part_kind": "user-prompt", - "timestamp": "2026-04-17 14:11:01.991721+00:00"}], "run_id": null, "timestamp": - null}], "model": "openai:gpt-4o-mini", "model_request_parameters": null, "model_settings": - null}, "log_id": "g", "metadata": {"model": "gpt-4o-mini", "provider": "openai"}, - "metrics": {"start": 1776435061.995879}, "project_id": "test-pydantic-ai-integration", - "root_span_id": "18c3fc56-b2da-47e3-8ca0-66b5f8d36192", "span_attributes": {"exec_counter": - 62, "name": "model_request_stream", "type": "task"}, "span_id": "f8eb85c2-f627-483c-a989-85ca91d616cb", - "span_parents": ["18c3fc56-b2da-47e3-8ca0-66b5f8d36192"]},{"_is_merge": false, - "context": {"caller_filename": "/Users/abhijeetprasad/workspace/braintrust-sdk-python/py/.nox/test_pydantic_ai_integration-latest/lib/python3.14/site-packages/pydantic_ai/direct.py", - "caller_functionname": "_consume_async_stream", "caller_lineno": 384}, "created": - "2026-04-17T14:11:01.995997+00:00", "id": "9eb7a618-8dcf-40a8-a91a-00f4eda9ad4d", - "input": {"messages": [{"instructions": null, "kind": "request", "metadata": - null, "parts": [{"content": "Count from 1 to 3", "part_kind": "user-prompt", - "timestamp": "2026-04-17 14:11:01.991721+00:00"}], "run_id": null, "timestamp": - null}]}, "log_id": "g", "metadata": {"model": "gpt-4o-mini", "provider": "openai"}, - "metrics": {"start": 1776435061.9959948}, "project_id": "test-pydantic-ai-integration", - "root_span_id": "18c3fc56-b2da-47e3-8ca0-66b5f8d36192", "span_attributes": {"exec_counter": - 63, "name": "chat gpt-4o-mini", "type": "llm"}, "span_id": "e2190315-36e7-4bce-a388-1b1e49aae5a9", - "span_parents": ["f8eb85c2-f627-483c-a989-85ca91d616cb"]}], "api_version": 2}' - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Length: - - '2188' - User-Agent: - - python-requests/2.33.1 - method: POST - uri: https://staging-api.braintrust.dev/logs3 - response: - body: - string: '{"Code":"ForbiddenError","Message":"Missing read access to project_log - id test-pydantic-ai-integration, or the project_log does not exist [user_email=abhijeet@braintrustdata.com] - [user_org=braintrustdata.com] [timestamp=1776435062.592]","InternalTraceId":"69e23f76000000007b5a469b47b67370","Path":"/logs3","Service":"api"}' - headers: - Connection: - - keep-alive - Content-Type: - - application/json; charset=utf-8 - Date: - - Fri, 17 Apr 2026 14:11:02 GMT - Via: - - 1.1 8757e4d26d0f26e2f05769a88e8a5ace.cloudfront.net (CloudFront), 1.1 4eb35caa679bb95c591a03f41b151b8c.cloudfront.net - (CloudFront) - X-Amz-Cf-Id: - - pCIl6vk41f1yRkD3Cu7lg650krpqd94QU5JFrI3BxhKHA9PwXvKm1Q== - X-Amz-Cf-Pop: - - YTO53-P2 - - YTO50-P1 - X-Amzn-Trace-Id: - - Root=1-69e23f76-2e907bfb4a798d237dfb3e72;Parent=26784ceec8ff928e;Sampled=0;Lineage=1:fc3b4ff1:0 - X-Cache: - - Error from cloudfront - access-control-allow-credentials: - - 'true' - access-control-expose-headers: - - x-bt-cursor,x-bt-found-existing,x-bt-query-plan,x-bt-api-duration-ms,x-bt-brainstore-duration-ms,x-bt-internal-trace-id - content-length: - - '322' - etag: - - W/"142-+r9ruPTHfdN3yX+INoIpgGAnrxI" - vary: - - Origin, Accept-Encoding - x-amz-apigw-id: - - b97akEOzoAMEoAg= - x-amzn-RequestId: - - 0958b488-d87d-4da1-a747-b889a1b384fa - x-bt-internal-trace-id: - - 69e23f76000000007b5a469b47b67370 - status: - code: 403 - message: Forbidden - request: body: '{"messages":[{"role":"user","content":"Count from 1 to 3"}],"model":"gpt-4o-mini","stream":true,"stream_options":{"include_usage":true}}' headers: @@ -229,7 +15,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -252,39 +38,39 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: 'data: {"id":"chatcmpl-DVeCMjVZIIA6rT7bbSffo43jztj50","object":"chat.completion.chunk","created":1776435062,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"nqpNGWOFV"} + string: 'data: {"id":"chatcmpl-DWmsRsMrTqLokjG5J7Q6DKUcuQcuC","object":"chat.completion.chunk","created":1776706751,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"koHqDrcRr"} - data: {"id":"chatcmpl-DVeCMjVZIIA6rT7bbSffo43jztj50","object":"chat.completion.chunk","created":1776435062,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"1"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"3Zg5BM8uII"} + data: {"id":"chatcmpl-DWmsRsMrTqLokjG5J7Q6DKUcuQcuC","object":"chat.completion.chunk","created":1776706751,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"1"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"fPd1RcHv2u"} - data: {"id":"chatcmpl-DVeCMjVZIIA6rT7bbSffo43jztj50","object":"chat.completion.chunk","created":1776435062,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"C1Putt9wds"} + data: {"id":"chatcmpl-DWmsRsMrTqLokjG5J7Q6DKUcuQcuC","object":"chat.completion.chunk","created":1776706751,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"rDEuCoKiqy"} - data: {"id":"chatcmpl-DVeCMjVZIIA6rT7bbSffo43jztj50","object":"chat.completion.chunk","created":1776435062,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"4GlrfaN6C4"} + data: {"id":"chatcmpl-DWmsRsMrTqLokjG5J7Q6DKUcuQcuC","object":"chat.completion.chunk","created":1776706751,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"vrULNlicvo"} - data: {"id":"chatcmpl-DVeCMjVZIIA6rT7bbSffo43jztj50","object":"chat.completion.chunk","created":1776435062,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"2"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"2YYOAQSmjJ"} + data: {"id":"chatcmpl-DWmsRsMrTqLokjG5J7Q6DKUcuQcuC","object":"chat.completion.chunk","created":1776706751,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"2"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"lLNwAYD4yO"} - data: {"id":"chatcmpl-DVeCMjVZIIA6rT7bbSffo43jztj50","object":"chat.completion.chunk","created":1776435062,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"rLlcJFOfqH"} + data: {"id":"chatcmpl-DWmsRsMrTqLokjG5J7Q6DKUcuQcuC","object":"chat.completion.chunk","created":1776706751,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"RliICQ7LO4"} - data: {"id":"chatcmpl-DVeCMjVZIIA6rT7bbSffo43jztj50","object":"chat.completion.chunk","created":1776435062,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"ffcRb44elD"} + data: {"id":"chatcmpl-DWmsRsMrTqLokjG5J7Q6DKUcuQcuC","object":"chat.completion.chunk","created":1776706751,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"BQv96kCP7t"} - data: {"id":"chatcmpl-DVeCMjVZIIA6rT7bbSffo43jztj50","object":"chat.completion.chunk","created":1776435062,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"3"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"4SzYQZinSk"} + data: {"id":"chatcmpl-DWmsRsMrTqLokjG5J7Q6DKUcuQcuC","object":"chat.completion.chunk","created":1776706751,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"3"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"oPDY8iauUC"} - data: {"id":"chatcmpl-DVeCMjVZIIA6rT7bbSffo43jztj50","object":"chat.completion.chunk","created":1776435062,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"QlydmDjBUA"} + data: {"id":"chatcmpl-DWmsRsMrTqLokjG5J7Q6DKUcuQcuC","object":"chat.completion.chunk","created":1776706751,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"nLfJfuuXWZ"} - data: {"id":"chatcmpl-DVeCMjVZIIA6rT7bbSffo43jztj50","object":"chat.completion.chunk","created":1776435062,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"vOpNE"} + data: {"id":"chatcmpl-DWmsRsMrTqLokjG5J7Q6DKUcuQcuC","object":"chat.completion.chunk","created":1776706751,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"UfxCn"} - data: {"id":"chatcmpl-DVeCMjVZIIA6rT7bbSffo43jztj50","object":"chat.completion.chunk","created":1776435062,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[],"usage":{"prompt_tokens":14,"completion_tokens":8,"total_tokens":22,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"UyBt4NG6ITZ"} + data: {"id":"chatcmpl-DWmsRsMrTqLokjG5J7Q6DKUcuQcuC","object":"chat.completion.chunk","created":1776706751,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[],"usage":{"prompt_tokens":14,"completion_tokens":8,"total_tokens":22,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"wKaJwAoNGHq"} data: [DONE] @@ -295,13 +81,13 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc044208baa205-YYZ + - 9ef5ed4ce9dd5431-YYZ Connection: - keep-alive Content-Type: - text/event-stream; charset=utf-8 Date: - - Fri, 17 Apr 2026 14:11:03 GMT + - Mon, 20 Apr 2026 17:39:11 GMT Server: - cloudflare Strict-Transport-Security: @@ -317,15 +103,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '936' + - '166' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=54qZdQkg_62drbml6p4IZ6Xw5ya1HlIE9YYlaTaQtU8-1776435062.089686-1.0.1.1-ajdRrZWPG87sTLm4H293bPKbB7FYJTgv62msdwSCwgO0qbM3Bl6DoNxRityeBFqhYxwfgKFWDGpe9uKY7rFxHsx_okYpQLQzfIxvqhKHzORuIBhtfU2wo4BESNa1C2RG; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:41:03 GMT + - __cf_bm=tEjiXlQ5hs1B1zyrvxyCGE8X0IqHCeOjy4P9gbitTHw-1776706751.5049155-1.0.1.1-KhU8FTbTPcoUZeeA2J15JiPdu9BSKhX6OQBRXGS52UhFDECuM6pscRe2JUybJwYkTEYRDERS1BpG4LnZN3K50n.c4wO2h2TLYO9bvrUaPWGSUexK7MKOZFc32w.aTvgC; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 18:09:11 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -341,7 +127,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_4f25858f69c141e1af14665744ba78df + - req_7a121daacab64deaa550be56f3daf6c2 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_direct_model_request_sync.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_direct_model_request_sync.yaml index 58ca9b62..dfc232b4 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_direct_model_request_sync.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_direct_model_request_sync.yaml @@ -16,7 +16,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -39,8 +39,8 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeBy9CwsRBAOQdz9bq3tsq3UrcI3\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435038,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmZxNBA9d7oRT6x5CYQc56oW4S6V\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705605,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"4\",\n \"refusal\": null,\n \ \"annotations\": []\n },\n \"logprobs\": null,\n \"finish_reason\": @@ -49,18 +49,18 @@ interactions: 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_fe7a5277a8\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_a7190374f3\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc03ae8c1eac87-YYZ + - 9ef5d14efc66ab99-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:10:38 GMT + - Mon, 20 Apr 2026 17:20:05 GMT Server: - cloudflare Strict-Transport-Security: @@ -78,15 +78,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '178' + - '299' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=2v9OWkdM7wNvCTHgtPqtteq6mxkJoRQBM4q7dn7g4s0-1776435038.4852505-1.0.1.1-OY5P4Rb3SsXXUVgm_.8c2pAn41.Hy7ef0rcyBqWDP_SWm1XxGYeuaDr.fuw1OFcuM5SB8YK7PKxby4R7Cu4rlt2AFWH2Epr6Wf_UQMhAIjw9G3mgpXMX.Ulffyuml4On; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:38 GMT + - __cf_bm=S4dUmFaFLI.eCwWN4lo7DplqqJGec47qlpFND0OTvqw-1776705604.9591777-1.0.1.1-jXes6A.og0.6s1IrZNQ6J6E_rw1bJjTGK46chCixX38vcdqv0ShGtncXmsswSHgUVB6hSJ1HIukKE0BD4idP4ZakzwI0PXcTxrHaIpk2BA6l7XimyTymUpSH8oo1v7qw; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:50:05 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -102,7 +102,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_bbb5036fe0814984833252404b68039e + - req_34507825e1524299a0e4893b2cadece6 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_direct_model_request_with_settings.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_direct_model_request_with_settings.yaml index b25efaad..c6fdc589 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_direct_model_request_with_settings.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_direct_model_request_with_settings.yaml @@ -15,7 +15,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -38,8 +38,8 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeC06ncTn9MskfKcUyuiB33FolT2\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435040,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmZx2GYtKSHidVr97bLiXvlmtVND\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705605,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"Hello! How can I assist you today?\",\n \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": @@ -48,18 +48,18 @@ interactions: {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_fe7a5277a8\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_a7190374f3\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc03b82a14ab78-YYZ + - 9ef5d1524a81ec6f-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:10:40 GMT + - Mon, 20 Apr 2026 17:20:05 GMT Server: - cloudflare Strict-Transport-Security: @@ -77,15 +77,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '824' + - '411' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=TEWheddxInQwPXuisJrf8Wm9J9B6VJuREgVYVqhtJJo-1776435040.0253592-1.0.1.1-y3NsxzVbsgrYH.2Z24pb_rrcXfteaLNVfHqUVvA_b5RGr075rN6TB83hOiyj6i6ftqdfaLMEgF9hPWZ0PwT759svsLYAuCQsxNTbidnc3JfToBIuE0slt.Cot.X5rLHC; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:40 GMT + - __cf_bm=.5VeHobmtYhknhbSL9pfGuuTVbpQ8UFnXZAQzy0Z.8M-1776705605.4895966-1.0.1.1-iOBixTjxnixWYC4k9.fJzO77JmpCTHVOGeZwc8yQk6vRiZuU7MUosLrD6uktsRpAQ_4lXoZv1VdpW43iBt5gNZJPZ6hUi0Dl9B5rLCu12M1KV2BbG5Cpmu_7OlbGqCmz; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:50:05 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -101,7 +101,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_c121c9e68e344aa3a5dd34901f8d9f84 + - req_bcc62985a79643d58332c6b95a831abf status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_model_class_span_names.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_model_class_span_names.yaml index 24c0c08c..8aa1803a 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_model_class_span_names.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_model_class_span_names.yaml @@ -15,7 +15,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -38,8 +38,8 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeCb9G9tjr9q0Lzz4k4SeAIzvIyQ\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435077,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmaQMcNUZXFdVlnnUUvmDDNhRO3l\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705634,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"2 + 2 equals 4.\",\n \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": null,\n @@ -48,18 +48,18 @@ interactions: {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_fe7a5277a8\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_83e2dd34fc\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc04a46fc8aabd-YYZ + - 9ef5d2050eab39dd-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:11:18 GMT + - Mon, 20 Apr 2026 17:20:34 GMT Server: - cloudflare Strict-Transport-Security: @@ -77,15 +77,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '450' + - '326' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=nWrj0YCiZVsYrjc4EP6Mvf9UqAMdW836bmPRXyBgnHI-1776435077.8279154-1.0.1.1-kNrnFvX3u.ARsTJlqoYRLuTCCRjqURF0qZDP_27hJ85FtjkV3Ytqu5sIQ0qhEslgEuYE4U3L8O0oB4xaDSj.JgYp_ixtb_yV4xg3cCr73XKuf6VjEpvFbs66QE_L79_W; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:41:18 GMT + - __cf_bm=2_uRErow1mHTspkiylhMu.2qebsClsLykUjAKMuIb2k-1776705634.089704-1.0.1.1-OEl4CDiK1RRpMOOjtEj1st.4gorzK5OlgkTlLXUu4P2FpRbWujVSDHrXoHw8V8qv003MU0gtqSBTiIVaDuIpae2eduBwlSalXeDW0alAFbEGdl6w6kdWE1vWfdgFKfXI; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:50:34 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -101,7 +101,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_3a50bca889d34afa9adfc739c490beeb + - req_1190e770f5994c04b33e464680e3c1f7 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_model_request_stream_sync_thread_context_propagation.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_model_request_stream_sync_thread_context_propagation.yaml index 4144c173..0cb2fd9b 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_model_request_stream_sync_thread_context_propagation.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_model_request_stream_sync_thread_context_propagation.yaml @@ -1,218 +1,4 @@ interactions: -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Length: - - '0' - User-Agent: - - python-requests/2.33.1 - method: POST - uri: https://www.braintrust.dev/api/apikey/login - response: - body: - string: '{"org_info":[{"id":"5d7c97d7-fef1-4cb7-bda6-7e3756a0ca8e","name":"braintrustdata.com","api_url":"https://staging-api.braintrust.dev","git_metadata":{"fields":["commit","branch","tag","author_name","author_email","commit_message","commit_time","dirty"],"collect":"some"},"is_universal_api":true,"proxy_url":"https://staging-api.braintrust.dev","realtime_url":"wss://realtime.braintrustapi.com"}]}' - headers: - Access-Control-Allow-Credentials: - - 'true' - Access-Control-Allow-Headers: - - X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, - Content-Type, Date, X-Api-Version - Access-Control-Allow-Methods: - - GET,OPTIONS,PATCH,DELETE,POST,PUT - Access-Control-Allow-Origin: - - '*' - Cache-Control: - - public, max-age=0, must-revalidate - Content-Length: - - '395' - Content-Security-Policy: - - 'script-src ''self'' ''unsafe-eval'' ''wasm-unsafe-eval'' ''strict-dynamic'' - ''nonce-ZjZhMGFlZWMtYWU5MS00ODkyLTlhNzYtYjQ2OGQwMWJlYzFj'' *.js.stripe.com - js.stripe.com maps.googleapis.com ; style-src ''self'' ''unsafe-inline'' *.braintrust.dev - btcm6qilbbhv4yi1.public.blob.vercel-storage.com fonts.googleapis.com www.gstatic.com - d4tuoctqmanu0.cloudfront.net; font-src ''self'' data: fonts.gstatic.com btcm6qilbbhv4yi1.public.blob.vercel-storage.com - cdn.jsdelivr.net d4tuoctqmanu0.cloudfront.net fonts.googleapis.com mintlify-assets.b-cdn.net - fonts.cdnfonts.com; object-src ''none''; base-uri ''self''; form-action ''self''; - frame-ancestors ''self''; worker-src ''self'' blob:; report-uri https://o4507221741076480.ingest.us.sentry.io/api/4507221754380288/security/?sentry_key=27fa5ac907cf7c6ce4a1ab2a03f805b4&sentry_environment=production&sentry_release=16; - report-to csp-endpoint-0' - Content-Type: - - application/json; charset=utf-8 - Date: - - Fri, 17 Apr 2026 14:11:26 GMT - Etag: - - '"12n7ok4b5phaz"' - Reporting-Endpoints: - - csp-endpoint-0="https://o4507221741076480.ingest.us.sentry.io/api/4507221754380288/security/?sentry_key=27fa5ac907cf7c6ce4a1ab2a03f805b4&sentry_environment=production&sentry_release=16" - Server: - - Vercel - Strict-Transport-Security: - - max-age=63072000 - X-Bt-Was-Udf-Cached: - - 'true' - X-Clerk-Auth-Message: - - Invalid JWT form. A JWT consists of three parts separated by dots. (reason=token-invalid, - token-carrier=header) - X-Clerk-Auth-Reason: - - token-invalid - X-Clerk-Auth-Status: - - signed-out - X-Content-Type-Options: - - nosniff - X-Frame-Options: - - SAMEORIGIN - X-Matched-Path: - - /api/apikey/login - X-Nonce: - - ZjZhMGFlZWMtYWU5MS00ODkyLTlhNzYtYjQ2OGQwMWJlYzFj - X-Vercel-Cache: - - MISS - X-Vercel-Id: - - yul1::iad1::n5gsf-1776435086182-a2d308031d34 - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - User-Agent: - - python-requests/2.33.1 - method: GET - uri: https://staging-api.braintrust.dev/version - response: - body: - string: '{"version":"2.0.0","date_version":"20260417","ff_version":24,"commit":"0d9d9d17b59a872d1cac7f50d67429265387324c","deployment_mode":"lambda","deployment_type":"custom","brainstore_default":"force","brainstore_can_contain_row_refs":true,"skip_pg_config":"all","has_realtime_wal_bucket":true,"brainstore_wal_footer_version":"v3","brainstore_wal_use_efficient_format":true,"has_logs2":true,"js":true,"universal":true,"code_execution":true,"logs3_payload_max_bytes":5242880,"control_plane_telemetry":["status","metrics","logs","traces","memprof","usage"]}' - headers: - Connection: - - keep-alive - Content-Length: - - '550' - Content-Type: - - application/json; charset=utf-8 - Date: - - Fri, 17 Apr 2026 14:11:26 GMT - Via: - - 1.1 8757e4d26d0f26e2f05769a88e8a5ace.cloudfront.net (CloudFront), 1.1 792fd72f7da1e5732d6b6173dea66aa8.cloudfront.net - (CloudFront) - X-Amz-Cf-Id: - - LII8Ru0DaI3ooFr5ubzAOhaL5LOV0jMpJFl_XyUi7AN5OeFYSg38nA== - X-Amz-Cf-Pop: - - YTO53-P2 - - YTO50-P1 - X-Amzn-Trace-Id: - - Root=1-69e23f8e-3fee62a93bdb400149905c68;Parent=170986fa08915806;Sampled=0;Lineage=1:fc3b4ff1:0 - X-Cache: - - Miss from cloudfront - access-control-allow-credentials: - - 'true' - access-control-expose-headers: - - x-bt-cursor,x-bt-found-existing,x-bt-query-plan,x-bt-api-duration-ms,x-bt-brainstore-duration-ms,x-bt-internal-trace-id - etag: - - W/"226-EfRuYziO2Q1Ux8maLsFk5foD01A" - vary: - - Origin - x-amz-apigw-id: - - b97eTEgBIAMEWlg= - x-amzn-Remapped-content-length: - - '550' - x-amzn-RequestId: - - 0eba3715-72d9-42ce-a769-2b4b44eba6d1 - x-bt-internal-trace-id: - - 69e23f8e000000001603621c35868ff2 - status: - code: 200 - message: OK -- request: - body: '{"rows": [{"_is_merge": false, "context": {"caller_filename": "/Users/abhijeetprasad/workspace/braintrust-sdk-python/py/.nox/test_pydantic_ai_integration-latest/lib/python3.14/site-packages/pydantic_ai/direct.py", - "caller_functionname": "_consume_async_stream", "caller_lineno": 384}, "created": - "2026-04-17T14:11:25.985359+00:00", "id": "d5d60ba6-54bd-4623-9e2b-2faa647770c9", - "input": {"instrument": null, "messages": [{"instructions": null, "kind": "request", - "metadata": null, "parts": [{"content": "Hello", "part_kind": "user-prompt", - "timestamp": "2026-04-17 14:11:25.979607+00:00"}], "run_id": null, "timestamp": - null}], "model": "openai:gpt-4o-mini", "model_request_parameters": null, "model_settings": - null}, "log_id": "g", "metadata": {"model": "gpt-4o-mini", "provider": "openai"}, - "metrics": {"start": 1776435085.985357}, "project_id": "test-pydantic-ai-integration", - "root_span_id": "7244eee1-cc67-4fc7-a4d8-028ed419932d", "span_attributes": {"exec_counter": - 99, "name": "model_request_stream", "type": "task"}, "span_id": "9c33f03c-f65d-4112-821d-e00ffb4e85ab", - "span_parents": ["e95b8f26-bd34-4a59-8d82-7d3825f30de3"]},{"_is_merge": false, - "context": {"caller_filename": "/Users/abhijeetprasad/workspace/braintrust-sdk-python/py/.nox/test_pydantic_ai_integration-latest/lib/python3.14/site-packages/pydantic_ai/direct.py", - "caller_functionname": "_consume_async_stream", "caller_lineno": 384}, "created": - "2026-04-17T14:11:25.985494+00:00", "id": "a41906f8-8739-4fbb-860e-2cf5d72a31c7", - "input": {"messages": [{"instructions": null, "kind": "request", "metadata": - null, "parts": [{"content": "Hello", "part_kind": "user-prompt", "timestamp": - "2026-04-17 14:11:25.979607+00:00"}], "run_id": null, "timestamp": null}]}, - "log_id": "g", "metadata": {"model": "gpt-4o-mini", "provider": "openai"}, "metrics": - {"start": 1776435085.985493}, "project_id": "test-pydantic-ai-integration", - "root_span_id": "7244eee1-cc67-4fc7-a4d8-028ed419932d", "span_attributes": {"exec_counter": - 100, "name": "chat gpt-4o-mini", "type": "llm"}, "span_id": "1ec781e0-0f61-4f87-a4d7-7060b3b9c94d", - "span_parents": ["9c33f03c-f65d-4112-821d-e00ffb4e85ab"]}], "api_version": 2}' - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Length: - - '2164' - User-Agent: - - python-requests/2.33.1 - method: POST - uri: https://staging-api.braintrust.dev/logs3 - response: - body: - string: '{"Code":"ForbiddenError","Message":"Missing read access to project_log - id test-pydantic-ai-integration, or the project_log does not exist [user_email=abhijeet@braintrustdata.com] - [user_org=braintrustdata.com] [timestamp=1776435086.658]","InternalTraceId":"69e23f8e00000000654b91e1a53b2f90","Path":"/logs3","Service":"api"}' - headers: - Connection: - - keep-alive - Content-Type: - - application/json; charset=utf-8 - Date: - - Fri, 17 Apr 2026 14:11:26 GMT - Via: - - 1.1 8250156022879efefd7a589c8ba8c706.cloudfront.net (CloudFront), 1.1 875d50fae2ec2fc798461398e3cf2a5a.cloudfront.net - (CloudFront) - X-Amz-Cf-Id: - - VSErQhXoGneXunmh4Hes7_3MreuvOc9D0y8_Tv44xdCz2MLcNp7l6A== - X-Amz-Cf-Pop: - - YTO53-P2 - - YTO50-P1 - X-Amzn-Trace-Id: - - Root=1-69e23f8e-3e34a90f765bf7ac2a414854;Parent=112a8a607893062c;Sampled=0;Lineage=1:fc3b4ff1:0 - X-Cache: - - Error from cloudfront - access-control-allow-credentials: - - 'true' - access-control-expose-headers: - - x-bt-cursor,x-bt-found-existing,x-bt-query-plan,x-bt-api-duration-ms,x-bt-brainstore-duration-ms,x-bt-internal-trace-id - content-length: - - '322' - etag: - - W/"142-H1QtCiJMHY53nEzPCqC2nEua/wo" - vary: - - Origin, Accept-Encoding - x-amz-apigw-id: - - b97eVH1SoAMESyg= - x-amzn-RequestId: - - ce9d6550-2613-455f-ae6b-8ec6bdece4aa - x-bt-internal-trace-id: - - 69e23f8e00000000654b91e1a53b2f90 - status: - code: 403 - message: Forbidden - request: body: '{"messages":[{"role":"user","content":"Hello"}],"model":"gpt-4o-mini","stream":true,"stream_options":{"include_usage":true}}' headers: @@ -229,7 +15,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -252,46 +38,46 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: 'data: {"id":"chatcmpl-DVeCk4YH9fH13YzFr5qWU4R8Yjtak","object":"chat.completion.chunk","created":1776435086,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_3d695acdac","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"iZfzpidea"} + string: 'data: {"id":"chatcmpl-DWmrxjS53OfS5Tnz2IeEsYWRRSAG9","object":"chat.completion.chunk","created":1776706721,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_918210d279","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"6MUNPkX41"} - data: {"id":"chatcmpl-DVeCk4YH9fH13YzFr5qWU4R8Yjtak","object":"chat.completion.chunk","created":1776435086,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_3d695acdac","choices":[{"index":0,"delta":{"content":"Hello"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"9iBJ7V"} + data: {"id":"chatcmpl-DWmrxjS53OfS5Tnz2IeEsYWRRSAG9","object":"chat.completion.chunk","created":1776706721,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_918210d279","choices":[{"index":0,"delta":{"content":"Hello"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"oIgCCu"} - data: {"id":"chatcmpl-DVeCk4YH9fH13YzFr5qWU4R8Yjtak","object":"chat.completion.chunk","created":1776435086,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_3d695acdac","choices":[{"index":0,"delta":{"content":"!"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"AoMMovmiea"} + data: {"id":"chatcmpl-DWmrxjS53OfS5Tnz2IeEsYWRRSAG9","object":"chat.completion.chunk","created":1776706721,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_918210d279","choices":[{"index":0,"delta":{"content":"!"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"l3K8vJvPYi"} - data: {"id":"chatcmpl-DVeCk4YH9fH13YzFr5qWU4R8Yjtak","object":"chat.completion.chunk","created":1776435086,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_3d695acdac","choices":[{"index":0,"delta":{"content":" - How"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"bg5ZT3z"} + data: {"id":"chatcmpl-DWmrxjS53OfS5Tnz2IeEsYWRRSAG9","object":"chat.completion.chunk","created":1776706721,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_918210d279","choices":[{"index":0,"delta":{"content":" + How"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"VPN1KsG"} - data: {"id":"chatcmpl-DVeCk4YH9fH13YzFr5qWU4R8Yjtak","object":"chat.completion.chunk","created":1776435086,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_3d695acdac","choices":[{"index":0,"delta":{"content":" - can"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"y0a0JBh"} + data: {"id":"chatcmpl-DWmrxjS53OfS5Tnz2IeEsYWRRSAG9","object":"chat.completion.chunk","created":1776706721,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_918210d279","choices":[{"index":0,"delta":{"content":" + can"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"zDOXcp4"} - data: {"id":"chatcmpl-DVeCk4YH9fH13YzFr5qWU4R8Yjtak","object":"chat.completion.chunk","created":1776435086,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_3d695acdac","choices":[{"index":0,"delta":{"content":" - I"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"FCXGbaOtB"} + data: {"id":"chatcmpl-DWmrxjS53OfS5Tnz2IeEsYWRRSAG9","object":"chat.completion.chunk","created":1776706721,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_918210d279","choices":[{"index":0,"delta":{"content":" + I"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"lUcT7NxQl"} - data: {"id":"chatcmpl-DVeCk4YH9fH13YzFr5qWU4R8Yjtak","object":"chat.completion.chunk","created":1776435086,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_3d695acdac","choices":[{"index":0,"delta":{"content":" - assist"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Ct0M"} + data: {"id":"chatcmpl-DWmrxjS53OfS5Tnz2IeEsYWRRSAG9","object":"chat.completion.chunk","created":1776706721,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_918210d279","choices":[{"index":0,"delta":{"content":" + assist"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"oI3y"} - data: {"id":"chatcmpl-DVeCk4YH9fH13YzFr5qWU4R8Yjtak","object":"chat.completion.chunk","created":1776435086,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_3d695acdac","choices":[{"index":0,"delta":{"content":" - you"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"xqHxZ6l"} + data: {"id":"chatcmpl-DWmrxjS53OfS5Tnz2IeEsYWRRSAG9","object":"chat.completion.chunk","created":1776706721,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_918210d279","choices":[{"index":0,"delta":{"content":" + you"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"lpd8Htt"} - data: {"id":"chatcmpl-DVeCk4YH9fH13YzFr5qWU4R8Yjtak","object":"chat.completion.chunk","created":1776435086,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_3d695acdac","choices":[{"index":0,"delta":{"content":" - today"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"1z4Yh"} + data: {"id":"chatcmpl-DWmrxjS53OfS5Tnz2IeEsYWRRSAG9","object":"chat.completion.chunk","created":1776706721,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_918210d279","choices":[{"index":0,"delta":{"content":" + today"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"VSxTJ"} - data: {"id":"chatcmpl-DVeCk4YH9fH13YzFr5qWU4R8Yjtak","object":"chat.completion.chunk","created":1776435086,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_3d695acdac","choices":[{"index":0,"delta":{"content":"?"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"z2Xrjp8rCX"} + data: {"id":"chatcmpl-DWmrxjS53OfS5Tnz2IeEsYWRRSAG9","object":"chat.completion.chunk","created":1776706721,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_918210d279","choices":[{"index":0,"delta":{"content":"?"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"jQxEpBsBKx"} - data: {"id":"chatcmpl-DVeCk4YH9fH13YzFr5qWU4R8Yjtak","object":"chat.completion.chunk","created":1776435086,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_3d695acdac","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"5QEXW"} + data: {"id":"chatcmpl-DWmrxjS53OfS5Tnz2IeEsYWRRSAG9","object":"chat.completion.chunk","created":1776706721,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_918210d279","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"5eYdq"} - data: {"id":"chatcmpl-DVeCk4YH9fH13YzFr5qWU4R8Yjtak","object":"chat.completion.chunk","created":1776435086,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_3d695acdac","choices":[],"usage":{"prompt_tokens":8,"completion_tokens":9,"total_tokens":17,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"sq2LlI5GmFFl"} + data: {"id":"chatcmpl-DWmrxjS53OfS5Tnz2IeEsYWRRSAG9","object":"chat.completion.chunk","created":1776706721,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_918210d279","choices":[],"usage":{"prompt_tokens":8,"completion_tokens":9,"total_tokens":17,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"m7K3Zd5yzhwX"} data: [DONE] @@ -302,13 +88,13 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc04d89c6a2659-YYZ + - 9ef5ec927ad0ab7e-YYZ Connection: - keep-alive Content-Type: - text/event-stream; charset=utf-8 Date: - - Fri, 17 Apr 2026 14:11:26 GMT + - Mon, 20 Apr 2026 17:38:42 GMT Server: - cloudflare Strict-Transport-Security: @@ -324,15 +110,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '688' + - '1071' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=lvU5aHahdZXg3o7WBGCaBMqNGb8D8dv.OL_VH4wf.7c-1776435086.1744266-1.0.1.1-UaeYfqnmVSKEWXbs0ppfRuekK6URrEnpcJTyF09lfj3DO_D5wMJhbOsKKRUEaVtXFPnilVq5kwIe45FOpG80h3chcoSM_5dRR9yS3Rm0SG2ejiWa.kfft_gpVBaAYRp2; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:41:26 GMT + - __cf_bm=PoJoxGsjbzrnK91ecpniIwiP5Ni7mBAmfy3Ydy.AUB8-1776706721.675978-1.0.1.1-jn1XZTRpw0zXH9S.gjL3alZvuxJOoaWiEy_59UoYzett8XMQXD8uSdL_nFyPHclvhcQnPR7i0E8EYhlKTaMcZClj8Z04pH5g5GQt6NcPP0bcvIg30.mZ87jBxgqcBlKW; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 18:08:42 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -348,7 +134,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_166c480b011f4a38b50683235044d028 + - req_9bdcb5142cb64aed93f60029a89f8da2 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_multiple_identical_sequential_streams.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_multiple_identical_sequential_streams.yaml index 3f25cada..e1746baa 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_multiple_identical_sequential_streams.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_multiple_identical_sequential_streams.yaml @@ -15,7 +15,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -38,39 +38,39 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: 'data: {"id":"chatcmpl-DVeBnnymeAPFB1NLKzdCsTONMQHSR","object":"chat.completion.chunk","created":1776435027,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"EdyG1cEph"} + string: 'data: {"id":"chatcmpl-DWmZrBV4WzqTFwCeFWguLaOICxyzn","object":"chat.completion.chunk","created":1776705599,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_b8fcb14f26","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"GSvL2ez4N"} - data: {"id":"chatcmpl-DVeBnnymeAPFB1NLKzdCsTONMQHSR","object":"chat.completion.chunk","created":1776435027,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"1"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"DSRTSujLJi"} + data: {"id":"chatcmpl-DWmZrBV4WzqTFwCeFWguLaOICxyzn","object":"chat.completion.chunk","created":1776705599,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_b8fcb14f26","choices":[{"index":0,"delta":{"content":"1"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"ysypH1yhTS"} - data: {"id":"chatcmpl-DVeBnnymeAPFB1NLKzdCsTONMQHSR","object":"chat.completion.chunk","created":1776435027,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"pxGDUQcjl2"} + data: {"id":"chatcmpl-DWmZrBV4WzqTFwCeFWguLaOICxyzn","object":"chat.completion.chunk","created":1776705599,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_b8fcb14f26","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"oi5F6lyHlG"} - data: {"id":"chatcmpl-DVeBnnymeAPFB1NLKzdCsTONMQHSR","object":"chat.completion.chunk","created":1776435027,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"cLEorCuHaJ"} + data: {"id":"chatcmpl-DWmZrBV4WzqTFwCeFWguLaOICxyzn","object":"chat.completion.chunk","created":1776705599,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_b8fcb14f26","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"DSKIZNKJQ2"} - data: {"id":"chatcmpl-DVeBnnymeAPFB1NLKzdCsTONMQHSR","object":"chat.completion.chunk","created":1776435027,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"2"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"VEuIs4Tyl2"} + data: {"id":"chatcmpl-DWmZrBV4WzqTFwCeFWguLaOICxyzn","object":"chat.completion.chunk","created":1776705599,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_b8fcb14f26","choices":[{"index":0,"delta":{"content":"2"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"gcmOzO1Luy"} - data: {"id":"chatcmpl-DVeBnnymeAPFB1NLKzdCsTONMQHSR","object":"chat.completion.chunk","created":1776435027,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"9oZeFHYOqG"} + data: {"id":"chatcmpl-DWmZrBV4WzqTFwCeFWguLaOICxyzn","object":"chat.completion.chunk","created":1776705599,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_b8fcb14f26","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"xggNXyMudn"} - data: {"id":"chatcmpl-DVeBnnymeAPFB1NLKzdCsTONMQHSR","object":"chat.completion.chunk","created":1776435027,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Q972cnW8FG"} + data: {"id":"chatcmpl-DWmZrBV4WzqTFwCeFWguLaOICxyzn","object":"chat.completion.chunk","created":1776705599,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_b8fcb14f26","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"XCpHiRabRE"} - data: {"id":"chatcmpl-DVeBnnymeAPFB1NLKzdCsTONMQHSR","object":"chat.completion.chunk","created":1776435027,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"3"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"rp4Oyli10W"} + data: {"id":"chatcmpl-DWmZrBV4WzqTFwCeFWguLaOICxyzn","object":"chat.completion.chunk","created":1776705599,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_b8fcb14f26","choices":[{"index":0,"delta":{"content":"3"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"of0ZtumEtP"} - data: {"id":"chatcmpl-DVeBnnymeAPFB1NLKzdCsTONMQHSR","object":"chat.completion.chunk","created":1776435027,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"dsjVZ007Fq"} + data: {"id":"chatcmpl-DWmZrBV4WzqTFwCeFWguLaOICxyzn","object":"chat.completion.chunk","created":1776705599,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_b8fcb14f26","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"3LpFQEM3VR"} - data: {"id":"chatcmpl-DVeBnnymeAPFB1NLKzdCsTONMQHSR","object":"chat.completion.chunk","created":1776435027,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"xvYA2"} + data: {"id":"chatcmpl-DWmZrBV4WzqTFwCeFWguLaOICxyzn","object":"chat.completion.chunk","created":1776705599,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_b8fcb14f26","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"D2iMU"} - data: {"id":"chatcmpl-DVeBnnymeAPFB1NLKzdCsTONMQHSR","object":"chat.completion.chunk","created":1776435027,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[],"usage":{"prompt_tokens":15,"completion_tokens":8,"total_tokens":23,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"lMmM1ItsVPu"} + data: {"id":"chatcmpl-DWmZrBV4WzqTFwCeFWguLaOICxyzn","object":"chat.completion.chunk","created":1776705599,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_b8fcb14f26","choices":[],"usage":{"prompt_tokens":15,"completion_tokens":8,"total_tokens":23,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"01yxXA3TNxH"} data: [DONE] @@ -81,13 +81,13 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc036bb8a9a3f1-YYZ + - 9ef5d12baf1b74a7-YYZ Connection: - keep-alive Content-Type: - text/event-stream; charset=utf-8 Date: - - Fri, 17 Apr 2026 14:10:28 GMT + - Mon, 20 Apr 2026 17:19:59 GMT Server: - cloudflare Strict-Transport-Security: @@ -103,15 +103,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '225' + - '167' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=0.A8OlNRw9zywHYOqTVlDSGaNnQlPsReaR1rq0gBQdk-1776435027.797297-1.0.1.1-.4nDm9TpGmaDVnLar48iT1XvdJNjTdVGtJeTcRro8yAf.7I8mi3T8SwlRfmZf9KQmVSXMUAiztgtuvL6Z4QyVUiDUuJWdwhqcJAvUyTHSTBjviijjJx.nXycZ_JzHE0C; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:28 GMT + - __cf_bm=Rd54OdfQl827RJWMmS.yfqgSjorxQeOazHM2e.ykO3Q-1776705599.3020618-1.0.1.1-inTTc0EOA3eV4MJDG9CBv9szmsEsTvdZMX_9K0nqWpwjncI1IOHVv8eGTTr9WOnVJRf4LZDO.aqBJUTqVCIdsk2qxj_fCZRzRes_5eKJ9vX_Y.yaoFZKGCkFLBMDDRmZ; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:49:59 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -127,7 +127,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_f1b7e52b054848f3b296422e560be8f4 + - req_7642773a82ad4d828fcee9be8027c488 status: code: 200 message: OK @@ -147,7 +147,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -170,39 +170,39 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: 'data: {"id":"chatcmpl-DVeBpTDgUOfsfqASf4Dan28p2df3i","object":"chat.completion.chunk","created":1776435029,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"kEs2Lg5vD"} + string: 'data: {"id":"chatcmpl-DWmZrZaqGG39479I1GTLdRfO7hqVV","object":"chat.completion.chunk","created":1776705599,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"b3XZz9jk5"} - data: {"id":"chatcmpl-DVeBpTDgUOfsfqASf4Dan28p2df3i","object":"chat.completion.chunk","created":1776435029,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"1"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"NU5Iz6UOsQ"} + data: {"id":"chatcmpl-DWmZrZaqGG39479I1GTLdRfO7hqVV","object":"chat.completion.chunk","created":1776705599,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":"1"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"2MOEnEGB4e"} - data: {"id":"chatcmpl-DVeBpTDgUOfsfqASf4Dan28p2df3i","object":"chat.completion.chunk","created":1776435029,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"nxzZ0HOUr8"} + data: {"id":"chatcmpl-DWmZrZaqGG39479I1GTLdRfO7hqVV","object":"chat.completion.chunk","created":1776705599,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"wBKymNUTLn"} - data: {"id":"chatcmpl-DVeBpTDgUOfsfqASf4Dan28p2df3i","object":"chat.completion.chunk","created":1776435029,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"y5lWUqm2Dz"} + data: {"id":"chatcmpl-DWmZrZaqGG39479I1GTLdRfO7hqVV","object":"chat.completion.chunk","created":1776705599,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"somoaos93w"} - data: {"id":"chatcmpl-DVeBpTDgUOfsfqASf4Dan28p2df3i","object":"chat.completion.chunk","created":1776435029,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"2"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"UOPd7kpvzu"} + data: {"id":"chatcmpl-DWmZrZaqGG39479I1GTLdRfO7hqVV","object":"chat.completion.chunk","created":1776705599,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":"2"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"gxDBRNqAYq"} - data: {"id":"chatcmpl-DVeBpTDgUOfsfqASf4Dan28p2df3i","object":"chat.completion.chunk","created":1776435029,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"KTj3iRiOYj"} + data: {"id":"chatcmpl-DWmZrZaqGG39479I1GTLdRfO7hqVV","object":"chat.completion.chunk","created":1776705599,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"RYQDWM6zh1"} - data: {"id":"chatcmpl-DVeBpTDgUOfsfqASf4Dan28p2df3i","object":"chat.completion.chunk","created":1776435029,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"ZlLNVCMChF"} + data: {"id":"chatcmpl-DWmZrZaqGG39479I1GTLdRfO7hqVV","object":"chat.completion.chunk","created":1776705599,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"V2T1nX6D7K"} - data: {"id":"chatcmpl-DVeBpTDgUOfsfqASf4Dan28p2df3i","object":"chat.completion.chunk","created":1776435029,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"3"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"EuBagYRvcG"} + data: {"id":"chatcmpl-DWmZrZaqGG39479I1GTLdRfO7hqVV","object":"chat.completion.chunk","created":1776705599,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":"3"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"zGOPPILiGj"} - data: {"id":"chatcmpl-DVeBpTDgUOfsfqASf4Dan28p2df3i","object":"chat.completion.chunk","created":1776435029,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"1Edfb6klvW"} + data: {"id":"chatcmpl-DWmZrZaqGG39479I1GTLdRfO7hqVV","object":"chat.completion.chunk","created":1776705599,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"beoSTScTq2"} - data: {"id":"chatcmpl-DVeBpTDgUOfsfqASf4Dan28p2df3i","object":"chat.completion.chunk","created":1776435029,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"Xz762"} + data: {"id":"chatcmpl-DWmZrZaqGG39479I1GTLdRfO7hqVV","object":"chat.completion.chunk","created":1776705599,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"FCxiA"} - data: {"id":"chatcmpl-DVeBpTDgUOfsfqASf4Dan28p2df3i","object":"chat.completion.chunk","created":1776435029,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[],"usage":{"prompt_tokens":15,"completion_tokens":8,"total_tokens":23,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"gxZIdVkGq0G"} + data: {"id":"chatcmpl-DWmZrZaqGG39479I1GTLdRfO7hqVV","object":"chat.completion.chunk","created":1776705599,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[],"usage":{"prompt_tokens":15,"completion_tokens":8,"total_tokens":23,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"Q4EFp8cdyZx"} data: [DONE] @@ -213,13 +213,13 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc03767fd111fc-YYZ + - 9ef5d12e9ef31d7b-YYZ Connection: - keep-alive Content-Type: - text/event-stream; charset=utf-8 Date: - - Fri, 17 Apr 2026 14:10:29 GMT + - Mon, 20 Apr 2026 17:20:00 GMT Server: - cloudflare Strict-Transport-Security: @@ -235,15 +235,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '175' + - '287' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=gRAl6A8Mo.LmtQFCLZBb9rRrdHKkkf4QP4CqO2x2aO8-1776435029.5166066-1.0.1.1-G0HuqlTzzO1bzvCnvPKsLgoZLXQCU8TyW1k6E3PLX0UK1gHKFGhPhGc7xXpvj3pfsuhNWUmHg_W8jiSZndwheUcT4qsUp0jAyl29.DBwJC2oksI.w02bzHmsArIo_BD.; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:29 GMT + - __cf_bm=9gciylT5xlUXIEJh8tq8kHDVmqZ29kb5pSaVLJCBiUo-1776705599.780549-1.0.1.1-MmuKZ7XS2YItpgQQwfY8iciAMk5BMu7hyLIVKaxH8Ip6AgNg1P4flZguAgV7oMbhyEkkNyY_xcUX8fupvvFsrRAfPiGGiUeyrwF3MsQhG971XApQr7gZZrnoz6k0MR3Q; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:50:00 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -259,7 +259,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_42c33b53764f4fa385984d7fb5780770 + - req_88df43ca30ae4bd8b254e7302e92c243 status: code: 200 message: OK @@ -279,7 +279,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -302,39 +302,39 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: 'data: {"id":"chatcmpl-DVeBrD2XsZKrVM5N7dfeGKlujXt0q","object":"chat.completion.chunk","created":1776435031,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"iS2famDEI"} + string: 'data: {"id":"chatcmpl-DWmZsZQzedBiPvFakDTnPi32tH7a7","object":"chat.completion.chunk","created":1776705600,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"GGOSrLXsK"} - data: {"id":"chatcmpl-DVeBrD2XsZKrVM5N7dfeGKlujXt0q","object":"chat.completion.chunk","created":1776435031,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"1"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"GACHQcWMXW"} + data: {"id":"chatcmpl-DWmZsZQzedBiPvFakDTnPi32tH7a7","object":"chat.completion.chunk","created":1776705600,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":"1"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"FAKwdhMdIu"} - data: {"id":"chatcmpl-DVeBrD2XsZKrVM5N7dfeGKlujXt0q","object":"chat.completion.chunk","created":1776435031,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"U8Zd4tRiP9"} + data: {"id":"chatcmpl-DWmZsZQzedBiPvFakDTnPi32tH7a7","object":"chat.completion.chunk","created":1776705600,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"zHn6S0N1wL"} - data: {"id":"chatcmpl-DVeBrD2XsZKrVM5N7dfeGKlujXt0q","object":"chat.completion.chunk","created":1776435031,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"UAtD7vBdN5"} + data: {"id":"chatcmpl-DWmZsZQzedBiPvFakDTnPi32tH7a7","object":"chat.completion.chunk","created":1776705600,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"eigbByVO8J"} - data: {"id":"chatcmpl-DVeBrD2XsZKrVM5N7dfeGKlujXt0q","object":"chat.completion.chunk","created":1776435031,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"2"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"B0ZtmoEWUB"} + data: {"id":"chatcmpl-DWmZsZQzedBiPvFakDTnPi32tH7a7","object":"chat.completion.chunk","created":1776705600,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":"2"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"iqs1SuyIao"} - data: {"id":"chatcmpl-DVeBrD2XsZKrVM5N7dfeGKlujXt0q","object":"chat.completion.chunk","created":1776435031,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Fk4mSaWiKs"} + data: {"id":"chatcmpl-DWmZsZQzedBiPvFakDTnPi32tH7a7","object":"chat.completion.chunk","created":1776705600,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"80kd6XKj1s"} - data: {"id":"chatcmpl-DVeBrD2XsZKrVM5N7dfeGKlujXt0q","object":"chat.completion.chunk","created":1776435031,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"elLCWumg99"} + data: {"id":"chatcmpl-DWmZsZQzedBiPvFakDTnPi32tH7a7","object":"chat.completion.chunk","created":1776705600,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"HHWWbFHy5o"} - data: {"id":"chatcmpl-DVeBrD2XsZKrVM5N7dfeGKlujXt0q","object":"chat.completion.chunk","created":1776435031,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"3"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"quqT8RLKxF"} + data: {"id":"chatcmpl-DWmZsZQzedBiPvFakDTnPi32tH7a7","object":"chat.completion.chunk","created":1776705600,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":"3"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"8GkVz7fEoI"} - data: {"id":"chatcmpl-DVeBrD2XsZKrVM5N7dfeGKlujXt0q","object":"chat.completion.chunk","created":1776435031,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"7kBusLiBCe"} + data: {"id":"chatcmpl-DWmZsZQzedBiPvFakDTnPi32tH7a7","object":"chat.completion.chunk","created":1776705600,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"oQ8BJRbJsk"} - data: {"id":"chatcmpl-DVeBrD2XsZKrVM5N7dfeGKlujXt0q","object":"chat.completion.chunk","created":1776435031,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"uxAng"} + data: {"id":"chatcmpl-DWmZsZQzedBiPvFakDTnPi32tH7a7","object":"chat.completion.chunk","created":1776705600,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"tz1EY"} - data: {"id":"chatcmpl-DVeBrD2XsZKrVM5N7dfeGKlujXt0q","object":"chat.completion.chunk","created":1776435031,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[],"usage":{"prompt_tokens":15,"completion_tokens":8,"total_tokens":23,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"dz0eTlY6rh6"} + data: {"id":"chatcmpl-DWmZsZQzedBiPvFakDTnPi32tH7a7","object":"chat.completion.chunk","created":1776705600,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[],"usage":{"prompt_tokens":15,"completion_tokens":8,"total_tokens":23,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"jufmiAtegen"} data: [DONE] @@ -345,13 +345,13 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc0380df12dc46-YYZ + - 9ef5d1322b38369d-YYZ Connection: - keep-alive Content-Type: - text/event-stream; charset=utf-8 Date: - - Fri, 17 Apr 2026 14:10:31 GMT + - Mon, 20 Apr 2026 17:20:00 GMT Server: - cloudflare Strict-Transport-Security: @@ -367,15 +367,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '397' + - '243' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=g7nSUdwOG.K2ben2RFesIZna3xFYyKGAQXTgZZ7I9R0-1776435031.1747413-1.0.1.1-FZ2XH9NUqGia4z79Eaw0APiDSSra4.rZ9B0xNEU0aS4ZDg.PjzpWpXVxQJVon9fTY_8ROjNSQyKfATXD2uUWl0BRRV0BpeD1dtSTnVn3hnvJsWYjybh3JJ2enRC2CT8K; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:31 GMT + - __cf_bm=P6eTmsCKkfM.yaQJhc6mGgJIFQNVvqARggx2QUuRnMk-1776705600.3478575-1.0.1.1-3TkJ_eJ__dQnjQUzdOfU8eS6TtcWZnbAg74sx8rc5Rz_QtK45E0tBMdYxInTNY0ny_qUJ4aTxArSTmc835lvf2WurUTmp_c0..C14MvWXfU6gnr6auwX9Aqv9KYuGCY4; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:50:00 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -391,7 +391,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_7380aa48d9074e44b776c4060a22479b + - req_75903168421e4d9eaa5cc5b9ef30a38a status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_multiple_sequential_streams.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_multiple_sequential_streams.yaml index adf04345..e5259f6a 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_multiple_sequential_streams.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_multiple_sequential_streams.yaml @@ -15,7 +15,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -38,39 +38,39 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: 'data: {"id":"chatcmpl-DVeBs2WSeitThRwbXuEFDZcjpnJPn","object":"chat.completion.chunk","created":1776435032,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"0G7s7JGdm"} + string: 'data: {"id":"chatcmpl-DWmZtGc5eQr056qi6xZCvonqHAizg","object":"chat.completion.chunk","created":1776705601,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"NCmqTXam0"} - data: {"id":"chatcmpl-DVeBs2WSeitThRwbXuEFDZcjpnJPn","object":"chat.completion.chunk","created":1776435032,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"1"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"hPwwGPKM6l"} + data: {"id":"chatcmpl-DWmZtGc5eQr056qi6xZCvonqHAizg","object":"chat.completion.chunk","created":1776705601,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":"1"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"5fR6FvmOxu"} - data: {"id":"chatcmpl-DVeBs2WSeitThRwbXuEFDZcjpnJPn","object":"chat.completion.chunk","created":1776435032,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"RocjCiOweg"} + data: {"id":"chatcmpl-DWmZtGc5eQr056qi6xZCvonqHAizg","object":"chat.completion.chunk","created":1776705601,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Myhxtuvnlt"} - data: {"id":"chatcmpl-DVeBs2WSeitThRwbXuEFDZcjpnJPn","object":"chat.completion.chunk","created":1776435032,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Npn3MNcTOZ"} + data: {"id":"chatcmpl-DWmZtGc5eQr056qi6xZCvonqHAizg","object":"chat.completion.chunk","created":1776705601,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Z8Tnxhs1c8"} - data: {"id":"chatcmpl-DVeBs2WSeitThRwbXuEFDZcjpnJPn","object":"chat.completion.chunk","created":1776435032,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"2"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"zMkN7qqtRg"} + data: {"id":"chatcmpl-DWmZtGc5eQr056qi6xZCvonqHAizg","object":"chat.completion.chunk","created":1776705601,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":"2"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"VGwF8Psx2h"} - data: {"id":"chatcmpl-DVeBs2WSeitThRwbXuEFDZcjpnJPn","object":"chat.completion.chunk","created":1776435032,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"fnm9jMbrdg"} + data: {"id":"chatcmpl-DWmZtGc5eQr056qi6xZCvonqHAizg","object":"chat.completion.chunk","created":1776705601,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"2T1xipG7oQ"} - data: {"id":"chatcmpl-DVeBs2WSeitThRwbXuEFDZcjpnJPn","object":"chat.completion.chunk","created":1776435032,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"jPM2mOuMKJ"} + data: {"id":"chatcmpl-DWmZtGc5eQr056qi6xZCvonqHAizg","object":"chat.completion.chunk","created":1776705601,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"pgbczfkl5D"} - data: {"id":"chatcmpl-DVeBs2WSeitThRwbXuEFDZcjpnJPn","object":"chat.completion.chunk","created":1776435032,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"3"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"u4jReaRScO"} + data: {"id":"chatcmpl-DWmZtGc5eQr056qi6xZCvonqHAizg","object":"chat.completion.chunk","created":1776705601,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":"3"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"gc4YJKPKvr"} - data: {"id":"chatcmpl-DVeBs2WSeitThRwbXuEFDZcjpnJPn","object":"chat.completion.chunk","created":1776435032,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"BLiop4NSof"} + data: {"id":"chatcmpl-DWmZtGc5eQr056qi6xZCvonqHAizg","object":"chat.completion.chunk","created":1776705601,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"OVg5SObqJg"} - data: {"id":"chatcmpl-DVeBs2WSeitThRwbXuEFDZcjpnJPn","object":"chat.completion.chunk","created":1776435032,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"mQLXV"} + data: {"id":"chatcmpl-DWmZtGc5eQr056qi6xZCvonqHAizg","object":"chat.completion.chunk","created":1776705601,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"f9Osn"} - data: {"id":"chatcmpl-DVeBs2WSeitThRwbXuEFDZcjpnJPn","object":"chat.completion.chunk","created":1776435032,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[],"usage":{"prompt_tokens":15,"completion_tokens":8,"total_tokens":23,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"PiRp9RrWfo3"} + data: {"id":"chatcmpl-DWmZtGc5eQr056qi6xZCvonqHAizg","object":"chat.completion.chunk","created":1776705601,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[],"usage":{"prompt_tokens":15,"completion_tokens":8,"total_tokens":23,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"uDznpBFJCJy"} data: [DONE] @@ -81,13 +81,13 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc038a9c79713b-YYZ + - 9ef5d1362f1fab27-YYZ Connection: - keep-alive Content-Type: - text/event-stream; charset=utf-8 Date: - - Fri, 17 Apr 2026 14:10:33 GMT + - Mon, 20 Apr 2026 17:20:01 GMT Server: - cloudflare Strict-Transport-Security: @@ -103,15 +103,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '210' + - '221' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=bFJuxjpxq7gslGBxNP20c73dW2LqvQjfOasAPRv3X38-1776435032.7412527-1.0.1.1-AzhR6aeEHt.a3632DdhCN0_GWuooSqes1ZdxL24403592fUgOVCyjP312PRdE4t7YF3igwTA..NFYDD03GvVe0CfUZt0bc2eKNT8GoR4pM.o5pSgXzNIH1kx6G_3Rh99; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:33 GMT + - __cf_bm=27rD9Oh8eQZWxmfoZ4rU_6hZk308DlccsduxYvx7NLM-1776705600.9909997-1.0.1.1-cF.cj0l45iFnKPvJUY81Rb3uXGPdZWTLkQGaUfOoDLZ4CPI0yjhhNxX33fa3gGQPNwxBzlSWcg7gUk4etoRLD.BmuQSl0dtI.2L7123xCQh.XYvZAxfMN.Q_h2RG6eoo; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:50:01 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -127,7 +127,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_287354513b394b509668b79fa1af4875 + - req_048462bfb68c4901aec7a1a2459a9218 status: code: 200 message: OK @@ -147,7 +147,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -170,39 +170,39 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: 'data: {"id":"chatcmpl-DVeBtBFT4kc1bB7qCP5gQRRjQyRVT","object":"chat.completion.chunk","created":1776435033,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"GuD7Od8Ba"} + string: 'data: {"id":"chatcmpl-DWmZtzXWgPRLOphP2kKYxqOnY6Pef","object":"chat.completion.chunk","created":1776705601,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"plWgW4T1K"} - data: {"id":"chatcmpl-DVeBtBFT4kc1bB7qCP5gQRRjQyRVT","object":"chat.completion.chunk","created":1776435033,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"1"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"gVygadyF2J"} + data: {"id":"chatcmpl-DWmZtzXWgPRLOphP2kKYxqOnY6Pef","object":"chat.completion.chunk","created":1776705601,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":"1"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"AaGXInnjeo"} - data: {"id":"chatcmpl-DVeBtBFT4kc1bB7qCP5gQRRjQyRVT","object":"chat.completion.chunk","created":1776435033,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"zLl1MHCxw8"} + data: {"id":"chatcmpl-DWmZtzXWgPRLOphP2kKYxqOnY6Pef","object":"chat.completion.chunk","created":1776705601,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"9LpqMKJKjy"} - data: {"id":"chatcmpl-DVeBtBFT4kc1bB7qCP5gQRRjQyRVT","object":"chat.completion.chunk","created":1776435033,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"OxMUZmuYvn"} + data: {"id":"chatcmpl-DWmZtzXWgPRLOphP2kKYxqOnY6Pef","object":"chat.completion.chunk","created":1776705601,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"iUCJqiUQeG"} - data: {"id":"chatcmpl-DVeBtBFT4kc1bB7qCP5gQRRjQyRVT","object":"chat.completion.chunk","created":1776435033,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"2"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"x7JNELdzeJ"} + data: {"id":"chatcmpl-DWmZtzXWgPRLOphP2kKYxqOnY6Pef","object":"chat.completion.chunk","created":1776705601,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":"2"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"McATSKz9SO"} - data: {"id":"chatcmpl-DVeBtBFT4kc1bB7qCP5gQRRjQyRVT","object":"chat.completion.chunk","created":1776435033,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"uK4zLIpOv9"} + data: {"id":"chatcmpl-DWmZtzXWgPRLOphP2kKYxqOnY6Pef","object":"chat.completion.chunk","created":1776705601,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"o0S0kcH2li"} - data: {"id":"chatcmpl-DVeBtBFT4kc1bB7qCP5gQRRjQyRVT","object":"chat.completion.chunk","created":1776435033,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"FZNURUNBxb"} + data: {"id":"chatcmpl-DWmZtzXWgPRLOphP2kKYxqOnY6Pef","object":"chat.completion.chunk","created":1776705601,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"uRxIIGvFGu"} - data: {"id":"chatcmpl-DVeBtBFT4kc1bB7qCP5gQRRjQyRVT","object":"chat.completion.chunk","created":1776435033,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"3"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"x5oRQZLkyH"} + data: {"id":"chatcmpl-DWmZtzXWgPRLOphP2kKYxqOnY6Pef","object":"chat.completion.chunk","created":1776705601,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":"3"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"JOqbAIB4Sm"} - data: {"id":"chatcmpl-DVeBtBFT4kc1bB7qCP5gQRRjQyRVT","object":"chat.completion.chunk","created":1776435033,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Dj2WjHeHG5"} + data: {"id":"chatcmpl-DWmZtzXWgPRLOphP2kKYxqOnY6Pef","object":"chat.completion.chunk","created":1776705601,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"LezYs2reoj"} - data: {"id":"chatcmpl-DVeBtBFT4kc1bB7qCP5gQRRjQyRVT","object":"chat.completion.chunk","created":1776435033,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"j3Oiu"} + data: {"id":"chatcmpl-DWmZtzXWgPRLOphP2kKYxqOnY6Pef","object":"chat.completion.chunk","created":1776705601,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"HyUWJ"} - data: {"id":"chatcmpl-DVeBtBFT4kc1bB7qCP5gQRRjQyRVT","object":"chat.completion.chunk","created":1776435033,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[],"usage":{"prompt_tokens":15,"completion_tokens":8,"total_tokens":23,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"D8L76ijKcJO"} + data: {"id":"chatcmpl-DWmZtzXWgPRLOphP2kKYxqOnY6Pef","object":"chat.completion.chunk","created":1776705601,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_4debc47fe0","choices":[],"usage":{"prompt_tokens":15,"completion_tokens":8,"total_tokens":23,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"UCaQEEHUqr9"} data: [DONE] @@ -213,13 +213,13 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc038eb832ae18-YYZ + - 9ef5d1397e0844b0-YYZ Connection: - keep-alive Content-Type: - text/event-stream; charset=utf-8 Date: - - Fri, 17 Apr 2026 14:10:33 GMT + - Mon, 20 Apr 2026 17:20:02 GMT Server: - cloudflare Strict-Transport-Security: @@ -235,15 +235,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '217' + - '459' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=Zpy.W7Hj0_NuSrZanKJTmKY.QHTTP7O.8IhvDIdYdzI-1776435033.3933558-1.0.1.1-c40wvhT0Cdo0ZfWq8LEKukjIwGufIkW7r6XYf37E_9TSICSQZg.5f2qInCvm8Fk34BdOwFdRK770xH_ywdAZupoOD_dBLBffxRaUv64UvJkjiiFXwbzaDsJbJmQ9yJao; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:33 GMT + - __cf_bm=lEkjPHCofMPIsCoKlOOsmDzpvWM6QnBnOn3lckV5N64-1776705601.5200646-1.0.1.1-40fJ7XVIGQT2GPnxj3pUl70NdD4LGaq8ldbeu4zHGXfLfz.okzk8xiRDhVGmd2YqIU.jQTh0wlRps9QCgSgJOeQAisadzx4qstXGLT_NU110A2DwURAeSpkMhvdq.WV6; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:50:02 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -259,7 +259,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_77fae1f139de4674bb37b63fa86c4d34 + - req_cffbe5b60dfd4c62a43ffd6c921d5774 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_no_model_agent_run.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_no_model_agent_run.yaml index 9e872d46..1abae11a 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_no_model_agent_run.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_no_model_agent_run.yaml @@ -16,7 +16,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -39,8 +39,8 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeCcZJNpw6rlTuHMbFrOQicae5HA\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435078,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmaQ8a5xWgEerIysuENgOLC8dkm6\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705634,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"4\",\n \"refusal\": null,\n \ \"annotations\": []\n },\n \"logprobs\": null,\n \"finish_reason\": @@ -49,18 +49,18 @@ interactions: 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_fe7a5277a8\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_a7190374f3\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc04a8afed90a8-YYZ + - 9ef5d208ce4b299a-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:11:18 GMT + - Mon, 20 Apr 2026 17:20:34 GMT Server: - cloudflare Strict-Transport-Security: @@ -78,15 +78,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '330' + - '231' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=Rlh3_uWkh8seaNDpRBDkyOCljJASWp6ACO1uQTDOfLM-1776435078.5086265-1.0.1.1-pQzRLSLDqxLRCCdCr.HbExqj_Q7A3yZESy6AEpLf3L3JUWIl6x.mXKAr_sFSOyR2Po8kffUUhFp4G1e0uJVcrhw05w4FJkbavlvH0tmczHGNEJZ9hppmzXAkYtMtVQgX; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:41:18 GMT + - __cf_bm=9fh8ynmfl8XPyQo2xFQLhL50bXq9gd2OgwwGjjc8tsg-1776705634.6882544-1.0.1.1-nn8ZNjsmH8RaJagY3rGyhAi3MeLMz3kTuJ1W6BtrlIeQMGjR4btnyBUt7_vUnUjHSAD_nsD71NedgL6Av5LQuwml6o4frrHiVtLMxqiTsIEx6t2zARUDLCcnZ4.Zd_p.; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:50:34 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -102,7 +102,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_633a00b1728c4da7b1a8eff1975d56a8 + - req_b83ea69b9f5a408e80a6c2c15724464c status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_no_model_agent_run_with_logfire.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_no_model_agent_run_with_logfire.yaml index 0c8c5896..c4d11d0f 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_no_model_agent_run_with_logfire.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_no_model_agent_run_with_logfire.yaml @@ -16,7 +16,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -39,8 +39,8 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeD8JLSC0gJWiVmd8LTl7Mbs38L7\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435110,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmb9Y3edtdzphD0yBVJDTetgLSIr\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705679,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"4\",\n \"refusal\": null,\n \ \"annotations\": []\n },\n \"logprobs\": null,\n \"finish_reason\": @@ -49,18 +49,18 @@ interactions: 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_fe7a5277a8\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_a7190374f3\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc05725c51c730-YYZ + - 9ef5d3216b57b1a2-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:11:51 GMT + - Mon, 20 Apr 2026 17:21:20 GMT Server: - cloudflare Strict-Transport-Security: @@ -78,15 +78,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '304' + - '308' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=rOt6sduzVLQQXoOOATwIBydoIgfBPjXqKsBnCPuwYJY-1776435110.7784715-1.0.1.1-5vnIm891k8j7528lOTSGzCaMQhfRo8756wjJd.3Sfd0tzo_botMFtyr_sC9LxGxgjevkR8fKCZkjwNm7j216AzfOhgcehH5PABaNrPHWP_T3B5WudoZVmyJKq7kjo0Mk; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:41:51 GMT + - __cf_bm=9L9Ul4SIuBZSUb6IHDtEnm9tuciGTdSqHQ1XHxsWo9w-1776705679.5867212-1.0.1.1-3DXQ8Fr3ISD9tgoDIB.I4QzVUNO5qFHZqWMFf4ul4hB.Xn2ssh8.ZqMqMsH6yeom0TotjF3JV3X6b9hL5T55eVGtoREQyiZyvDC.DnXZOrRA.JFCJ6hHceT.yx.PJb8F; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:51:20 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -102,7 +102,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_1383d67d8ecc4f73bc95cceecb404400 + - req_e935c29847b04d099ecdb966fe854f4e status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_pydantic_wrapped_completion.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_pydantic_wrapped_completion.yaml index 829e9e9f..bd7f19ed 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_pydantic_wrapped_completion.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_pydantic_wrapped_completion.yaml @@ -15,7 +15,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -38,14 +38,14 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeDRiltUPSfWSuj8egcQIHdtdYcr\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435129,\n \"model\": \"gpt-3.5-turbo-0125\",\n + string: "{\n \"id\": \"chatcmpl-DWmauanDZHsvmdywOf0ENI3GLoR1i\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705664,\n \"model\": \"gpt-3.5-turbo-0125\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"Rome\",\n \"refusal\": null,\n - \ \"annotations\": []\n },\n \"logprobs\": null,\n \"finish_reason\": - \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 14,\n \"completion_tokens\": - 2,\n \"total_tokens\": 16,\n \"prompt_tokens_details\": {\n \"cached_tokens\": - 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + \"assistant\",\n \"content\": \"The capital of Italy is Rome.\",\n + \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": + null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 14,\n \"completion_tokens\": 7,\n \"total_tokens\": 21,\n \"prompt_tokens_details\": + {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": \"default\",\n \"system_fingerprint\": null\n}\n" @@ -53,13 +53,13 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc05e849fe35ae-YYZ + - 9ef5d2c41baaf80a-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:12:09 GMT + - Mon, 20 Apr 2026 17:21:05 GMT Server: - cloudflare Strict-Transport-Security: @@ -73,19 +73,19 @@ interactions: alt-svc: - h3=":443"; ma=86400 content-length: - - '795' + - '820' openai-organization: - braintrust-data openai-processing-ms: - - '241' + - '408' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=ypWYLAaULZLly.JZD0_9rNrXaZTfSv.RcKJEoeDa6To-1776435129.6468935-1.0.1.1-LxWIHwmiAtjGFnmCiNv11y41H6Yf8..o67VnaHakz_RisFUBBAlPuQb5IR22METXc1YsSgcCUuVcYyBXGXMidjpOgdqTU_FHqQ6MpnP3ZLv8DF_xJY.HoPgGRJ6o2YNP; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:42:09 GMT + - __cf_bm=3dWNM9MNJMb4.NVJoHoSnWvgVyr.WJA4GxMdGFdmKYA-1776705664.6560533-1.0.1.1-ajEMVBEEzFvYc9TktRedB5ox8Lel4h5JPwAu2TKH_EwuGuJD5VP4OCi__RK11tXvV9O0MVmSBXdZf2p2NuoYoAQnubS2l1H2DAHpk4EZaMDUub2rmSFUIp8GoelU9YZl; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:51:05 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -101,7 +101,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_09f5f22c86e14938a9afc481460e8a7d + - req_bc2b0e2162224c3ba9fb39d332cff69b status: code: 200 message: OK @@ -119,11 +119,11 @@ interactions: Content-Type: - application/json Cookie: - - __cf_bm=ypWYLAaULZLly.JZD0_9rNrXaZTfSv.RcKJEoeDa6To-1776435129.6468935-1.0.1.1-LxWIHwmiAtjGFnmCiNv11y41H6Yf8..o67VnaHakz_RisFUBBAlPuQb5IR22METXc1YsSgcCUuVcYyBXGXMidjpOgdqTU_FHqQ6MpnP3ZLv8DF_xJY.HoPgGRJ6o2YNP + - __cf_bm=3dWNM9MNJMb4.NVJoHoSnWvgVyr.WJA4GxMdGFdmKYA-1776705664.6560533-1.0.1.1-ajEMVBEEzFvYc9TktRedB5ox8Lel4h5JPwAu2TKH_EwuGuJD5VP4OCi__RK11tXvV9O0MVmSBXdZf2p2NuoYoAQnubS2l1H2DAHpk4EZaMDUub2rmSFUIp8GoelU9YZl Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -146,14 +146,14 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeDSVqPw6FLIGwJq4mhKxeiZp8eL\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435130,\n \"model\": \"gpt-3.5-turbo-0125\",\n + string: "{\n \"id\": \"chatcmpl-DWmavAJ3NfO16tXeKXFXoE84wEGi3\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705665,\n \"model\": \"gpt-3.5-turbo-0125\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"Rome\",\n \"refusal\": null,\n - \ \"annotations\": []\n },\n \"logprobs\": null,\n \"finish_reason\": - \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 14,\n \"completion_tokens\": - 2,\n \"total_tokens\": 16,\n \"prompt_tokens_details\": {\n \"cached_tokens\": - 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + \"assistant\",\n \"content\": \"The capital of Italy is Rome.\",\n + \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": + null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 14,\n \"completion_tokens\": 7,\n \"total_tokens\": 21,\n \"prompt_tokens_details\": + {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": \"default\",\n \"system_fingerprint\": null\n}\n" @@ -161,13 +161,13 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc05eb88f9ab6a-YYZ + - 9ef5d2c7df99ebbc-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:12:10 GMT + - Mon, 20 Apr 2026 17:21:05 GMT Server: - cloudflare Strict-Transport-Security: @@ -181,11 +181,11 @@ interactions: alt-svc: - h3=":443"; ma=86400 content-length: - - '795' + - '820' openai-organization: - braintrust-data openai-processing-ms: - - '220' + - '290' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: @@ -205,7 +205,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_d410984ebd5b4a36932c137df0d5564b + - req_8022976510004db4b995a8ab900e5e70 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_pydantic_wrapped_stream.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_pydantic_wrapped_stream.yaml index 2a958d7b..3cf69f32 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_pydantic_wrapped_stream.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_pydantic_wrapped_stream.yaml @@ -15,7 +15,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -38,19 +38,19 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: 'data: {"id":"chatcmpl-DVeDQsJ6DNLL1KwtvWKajpGJLpV0l","object":"chat.completion.chunk","created":1776435128,"model":"gpt-3.5-turbo-0125","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"PrYCfTaq"} + string: 'data: {"id":"chatcmpl-DWmatdZhJMGU205oxx7VdzhZY2NTx","object":"chat.completion.chunk","created":1776705663,"model":"gpt-3.5-turbo-0125","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"CrNCYyxa"} - data: {"id":"chatcmpl-DVeDQsJ6DNLL1KwtvWKajpGJLpV0l","object":"chat.completion.chunk","created":1776435128,"model":"gpt-3.5-turbo-0125","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"R"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"jtWiTSrIB"} + data: {"id":"chatcmpl-DWmatdZhJMGU205oxx7VdzhZY2NTx","object":"chat.completion.chunk","created":1776705663,"model":"gpt-3.5-turbo-0125","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"R"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"r4TwVpIqe"} - data: {"id":"chatcmpl-DVeDQsJ6DNLL1KwtvWKajpGJLpV0l","object":"chat.completion.chunk","created":1776435128,"model":"gpt-3.5-turbo-0125","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"ome"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"UehfVJ5"} + data: {"id":"chatcmpl-DWmatdZhJMGU205oxx7VdzhZY2NTx","object":"chat.completion.chunk","created":1776705663,"model":"gpt-3.5-turbo-0125","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"ome"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Pi3bYuW"} - data: {"id":"chatcmpl-DVeDQsJ6DNLL1KwtvWKajpGJLpV0l","object":"chat.completion.chunk","created":1776435128,"model":"gpt-3.5-turbo-0125","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"bnjc"} + data: {"id":"chatcmpl-DWmatdZhJMGU205oxx7VdzhZY2NTx","object":"chat.completion.chunk","created":1776705663,"model":"gpt-3.5-turbo-0125","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"AvLX"} - data: {"id":"chatcmpl-DVeDQsJ6DNLL1KwtvWKajpGJLpV0l","object":"chat.completion.chunk","created":1776435128,"model":"gpt-3.5-turbo-0125","service_tier":"default","system_fingerprint":null,"choices":[],"usage":{"prompt_tokens":14,"completion_tokens":2,"total_tokens":16,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"2O4wmhaPzb"} + data: {"id":"chatcmpl-DWmatdZhJMGU205oxx7VdzhZY2NTx","object":"chat.completion.chunk","created":1776705663,"model":"gpt-3.5-turbo-0125","service_tier":"default","system_fingerprint":null,"choices":[],"usage":{"prompt_tokens":14,"completion_tokens":2,"total_tokens":16,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"TX5FOiRt7w"} data: [DONE] @@ -61,13 +61,13 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc05deca273a53-YYZ + - 9ef5d2bb9b76de04-YYZ Connection: - keep-alive Content-Type: - text/event-stream; charset=utf-8 Date: - - Fri, 17 Apr 2026 14:12:08 GMT + - Mon, 20 Apr 2026 17:21:03 GMT Server: - cloudflare Strict-Transport-Security: @@ -83,15 +83,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '118' + - '240' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=rwd7S4ieW0XO3RSNBUn7ge6EcwJJqJ8uaFyKeY9hMHo-1776435128.1219254-1.0.1.1-_M3uSvYC8n7XzlaTWk9tq1KCa4UtMUT.7c2k5vI0Fhbfqvmfa6cniK0PkT_Y5DxoFLEqb4dDbQa0ViTHofdp9p5Kuu9JjvZfxpX0aBP9yMtytCW9xOmw3ypFpzyF43gW; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:42:08 GMT + - __cf_bm=goS0sVQ1GtUzUtGnvOO44SEpdbyxAcRwULdsn.nz_Bk-1776705663.29647-1.0.1.1-5EAbNeP6Xtro24ZYVRe2foMehwNVllSNa8HVoJj4an8qdxXy8MR.FtUt6Qd8wPp.T2g1ZE9u9JKdes5qFkTp3GUi4wQnWOfIJPoESYXNywwYfRAsjlG6Ijmut2mkvTJu; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:51:03 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -107,7 +107,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_6955acc9a5ba45f79701c20ecbcb0174 + - req_42f543bab5d04ce697986c73753eb6f3 status: code: 200 message: OK @@ -125,11 +125,11 @@ interactions: Content-Type: - application/json Cookie: - - __cf_bm=rwd7S4ieW0XO3RSNBUn7ge6EcwJJqJ8uaFyKeY9hMHo-1776435128.1219254-1.0.1.1-_M3uSvYC8n7XzlaTWk9tq1KCa4UtMUT.7c2k5vI0Fhbfqvmfa6cniK0PkT_Y5DxoFLEqb4dDbQa0ViTHofdp9p5Kuu9JjvZfxpX0aBP9yMtytCW9xOmw3ypFpzyF43gW + - __cf_bm=goS0sVQ1GtUzUtGnvOO44SEpdbyxAcRwULdsn.nz_Bk-1776705663.29647-1.0.1.1-5EAbNeP6Xtro24ZYVRe2foMehwNVllSNa8HVoJj4an8qdxXy8MR.FtUt6Qd8wPp.T2g1ZE9u9JKdes5qFkTp3GUi4wQnWOfIJPoESYXNywwYfRAsjlG6Ijmut2mkvTJu Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -152,39 +152,39 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: 'data: {"id":"chatcmpl-DVeDQ3tgQzhj00UlPYAvp3ozZwDkr","object":"chat.completion.chunk","created":1776435128,"model":"gpt-3.5-turbo-0125","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"DHaxXs6A"} + string: 'data: {"id":"chatcmpl-DWmatnYssPlknK2EBNB5xsFoheNAR","object":"chat.completion.chunk","created":1776705663,"model":"gpt-3.5-turbo-0125","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"5wlstyuY"} - data: {"id":"chatcmpl-DVeDQ3tgQzhj00UlPYAvp3ozZwDkr","object":"chat.completion.chunk","created":1776435128,"model":"gpt-3.5-turbo-0125","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"The"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"cjUfhdB"} + data: {"id":"chatcmpl-DWmatnYssPlknK2EBNB5xsFoheNAR","object":"chat.completion.chunk","created":1776705663,"model":"gpt-3.5-turbo-0125","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"The"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Tq9ycUj"} - data: {"id":"chatcmpl-DVeDQ3tgQzhj00UlPYAvp3ozZwDkr","object":"chat.completion.chunk","created":1776435128,"model":"gpt-3.5-turbo-0125","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" - capital"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"9j"} + data: {"id":"chatcmpl-DWmatnYssPlknK2EBNB5xsFoheNAR","object":"chat.completion.chunk","created":1776705663,"model":"gpt-3.5-turbo-0125","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" + capital"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"s9"} - data: {"id":"chatcmpl-DVeDQ3tgQzhj00UlPYAvp3ozZwDkr","object":"chat.completion.chunk","created":1776435128,"model":"gpt-3.5-turbo-0125","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" - of"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"2AkdOUa"} + data: {"id":"chatcmpl-DWmatnYssPlknK2EBNB5xsFoheNAR","object":"chat.completion.chunk","created":1776705663,"model":"gpt-3.5-turbo-0125","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" + of"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"hNgwLXf"} - data: {"id":"chatcmpl-DVeDQ3tgQzhj00UlPYAvp3ozZwDkr","object":"chat.completion.chunk","created":1776435128,"model":"gpt-3.5-turbo-0125","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" - Italy"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"KkOX"} + data: {"id":"chatcmpl-DWmatnYssPlknK2EBNB5xsFoheNAR","object":"chat.completion.chunk","created":1776705663,"model":"gpt-3.5-turbo-0125","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" + Italy"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"c84u"} - data: {"id":"chatcmpl-DVeDQ3tgQzhj00UlPYAvp3ozZwDkr","object":"chat.completion.chunk","created":1776435128,"model":"gpt-3.5-turbo-0125","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" - is"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"AooGDMI"} + data: {"id":"chatcmpl-DWmatnYssPlknK2EBNB5xsFoheNAR","object":"chat.completion.chunk","created":1776705663,"model":"gpt-3.5-turbo-0125","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" + is"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"NOc3IyL"} - data: {"id":"chatcmpl-DVeDQ3tgQzhj00UlPYAvp3ozZwDkr","object":"chat.completion.chunk","created":1776435128,"model":"gpt-3.5-turbo-0125","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" - Rome"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"eKDzY"} + data: {"id":"chatcmpl-DWmatnYssPlknK2EBNB5xsFoheNAR","object":"chat.completion.chunk","created":1776705663,"model":"gpt-3.5-turbo-0125","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" + Rome"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"DGNJd"} - data: {"id":"chatcmpl-DVeDQ3tgQzhj00UlPYAvp3ozZwDkr","object":"chat.completion.chunk","created":1776435128,"model":"gpt-3.5-turbo-0125","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Pcfy7OEBn"} + data: {"id":"chatcmpl-DWmatnYssPlknK2EBNB5xsFoheNAR","object":"chat.completion.chunk","created":1776705663,"model":"gpt-3.5-turbo-0125","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"6Tv1cyfRS"} - data: {"id":"chatcmpl-DVeDQ3tgQzhj00UlPYAvp3ozZwDkr","object":"chat.completion.chunk","created":1776435128,"model":"gpt-3.5-turbo-0125","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"yiJW"} + data: {"id":"chatcmpl-DWmatnYssPlknK2EBNB5xsFoheNAR","object":"chat.completion.chunk","created":1776705663,"model":"gpt-3.5-turbo-0125","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"kAmz"} - data: {"id":"chatcmpl-DVeDQ3tgQzhj00UlPYAvp3ozZwDkr","object":"chat.completion.chunk","created":1776435128,"model":"gpt-3.5-turbo-0125","service_tier":"default","system_fingerprint":null,"choices":[],"usage":{"prompt_tokens":14,"completion_tokens":7,"total_tokens":21,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"gt3NYGKur2"} + data: {"id":"chatcmpl-DWmatnYssPlknK2EBNB5xsFoheNAR","object":"chat.completion.chunk","created":1776705663,"model":"gpt-3.5-turbo-0125","service_tier":"default","system_fingerprint":null,"choices":[],"usage":{"prompt_tokens":14,"completion_tokens":7,"total_tokens":21,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"DAwORtHlc3"} data: [DONE] @@ -195,13 +195,13 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc05e208e9f80e-YYZ + - 9ef5d2bf1da31707-YYZ Connection: - keep-alive Content-Type: - text/event-stream; charset=utf-8 Date: - - Fri, 17 Apr 2026 14:12:09 GMT + - Mon, 20 Apr 2026 17:21:04 GMT Server: - cloudflare Strict-Transport-Security: @@ -217,7 +217,7 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '633' + - '523' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: @@ -237,7 +237,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_8c3990ee96fb424cace99f2c15c18f37 + - req_53fc2d65c2ae476b9c01338d20797424 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_stream_buffer_pattern_early_return.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_stream_buffer_pattern_early_return.yaml index 622ce49a..07e9a869 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_stream_buffer_pattern_early_return.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_stream_buffer_pattern_early_return.yaml @@ -15,7 +15,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -38,59 +38,59 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: 'data: {"id":"chatcmpl-DVeCRucRYA01eOgiyJuVTSRCJvE15","object":"chat.completion.chunk","created":1776435067,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"EdsOpwumE"} + string: 'data: {"id":"chatcmpl-DWmaHDvA8faqhqx9N685ptHxliRz6","object":"chat.completion.chunk","created":1776705625,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"8bAqOYq4A"} - data: {"id":"chatcmpl-DVeCRucRYA01eOgiyJuVTSRCJvE15","object":"chat.completion.chunk","created":1776435067,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"1"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"YeuAiHfAxc"} + data: {"id":"chatcmpl-DWmaHDvA8faqhqx9N685ptHxliRz6","object":"chat.completion.chunk","created":1776705625,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"1"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"wpRVbT2SLO"} - data: {"id":"chatcmpl-DVeCRucRYA01eOgiyJuVTSRCJvE15","object":"chat.completion.chunk","created":1776435067,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"5b8a30KTp9"} + data: {"id":"chatcmpl-DWmaHDvA8faqhqx9N685ptHxliRz6","object":"chat.completion.chunk","created":1776705625,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Wp9h3BgnGc"} - data: {"id":"chatcmpl-DVeCRucRYA01eOgiyJuVTSRCJvE15","object":"chat.completion.chunk","created":1776435067,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"aYvuD8t97J"} + data: {"id":"chatcmpl-DWmaHDvA8faqhqx9N685ptHxliRz6","object":"chat.completion.chunk","created":1776705625,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"vL32QMNEgw"} - data: {"id":"chatcmpl-DVeCRucRYA01eOgiyJuVTSRCJvE15","object":"chat.completion.chunk","created":1776435067,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"2"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"fQnBgDoCnS"} + data: {"id":"chatcmpl-DWmaHDvA8faqhqx9N685ptHxliRz6","object":"chat.completion.chunk","created":1776705625,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"2"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"5uu4AV7Sye"} - data: {"id":"chatcmpl-DVeCRucRYA01eOgiyJuVTSRCJvE15","object":"chat.completion.chunk","created":1776435067,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"AhSbccrMg2"} + data: {"id":"chatcmpl-DWmaHDvA8faqhqx9N685ptHxliRz6","object":"chat.completion.chunk","created":1776705625,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"nY3Gx8abkk"} - data: {"id":"chatcmpl-DVeCRucRYA01eOgiyJuVTSRCJvE15","object":"chat.completion.chunk","created":1776435067,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"tSWNYEHbL2"} + data: {"id":"chatcmpl-DWmaHDvA8faqhqx9N685ptHxliRz6","object":"chat.completion.chunk","created":1776705625,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"OIWa4hWNNL"} - data: {"id":"chatcmpl-DVeCRucRYA01eOgiyJuVTSRCJvE15","object":"chat.completion.chunk","created":1776435067,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"3"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"ubu5XGhU4A"} + data: {"id":"chatcmpl-DWmaHDvA8faqhqx9N685ptHxliRz6","object":"chat.completion.chunk","created":1776705625,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"3"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"LfHEnewaL4"} - data: {"id":"chatcmpl-DVeCRucRYA01eOgiyJuVTSRCJvE15","object":"chat.completion.chunk","created":1776435067,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"BeEI3Eb5wF"} + data: {"id":"chatcmpl-DWmaHDvA8faqhqx9N685ptHxliRz6","object":"chat.completion.chunk","created":1776705625,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"ysDNJLciqN"} - data: {"id":"chatcmpl-DVeCRucRYA01eOgiyJuVTSRCJvE15","object":"chat.completion.chunk","created":1776435067,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"93yya0wc0w"} + data: {"id":"chatcmpl-DWmaHDvA8faqhqx9N685ptHxliRz6","object":"chat.completion.chunk","created":1776705625,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"w9cYAaxFYG"} - data: {"id":"chatcmpl-DVeCRucRYA01eOgiyJuVTSRCJvE15","object":"chat.completion.chunk","created":1776435067,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"4"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"P9sP7a5oMC"} + data: {"id":"chatcmpl-DWmaHDvA8faqhqx9N685ptHxliRz6","object":"chat.completion.chunk","created":1776705625,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"4"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"J1SAnWeV6j"} - data: {"id":"chatcmpl-DVeCRucRYA01eOgiyJuVTSRCJvE15","object":"chat.completion.chunk","created":1776435067,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"M1MCTkfgQ0"} + data: {"id":"chatcmpl-DWmaHDvA8faqhqx9N685ptHxliRz6","object":"chat.completion.chunk","created":1776705625,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"VNk9X91Nwa"} - data: {"id":"chatcmpl-DVeCRucRYA01eOgiyJuVTSRCJvE15","object":"chat.completion.chunk","created":1776435067,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"3dny5JSHzP"} + data: {"id":"chatcmpl-DWmaHDvA8faqhqx9N685ptHxliRz6","object":"chat.completion.chunk","created":1776705625,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"rhjw3igWel"} - data: {"id":"chatcmpl-DVeCRucRYA01eOgiyJuVTSRCJvE15","object":"chat.completion.chunk","created":1776435067,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"5"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Hq0OMP2Y6J"} + data: {"id":"chatcmpl-DWmaHDvA8faqhqx9N685ptHxliRz6","object":"chat.completion.chunk","created":1776705625,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"5"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"V47PXEYTZg"} - data: {"id":"chatcmpl-DVeCRucRYA01eOgiyJuVTSRCJvE15","object":"chat.completion.chunk","created":1776435067,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"TL0c2WohpN"} + data: {"id":"chatcmpl-DWmaHDvA8faqhqx9N685ptHxliRz6","object":"chat.completion.chunk","created":1776705625,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"K39GmA48lK"} - data: {"id":"chatcmpl-DVeCRucRYA01eOgiyJuVTSRCJvE15","object":"chat.completion.chunk","created":1776435067,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"TBdEp"} + data: {"id":"chatcmpl-DWmaHDvA8faqhqx9N685ptHxliRz6","object":"chat.completion.chunk","created":1776705625,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"0CYWc"} - data: {"id":"chatcmpl-DVeCRucRYA01eOgiyJuVTSRCJvE15","object":"chat.completion.chunk","created":1776435067,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[],"usage":{"prompt_tokens":14,"completion_tokens":14,"total_tokens":28,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"sma2DaiKSU"} + data: {"id":"chatcmpl-DWmaHDvA8faqhqx9N685ptHxliRz6","object":"chat.completion.chunk","created":1776705625,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[],"usage":{"prompt_tokens":14,"completion_tokens":14,"total_tokens":28,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"I6VIPcfD3C"} data: [DONE] @@ -101,13 +101,13 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc0460ead00c26-YYZ + - 9ef5d1cca8c5e21a-YYZ Connection: - keep-alive Content-Type: - text/event-stream; charset=utf-8 Date: - - Fri, 17 Apr 2026 14:11:07 GMT + - Mon, 20 Apr 2026 17:20:25 GMT Server: - cloudflare Strict-Transport-Security: @@ -123,15 +123,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '197' + - '242' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=SI3UicNZ3Pvbj5OYyUK0sV0E8ZrjGPq5CWm4bKhNYDM-1776435067.0229337-1.0.1.1-_x8e9HqPJTtjn2T4U4dsLk5FtV7LzUl5iK4mjugUZp_eVPNuNig.DxEpMFx77DaAxnRNu3MV.ZKt6oIRqqhDFc_.Z0CLZ27Mpc_xGD5yNNZGq879c4VH9mkFJGTvTPI1; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:41:07 GMT + - __cf_bm=B_iOVoNj0nMAAc6xd4nXPtF4rgUjrKc_BIGff1wZZ_A-1776705625.0695813-1.0.1.1-pAEQ9CH3sfQGsLe5eeaVuEWaoF3Ok146YjzMc983EF0ByD_NSOA7SDYAQ_uKoELL2e8UHu0AvvSIF3j_5J4dI3KBygPdh5V0xho1Rw.3v1_0bKKUtMxQk8xozs_e2TTI; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:50:25 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -141,13 +141,13 @@ interactions: x-ratelimit-remaining-requests: - '29999' x-ratelimit-remaining-tokens: - - '149999992' + - '149999995' x-ratelimit-reset-requests: - 2ms x-ratelimit-reset-tokens: - 0s x-request-id: - - req_73ebb17bc5dc4b89a4bf0a9764c7adc9 + - req_2e9201d484984a67ab4e63695a51700d status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_stream_early_break_async_generator.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_stream_early_break_async_generator.yaml index 50e50045..313e590e 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_stream_early_break_async_generator.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_stream_early_break_async_generator.yaml @@ -15,7 +15,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -38,59 +38,59 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: 'data: {"id":"chatcmpl-DVeCNx6lKIqxgvo11pqhcXChQazVS","object":"chat.completion.chunk","created":1776435063,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"cPyFQvtsF"} + string: 'data: {"id":"chatcmpl-DWmaF8b2jFBJLRPeTwcl9owYKpcQN","object":"chat.completion.chunk","created":1776705623,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"GNrgC6D20"} - data: {"id":"chatcmpl-DVeCNx6lKIqxgvo11pqhcXChQazVS","object":"chat.completion.chunk","created":1776435063,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"1"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"f1L9ucAKgW"} + data: {"id":"chatcmpl-DWmaF8b2jFBJLRPeTwcl9owYKpcQN","object":"chat.completion.chunk","created":1776705623,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"1"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"OSebGNPUPz"} - data: {"id":"chatcmpl-DVeCNx6lKIqxgvo11pqhcXChQazVS","object":"chat.completion.chunk","created":1776435063,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"buM8oUpEmx"} + data: {"id":"chatcmpl-DWmaF8b2jFBJLRPeTwcl9owYKpcQN","object":"chat.completion.chunk","created":1776705623,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"JwncYMlVNE"} - data: {"id":"chatcmpl-DVeCNx6lKIqxgvo11pqhcXChQazVS","object":"chat.completion.chunk","created":1776435063,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"3uJOHjh7SV"} + data: {"id":"chatcmpl-DWmaF8b2jFBJLRPeTwcl9owYKpcQN","object":"chat.completion.chunk","created":1776705623,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"m5ka6XqwBa"} - data: {"id":"chatcmpl-DVeCNx6lKIqxgvo11pqhcXChQazVS","object":"chat.completion.chunk","created":1776435063,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"2"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"FS84Nb9ft9"} + data: {"id":"chatcmpl-DWmaF8b2jFBJLRPeTwcl9owYKpcQN","object":"chat.completion.chunk","created":1776705623,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"2"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"zsFLXixytB"} - data: {"id":"chatcmpl-DVeCNx6lKIqxgvo11pqhcXChQazVS","object":"chat.completion.chunk","created":1776435063,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"3at2uINIt7"} + data: {"id":"chatcmpl-DWmaF8b2jFBJLRPeTwcl9owYKpcQN","object":"chat.completion.chunk","created":1776705623,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"M5wLSYi03B"} - data: {"id":"chatcmpl-DVeCNx6lKIqxgvo11pqhcXChQazVS","object":"chat.completion.chunk","created":1776435063,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"TU2B0GoMsI"} + data: {"id":"chatcmpl-DWmaF8b2jFBJLRPeTwcl9owYKpcQN","object":"chat.completion.chunk","created":1776705623,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"tVKTypTiDu"} - data: {"id":"chatcmpl-DVeCNx6lKIqxgvo11pqhcXChQazVS","object":"chat.completion.chunk","created":1776435063,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"3"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"G6S3xEfoKk"} + data: {"id":"chatcmpl-DWmaF8b2jFBJLRPeTwcl9owYKpcQN","object":"chat.completion.chunk","created":1776705623,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"3"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"3wR8GCLU8z"} - data: {"id":"chatcmpl-DVeCNx6lKIqxgvo11pqhcXChQazVS","object":"chat.completion.chunk","created":1776435063,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"jRJvbZlT02"} + data: {"id":"chatcmpl-DWmaF8b2jFBJLRPeTwcl9owYKpcQN","object":"chat.completion.chunk","created":1776705623,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"epR5V4Nr64"} - data: {"id":"chatcmpl-DVeCNx6lKIqxgvo11pqhcXChQazVS","object":"chat.completion.chunk","created":1776435063,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"BABz2h0dEd"} + data: {"id":"chatcmpl-DWmaF8b2jFBJLRPeTwcl9owYKpcQN","object":"chat.completion.chunk","created":1776705623,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"hLkJj8dd27"} - data: {"id":"chatcmpl-DVeCNx6lKIqxgvo11pqhcXChQazVS","object":"chat.completion.chunk","created":1776435063,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"4"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"mqpbpRoYGU"} + data: {"id":"chatcmpl-DWmaF8b2jFBJLRPeTwcl9owYKpcQN","object":"chat.completion.chunk","created":1776705623,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"4"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Twwkk2OP2i"} - data: {"id":"chatcmpl-DVeCNx6lKIqxgvo11pqhcXChQazVS","object":"chat.completion.chunk","created":1776435063,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"eNYrniG9C0"} + data: {"id":"chatcmpl-DWmaF8b2jFBJLRPeTwcl9owYKpcQN","object":"chat.completion.chunk","created":1776705623,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"vSH9kbbkcN"} - data: {"id":"chatcmpl-DVeCNx6lKIqxgvo11pqhcXChQazVS","object":"chat.completion.chunk","created":1776435063,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":" - "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"v52A7RE68L"} + data: {"id":"chatcmpl-DWmaF8b2jFBJLRPeTwcl9owYKpcQN","object":"chat.completion.chunk","created":1776705623,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":" + "},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"vvzcJMBtR2"} - data: {"id":"chatcmpl-DVeCNx6lKIqxgvo11pqhcXChQazVS","object":"chat.completion.chunk","created":1776435063,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"5"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"0wDoGARn26"} + data: {"id":"chatcmpl-DWmaF8b2jFBJLRPeTwcl9owYKpcQN","object":"chat.completion.chunk","created":1776705623,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"5"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"6e0yZ6oKv2"} - data: {"id":"chatcmpl-DVeCNx6lKIqxgvo11pqhcXChQazVS","object":"chat.completion.chunk","created":1776435063,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"NOTwtPMUOw"} + data: {"id":"chatcmpl-DWmaF8b2jFBJLRPeTwcl9owYKpcQN","object":"chat.completion.chunk","created":1776705623,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"44ZZunQ7mY"} - data: {"id":"chatcmpl-DVeCNx6lKIqxgvo11pqhcXChQazVS","object":"chat.completion.chunk","created":1776435063,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"320VQ"} + data: {"id":"chatcmpl-DWmaF8b2jFBJLRPeTwcl9owYKpcQN","object":"chat.completion.chunk","created":1776705623,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"EW1og"} - data: {"id":"chatcmpl-DVeCNx6lKIqxgvo11pqhcXChQazVS","object":"chat.completion.chunk","created":1776435063,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_fe7a5277a8","choices":[],"usage":{"prompt_tokens":14,"completion_tokens":14,"total_tokens":28,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"Ej61Vrsa4N"} + data: {"id":"chatcmpl-DWmaF8b2jFBJLRPeTwcl9owYKpcQN","object":"chat.completion.chunk","created":1776705623,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_a7190374f3","choices":[],"usage":{"prompt_tokens":14,"completion_tokens":14,"total_tokens":28,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"cRcp9OyGWZ"} data: [DONE] @@ -101,13 +101,13 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc044bed2ba392-YYZ + - 9ef5d1c36ddcc9d6-YYZ Connection: - keep-alive Content-Type: - text/event-stream; charset=utf-8 Date: - - Fri, 17 Apr 2026 14:11:04 GMT + - Mon, 20 Apr 2026 17:20:23 GMT Server: - cloudflare Strict-Transport-Security: @@ -123,15 +123,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '936' + - '194' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=uMBZHkJHwo8aaqJvRa9M0WhBY3.KvxuNrOlRk3_8sP4-1776435063.6694195-1.0.1.1-CovBDPRk3qeEr1NxHkBx4nMNjrMtjuSbZBj9zy1J3AzMJLrN590d_.acspKbxio8PQKmcLpiD7ztKr1SWs2MzkQ4f112OrC_794iNTHIeA.PL_0nj4r_PVC.eerK6M2s; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:41:04 GMT + - __cf_bm=sHYPDAY5LIhghO8saZAnhMQORB7edBup2O4d.T9Pjc4-1776705623.5852032-1.0.1.1-yFw_J2XRoRgxeqgagXzhZ6SB3opa2RBOSdJBRl96lBTU5xeF4qmI2SsALw5Uzsu3w7bsHzlJcxOcX6LCGguMGcageRgF7EDfmMeLK96uxjGYKB9_aR0n9vzo0Adef_eq; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:50:23 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -147,7 +147,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_312fca65be2643d69ed0f36a457f0c3a + - req_fee6996cef524cc88881b0ec645bb6c4 status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_tool_execution_creates_spans.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_tool_execution_creates_spans.yaml index c57961ea..4875932f 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_tool_execution_creates_spans.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_tool_execution_creates_spans.yaml @@ -16,7 +16,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -39,11 +39,11 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeCZWyN9omaHr7OkT5y6Lbxn1Y3b\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435075,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmaOQaOnRv6YYzIgImLa4WZTnkOY\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705632,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": null,\n \"tool_calls\": [\n {\n - \ \"id\": \"call_xOA31HovJj5q0XP3K2LGleOG\",\n \"type\": + \ \"id\": \"call_KYj2Kar2vF9s6dn3IlaKPpTL\",\n \"type\": \"function\",\n \"function\": {\n \"name\": \"calculate\",\n \ \"arguments\": \"{\\\"operation\\\":\\\"multiply\\\",\\\"a\\\":127,\\\"b\\\":49}\"\n \ }\n }\n ],\n \"refusal\": null,\n \"annotations\": @@ -53,18 +53,18 @@ interactions: 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_23d0326066\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_e2f9fd5023\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc0494fad0a2d9-YYZ + - 9ef5d1f79feae21a-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:11:16 GMT + - Mon, 20 Apr 2026 17:20:32 GMT Server: - cloudflare Strict-Transport-Security: @@ -82,15 +82,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '767' + - '509' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=kxebPhSa7vCAZesIRMbMf79BnBrGbd5Czxe8DCv7qYk-1776435075.3516998-1.0.1.1-fyYC9mkrmy.ytDGmYM_UAQjfux4vRBcnqQe0gtppi60ayYbyBn.cTLqpcruce3HrreVI9eMZMJIIDGI..TxI5_vsr2xQ0htDG_FFv2r_3dculBNN_12xEUa4TL3Vv49L; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:41:16 GMT + - __cf_bm=dAUI86PWGaQBspo_WqTuSAihzcquzHMO_DRXFEA0ojU-1776705631.9395483-1.0.1.1-OHTIXmZgQmUpMhSxpNnIIJ_nZPBUUqwsI4WYQjlHQUx8AiMJNvRleatX2uJczH0LNaKNwWCWD55tMPikultq3WP6fzvC.d1e.EDSXmXvEXheqjgnvWO3Xyk6OrrD_Cco; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:50:32 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -106,12 +106,12 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_4a8cf99ce4bb4718a0dca04f717c4c50 + - req_f664609a536b468b8fb595faf36d2f15 status: code: 200 message: OK - request: - body: '{"messages":[{"role":"user","content":"What is 127 multiplied by 49?"},{"role":"assistant","content":null,"tool_calls":[{"id":"call_xOA31HovJj5q0XP3K2LGleOG","type":"function","function":{"name":"calculate","arguments":"{\"operation\":\"multiply\",\"a\":127,\"b\":49}"}}]},{"role":"tool","tool_call_id":"call_xOA31HovJj5q0XP3K2LGleOG","content":"6223.0"}],"model":"gpt-4o-mini","max_completion_tokens":500,"stream":false,"tool_choice":"auto","tools":[{"type":"function","function":{"name":"calculate","description":"Perform + body: '{"messages":[{"role":"user","content":"What is 127 multiplied by 49?"},{"role":"assistant","content":null,"tool_calls":[{"id":"call_KYj2Kar2vF9s6dn3IlaKPpTL","type":"function","function":{"name":"calculate","arguments":"{\"operation\":\"multiply\",\"a\":127,\"b\":49}"}}]},{"role":"tool","tool_call_id":"call_KYj2Kar2vF9s6dn3IlaKPpTL","content":"6223.0"}],"model":"gpt-4o-mini","max_completion_tokens":500,"stream":false,"tool_choice":"auto","tools":[{"type":"function","function":{"name":"calculate","description":"Perform a mathematical calculation.","parameters":{"additionalProperties":false,"properties":{"operation":{"type":"string"},"a":{"type":"number"},"b":{"type":"number"}},"required":["operation","a","b"],"type":"object"},"strict":true}}]}' headers: Accept: @@ -125,11 +125,11 @@ interactions: Content-Type: - application/json Cookie: - - __cf_bm=kxebPhSa7vCAZesIRMbMf79BnBrGbd5Czxe8DCv7qYk-1776435075.3516998-1.0.1.1-fyYC9mkrmy.ytDGmYM_UAQjfux4vRBcnqQe0gtppi60ayYbyBn.cTLqpcruce3HrreVI9eMZMJIIDGI..TxI5_vsr2xQ0htDG_FFv2r_3dculBNN_12xEUa4TL3Vv49L + - __cf_bm=dAUI86PWGaQBspo_WqTuSAihzcquzHMO_DRXFEA0ojU-1776705631.9395483-1.0.1.1-OHTIXmZgQmUpMhSxpNnIIJ_nZPBUUqwsI4WYQjlHQUx8AiMJNvRleatX2uJczH0LNaKNwWCWD55tMPikultq3WP6fzvC.d1e.EDSXmXvEXheqjgnvWO3Xyk6OrrD_Cco Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -152,13 +152,13 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeCaIXMqp7nGZ39Bp9fjj1uSZ4fL\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435076,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmaOFAPhBWaL7CCpl5D0rgPzB8fO\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705632,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"127 multiplied by 49 is 6223.\",\n + \"assistant\",\n \"content\": \"127 multiplied by 49 is 6,223.\",\n \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": - 90,\n \"completion_tokens\": 11,\n \"total_tokens\": 101,\n \"prompt_tokens_details\": + 90,\n \"completion_tokens\": 12,\n \"total_tokens\": 102,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": @@ -167,13 +167,13 @@ interactions: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc049acefe3786-YYZ + - 9ef5d1fc1c053870-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:11:16 GMT + - Mon, 20 Apr 2026 17:20:33 GMT Server: - cloudflare Strict-Transport-Security: @@ -187,11 +187,11 @@ interactions: alt-svc: - h3=":443"; ma=86400 content-length: - - '837' + - '838' openai-organization: - braintrust-data openai-processing-ms: - - '408' + - '461' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: @@ -211,7 +211,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_3bae049deb204a5a89dcc95b1022901d + - req_5f970cf3ee6c4d829653edb7426f56da status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_tool_execution_tracing_does_not_depend_on_message_reconstruction.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_tool_execution_tracing_does_not_depend_on_message_reconstruction.yaml index cd8484bb..060aaa98 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_tool_execution_tracing_does_not_depend_on_message_reconstruction.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_tool_execution_tracing_does_not_depend_on_message_reconstruction.yaml @@ -15,7 +15,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -38,11 +38,11 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeCYGeMPhPmN05bQPcooLBmmJvOS\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435074,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmrwnnBQt4oFykvHQgIna0n9msky\",\n \"object\": + \"chat.completion\",\n \"created\": 1776706720,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": null,\n \"tool_calls\": [\n {\n - \ \"id\": \"call_fpBEmabf5qgQg64eZYKEIiTN\",\n \"type\": + \ \"id\": \"call_IKKG6hPlJalk0rkOtqHJg7C8\",\n \"type\": \"function\",\n \"function\": {\n \"name\": \"get_weather\",\n \ \"arguments\": \"{\\\"city\\\":\\\"Paris\\\"}\"\n }\n \ }\n ],\n \"refusal\": null,\n \"annotations\": @@ -52,18 +52,18 @@ interactions: 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_2153ead53d\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_e2f9fd5023\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc048b9c45abae-YYZ + - 9ef5ec89fdd136cc-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:11:14 GMT + - Mon, 20 Apr 2026 17:38:40 GMT Server: - cloudflare Strict-Transport-Security: @@ -81,15 +81,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '586' + - '544' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=koI5TgGMWDhUyMqjytQ7T7cNVGApLMGHJ8LgnSjF5pc-1776435073.8569171-1.0.1.1-Wlq4HYay0ZtZ2zNjrBkC82fvkmBwy4qwDJqO7BjF5Xp8DYliTmffbQQT.2c5rgA_2_kYlze6zPEALuFSM9.3DD0rCQZZI0ObIEdyMEy.iev2pZSnnSqfkBz_WeXseSFP; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:41:14 GMT + - __cf_bm=MzV_.Nr3iusvyxy0OCVgTc7IXhNyM5nQJ8GGQWejsmY-1776706720.3208628-1.0.1.1-VI68IC5UvjHIydKAxjtOk1gcBuQB678HKRa3n.yMZ.FF6rtX0YAab.u5uqM59BF01GbPwdIWQ3o989fwG_NIw4jVZ42l7bekoLkA3BPHtyrcMVmcKOtqxu89pir2MJJ_; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 18:08:40 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -99,18 +99,18 @@ interactions: x-ratelimit-remaining-requests: - '29999' x-ratelimit-remaining-tokens: - - '149999992' + - '149999990' x-ratelimit-reset-requests: - 2ms x-ratelimit-reset-tokens: - 0s x-request-id: - - req_cecb0cb2879b4213b2efd23cd6a9e115 + - req_f4e12ba089574ce78d077c3ef4769dce status: code: 200 message: OK - request: - body: '{"messages":[{"role":"user","content":"What''s the weather in Paris?"},{"role":"assistant","content":null,"tool_calls":[{"id":"call_fpBEmabf5qgQg64eZYKEIiTN","type":"function","function":{"name":"get_weather","arguments":"{\"city\":\"Paris\"}"}}]},{"role":"tool","tool_call_id":"call_fpBEmabf5qgQg64eZYKEIiTN","content":"It''s + body: '{"messages":[{"role":"user","content":"What''s the weather in Paris?"},{"role":"assistant","content":null,"tool_calls":[{"id":"call_IKKG6hPlJalk0rkOtqHJg7C8","type":"function","function":{"name":"get_weather","arguments":"{\"city\":\"Paris\"}"}}]},{"role":"tool","tool_call_id":"call_IKKG6hPlJalk0rkOtqHJg7C8","content":"It''s sunny in Paris"}],"model":"gpt-4o-mini","max_completion_tokens":200,"stream":false,"tool_choice":"auto","tools":[{"type":"function","function":{"name":"get_weather","description":"","parameters":{"additionalProperties":false,"properties":{"city":{"type":"string"}},"required":["city"],"type":"object"},"strict":true}}]}' headers: Accept: @@ -124,11 +124,11 @@ interactions: Content-Type: - application/json Cookie: - - __cf_bm=koI5TgGMWDhUyMqjytQ7T7cNVGApLMGHJ8LgnSjF5pc-1776435073.8569171-1.0.1.1-Wlq4HYay0ZtZ2zNjrBkC82fvkmBwy4qwDJqO7BjF5Xp8DYliTmffbQQT.2c5rgA_2_kYlze6zPEALuFSM9.3DD0rCQZZI0ObIEdyMEy.iev2pZSnnSqfkBz_WeXseSFP + - __cf_bm=MzV_.Nr3iusvyxy0OCVgTc7IXhNyM5nQJ8GGQWejsmY-1776706720.3208628-1.0.1.1-VI68IC5UvjHIydKAxjtOk1gcBuQB678HKRa3n.yMZ.FF6rtX0YAab.u5uqM59BF01GbPwdIWQ3o989fwG_NIw4jVZ42l7bekoLkA3BPHtyrcMVmcKOtqxu89pir2MJJ_ Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -151,8 +151,8 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeCYK5OiAWlG4nhohcu98KyLyYAb\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435074,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmrxYrwGeGrp9McCO9iho7aJJ3n0\",\n \"object\": + \"chat.completion\",\n \"created\": 1776706721,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"The weather in Paris is sunny.\",\n \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": @@ -161,18 +161,18 @@ interactions: {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_2153ead53d\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_e2f9fd5023\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc0490af8baaaa-YYZ + - 9ef5ec8efffea205-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:11:15 GMT + - Mon, 20 Apr 2026 17:38:41 GMT Server: - cloudflare Strict-Transport-Security: @@ -190,7 +190,7 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '509' + - '342' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: @@ -210,7 +210,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_bd01153aa9c342a6b49213f4c6026b56 + - req_ad9c33ce1f9b465898de13f57456f7cf status: code: 200 message: OK diff --git a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_wrapper_agent_run_is_traced.yaml b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_wrapper_agent_run_is_traced.yaml index f7f52364..cc4f113d 100644 --- a/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_wrapper_agent_run_is_traced.yaml +++ b/py/src/braintrust/integrations/pydantic_ai/cassettes/latest/test_wrapper_agent_run_is_traced.yaml @@ -16,7 +16,7 @@ interactions: Host: - api.openai.com User-Agent: - - pydantic-ai/1.84.0 + - pydantic-ai/1.84.1 X-Stainless-Arch: - arm64 X-Stainless-Async: @@ -39,8 +39,8 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-DVeBlHsB6FT53puI4Vg3jvFrq54fz\",\n \"object\": - \"chat.completion\",\n \"created\": 1776435025,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-DWmZprciDEB5IP39rUxi2chyFAHMq\",\n \"object\": + \"chat.completion\",\n \"created\": 1776705597,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"4\",\n \"refusal\": null,\n \ \"annotations\": []\n },\n \"logprobs\": null,\n \"finish_reason\": @@ -49,18 +49,18 @@ interactions: 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_fe7a5277a8\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_a7190374f3\"\n}\n" headers: CF-Cache-Status: - DYNAMIC CF-Ray: - - 9edc035cbe5c3704-YYZ + - 9ef5d1224e944d63-YYZ Connection: - keep-alive Content-Type: - application/json Date: - - Fri, 17 Apr 2026 14:10:25 GMT + - Mon, 20 Apr 2026 17:19:58 GMT Server: - cloudflare Strict-Transport-Security: @@ -78,15 +78,15 @@ interactions: openai-organization: - braintrust-data openai-processing-ms: - - '199' + - '258' openai-project: - proj_vsCSXafhhByzWOThMrJcZiw9 openai-version: - '2020-10-01' set-cookie: - - __cf_bm=Yrn391tXY.SUiLOqkfQWPs_jUoz4zHGksLvcq6J1Pr0-1776435025.3981996-1.0.1.1-26jru12LFVq3pqJ_5iEMdBulvinoHIx9RDX16tvwj1hT4t28nkgkihYQ_84.wgvlU0lKmXreSA0G4d9Q_xnN0oWQ1JljgbI5L7if9GZ5VoXABu7HQ7tF1ipUJ5dbAxv6; - HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 17 Apr 2026 - 14:40:25 GMT + - __cf_bm=RcaLKbwL5BF0GZ_UjAD_tGLrtd4xSUiHS2X8bBaxfpw-1776705597.8090858-1.0.1.1-TaF0w0ZQNyRSQUmN8kZFj.tDbxdwBuvnRUsW36pr7GLY8M1UF61P7Ttgp2Ck8Snh_tmVFbjw3Os3Yln5ry1jPtyrhqSQk2dD5BAX0Z0jBRLzdePfJlotJJ4.Fw90YEdQ; + HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 20 Apr 2026 + 17:49:58 GMT x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -102,7 +102,7 @@ interactions: x-ratelimit-reset-tokens: - 0s x-request-id: - - req_5f9425fc0c7142be98f25e877a088383 + - req_7abf6e15159b467c8cb9966f2353e6eb status: code: 200 message: OK