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
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"""The Mirascope Cohere Module."""
|
|
2
|
-
|
|
3
|
-
from typing import TypeAlias
|
|
4
|
-
|
|
5
|
-
from cohere.types import ChatMessage, ToolResult
|
|
6
|
-
|
|
7
|
-
from ..base import BaseMessageParam
|
|
8
|
-
from ._call import cohere_call
|
|
9
|
-
from ._call import cohere_call as call
|
|
10
|
-
from .call_params import CohereCallParams
|
|
11
|
-
from .call_response import CohereCallResponse
|
|
12
|
-
from .call_response_chunk import CohereCallResponseChunk
|
|
13
|
-
from .dynamic_config import AsyncCohereDynamicConfig, CohereDynamicConfig
|
|
14
|
-
from .stream import CohereStream
|
|
15
|
-
from .tool import CohereTool
|
|
16
|
-
|
|
17
|
-
CohereMessageParam: TypeAlias = ChatMessage | ToolResult | BaseMessageParam
|
|
18
|
-
|
|
19
|
-
__all__ = [
|
|
20
|
-
"AsyncCohereDynamicConfig",
|
|
21
|
-
"CohereCallParams",
|
|
22
|
-
"CohereCallResponse",
|
|
23
|
-
"CohereCallResponseChunk",
|
|
24
|
-
"CohereDynamicConfig",
|
|
25
|
-
"CohereMessageParam",
|
|
26
|
-
"CohereStream",
|
|
27
|
-
"CohereTool",
|
|
28
|
-
"call",
|
|
29
|
-
"cohere_call",
|
|
30
|
-
]
|
mirascope/core/cohere/_call.py
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
"""The `cohere_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 CohereCallParams
|
|
11
|
-
from .call_response import CohereCallResponse
|
|
12
|
-
from .call_response_chunk import CohereCallResponseChunk
|
|
13
|
-
from .stream import CohereStream
|
|
14
|
-
from .tool import CohereTool
|
|
15
|
-
|
|
16
|
-
cohere_call = call_factory(
|
|
17
|
-
TCallResponse=CohereCallResponse,
|
|
18
|
-
TCallResponseChunk=CohereCallResponseChunk,
|
|
19
|
-
TToolType=CohereTool,
|
|
20
|
-
TStream=CohereStream,
|
|
21
|
-
default_call_params=CohereCallParams(),
|
|
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 Cohere 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 Cohere 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.cohere import cohere_call
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
@cohere_call("command-r-plus")
|
|
43
|
-
def recommend_book(genre: str) -> str:
|
|
44
|
-
return f"Recommend a {genre} book"
|
|
45
|
-
|
|
46
|
-
response = recommend_book("fantasy")
|
|
47
|
-
print(response.content)
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
Args:
|
|
51
|
-
model (str): The Cohere model to use in the API call.
|
|
52
|
-
stream (bool): Whether to stream the response from the API call.
|
|
53
|
-
tools (list[BaseTool | Callable]): The tools to use in the Cohere API call.
|
|
54
|
-
response_model (BaseModel | BaseType): The response model into which the response
|
|
55
|
-
should be structured.
|
|
56
|
-
output_parser (Callable[[CohereCallResponse | ResponseModelT], Any]): A function for
|
|
57
|
-
parsing the call response whose value will be returned in place of the original
|
|
58
|
-
call response.
|
|
59
|
-
json_mode (bool): Whether to use JSON Mode.
|
|
60
|
-
client (object): An optional custom client to use in place of the default client.
|
|
61
|
-
call_params (CohereCallParams): The `CohereCallParams` call parameters to use in the
|
|
62
|
-
API call.
|
|
63
|
-
|
|
64
|
-
Returns:
|
|
65
|
-
decorator (Callable): The decorator for turning a typed function into a Cohere API
|
|
66
|
-
call.
|
|
67
|
-
"""
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"""This module contains the type definition for the Cohere call keyword arguments."""
|
|
2
|
-
|
|
3
|
-
from cohere.types import Tool
|
|
4
|
-
|
|
5
|
-
from ..base import BaseCallKwargs
|
|
6
|
-
from .call_params import CohereCallParams
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class CohereCallKwargs(CohereCallParams, BaseCallKwargs[Tool]):
|
|
10
|
-
model: str
|
|
11
|
-
message: str
|
mirascope/core/cohere/_types.py
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
try:
|
|
2
|
-
from cohere import StreamEndStreamedChatResponse, StreamStartStreamedChatResponse
|
|
3
|
-
from cohere.types import (
|
|
4
|
-
TextGenerationStreamedChatResponse,
|
|
5
|
-
ToolCallsGenerationStreamedChatResponse,
|
|
6
|
-
)
|
|
7
|
-
except ImportError: # pragma: no cover
|
|
8
|
-
# When cohere version is less than 5.11.0
|
|
9
|
-
from cohere import (
|
|
10
|
-
StreamedChatResponse_StreamEnd as StreamEndStreamedChatResponse, # pyright: ignore [reportAttributeAccessIssue] # noqa: F401
|
|
11
|
-
)
|
|
12
|
-
from cohere import (
|
|
13
|
-
StreamedChatResponse_StreamStart as StreamStartStreamedChatResponse, # pyright: ignore [reportAttributeAccessIssue] # noqa: F401
|
|
14
|
-
)
|
|
15
|
-
from cohere.types import (
|
|
16
|
-
StreamedChatResponse_TextGeneration as TextGenerationStreamedChatResponse, # pyright: ignore [reportAttributeAccessIssue] # noqa: F401
|
|
17
|
-
)
|
|
18
|
-
from cohere.types import (
|
|
19
|
-
StreamedChatResponse_ToolCallsGeneration as ToolCallsGenerationStreamedChatResponse, # pyright: ignore [reportAttributeAccessIssue] # noqa: F401
|
|
20
|
-
)
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"""Cohere 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,26 +0,0 @@
|
|
|
1
|
-
from typing import cast
|
|
2
|
-
|
|
3
|
-
from ...base.call_params import CommonCallParams
|
|
4
|
-
from ..call_params import CohereCallParams
|
|
5
|
-
|
|
6
|
-
COHERE_PARAM_MAPPING = {
|
|
7
|
-
"temperature": "temperature",
|
|
8
|
-
"max_tokens": "max_tokens",
|
|
9
|
-
"top_p": "p",
|
|
10
|
-
"frequency_penalty": "frequency_penalty",
|
|
11
|
-
"presence_penalty": "presence_penalty",
|
|
12
|
-
"seed": "seed",
|
|
13
|
-
"stop": "stop_sequences",
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
def convert_common_call_params(common_params: CommonCallParams) -> CohereCallParams:
|
|
18
|
-
"""Convert CommonCallParams to Cohere parameters."""
|
|
19
|
-
return cast(
|
|
20
|
-
CohereCallParams,
|
|
21
|
-
{
|
|
22
|
-
COHERE_PARAM_MAPPING[key]: [value] if isinstance(value, str) else value
|
|
23
|
-
for key, value in common_params.items()
|
|
24
|
-
if key in COHERE_PARAM_MAPPING and COHERE_PARAM_MAPPING[key] is not None
|
|
25
|
-
},
|
|
26
|
-
)
|
|
@@ -1,24 +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
|
-
"COMPLETE": "stop",
|
|
9
|
-
"STOP_SEQUENCE": "stop",
|
|
10
|
-
"ERROR": "stop",
|
|
11
|
-
"ERROR_TOXIC": "content_filter",
|
|
12
|
-
"ERROR_LIMIT": "length",
|
|
13
|
-
"USER_CANCEL": "stop",
|
|
14
|
-
"MAX_TOKENS": "length",
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
def _convert_finish_reasons_to_common_finish_reasons(
|
|
19
|
-
finish_reasons: list[str] | None,
|
|
20
|
-
) -> list[FinishReason] | None:
|
|
21
|
-
"""Provider-agnostic finish reasons."""
|
|
22
|
-
return _convert_finish_reasons_to_common_finish_reasons_from_mapping(
|
|
23
|
-
finish_reasons, _FinishReasonMapping
|
|
24
|
-
)
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"""Utility for converting `BaseMessageParam` to `ChatCompletionMessageParam`"""
|
|
2
|
-
|
|
3
|
-
from cohere.types import ChatMessage
|
|
4
|
-
|
|
5
|
-
from ...base import BaseMessageParam
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
def convert_message_params(
|
|
9
|
-
message_params: list[BaseMessageParam | ChatMessage],
|
|
10
|
-
) -> list[ChatMessage]:
|
|
11
|
-
converted_message_params = []
|
|
12
|
-
for message_param in message_params:
|
|
13
|
-
if isinstance(message_param, ChatMessage):
|
|
14
|
-
converted_message_params.append(message_param)
|
|
15
|
-
elif isinstance(content := message_param.content, str):
|
|
16
|
-
converted_message_params.append(
|
|
17
|
-
ChatMessage(
|
|
18
|
-
role=message_param.role.upper(), # pyright: ignore [reportCallIssue]
|
|
19
|
-
message=content,
|
|
20
|
-
)
|
|
21
|
-
)
|
|
22
|
-
else:
|
|
23
|
-
# TODO: Add support tool_result
|
|
24
|
-
if len(content) != 1 or content[0].type != "text":
|
|
25
|
-
raise ValueError("Cohere currently only supports text parts.")
|
|
26
|
-
converted_message_params.append(
|
|
27
|
-
ChatMessage(
|
|
28
|
-
role=message_param.role.upper(), # pyright: ignore [reportCallIssue]
|
|
29
|
-
message=content[0].text,
|
|
30
|
-
)
|
|
31
|
-
)
|
|
32
|
-
return converted_message_params
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"""Get the JSON output from a completion response."""
|
|
2
|
-
|
|
3
|
-
import json
|
|
4
|
-
|
|
5
|
-
from .._types import ToolCallsGenerationStreamedChatResponse
|
|
6
|
-
from ..call_response import CohereCallResponse
|
|
7
|
-
from ..call_response_chunk import CohereCallResponseChunk
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
def get_json_output(
|
|
11
|
-
response: CohereCallResponse | CohereCallResponseChunk, json_mode: bool
|
|
12
|
-
) -> str:
|
|
13
|
-
"""Get the JSON output from a completion response."""
|
|
14
|
-
if isinstance(response, CohereCallResponse):
|
|
15
|
-
if json_mode and response.content:
|
|
16
|
-
return response.content
|
|
17
|
-
elif response.response.tool_calls:
|
|
18
|
-
return json.dumps(response.response.tool_calls[0].parameters)
|
|
19
|
-
raise ValueError("No tool call or JSON object found in response.")
|
|
20
|
-
else:
|
|
21
|
-
# raise ValueError("Cohere does not support structured streaming... :(")
|
|
22
|
-
if json_mode:
|
|
23
|
-
return response.content
|
|
24
|
-
elif (
|
|
25
|
-
isinstance(response.chunk, ToolCallsGenerationStreamedChatResponse)
|
|
26
|
-
and (tool_calls := response.chunk.tool_calls)
|
|
27
|
-
and (parameters := tool_calls[0].parameters)
|
|
28
|
-
):
|
|
29
|
-
return json.dumps(parameters)
|
|
30
|
-
return ""
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
"""Handles the stream of completion chunks."""
|
|
2
|
-
|
|
3
|
-
from collections.abc import AsyncGenerator, Generator
|
|
4
|
-
|
|
5
|
-
from cohere.types import StreamedChatResponse
|
|
6
|
-
|
|
7
|
-
from ..call_response_chunk import CohereCallResponseChunk
|
|
8
|
-
from ..tool import CohereTool
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
def handle_stream(
|
|
12
|
-
stream: Generator[StreamedChatResponse, None, None],
|
|
13
|
-
tool_types: list[type[CohereTool]] | None = None,
|
|
14
|
-
partial_tools: bool = False,
|
|
15
|
-
) -> Generator[tuple[CohereCallResponseChunk, None], None, None]:
|
|
16
|
-
"""Iterator over the stream and constructs tools as they are streamed.
|
|
17
|
-
|
|
18
|
-
Note: cohere does not currently support streaming tools.
|
|
19
|
-
"""
|
|
20
|
-
for chunk in stream:
|
|
21
|
-
yield CohereCallResponseChunk(chunk=chunk), None
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
async def handle_stream_async(
|
|
25
|
-
stream: AsyncGenerator[StreamedChatResponse, None],
|
|
26
|
-
tool_types: list[type[CohereTool]] | None = None,
|
|
27
|
-
partial_tools: bool = False,
|
|
28
|
-
) -> AsyncGenerator[tuple[CohereCallResponseChunk, None], None]:
|
|
29
|
-
"""
|
|
30
|
-
Async iterator over the stream and constructs tools as they are streamed.
|
|
31
|
-
|
|
32
|
-
Note: cohere does not currently support streaming tools.
|
|
33
|
-
"""
|
|
34
|
-
async for chunk in stream:
|
|
35
|
-
yield CohereCallResponseChunk(chunk=chunk), None
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
from typing import cast
|
|
2
|
-
|
|
3
|
-
from cohere.types import ChatMessage
|
|
4
|
-
|
|
5
|
-
from mirascope.core import BaseMessageParam
|
|
6
|
-
from mirascope.core.base import TextPart, ToolCallPart
|
|
7
|
-
from mirascope.core.base._utils._base_message_param_converter import (
|
|
8
|
-
BaseMessageParamConverter,
|
|
9
|
-
)
|
|
10
|
-
from mirascope.core.cohere._utils import convert_message_params
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
class CohereMessageParamConverter(BaseMessageParamConverter):
|
|
14
|
-
"""Converts between Cohere `ChatMessage` and Mirascope `BaseMessageParam`."""
|
|
15
|
-
|
|
16
|
-
@staticmethod
|
|
17
|
-
def to_provider(message_params: list[BaseMessageParam]) -> list[ChatMessage]:
|
|
18
|
-
"""
|
|
19
|
-
Convert from Mirascope `BaseMessageParam` to Cohere's `ChatMessage`.
|
|
20
|
-
"""
|
|
21
|
-
return convert_message_params(
|
|
22
|
-
cast(list[BaseMessageParam | ChatMessage], message_params)
|
|
23
|
-
)
|
|
24
|
-
|
|
25
|
-
@staticmethod
|
|
26
|
-
def from_provider(message_params: list[ChatMessage]) -> list[BaseMessageParam]:
|
|
27
|
-
"""
|
|
28
|
-
Convert from Cohere's `ChatMessage` to Mirascope `BaseMessageParam`.
|
|
29
|
-
"""
|
|
30
|
-
converted = []
|
|
31
|
-
for message_param in message_params:
|
|
32
|
-
role = getattr(message_param, "role", "assistant")
|
|
33
|
-
if not message_param.tool_calls:
|
|
34
|
-
converted.append(
|
|
35
|
-
BaseMessageParam(role=role, content=message_param.message)
|
|
36
|
-
)
|
|
37
|
-
continue
|
|
38
|
-
|
|
39
|
-
converted_content = []
|
|
40
|
-
|
|
41
|
-
if message_param.message:
|
|
42
|
-
converted_content.append(
|
|
43
|
-
TextPart(type="text", text=message_param.message)
|
|
44
|
-
)
|
|
45
|
-
|
|
46
|
-
for tool_call in message_param.tool_calls:
|
|
47
|
-
converted_content.append(
|
|
48
|
-
ToolCallPart(
|
|
49
|
-
type="tool_call", name=tool_call.name, args=tool_call.parameters
|
|
50
|
-
)
|
|
51
|
-
)
|
|
52
|
-
|
|
53
|
-
converted.append(BaseMessageParam(role=role, content=converted_content))
|
|
54
|
-
return converted
|
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
"""This module contains the setup_call function for Cohere tools."""
|
|
2
|
-
|
|
3
|
-
import inspect
|
|
4
|
-
from collections.abc import (
|
|
5
|
-
Awaitable,
|
|
6
|
-
Callable,
|
|
7
|
-
)
|
|
8
|
-
from typing import (
|
|
9
|
-
Any,
|
|
10
|
-
cast,
|
|
11
|
-
overload,
|
|
12
|
-
)
|
|
13
|
-
|
|
14
|
-
from cohere import (
|
|
15
|
-
AsyncClient,
|
|
16
|
-
Client,
|
|
17
|
-
NonStreamedChatResponse,
|
|
18
|
-
)
|
|
19
|
-
from cohere.types import ChatMessage, StreamedChatResponse
|
|
20
|
-
from pydantic import BaseModel
|
|
21
|
-
|
|
22
|
-
from ...base import BaseMessageParam, BaseTool, _utils
|
|
23
|
-
from ...base._utils import (
|
|
24
|
-
AsyncCreateFn,
|
|
25
|
-
CreateFn,
|
|
26
|
-
get_async_create_fn,
|
|
27
|
-
get_create_fn,
|
|
28
|
-
)
|
|
29
|
-
from ...base.call_params import CommonCallParams
|
|
30
|
-
from ...base.stream_config import StreamConfig
|
|
31
|
-
from .._call_kwargs import CohereCallKwargs
|
|
32
|
-
from ..call_params import CohereCallParams
|
|
33
|
-
from ..dynamic_config import AsyncCohereDynamicConfig, CohereDynamicConfig
|
|
34
|
-
from ..tool import CohereTool
|
|
35
|
-
from ._convert_common_call_params import convert_common_call_params
|
|
36
|
-
from ._convert_message_params import convert_message_params
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
@overload
|
|
40
|
-
def setup_call(
|
|
41
|
-
*,
|
|
42
|
-
model: str,
|
|
43
|
-
client: AsyncClient | None,
|
|
44
|
-
fn: Callable[..., Awaitable[AsyncCohereDynamicConfig]],
|
|
45
|
-
fn_args: dict[str, Any],
|
|
46
|
-
dynamic_config: AsyncCohereDynamicConfig,
|
|
47
|
-
tools: list[type[BaseTool] | Callable] | None,
|
|
48
|
-
json_mode: bool,
|
|
49
|
-
call_params: CohereCallParams | CommonCallParams,
|
|
50
|
-
response_model: type[BaseModel] | None,
|
|
51
|
-
stream: bool | StreamConfig,
|
|
52
|
-
) -> tuple[
|
|
53
|
-
AsyncCreateFn[NonStreamedChatResponse, StreamedChatResponse],
|
|
54
|
-
str,
|
|
55
|
-
list[ChatMessage],
|
|
56
|
-
list[type[CohereTool]] | None,
|
|
57
|
-
CohereCallKwargs,
|
|
58
|
-
]: ...
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
@overload
|
|
62
|
-
def setup_call(
|
|
63
|
-
*,
|
|
64
|
-
model: str,
|
|
65
|
-
client: Client | None,
|
|
66
|
-
fn: Callable[..., CohereDynamicConfig],
|
|
67
|
-
fn_args: dict[str, Any],
|
|
68
|
-
dynamic_config: CohereDynamicConfig,
|
|
69
|
-
tools: list[type[BaseTool] | Callable] | None,
|
|
70
|
-
json_mode: bool,
|
|
71
|
-
call_params: CohereCallParams | CommonCallParams,
|
|
72
|
-
response_model: type[BaseModel] | None,
|
|
73
|
-
stream: bool | StreamConfig,
|
|
74
|
-
) -> tuple[
|
|
75
|
-
CreateFn[NonStreamedChatResponse, StreamedChatResponse],
|
|
76
|
-
str,
|
|
77
|
-
list[ChatMessage],
|
|
78
|
-
list[type[CohereTool]] | None,
|
|
79
|
-
CohereCallKwargs,
|
|
80
|
-
]: ...
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
def setup_call(
|
|
84
|
-
*,
|
|
85
|
-
model: str,
|
|
86
|
-
client: Client | AsyncClient | None,
|
|
87
|
-
fn: Callable[..., CohereDynamicConfig | Awaitable[AsyncCohereDynamicConfig]],
|
|
88
|
-
fn_args: dict[str, Any],
|
|
89
|
-
dynamic_config: CohereDynamicConfig | AsyncCohereDynamicConfig,
|
|
90
|
-
tools: list[type[BaseTool] | Callable] | None,
|
|
91
|
-
json_mode: bool,
|
|
92
|
-
call_params: CohereCallParams | CommonCallParams,
|
|
93
|
-
response_model: type[BaseModel] | None,
|
|
94
|
-
stream: bool | StreamConfig,
|
|
95
|
-
) -> tuple[
|
|
96
|
-
CreateFn[NonStreamedChatResponse, StreamedChatResponse]
|
|
97
|
-
| AsyncCreateFn[NonStreamedChatResponse, StreamedChatResponse],
|
|
98
|
-
str | None,
|
|
99
|
-
list[ChatMessage],
|
|
100
|
-
list[type[CohereTool]] | None,
|
|
101
|
-
CohereCallKwargs,
|
|
102
|
-
]:
|
|
103
|
-
prompt_template, messages, tool_types, call_kwargs = _utils.setup_call(
|
|
104
|
-
fn,
|
|
105
|
-
fn_args,
|
|
106
|
-
dynamic_config,
|
|
107
|
-
tools,
|
|
108
|
-
CohereTool,
|
|
109
|
-
call_params,
|
|
110
|
-
convert_common_call_params,
|
|
111
|
-
)
|
|
112
|
-
call_kwargs = cast(CohereCallKwargs, call_kwargs)
|
|
113
|
-
messages = cast(list[BaseMessageParam | ChatMessage], messages)
|
|
114
|
-
messages = convert_message_params(messages)
|
|
115
|
-
|
|
116
|
-
preamble = ""
|
|
117
|
-
if "preamble" in call_kwargs and call_kwargs["preamble"] is not None:
|
|
118
|
-
preamble = call_kwargs.pop("preamble", "") or ""
|
|
119
|
-
if messages[0].role == "SYSTEM": # pyright: ignore [reportAttributeAccessIssue]
|
|
120
|
-
if preamble:
|
|
121
|
-
preamble += "\n\n"
|
|
122
|
-
preamble += messages.pop(0).message
|
|
123
|
-
if preamble:
|
|
124
|
-
call_kwargs["preamble"] = preamble
|
|
125
|
-
if len(messages) > 1:
|
|
126
|
-
call_kwargs["chat_history"] = messages[:-1]
|
|
127
|
-
if json_mode:
|
|
128
|
-
# Cannot mutate ChatMessage in place
|
|
129
|
-
messages[-1] = ChatMessage(
|
|
130
|
-
role=messages[-1].role, # pyright: ignore [reportCallIssue, reportAttributeAccessIssue]
|
|
131
|
-
message=messages[-1].message + _utils.json_mode_content(response_model),
|
|
132
|
-
tool_calls=messages[-1].tool_calls,
|
|
133
|
-
)
|
|
134
|
-
elif response_model:
|
|
135
|
-
assert tool_types, "At least one tool must be provided for extraction."
|
|
136
|
-
call_kwargs |= {
|
|
137
|
-
"model": model,
|
|
138
|
-
"message": messages[-1].message,
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
if client is None:
|
|
142
|
-
client = AsyncClient() if inspect.iscoroutinefunction(fn) else Client()
|
|
143
|
-
|
|
144
|
-
create_or_stream = (
|
|
145
|
-
get_async_create_fn(client.chat, client.chat_stream)
|
|
146
|
-
if isinstance(client, AsyncClient)
|
|
147
|
-
else get_create_fn(client.chat, client.chat_stream)
|
|
148
|
-
)
|
|
149
|
-
|
|
150
|
-
return create_or_stream, prompt_template, messages, tool_types, call_kwargs
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
"""usage docs: learn/calls.md#provider-specific-parameters"""
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
from collections.abc import Sequence
|
|
6
|
-
|
|
7
|
-
from cohere.types import (
|
|
8
|
-
ChatConnector,
|
|
9
|
-
ChatDocument,
|
|
10
|
-
ChatMessage,
|
|
11
|
-
ChatRequestPromptTruncation,
|
|
12
|
-
ToolResult,
|
|
13
|
-
)
|
|
14
|
-
from typing_extensions import NotRequired
|
|
15
|
-
|
|
16
|
-
from ..base import BaseCallParams
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
class CohereCallParams(BaseCallParams):
|
|
20
|
-
"""The parameters to use when calling the Cohere API.
|
|
21
|
-
|
|
22
|
-
[Cohere API Reference](https://docs.cohere.com/reference/chat)
|
|
23
|
-
|
|
24
|
-
Attributes:
|
|
25
|
-
chat_history: ...
|
|
26
|
-
connectors: ...
|
|
27
|
-
conversation_id: ...
|
|
28
|
-
documents: ...
|
|
29
|
-
frequency_penalty: ...
|
|
30
|
-
k: ...
|
|
31
|
-
max_input_tokens: ...
|
|
32
|
-
max_tokens: ...
|
|
33
|
-
p: ...
|
|
34
|
-
preamble: ...
|
|
35
|
-
presence_penalty: ...
|
|
36
|
-
prompt_truncation: ...
|
|
37
|
-
raw_prompting: ...
|
|
38
|
-
search_queries_only: ...
|
|
39
|
-
seed: ...
|
|
40
|
-
stop_sequences: ...
|
|
41
|
-
temperature: ...
|
|
42
|
-
tool_results: ...
|
|
43
|
-
"""
|
|
44
|
-
|
|
45
|
-
chat_history: NotRequired[Sequence[ChatMessage] | None]
|
|
46
|
-
connectors: NotRequired[Sequence[ChatConnector] | None]
|
|
47
|
-
conversation_id: NotRequired[str | None]
|
|
48
|
-
documents: NotRequired[Sequence[ChatDocument] | None]
|
|
49
|
-
frequency_penalty: NotRequired[float | None]
|
|
50
|
-
k: NotRequired[int | None]
|
|
51
|
-
max_input_tokens: NotRequired[int | None]
|
|
52
|
-
max_tokens: NotRequired[int | None]
|
|
53
|
-
p: NotRequired[float | None]
|
|
54
|
-
preamble: NotRequired[str | None]
|
|
55
|
-
presence_penalty: NotRequired[float | None]
|
|
56
|
-
prompt_truncation: NotRequired[ChatRequestPromptTruncation | None]
|
|
57
|
-
raw_prompting: NotRequired[bool | None]
|
|
58
|
-
search_queries_only: NotRequired[bool | None]
|
|
59
|
-
seed: NotRequired[int | None]
|
|
60
|
-
stop_sequences: NotRequired[Sequence[str] | None]
|
|
61
|
-
temperature: NotRequired[float | None]
|
|
62
|
-
tool_results: NotRequired[Sequence[ToolResult] | None]
|