pydantic-ai-slim 1.0.0b1__py3-none-any.whl → 1.0.1__py3-none-any.whl
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.
- pydantic_ai/_a2a.py +1 -1
- pydantic_ai/_agent_graph.py +16 -19
- pydantic_ai/_parts_manager.py +3 -1
- pydantic_ai/_tool_manager.py +29 -6
- pydantic_ai/ag_ui.py +75 -43
- pydantic_ai/agent/__init__.py +7 -7
- pydantic_ai/durable_exec/temporal/_agent.py +71 -10
- pydantic_ai/exceptions.py +2 -2
- pydantic_ai/mcp.py +13 -25
- pydantic_ai/messages.py +78 -19
- pydantic_ai/models/__init__.py +1 -0
- pydantic_ai/models/anthropic.py +4 -11
- pydantic_ai/models/bedrock.py +6 -14
- pydantic_ai/models/gemini.py +3 -1
- pydantic_ai/models/google.py +15 -1
- pydantic_ai/models/groq.py +122 -34
- pydantic_ai/models/instrumented.py +5 -0
- pydantic_ai/models/openai.py +17 -13
- pydantic_ai/providers/__init__.py +4 -0
- pydantic_ai/providers/google_vertex.py +2 -1
- pydantic_ai/providers/groq.py +21 -2
- pydantic_ai/providers/litellm.py +134 -0
- pydantic_ai/retries.py +42 -2
- pydantic_ai/tools.py +7 -7
- pydantic_ai/toolsets/combined.py +2 -2
- pydantic_ai/toolsets/function.py +47 -19
- pydantic_ai/usage.py +37 -3
- {pydantic_ai_slim-1.0.0b1.dist-info → pydantic_ai_slim-1.0.1.dist-info}/METADATA +6 -7
- {pydantic_ai_slim-1.0.0b1.dist-info → pydantic_ai_slim-1.0.1.dist-info}/RECORD +32 -31
- {pydantic_ai_slim-1.0.0b1.dist-info → pydantic_ai_slim-1.0.1.dist-info}/WHEEL +0 -0
- {pydantic_ai_slim-1.0.0b1.dist-info → pydantic_ai_slim-1.0.1.dist-info}/entry_points.txt +0 -0
- {pydantic_ai_slim-1.0.0b1.dist-info → pydantic_ai_slim-1.0.1.dist-info}/licenses/LICENSE +0 -0
pydantic_ai/toolsets/combined.py
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import asyncio
|
|
4
|
+
from asyncio import Lock
|
|
4
5
|
from collections.abc import Callable, Sequence
|
|
5
6
|
from contextlib import AsyncExitStack
|
|
6
7
|
from dataclasses import dataclass, field, replace
|
|
7
8
|
from typing import Any
|
|
8
9
|
|
|
9
|
-
import anyio
|
|
10
10
|
from typing_extensions import Self
|
|
11
11
|
|
|
12
12
|
from .._run_context import AgentDepsT, RunContext
|
|
@@ -31,7 +31,7 @@ class CombinedToolset(AbstractToolset[AgentDepsT]):
|
|
|
31
31
|
|
|
32
32
|
toolsets: Sequence[AbstractToolset[AgentDepsT]]
|
|
33
33
|
|
|
34
|
-
_enter_lock:
|
|
34
|
+
_enter_lock: Lock = field(compare=False, init=False, default_factory=Lock)
|
|
35
35
|
_entered_count: int = field(init=False, default=0)
|
|
36
36
|
_exit_stack: AsyncExitStack | None = field(init=False, default=None)
|
|
37
37
|
|
pydantic_ai/toolsets/function.py
CHANGED
|
@@ -33,9 +33,12 @@ class FunctionToolset(AbstractToolset[AgentDepsT]):
|
|
|
33
33
|
See [toolset docs](../toolsets.md#function-toolset) for more information.
|
|
34
34
|
"""
|
|
35
35
|
|
|
36
|
-
max_retries: int
|
|
37
36
|
tools: dict[str, Tool[Any]]
|
|
37
|
+
max_retries: int
|
|
38
38
|
_id: str | None
|
|
39
|
+
docstring_format: DocstringFormat
|
|
40
|
+
require_parameter_descriptions: bool
|
|
41
|
+
schema_generator: type[GenerateJsonSchema]
|
|
39
42
|
|
|
40
43
|
def __init__(
|
|
41
44
|
self,
|
|
@@ -43,16 +46,30 @@ class FunctionToolset(AbstractToolset[AgentDepsT]):
|
|
|
43
46
|
*,
|
|
44
47
|
max_retries: int = 1,
|
|
45
48
|
id: str | None = None,
|
|
49
|
+
docstring_format: DocstringFormat = 'auto',
|
|
50
|
+
require_parameter_descriptions: bool = False,
|
|
51
|
+
schema_generator: type[GenerateJsonSchema] = GenerateToolJsonSchema,
|
|
46
52
|
):
|
|
47
53
|
"""Build a new function toolset.
|
|
48
54
|
|
|
49
55
|
Args:
|
|
50
56
|
tools: The tools to add to the toolset.
|
|
51
57
|
max_retries: The maximum number of retries for each tool during a run.
|
|
52
|
-
id: An optional unique ID for the toolset. A toolset needs to have an ID in order to be used in a durable execution environment like Temporal,
|
|
58
|
+
id: An optional unique ID for the toolset. A toolset needs to have an ID in order to be used in a durable execution environment like Temporal,
|
|
59
|
+
in which case the ID will be used to identify the toolset's activities within the workflow.
|
|
60
|
+
docstring_format: Format of tool docstring, see [`DocstringFormat`][pydantic_ai.tools.DocstringFormat].
|
|
61
|
+
Defaults to `'auto'`, such that the format is inferred from the structure of the docstring.
|
|
62
|
+
Applies to all tools, unless overridden when adding a tool.
|
|
63
|
+
require_parameter_descriptions: If True, raise an error if a parameter description is missing. Defaults to False.
|
|
64
|
+
Applies to all tools, unless overridden when adding a tool.
|
|
65
|
+
schema_generator: The JSON schema generator class to use for this tool. Defaults to `GenerateToolJsonSchema`.
|
|
66
|
+
Applies to all tools, unless overridden when adding a tool.
|
|
53
67
|
"""
|
|
54
68
|
self.max_retries = max_retries
|
|
55
69
|
self._id = id
|
|
70
|
+
self.docstring_format = docstring_format
|
|
71
|
+
self.require_parameter_descriptions = require_parameter_descriptions
|
|
72
|
+
self.schema_generator = schema_generator
|
|
56
73
|
|
|
57
74
|
self.tools = {}
|
|
58
75
|
for tool in tools:
|
|
@@ -76,9 +93,9 @@ class FunctionToolset(AbstractToolset[AgentDepsT]):
|
|
|
76
93
|
name: str | None = None,
|
|
77
94
|
retries: int | None = None,
|
|
78
95
|
prepare: ToolPrepareFunc[AgentDepsT] | None = None,
|
|
79
|
-
docstring_format: DocstringFormat =
|
|
80
|
-
require_parameter_descriptions: bool =
|
|
81
|
-
schema_generator: type[GenerateJsonSchema] =
|
|
96
|
+
docstring_format: DocstringFormat | None = None,
|
|
97
|
+
require_parameter_descriptions: bool | None = None,
|
|
98
|
+
schema_generator: type[GenerateJsonSchema] | None = None,
|
|
82
99
|
strict: bool | None = None,
|
|
83
100
|
requires_approval: bool = False,
|
|
84
101
|
) -> Callable[[ToolFuncEither[AgentDepsT, ToolParams]], ToolFuncEither[AgentDepsT, ToolParams]]: ...
|
|
@@ -91,9 +108,9 @@ class FunctionToolset(AbstractToolset[AgentDepsT]):
|
|
|
91
108
|
name: str | None = None,
|
|
92
109
|
retries: int | None = None,
|
|
93
110
|
prepare: ToolPrepareFunc[AgentDepsT] | None = None,
|
|
94
|
-
docstring_format: DocstringFormat =
|
|
95
|
-
require_parameter_descriptions: bool =
|
|
96
|
-
schema_generator: type[GenerateJsonSchema] =
|
|
111
|
+
docstring_format: DocstringFormat | None = None,
|
|
112
|
+
require_parameter_descriptions: bool | None = None,
|
|
113
|
+
schema_generator: type[GenerateJsonSchema] | None = None,
|
|
97
114
|
strict: bool | None = None,
|
|
98
115
|
requires_approval: bool = False,
|
|
99
116
|
) -> Any:
|
|
@@ -137,13 +154,15 @@ class FunctionToolset(AbstractToolset[AgentDepsT]):
|
|
|
137
154
|
tool from a given step. This is useful if you want to customise a tool at call time,
|
|
138
155
|
or omit it completely from a step. See [`ToolPrepareFunc`][pydantic_ai.tools.ToolPrepareFunc].
|
|
139
156
|
docstring_format: The format of the docstring, see [`DocstringFormat`][pydantic_ai.tools.DocstringFormat].
|
|
140
|
-
|
|
141
|
-
require_parameter_descriptions: If True, raise an error if a parameter description is missing.
|
|
142
|
-
|
|
157
|
+
If `None`, the default value is determined by the toolset.
|
|
158
|
+
require_parameter_descriptions: If True, raise an error if a parameter description is missing.
|
|
159
|
+
If `None`, the default value is determined by the toolset.
|
|
160
|
+
schema_generator: The JSON schema generator class to use for this tool.
|
|
161
|
+
If `None`, the default value is determined by the toolset.
|
|
143
162
|
strict: Whether to enforce JSON schema compliance (only affects OpenAI).
|
|
144
163
|
See [`ToolDefinition`][pydantic_ai.tools.ToolDefinition] for more info.
|
|
145
164
|
requires_approval: Whether this tool requires human-in-the-loop approval. Defaults to False.
|
|
146
|
-
See the [tools documentation](../tools.md#human-in-the-loop-tool-approval) for more info.
|
|
165
|
+
See the [tools documentation](../deferred-tools.md#human-in-the-loop-tool-approval) for more info.
|
|
147
166
|
"""
|
|
148
167
|
|
|
149
168
|
def tool_decorator(
|
|
@@ -173,9 +192,9 @@ class FunctionToolset(AbstractToolset[AgentDepsT]):
|
|
|
173
192
|
name: str | None = None,
|
|
174
193
|
retries: int | None = None,
|
|
175
194
|
prepare: ToolPrepareFunc[AgentDepsT] | None = None,
|
|
176
|
-
docstring_format: DocstringFormat =
|
|
177
|
-
require_parameter_descriptions: bool =
|
|
178
|
-
schema_generator: type[GenerateJsonSchema] =
|
|
195
|
+
docstring_format: DocstringFormat | None = None,
|
|
196
|
+
require_parameter_descriptions: bool | None = None,
|
|
197
|
+
schema_generator: type[GenerateJsonSchema] | None = None,
|
|
179
198
|
strict: bool | None = None,
|
|
180
199
|
requires_approval: bool = False,
|
|
181
200
|
) -> None:
|
|
@@ -196,14 +215,23 @@ class FunctionToolset(AbstractToolset[AgentDepsT]):
|
|
|
196
215
|
tool from a given step. This is useful if you want to customise a tool at call time,
|
|
197
216
|
or omit it completely from a step. See [`ToolPrepareFunc`][pydantic_ai.tools.ToolPrepareFunc].
|
|
198
217
|
docstring_format: The format of the docstring, see [`DocstringFormat`][pydantic_ai.tools.DocstringFormat].
|
|
199
|
-
|
|
200
|
-
require_parameter_descriptions: If True, raise an error if a parameter description is missing.
|
|
201
|
-
|
|
218
|
+
If `None`, the default value is determined by the toolset.
|
|
219
|
+
require_parameter_descriptions: If True, raise an error if a parameter description is missing.
|
|
220
|
+
If `None`, the default value is determined by the toolset.
|
|
221
|
+
schema_generator: The JSON schema generator class to use for this tool.
|
|
222
|
+
If `None`, the default value is determined by the toolset.
|
|
202
223
|
strict: Whether to enforce JSON schema compliance (only affects OpenAI).
|
|
203
224
|
See [`ToolDefinition`][pydantic_ai.tools.ToolDefinition] for more info.
|
|
204
225
|
requires_approval: Whether this tool requires human-in-the-loop approval. Defaults to False.
|
|
205
|
-
See the [tools documentation](../tools.md#human-in-the-loop-tool-approval) for more info.
|
|
226
|
+
See the [tools documentation](../deferred-tools.md#human-in-the-loop-tool-approval) for more info.
|
|
206
227
|
"""
|
|
228
|
+
if docstring_format is None:
|
|
229
|
+
docstring_format = self.docstring_format
|
|
230
|
+
if require_parameter_descriptions is None:
|
|
231
|
+
require_parameter_descriptions = self.require_parameter_descriptions
|
|
232
|
+
if schema_generator is None:
|
|
233
|
+
schema_generator = self.schema_generator
|
|
234
|
+
|
|
207
235
|
tool = Tool[AgentDepsT](
|
|
208
236
|
func,
|
|
209
237
|
takes_ctx=takes_ctx,
|
pydantic_ai/usage.py
CHANGED
|
@@ -3,7 +3,9 @@ from __future__ import annotations as _annotations
|
|
|
3
3
|
import dataclasses
|
|
4
4
|
from copy import copy
|
|
5
5
|
from dataclasses import dataclass, fields
|
|
6
|
+
from typing import Annotated
|
|
6
7
|
|
|
8
|
+
from pydantic import AliasChoices, BeforeValidator, Field
|
|
7
9
|
from typing_extensions import deprecated, overload
|
|
8
10
|
|
|
9
11
|
from . import _utils
|
|
@@ -14,7 +16,11 @@ __all__ = 'RequestUsage', 'RunUsage', 'Usage', 'UsageLimits'
|
|
|
14
16
|
|
|
15
17
|
@dataclass(repr=False, kw_only=True)
|
|
16
18
|
class UsageBase:
|
|
17
|
-
input_tokens:
|
|
19
|
+
input_tokens: Annotated[
|
|
20
|
+
int,
|
|
21
|
+
# `request_tokens` is deprecated, but we still want to support deserializing model responses stored in a DB before the name was changed
|
|
22
|
+
Field(validation_alias=AliasChoices('input_tokens', 'request_tokens')),
|
|
23
|
+
] = 0
|
|
18
24
|
"""Number of input/prompt tokens."""
|
|
19
25
|
|
|
20
26
|
cache_write_tokens: int = 0
|
|
@@ -22,7 +28,11 @@ class UsageBase:
|
|
|
22
28
|
cache_read_tokens: int = 0
|
|
23
29
|
"""Number of tokens read from the cache."""
|
|
24
30
|
|
|
25
|
-
output_tokens:
|
|
31
|
+
output_tokens: Annotated[
|
|
32
|
+
int,
|
|
33
|
+
# `response_tokens` is deprecated, but we still want to support deserializing model responses stored in a DB before the name was changed
|
|
34
|
+
Field(validation_alias=AliasChoices('output_tokens', 'response_tokens')),
|
|
35
|
+
] = 0
|
|
26
36
|
"""Number of output/completion tokens."""
|
|
27
37
|
|
|
28
38
|
input_audio_tokens: int = 0
|
|
@@ -32,7 +42,11 @@ class UsageBase:
|
|
|
32
42
|
output_audio_tokens: int = 0
|
|
33
43
|
"""Number of audio output tokens."""
|
|
34
44
|
|
|
35
|
-
details:
|
|
45
|
+
details: Annotated[
|
|
46
|
+
dict[str, int],
|
|
47
|
+
# `details` can not be `None` any longer, but we still want to support deserializing model responses stored in a DB before this was changed
|
|
48
|
+
BeforeValidator(lambda d: d or {}),
|
|
49
|
+
] = dataclasses.field(default_factory=dict)
|
|
36
50
|
"""Any extra details returned by the model."""
|
|
37
51
|
|
|
38
52
|
@property
|
|
@@ -117,6 +131,9 @@ class RunUsage(UsageBase):
|
|
|
117
131
|
requests: int = 0
|
|
118
132
|
"""Number of requests made to the LLM API."""
|
|
119
133
|
|
|
134
|
+
tool_calls: int = 0
|
|
135
|
+
"""Number of successful tool calls executed during the run."""
|
|
136
|
+
|
|
120
137
|
input_tokens: int = 0
|
|
121
138
|
"""Total number of text input/prompt tokens."""
|
|
122
139
|
|
|
@@ -146,6 +163,7 @@ class RunUsage(UsageBase):
|
|
|
146
163
|
"""
|
|
147
164
|
if isinstance(incr_usage, RunUsage):
|
|
148
165
|
self.requests += incr_usage.requests
|
|
166
|
+
self.tool_calls += incr_usage.tool_calls
|
|
149
167
|
return _incr_usage_tokens(self, incr_usage)
|
|
150
168
|
|
|
151
169
|
def __add__(self, other: RunUsage | RequestUsage) -> RunUsage:
|
|
@@ -194,6 +212,8 @@ class UsageLimits:
|
|
|
194
212
|
|
|
195
213
|
request_limit: int | None = 50
|
|
196
214
|
"""The maximum number of requests allowed to the model."""
|
|
215
|
+
tool_calls_limit: int | None = None
|
|
216
|
+
"""The maximum number of successful tool calls allowed to be executed."""
|
|
197
217
|
input_tokens_limit: int | None = None
|
|
198
218
|
"""The maximum number of input/prompt tokens allowed."""
|
|
199
219
|
output_tokens_limit: int | None = None
|
|
@@ -220,12 +240,14 @@ class UsageLimits:
|
|
|
220
240
|
self,
|
|
221
241
|
*,
|
|
222
242
|
request_limit: int | None = 50,
|
|
243
|
+
tool_calls_limit: int | None = None,
|
|
223
244
|
input_tokens_limit: int | None = None,
|
|
224
245
|
output_tokens_limit: int | None = None,
|
|
225
246
|
total_tokens_limit: int | None = None,
|
|
226
247
|
count_tokens_before_request: bool = False,
|
|
227
248
|
) -> None:
|
|
228
249
|
self.request_limit = request_limit
|
|
250
|
+
self.tool_calls_limit = tool_calls_limit
|
|
229
251
|
self.input_tokens_limit = input_tokens_limit
|
|
230
252
|
self.output_tokens_limit = output_tokens_limit
|
|
231
253
|
self.total_tokens_limit = total_tokens_limit
|
|
@@ -239,12 +261,14 @@ class UsageLimits:
|
|
|
239
261
|
self,
|
|
240
262
|
*,
|
|
241
263
|
request_limit: int | None = 50,
|
|
264
|
+
tool_calls_limit: int | None = None,
|
|
242
265
|
request_tokens_limit: int | None = None,
|
|
243
266
|
response_tokens_limit: int | None = None,
|
|
244
267
|
total_tokens_limit: int | None = None,
|
|
245
268
|
count_tokens_before_request: bool = False,
|
|
246
269
|
) -> None:
|
|
247
270
|
self.request_limit = request_limit
|
|
271
|
+
self.tool_calls_limit = tool_calls_limit
|
|
248
272
|
self.input_tokens_limit = request_tokens_limit
|
|
249
273
|
self.output_tokens_limit = response_tokens_limit
|
|
250
274
|
self.total_tokens_limit = total_tokens_limit
|
|
@@ -254,6 +278,7 @@ class UsageLimits:
|
|
|
254
278
|
self,
|
|
255
279
|
*,
|
|
256
280
|
request_limit: int | None = 50,
|
|
281
|
+
tool_calls_limit: int | None = None,
|
|
257
282
|
input_tokens_limit: int | None = None,
|
|
258
283
|
output_tokens_limit: int | None = None,
|
|
259
284
|
total_tokens_limit: int | None = None,
|
|
@@ -263,6 +288,7 @@ class UsageLimits:
|
|
|
263
288
|
response_tokens_limit: int | None = None,
|
|
264
289
|
):
|
|
265
290
|
self.request_limit = request_limit
|
|
291
|
+
self.tool_calls_limit = tool_calls_limit
|
|
266
292
|
self.input_tokens_limit = input_tokens_limit or request_tokens_limit
|
|
267
293
|
self.output_tokens_limit = output_tokens_limit or response_tokens_limit
|
|
268
294
|
self.total_tokens_limit = total_tokens_limit
|
|
@@ -314,4 +340,12 @@ class UsageLimits:
|
|
|
314
340
|
if self.total_tokens_limit is not None and total_tokens > self.total_tokens_limit:
|
|
315
341
|
raise UsageLimitExceeded(f'Exceeded the total_tokens_limit of {self.total_tokens_limit} ({total_tokens=})')
|
|
316
342
|
|
|
343
|
+
def check_before_tool_call(self, usage: RunUsage) -> None:
|
|
344
|
+
"""Raises a `UsageLimitExceeded` exception if the next tool call would exceed the tool call limit."""
|
|
345
|
+
tool_calls_limit = self.tool_calls_limit
|
|
346
|
+
if tool_calls_limit is not None and usage.tool_calls >= tool_calls_limit:
|
|
347
|
+
raise UsageLimitExceeded(
|
|
348
|
+
f'The next tool call would exceed the tool_calls_limit of {tool_calls_limit} (tool_calls={usage.tool_calls})'
|
|
349
|
+
)
|
|
350
|
+
|
|
317
351
|
__repr__ = _utils.dataclasses_no_defaults_repr
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pydantic-ai-slim
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.1
|
|
4
4
|
Summary: Agent Framework / shim to use Pydantic with LLMs, slim package
|
|
5
5
|
Project-URL: Homepage, https://github.com/pydantic/pydantic-ai/tree/main/pydantic_ai_slim
|
|
6
6
|
Project-URL: Source, https://github.com/pydantic/pydantic-ai/tree/main/pydantic_ai_slim
|
|
@@ -9,7 +9,7 @@ Project-URL: Changelog, https://github.com/pydantic/pydantic-ai/releases
|
|
|
9
9
|
Author-email: Samuel Colvin <samuel@pydantic.dev>, Marcelo Trylesinski <marcelotryle@gmail.com>, David Montague <david@pydantic.dev>, Alex Hall <alex@pydantic.dev>, Douwe Maan <douwe@pydantic.dev>
|
|
10
10
|
License-Expression: MIT
|
|
11
11
|
License-File: LICENSE
|
|
12
|
-
Classifier: Development Status ::
|
|
12
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
13
13
|
Classifier: Environment :: Console
|
|
14
14
|
Classifier: Environment :: MacOS X
|
|
15
15
|
Classifier: Intended Audience :: Developers
|
|
@@ -28,13 +28,12 @@ Classifier: Programming Language :: Python :: 3.13
|
|
|
28
28
|
Classifier: Topic :: Internet
|
|
29
29
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
30
30
|
Requires-Python: >=3.10
|
|
31
|
-
Requires-Dist: eval-type-backport>=0.2.0
|
|
32
31
|
Requires-Dist: exceptiongroup; python_version < '3.11'
|
|
33
32
|
Requires-Dist: genai-prices>=0.0.22
|
|
34
33
|
Requires-Dist: griffe>=1.3.2
|
|
35
34
|
Requires-Dist: httpx>=0.27
|
|
36
35
|
Requires-Dist: opentelemetry-api>=1.28.0
|
|
37
|
-
Requires-Dist: pydantic-graph==1.0.
|
|
36
|
+
Requires-Dist: pydantic-graph==1.0.1
|
|
38
37
|
Requires-Dist: pydantic>=2.10
|
|
39
38
|
Requires-Dist: typing-inspection>=0.4.0
|
|
40
39
|
Provides-Extra: a2a
|
|
@@ -56,7 +55,7 @@ Requires-Dist: cohere>=5.16.0; (platform_system != 'Emscripten') and extra == 'c
|
|
|
56
55
|
Provides-Extra: duckduckgo
|
|
57
56
|
Requires-Dist: ddgs>=9.0.0; extra == 'duckduckgo'
|
|
58
57
|
Provides-Extra: evals
|
|
59
|
-
Requires-Dist: pydantic-evals==1.0.
|
|
58
|
+
Requires-Dist: pydantic-evals==1.0.1; extra == 'evals'
|
|
60
59
|
Provides-Extra: google
|
|
61
60
|
Requires-Dist: google-genai>=1.31.0; extra == 'google'
|
|
62
61
|
Provides-Extra: groq
|
|
@@ -66,7 +65,7 @@ Requires-Dist: huggingface-hub[inference]>=0.33.5; extra == 'huggingface'
|
|
|
66
65
|
Provides-Extra: logfire
|
|
67
66
|
Requires-Dist: logfire[httpx]>=3.14.1; extra == 'logfire'
|
|
68
67
|
Provides-Extra: mcp
|
|
69
|
-
Requires-Dist: mcp>=1.12.3;
|
|
68
|
+
Requires-Dist: mcp>=1.12.3; extra == 'mcp'
|
|
70
69
|
Provides-Extra: mistral
|
|
71
70
|
Requires-Dist: mistralai>=1.9.2; extra == 'mistral'
|
|
72
71
|
Provides-Extra: openai
|
|
@@ -76,7 +75,7 @@ Requires-Dist: tenacity>=8.2.3; extra == 'retries'
|
|
|
76
75
|
Provides-Extra: tavily
|
|
77
76
|
Requires-Dist: tavily-python>=0.5.0; extra == 'tavily'
|
|
78
77
|
Provides-Extra: temporal
|
|
79
|
-
Requires-Dist: temporalio==1.
|
|
78
|
+
Requires-Dist: temporalio==1.17.0; extra == 'temporal'
|
|
80
79
|
Provides-Extra: vertexai
|
|
81
80
|
Requires-Dist: google-auth>=2.36.0; extra == 'vertexai'
|
|
82
81
|
Requires-Dist: requests>=2.32.2; extra == 'vertexai'
|
|
@@ -1,35 +1,35 @@
|
|
|
1
1
|
pydantic_ai/__init__.py,sha256=CfqGPSjKlDl5iw1L48HbELsDuzxIzBFnFnovI_GcFWA,2083
|
|
2
2
|
pydantic_ai/__main__.py,sha256=Q_zJU15DUA01YtlJ2mnaLCoId2YmgmreVEERGuQT-Y0,132
|
|
3
|
-
pydantic_ai/_a2a.py,sha256=
|
|
4
|
-
pydantic_ai/_agent_graph.py,sha256=
|
|
3
|
+
pydantic_ai/_a2a.py,sha256=2Hopcyl6o6U91eVkd7iAbEPYA5f0hJb8A5_fwMC0UfM,12168
|
|
4
|
+
pydantic_ai/_agent_graph.py,sha256=lgifW_LwNATj0usC4wfU32Z4PEsPNHcEbbHtzIj6Y_0,46620
|
|
5
5
|
pydantic_ai/_cli.py,sha256=C-Uvbdx9wWnNqZKHN_r8d4mGte_aIPikOkKrTPvdrN8,14057
|
|
6
6
|
pydantic_ai/_function_schema.py,sha256=olbmUMQoQV5qKV4j0-cOnhcTINz4uYyeDqMyusrFRtY,11234
|
|
7
7
|
pydantic_ai/_griffe.py,sha256=BphvTL00FHxsSY56GM-bNyCOdwrpL0T3LbDQITWUK_Q,5280
|
|
8
8
|
pydantic_ai/_mcp.py,sha256=PuvwnlLjv7YYOa9AZJCrklevBug99zGMhwJCBGG7BHQ,5626
|
|
9
9
|
pydantic_ai/_otel_messages.py,sha256=qLu81aBDEAsUTW6efBzWRXNDMICTrUUBpcGbCEyXr4o,1480
|
|
10
10
|
pydantic_ai/_output.py,sha256=0Oq-FFvxXdR0Ia_8LrJ1CanGOWkI5C98HfdkY8TZhik,37442
|
|
11
|
-
pydantic_ai/_parts_manager.py,sha256=
|
|
11
|
+
pydantic_ai/_parts_manager.py,sha256=SZi2_G9Z5Z9BLuInfgcki9p5yUhVjR38WcxfuOoECLA,18057
|
|
12
12
|
pydantic_ai/_run_context.py,sha256=AFSTtOBbUAnPpM-V5_b5fLMVAFbEBX4oOdYsGR9ayt4,1824
|
|
13
13
|
pydantic_ai/_system_prompt.py,sha256=WdDW_DTGHujcFFaK-J7J6mA4ZDJZ0IOKpyizJA-1Y5Q,1142
|
|
14
14
|
pydantic_ai/_thinking_part.py,sha256=x80-Vkon16GOyq3W6f2qzafTVPC5dCgF7QD3k8ZMmYU,1304
|
|
15
|
-
pydantic_ai/_tool_manager.py,sha256=
|
|
15
|
+
pydantic_ai/_tool_manager.py,sha256=YUTA9uJneug_vkxCGrTc34Qxyzz2dAuDNt5n4x2k0zA,9513
|
|
16
16
|
pydantic_ai/_utils.py,sha256=xa2PoAcTN-oXhfXOONOighmue-jtSv668o9Fu_IdO0A,16062
|
|
17
|
-
pydantic_ai/ag_ui.py,sha256=
|
|
17
|
+
pydantic_ai/ag_ui.py,sha256=L21cc_LN532psY70GNgJNaj-PtBpLgqARJBF1zb2ZX4,28127
|
|
18
18
|
pydantic_ai/builtin_tools.py,sha256=t0wa6KsgDCRoZMKJKRzRDyxaz1X4mDWMHlGjQmqFLdg,3222
|
|
19
19
|
pydantic_ai/direct.py,sha256=zMsz6poVgEq7t7L_8FWM6hmKdqTzjyQYL5xzQt_59Us,14951
|
|
20
|
-
pydantic_ai/exceptions.py,sha256=
|
|
20
|
+
pydantic_ai/exceptions.py,sha256=zsXZMKf2BJuVsfuHl1fWTkogLU37bd4yq7D6BKHAzVs,4968
|
|
21
21
|
pydantic_ai/format_prompt.py,sha256=37imBG2Fgpn-_RfAFalOX8Xc_XpGH2gY9tnhJDvxfk8,4243
|
|
22
|
-
pydantic_ai/mcp.py,sha256=
|
|
23
|
-
pydantic_ai/messages.py,sha256=
|
|
22
|
+
pydantic_ai/mcp.py,sha256=1sKEgd8Eue5vWaUyU-s3TWlOaH6rfXetsuz_sHYorXE,30384
|
|
23
|
+
pydantic_ai/messages.py,sha256=5SeqvRf0dMe3BTEtvTHTmcm3MMz7PIq5zIS6RRAhtIg,54544
|
|
24
24
|
pydantic_ai/output.py,sha256=wzNgVKJgxyXtSH-uNbRxIaUNLidxlQcwWYT2o1gY2hE,12037
|
|
25
25
|
pydantic_ai/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
26
26
|
pydantic_ai/result.py,sha256=FrJbd0nwaRVIxGH_EhV-ITQvrrd-JaDya9EDsE5-Pps,25389
|
|
27
|
-
pydantic_ai/retries.py,sha256=
|
|
27
|
+
pydantic_ai/retries.py,sha256=QM4oDA9DG-Y2qP06fbCp8Dqq8ups40Rr4HYjAOlbNyM,14650
|
|
28
28
|
pydantic_ai/run.py,sha256=qpTu2Q2O3lvcQAZREuIpyL0vQN13AvW99SwD7Oe9hKc,15175
|
|
29
29
|
pydantic_ai/settings.py,sha256=yuUZ7-GkdPB-Gbx71kSdh8dSr6gwM9gEwk84qNxPO_I,3552
|
|
30
|
-
pydantic_ai/tools.py,sha256=
|
|
31
|
-
pydantic_ai/usage.py,sha256=
|
|
32
|
-
pydantic_ai/agent/__init__.py,sha256=
|
|
30
|
+
pydantic_ai/tools.py,sha256=SFiLSHc4TwlhZ73nPpjd4etVovsSyPcYEQ9520Gz8xI,19169
|
|
31
|
+
pydantic_ai/usage.py,sha256=UoSOwhH-NTAeXl7Tq8GWXcW82m8zQLQvThvQehEx08g,14070
|
|
32
|
+
pydantic_ai/agent/__init__.py,sha256=FLlpv4-j0-94xEMA5GV4HGz7K3Y1zrMb_cVvlp-XDNs,62321
|
|
33
33
|
pydantic_ai/agent/abstract.py,sha256=nKDP_T0hRhi1RGVNIcAQbmQkTrwGWbTxt_Lzwfa7cPs,44291
|
|
34
34
|
pydantic_ai/agent/wrapper.py,sha256=--IJo8Yb-2uzcCBSIB9oB_9FQ1R7yZYkWnLSq0iUExs,9464
|
|
35
35
|
pydantic_ai/common_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -37,7 +37,7 @@ pydantic_ai/common_tools/duckduckgo.py,sha256=cJd-BUg-i50E0QjKveRCndGlU5GdvLq9Ug
|
|
|
37
37
|
pydantic_ai/common_tools/tavily.py,sha256=Q1xxSF5HtXAaZ10Pp-OaDOHXwJf2mco9wScGEQXD7E4,2495
|
|
38
38
|
pydantic_ai/durable_exec/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
39
39
|
pydantic_ai/durable_exec/temporal/__init__.py,sha256=XKwy68wfgmjr057nolRwGHTKiadxufpQEGEUprAV09k,5563
|
|
40
|
-
pydantic_ai/durable_exec/temporal/_agent.py,sha256=
|
|
40
|
+
pydantic_ai/durable_exec/temporal/_agent.py,sha256=9-yANaXqbOELkvTu_zeJI5tROKUY2t9-WYUIksSmzD8,36901
|
|
41
41
|
pydantic_ai/durable_exec/temporal/_function_toolset.py,sha256=Hnfz3ukOqgq8j3h9u97S-fMfq4un1HZA4kxN2irWD_0,5562
|
|
42
42
|
pydantic_ai/durable_exec/temporal/_logfire.py,sha256=5bSiOt-jihQATJsg-jrGmEqP3RWW_Sz6c2aicjt03lI,2009
|
|
43
43
|
pydantic_ai/durable_exec/temporal/_mcp_server.py,sha256=VFvHPVhvYz-ITGaXXNyuWwB8tsdF3Hg9rs7gss8TKWY,6032
|
|
@@ -47,20 +47,20 @@ pydantic_ai/durable_exec/temporal/_toolset.py,sha256=HxmQ5vut7Zd5eyrC27eNNn5_CHA
|
|
|
47
47
|
pydantic_ai/ext/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
48
48
|
pydantic_ai/ext/aci.py,sha256=sUllKDNO-LOMurbFgxwRHuzNlBkSa3aVBqXfEm-A_vo,2545
|
|
49
49
|
pydantic_ai/ext/langchain.py,sha256=iLVEZv1kcLkdIHo3us2yfdi0kVqyJ6qTaCt9BoLWm4k,2335
|
|
50
|
-
pydantic_ai/models/__init__.py,sha256=
|
|
51
|
-
pydantic_ai/models/anthropic.py,sha256=
|
|
52
|
-
pydantic_ai/models/bedrock.py,sha256=
|
|
50
|
+
pydantic_ai/models/__init__.py,sha256=BmZ4kyiGIjsapj7cmKc6uF4EEOnuN6iiDumuOeGfxOk,35692
|
|
51
|
+
pydantic_ai/models/anthropic.py,sha256=IsHBwJ55IYor27sewq039rc923fqi3AUWXAS_vbA978,30286
|
|
52
|
+
pydantic_ai/models/bedrock.py,sha256=Eeq-rqZWaVu2tbH8eSNoxp5dq5RH8esnsOp-ge_XGu4,30786
|
|
53
53
|
pydantic_ai/models/cohere.py,sha256=aKgpcYfIKwMfEroWxfLyzYu8ELuddF4TXv7s0LU3Pcc,13052
|
|
54
54
|
pydantic_ai/models/fallback.py,sha256=XJ74wRxVT4dF0uewHH3is9I-zcLBK8KFIhpK3BB6mRw,5526
|
|
55
55
|
pydantic_ai/models/function.py,sha256=uWGdw4sFhhmczjU44rwe6i2XFafOXAalIigWGCSivYg,14231
|
|
56
|
-
pydantic_ai/models/gemini.py,sha256=
|
|
57
|
-
pydantic_ai/models/google.py,sha256=
|
|
58
|
-
pydantic_ai/models/groq.py,sha256=
|
|
56
|
+
pydantic_ai/models/gemini.py,sha256=DYEaOnwGmo9FUGVkRRrydGuQwYhnO-Cq5grTurLWgb4,39376
|
|
57
|
+
pydantic_ai/models/google.py,sha256=cqU6eBMmSZvkeeaEPlJVhkRxN7L5vi4EfyWabZkgP5g,32102
|
|
58
|
+
pydantic_ai/models/groq.py,sha256=am-Qpp6RLFqwRnouIdACWd5nxOBB92Bn0hRs-VdrD38,25561
|
|
59
59
|
pydantic_ai/models/huggingface.py,sha256=sWjHTVfqOtdlOENdERkPxtGjQ8quUNepPjqlXSR7aGk,20417
|
|
60
|
-
pydantic_ai/models/instrumented.py,sha256=
|
|
60
|
+
pydantic_ai/models/instrumented.py,sha256=t9ESv5XMqJ4OWkTp3JoIcaCzlnW7pktelQVmX5fpySM,20763
|
|
61
61
|
pydantic_ai/models/mcp_sampling.py,sha256=qnLCO3CB5bNQ86SpWRA-CSSOVcCCLPwjHtcNFvW9wHs,3461
|
|
62
62
|
pydantic_ai/models/mistral.py,sha256=yS5pBYtFUkICwkvGN23iBbBfaBASN1DARsB6QQbBjOc,32344
|
|
63
|
-
pydantic_ai/models/openai.py,sha256=
|
|
63
|
+
pydantic_ai/models/openai.py,sha256=vyePy3s_pI0gnkizas1Vfbiy8PI2_5skNcsnG03Fzas,64818
|
|
64
64
|
pydantic_ai/models/test.py,sha256=1kBwi7pSUt9_K1U-hokOilplxJWPQ3KRKH_s8bYmt_s,19969
|
|
65
65
|
pydantic_ai/models/wrapper.py,sha256=9MeHW7mXPsEK03IKL0rtjeX6QgXyZROOOzLh72GiX2k,2148
|
|
66
66
|
pydantic_ai/profiles/__init__.py,sha256=V6uGAVJuIaYRuZOQjkdIyFfDKD5py18RC98njnHOFug,3293
|
|
@@ -78,7 +78,7 @@ pydantic_ai/profiles/mistral.py,sha256=ll01PmcK3szwlTfbaJLQmfd0TADN8lqjov9HpPJzC
|
|
|
78
78
|
pydantic_ai/profiles/moonshotai.py,sha256=e1RJnbEvazE6aJAqfmYLYGNtwNwg52XQDRDkcLrv3fU,272
|
|
79
79
|
pydantic_ai/profiles/openai.py,sha256=4w-xzTfn6PKQwmT-Cc13Wit9UcYGapo6eD1q8LgUHRU,9038
|
|
80
80
|
pydantic_ai/profiles/qwen.py,sha256=9SnTpMKndxNQMFyumyaOczJa5JGWbYQdpVKKW4OzKjk,749
|
|
81
|
-
pydantic_ai/providers/__init__.py,sha256=
|
|
81
|
+
pydantic_ai/providers/__init__.py,sha256=QlFpPM_kGnF_YAzwB9Dgmxx4Emp33x0bh831H_xKDXE,4478
|
|
82
82
|
pydantic_ai/providers/anthropic.py,sha256=bDFNAE4WB66Dn7YDnI3dv6yBbMmM9Kzt2kalM4Fq8WQ,3158
|
|
83
83
|
pydantic_ai/providers/azure.py,sha256=msYyeQoHATxCJkiF1N05lPSJivh-SWKK1463WF6xTK4,5823
|
|
84
84
|
pydantic_ai/providers/bedrock.py,sha256=nN5CQ0XOQHp8FSlS7KCjn-p1hYcx0zVeLcMu_tAbvz8,5825
|
|
@@ -89,11 +89,12 @@ pydantic_ai/providers/fireworks.py,sha256=-jMRxbt353nENdpxuDpC4zJZ9wlJBcWa4wdcUk
|
|
|
89
89
|
pydantic_ai/providers/github.py,sha256=Mp6-piXuRe5R0Iu4p0N06aIZgX7rJe5KRzCjt9E4OK4,4378
|
|
90
90
|
pydantic_ai/providers/google.py,sha256=iLXcKUl5r7wdLuZtT1IM3obGZi7ecLM_PDyWdQKDncI,6038
|
|
91
91
|
pydantic_ai/providers/google_gla.py,sha256=dLkDxps5gEtxsQiDbs1e88lXLYeX4i2qnJtDiFFJ0Ng,1965
|
|
92
|
-
pydantic_ai/providers/google_vertex.py,sha256=
|
|
92
|
+
pydantic_ai/providers/google_vertex.py,sha256=tAR3L1DZPDvGOJsKyGkIRPeXL7wjly4CvqTWMK1ozVQ,9752
|
|
93
93
|
pydantic_ai/providers/grok.py,sha256=s9Y_iYkYCBc7UbP2ppGOUdAP_04xrkmPBHq3q3Qr9eE,3109
|
|
94
|
-
pydantic_ai/providers/groq.py,sha256=
|
|
94
|
+
pydantic_ai/providers/groq.py,sha256=3XuYqvugToJhTf7kQCdtdaTpFsiqAu_pwnIQnHm04uo,4913
|
|
95
95
|
pydantic_ai/providers/heroku.py,sha256=wA36vh0ldpdaj33FPtfo4roY_MhaCqErjLyGtcbC6Xs,2958
|
|
96
96
|
pydantic_ai/providers/huggingface.py,sha256=MLAv-Z99Kii5Faolq97_0Ir1LUKH9CwRmJFaI5RvwW4,4914
|
|
97
|
+
pydantic_ai/providers/litellm.py,sha256=3hTCjHWRG_1c4S9JSNm0BDBDi4q6BVVZ3OLSXhTndNM,5079
|
|
97
98
|
pydantic_ai/providers/mistral.py,sha256=ZxfOQNB2RADtHeGLQrhxHwq6cXpBi3LMgIUa_9wXoug,3088
|
|
98
99
|
pydantic_ai/providers/moonshotai.py,sha256=LwasmxCZCPkq1pb1uDtZTEb_nE55bAtX3QXgLmuNlHE,3260
|
|
99
100
|
pydantic_ai/providers/ollama.py,sha256=_bxons0p8g0RSPNV8iq3AScVS1ym27QTW4zhDqSakgY,4633
|
|
@@ -105,16 +106,16 @@ pydantic_ai/toolsets/__init__.py,sha256=lYwnxjSqxY6rIYYDTDctyWPckDwnRX_9orvqY2Ap
|
|
|
105
106
|
pydantic_ai/toolsets/_dynamic.py,sha256=ETAtKW2A_aFjSIPO3pRIZNKH54qNfHQB7WtmEjWqHzc,2939
|
|
106
107
|
pydantic_ai/toolsets/abstract.py,sha256=CXsDF37JkBWcy9hwrgdBe4gqgocNcPKOFEIvQ7t9Ysk,7751
|
|
107
108
|
pydantic_ai/toolsets/approval_required.py,sha256=zyYGEx2VqprLed16OXg1QWr81rnAB0CmAzTeyQJ9A4o,1100
|
|
108
|
-
pydantic_ai/toolsets/combined.py,sha256=
|
|
109
|
+
pydantic_ai/toolsets/combined.py,sha256=LQzm_g6gskiHRUMFDvm88SSrz8OGxbdxyHiKzQrMBNU,4026
|
|
109
110
|
pydantic_ai/toolsets/external.py,sha256=J9mWQm1HLbRCOJwpLBIvUZZGR_ywSB7pz8MrXkRNBoU,1736
|
|
110
111
|
pydantic_ai/toolsets/filtered.py,sha256=PSQG9EbBYJpHUEBb_4TGzhjAcQPo5aPKvTuReeoWYtQ,864
|
|
111
|
-
pydantic_ai/toolsets/function.py,sha256=
|
|
112
|
+
pydantic_ai/toolsets/function.py,sha256=D_NllIGtC4P4Q8QAxH82743ykbUaSTtQp-HpOSFaRgk,12907
|
|
112
113
|
pydantic_ai/toolsets/prefixed.py,sha256=0KwcDkW8OM36ZUsOLVP5h-Nj2tPq78L3_E2c-1Fbh5s,1426
|
|
113
114
|
pydantic_ai/toolsets/prepared.py,sha256=Zjfz6S8In6PBVxoKFN9sKPN984zO6t0awB7Lnq5KODw,1431
|
|
114
115
|
pydantic_ai/toolsets/renamed.py,sha256=JuLHpi-hYPiSPlaTpN8WiXLiGsywYK0axi2lW2Qs75k,1637
|
|
115
116
|
pydantic_ai/toolsets/wrapper.py,sha256=KRzF1p8dncHbva8CE6Ud-IC5E_aygIHlwH5atXK55k4,1673
|
|
116
|
-
pydantic_ai_slim-1.0.
|
|
117
|
-
pydantic_ai_slim-1.0.
|
|
118
|
-
pydantic_ai_slim-1.0.
|
|
119
|
-
pydantic_ai_slim-1.0.
|
|
120
|
-
pydantic_ai_slim-1.0.
|
|
117
|
+
pydantic_ai_slim-1.0.1.dist-info/METADATA,sha256=beC4C6p-tWvSREm7AswqtdcoZW9s8ua-cEK6r76SG_8,4560
|
|
118
|
+
pydantic_ai_slim-1.0.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
119
|
+
pydantic_ai_slim-1.0.1.dist-info/entry_points.txt,sha256=kbKxe2VtDCYS06hsI7P3uZGxcVC08-FPt1rxeiMpIps,50
|
|
120
|
+
pydantic_ai_slim-1.0.1.dist-info/licenses/LICENSE,sha256=vA6Jc482lEyBBuGUfD1pYx-cM7jxvLYOxPidZ30t_PQ,1100
|
|
121
|
+
pydantic_ai_slim-1.0.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|