mirascope 1.22.1__py3-none-any.whl → 1.22.3__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.
@@ -92,6 +92,11 @@ def convert_message_params(
92
92
  f"control parts. Part provided: {part.type}"
93
93
  )
94
94
  converted_message_params.append(
95
- {"role": message_param.role, "content": converted_content}
95
+ {
96
+ "role": "user"
97
+ if message_param.role == "tool"
98
+ else message_param.role,
99
+ "content": converted_content,
100
+ }
96
101
  )
97
102
  return converted_message_params
@@ -107,48 +107,23 @@ class AnthropicMessageParamConverter(BaseMessageParamConverter):
107
107
  )
108
108
 
109
109
  elif block["type"] == "tool_use":
110
- if converted_content:
111
- converted.append(
112
- BaseMessageParam(
113
- role=message_param["role"], content=converted_content
114
- )
115
- )
116
- converted_content = []
117
- converted.append(
118
- BaseMessageParam(
119
- role="assistant",
120
- content=[
121
- ToolCallPart(
122
- type="tool_call",
123
- args=cast(dict, block["input"]),
124
- id=block["id"],
125
- name=block["name"],
126
- )
127
- ],
110
+ converted_content.append(
111
+ ToolCallPart(
112
+ type="tool_call",
113
+ args=cast(dict, block["input"]),
114
+ id=block["id"],
115
+ name=block["name"],
128
116
  )
129
117
  )
130
-
131
118
  elif block["type"] == "tool_result":
132
- if converted_content:
133
- converted.append(
134
- BaseMessageParam(
135
- role=message_param["role"], content=converted_content
136
- )
137
- )
138
- converted_content = []
139
- converted.append(
140
- BaseMessageParam(
141
- role="user",
142
- content=[
143
- ToolResultPart(
144
- type="tool_result",
145
- content=block["content"] # pyright: ignore [reportTypedDictNotRequiredAccess]
146
- if isinstance(block["content"], str) # pyright: ignore [reportTypedDictNotRequiredAccess]
147
- else list(block["content"])[0]["text"], # pyright: ignore [reportTypedDictNotRequiredAccess, reportGeneralTypeIssues]
148
- id=block["tool_use_id"],
149
- is_error=block.get("is_error", False),
150
- )
151
- ],
119
+ converted_content.append(
120
+ ToolResultPart(
121
+ type="tool_result",
122
+ content=block["content"] # pyright: ignore [reportTypedDictNotRequiredAccess]
123
+ if isinstance(block["content"], str) # pyright: ignore [reportTypedDictNotRequiredAccess]
124
+ else list(block["content"])[0]["text"], # pyright: ignore [reportTypedDictNotRequiredAccess, reportGeneralTypeIssues]
125
+ id=block["tool_use_id"],
126
+ is_error=block.get("is_error", False),
152
127
  )
153
128
  )
154
129
  else:
@@ -3,6 +3,7 @@
3
3
  usage docs: learn/calls.md#handling-responses
4
4
  """
5
5
 
6
+ from collections.abc import Sequence
6
7
  from functools import cached_property
7
8
 
8
9
  from anthropic.types import (
@@ -156,12 +157,12 @@ class AnthropicCallResponse(
156
157
  @classmethod
157
158
  @transform_tool_outputs
158
159
  def tool_message_params(
159
- cls, tools_and_outputs: list[tuple[AnthropicTool, str]]
160
+ cls, tools_and_outputs: Sequence[tuple[AnthropicTool, str]]
160
161
  ) -> list[MessageParam]:
161
162
  """Returns the tool message parameters for tool call results.
162
163
 
163
164
  Args:
164
- tools_and_outputs: The list of tools and their outputs from which the tool
165
+ tools_and_outputs: The sequence of tools and their outputs from which the tool
165
166
  message parameters should be constructed.
166
167
 
167
168
  Returns:
@@ -3,6 +3,7 @@
3
3
  usage docs: learn/calls.md#handling-responses
4
4
  """
5
5
 
6
+ from collections.abc import Sequence
6
7
  from functools import cached_property
7
8
  from typing import cast
8
9
 
@@ -175,12 +176,12 @@ class AzureCallResponse(
175
176
  @classmethod
176
177
  @transform_tool_outputs
177
178
  def tool_message_params(
178
- cls, tools_and_outputs: list[tuple[AzureTool, str]]
179
+ cls, tools_and_outputs: Sequence[tuple[AzureTool, str]]
179
180
  ) -> list[ToolMessage]:
180
181
  """Returns the tool message parameters for tool call results.
181
182
 
182
183
  Args:
183
- tools_and_outputs: The list of tools and their outputs from which the tool
184
+ tools_and_outputs: The sequence of tools and their outputs from which the tool
184
185
  message parameters should be constructed.
185
186
 
186
187
  Returns:
@@ -5,7 +5,7 @@ from __future__ import annotations
5
5
  import base64
6
6
  import json
7
7
  from abc import ABC, abstractmethod
8
- from collections.abc import Callable
8
+ from collections.abc import Callable, Sequence
9
9
  from functools import cached_property, wraps
10
10
  from typing import TYPE_CHECKING, Any, ClassVar, Generic, TypeVar, cast
11
11
 
@@ -47,17 +47,17 @@ _BaseMessageParamConverterT = TypeVar(
47
47
 
48
48
  def transform_tool_outputs(
49
49
  fn: Callable[
50
- [type[_BaseCallResponseT], list[tuple[_BaseToolT, str]]],
50
+ [type[_BaseCallResponseT], Sequence[tuple[_BaseToolT, str]]],
51
51
  list[_ToolMessageParamT],
52
52
  ],
53
53
  ) -> Callable[
54
- [type[_BaseCallResponseT], list[tuple[_BaseToolT, JsonableType]]],
54
+ [type[_BaseCallResponseT], Sequence[tuple[_BaseToolT, JsonableType]]],
55
55
  list[_ToolMessageParamT],
56
56
  ]:
57
57
  @wraps(fn)
58
58
  def wrapper(
59
59
  cls: type[_BaseCallResponseT],
60
- tools_and_outputs: list[tuple[_BaseToolT, JsonableType]],
60
+ tools_and_outputs: Sequence[tuple[_BaseToolT, JsonableType]],
61
61
  ) -> list[_ToolMessageParamT]:
62
62
  def recursive_serializer(value: JsonableType) -> BaseType:
63
63
  if isinstance(value, str):
@@ -290,12 +290,12 @@ class BaseCallResponse(
290
290
  @abstractmethod
291
291
  @transform_tool_outputs
292
292
  def tool_message_params(
293
- cls, tools_and_outputs: list[tuple[_BaseToolT, str]]
293
+ cls, tools_and_outputs: Sequence[tuple[_BaseToolT, str]]
294
294
  ) -> list[Any]:
295
295
  """Returns the tool message parameters for tool call results.
296
296
 
297
297
  Args:
298
- tools_and_outputs: The list of tools and their outputs from which the tool
298
+ tools_and_outputs: The sequence of tools and their outputs from which the tool
299
299
  message parameters should be constructed.
300
300
  """
301
301
  ...
@@ -3,6 +3,7 @@
3
3
  usage docs: learn/calls.md#handling-responses
4
4
  """
5
5
 
6
+ from collections.abc import Sequence
6
7
  from functools import cached_property
7
8
  from typing import cast
8
9
 
@@ -197,12 +198,12 @@ class BedrockCallResponse(
197
198
  @classmethod
198
199
  @transform_tool_outputs
199
200
  def tool_message_params(
200
- cls, tools_and_outputs: list[tuple[BedrockTool, str]]
201
+ cls, tools_and_outputs: Sequence[tuple[BedrockTool, str]]
201
202
  ) -> list[ToolResultBlockMessageTypeDef]:
202
203
  """Returns the tool message parameters for tool call results.
203
204
 
204
205
  Args:
205
- tools_and_outputs: The list of tools and their outputs from which the tool
206
+ tools_and_outputs: The sequence of tools and their outputs from which the tool
206
207
  message parameters should be constructed.
207
208
 
208
209
  Returns:
@@ -3,6 +3,7 @@
3
3
  usage docs: learn/calls.md#handling-responses
4
4
  """
5
5
 
6
+ from collections.abc import Sequence
6
7
  from functools import cached_property
7
8
 
8
9
  from cohere.types import (
@@ -164,12 +165,12 @@ class CohereCallResponse(
164
165
  @transform_tool_outputs
165
166
  def tool_message_params(
166
167
  cls,
167
- tools_and_outputs: list[tuple[CohereTool, str]],
168
+ tools_and_outputs: Sequence[tuple[CohereTool, str]],
168
169
  ) -> list[ToolResult]:
169
170
  """Returns the tool message parameters for tool call results.
170
171
 
171
172
  Args:
172
- tools_and_outputs: The list of tools and their outputs from which the tool
173
+ tools_and_outputs: The sequence of tools and their outputs from which the tool
173
174
  message parameters should be constructed.
174
175
 
175
176
  Returns:
@@ -3,6 +3,7 @@
3
3
  usage docs: learn/calls.md#handling-responses
4
4
  """
5
5
 
6
+ from collections.abc import Sequence
6
7
  from functools import cached_property
7
8
 
8
9
  from google.generativeai.protos import FunctionResponse
@@ -173,12 +174,12 @@ class GeminiCallResponse(
173
174
  @classmethod
174
175
  @transform_tool_outputs
175
176
  def tool_message_params(
176
- cls, tools_and_outputs: list[tuple[GeminiTool, str]]
177
+ cls, tools_and_outputs: Sequence[tuple[GeminiTool, str]]
177
178
  ) -> list[ContentDict]:
178
179
  """Returns the tool message parameters for tool call results.
179
180
 
180
181
  Args:
181
- tools_and_outputs: The list of tools and their outputs from which the tool
182
+ tools_and_outputs: The sequence of tools and their outputs from which the tool
182
183
  message parameters should be constructed.
183
184
 
184
185
  Returns:
@@ -1,8 +1,6 @@
1
1
  from typing import cast
2
2
 
3
- from google.genai.types import (
4
- GenerationConfigDict,
5
- )
3
+ from google.genai.types import GenerateContentConfig
6
4
 
7
5
  from ...base.call_params import CommonCallParams
8
6
  from ..call_params import GoogleCallParams
@@ -17,23 +15,24 @@ GOOGLE_PARAM_MAPPING = {
17
15
 
18
16
  def convert_common_call_params(common_params: CommonCallParams) -> GoogleCallParams:
19
17
  """Convert CommonCallParams to Google parameters."""
20
- generation_config = {}
18
+ config = GenerateContentConfig()
21
19
 
22
20
  for key, value in common_params.items():
23
21
  if key not in GOOGLE_PARAM_MAPPING or value is None:
24
22
  continue
25
23
 
26
24
  if key == "stop":
27
- generation_config["stop_sequences"] = (
28
- [value] if isinstance(value, str) else value
29
- )
25
+ # Google API expects a list of strings for stop sequences
26
+ if isinstance(value, str):
27
+ config.stop_sequences = [value]
28
+ elif isinstance(value, list):
29
+ config.stop_sequences = value
30
30
  else:
31
- generation_config[GOOGLE_PARAM_MAPPING[key]] = value
31
+ target_attr = GOOGLE_PARAM_MAPPING[key]
32
+ setattr(config, target_attr, value)
32
33
 
33
- if not generation_config:
34
+ default_config = GenerateContentConfig()
35
+ if config == default_config:
34
36
  return cast(GoogleCallParams, {})
35
37
 
36
- return cast(
37
- GoogleCallParams,
38
- {"generation_config": cast(GenerationConfigDict, generation_config)},
39
- )
38
+ return cast(GoogleCallParams, {"config": config})
@@ -10,6 +10,8 @@ from google.genai.types import (
10
10
  BlobDict,
11
11
  ContentDict,
12
12
  FileDataDict,
13
+ FunctionCallDict,
14
+ FunctionResponseDict,
13
15
  PartDict,
14
16
  )
15
17
 
@@ -59,6 +61,24 @@ async def _convert_message_params_async(
59
61
  for index, part in enumerate(content):
60
62
  if part.type == "text":
61
63
  converted_content.append(PartDict(text=part.text))
64
+ elif part.type == "tool_call":
65
+ converted_content.append(
66
+ PartDict(
67
+ function_call=FunctionCallDict(
68
+ name=part.name, args=part.args, id=part.id
69
+ )
70
+ )
71
+ )
72
+ elif part.type == "tool_result":
73
+ converted_content.append(
74
+ PartDict(
75
+ function_response=FunctionResponseDict(
76
+ name=part.name,
77
+ response={"content": part.content},
78
+ id=part.id,
79
+ )
80
+ )
81
+ )
62
82
  elif part.type == "image":
63
83
  _check_image_media_type(part.media_type)
64
84
  blob_dict = BlobDict(data=part.image, mime_type=part.media_type)
@@ -136,7 +156,7 @@ async def _convert_message_params_async(
136
156
  total_payload_size -= audio_size
137
157
  else:
138
158
  raise ValueError(
139
- "Google currently only supports text, image, and audio parts. "
159
+ "Google currently only supports text, tool_call, tool_result, image, and audio parts. "
140
160
  f"Part provided: {part.type}"
141
161
  )
142
162
 
@@ -136,7 +136,7 @@ class GoogleMessageParamConverter(BaseMessageParamConverter):
136
136
  type="tool_result",
137
137
  name=part.function_response.name, # pyright: ignore [reportArgumentType]
138
138
  content=part.function_response.response[ # pyright: ignore [reportArgumentType, reportOptionalSubscript]
139
- "result"
139
+ "content"
140
140
  ],
141
141
  id=None,
142
142
  is_error=False,
@@ -138,10 +138,12 @@ def setup_call(
138
138
 
139
139
  if messages[0] and messages[0].get("role") == "system":
140
140
  with _generate_content_config_context(call_kwargs) as config:
141
- config.system_instruction = [
142
- Part.model_validate(part)
143
- for part in (messages.pop(0).get("parts") or [])
144
- ]
141
+ system_message = messages.pop(0)
142
+ message_parts = system_message.get("parts", [])
143
+ if message_parts:
144
+ config.system_instruction = [
145
+ Part.model_validate(part) for part in message_parts
146
+ ]
145
147
 
146
148
  if json_mode:
147
149
  with _generate_content_config_context(call_kwargs) as config:
@@ -3,6 +3,7 @@
3
3
  usage docs: learn/calls.md#handling-responses
4
4
  """
5
5
 
6
+ from collections.abc import Sequence
6
7
  from functools import cached_property
7
8
 
8
9
  from google.genai.types import (
@@ -155,13 +156,12 @@ class GoogleCallResponse(
155
156
 
156
157
  @cached_property
157
158
  def tools(self) -> list[GoogleTool] | None:
158
- """Returns the list of tools for the 0th candidate's 0th content part."""
159
+ """Returns the list of tools for the response."""
159
160
  if self.tool_types is None:
160
161
  return None
161
162
 
162
163
  extracted_tools = []
163
- for part in self.response.candidates[0].content.parts: # pyright: ignore [reportReturnType, reportOptionalSubscript, reportOptionalMemberAccess, reportOptionalIterable]
164
- tool_call = part.function_call
164
+ for tool_call in self.response.function_calls or []:
165
165
  for tool_type in self.tool_types:
166
166
  if tool_call.name == tool_type._name(): # pyright: ignore [reportOptionalMemberAccess]
167
167
  extracted_tools.append(tool_type.from_tool_call(tool_call)) # pyright: ignore [reportArgumentType]
@@ -184,12 +184,12 @@ class GoogleCallResponse(
184
184
  @classmethod
185
185
  @transform_tool_outputs
186
186
  def tool_message_params(
187
- cls, tools_and_outputs: list[tuple[GoogleTool, str]]
187
+ cls, tools_and_outputs: Sequence[tuple[GoogleTool, str]]
188
188
  ) -> list[ContentDict]:
189
189
  """Returns the tool message parameters for tool call results.
190
190
 
191
191
  Args:
192
- tools_and_outputs: The list of tools and their outputs from which the tool
192
+ tools_and_outputs: The sequence of tools and their outputs from which the tool
193
193
  message parameters should be constructed.
194
194
 
195
195
  Returns:
@@ -3,6 +3,7 @@
3
3
  usage docs: learn/calls.md#handling-responses
4
4
  """
5
5
 
6
+ from collections.abc import Sequence
6
7
  from functools import cached_property
7
8
  from typing import cast
8
9
 
@@ -155,12 +156,12 @@ class GroqCallResponse(
155
156
  @classmethod
156
157
  @transform_tool_outputs
157
158
  def tool_message_params(
158
- cls, tools_and_outputs: list[tuple[GroqTool, str]]
159
+ cls, tools_and_outputs: Sequence[tuple[GroqTool, str]]
159
160
  ) -> list[ChatCompletionToolMessageParam]:
160
161
  """Returns the tool message parameters for tool call results.
161
162
 
162
163
  Args:
163
- tools_and_outputs: The list of tools and their outputs from which the tool
164
+ tools_and_outputs: The sequence of tools and their outputs from which the tool
164
165
  message parameters should be constructed.
165
166
 
166
167
  Returns:
@@ -3,6 +3,7 @@
3
3
  usage docs: learn/calls.md#handling-responses
4
4
  """
5
5
 
6
+ from collections.abc import Sequence
6
7
  from functools import cached_property
7
8
  from typing import Any, cast
8
9
 
@@ -163,12 +164,12 @@ class MistralCallResponse(
163
164
  @classmethod
164
165
  @transform_tool_outputs
165
166
  def tool_message_params(
166
- cls, tools_and_outputs: list[tuple[MistralTool, str]]
167
+ cls, tools_and_outputs: Sequence[tuple[MistralTool, str]]
167
168
  ) -> list[ToolMessage]:
168
169
  """Returns the tool message parameters for tool call results.
169
170
 
170
171
  Args:
171
- tools_and_outputs: The list of tools and their outputs from which the tool
172
+ tools_and_outputs: The sequence of tools and their outputs from which the tool
172
173
  message parameters should be constructed.
173
174
 
174
175
  Returns:
@@ -4,6 +4,7 @@ usage docs: learn/calls.md#handling-responses
4
4
  """
5
5
 
6
6
  import base64
7
+ from collections.abc import Sequence
7
8
  from functools import cached_property
8
9
  from typing import cast
9
10
 
@@ -196,12 +197,12 @@ class OpenAICallResponse(
196
197
  @classmethod
197
198
  @transform_tool_outputs
198
199
  def tool_message_params(
199
- cls, tools_and_outputs: list[tuple[OpenAITool, str]]
200
+ cls, tools_and_outputs: Sequence[tuple[OpenAITool, str]]
200
201
  ) -> list[ChatCompletionToolMessageParam]:
201
202
  """Returns the tool message parameters for tool call results.
202
203
 
203
204
  Args:
204
- tools_and_outputs: The list of tools and their outputs from which the tool
205
+ tools_and_outputs: The sequence of tools and their outputs from which the tool
205
206
  message parameters should be constructed.
206
207
 
207
208
  Returns:
@@ -3,6 +3,7 @@
3
3
  usage docs: learn/calls.md#handling-responses
4
4
  """
5
5
 
6
+ from collections.abc import Sequence
6
7
  from functools import cached_property
7
8
 
8
9
  from google.cloud.aiplatform_v1beta1.types import GenerateContentResponse
@@ -163,12 +164,12 @@ class VertexCallResponse(
163
164
  @classmethod
164
165
  @transform_tool_outputs
165
166
  def tool_message_params(
166
- cls, tools_and_outputs: list[tuple[VertexTool, str]]
167
+ cls, tools_and_outputs: Sequence[tuple[VertexTool, str]]
167
168
  ) -> list[Content]:
168
169
  """Returns the tool message parameters for tool call results.
169
170
 
170
171
  Args:
171
- tools_and_outputs: The list of tools and their outputs from which the tool
172
+ tools_and_outputs: The sequence of tools and their outputs from which the tool
172
173
  message parameters should be constructed.
173
174
 
174
175
  Returns:
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ from collections.abc import Sequence
5
6
  from functools import cached_property
6
7
  from typing import Any
7
8
 
@@ -26,7 +27,7 @@ from .tool import Tool
26
27
  class CallResponse(
27
28
  BaseCallResponse[
28
29
  Any,
29
- Tool,
30
+ BaseTool,
30
31
  Any,
31
32
  BaseDynamicConfig[Any, Any, Any],
32
33
  BaseMessageParam,
@@ -42,11 +43,11 @@ class CallResponse(
42
43
  We rely on _response having `common_` methods or properties for normalization.
43
44
  """
44
45
 
45
- _response: BaseCallResponse[Any, Tool, Any, Any, Any, Any, Any, Any]
46
+ _response: BaseCallResponse[Any, BaseTool, Any, Any, Any, Any, Any, Any]
46
47
 
47
48
  def __init__(
48
49
  self,
49
- response: BaseCallResponse[Any, Tool, Any, Any, Any, Any, Any, Any],
50
+ response: BaseCallResponse[Any, BaseTool, Any, Any, Any, Any, Any, Any],
50
51
  ) -> None:
51
52
  super().__init__(
52
53
  **{
@@ -133,12 +134,12 @@ class CallResponse(
133
134
  @classmethod
134
135
  @transform_tool_outputs
135
136
  def tool_message_params(
136
- cls, tools_and_outputs: list[tuple[Tool, str]]
137
+ cls, tools_and_outputs: Sequence[tuple[BaseTool, str]]
137
138
  ) -> list[BaseMessageParam]:
138
139
  """Returns the tool message parameters for tool call results.
139
140
 
140
141
  Args:
141
- tools_and_outputs: The list of tools and their outputs from which the tool
142
+ tools_and_outputs: The sequence of tools and their outputs from which the tool
142
143
  message parameters should be constructed.
143
144
  """
144
145
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mirascope
3
- Version: 1.22.1
3
+ Version: 1.22.3
4
4
  Summary: LLM abstractions that aren't obstructions
5
5
  Project-URL: Homepage, https://mirascope.com
6
6
  Project-URL: Documentation, https://mirascope.com/WELCOME
@@ -47,7 +47,7 @@ mirascope/core/anthropic/__init__.py,sha256=GB-CULa3jYEPv1ZDyZjNCKQJbrc6ojqu8WNR
47
47
  mirascope/core/anthropic/_call.py,sha256=LXUR__AyexD-hsPMPKpA7IFuh8Cfc0uAg1GrJSxiWnU,2358
48
48
  mirascope/core/anthropic/_call_kwargs.py,sha256=EoXSl2B5FoLD_Nv03-ttXjiKlpBihZGXu6U-Ol3qwZ8,389
49
49
  mirascope/core/anthropic/call_params.py,sha256=K51kCyIf6us3Tl2SPgkqrZoacZTNwaMuVj23hFJcVBk,1238
50
- mirascope/core/anthropic/call_response.py,sha256=ND0gpZR1Zocop8trAKyekzWIRakG1w2NWHOCc6ZjFI4,6345
50
+ mirascope/core/anthropic/call_response.py,sha256=xtXtsZ6Aze7fAgOMAtNQosa0wyURzc2kX8zZ06gHEp4,6390
51
51
  mirascope/core/anthropic/call_response_chunk.py,sha256=Pzpc4nHUqA-OhMaBvdT7sJOexgRbrevNebqHm1HGrrA,4113
52
52
  mirascope/core/anthropic/dynamic_config.py,sha256=kZV4ApAnm3P1X5gKPJ3hbr45K6tgaNX8L6Ca8NjTkxU,1192
53
53
  mirascope/core/anthropic/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -56,16 +56,16 @@ mirascope/core/anthropic/tool.py,sha256=HtbYV5j4itV8v6lTyLDY72NMX2kxRaXVgpZ_m89H
56
56
  mirascope/core/anthropic/_utils/__init__.py,sha256=GDO3G2dvWsE8UhFyQ1lKkRVMeOrqqogBISRKJYJmoEQ,493
57
57
  mirascope/core/anthropic/_utils/_convert_common_call_params.py,sha256=ILd7AH_atmPUPj7I74EsmxG3rmWC7b5tgjnlR24jKUs,765
58
58
  mirascope/core/anthropic/_utils/_convert_finish_reason_to_common_finish_reasons.py,sha256=UqqiDEaw20_nDbQUvRJC-ZneCd35f_2GEUpiUNMibr0,704
59
- mirascope/core/anthropic/_utils/_convert_message_params.py,sha256=xTbdMg7AXVCD7qEoqQ934Q_u6eSngwEPB7h-zRCIN_4,4127
59
+ mirascope/core/anthropic/_utils/_convert_message_params.py,sha256=paDIPksOzZK5yhckUX8-3y5czUIWDxdWCwJmzI6rmEE,4270
60
60
  mirascope/core/anthropic/_utils/_get_json_output.py,sha256=vkHvhc96RLrGREYVCKr14Umq80EUa7pCtlcImjXB5gA,1157
61
61
  mirascope/core/anthropic/_utils/_handle_stream.py,sha256=6Ll2FQt1KWrz5jqgeP1NikHEjlrSbfPUQCH4eoX4eVA,4010
62
- mirascope/core/anthropic/_utils/_message_param_converter.py,sha256=3npGrdXV_Lt7IIkEcIXN17CdOoo1937_D5aIL3aWv28,7301
62
+ mirascope/core/anthropic/_utils/_message_param_converter.py,sha256=1Blj5YT-ifJw12Y9reUK740CO2Fwp-m21_bLEal2PHw,6205
63
63
  mirascope/core/anthropic/_utils/_setup_call.py,sha256=tR-SFT_ZJd_Gk7RY4NOU3do536RRO3US4IfOuyAapOw,4340
64
64
  mirascope/core/azure/__init__.py,sha256=7Dpkf10T-TGxk7Lstej6x6s6On7QjI0qeE2ABO7QWmQ,852
65
65
  mirascope/core/azure/_call.py,sha256=SHqSJe6_4zgn4Y9PkpDl4vXvLuT4QmVnWUcws9e_RR8,2237
66
66
  mirascope/core/azure/_call_kwargs.py,sha256=q38xKSgCBWi8DLScepG-KnUfgi67AU6xr2uOHwCZ2mI,435
67
67
  mirascope/core/azure/call_params.py,sha256=NK_ggVJbactDip85DbfCaqSWRpO0CgwN1svY-KW4_Yg,1836
68
- mirascope/core/azure/call_response.py,sha256=-CdJWhuXYVoOJafbECUXaWZDAYtC9d1oqlelwMT5KO0,7023
68
+ mirascope/core/azure/call_response.py,sha256=FzSqAunmZCeVhQIei2_YcUqZBnJUgmEFFT4jHiJFm28,7068
69
69
  mirascope/core/azure/call_response_chunk.py,sha256=2NorPZ6szna3G-xDx63kuPuMQ7PCh5WNeGhiBRvwCYM,3155
70
70
  mirascope/core/azure/dynamic_config.py,sha256=6SBMGFce7tuXdwHrlKNISpZxVxUnnumbIQB9lGR6nbs,1066
71
71
  mirascope/core/azure/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -88,7 +88,7 @@ mirascope/core/base/_extract_with_tools.py,sha256=MW4v8D1xty7LqLb5RwMFkX-peQqA73
88
88
  mirascope/core/base/_partial.py,sha256=w_ACCgsDKNLtMyAP-lNmfRdrFEPmzh2BT4aninajxyY,3240
89
89
  mirascope/core/base/call_kwargs.py,sha256=0mznCsrj1dYxvdwYNF0RKbc9CiU5G6WvvcjPqOMsOE4,351
90
90
  mirascope/core/base/call_params.py,sha256=wtuuOY-SwIZYCDBKfn_xRC0Kf1cUuI4eSQaXu6VrtaE,1331
91
- mirascope/core/base/call_response.py,sha256=PTPY8GoUZ9PIHVA4hYCEqQBcYtWCnBJ-v9-dAAf9Rmk,10691
91
+ mirascope/core/base/call_response.py,sha256=YBQvOrNcDKZG9H_aOlB88WJ4D9oIQiSybZhUTPMOxBY,10721
92
92
  mirascope/core/base/call_response_chunk.py,sha256=ZfulgERwgva55TLrQI9XimX8bpgOqBNLs_I-_kELl-4,3606
93
93
  mirascope/core/base/dynamic_config.py,sha256=V5IG2X5gPFpfQ47uO8JU1zoC2eNdRftsRZEmwhRPaYI,2859
94
94
  mirascope/core/base/from_call_args.py,sha256=8ijMX7PN6a4o6uLdmXJlSRnE-rEVJU5NLxUmNrS8dvU,909
@@ -145,7 +145,7 @@ mirascope/core/bedrock/_call.py,sha256=8Z8sdzpTdJsMHBev35B1KH3O16_eMLbtTkOmPB7bz
145
145
  mirascope/core/bedrock/_call_kwargs.py,sha256=N1d_iglnwZW3JrcaT8WTOeuLT5MYcVLU5vS8u8uyEL4,408
146
146
  mirascope/core/bedrock/_types.py,sha256=ntmzYsgT6wuigv1GavkdqCvJnAYRsFvVuIwxafE4DFY,3229
147
147
  mirascope/core/bedrock/call_params.py,sha256=3eKNYTteCTaPLqvAcy1vHU5aY9nMVNhmApL45ugPbrQ,1716
148
- mirascope/core/bedrock/call_response.py,sha256=6v9BUQj096n44JMvFSNr7Mk-eNAAAMPZP06W3TlDlTc,8368
148
+ mirascope/core/bedrock/call_response.py,sha256=86_AJOAsNORjADX7DV2pUiRuG8DWABOL07r804lOK4U,8413
149
149
  mirascope/core/bedrock/call_response_chunk.py,sha256=EAs0mJseL-C4dlnEhggtUT8_s6L2d5lSAqrIjLxQepI,3524
150
150
  mirascope/core/bedrock/dynamic_config.py,sha256=X6v93X9g14mfvkGLL08yX-xTFGgX8y8bVngNmExdUhQ,1166
151
151
  mirascope/core/bedrock/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -164,7 +164,7 @@ mirascope/core/cohere/_call.py,sha256=y0nB_7h7FWCNxHRPywtAVCYXyeYX3uzTyYBPWnuLwU
164
164
  mirascope/core/cohere/_call_kwargs.py,sha256=YmHwiofs0QADGp0wXUtOr_Z5Pt849zaCtIZmVyjw2OM,292
165
165
  mirascope/core/cohere/_types.py,sha256=dMcep2mhuUUUmKvFUmdoxkq4Zg5AtB2xquROiBbwRvo,1017
166
166
  mirascope/core/cohere/call_params.py,sha256=xtmELsLkjfyfUoNbZpn3JET-gJxo1EIvlcwxgMw3gcw,1860
167
- mirascope/core/cohere/call_response.py,sha256=izB0UfevaASRcDfXYT2JXfHd4jNtZASmiziIXu8AMiM,6317
167
+ mirascope/core/cohere/call_response.py,sha256=2nvT9tBqW0N6Kekf_W93rb8NBYdkT_lOvaXn57A9pXU,6362
168
168
  mirascope/core/cohere/call_response_chunk.py,sha256=M-EkkGOuNFnYqzAxn5HbE9EFmU4IRUA4kNPFnzl-nBs,3806
169
169
  mirascope/core/cohere/dynamic_config.py,sha256=noH36l6qGGnClVz0EtMqeW_0e4-oTCviU5SLIl8YS64,941
170
170
  mirascope/core/cohere/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -196,7 +196,7 @@ mirascope/core/gemini/__init__.py,sha256=x7GxY48nHa6nNFhoaS3ED8NK_DwF2bNEGXiWU86
196
196
  mirascope/core/gemini/_call.py,sha256=g47rUaE4V_onORvRUP9GlgnQKda28dV1Ge2YACvrD-c,2344
197
197
  mirascope/core/gemini/_call_kwargs.py,sha256=4f34gl1BPM14wkd0fGJw_58jYzxgGgNvZkjVI5d1hgU,360
198
198
  mirascope/core/gemini/call_params.py,sha256=aEXhgZVB0npcT6wL_p7GVGIE3vi_JOiMKdgWtpXTezQ,1723
199
- mirascope/core/gemini/call_response.py,sha256=KqXoEhQy4IpLZYukaMXQWuPx2Yz-eFM63rvh3peua3E,6346
199
+ mirascope/core/gemini/call_response.py,sha256=7A2S60Vq2cmI3HkbtW-d3j-WPty2OXGxUp8RrHMKFxg,6391
200
200
  mirascope/core/gemini/call_response_chunk.py,sha256=YRyCrPLY5F79h_q3Yk6bg2ZiER_PpbAsg41ucy06QQ4,2915
201
201
  mirascope/core/gemini/dynamic_config.py,sha256=_bmJUVHFyrr3zKea96lES20q4GPOelK3W7K1DcX0mZ8,836
202
202
  mirascope/core/gemini/stream.py,sha256=1OIS-rrrDfRVRL86_HYatJ5uUKVLG2eRFx_PVb2YrCQ,3621
@@ -213,25 +213,25 @@ mirascope/core/google/__init__.py,sha256=5EhyiomPnjOS59FgfQP2uPCXS74ZJrGYvJ_CZbY
213
213
  mirascope/core/google/_call.py,sha256=GJOPyvHzVlSXvJpgQhJFg4wFHFUYsvvrbjhNxU-nSl8,2344
214
214
  mirascope/core/google/_call_kwargs.py,sha256=baCYcxWsmV06ATw6nuQhh6FPm3k6oWmKOn0MyjESDGc,372
215
215
  mirascope/core/google/call_params.py,sha256=9Dt5m1pPVjpl5Qppz6Egl_9FyGjjz9aGCnXkVps7C_Q,538
216
- mirascope/core/google/call_response.py,sha256=8yn1cRtqxhnjjzLltfWMzLbaS1Dg7gmS4I5aIr3Hu0g,7511
216
+ mirascope/core/google/call_response.py,sha256=nAlH1XWQMiMfCKgi6sG3qIA0YccxIzLWzY_NNl2JtqM,7372
217
217
  mirascope/core/google/call_response_chunk.py,sha256=oORYaGjOBv4U1IVhsR_ZS-Vr-B58I8G0-9d6Kcj9RM4,3427
218
218
  mirascope/core/google/dynamic_config.py,sha256=O6j8F0fLVFuuNwURneu5OpPuu_bMEtbDEFHhJXRT6V0,857
219
219
  mirascope/core/google/stream.py,sha256=bTxB8OUrKXxzmcX0C7_-LqtBfaAAazA5HjKZGSxxtLw,4466
220
220
  mirascope/core/google/tool.py,sha256=61a9Ejdxz41pwaab9VE2yvP_J1Aebua3BeRPJ_GJSnE,5138
221
221
  mirascope/core/google/_utils/__init__.py,sha256=vL0hx6WKW5lqpUcFTFCFGvmwtR-pts0JzWgCXhaUVrI,388
222
- mirascope/core/google/_utils/_convert_common_call_params.py,sha256=KA-z6uvRtdD4WydC0eXd3dzQuSh4x4WKNR8PAqFNUVY,1065
222
+ mirascope/core/google/_utils/_convert_common_call_params.py,sha256=TF7GWBHcpfzb7XmrxKp3gnaONITYF93lqr4XkSVz_uU,1195
223
223
  mirascope/core/google/_utils/_convert_finish_reason_to_common_finish_reasons.py,sha256=ig4tb7Zanz-tyZpvc9Ncd47a2FNTOS7-wl1PYBq-4cY,879
224
- mirascope/core/google/_utils/_convert_message_params.py,sha256=5FcMqK20OISCr00HP33w8219B1cNoy1AXkUmOeaIdkU,8079
224
+ mirascope/core/google/_utils/_convert_message_params.py,sha256=9I7Q79Z8tBCLZtfjWJNQkuKgz0n2L43SzHB3cV3hNmY,8926
225
225
  mirascope/core/google/_utils/_get_json_output.py,sha256=sxDgT0Ra6YJynL5_hhakf0dNJEhZm0DfAgfcvC_DAFU,1596
226
226
  mirascope/core/google/_utils/_handle_stream.py,sha256=BxFuheAu1LKPrPsDxxiLWd2KoajkwJyx2_QT1NXwtWE,1212
227
- mirascope/core/google/_utils/_message_param_converter.py,sha256=eucmZl-zfU3cQiH5VVLs8_fJWf8zLg4-Q8KKChYFez4,6579
228
- mirascope/core/google/_utils/_setup_call.py,sha256=2t3yRly_I4l2jtJ8pJwi2f2crq7PF4d1Gh4EAaWgZcU,6361
227
+ mirascope/core/google/_utils/_message_param_converter.py,sha256=wvvxUY9lOhR_kFZ4JigjWmN8O8Vovu-fLoi-NDtyorE,6580
228
+ mirascope/core/google/_utils/_setup_call.py,sha256=UoV4McGgSS79PKErjArCmrq1HmpFvq2qegJYoyY4P5U,6469
229
229
  mirascope/core/google/_utils/_validate_media_type.py,sha256=sUOjKpC498L-NCiECejAAfSzMUAvZT84rf-2Yo-JE58,1042
230
230
  mirascope/core/groq/__init__.py,sha256=8jWCQScdei_TImGMWUwiKnlOwffQqaXdAL-bluFmEL0,798
231
231
  mirascope/core/groq/_call.py,sha256=gR8VN5IaYWIFXc0csn995q59FM0nBs-xVFjkVycPjMM,2223
232
232
  mirascope/core/groq/_call_kwargs.py,sha256=trT8AdQ-jdQPYKlGngIMRwwQuvKuvAbvI1yyozftOuI,425
233
233
  mirascope/core/groq/call_params.py,sha256=FchtsaeohTzYKzY9f2fUIzjgG2y4OtsnRWiHsUBLdi0,1619
234
- mirascope/core/groq/call_response.py,sha256=J-_ZUdvGBE4f7UhncQhHUtgIZ8Rfc-llWwXhvUhIM6A,7000
234
+ mirascope/core/groq/call_response.py,sha256=wEcOeanmYjD9FmrvgBXs7h6ptbfZcQugjvBl7g2Nq_k,7045
235
235
  mirascope/core/groq/call_response_chunk.py,sha256=lhlL7XelfBWzCY8SkCYHnstrTXo14s6aUsMRreuEYR0,3094
236
236
  mirascope/core/groq/dynamic_config.py,sha256=AjcXBVeBdMiI6ObHanX3TVMKYxm4iWhXju3m6d-ZWMY,937
237
237
  mirascope/core/groq/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -259,7 +259,7 @@ mirascope/core/mistral/__init__.py,sha256=75tjaJC9nioECzQumC0FYITjosMsXCO1VzPV1t
259
259
  mirascope/core/mistral/_call.py,sha256=p9aSLYVSNgaIGA5SqCgGuT7iWN5WLfwmXubk4IF-w_I,2274
260
260
  mirascope/core/mistral/_call_kwargs.py,sha256=vZxlADPx4muIePARGdfKOVQpxpIoaXT9tCG6kY5oxSQ,513
261
261
  mirascope/core/mistral/call_params.py,sha256=wWHWI9hRnfloGhQurMwCcka9c1u_TwgcN84Ih6qVBXs,1054
262
- mirascope/core/mistral/call_response.py,sha256=di1vn2wnZUcXhNSglBbm3yko9-CBsrltC--kNM4Yhz4,6249
262
+ mirascope/core/mistral/call_response.py,sha256=Qt4M9l5a7u7t2awISdm90SuWJzAhosXmqRj1R1AgfIY,6294
263
263
  mirascope/core/mistral/call_response_chunk.py,sha256=HvoPONyOcbMQPWnrG0qBCfiT6PHLaPR9nrByUuT1Cro,3130
264
264
  mirascope/core/mistral/dynamic_config.py,sha256=-pzTvXf870NxEhjpgjqPahFWqqifzMhSbvM0kXs2G_s,937
265
265
  mirascope/core/mistral/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -277,7 +277,7 @@ mirascope/core/openai/__init__.py,sha256=lOzSimt1AaWyFW2s_w1So5lIn7K2rpj3bEFicjo
277
277
  mirascope/core/openai/_call.py,sha256=ExXdY3rjBbil0ija2HlGMRvcOE2zOOj13rgliw8nmFc,2260
278
278
  mirascope/core/openai/_call_kwargs.py,sha256=x53EZmxqroNewR194M_JkRP1Ejuh4BTtDL-b7XNSo2Q,435
279
279
  mirascope/core/openai/call_params.py,sha256=DAjh2oZ2cLpBSh4wQAq24zsT9LBOJQLjev3AWIDcc2M,3052
280
- mirascope/core/openai/call_response.py,sha256=KgbRTWdGLWjha8L7KU_xJLlvqKUIcn2TZo8weqeZ13g,9000
280
+ mirascope/core/openai/call_response.py,sha256=m-y7TePiy0SJALIeTR4Vy0Ph70FHyMwNaeEpaaKyrD0,9045
281
281
  mirascope/core/openai/call_response_chunk.py,sha256=GLHiLEb-bRvTtBA9O2zlz8Dzqi7lwladRlNPwM0jv-g,4261
282
282
  mirascope/core/openai/dynamic_config.py,sha256=D36E3CMpXSaj5I8FEmtzMJz9gtTsNz1pVW_iM3dOCcw,1045
283
283
  mirascope/core/openai/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -294,7 +294,7 @@ mirascope/core/vertex/__init__.py,sha256=eg_kNX956OYABi3leev5GyDg0KK8QopgztBtrMX
294
294
  mirascope/core/vertex/_call.py,sha256=ebQmWoQLnxScyxhnGKU3MmHkXXzzs_Sw2Yf-d3nZFwU,2323
295
295
  mirascope/core/vertex/_call_kwargs.py,sha256=6JxQt1bAscbhPWTGESG1TiskB-i5imDHqLMgbMHmyfI,353
296
296
  mirascope/core/vertex/call_params.py,sha256=ISBnMITxAtvuGmpLF9UdkqcDS43RwtuuVakk01YIHDs,706
297
- mirascope/core/vertex/call_response.py,sha256=HiQOaqxInfr7YKbE5E3TK0nYxvoBfKohIVdTWRfJunQ,6213
297
+ mirascope/core/vertex/call_response.py,sha256=ATzIX1uSxMxzmh3R-PW_wmbxevyBEx6-Za9Fpf0epWM,6258
298
298
  mirascope/core/vertex/call_response_chunk.py,sha256=MDCeDjzFonqRpFdoQnfJRGDPiJakLB9n-o2WyOGLKNw,2926
299
299
  mirascope/core/vertex/dynamic_config.py,sha256=KISQf7c2Rf1EpaS_2Ik6beA1w9uz_dAvMBk4nQcrdaM,809
300
300
  mirascope/core/vertex/stream.py,sha256=FYhCtYRfQ6lEccHO5ZKVrQJ8iafpelVFIzykO3xVjGE,3544
@@ -339,7 +339,7 @@ mirascope/llm/_context.py,sha256=vtHJkLlFfUwyR_hYEHXAw3xunpHhLn67k4kuFw50GR8,124
339
339
  mirascope/llm/_override.py,sha256=m4MdOhM-aJRIGP7NBJhscq3ISNct6FBPn3jjmryFo_Q,112292
340
340
  mirascope/llm/_protocols.py,sha256=HXspRAC0PduGqbh2BM0CGe5iVj7CC3ZKMPAYvFvbDNQ,16406
341
341
  mirascope/llm/_response_metaclass.py,sha256=6DLQb5IrqMldyEXHT_pAsr2DlUVc9CmZuZiBXG37WK8,851
342
- mirascope/llm/call_response.py,sha256=4w_2Dgt325lEjMaFlg7Iq2AGp8cI0uSaqCa8MR_S5GY,5171
342
+ mirascope/llm/call_response.py,sha256=cOOyONfkcBluk1m2FNliVcdGtiNnSZpz71nMyxsZko8,5232
343
343
  mirascope/llm/call_response_chunk.py,sha256=bZwO43ipc6PO1VLgGSaAPRqCIUyZD_Ty5oxdJX62yno,1966
344
344
  mirascope/llm/stream.py,sha256=GtUKyLBlKqqZTOKjdL9FLInCXJ0ZOEAe6nymbjKwyTQ,5293
345
345
  mirascope/llm/tool.py,sha256=MQRJBPhP1d-OyOz3PE_VsKmSXca0chySyYO1U9OW8ck,1824
@@ -371,7 +371,7 @@ mirascope/v0/base/ops_utils.py,sha256=1Qq-VIwgHBaYutiZsS2MUQ4OgPC3APyywI5bTiTAmA
371
371
  mirascope/v0/base/prompts.py,sha256=FM2Yz98cSnDceYogiwPrp4BALf3_F3d4fIOCGAkd-SE,1298
372
372
  mirascope/v0/base/types.py,sha256=ZfatJoX0Yl0e3jhv0D_MhiSVHLYUeJsdN3um3iE10zY,352
373
373
  mirascope/v0/base/utils.py,sha256=XREPENRQTu8gpMhHU8RC8qH_am3FfGUvY-dJ6x8i-mw,681
374
- mirascope-1.22.1.dist-info/METADATA,sha256=YoitXID5GPP9Aj5JURQaBvSk07JHTnbA6s0PuDv37C8,8783
375
- mirascope-1.22.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
376
- mirascope-1.22.1.dist-info/licenses/LICENSE,sha256=LAs5Q8mdawTsVdONpDGukwsoc4KEUBmmonDEL39b23Y,1072
377
- mirascope-1.22.1.dist-info/RECORD,,
374
+ mirascope-1.22.3.dist-info/METADATA,sha256=FCTObICqUL1p5C3m5zBUJP2tvPnWlT_Rsumt0u90_H0,8783
375
+ mirascope-1.22.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
376
+ mirascope-1.22.3.dist-info/licenses/LICENSE,sha256=LAs5Q8mdawTsVdONpDGukwsoc4KEUBmmonDEL39b23Y,1072
377
+ mirascope-1.22.3.dist-info/RECORD,,