pydantic-ai 0.0.43__tar.gz → 0.0.45__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pydantic-ai might be problematic. Click here for more details.

Files changed (110) hide show
  1. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/PKG-INFO +3 -3
  2. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/pyproject.toml +3 -3
  3. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/conftest.py +12 -2
  4. pydantic_ai-0.0.45/tests/graph/test_utils.py +20 -0
  5. pydantic_ai-0.0.45/tests/models/cassettes/test_cohere/test_request_simple_success_with_vcr.yaml +64 -0
  6. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/cassettes/test_openai/test_audio_as_binary_content_input.yaml +6 -5
  7. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/cassettes/test_openai/test_image_as_binary_content_input.yaml +8 -7
  8. pydantic_ai-0.0.45/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4.5-preview].yaml +78 -0
  9. pydantic_ai-0.0.45/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4o-mini].yaml +79 -0
  10. pydantic_ai-0.0.45/tests/models/cassettes/test_openai/test_max_completion_tokens[o3-mini].yaml +78 -0
  11. pydantic_ai-0.0.45/tests/models/cassettes/test_openai/test_multiple_agent_tool_calls.yaml +391 -0
  12. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[developer].yaml +1 -4
  13. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[system].yaml +1 -6
  14. pydantic_ai-0.0.45/tests/models/cassettes/test_openai/test_user_id.yaml +79 -0
  15. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/test_anthropic.py +6 -7
  16. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/test_cohere.py +16 -7
  17. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/test_fallback.py +4 -2
  18. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/test_gemini.py +33 -72
  19. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/test_groq.py +3 -1
  20. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/test_instrumented.py +22 -19
  21. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/test_mistral.py +5 -14
  22. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/test_model_function.py +43 -34
  23. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/test_model_test.py +16 -5
  24. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/test_openai.py +55 -30
  25. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/providers/test_anthropic.py +7 -11
  26. pydantic_ai-0.0.45/tests/providers/test_bedrock.py +17 -0
  27. pydantic_ai-0.0.45/tests/providers/test_cohere.py +53 -0
  28. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/providers/test_deepseek.py +13 -13
  29. pydantic_ai-0.0.45/tests/providers/test_google_gla.py +43 -0
  30. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/providers/test_groq.py +13 -13
  31. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/providers/test_mistral.py +13 -13
  32. pydantic_ai-0.0.45/tests/providers/test_openai.py +51 -0
  33. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/providers/test_provider_names.py +8 -3
  34. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/test_agent.py +138 -60
  35. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/test_examples.py +62 -18
  36. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/test_logfire.py +28 -5
  37. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/test_parts_manager.py +20 -24
  38. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/test_streaming.py +82 -35
  39. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/test_tools.py +148 -8
  40. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/test_usage_limits.py +16 -3
  41. pydantic_ai-0.0.43/tests/graph/test_utils.py +0 -13
  42. pydantic_ai-0.0.43/tests/models/test_vertexai.py +0 -185
  43. pydantic_ai-0.0.43/tests/providers/test_bedrock.py +0 -20
  44. pydantic_ai-0.0.43/tests/providers/test_google_gla.py +0 -19
  45. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/.gitignore +0 -0
  46. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/LICENSE +0 -0
  47. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/Makefile +0 -0
  48. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/README.md +0 -0
  49. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/__init__.py +0 -0
  50. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/assets/dummy.pdf +0 -0
  51. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/assets/kiwi.png +0 -0
  52. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/assets/marcelo.mp3 +0 -0
  53. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/cassettes/test_mcp/test_agent_with_stdio_server.yaml +0 -0
  54. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/example_modules/README.md +0 -0
  55. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/example_modules/bank_database.py +0 -0
  56. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/example_modules/fake_database.py +0 -0
  57. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/example_modules/weather_service.py +0 -0
  58. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/graph/__init__.py +0 -0
  59. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/graph/test_file_persistence.py +0 -0
  60. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/graph/test_graph.py +0 -0
  61. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/graph/test_mermaid.py +0 -0
  62. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/graph/test_persistence.py +0 -0
  63. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/graph/test_state.py +0 -0
  64. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/import_examples.py +0 -0
  65. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/json_body_serializer.py +0 -0
  66. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/mcp_server.py +0 -0
  67. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/__init__.py +0 -0
  68. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/cassettes/test_anthropic/test_document_binary_content_input.yaml +0 -0
  69. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/cassettes/test_anthropic/test_document_url_input.yaml +0 -0
  70. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/cassettes/test_anthropic/test_image_url_input.yaml +0 -0
  71. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/cassettes/test_anthropic/test_image_url_input_invalid_mime_type.yaml +0 -0
  72. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/cassettes/test_anthropic/test_multiple_parallel_tool_calls.yaml +0 -0
  73. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/cassettes/test_anthropic/test_text_document_url_input.yaml +0 -0
  74. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/cassettes/test_bedrock/test_bedrock_model.yaml +0 -0
  75. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/cassettes/test_bedrock/test_bedrock_model_anthropic_model_without_tools.yaml +0 -0
  76. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/cassettes/test_bedrock/test_bedrock_model_iter_stream.yaml +0 -0
  77. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/cassettes/test_bedrock/test_bedrock_model_max_tokens.yaml +0 -0
  78. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/cassettes/test_bedrock/test_bedrock_model_retry.yaml +0 -0
  79. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/cassettes/test_bedrock/test_bedrock_model_stream.yaml +0 -0
  80. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/cassettes/test_bedrock/test_bedrock_model_structured_response.yaml +0 -0
  81. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/cassettes/test_bedrock/test_bedrock_model_top_p.yaml +0 -0
  82. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/cassettes/test_bedrock/test_document_url_input.yaml +0 -0
  83. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/cassettes/test_bedrock/test_image_as_binary_content_input.yaml +0 -0
  84. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/cassettes/test_bedrock/test_image_url_input.yaml +0 -0
  85. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/cassettes/test_bedrock/test_text_as_binary_content_input.yaml +0 -0
  86. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/cassettes/test_bedrock/test_text_document_url_input.yaml +0 -0
  87. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/cassettes/test_gemini/test_document_url_input.yaml +0 -0
  88. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/cassettes/test_gemini/test_image_as_binary_content_input.yaml +0 -0
  89. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/cassettes/test_gemini/test_image_url_input.yaml +0 -0
  90. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/cassettes/test_groq/test_image_as_binary_content_input.yaml +0 -0
  91. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/cassettes/test_groq/test_image_url_input.yaml +0 -0
  92. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/cassettes/test_openai/test_document_url_input.yaml +0 -0
  93. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/mock_async_stream.py +0 -0
  94. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/test_bedrock.py +0 -0
  95. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/test_model.py +0 -0
  96. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/models/test_model_names.py +0 -0
  97. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/providers/__init__.py +0 -0
  98. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/providers/cassettes/test_azure/test_azure_provider_call.yaml +0 -0
  99. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/providers/test_azure.py +0 -0
  100. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/providers/test_google_vertex.py +0 -0
  101. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/test_cli.py +0 -0
  102. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/test_deps.py +0 -0
  103. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/test_format_as_xml.py +0 -0
  104. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/test_json_body_serializer.py +0 -0
  105. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/test_live.py +0 -0
  106. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/test_mcp.py +0 -0
  107. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/test_messages.py +0 -0
  108. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/test_utils.py +0 -0
  109. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/typed_agent.py +0 -0
  110. {pydantic_ai-0.0.43 → pydantic_ai-0.0.45}/tests/typed_graph.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pydantic-ai
