mirascope 1.25.7__py3-none-any.whl → 2.0.0a0__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.
- mirascope/__init__.py +3 -59
- mirascope/graphs/__init__.py +22 -0
- mirascope/{experimental/graphs → graphs}/finite_state_machine.py +70 -159
- mirascope/llm/__init__.py +206 -16
- mirascope/llm/agents/__init__.py +15 -0
- mirascope/llm/agents/agent.py +97 -0
- mirascope/llm/agents/agent_template.py +45 -0
- mirascope/llm/agents/decorator.py +176 -0
- mirascope/llm/calls/__init__.py +16 -0
- mirascope/llm/calls/base_call.py +33 -0
- mirascope/llm/calls/calls.py +315 -0
- mirascope/llm/calls/decorator.py +255 -0
- mirascope/llm/clients/__init__.py +34 -0
- mirascope/llm/clients/anthropic/__init__.py +11 -0
- mirascope/llm/clients/anthropic/_utils/__init__.py +13 -0
- mirascope/llm/clients/anthropic/_utils/decode.py +244 -0
- mirascope/llm/clients/anthropic/_utils/encode.py +243 -0
- mirascope/llm/clients/anthropic/clients.py +819 -0
- mirascope/llm/clients/anthropic/model_ids.py +8 -0
- mirascope/llm/clients/base/__init__.py +15 -0
- mirascope/llm/clients/base/_utils.py +192 -0
- mirascope/llm/clients/base/client.py +1256 -0
- mirascope/llm/clients/base/kwargs.py +12 -0
- mirascope/llm/clients/base/params.py +93 -0
- mirascope/llm/clients/google/__init__.py +6 -0
- mirascope/llm/clients/google/_utils/__init__.py +13 -0
- mirascope/llm/clients/google/_utils/decode.py +231 -0
- mirascope/llm/clients/google/_utils/encode.py +279 -0
- mirascope/llm/clients/google/clients.py +853 -0
- mirascope/llm/clients/google/message.py +7 -0
- mirascope/llm/clients/google/model_ids.py +15 -0
- mirascope/llm/clients/openai/__init__.py +25 -0
- mirascope/llm/clients/openai/completions/__init__.py +9 -0
- mirascope/llm/clients/openai/completions/_utils/__init__.py +13 -0
- mirascope/llm/clients/openai/completions/_utils/decode.py +187 -0
- mirascope/llm/clients/openai/completions/_utils/encode.py +358 -0
- mirascope/llm/clients/openai/completions/_utils/model_features.py +81 -0
- mirascope/llm/clients/openai/completions/clients.py +833 -0
- mirascope/llm/clients/openai/completions/model_ids.py +8 -0
- mirascope/llm/clients/openai/responses/__init__.py +9 -0
- mirascope/llm/clients/openai/responses/_utils/__init__.py +13 -0
- mirascope/llm/clients/openai/responses/_utils/decode.py +194 -0
- mirascope/llm/clients/openai/responses/_utils/encode.py +333 -0
- mirascope/llm/clients/openai/responses/_utils/model_features.py +87 -0
- mirascope/llm/clients/openai/responses/clients.py +832 -0
- mirascope/llm/clients/openai/responses/model_ids.py +8 -0
- mirascope/llm/clients/openai/shared/__init__.py +7 -0
- mirascope/llm/clients/openai/shared/_utils.py +55 -0
- mirascope/llm/clients/providers.py +175 -0
- mirascope/llm/content/__init__.py +70 -0
- mirascope/llm/content/audio.py +173 -0
- mirascope/llm/content/document.py +94 -0
- mirascope/llm/content/image.py +206 -0
- mirascope/llm/content/text.py +47 -0
- mirascope/llm/content/thought.py +58 -0
- mirascope/llm/content/tool_call.py +63 -0
- mirascope/llm/content/tool_output.py +26 -0
- mirascope/llm/context/__init__.py +6 -0
- mirascope/llm/context/_utils.py +28 -0
- mirascope/llm/context/context.py +24 -0
- mirascope/llm/exceptions.py +105 -0
- mirascope/llm/formatting/__init__.py +22 -0
- mirascope/llm/formatting/_utils.py +74 -0
- mirascope/llm/formatting/format.py +104 -0
- mirascope/llm/formatting/from_call_args.py +30 -0
- mirascope/llm/formatting/partial.py +58 -0
- mirascope/llm/formatting/types.py +109 -0
- mirascope/llm/mcp/__init__.py +5 -0
- mirascope/llm/mcp/client.py +118 -0
- mirascope/llm/messages/__init__.py +32 -0
- mirascope/llm/messages/message.py +182 -0
- mirascope/llm/models/__init__.py +16 -0
- mirascope/llm/models/models.py +1243 -0
- mirascope/llm/prompts/__init__.py +33 -0
- mirascope/llm/prompts/_utils.py +60 -0
- mirascope/llm/prompts/decorator.py +286 -0
- mirascope/llm/prompts/protocols.py +99 -0
- mirascope/llm/responses/__init__.py +57 -0
- mirascope/llm/responses/_utils.py +56 -0
- mirascope/llm/responses/base_response.py +91 -0
- mirascope/llm/responses/base_stream_response.py +697 -0
- mirascope/llm/responses/finish_reason.py +27 -0
- mirascope/llm/responses/response.py +345 -0
- mirascope/llm/responses/root_response.py +177 -0
- mirascope/llm/responses/stream_response.py +572 -0
- mirascope/llm/responses/streams.py +363 -0
- mirascope/llm/tools/__init__.py +40 -0
- mirascope/llm/tools/_utils.py +25 -0
- mirascope/llm/tools/decorator.py +175 -0
- mirascope/llm/tools/protocols.py +96 -0
- mirascope/llm/tools/tool_schema.py +246 -0
- mirascope/llm/tools/toolkit.py +152 -0
- mirascope/llm/tools/tools.py +169 -0
- mirascope/llm/types/__init__.py +22 -0
- mirascope/llm/types/dataclass.py +9 -0
- mirascope/llm/types/jsonable.py +44 -0
- mirascope/llm/types/type_vars.py +19 -0
- mirascope-2.0.0a0.dist-info/METADATA +117 -0
- mirascope-2.0.0a0.dist-info/RECORD +101 -0
- mirascope/beta/__init__.py +0 -3
- mirascope/beta/openai/__init__.py +0 -17
- mirascope/beta/openai/realtime/__init__.py +0 -13
- mirascope/beta/openai/realtime/_utils/__init__.py +0 -3
- mirascope/beta/openai/realtime/_utils/_audio.py +0 -74
- mirascope/beta/openai/realtime/_utils/_protocols.py +0 -50
- mirascope/beta/openai/realtime/realtime.py +0 -500
- mirascope/beta/openai/realtime/recording.py +0 -98
- mirascope/beta/openai/realtime/tool.py +0 -113
- mirascope/beta/rag/__init__.py +0 -24
- mirascope/beta/rag/base/__init__.py +0 -22
- mirascope/beta/rag/base/chunkers/__init__.py +0 -2
- mirascope/beta/rag/base/chunkers/base_chunker.py +0 -37
- mirascope/beta/rag/base/chunkers/text_chunker.py +0 -33
- mirascope/beta/rag/base/config.py +0 -8
- mirascope/beta/rag/base/document.py +0 -11
- mirascope/beta/rag/base/embedders.py +0 -35
- mirascope/beta/rag/base/embedding_params.py +0 -18
- mirascope/beta/rag/base/embedding_response.py +0 -30
- mirascope/beta/rag/base/query_results.py +0 -7
- mirascope/beta/rag/base/vectorstore_params.py +0 -18
- mirascope/beta/rag/base/vectorstores.py +0 -37
- mirascope/beta/rag/chroma/__init__.py +0 -11
- mirascope/beta/rag/chroma/types.py +0 -62
- mirascope/beta/rag/chroma/vectorstores.py +0 -121
- mirascope/beta/rag/cohere/__init__.py +0 -11
- mirascope/beta/rag/cohere/embedders.py +0 -87
- mirascope/beta/rag/cohere/embedding_params.py +0 -29
- mirascope/beta/rag/cohere/embedding_response.py +0 -29
- mirascope/beta/rag/cohere/py.typed +0 -0
- mirascope/beta/rag/openai/__init__.py +0 -11
- mirascope/beta/rag/openai/embedders.py +0 -144
- mirascope/beta/rag/openai/embedding_params.py +0 -18
- mirascope/beta/rag/openai/embedding_response.py +0 -14
- mirascope/beta/rag/openai/py.typed +0 -0
- mirascope/beta/rag/pinecone/__init__.py +0 -19
- mirascope/beta/rag/pinecone/types.py +0 -143
- mirascope/beta/rag/pinecone/vectorstores.py +0 -148
- mirascope/beta/rag/weaviate/__init__.py +0 -6
- mirascope/beta/rag/weaviate/types.py +0 -92
- mirascope/beta/rag/weaviate/vectorstores.py +0 -103
- mirascope/core/__init__.py +0 -109
- mirascope/core/anthropic/__init__.py +0 -31
- mirascope/core/anthropic/_call.py +0 -67
- mirascope/core/anthropic/_call_kwargs.py +0 -13
- mirascope/core/anthropic/_thinking.py +0 -70
- mirascope/core/anthropic/_utils/__init__.py +0 -16
- mirascope/core/anthropic/_utils/_convert_common_call_params.py +0 -25
- mirascope/core/anthropic/_utils/_convert_finish_reason_to_common_finish_reasons.py +0 -21
- mirascope/core/anthropic/_utils/_convert_message_params.py +0 -102
- mirascope/core/anthropic/_utils/_get_json_output.py +0 -31
- mirascope/core/anthropic/_utils/_handle_stream.py +0 -113
- mirascope/core/anthropic/_utils/_message_param_converter.py +0 -154
- mirascope/core/anthropic/_utils/_setup_call.py +0 -146
- mirascope/core/anthropic/call_params.py +0 -44
- mirascope/core/anthropic/call_response.py +0 -226
- mirascope/core/anthropic/call_response_chunk.py +0 -152
- mirascope/core/anthropic/dynamic_config.py +0 -40
- mirascope/core/anthropic/py.typed +0 -0
- mirascope/core/anthropic/stream.py +0 -204
- mirascope/core/anthropic/tool.py +0 -101
- mirascope/core/azure/__init__.py +0 -31
- mirascope/core/azure/_call.py +0 -67
- mirascope/core/azure/_call_kwargs.py +0 -13
- mirascope/core/azure/_utils/__init__.py +0 -14
- mirascope/core/azure/_utils/_convert_common_call_params.py +0 -26
- mirascope/core/azure/_utils/_convert_finish_reason_to_common_finish_reasons.py +0 -21
- mirascope/core/azure/_utils/_convert_message_params.py +0 -121
- mirascope/core/azure/_utils/_get_credential.py +0 -33
- mirascope/core/azure/_utils/_get_json_output.py +0 -27
- mirascope/core/azure/_utils/_handle_stream.py +0 -130
- mirascope/core/azure/_utils/_message_param_converter.py +0 -117
- mirascope/core/azure/_utils/_setup_call.py +0 -183
- mirascope/core/azure/call_params.py +0 -59
- mirascope/core/azure/call_response.py +0 -215
- mirascope/core/azure/call_response_chunk.py +0 -105
- mirascope/core/azure/dynamic_config.py +0 -30
- mirascope/core/azure/py.typed +0 -0
- mirascope/core/azure/stream.py +0 -147
- mirascope/core/azure/tool.py +0 -93
- mirascope/core/base/__init__.py +0 -86
- mirascope/core/base/_call_factory.py +0 -256
- mirascope/core/base/_create.py +0 -253
- mirascope/core/base/_extract.py +0 -175
- mirascope/core/base/_extract_with_tools.py +0 -189
- mirascope/core/base/_partial.py +0 -95
- mirascope/core/base/_utils/__init__.py +0 -92
- mirascope/core/base/_utils/_base_message_param_converter.py +0 -22
- mirascope/core/base/_utils/_base_type.py +0 -26
- mirascope/core/base/_utils/_convert_base_model_to_base_tool.py +0 -48
- mirascope/core/base/_utils/_convert_base_type_to_base_tool.py +0 -24
- mirascope/core/base/_utils/_convert_function_to_base_tool.py +0 -139
- mirascope/core/base/_utils/_convert_messages_to_message_params.py +0 -178
- mirascope/core/base/_utils/_convert_provider_finish_reason_to_finish_reason.py +0 -20
- mirascope/core/base/_utils/_default_tool_docstring.py +0 -6
- mirascope/core/base/_utils/_extract_tool_return.py +0 -42
- mirascope/core/base/_utils/_fn_is_async.py +0 -24
- mirascope/core/base/_utils/_format_template.py +0 -32
- mirascope/core/base/_utils/_get_audio_type.py +0 -18
- mirascope/core/base/_utils/_get_common_usage.py +0 -20
- mirascope/core/base/_utils/_get_create_fn_or_async_create_fn.py +0 -137
- mirascope/core/base/_utils/_get_document_type.py +0 -7
- mirascope/core/base/_utils/_get_dynamic_configuration.py +0 -69
- mirascope/core/base/_utils/_get_fields_from_call_args.py +0 -34
- mirascope/core/base/_utils/_get_fn_args.py +0 -23
- mirascope/core/base/_utils/_get_image_dimensions.py +0 -39
- mirascope/core/base/_utils/_get_image_type.py +0 -26
- mirascope/core/base/_utils/_get_metadata.py +0 -17
- mirascope/core/base/_utils/_get_possible_user_message_param.py +0 -21
- mirascope/core/base/_utils/_get_prompt_template.py +0 -28
- mirascope/core/base/_utils/_get_template_values.py +0 -51
- mirascope/core/base/_utils/_get_template_variables.py +0 -38
- mirascope/core/base/_utils/_get_unsupported_tool_config_keys.py +0 -10
- mirascope/core/base/_utils/_is_prompt_template.py +0 -24
- mirascope/core/base/_utils/_json_mode_content.py +0 -17
- mirascope/core/base/_utils/_messages_decorator.py +0 -121
- mirascope/core/base/_utils/_parse_content_template.py +0 -323
- mirascope/core/base/_utils/_parse_prompt_messages.py +0 -63
- mirascope/core/base/_utils/_pil_image_to_bytes.py +0 -13
- mirascope/core/base/_utils/_protocols.py +0 -901
- mirascope/core/base/_utils/_setup_call.py +0 -79
- mirascope/core/base/_utils/_setup_extract_tool.py +0 -30
- mirascope/core/base/call_kwargs.py +0 -13
- mirascope/core/base/call_params.py +0 -36
- mirascope/core/base/call_response.py +0 -338
- mirascope/core/base/call_response_chunk.py +0 -130
- mirascope/core/base/dynamic_config.py +0 -82
- mirascope/core/base/from_call_args.py +0 -30
- mirascope/core/base/merge_decorators.py +0 -59
- mirascope/core/base/message_param.py +0 -175
- mirascope/core/base/messages.py +0 -116
- mirascope/core/base/metadata.py +0 -13
- mirascope/core/base/prompt.py +0 -497
- mirascope/core/base/response_model_config_dict.py +0 -9
- mirascope/core/base/stream.py +0 -479
- mirascope/core/base/stream_config.py +0 -11
- mirascope/core/base/structured_stream.py +0 -296
- mirascope/core/base/tool.py +0 -214
- mirascope/core/base/toolkit.py +0 -176
- mirascope/core/base/types.py +0 -344
- mirascope/core/bedrock/__init__.py +0 -34
- mirascope/core/bedrock/_call.py +0 -68
- mirascope/core/bedrock/_call_kwargs.py +0 -12
- mirascope/core/bedrock/_types.py +0 -104
- mirascope/core/bedrock/_utils/__init__.py +0 -14
- mirascope/core/bedrock/_utils/_convert_common_call_params.py +0 -39
- mirascope/core/bedrock/_utils/_convert_finish_reason_to_common_finish_reasons.py +0 -23
- mirascope/core/bedrock/_utils/_convert_message_params.py +0 -111
- mirascope/core/bedrock/_utils/_get_json_output.py +0 -30
- mirascope/core/bedrock/_utils/_handle_stream.py +0 -104
- mirascope/core/bedrock/_utils/_message_param_converter.py +0 -172
- mirascope/core/bedrock/_utils/_setup_call.py +0 -258
- mirascope/core/bedrock/call_params.py +0 -38
- mirascope/core/bedrock/call_response.py +0 -248
- mirascope/core/bedrock/call_response_chunk.py +0 -111
- mirascope/core/bedrock/dynamic_config.py +0 -37
- mirascope/core/bedrock/py.typed +0 -0
- mirascope/core/bedrock/stream.py +0 -154
- mirascope/core/bedrock/tool.py +0 -100
- mirascope/core/cohere/__init__.py +0 -30
- mirascope/core/cohere/_call.py +0 -67
- mirascope/core/cohere/_call_kwargs.py +0 -11
- mirascope/core/cohere/_types.py +0 -20
- mirascope/core/cohere/_utils/__init__.py +0 -14
- mirascope/core/cohere/_utils/_convert_common_call_params.py +0 -26
- mirascope/core/cohere/_utils/_convert_finish_reason_to_common_finish_reasons.py +0 -24
- mirascope/core/cohere/_utils/_convert_message_params.py +0 -32
- mirascope/core/cohere/_utils/_get_json_output.py +0 -30
- mirascope/core/cohere/_utils/_handle_stream.py +0 -35
- mirascope/core/cohere/_utils/_message_param_converter.py +0 -54
- mirascope/core/cohere/_utils/_setup_call.py +0 -150
- mirascope/core/cohere/call_params.py +0 -62
- mirascope/core/cohere/call_response.py +0 -205
- mirascope/core/cohere/call_response_chunk.py +0 -125
- mirascope/core/cohere/dynamic_config.py +0 -32
- mirascope/core/cohere/py.typed +0 -0
- mirascope/core/cohere/stream.py +0 -113
- mirascope/core/cohere/tool.py +0 -93
- mirascope/core/costs/__init__.py +0 -5
- mirascope/core/costs/_anthropic_calculate_cost.py +0 -219
- mirascope/core/costs/_azure_calculate_cost.py +0 -11
- mirascope/core/costs/_bedrock_calculate_cost.py +0 -15
- mirascope/core/costs/_cohere_calculate_cost.py +0 -44
- mirascope/core/costs/_gemini_calculate_cost.py +0 -67
- mirascope/core/costs/_google_calculate_cost.py +0 -427
- mirascope/core/costs/_groq_calculate_cost.py +0 -156
- mirascope/core/costs/_litellm_calculate_cost.py +0 -11
- mirascope/core/costs/_mistral_calculate_cost.py +0 -64
- mirascope/core/costs/_openai_calculate_cost.py +0 -416
- mirascope/core/costs/_vertex_calculate_cost.py +0 -67
- mirascope/core/costs/_xai_calculate_cost.py +0 -104
- mirascope/core/costs/calculate_cost.py +0 -86
- mirascope/core/gemini/__init__.py +0 -40
- mirascope/core/gemini/_call.py +0 -67
- mirascope/core/gemini/_call_kwargs.py +0 -12
- mirascope/core/gemini/_utils/__init__.py +0 -14
- mirascope/core/gemini/_utils/_convert_common_call_params.py +0 -39
- mirascope/core/gemini/_utils/_convert_finish_reason_to_common_finish_reasons.py +0 -23
- mirascope/core/gemini/_utils/_convert_message_params.py +0 -156
- mirascope/core/gemini/_utils/_get_json_output.py +0 -35
- mirascope/core/gemini/_utils/_handle_stream.py +0 -33
- mirascope/core/gemini/_utils/_message_param_converter.py +0 -209
- mirascope/core/gemini/_utils/_setup_call.py +0 -149
- mirascope/core/gemini/call_params.py +0 -52
- mirascope/core/gemini/call_response.py +0 -216
- mirascope/core/gemini/call_response_chunk.py +0 -100
- mirascope/core/gemini/dynamic_config.py +0 -26
- mirascope/core/gemini/stream.py +0 -120
- mirascope/core/gemini/tool.py +0 -104
- mirascope/core/google/__init__.py +0 -29
- mirascope/core/google/_call.py +0 -67
- mirascope/core/google/_call_kwargs.py +0 -13
- mirascope/core/google/_utils/__init__.py +0 -14
- mirascope/core/google/_utils/_convert_common_call_params.py +0 -38
- mirascope/core/google/_utils/_convert_finish_reason_to_common_finish_reasons.py +0 -27
- mirascope/core/google/_utils/_convert_message_params.py +0 -297
- mirascope/core/google/_utils/_get_json_output.py +0 -37
- mirascope/core/google/_utils/_handle_stream.py +0 -58
- mirascope/core/google/_utils/_message_param_converter.py +0 -200
- mirascope/core/google/_utils/_setup_call.py +0 -201
- mirascope/core/google/_utils/_validate_media_type.py +0 -58
- mirascope/core/google/call_params.py +0 -22
- mirascope/core/google/call_response.py +0 -255
- mirascope/core/google/call_response_chunk.py +0 -135
- mirascope/core/google/dynamic_config.py +0 -26
- mirascope/core/google/stream.py +0 -199
- mirascope/core/google/tool.py +0 -146
- mirascope/core/groq/__init__.py +0 -30
- mirascope/core/groq/_call.py +0 -67
- mirascope/core/groq/_call_kwargs.py +0 -13
- mirascope/core/groq/_utils/__init__.py +0 -14
- mirascope/core/groq/_utils/_convert_common_call_params.py +0 -26
- mirascope/core/groq/_utils/_convert_message_params.py +0 -112
- mirascope/core/groq/_utils/_get_json_output.py +0 -27
- mirascope/core/groq/_utils/_handle_stream.py +0 -123
- mirascope/core/groq/_utils/_message_param_converter.py +0 -89
- mirascope/core/groq/_utils/_setup_call.py +0 -132
- mirascope/core/groq/call_params.py +0 -52
- mirascope/core/groq/call_response.py +0 -213
- mirascope/core/groq/call_response_chunk.py +0 -104
- mirascope/core/groq/dynamic_config.py +0 -29
- mirascope/core/groq/py.typed +0 -0
- mirascope/core/groq/stream.py +0 -135
- mirascope/core/groq/tool.py +0 -80
- mirascope/core/litellm/__init__.py +0 -28
- mirascope/core/litellm/_call.py +0 -67
- mirascope/core/litellm/_utils/__init__.py +0 -5
- mirascope/core/litellm/_utils/_setup_call.py +0 -109
- mirascope/core/litellm/call_params.py +0 -10
- mirascope/core/litellm/call_response.py +0 -24
- mirascope/core/litellm/call_response_chunk.py +0 -14
- mirascope/core/litellm/dynamic_config.py +0 -8
- mirascope/core/litellm/py.typed +0 -0
- mirascope/core/litellm/stream.py +0 -86
- mirascope/core/litellm/tool.py +0 -13
- mirascope/core/mistral/__init__.py +0 -36
- mirascope/core/mistral/_call.py +0 -65
- mirascope/core/mistral/_call_kwargs.py +0 -19
- mirascope/core/mistral/_utils/__init__.py +0 -14
- mirascope/core/mistral/_utils/_convert_common_call_params.py +0 -24
- mirascope/core/mistral/_utils/_convert_finish_reason_to_common_finish_reasons.py +0 -22
- mirascope/core/mistral/_utils/_convert_message_params.py +0 -122
- mirascope/core/mistral/_utils/_get_json_output.py +0 -34
- mirascope/core/mistral/_utils/_handle_stream.py +0 -139
- mirascope/core/mistral/_utils/_message_param_converter.py +0 -176
- mirascope/core/mistral/_utils/_setup_call.py +0 -164
- mirascope/core/mistral/call_params.py +0 -36
- mirascope/core/mistral/call_response.py +0 -205
- mirascope/core/mistral/call_response_chunk.py +0 -105
- mirascope/core/mistral/dynamic_config.py +0 -33
- mirascope/core/mistral/py.typed +0 -0
- mirascope/core/mistral/stream.py +0 -120
- mirascope/core/mistral/tool.py +0 -81
- mirascope/core/openai/__init__.py +0 -31
- mirascope/core/openai/_call.py +0 -67
- mirascope/core/openai/_call_kwargs.py +0 -13
- mirascope/core/openai/_utils/__init__.py +0 -14
- mirascope/core/openai/_utils/_convert_common_call_params.py +0 -26
- mirascope/core/openai/_utils/_convert_message_params.py +0 -148
- mirascope/core/openai/_utils/_get_json_output.py +0 -31
- mirascope/core/openai/_utils/_handle_stream.py +0 -138
- mirascope/core/openai/_utils/_message_param_converter.py +0 -105
- mirascope/core/openai/_utils/_setup_call.py +0 -155
- mirascope/core/openai/call_params.py +0 -92
- mirascope/core/openai/call_response.py +0 -273
- mirascope/core/openai/call_response_chunk.py +0 -139
- mirascope/core/openai/dynamic_config.py +0 -34
- mirascope/core/openai/py.typed +0 -0
- mirascope/core/openai/stream.py +0 -185
- mirascope/core/openai/tool.py +0 -101
- mirascope/core/py.typed +0 -0
- mirascope/core/vertex/__init__.py +0 -45
- mirascope/core/vertex/_call.py +0 -62
- mirascope/core/vertex/_call_kwargs.py +0 -12
- mirascope/core/vertex/_utils/__init__.py +0 -14
- mirascope/core/vertex/_utils/_convert_common_call_params.py +0 -37
- mirascope/core/vertex/_utils/_convert_finish_reason_to_common_finish_reasons.py +0 -23
- mirascope/core/vertex/_utils/_convert_message_params.py +0 -171
- mirascope/core/vertex/_utils/_get_json_output.py +0 -36
- mirascope/core/vertex/_utils/_handle_stream.py +0 -33
- mirascope/core/vertex/_utils/_message_param_converter.py +0 -133
- mirascope/core/vertex/_utils/_setup_call.py +0 -160
- mirascope/core/vertex/call_params.py +0 -24
- mirascope/core/vertex/call_response.py +0 -206
- mirascope/core/vertex/call_response_chunk.py +0 -99
- mirascope/core/vertex/dynamic_config.py +0 -28
- mirascope/core/vertex/stream.py +0 -119
- mirascope/core/vertex/tool.py +0 -101
- mirascope/core/xai/__init__.py +0 -28
- mirascope/core/xai/_call.py +0 -67
- mirascope/core/xai/_utils/__init__.py +0 -5
- mirascope/core/xai/_utils/_setup_call.py +0 -113
- mirascope/core/xai/call_params.py +0 -10
- mirascope/core/xai/call_response.py +0 -16
- mirascope/core/xai/call_response_chunk.py +0 -14
- mirascope/core/xai/dynamic_config.py +0 -8
- mirascope/core/xai/py.typed +0 -0
- mirascope/core/xai/stream.py +0 -57
- mirascope/core/xai/tool.py +0 -13
- mirascope/experimental/graphs/__init__.py +0 -5
- mirascope/integrations/__init__.py +0 -16
- mirascope/integrations/_middleware_factory.py +0 -403
- mirascope/integrations/langfuse/__init__.py +0 -3
- mirascope/integrations/langfuse/_utils.py +0 -114
- mirascope/integrations/langfuse/_with_langfuse.py +0 -70
- mirascope/integrations/logfire/__init__.py +0 -3
- mirascope/integrations/logfire/_utils.py +0 -225
- mirascope/integrations/logfire/_with_logfire.py +0 -63
- mirascope/integrations/otel/__init__.py +0 -10
- mirascope/integrations/otel/_utils.py +0 -270
- mirascope/integrations/otel/_with_hyperdx.py +0 -60
- mirascope/integrations/otel/_with_otel.py +0 -59
- mirascope/integrations/tenacity.py +0 -14
- mirascope/llm/_call.py +0 -401
- mirascope/llm/_context.py +0 -384
- mirascope/llm/_override.py +0 -3639
- mirascope/llm/_protocols.py +0 -500
- mirascope/llm/_response_metaclass.py +0 -31
- mirascope/llm/call_response.py +0 -158
- mirascope/llm/call_response_chunk.py +0 -66
- mirascope/llm/stream.py +0 -162
- mirascope/llm/tool.py +0 -64
- mirascope/mcp/__init__.py +0 -7
- mirascope/mcp/_utils.py +0 -288
- mirascope/mcp/client.py +0 -167
- mirascope/mcp/server.py +0 -356
- mirascope/mcp/tools.py +0 -110
- mirascope/py.typed +0 -0
- mirascope/retries/__init__.py +0 -11
- mirascope/retries/fallback.py +0 -131
- mirascope/retries/tenacity.py +0 -50
- mirascope/tools/__init__.py +0 -37
- mirascope/tools/base.py +0 -98
- mirascope/tools/system/__init__.py +0 -0
- mirascope/tools/system/_docker_operation.py +0 -166
- mirascope/tools/system/_file_system.py +0 -267
- mirascope/tools/web/__init__.py +0 -0
- mirascope/tools/web/_duckduckgo.py +0 -111
- mirascope/tools/web/_httpx.py +0 -125
- mirascope/tools/web/_parse_url_content.py +0 -94
- mirascope/tools/web/_requests.py +0 -54
- mirascope/v0/__init__.py +0 -43
- mirascope/v0/anthropic.py +0 -54
- mirascope/v0/base/__init__.py +0 -12
- mirascope/v0/base/calls.py +0 -118
- mirascope/v0/base/extractors.py +0 -122
- mirascope/v0/base/ops_utils.py +0 -207
- mirascope/v0/base/prompts.py +0 -48
- mirascope/v0/base/types.py +0 -14
- mirascope/v0/base/utils.py +0 -21
- mirascope/v0/openai.py +0 -54
- mirascope-1.25.7.dist-info/METADATA +0 -169
- mirascope-1.25.7.dist-info/RECORD +0 -378
- {mirascope-1.25.7.dist-info → mirascope-2.0.0a0.dist-info}/WHEEL +0 -0
- {mirascope-1.25.7.dist-info → mirascope-2.0.0a0.dist-info}/licenses/LICENSE +0 -0
mirascope/core/base/types.py
DELETED
|
@@ -1,344 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
from typing import TYPE_CHECKING, Annotated, Literal, TypeAlias
|
|
4
|
-
|
|
5
|
-
from pydantic import BaseModel, ConfigDict, Field
|
|
6
|
-
|
|
7
|
-
if TYPE_CHECKING:
|
|
8
|
-
from PIL import Image
|
|
9
|
-
from pydub import AudioSegment
|
|
10
|
-
|
|
11
|
-
has_pil_module: bool
|
|
12
|
-
has_pydub_module: bool
|
|
13
|
-
else:
|
|
14
|
-
try:
|
|
15
|
-
from PIL import Image # pyright: ignore [reportAssignmentType]
|
|
16
|
-
|
|
17
|
-
has_pil_module = True
|
|
18
|
-
except ImportError: # pragma: no cover
|
|
19
|
-
has_pil_module = False
|
|
20
|
-
|
|
21
|
-
class Image:
|
|
22
|
-
class Image:
|
|
23
|
-
def tobytes(self) -> bytes: ...
|
|
24
|
-
|
|
25
|
-
try:
|
|
26
|
-
from pydub import AudioSegment # pyright: ignore [reportAssignmentType]
|
|
27
|
-
|
|
28
|
-
has_pydub_module = True
|
|
29
|
-
except ImportError: # pragma: no cover
|
|
30
|
-
has_pydub_module = False
|
|
31
|
-
|
|
32
|
-
from io import FileIO
|
|
33
|
-
|
|
34
|
-
class AudioSegment:
|
|
35
|
-
def set_frame_rate(self, rate: int) -> AudioSegment: ...
|
|
36
|
-
def set_channels(self, channels: int) -> AudioSegment: ...
|
|
37
|
-
def set_sample_width(self, sample_width: int) -> AudioSegment: ...
|
|
38
|
-
def export(self, format: str) -> FileIO: ...
|
|
39
|
-
def read(self) -> bytes: ...
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
FinishReason: TypeAlias = Literal["stop", "length", "tool_calls", "content_filter"]
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
class Usage(BaseModel):
|
|
46
|
-
input_tokens: int
|
|
47
|
-
"""Number of tokens in the prompt."""
|
|
48
|
-
|
|
49
|
-
cached_tokens: int
|
|
50
|
-
"""Number of tokens used that were previously cached (and thus cheaper)."""
|
|
51
|
-
|
|
52
|
-
output_tokens: int
|
|
53
|
-
"""Number of tokens in the generated output."""
|
|
54
|
-
|
|
55
|
-
total_tokens: int
|
|
56
|
-
"""Total number of tokens used in the request (prompt + completion)."""
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
JsonableType: TypeAlias = (
|
|
60
|
-
str
|
|
61
|
-
| int
|
|
62
|
-
| float
|
|
63
|
-
| bool
|
|
64
|
-
| bytes
|
|
65
|
-
| list["JsonableType"]
|
|
66
|
-
| set["JsonableType"]
|
|
67
|
-
| tuple["JsonableType", ...]
|
|
68
|
-
| dict[str, "JsonableType"]
|
|
69
|
-
| BaseModel
|
|
70
|
-
)
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
class VideoMetadata(BaseModel):
|
|
74
|
-
"""Metadata for a video for cost calculation"""
|
|
75
|
-
|
|
76
|
-
duration_seconds: Annotated[
|
|
77
|
-
float,
|
|
78
|
-
Field(description="Duration of the video in seconds"),
|
|
79
|
-
]
|
|
80
|
-
|
|
81
|
-
with_audio: Annotated[
|
|
82
|
-
bool | None,
|
|
83
|
-
Field(
|
|
84
|
-
default=False,
|
|
85
|
-
description="Whether the video includes audio that should be processed",
|
|
86
|
-
),
|
|
87
|
-
] = False
|
|
88
|
-
|
|
89
|
-
tokens: Annotated[
|
|
90
|
-
int | None,
|
|
91
|
-
Field(default=None, description="Precalculated token count for this video"),
|
|
92
|
-
] = None
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
class AudioMetadata(BaseModel):
|
|
96
|
-
"""Metadata for an audio file for cost calculation"""
|
|
97
|
-
|
|
98
|
-
duration_seconds: Annotated[
|
|
99
|
-
float,
|
|
100
|
-
Field(description="Duration of the audio in seconds"),
|
|
101
|
-
]
|
|
102
|
-
|
|
103
|
-
with_timestamps: Annotated[
|
|
104
|
-
bool | None,
|
|
105
|
-
Field(default=False, description="Whether timestamps should be included"),
|
|
106
|
-
] = False
|
|
107
|
-
|
|
108
|
-
tokens: Annotated[
|
|
109
|
-
int | None,
|
|
110
|
-
Field(default=None, description="Precalculated token count for this audio"),
|
|
111
|
-
] = None
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
class ImageMetadata(BaseModel):
|
|
115
|
-
"""Metadata for an image for cost calculation"""
|
|
116
|
-
|
|
117
|
-
width: Annotated[
|
|
118
|
-
int,
|
|
119
|
-
Field(description="Width of the image in pixels"),
|
|
120
|
-
]
|
|
121
|
-
|
|
122
|
-
height: Annotated[
|
|
123
|
-
int,
|
|
124
|
-
Field(description="Height of the image in pixels"),
|
|
125
|
-
]
|
|
126
|
-
|
|
127
|
-
tokens: Annotated[
|
|
128
|
-
int | None,
|
|
129
|
-
Field(default=None, description="Precalculated token count for this image"),
|
|
130
|
-
] = None
|
|
131
|
-
|
|
132
|
-
detail: Annotated[
|
|
133
|
-
str | None,
|
|
134
|
-
Field(default=None, description="Detail level of the image"),
|
|
135
|
-
] = None
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
class GoogleMetadata(BaseModel):
|
|
139
|
-
"""Google API specific metadata for cost calculation"""
|
|
140
|
-
|
|
141
|
-
use_vertex_ai: Annotated[
|
|
142
|
-
bool | None,
|
|
143
|
-
Field(
|
|
144
|
-
default=False,
|
|
145
|
-
description="Whether to use Vertex AI pricing (vs. direct Gemini API)",
|
|
146
|
-
),
|
|
147
|
-
] = False
|
|
148
|
-
|
|
149
|
-
grounding_requests: Annotated[
|
|
150
|
-
int | None,
|
|
151
|
-
Field(default=None, description="Number of Google Search grounding requests"),
|
|
152
|
-
] = None
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
class PDFImageMetadata(BaseModel):
|
|
156
|
-
"""Metadata for an image extracted from a PDF page"""
|
|
157
|
-
|
|
158
|
-
width: Annotated[
|
|
159
|
-
int,
|
|
160
|
-
Field(description="Width of the image in pixels"),
|
|
161
|
-
]
|
|
162
|
-
|
|
163
|
-
height: Annotated[
|
|
164
|
-
int,
|
|
165
|
-
Field(description="Height of the image in pixels"),
|
|
166
|
-
]
|
|
167
|
-
|
|
168
|
-
tokens: Annotated[
|
|
169
|
-
int | None,
|
|
170
|
-
Field(default=None, description="Precalculated token count for this image"),
|
|
171
|
-
] = None
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
class PDFMetadata(BaseModel):
|
|
175
|
-
"""Metadata specific to PDF documents for cost calculation"""
|
|
176
|
-
|
|
177
|
-
page_count: Annotated[
|
|
178
|
-
int | None,
|
|
179
|
-
Field(default=None, description="Number of pages in the PDF"),
|
|
180
|
-
] = None
|
|
181
|
-
|
|
182
|
-
text_tokens: Annotated[
|
|
183
|
-
int | None,
|
|
184
|
-
Field(
|
|
185
|
-
default=None, description="Number of tokens from text content in the PDF"
|
|
186
|
-
),
|
|
187
|
-
] = None
|
|
188
|
-
|
|
189
|
-
images: Annotated[
|
|
190
|
-
list[PDFImageMetadata] | None,
|
|
191
|
-
Field(
|
|
192
|
-
default=None,
|
|
193
|
-
description="List of images extracted from PDF with width and height information",
|
|
194
|
-
),
|
|
195
|
-
] = None
|
|
196
|
-
|
|
197
|
-
cached: Annotated[
|
|
198
|
-
bool | None,
|
|
199
|
-
Field(
|
|
200
|
-
default=None,
|
|
201
|
-
description="Whether this PDF was cached for reduced token costs",
|
|
202
|
-
),
|
|
203
|
-
] = None
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
class CostMetadata(BaseModel):
|
|
207
|
-
"""Metadata required for accurate LLM API cost calculation across all providers."""
|
|
208
|
-
|
|
209
|
-
model_config = ConfigDict(arbitrary_types_allowed=True)
|
|
210
|
-
|
|
211
|
-
# Common fields
|
|
212
|
-
input_tokens: Annotated[
|
|
213
|
-
int | float | None,
|
|
214
|
-
Field(default=None, description="Input tokens"),
|
|
215
|
-
] = None
|
|
216
|
-
output_tokens: Annotated[
|
|
217
|
-
int | float | None,
|
|
218
|
-
Field(default=None, description="Output tokens"),
|
|
219
|
-
] = None
|
|
220
|
-
cached_tokens: Annotated[
|
|
221
|
-
int | float | None,
|
|
222
|
-
Field(default=None, description="Cached tokens"),
|
|
223
|
-
] = None
|
|
224
|
-
streaming_mode: Annotated[
|
|
225
|
-
bool | None,
|
|
226
|
-
Field(default=None, description="Whether streaming API was used"),
|
|
227
|
-
] = None
|
|
228
|
-
cached_response: Annotated[
|
|
229
|
-
bool | None,
|
|
230
|
-
Field(default=None, description="Whether response was served from cache"),
|
|
231
|
-
] = None
|
|
232
|
-
context_length: Annotated[
|
|
233
|
-
int | None,
|
|
234
|
-
Field(default=None, description="Total context window length in tokens"),
|
|
235
|
-
] = None
|
|
236
|
-
realtime_mode: Annotated[
|
|
237
|
-
bool | None,
|
|
238
|
-
Field(default=None, description="Whether realtime processing was used"),
|
|
239
|
-
] = None
|
|
240
|
-
region: Annotated[
|
|
241
|
-
str | None,
|
|
242
|
-
Field(
|
|
243
|
-
default=None,
|
|
244
|
-
description="Cloud region for request (affects pricing in some providers)",
|
|
245
|
-
),
|
|
246
|
-
] = None
|
|
247
|
-
tier: Annotated[
|
|
248
|
-
str | None,
|
|
249
|
-
Field(default=None, description="Service tier (e.g. standard, enterprise)"),
|
|
250
|
-
] = None
|
|
251
|
-
batch_mode: Annotated[
|
|
252
|
-
bool | None,
|
|
253
|
-
Field(
|
|
254
|
-
default=False,
|
|
255
|
-
description="Whether batch mode is used (discount usually applies)",
|
|
256
|
-
),
|
|
257
|
-
] = None
|
|
258
|
-
|
|
259
|
-
# Media-related fields
|
|
260
|
-
images: Annotated[
|
|
261
|
-
list[ImageMetadata] | None,
|
|
262
|
-
Field(default=None, description="List of images with their metadata"),
|
|
263
|
-
] = None
|
|
264
|
-
videos: Annotated[
|
|
265
|
-
list[VideoMetadata] | None,
|
|
266
|
-
Field(default=None, description="List of videos with their metadata"),
|
|
267
|
-
] = None
|
|
268
|
-
audio: Annotated[
|
|
269
|
-
list[AudioMetadata] | None,
|
|
270
|
-
Field(default=None, description="List of audio clips with their metadata"),
|
|
271
|
-
] = None
|
|
272
|
-
audio_output: Annotated[
|
|
273
|
-
list[AudioMetadata] | None,
|
|
274
|
-
Field(
|
|
275
|
-
default=None, description="List of audio output clips with their metadata"
|
|
276
|
-
),
|
|
277
|
-
] = None
|
|
278
|
-
# PDF-related fields
|
|
279
|
-
pdf: Annotated[
|
|
280
|
-
PDFMetadata | None,
|
|
281
|
-
Field(default=None, description="Metadata for PDF documents"),
|
|
282
|
-
] = None
|
|
283
|
-
|
|
284
|
-
# Context caching related fields
|
|
285
|
-
context_cache_tokens: Annotated[
|
|
286
|
-
int | None,
|
|
287
|
-
Field(default=None, description="Number of cached context tokens"),
|
|
288
|
-
] = None
|
|
289
|
-
context_cache_hours: Annotated[
|
|
290
|
-
float | None,
|
|
291
|
-
Field(default=None, description="Number of hours to keep context in cache"),
|
|
292
|
-
] = None
|
|
293
|
-
|
|
294
|
-
# Provider-specific fields
|
|
295
|
-
google: Annotated[
|
|
296
|
-
GoogleMetadata | None,
|
|
297
|
-
Field(
|
|
298
|
-
default=None,
|
|
299
|
-
description="Google/Gemini-specific metadata for cost calculation",
|
|
300
|
-
),
|
|
301
|
-
] = None
|
|
302
|
-
realtime_tokens: Annotated[
|
|
303
|
-
int | None,
|
|
304
|
-
Field(
|
|
305
|
-
default=None,
|
|
306
|
-
description="[OpenAI] Number of realtime tokens in the request",
|
|
307
|
-
),
|
|
308
|
-
] = None
|
|
309
|
-
|
|
310
|
-
# Anthropic-specific fields
|
|
311
|
-
cache_write: Annotated[
|
|
312
|
-
bool | None,
|
|
313
|
-
Field(default=None, description="[Anthropic] Whether cache write occurred"),
|
|
314
|
-
] = None
|
|
315
|
-
tool_use_tokens: Annotated[
|
|
316
|
-
int | None,
|
|
317
|
-
Field(default=None, description="[Anthropic] Tokens used for tool calls"),
|
|
318
|
-
] = None
|
|
319
|
-
|
|
320
|
-
# If the provider happens to provide the cost, we should just use that.
|
|
321
|
-
cost: Annotated[
|
|
322
|
-
float | None,
|
|
323
|
-
Field(default=None, description="Cost provided by the API response"),
|
|
324
|
-
] = None
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
Provider: TypeAlias = Literal[
|
|
328
|
-
"anthropic",
|
|
329
|
-
"azure",
|
|
330
|
-
"bedrock",
|
|
331
|
-
"cohere",
|
|
332
|
-
"gemini",
|
|
333
|
-
"google",
|
|
334
|
-
"groq",
|
|
335
|
-
"litellm",
|
|
336
|
-
"mistral",
|
|
337
|
-
"openai",
|
|
338
|
-
"vertex",
|
|
339
|
-
"xai",
|
|
340
|
-
]
|
|
341
|
-
LocalProvider: TypeAlias = Literal[
|
|
342
|
-
"ollama",
|
|
343
|
-
"vllm",
|
|
344
|
-
]
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
from typing import TypeAlias
|
|
2
|
-
|
|
3
|
-
from .. import BaseMessageParam
|
|
4
|
-
from ._call import bedrock_call
|
|
5
|
-
from ._call import bedrock_call as call
|
|
6
|
-
from ._types import (
|
|
7
|
-
AssistantMessageTypeDef,
|
|
8
|
-
InternalBedrockMessageParam,
|
|
9
|
-
UserMessageTypeDef,
|
|
10
|
-
)
|
|
11
|
-
from .call_params import BedrockCallParams
|
|
12
|
-
from .call_response import BedrockCallResponse
|
|
13
|
-
from .call_response_chunk import BedrockCallResponseChunk
|
|
14
|
-
from .dynamic_config import AsyncBedrockDynamicConfig, BedrockDynamicConfig
|
|
15
|
-
from .stream import BedrockStream
|
|
16
|
-
from .tool import BedrockTool, BedrockToolConfig
|
|
17
|
-
|
|
18
|
-
BedrockMessageParam: TypeAlias = InternalBedrockMessageParam | BaseMessageParam
|
|
19
|
-
|
|
20
|
-
__all__ = [
|
|
21
|
-
"AssistantMessageTypeDef",
|
|
22
|
-
"AsyncBedrockDynamicConfig",
|
|
23
|
-
"BedrockCallParams",
|
|
24
|
-
"BedrockCallResponse",
|
|
25
|
-
"BedrockCallResponseChunk",
|
|
26
|
-
"BedrockDynamicConfig",
|
|
27
|
-
"BedrockMessageParam",
|
|
28
|
-
"BedrockStream",
|
|
29
|
-
"BedrockTool",
|
|
30
|
-
"BedrockToolConfig",
|
|
31
|
-
"UserMessageTypeDef",
|
|
32
|
-
"bedrock_call",
|
|
33
|
-
"call",
|
|
34
|
-
]
|
mirascope/core/bedrock/_call.py
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
"""The `bedrock_call` decorator for functions as LLM calls."""
|
|
2
|
-
|
|
3
|
-
from ..base import call_factory
|
|
4
|
-
from ._utils import (
|
|
5
|
-
get_json_output,
|
|
6
|
-
handle_stream,
|
|
7
|
-
handle_stream_async,
|
|
8
|
-
setup_call,
|
|
9
|
-
)
|
|
10
|
-
from .call_params import BedrockCallParams
|
|
11
|
-
from .call_response import BedrockCallResponse
|
|
12
|
-
from .call_response_chunk import BedrockCallResponseChunk
|
|
13
|
-
from .stream import BedrockStream
|
|
14
|
-
from .tool import BedrockTool
|
|
15
|
-
|
|
16
|
-
bedrock_call = call_factory(
|
|
17
|
-
TCallResponse=BedrockCallResponse,
|
|
18
|
-
TCallResponseChunk=BedrockCallResponseChunk,
|
|
19
|
-
TToolType=BedrockTool,
|
|
20
|
-
TStream=BedrockStream,
|
|
21
|
-
default_call_params=BedrockCallParams(),
|
|
22
|
-
setup_call=setup_call,
|
|
23
|
-
get_json_output=get_json_output,
|
|
24
|
-
handle_stream=handle_stream,
|
|
25
|
-
handle_stream_async=handle_stream_async,
|
|
26
|
-
)
|
|
27
|
-
"""A decorator for calling the Bedrock API with a typed function.
|
|
28
|
-
|
|
29
|
-
usage docs: learn/calls.md
|
|
30
|
-
|
|
31
|
-
This decorator is used to wrap a typed function that calls the Bedrock API. It parses
|
|
32
|
-
the prompt template of the wrapped function as the messages array and templates the input
|
|
33
|
-
arguments for the function into each message's template.
|
|
34
|
-
|
|
35
|
-
Example:
|
|
36
|
-
|
|
37
|
-
```python
|
|
38
|
-
from mirascope.core import prompt_template
|
|
39
|
-
from mirascope.core.bedrock import bedrock_call
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
@bedrock_call("anthropic.claude-3-haiku-20240307-v1:0")
|
|
43
|
-
@prompt_template("Recommend a {genre} book")
|
|
44
|
-
def recommend_book(genre: str):
|
|
45
|
-
...
|
|
46
|
-
|
|
47
|
-
response = recommend_book("fantasy")
|
|
48
|
-
print(response.content)
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
Args:
|
|
52
|
-
model (str): The Bedrock model to use in the API call.
|
|
53
|
-
stream (bool): Whether to stream the response from the API call.
|
|
54
|
-
tools (list[BaseTool | Callable]): The tools to use in the Bedrock API call.
|
|
55
|
-
response_model (BaseModel | BaseType): The response model into which the response
|
|
56
|
-
should be structured.
|
|
57
|
-
output_parser (Callable[[BedrockCallResponse | ResponseModelT], Any]): A function for
|
|
58
|
-
parsing the call response whose value will be returned in place of the original
|
|
59
|
-
call response.
|
|
60
|
-
json_mode (bool): Whether to use JSON Mode.
|
|
61
|
-
client (object): An optional custom client to use in place of the default client.
|
|
62
|
-
call_params (BedrockCallParams): The `BedrockCallParams` call parameters to use in the
|
|
63
|
-
API call.
|
|
64
|
-
|
|
65
|
-
Returns:
|
|
66
|
-
decorator (Callable): The decorator for turning a typed function into an Bedrock API
|
|
67
|
-
call.
|
|
68
|
-
"""
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"""This module contains the type definition for the Bedrock call keyword arguments."""
|
|
2
|
-
|
|
3
|
-
from collections.abc import Sequence
|
|
4
|
-
|
|
5
|
-
from ..base import BaseCallKwargs
|
|
6
|
-
from ._types import InternalBedrockMessageParam, ToolTypeDef
|
|
7
|
-
from .call_params import BedrockCallParams
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class BedrockCallKwargs(BedrockCallParams, BaseCallKwargs[ToolTypeDef]):
|
|
11
|
-
modelId: str
|
|
12
|
-
messages: Sequence[InternalBedrockMessageParam]
|
mirascope/core/bedrock/_types.py
DELETED
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
from typing import Literal, TypeAlias
|
|
2
|
-
|
|
3
|
-
from mypy_boto3_bedrock_runtime.literals import (
|
|
4
|
-
ConversationRoleType as SyncConversationRoleType,
|
|
5
|
-
)
|
|
6
|
-
from mypy_boto3_bedrock_runtime.type_defs import (
|
|
7
|
-
ContentBlockOutputTypeDef as SyncContentBlockOutputTypeDef,
|
|
8
|
-
)
|
|
9
|
-
from mypy_boto3_bedrock_runtime.type_defs import (
|
|
10
|
-
ConverseStreamOutputTypeDef,
|
|
11
|
-
ResponseMetadataTypeDef,
|
|
12
|
-
ToolResultBlockOutputTypeDef,
|
|
13
|
-
ToolUseBlockOutputTypeDef,
|
|
14
|
-
)
|
|
15
|
-
from mypy_boto3_bedrock_runtime.type_defs import (
|
|
16
|
-
TokenUsageTypeDef as SyncTokenUsageTypeDef,
|
|
17
|
-
)
|
|
18
|
-
from mypy_boto3_bedrock_runtime.type_defs import (
|
|
19
|
-
ToolTypeDef as SyncToolTypeDef,
|
|
20
|
-
)
|
|
21
|
-
from types_aiobotocore_bedrock_runtime.literals import (
|
|
22
|
-
ConversationRoleType as AsyncConversationRoleType,
|
|
23
|
-
)
|
|
24
|
-
from types_aiobotocore_bedrock_runtime.type_defs import (
|
|
25
|
-
ContentBlockOutputTypeDef as AsyncContentBlockOutputTypeDef,
|
|
26
|
-
)
|
|
27
|
-
from types_aiobotocore_bedrock_runtime.type_defs import (
|
|
28
|
-
ConverseStreamOutputTypeDef as AsyncConverseStreamOutputTypeDef,
|
|
29
|
-
)
|
|
30
|
-
from types_aiobotocore_bedrock_runtime.type_defs import (
|
|
31
|
-
ResponseMetadataTypeDef as AsyncResponseMetadataTypeDef,
|
|
32
|
-
)
|
|
33
|
-
from types_aiobotocore_bedrock_runtime.type_defs import (
|
|
34
|
-
TokenUsageTypeDef as AsyncTokenUsageTypeDef,
|
|
35
|
-
)
|
|
36
|
-
from types_aiobotocore_bedrock_runtime.type_defs import (
|
|
37
|
-
ToolTypeDef as AsyncToolTypeDef,
|
|
38
|
-
)
|
|
39
|
-
from types_aiobotocore_bedrock_runtime.type_defs import (
|
|
40
|
-
ToolUseBlockOutputTypeDef as AsyncToolUseBlockOutputTypeDef,
|
|
41
|
-
)
|
|
42
|
-
from typing_extensions import TypedDict
|
|
43
|
-
|
|
44
|
-
TokenUsageTypeDef: TypeAlias = SyncTokenUsageTypeDef | AsyncTokenUsageTypeDef
|
|
45
|
-
ConversationRoleType: TypeAlias = SyncConversationRoleType | AsyncConversationRoleType
|
|
46
|
-
ContentBlockOutputTypeDef: TypeAlias = (
|
|
47
|
-
SyncContentBlockOutputTypeDef | AsyncContentBlockOutputTypeDef
|
|
48
|
-
)
|
|
49
|
-
ToolTypeDef: TypeAlias = SyncToolTypeDef | AsyncToolTypeDef
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
class ToolUseBlockContentTypeDef(TypedDict):
|
|
53
|
-
toolUse: ToolUseBlockOutputTypeDef | AsyncToolUseBlockOutputTypeDef
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
class ToolUseBlockMessageTypeDef(TypedDict):
|
|
57
|
-
role: ConversationRoleType
|
|
58
|
-
content: list[ToolUseBlockContentTypeDef]
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
class ToolResultBlockContentTypeDef(TypedDict):
|
|
62
|
-
toolResult: ToolResultBlockOutputTypeDef
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
class ToolResultBlockMessageTypeDef(TypedDict):
|
|
66
|
-
role: ConversationRoleType
|
|
67
|
-
content: list[ToolResultBlockContentTypeDef]
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
class AsyncMessageTypeDef(TypedDict):
|
|
71
|
-
role: AsyncConversationRoleType
|
|
72
|
-
content: list[AsyncContentBlockOutputTypeDef]
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
class SyncMessageTypeDef(TypedDict):
|
|
76
|
-
role: SyncConversationRoleType
|
|
77
|
-
content: list[SyncContentBlockOutputTypeDef]
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
MessageTypeDef: TypeAlias = SyncMessageTypeDef | AsyncMessageTypeDef
|
|
81
|
-
|
|
82
|
-
InternalBedrockMessageParam: TypeAlias = (
|
|
83
|
-
MessageTypeDef | ToolResultBlockMessageTypeDef | ToolUseBlockMessageTypeDef
|
|
84
|
-
)
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
class UserMessageTypeDef(TypedDict):
|
|
88
|
-
role: Literal["user"]
|
|
89
|
-
content: list[SyncContentBlockOutputTypeDef]
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
class AssistantMessageTypeDef(TypedDict):
|
|
93
|
-
role: ConversationRoleType
|
|
94
|
-
content: list[SyncContentBlockOutputTypeDef]
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
class StreamOutputChunk(ConverseStreamOutputTypeDef):
|
|
98
|
-
responseMetadata: ResponseMetadataTypeDef
|
|
99
|
-
model: str
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
class AsyncStreamOutputChunk(AsyncConverseStreamOutputTypeDef):
|
|
103
|
-
responseMetadata: AsyncResponseMetadataTypeDef
|
|
104
|
-
model: str
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"""Bedrock utilities for decorator factories."""
|
|
2
|
-
|
|
3
|
-
from ._convert_message_params import convert_message_params
|
|
4
|
-
from ._get_json_output import get_json_output
|
|
5
|
-
from ._handle_stream import handle_stream, handle_stream_async
|
|
6
|
-
from ._setup_call import setup_call
|
|
7
|
-
|
|
8
|
-
__all__ = [
|
|
9
|
-
"convert_message_params",
|
|
10
|
-
"get_json_output",
|
|
11
|
-
"handle_stream",
|
|
12
|
-
"handle_stream_async",
|
|
13
|
-
"setup_call",
|
|
14
|
-
]
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
from typing import cast
|
|
2
|
-
|
|
3
|
-
from mypy_boto3_bedrock_runtime.type_defs import (
|
|
4
|
-
InferenceConfigurationTypeDef,
|
|
5
|
-
)
|
|
6
|
-
|
|
7
|
-
from ...base.call_params import CommonCallParams
|
|
8
|
-
from ..call_params import BedrockCallParams
|
|
9
|
-
|
|
10
|
-
BEDROCK_PARAM_MAPPING = {
|
|
11
|
-
"temperature": "temperature",
|
|
12
|
-
"max_tokens": "maxTokens",
|
|
13
|
-
"top_p": "topP",
|
|
14
|
-
"stop": "stopSequences",
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
def convert_common_call_params(common_params: CommonCallParams) -> BedrockCallParams:
|
|
19
|
-
"""Convert CommonCallParams to Bedrock parameters."""
|
|
20
|
-
inference_config = {}
|
|
21
|
-
|
|
22
|
-
for key, value in common_params.items():
|
|
23
|
-
if key not in BEDROCK_PARAM_MAPPING or value is None:
|
|
24
|
-
continue
|
|
25
|
-
|
|
26
|
-
if key == "stop":
|
|
27
|
-
inference_config["stopSequences"] = (
|
|
28
|
-
[value] if isinstance(value, str) else value
|
|
29
|
-
)
|
|
30
|
-
else:
|
|
31
|
-
inference_config[BEDROCK_PARAM_MAPPING[key]] = value
|
|
32
|
-
|
|
33
|
-
if not inference_config:
|
|
34
|
-
return cast(BedrockCallParams, {})
|
|
35
|
-
|
|
36
|
-
return cast(
|
|
37
|
-
BedrockCallParams,
|
|
38
|
-
{"inferenceConfig": cast(InferenceConfigurationTypeDef, inference_config)},
|
|
39
|
-
)
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
from mirascope.core.base._utils._convert_provider_finish_reason_to_finish_reason import (
|
|
2
|
-
FinishReasonMappingValue,
|
|
3
|
-
_convert_finish_reasons_to_common_finish_reasons_from_mapping,
|
|
4
|
-
)
|
|
5
|
-
from mirascope.core.base.types import FinishReason
|
|
6
|
-
|
|
7
|
-
_FinishReasonMapping: dict[str, FinishReasonMappingValue] = {
|
|
8
|
-
"content_filtered": "content_filter",
|
|
9
|
-
"end_turn": "stop",
|
|
10
|
-
"guardrail_intervened": "content_filter",
|
|
11
|
-
"max_tokens": "length",
|
|
12
|
-
"stop_sequence": "stop",
|
|
13
|
-
"tool_use": "tool_calls",
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
def _convert_finish_reasons_to_common_finish_reasons(
|
|
18
|
-
finish_reasons: list[str],
|
|
19
|
-
) -> list[FinishReason] | None:
|
|
20
|
-
"""Provider-agnostic finish reasons."""
|
|
21
|
-
return _convert_finish_reasons_to_common_finish_reasons_from_mapping(
|
|
22
|
-
finish_reasons, _FinishReasonMapping
|
|
23
|
-
)
|