3
- Version: 0.0.43
3
+ Version: 0.0.45
4
4
  Summary: Agent Framework / shim to use Pydantic with LLMs
5
5
  Project-URL: Homepage, https://ai.pydantic.dev
6
6
  Project-URL: Source, https://github.com/pydantic/pydantic-ai
@@ -28,9 +28,9 @@ Classifier: Topic :: Internet
28
28
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
29
29
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
30
30
  Requires-Python: >=3.9
31
- Requires-Dist: pydantic-ai-slim[anthropic,bedrock,cli,cohere,groq,mcp,mistral,openai,vertexai]==0.0.43
31
+ Requires-Dist: pydantic-ai-slim[anthropic,bedrock,cli,cohere,groq,mcp,mistral,openai,vertexai]==0.0.45
32
32
  Provides-Extra: examples
33
- Requires-Dist: pydantic-ai-examples==0.0.43; extra == 'examples'
33
+ Requires-Dist: pydantic-ai-examples==0.0.45; extra == 'examples'
34
34
  Provides-Extra: logfire
35
35
  Requires-Dist: logfire>=2.3; extra == 'logfire'
36
36
  Description-Content-Type: text/markdown
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "pydantic-ai"
7
- version = "0.0.43"
7
+ version = "0.0.45"
8
8
  description = "Agent Framework / shim to use Pydantic with LLMs"
9
9
  authors = [
10
10
  { name = "Samuel Colvin", email = "samuel@pydantic.dev" },
@@ -36,7 +36,7 @@ classifiers = [
36
36
  ]
37
37
  requires-python = ">=3.9"
38
38
  dependencies = [
39
- "pydantic-ai-slim[openai,vertexai,groq,anthropic,mistral,cohere,bedrock,cli,mcp]==0.0.43",
39
+ "pydantic-ai-slim[openai,vertexai,groq,anthropic,mistral,cohere,bedrock,cli,mcp]==0.0.45",
40
40
  ]
41
41
 
42
42
  [project.urls]
@@ -46,7 +46,7 @@ Documentation = "https://ai.pydantic.dev"
46
46
  Changelog = "https://github.com/pydantic/pydantic-ai/releases"
47
47
 
48
48
  [project.optional-dependencies]
49
- examples = ["pydantic-ai-examples==0.0.43"]
49
+ examples = ["pydantic-ai-examples==0.0.45"]
50
50
  logfire = ["logfire>=2.3"]
51
51
 
52
52
  [tool.uv.sources]
@@ -40,7 +40,7 @@ else:
40
40
 
41
41
  def IsNow(*args: Any, **kwargs: Any):
42
42
  # Increase the default value of `delta` to 10 to reduce test flakiness on overburdened machines
43
- if 'delta' not in kwargs:
43
+ if 'delta' not in kwargs: # pragma: no branch
44
44
  kwargs['delta'] = 10
45
45
  return _IsNow(*args, **kwargs)
46
46
 
@@ -154,7 +154,7 @@ def create_module(tmp_path: Path, request: pytest.FixtureRequest) -> Callable[[s
154
154
 
155
155
 
156
156
  @contextmanager
157
- def try_import() -> Iterator[Callable[[], bool]]:
157
+ def try_import() -> Iterator[Callable[[], bool]]: # pragma: no cover
158
158
  import_success = False
159
159
 
160
160
  def check_import() -> bool:
@@ -246,6 +246,16 @@ def anthropic_api_key() -> str:
246
246
  return os.getenv('ANTHROPIC_API_KEY', 'mock-api-key')
247
247
 
248
248
 
249
+ @pytest.fixture(scope='session')
250
+ def co_api_key() -> str:
251
+ return os.getenv('CO_API_KEY', 'mock-api-key')
252
+
253
+
254
+ @pytest.fixture(scope='session')
255
+ def mistral_api_key() -> str:
256
+ return os.getenv('MISTRAL_API_KEY', 'mock-api-key')
257
+
258
+
249
259
  @pytest.fixture
250
260
  def mock_snapshot_id(mocker: MockerFixture):
251
261
  i = 0
@@ -0,0 +1,20 @@
1
+ from threading import Thread
2
+
3
+ from pydantic_graph._utils import run_until_complete
4
+
5
+
6
+ def test_run_until_complete_in_main_thread():
7
+ async def run(): ...
8
+
9
+ run_until_complete(run())
10
+
11
+
12
+ def test_run_until_complete_in_thread():
13
+ async def run(): ...
14
+
15
+ def get_and_close_event_loop():
16
+ run_until_complete(run())
17
+
18
+ thread = Thread(target=get_and_close_event_loop)
19
+ thread.start()
20
+ thread.join()
@@ -0,0 +1,64 @@
1
+ interactions:
2
+ - request:
3
+ headers:
4
+ accept:
5
+ - '*/*'
6
+ accept-encoding:
7
+ - gzip, deflate
8
+ connection:
9
+ - keep-alive
10
+ content-length:
11
+ - '93'
12
+ content-type:
13
+ - application/json
14
+ host:
15
+ - api.cohere.com
16
+ method: POST
17
+ parsed_body:
18
+ messages:
19
+ - content: hello
20
+ role: user
21
+ model: command-r7b-12-2024
22
+ stream: false
23
+ uri: https://api.cohere.com/v2/chat
24
+ response:
25
+ headers:
26
+ access-control-expose-headers:
27
+ - X-Debug-Trace-ID
28
+ alt-svc:
29
+ - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
30
+ cache-control:
31
+ - no-cache, no-store, no-transform, must-revalidate, private, max-age=0
32
+ content-length:
33
+ - '286'
34
+ content-type:
35
+ - application/json
36
+ expires:
37
+ - Thu, 01 Jan 1970 00:00:00 UTC
38
+ num_chars:
39
+ - '2583'
40
+ num_tokens:
41
+ - '10'
42
+ pragma:
43
+ - no-cache
44
+ vary:
45
+ - Origin
46
+ parsed_body:
47
+ finish_reason: COMPLETE
48
+ id: f17a5f6c-1734-4098-bd0d-733ef000ac7b
49
+ message:
50
+ content:
51
+ - text: Hello! How can I assist you today?
52
+ type: text
53
+ role: assistant
54
+ usage:
55
+ billed_units:
56
+ input_tokens: 1
57
+ output_tokens: 9
58
+ tokens:
59
+ input_tokens: 496
60
+ output_tokens: 11
61
+ status:
62
+ code: 200
63
+ message: OK
64
+ version: 1
@@ -37,13 +37,13 @@ interactions:
37
37
  connection:
38
38
  - keep-alive
39
39
  content-length:
40
- - '882'
40
+ - '909'
41
41
  content-type:
42
42
  - application/json
43
43
  openai-organization:
44
44
  - pydantic-28gund
45
45
  openai-processing-ms:
46
- - '1394'
46
+ - '1898'
47
47
  openai-version:
48
48
  - '2020-10-01'
49
49
  strict-transport-security:
@@ -55,15 +55,16 @@ interactions:
55
55
  - finish_reason: stop
56
56
  index: 0
57
57
  message:
58
+ annotations: []
58
59
  content: The name mentioned in the audio is Marcelo.
59
60
  refusal: null
60
61
  role: assistant
61
- created: 1740408639
62
- id: chatcmpl-B4U51malankDFzpReXZCXRgKQsAx1
62
+ created: 1742905314
63
+ id: chatcmpl-BExZy74Y67dd65ec2z4iuzM0Exnks
63
64
  model: gpt-4o-audio-preview-2024-12-17
64
65
  object: chat.completion
65
66
  service_tier: default
66
- system_fingerprint: fp_31e26c9138
67
+ system_fingerprint: fp_bf4a46b2e5
67
68
  usage:
68
69
  completion_tokens: 9
69
70
  completion_tokens_details:
@@ -36,13 +36,13 @@ interactions:
36
36
  connection:
37
37
  - keep-alive
38
38
  content-length:
39
- - '812'
39
+ - '839'
40
40
  content-type:
41
41
  - application/json
42
42
  openai-organization:
43
43
  - pydantic-28gund
44
44
  openai-processing-ms:
45
- - '3988'
45
+ - '3245'
46
46
  openai-version:
47
47
  - '2020-10-01'
48
48
  strict-transport-security:
@@ -55,15 +55,16 @@ interactions:
55
55
  index: 0
56
56
  logprobs: null
57
57
  message:
58
+ annotations: []
58
59
  content: The fruit in the image is a kiwi.
59
60
  refusal: null
60
61
  role: assistant
61
- created: 1740408634
62
- id: chatcmpl-B4U4wIOoauVGgr7Nqe5H2oj5tZoKK
62
+ created: 1742905309
63
+ id: chatcmpl-BExZtIgl2l91Y1IYJW3DSJj1yRlpY
63
64
  model: gpt-4o-2024-08-06
64
65
  object: chat.completion
65
66
  service_tier: default
66
- system_fingerprint: fp_197415291b
67
+ system_fingerprint: fp_83df987f64
67
68
  usage:
68
69
  completion_tokens: 10
69
70
  completion_tokens_details:
@@ -71,11 +72,11 @@ interactions:
71
72
  audio_tokens: 0
72
73
  reasoning_tokens: 0
73
74
  rejected_prediction_tokens: 0
74
- prompt_tokens: 1152
75
+ prompt_tokens: 1119
75
76
  prompt_tokens_details:
76
77
  audio_tokens: 0
77
78
  cached_tokens: 0
78
- total_tokens: 1162
79
+ total_tokens: 1129
79
80
  status:
80
81
  code: 200
81
82
  message: OK
@@ -0,0 +1,78 @@
1
+ interactions:
2
+ - request:
3
+ headers:
4
+ accept:
5
+ - application/json
6
+ accept-encoding:
7
+ - gzip, deflate
8
+ connection:
9
+ - keep-alive
10
+ content-length:
11
+ - '123'
12
+ content-type:
13
+ - application/json
14
+ host:
15
+ - api.openai.com
16
+ method: POST
17
+ parsed_body:
18
+ max_completion_tokens: 100
19
+ messages:
20
+ - content: hello
21
+ role: user
22
+ model: gpt-4.5-preview
23
+ n: 1
24
+ stream: false
25
+ uri: https://api.openai.com/v1/chat/completions
26
+ response:
27
+ headers:
28
+ access-control-expose-headers:
29
+ - X-Request-ID
30
+ alt-svc:
31
+ - h3=":443"; ma=86400
32
+ connection:
33
+ - keep-alive
34
+ content-length:
35
+ - '807'
36
+ content-type:
37
+ - application/json
38
+ openai-organization:
39
+ - pydantic-28gund
40
+ openai-processing-ms:
41
+ - '1408'
42
+ openai-version:
43
+ - '2020-10-01'
44
+ strict-transport-security:
45
+ - max-age=31536000; includeSubDomains; preload
46
+ transfer-encoding:
47
+ - chunked
48
+ parsed_body:
49
+ choices:
50
+ - finish_reason: stop
51
+ index: 0
52
+ message:
53
+ annotations: []
54
+ content: Hello! How can I help you today?
55
+ refusal: null
56
+ role: assistant
57
+ created: 1742636225
58
+ id: chatcmpl-BDpZplWguNLn40wA5mIpCR3OIzvYP
59
+ model: gpt-4.5-preview-2025-02-27
60
+ object: chat.completion
61
+ service_tier: default
62
+ system_fingerprint: null
63
+ usage:
64
+ completion_tokens: 10
65
+ completion_tokens_details:
66
+ accepted_prediction_tokens: 0
67
+ audio_tokens: 0
68
+ reasoning_tokens: 0
69
+ rejected_prediction_tokens: 0
70
+ prompt_tokens: 8
71
+ prompt_tokens_details:
72
+ audio_tokens: 0
73
+ cached_tokens: 0
74
+ total_tokens: 18
75
+ status:
76
+ code: 200
77
+ message: OK
78
+ version: 1
@@ -0,0 +1,79 @@
1
+ interactions:
2
+ - request:
3
+ headers:
4
+ accept:
5
+ - application/json
6
+ accept-encoding:
7
+ - gzip, deflate
8
+ connection:
9
+ - keep-alive
10
+ content-length:
11
+ - '119'
12
+ content-type:
13
+ - application/json
14
+ host:
15
+ - api.openai.com
16
+ method: POST
17
+ parsed_body:
18
+ max_completion_tokens: 100
19
+ messages:
20
+ - content: hello
21
+ role: user
22
+ model: gpt-4o-mini
23
+ n: 1
24
+ stream: false
25
+ uri: https://api.openai.com/v1/chat/completions
26
+ response:
27
+ headers:
28
+ access-control-expose-headers:
29
+ - X-Request-ID
30
+ alt-svc:
31
+ - h3=":443"; ma=86400
32
+ connection:
33
+ - keep-alive
34
+ content-length:
35
+ - '840'
36
+ content-type:
37
+ - application/json
38
+ openai-organization:
39
+ - pydantic-28gund
40
+ openai-processing-ms:
41
+ - '278'
42
+ openai-version:
43
+ - '2020-10-01'
44
+ strict-transport-security:
45
+ - max-age=31536000; includeSubDomains; preload
46
+ transfer-encoding:
47
+ - chunked
48
+ parsed_body:
49
+ choices:
50
+ - finish_reason: stop
51
+ index: 0
52
+ logprobs: null
53
+ message:
54
+ annotations: []
55
+ content: Hello! How can I assist you today?
56
+ refusal: null
57
+ role: assistant
58
+ created: 1742636224
59
+ id: chatcmpl-BDpZoxw4i90ZesN8iyrwLmGWRJ5lz
60
+ model: gpt-4o-mini-2024-07-18
61
+ object: chat.completion
62
+ service_tier: default
63
+ system_fingerprint: fp_b8bc95a0ac
64
+ usage:
65
+ completion_tokens: 10
66
+ completion_tokens_details:
67
+ accepted_prediction_tokens: 0
68
+ audio_tokens: 0
69
+ reasoning_tokens: 0
70
+ rejected_prediction_tokens: 0
71
+ prompt_tokens: 8
72
+ prompt_tokens_details:
73
+ audio_tokens: 0
74
+ cached_tokens: 0
75
+ total_tokens: 18
76
+ status:
77
+ code: 200
78
+ message: OK
79
+ version: 1
@@ -0,0 +1,78 @@
1
+ interactions:
2
+ - request:
3
+ headers:
4
+ accept:
5
+ - application/json
6
+ accept-encoding:
7
+ - gzip, deflate
8
+ connection:
9
+ - keep-alive
10
+ content-length:
11
+ - '115'
12
+ content-type:
13
+ - application/json
14
+ host:
15
+ - api.openai.com
16
+ method: POST
17
+ parsed_body:
18
+ max_completion_tokens: 100
19
+ messages:
20
+ - content: hello
21
+ role: user
22
+ model: o3-mini
23
+ n: 1
24
+ stream: false
25
+ uri: https://api.openai.com/v1/chat/completions
26
+ response:
27
+ headers:
28
+ access-control-expose-headers:
29
+ - X-Request-ID
30
+ alt-svc:
31
+ - h3=":443"; ma=86400
32
+ connection:
33
+ - keep-alive
34
+ content-length:
35
+ - '817'
36
+ content-type:
37
+ - application/json
38
+ openai-organization:
39
+ - pydantic-28gund
40
+ openai-processing-ms:
41
+ - '1895'
42
+ openai-version:
43
+ - '2020-10-01'
44
+ strict-transport-security:
45
+ - max-age=31536000; includeSubDomains; preload
46
+ transfer-encoding:
47
+ - chunked
48
+ parsed_body:
49
+ choices:
50
+ - finish_reason: stop
51
+ index: 0
52
+ message:
53
+ annotations: []
54
+ content: Hello there! How can I help you today?
55
+ refusal: null
56
+ role: assistant
57
+ created: 1742636222
58
+ id: chatcmpl-BDpZm1SiItIXIcDA0xRV9QGZhD97e
59
+ model: o3-mini-2025-01-31
60
+ object: chat.completion
61
+ service_tier: default
62
+ system_fingerprint: fp_617f206dd9
63
+ usage:
64
+ completion_tokens: 85
65
+ completion_tokens_details:
66
+ accepted_prediction_tokens: 0
67
+ audio_tokens: 0
68
+ reasoning_tokens: 64
69
+ rejected_prediction_tokens: 0
70
+ prompt_tokens: 7
71
+ prompt_tokens_details:
72
+ audio_tokens: 0
73
+ cached_tokens: 0
74
+ total_tokens: 92
75
+ status:
76
+ code: 200
77
+ message: OK
78
+ version: 1