mirascope 1.25.6__py3-none-any.whl → 2.0.0__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 +5 -52
- mirascope/_stubs.py +363 -0
- mirascope/api/__init__.py +14 -0
- mirascope/api/_generated/README.md +207 -0
- mirascope/api/_generated/__init__.py +440 -0
- mirascope/api/_generated/annotations/__init__.py +33 -0
- mirascope/api/_generated/annotations/client.py +506 -0
- mirascope/api/_generated/annotations/raw_client.py +1414 -0
- mirascope/api/_generated/annotations/types/__init__.py +31 -0
- mirascope/api/_generated/annotations/types/annotations_create_request_label.py +5 -0
- mirascope/api/_generated/annotations/types/annotations_create_response.py +48 -0
- mirascope/api/_generated/annotations/types/annotations_create_response_label.py +5 -0
- mirascope/api/_generated/annotations/types/annotations_get_response.py +48 -0
- mirascope/api/_generated/annotations/types/annotations_get_response_label.py +5 -0
- mirascope/api/_generated/annotations/types/annotations_list_request_label.py +5 -0
- mirascope/api/_generated/annotations/types/annotations_list_response.py +21 -0
- mirascope/api/_generated/annotations/types/annotations_list_response_annotations_item.py +50 -0
- mirascope/api/_generated/annotations/types/annotations_list_response_annotations_item_label.py +5 -0
- mirascope/api/_generated/annotations/types/annotations_update_request_label.py +5 -0
- mirascope/api/_generated/annotations/types/annotations_update_response.py +48 -0
- mirascope/api/_generated/annotations/types/annotations_update_response_label.py +5 -0
- mirascope/api/_generated/api_keys/__init__.py +17 -0
- mirascope/api/_generated/api_keys/client.py +530 -0
- mirascope/api/_generated/api_keys/raw_client.py +1236 -0
- mirascope/api/_generated/api_keys/types/__init__.py +15 -0
- mirascope/api/_generated/api_keys/types/api_keys_create_response.py +28 -0
- mirascope/api/_generated/api_keys/types/api_keys_get_response.py +27 -0
- mirascope/api/_generated/api_keys/types/api_keys_list_all_for_org_response_item.py +40 -0
- mirascope/api/_generated/api_keys/types/api_keys_list_response_item.py +27 -0
- mirascope/api/_generated/client.py +211 -0
- mirascope/api/_generated/core/__init__.py +52 -0
- mirascope/api/_generated/core/api_error.py +23 -0
- mirascope/api/_generated/core/client_wrapper.py +46 -0
- mirascope/api/_generated/core/datetime_utils.py +28 -0
- mirascope/api/_generated/core/file.py +67 -0
- mirascope/api/_generated/core/force_multipart.py +16 -0
- mirascope/api/_generated/core/http_client.py +543 -0
- mirascope/api/_generated/core/http_response.py +55 -0
- mirascope/api/_generated/core/jsonable_encoder.py +100 -0
- mirascope/api/_generated/core/pydantic_utilities.py +255 -0
- mirascope/api/_generated/core/query_encoder.py +58 -0
- mirascope/api/_generated/core/remove_none_from_dict.py +11 -0
- mirascope/api/_generated/core/request_options.py +35 -0
- mirascope/api/_generated/core/serialization.py +276 -0
- mirascope/api/_generated/docs/__init__.py +4 -0
- mirascope/api/_generated/docs/client.py +91 -0
- mirascope/api/_generated/docs/raw_client.py +178 -0
- mirascope/api/_generated/environment.py +9 -0
- mirascope/api/_generated/environments/__init__.py +23 -0
- mirascope/api/_generated/environments/client.py +649 -0
- mirascope/api/_generated/environments/raw_client.py +1567 -0
- mirascope/api/_generated/environments/types/__init__.py +25 -0
- mirascope/api/_generated/environments/types/environments_create_response.py +24 -0
- mirascope/api/_generated/environments/types/environments_get_analytics_response.py +60 -0
- mirascope/api/_generated/environments/types/environments_get_analytics_response_top_functions_item.py +24 -0
- mirascope/api/_generated/environments/types/environments_get_analytics_response_top_models_item.py +22 -0
- mirascope/api/_generated/environments/types/environments_get_response.py +24 -0
- mirascope/api/_generated/environments/types/environments_list_response_item.py +24 -0
- mirascope/api/_generated/environments/types/environments_update_response.py +24 -0
- mirascope/api/_generated/errors/__init__.py +25 -0
- mirascope/api/_generated/errors/bad_request_error.py +14 -0
- mirascope/api/_generated/errors/conflict_error.py +14 -0
- mirascope/api/_generated/errors/forbidden_error.py +11 -0
- mirascope/api/_generated/errors/internal_server_error.py +10 -0
- mirascope/api/_generated/errors/not_found_error.py +11 -0
- mirascope/api/_generated/errors/payment_required_error.py +15 -0
- mirascope/api/_generated/errors/service_unavailable_error.py +14 -0
- mirascope/api/_generated/errors/too_many_requests_error.py +15 -0
- mirascope/api/_generated/errors/unauthorized_error.py +11 -0
- mirascope/api/_generated/functions/__init__.py +39 -0
- mirascope/api/_generated/functions/client.py +647 -0
- mirascope/api/_generated/functions/raw_client.py +1890 -0
- mirascope/api/_generated/functions/types/__init__.py +53 -0
- mirascope/api/_generated/functions/types/functions_create_request_dependencies_value.py +20 -0
- mirascope/api/_generated/functions/types/functions_create_response.py +37 -0
- mirascope/api/_generated/functions/types/functions_create_response_dependencies_value.py +20 -0
- mirascope/api/_generated/functions/types/functions_find_by_hash_response.py +39 -0
- mirascope/api/_generated/functions/types/functions_find_by_hash_response_dependencies_value.py +20 -0
- mirascope/api/_generated/functions/types/functions_get_by_env_response.py +53 -0
- mirascope/api/_generated/functions/types/functions_get_by_env_response_dependencies_value.py +22 -0
- mirascope/api/_generated/functions/types/functions_get_response.py +37 -0
- mirascope/api/_generated/functions/types/functions_get_response_dependencies_value.py +20 -0
- mirascope/api/_generated/functions/types/functions_list_by_env_response.py +25 -0
- mirascope/api/_generated/functions/types/functions_list_by_env_response_functions_item.py +56 -0
- mirascope/api/_generated/functions/types/functions_list_by_env_response_functions_item_dependencies_value.py +22 -0
- mirascope/api/_generated/functions/types/functions_list_response.py +21 -0
- mirascope/api/_generated/functions/types/functions_list_response_functions_item.py +41 -0
- mirascope/api/_generated/functions/types/functions_list_response_functions_item_dependencies_value.py +20 -0
- mirascope/api/_generated/health/__init__.py +7 -0
- mirascope/api/_generated/health/client.py +92 -0
- mirascope/api/_generated/health/raw_client.py +175 -0
- mirascope/api/_generated/health/types/__init__.py +8 -0
- mirascope/api/_generated/health/types/health_check_response.py +22 -0
- mirascope/api/_generated/health/types/health_check_response_status.py +5 -0
- mirascope/api/_generated/organization_invitations/__init__.py +33 -0
- mirascope/api/_generated/organization_invitations/client.py +546 -0
- mirascope/api/_generated/organization_invitations/raw_client.py +1519 -0
- mirascope/api/_generated/organization_invitations/types/__init__.py +53 -0
- mirascope/api/_generated/organization_invitations/types/organization_invitations_accept_response.py +34 -0
- mirascope/api/_generated/organization_invitations/types/organization_invitations_accept_response_role.py +7 -0
- mirascope/api/_generated/organization_invitations/types/organization_invitations_create_request_role.py +7 -0
- mirascope/api/_generated/organization_invitations/types/organization_invitations_create_response.py +48 -0
- mirascope/api/_generated/organization_invitations/types/organization_invitations_create_response_role.py +7 -0
- mirascope/api/_generated/organization_invitations/types/organization_invitations_create_response_status.py +7 -0
- mirascope/api/_generated/organization_invitations/types/organization_invitations_get_response.py +48 -0
- mirascope/api/_generated/organization_invitations/types/organization_invitations_get_response_role.py +7 -0
- mirascope/api/_generated/organization_invitations/types/organization_invitations_get_response_status.py +7 -0
- mirascope/api/_generated/organization_invitations/types/organization_invitations_list_response_item.py +48 -0
- mirascope/api/_generated/organization_invitations/types/organization_invitations_list_response_item_role.py +7 -0
- mirascope/api/_generated/organization_invitations/types/organization_invitations_list_response_item_status.py +7 -0
- mirascope/api/_generated/organization_memberships/__init__.py +19 -0
- mirascope/api/_generated/organization_memberships/client.py +302 -0
- mirascope/api/_generated/organization_memberships/raw_client.py +736 -0
- mirascope/api/_generated/organization_memberships/types/__init__.py +27 -0
- mirascope/api/_generated/organization_memberships/types/organization_memberships_list_response_item.py +33 -0
- mirascope/api/_generated/organization_memberships/types/organization_memberships_list_response_item_role.py +7 -0
- mirascope/api/_generated/organization_memberships/types/organization_memberships_update_request_role.py +7 -0
- mirascope/api/_generated/organization_memberships/types/organization_memberships_update_response.py +31 -0
- mirascope/api/_generated/organization_memberships/types/organization_memberships_update_response_role.py +7 -0
- mirascope/api/_generated/organizations/__init__.py +51 -0
- mirascope/api/_generated/organizations/client.py +869 -0
- mirascope/api/_generated/organizations/raw_client.py +2593 -0
- mirascope/api/_generated/organizations/types/__init__.py +71 -0
- mirascope/api/_generated/organizations/types/organizations_create_payment_intent_response.py +24 -0
- mirascope/api/_generated/organizations/types/organizations_create_response.py +26 -0
- mirascope/api/_generated/organizations/types/organizations_create_response_role.py +5 -0
- mirascope/api/_generated/organizations/types/organizations_get_response.py +26 -0
- mirascope/api/_generated/organizations/types/organizations_get_response_role.py +5 -0
- mirascope/api/_generated/organizations/types/organizations_list_response_item.py +26 -0
- mirascope/api/_generated/organizations/types/organizations_list_response_item_role.py +5 -0
- mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_request_target_plan.py +7 -0
- mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_response.py +47 -0
- mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_response_validation_errors_item.py +33 -0
- mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_response_validation_errors_item_resource.py +7 -0
- mirascope/api/_generated/organizations/types/organizations_router_balance_response.py +24 -0
- mirascope/api/_generated/organizations/types/organizations_subscription_response.py +53 -0
- mirascope/api/_generated/organizations/types/organizations_subscription_response_current_plan.py +7 -0
- mirascope/api/_generated/organizations/types/organizations_subscription_response_payment_method.py +26 -0
- mirascope/api/_generated/organizations/types/organizations_subscription_response_scheduled_change.py +34 -0
- mirascope/api/_generated/organizations/types/organizations_subscription_response_scheduled_change_target_plan.py +7 -0
- mirascope/api/_generated/organizations/types/organizations_update_response.py +26 -0
- mirascope/api/_generated/organizations/types/organizations_update_response_role.py +5 -0
- mirascope/api/_generated/organizations/types/organizations_update_subscription_request_target_plan.py +7 -0
- mirascope/api/_generated/organizations/types/organizations_update_subscription_response.py +35 -0
- mirascope/api/_generated/project_memberships/__init__.py +25 -0
- mirascope/api/_generated/project_memberships/client.py +437 -0
- mirascope/api/_generated/project_memberships/raw_client.py +1039 -0
- mirascope/api/_generated/project_memberships/types/__init__.py +29 -0
- mirascope/api/_generated/project_memberships/types/project_memberships_create_request_role.py +7 -0
- mirascope/api/_generated/project_memberships/types/project_memberships_create_response.py +35 -0
- mirascope/api/_generated/project_memberships/types/project_memberships_create_response_role.py +7 -0
- mirascope/api/_generated/project_memberships/types/project_memberships_list_response_item.py +33 -0
- mirascope/api/_generated/project_memberships/types/project_memberships_list_response_item_role.py +7 -0
- mirascope/api/_generated/project_memberships/types/project_memberships_update_request_role.py +7 -0
- mirascope/api/_generated/project_memberships/types/project_memberships_update_response.py +35 -0
- mirascope/api/_generated/project_memberships/types/project_memberships_update_response_role.py +7 -0
- mirascope/api/_generated/projects/__init__.py +7 -0
- mirascope/api/_generated/projects/client.py +428 -0
- mirascope/api/_generated/projects/raw_client.py +1302 -0
- mirascope/api/_generated/projects/types/__init__.py +10 -0
- mirascope/api/_generated/projects/types/projects_create_response.py +25 -0
- mirascope/api/_generated/projects/types/projects_get_response.py +25 -0
- mirascope/api/_generated/projects/types/projects_list_response_item.py +25 -0
- mirascope/api/_generated/projects/types/projects_update_response.py +25 -0
- mirascope/api/_generated/reference.md +4915 -0
- mirascope/api/_generated/tags/__init__.py +19 -0
- mirascope/api/_generated/tags/client.py +504 -0
- mirascope/api/_generated/tags/raw_client.py +1288 -0
- mirascope/api/_generated/tags/types/__init__.py +17 -0
- mirascope/api/_generated/tags/types/tags_create_response.py +41 -0
- mirascope/api/_generated/tags/types/tags_get_response.py +41 -0
- mirascope/api/_generated/tags/types/tags_list_response.py +23 -0
- mirascope/api/_generated/tags/types/tags_list_response_tags_item.py +41 -0
- mirascope/api/_generated/tags/types/tags_update_response.py +41 -0
- mirascope/api/_generated/token_cost/__init__.py +7 -0
- mirascope/api/_generated/token_cost/client.py +160 -0
- mirascope/api/_generated/token_cost/raw_client.py +264 -0
- mirascope/api/_generated/token_cost/types/__init__.py +8 -0
- mirascope/api/_generated/token_cost/types/token_cost_calculate_request_usage.py +54 -0
- mirascope/api/_generated/token_cost/types/token_cost_calculate_response.py +52 -0
- mirascope/api/_generated/traces/__init__.py +97 -0
- mirascope/api/_generated/traces/client.py +1103 -0
- mirascope/api/_generated/traces/raw_client.py +2322 -0
- mirascope/api/_generated/traces/types/__init__.py +155 -0
- mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item.py +29 -0
- mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource.py +27 -0
- mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item.py +23 -0
- mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value.py +38 -0
- mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_array_value.py +19 -0
- mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_kvlist_value.py +22 -0
- mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_kvlist_value_values_item.py +20 -0
- mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item.py +29 -0
- mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope.py +31 -0
- mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item.py +23 -0
- mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value.py +38 -0
- mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value_array_value.py +19 -0
- mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value_kvlist_value.py +22 -0
- mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value_kvlist_value_values_item.py +22 -0
- mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item.py +48 -0
- mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item.py +23 -0
- mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value.py +38 -0
- mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value_array_value.py +19 -0
- mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value_kvlist_value.py +24 -0
- mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value_kvlist_value_values_item.py +22 -0
- mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_status.py +20 -0
- mirascope/api/_generated/traces/types/traces_create_response.py +24 -0
- mirascope/api/_generated/traces/types/traces_create_response_partial_success.py +22 -0
- mirascope/api/_generated/traces/types/traces_get_analytics_summary_response.py +60 -0
- mirascope/api/_generated/traces/types/traces_get_analytics_summary_response_top_functions_item.py +24 -0
- mirascope/api/_generated/traces/types/traces_get_analytics_summary_response_top_models_item.py +22 -0
- mirascope/api/_generated/traces/types/traces_get_trace_detail_by_env_response.py +33 -0
- mirascope/api/_generated/traces/types/traces_get_trace_detail_by_env_response_spans_item.py +88 -0
- mirascope/api/_generated/traces/types/traces_get_trace_detail_response.py +33 -0
- mirascope/api/_generated/traces/types/traces_get_trace_detail_response_spans_item.py +88 -0
- mirascope/api/_generated/traces/types/traces_list_by_function_hash_response.py +25 -0
- mirascope/api/_generated/traces/types/traces_list_by_function_hash_response_traces_item.py +44 -0
- mirascope/api/_generated/traces/types/traces_search_by_env_request_attribute_filters_item.py +26 -0
- mirascope/api/_generated/traces/types/traces_search_by_env_request_attribute_filters_item_operator.py +7 -0
- mirascope/api/_generated/traces/types/traces_search_by_env_request_sort_by.py +7 -0
- mirascope/api/_generated/traces/types/traces_search_by_env_request_sort_order.py +7 -0
- mirascope/api/_generated/traces/types/traces_search_by_env_response.py +26 -0
- mirascope/api/_generated/traces/types/traces_search_by_env_response_spans_item.py +50 -0
- mirascope/api/_generated/traces/types/traces_search_request_attribute_filters_item.py +26 -0
- mirascope/api/_generated/traces/types/traces_search_request_attribute_filters_item_operator.py +7 -0
- mirascope/api/_generated/traces/types/traces_search_request_sort_by.py +7 -0
- mirascope/api/_generated/traces/types/traces_search_request_sort_order.py +5 -0
- mirascope/api/_generated/traces/types/traces_search_response.py +26 -0
- mirascope/api/_generated/traces/types/traces_search_response_spans_item.py +50 -0
- mirascope/api/_generated/types/__init__.py +85 -0
- mirascope/api/_generated/types/already_exists_error.py +22 -0
- mirascope/api/_generated/types/already_exists_error_tag.py +5 -0
- mirascope/api/_generated/types/bad_request_error_body.py +50 -0
- mirascope/api/_generated/types/click_house_error.py +22 -0
- mirascope/api/_generated/types/database_error.py +22 -0
- mirascope/api/_generated/types/database_error_tag.py +5 -0
- mirascope/api/_generated/types/date.py +3 -0
- mirascope/api/_generated/types/http_api_decode_error.py +27 -0
- mirascope/api/_generated/types/http_api_decode_error_tag.py +5 -0
- mirascope/api/_generated/types/immutable_resource_error.py +22 -0
- mirascope/api/_generated/types/internal_server_error_body.py +49 -0
- mirascope/api/_generated/types/issue.py +38 -0
- mirascope/api/_generated/types/issue_tag.py +10 -0
- mirascope/api/_generated/types/not_found_error_body.py +22 -0
- mirascope/api/_generated/types/not_found_error_tag.py +5 -0
- mirascope/api/_generated/types/number_from_string.py +3 -0
- mirascope/api/_generated/types/permission_denied_error.py +22 -0
- mirascope/api/_generated/types/permission_denied_error_tag.py +5 -0
- mirascope/api/_generated/types/plan_limit_exceeded_error.py +32 -0
- mirascope/api/_generated/types/plan_limit_exceeded_error_tag.py +7 -0
- mirascope/api/_generated/types/pricing_unavailable_error.py +23 -0
- mirascope/api/_generated/types/property_key.py +7 -0
- mirascope/api/_generated/types/property_key_key.py +25 -0
- mirascope/api/_generated/types/property_key_key_tag.py +5 -0
- mirascope/api/_generated/types/rate_limit_error.py +31 -0
- mirascope/api/_generated/types/rate_limit_error_tag.py +5 -0
- mirascope/api/_generated/types/service_unavailable_error_body.py +24 -0
- mirascope/api/_generated/types/service_unavailable_error_tag.py +7 -0
- mirascope/api/_generated/types/stripe_error.py +20 -0
- mirascope/api/_generated/types/subscription_past_due_error.py +31 -0
- mirascope/api/_generated/types/subscription_past_due_error_tag.py +7 -0
- mirascope/api/_generated/types/unauthorized_error_body.py +21 -0
- mirascope/api/_generated/types/unauthorized_error_tag.py +5 -0
- mirascope/api/client.py +255 -0
- mirascope/api/settings.py +99 -0
- mirascope/llm/__init__.py +290 -15
- mirascope/llm/calls/__init__.py +17 -0
- mirascope/llm/calls/calls.py +341 -0
- mirascope/llm/calls/decorator.py +275 -0
- mirascope/llm/content/__init__.py +71 -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 +69 -0
- mirascope/llm/content/tool_output.py +43 -0
- mirascope/llm/context/__init__.py +6 -0
- mirascope/llm/context/_utils.py +41 -0
- mirascope/llm/context/context.py +24 -0
- mirascope/llm/exceptions.py +360 -0
- mirascope/llm/formatting/__init__.py +39 -0
- mirascope/llm/formatting/format.py +293 -0
- mirascope/llm/formatting/from_call_args.py +30 -0
- mirascope/llm/formatting/output_parser.py +178 -0
- mirascope/llm/formatting/partial.py +131 -0
- mirascope/llm/formatting/primitives.py +192 -0
- mirascope/llm/formatting/types.py +66 -0
- mirascope/llm/mcp/__init__.py +5 -0
- mirascope/llm/mcp/mcp_client.py +130 -0
- mirascope/llm/messages/__init__.py +35 -0
- mirascope/llm/messages/_utils.py +34 -0
- mirascope/llm/messages/message.py +190 -0
- mirascope/llm/models/__init__.py +21 -0
- mirascope/llm/models/models.py +1419 -0
- mirascope/llm/models/params.py +72 -0
- mirascope/llm/models/thinking_config.py +61 -0
- mirascope/llm/prompts/__init__.py +34 -0
- mirascope/llm/prompts/_utils.py +31 -0
- mirascope/llm/prompts/decorator.py +226 -0
- mirascope/llm/prompts/prompts.py +487 -0
- mirascope/llm/prompts/protocols.py +65 -0
- mirascope/llm/providers/__init__.py +62 -0
- mirascope/llm/providers/anthropic/__init__.py +11 -0
- mirascope/llm/providers/anthropic/_utils/__init__.py +27 -0
- mirascope/llm/providers/anthropic/_utils/beta_decode.py +282 -0
- mirascope/llm/providers/anthropic/_utils/beta_encode.py +266 -0
- mirascope/llm/providers/anthropic/_utils/decode.py +288 -0
- mirascope/llm/providers/anthropic/_utils/encode.py +418 -0
- mirascope/llm/providers/anthropic/_utils/errors.py +46 -0
- mirascope/llm/providers/anthropic/beta_provider.py +374 -0
- mirascope/llm/providers/anthropic/model_id.py +23 -0
- mirascope/llm/providers/anthropic/model_info.py +87 -0
- mirascope/llm/providers/anthropic/provider.py +479 -0
- mirascope/llm/providers/base/__init__.py +14 -0
- mirascope/llm/providers/base/_utils.py +253 -0
- mirascope/llm/providers/base/base_provider.py +1579 -0
- mirascope/llm/providers/base/kwargs.py +12 -0
- mirascope/llm/providers/google/__init__.py +6 -0
- mirascope/llm/providers/google/_utils/__init__.py +17 -0
- mirascope/llm/providers/google/_utils/decode.py +307 -0
- mirascope/llm/providers/google/_utils/encode.py +401 -0
- mirascope/llm/providers/google/_utils/errors.py +50 -0
- mirascope/llm/providers/google/message.py +7 -0
- mirascope/llm/providers/google/model_id.py +22 -0
- mirascope/llm/providers/google/model_info.py +63 -0
- mirascope/llm/providers/google/provider.py +492 -0
- mirascope/llm/providers/mirascope/__init__.py +5 -0
- mirascope/llm/providers/mirascope/_utils.py +73 -0
- mirascope/llm/providers/mirascope/provider.py +349 -0
- mirascope/llm/providers/mlx/__init__.py +9 -0
- mirascope/llm/providers/mlx/_utils.py +141 -0
- mirascope/llm/providers/mlx/encoding/__init__.py +8 -0
- mirascope/llm/providers/mlx/encoding/base.py +72 -0
- mirascope/llm/providers/mlx/encoding/transformers.py +150 -0
- mirascope/llm/providers/mlx/mlx.py +254 -0
- mirascope/llm/providers/mlx/model_id.py +17 -0
- mirascope/llm/providers/mlx/provider.py +452 -0
- mirascope/llm/providers/model_id.py +16 -0
- mirascope/llm/providers/ollama/__init__.py +7 -0
- mirascope/llm/providers/ollama/provider.py +71 -0
- mirascope/llm/providers/openai/__init__.py +15 -0
- mirascope/llm/providers/openai/_utils/__init__.py +5 -0
- mirascope/llm/providers/openai/_utils/errors.py +46 -0
- mirascope/llm/providers/openai/completions/__init__.py +7 -0
- mirascope/llm/providers/openai/completions/_utils/__init__.py +15 -0
- mirascope/llm/providers/openai/completions/_utils/decode.py +252 -0
- mirascope/llm/providers/openai/completions/_utils/encode.py +376 -0
- mirascope/llm/providers/openai/completions/base_provider.py +542 -0
- mirascope/llm/providers/openai/completions/provider.py +22 -0
- mirascope/llm/providers/openai/model_id.py +31 -0
- mirascope/llm/providers/openai/model_info.py +303 -0
- mirascope/llm/providers/openai/provider.py +441 -0
- mirascope/llm/providers/openai/responses/__init__.py +5 -0
- mirascope/llm/providers/openai/responses/_utils/__init__.py +15 -0
- mirascope/llm/providers/openai/responses/_utils/decode.py +260 -0
- mirascope/llm/providers/openai/responses/_utils/encode.py +384 -0
- mirascope/llm/providers/openai/responses/provider.py +513 -0
- mirascope/llm/providers/provider_id.py +24 -0
- mirascope/llm/providers/provider_registry.py +299 -0
- mirascope/llm/providers/together/__init__.py +7 -0
- mirascope/llm/providers/together/provider.py +40 -0
- mirascope/llm/responses/__init__.py +65 -0
- mirascope/llm/responses/_utils.py +146 -0
- mirascope/llm/responses/base_response.py +103 -0
- mirascope/llm/responses/base_stream_response.py +820 -0
- mirascope/llm/responses/finish_reason.py +28 -0
- mirascope/llm/responses/response.py +366 -0
- mirascope/llm/responses/root_response.py +248 -0
- mirascope/llm/responses/stream_response.py +581 -0
- mirascope/llm/responses/streams.py +363 -0
- mirascope/llm/responses/usage.py +95 -0
- mirascope/llm/tools/__init__.py +47 -0
- mirascope/llm/tools/_utils.py +34 -0
- mirascope/llm/tools/decorator.py +184 -0
- mirascope/llm/tools/protocols.py +96 -0
- mirascope/llm/tools/tool_schema.py +314 -0
- mirascope/llm/tools/toolkit.py +160 -0
- mirascope/llm/tools/tools.py +263 -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/ops/__init__.py +111 -0
- mirascope/ops/_internal/__init__.py +5 -0
- mirascope/ops/_internal/closure.py +1169 -0
- mirascope/ops/_internal/configuration.py +177 -0
- mirascope/ops/_internal/context.py +76 -0
- mirascope/ops/_internal/exporters/__init__.py +26 -0
- mirascope/ops/_internal/exporters/exporters.py +395 -0
- mirascope/ops/_internal/exporters/processors.py +104 -0
- mirascope/ops/_internal/exporters/types.py +165 -0
- mirascope/ops/_internal/exporters/utils.py +29 -0
- mirascope/ops/_internal/instrumentation/__init__.py +8 -0
- mirascope/ops/_internal/instrumentation/llm/__init__.py +8 -0
- mirascope/ops/_internal/instrumentation/llm/common.py +530 -0
- mirascope/ops/_internal/instrumentation/llm/cost.py +190 -0
- mirascope/ops/_internal/instrumentation/llm/encode.py +238 -0
- mirascope/ops/_internal/instrumentation/llm/gen_ai_types/__init__.py +38 -0
- mirascope/ops/_internal/instrumentation/llm/gen_ai_types/gen_ai_input_messages.py +31 -0
- mirascope/ops/_internal/instrumentation/llm/gen_ai_types/gen_ai_output_messages.py +38 -0
- mirascope/ops/_internal/instrumentation/llm/gen_ai_types/gen_ai_system_instructions.py +18 -0
- mirascope/ops/_internal/instrumentation/llm/gen_ai_types/shared.py +100 -0
- mirascope/ops/_internal/instrumentation/llm/llm.py +161 -0
- mirascope/ops/_internal/instrumentation/llm/model.py +1798 -0
- mirascope/ops/_internal/instrumentation/llm/response.py +521 -0
- mirascope/ops/_internal/instrumentation/llm/serialize.py +300 -0
- mirascope/ops/_internal/propagation.py +198 -0
- mirascope/ops/_internal/protocols.py +133 -0
- mirascope/ops/_internal/session.py +139 -0
- mirascope/ops/_internal/spans.py +232 -0
- mirascope/ops/_internal/traced_calls.py +375 -0
- mirascope/ops/_internal/traced_functions.py +523 -0
- mirascope/ops/_internal/tracing.py +353 -0
- mirascope/ops/_internal/types.py +13 -0
- mirascope/ops/_internal/utils.py +123 -0
- mirascope/ops/_internal/versioned_calls.py +512 -0
- mirascope/ops/_internal/versioned_functions.py +357 -0
- mirascope/ops/_internal/versioning.py +303 -0
- mirascope/ops/exceptions.py +21 -0
- mirascope-2.0.0.dist-info/METADATA +203 -0
- mirascope-2.0.0.dist-info/RECORD +423 -0
- {mirascope-1.25.6.dist-info → mirascope-2.0.0.dist-info}/WHEEL +1 -1
- {mirascope-1.25.6.dist-info → mirascope-2.0.0.dist-info}/licenses/LICENSE +1 -1
- 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 -142
- 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/experimental/graphs/finite_state_machine.py +0 -714
- 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.6.dist-info/METADATA +0 -169
- mirascope-1.25.6.dist-info/RECORD +0 -378
|
@@ -1,205 +0,0 @@
|
|
|
1
|
-
"""This module contains the `MistralCallResponse` class.
|
|
2
|
-
|
|
3
|
-
usage docs: learn/calls.md#handling-responses
|
|
4
|
-
"""
|
|
5
|
-
|
|
6
|
-
from collections.abc import Sequence
|
|
7
|
-
from functools import cached_property
|
|
8
|
-
from typing import Any, cast
|
|
9
|
-
|
|
10
|
-
from mistralai import ChatCompletionChoice
|
|
11
|
-
from mistralai.models import (
|
|
12
|
-
AssistantMessage,
|
|
13
|
-
ChatCompletionResponse,
|
|
14
|
-
SystemMessage,
|
|
15
|
-
ToolMessage,
|
|
16
|
-
UsageInfo,
|
|
17
|
-
UserMessage,
|
|
18
|
-
)
|
|
19
|
-
from pydantic import computed_field
|
|
20
|
-
|
|
21
|
-
from .. import BaseMessageParam
|
|
22
|
-
from ..base import BaseCallResponse, transform_tool_outputs
|
|
23
|
-
from ..base.types import CostMetadata, FinishReason
|
|
24
|
-
from ._utils._convert_finish_reason_to_common_finish_reasons import (
|
|
25
|
-
_convert_finish_reasons_to_common_finish_reasons,
|
|
26
|
-
)
|
|
27
|
-
from ._utils._message_param_converter import MistralMessageParamConverter
|
|
28
|
-
from .call_params import MistralCallParams
|
|
29
|
-
from .dynamic_config import MistralDynamicConfig
|
|
30
|
-
from .tool import MistralTool
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
class MistralCallResponse(
|
|
34
|
-
BaseCallResponse[
|
|
35
|
-
ChatCompletionResponse,
|
|
36
|
-
MistralTool,
|
|
37
|
-
dict[str, Any],
|
|
38
|
-
MistralDynamicConfig,
|
|
39
|
-
AssistantMessage | SystemMessage | ToolMessage | UserMessage,
|
|
40
|
-
MistralCallParams,
|
|
41
|
-
UserMessage,
|
|
42
|
-
MistralMessageParamConverter,
|
|
43
|
-
]
|
|
44
|
-
):
|
|
45
|
-
"""A convenience wrapper around the Mistral `ChatCompletion` response.
|
|
46
|
-
|
|
47
|
-
When calling the Mistral API using a function decorated with `mistral_call`, the
|
|
48
|
-
response will be an `MistralCallResponse` instance with properties that allow for
|
|
49
|
-
more convenience access to commonly used attributes.
|
|
50
|
-
|
|
51
|
-
Example:
|
|
52
|
-
|
|
53
|
-
```python
|
|
54
|
-
from mirascope.core import prompt_template
|
|
55
|
-
from mirascope.core.mistral import mistral_call
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
@mistral_call("mistral-largel-latest")
|
|
59
|
-
def recommend_book(genre: str) -> str:
|
|
60
|
-
return f"Recommend a {genre} book"
|
|
61
|
-
|
|
62
|
-
response = recommend_book("fantasy") # response is an `MistralCallResponse` instance
|
|
63
|
-
print(response.content)
|
|
64
|
-
```
|
|
65
|
-
"""
|
|
66
|
-
|
|
67
|
-
_message_converter: type[MistralMessageParamConverter] = (
|
|
68
|
-
MistralMessageParamConverter
|
|
69
|
-
)
|
|
70
|
-
|
|
71
|
-
_provider = "mistral"
|
|
72
|
-
|
|
73
|
-
@property
|
|
74
|
-
def _response_choices(self) -> list[ChatCompletionChoice]:
|
|
75
|
-
return self.response.choices or []
|
|
76
|
-
|
|
77
|
-
@computed_field
|
|
78
|
-
@property
|
|
79
|
-
def content(self) -> str:
|
|
80
|
-
"""The content of the chat completion for the 0th choice."""
|
|
81
|
-
return cast(str, self._response_choices[0].message.content) or ""
|
|
82
|
-
|
|
83
|
-
@computed_field
|
|
84
|
-
@property
|
|
85
|
-
def finish_reasons(self) -> list[str]:
|
|
86
|
-
"""Returns the finish reasons of the response."""
|
|
87
|
-
return [
|
|
88
|
-
choice.finish_reason if choice.finish_reason else ""
|
|
89
|
-
for choice in self._response_choices
|
|
90
|
-
]
|
|
91
|
-
|
|
92
|
-
@computed_field
|
|
93
|
-
@property
|
|
94
|
-
def model(self) -> str:
|
|
95
|
-
"""Returns the name of the response model."""
|
|
96
|
-
return self.response.model
|
|
97
|
-
|
|
98
|
-
@computed_field
|
|
99
|
-
@property
|
|
100
|
-
def id(self) -> str:
|
|
101
|
-
"""Returns the id of the response."""
|
|
102
|
-
return self.response.id
|
|
103
|
-
|
|
104
|
-
@property
|
|
105
|
-
def usage(self) -> UsageInfo:
|
|
106
|
-
"""Returns the usage of the chat completion."""
|
|
107
|
-
return self.response.usage
|
|
108
|
-
|
|
109
|
-
@computed_field
|
|
110
|
-
@property
|
|
111
|
-
def input_tokens(self) -> int:
|
|
112
|
-
"""Returns the number of input tokens."""
|
|
113
|
-
return self.usage.prompt_tokens
|
|
114
|
-
|
|
115
|
-
@computed_field
|
|
116
|
-
@property
|
|
117
|
-
def cached_tokens(self) -> int:
|
|
118
|
-
"""Returns the number of cached tokens."""
|
|
119
|
-
return 0
|
|
120
|
-
|
|
121
|
-
@computed_field
|
|
122
|
-
@property
|
|
123
|
-
def output_tokens(self) -> int | None:
|
|
124
|
-
"""Returns the number of output tokens."""
|
|
125
|
-
return self.usage.completion_tokens
|
|
126
|
-
|
|
127
|
-
@computed_field
|
|
128
|
-
@cached_property
|
|
129
|
-
def message_param(self) -> AssistantMessage:
|
|
130
|
-
"""Returns the assistants's response as a message parameter."""
|
|
131
|
-
return self._response_choices[0].message
|
|
132
|
-
|
|
133
|
-
@cached_property
|
|
134
|
-
def tools(self) -> list[MistralTool] | None:
|
|
135
|
-
"""Returns the tools for the 0th choice message.
|
|
136
|
-
|
|
137
|
-
Raises:
|
|
138
|
-
ValidationError: if the tool call doesn't match the tool's schema.
|
|
139
|
-
"""
|
|
140
|
-
tool_calls = self._response_choices[0].message.tool_calls
|
|
141
|
-
if not self.tool_types or not tool_calls:
|
|
142
|
-
return None
|
|
143
|
-
|
|
144
|
-
extracted_tools = []
|
|
145
|
-
for tool_call in tool_calls:
|
|
146
|
-
for tool_type in self.tool_types:
|
|
147
|
-
if tool_call.function.name == tool_type._name():
|
|
148
|
-
extracted_tools.append(tool_type.from_tool_call(tool_call))
|
|
149
|
-
break
|
|
150
|
-
|
|
151
|
-
return extracted_tools
|
|
152
|
-
|
|
153
|
-
@cached_property
|
|
154
|
-
def tool(self) -> MistralTool | None:
|
|
155
|
-
"""Returns the 0th tool for the 0th choice message.
|
|
156
|
-
|
|
157
|
-
Raises:
|
|
158
|
-
ValidationError: if the tool call doesn't match the tool's schema.
|
|
159
|
-
"""
|
|
160
|
-
if tools := self.tools:
|
|
161
|
-
return tools[0]
|
|
162
|
-
return None
|
|
163
|
-
|
|
164
|
-
@classmethod
|
|
165
|
-
@transform_tool_outputs
|
|
166
|
-
def tool_message_params(
|
|
167
|
-
cls, tools_and_outputs: Sequence[tuple[MistralTool, str]]
|
|
168
|
-
) -> list[ToolMessage]:
|
|
169
|
-
"""Returns the tool message parameters for tool call results.
|
|
170
|
-
|
|
171
|
-
Args:
|
|
172
|
-
tools_and_outputs: The sequence of tools and their outputs from which the tool
|
|
173
|
-
message parameters should be constructed.
|
|
174
|
-
|
|
175
|
-
Returns:
|
|
176
|
-
The list of constructed `ChatMessage` parameters.
|
|
177
|
-
"""
|
|
178
|
-
return [
|
|
179
|
-
ToolMessage(
|
|
180
|
-
content=output,
|
|
181
|
-
tool_call_id=tool.tool_call.id, # pyright: ignore [reportOptionalMemberAccess]
|
|
182
|
-
name=tool._name(),
|
|
183
|
-
)
|
|
184
|
-
for tool, output in tools_and_outputs
|
|
185
|
-
]
|
|
186
|
-
|
|
187
|
-
@property
|
|
188
|
-
def common_finish_reasons(self) -> list[FinishReason] | None:
|
|
189
|
-
return _convert_finish_reasons_to_common_finish_reasons(self.finish_reasons)
|
|
190
|
-
|
|
191
|
-
@property
|
|
192
|
-
def common_message_param(self) -> BaseMessageParam:
|
|
193
|
-
return MistralMessageParamConverter.from_provider([self.message_param])[0]
|
|
194
|
-
|
|
195
|
-
@property
|
|
196
|
-
def common_user_message_param(self) -> BaseMessageParam | None:
|
|
197
|
-
if not self.user_message_param:
|
|
198
|
-
return None
|
|
199
|
-
return MistralMessageParamConverter.from_provider([self.user_message_param])[0]
|
|
200
|
-
|
|
201
|
-
@computed_field
|
|
202
|
-
@property
|
|
203
|
-
def cost_metadata(self) -> CostMetadata:
|
|
204
|
-
"""Get metadata required for cost calculation."""
|
|
205
|
-
return super().cost_metadata
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
"""This module contains the `MistralCallResponseChunk` class.
|
|
2
|
-
|
|
3
|
-
usage docs: learn/streams.md#handling-streamed-responses
|
|
4
|
-
"""
|
|
5
|
-
|
|
6
|
-
from typing import cast
|
|
7
|
-
|
|
8
|
-
from mistralai.models import CompletionChunk, FinishReason, UsageInfo
|
|
9
|
-
|
|
10
|
-
from ..base import BaseCallResponseChunk, types
|
|
11
|
-
from ..base.types import CostMetadata
|
|
12
|
-
from ._utils._convert_finish_reason_to_common_finish_reasons import (
|
|
13
|
-
_convert_finish_reasons_to_common_finish_reasons,
|
|
14
|
-
)
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
class MistralCallResponseChunk(BaseCallResponseChunk[CompletionChunk, FinishReason]):
|
|
18
|
-
"""A convenience wrapper around the Mistral `ChatCompletionChunk` streamed chunks.
|
|
19
|
-
|
|
20
|
-
When calling the Mistral API using a function decorated with `mistral_call` and
|
|
21
|
-
`stream` set to `True`, the stream will contain `MistralResponseChunk` instances with
|
|
22
|
-
properties that allow for more convenient access to commonly used attributes.
|
|
23
|
-
|
|
24
|
-
Example:
|
|
25
|
-
|
|
26
|
-
```python
|
|
27
|
-
from mirascope.core import prompt_template
|
|
28
|
-
from mirascope.core.mistral import mistral_call
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
@mistral_call("mistral-large-latest", stream=True)
|
|
32
|
-
def recommend_book(genre: str) -> str:
|
|
33
|
-
return f"Recommend a {genre} book"
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
stream = recommend_book("fantasy") # response is an `MistralStream`
|
|
37
|
-
for chunk, _ in stream:
|
|
38
|
-
print(chunk.content, end="", flush=True)
|
|
39
|
-
```
|
|
40
|
-
"""
|
|
41
|
-
|
|
42
|
-
@property
|
|
43
|
-
def content(self) -> str:
|
|
44
|
-
"""Returns the content of the delta."""
|
|
45
|
-
delta = None
|
|
46
|
-
if self.chunk.choices:
|
|
47
|
-
delta = self.chunk.choices[0].delta
|
|
48
|
-
|
|
49
|
-
if delta is not None and isinstance(delta.content, str):
|
|
50
|
-
return delta.content
|
|
51
|
-
return ""
|
|
52
|
-
|
|
53
|
-
@property
|
|
54
|
-
def finish_reasons(self) -> list[FinishReason]:
|
|
55
|
-
"""Returns the finish reasons of the response."""
|
|
56
|
-
return [
|
|
57
|
-
choice.finish_reason
|
|
58
|
-
for choice in self.chunk.choices
|
|
59
|
-
if choice.finish_reason
|
|
60
|
-
]
|
|
61
|
-
|
|
62
|
-
@property
|
|
63
|
-
def model(self) -> str:
|
|
64
|
-
"""Returns the name of the response model."""
|
|
65
|
-
return self.chunk.model
|
|
66
|
-
|
|
67
|
-
@property
|
|
68
|
-
def id(self) -> str:
|
|
69
|
-
"""Returns the id of the response."""
|
|
70
|
-
return self.chunk.id
|
|
71
|
-
|
|
72
|
-
@property
|
|
73
|
-
def usage(self) -> UsageInfo | None:
|
|
74
|
-
"""Returns the usage of the chat completion."""
|
|
75
|
-
return self.chunk.usage
|
|
76
|
-
|
|
77
|
-
@property
|
|
78
|
-
def input_tokens(self) -> int | None:
|
|
79
|
-
"""Returns the number of input tokens."""
|
|
80
|
-
if self.usage:
|
|
81
|
-
return self.usage.prompt_tokens
|
|
82
|
-
return None
|
|
83
|
-
|
|
84
|
-
@property
|
|
85
|
-
def cached_tokens(self) -> int:
|
|
86
|
-
"""Returns the number of cached tokens."""
|
|
87
|
-
return 0
|
|
88
|
-
|
|
89
|
-
@property
|
|
90
|
-
def output_tokens(self) -> int | None:
|
|
91
|
-
"""Returns the number of output tokens."""
|
|
92
|
-
if self.usage:
|
|
93
|
-
return self.usage.completion_tokens
|
|
94
|
-
return None
|
|
95
|
-
|
|
96
|
-
@property
|
|
97
|
-
def cost_metadata(self) -> CostMetadata:
|
|
98
|
-
"""Returns the cost metadata."""
|
|
99
|
-
return super().cost_metadata
|
|
100
|
-
|
|
101
|
-
@property
|
|
102
|
-
def common_finish_reasons(self) -> list[types.FinishReason] | None:
|
|
103
|
-
return _convert_finish_reasons_to_common_finish_reasons(
|
|
104
|
-
cast(list[str], self.finish_reasons)
|
|
105
|
-
)
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"""This module defines the function return type for functions as LLM calls."""
|
|
2
|
-
|
|
3
|
-
from mistralai import Mistral
|
|
4
|
-
from mistralai.models import (
|
|
5
|
-
AssistantMessage,
|
|
6
|
-
SystemMessage,
|
|
7
|
-
ToolMessage,
|
|
8
|
-
UserMessage,
|
|
9
|
-
)
|
|
10
|
-
|
|
11
|
-
from ..base import BaseDynamicConfig, BaseMessageParam
|
|
12
|
-
from .call_params import MistralCallParams
|
|
13
|
-
|
|
14
|
-
MistralDynamicConfig = BaseDynamicConfig[
|
|
15
|
-
AssistantMessage | SystemMessage | ToolMessage | UserMessage | BaseMessageParam,
|
|
16
|
-
MistralCallParams,
|
|
17
|
-
Mistral,
|
|
18
|
-
]
|
|
19
|
-
"""The function return type for functions wrapped with the `mistral_call` decorator.
|
|
20
|
-
|
|
21
|
-
Example:
|
|
22
|
-
|
|
23
|
-
```python
|
|
24
|
-
from mirascope.core import prompt_template
|
|
25
|
-
from mirascope.core.mistral import MistralDynamicConfig, mistral_call
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
@mistral_call("mistral-large-latest")
|
|
29
|
-
@prompt_template("Recommend a {capitalized_genre} book")
|
|
30
|
-
def recommend_book(genre: str) -> MistralDynamicConfig:
|
|
31
|
-
return {"computed_fields": {"capitalized_genre": genre.capitalize()}}
|
|
32
|
-
```
|
|
33
|
-
"""
|
mirascope/core/mistral/py.typed
DELETED
|
File without changes
|
mirascope/core/mistral/stream.py
DELETED
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
"""The `MistralStream` class for convenience around streaming LLM calls.
|
|
2
|
-
|
|
3
|
-
usage docs: learn/streams.md
|
|
4
|
-
"""
|
|
5
|
-
|
|
6
|
-
from typing import Any, cast
|
|
7
|
-
|
|
8
|
-
from mistralai.models import (
|
|
9
|
-
AssistantMessage,
|
|
10
|
-
ChatCompletionChoice,
|
|
11
|
-
ChatCompletionResponse,
|
|
12
|
-
FinishReason,
|
|
13
|
-
SystemMessage,
|
|
14
|
-
ToolMessage,
|
|
15
|
-
UsageInfo,
|
|
16
|
-
UserMessage,
|
|
17
|
-
)
|
|
18
|
-
|
|
19
|
-
from ..base.stream import BaseStream
|
|
20
|
-
from ..base.types import CostMetadata
|
|
21
|
-
from .call_params import MistralCallParams
|
|
22
|
-
from .call_response import MistralCallResponse
|
|
23
|
-
from .call_response_chunk import MistralCallResponseChunk
|
|
24
|
-
from .dynamic_config import MistralDynamicConfig
|
|
25
|
-
from .tool import MistralTool
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
class MistralStream(
|
|
29
|
-
BaseStream[
|
|
30
|
-
MistralCallResponse,
|
|
31
|
-
MistralCallResponseChunk,
|
|
32
|
-
UserMessage,
|
|
33
|
-
AssistantMessage,
|
|
34
|
-
ToolMessage,
|
|
35
|
-
AssistantMessage | SystemMessage | ToolMessage | UserMessage,
|
|
36
|
-
MistralTool,
|
|
37
|
-
dict[str, Any],
|
|
38
|
-
MistralDynamicConfig,
|
|
39
|
-
MistralCallParams,
|
|
40
|
-
FinishReason,
|
|
41
|
-
]
|
|
42
|
-
):
|
|
43
|
-
"""A class for convenience around streaming Mistral LLM calls.
|
|
44
|
-
|
|
45
|
-
Example:
|
|
46
|
-
|
|
47
|
-
```python
|
|
48
|
-
from mirascope.core import prompt_template
|
|
49
|
-
from mirascope.core.mistral import mistral_call
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
@mistral_call("mistral-large-latest", stream=True)
|
|
53
|
-
def recommend_book(genre: str) -> str:
|
|
54
|
-
return f"Recommend a {genre} book"
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
stream = recommend_book("fantasy") # returns `MistralStream` instance
|
|
58
|
-
for chunk, _ in stream:
|
|
59
|
-
print(chunk.content, end="", flush=True)
|
|
60
|
-
```
|
|
61
|
-
"""
|
|
62
|
-
|
|
63
|
-
_provider = "mistral"
|
|
64
|
-
|
|
65
|
-
def _construct_message_param(
|
|
66
|
-
self, tool_calls: list | None = None, content: str | None = None
|
|
67
|
-
) -> AssistantMessage:
|
|
68
|
-
message_param = AssistantMessage(
|
|
69
|
-
content=content if content else "", tool_calls=tool_calls
|
|
70
|
-
)
|
|
71
|
-
return message_param
|
|
72
|
-
|
|
73
|
-
def construct_call_response(self) -> MistralCallResponse:
|
|
74
|
-
"""Constructs the call response from a consumed MistralStream.
|
|
75
|
-
|
|
76
|
-
Raises:
|
|
77
|
-
ValueError: if the stream has not yet been consumed.
|
|
78
|
-
"""
|
|
79
|
-
if not hasattr(self, "message_param"):
|
|
80
|
-
raise ValueError(
|
|
81
|
-
"No stream response, check if the stream has been consumed."
|
|
82
|
-
)
|
|
83
|
-
usage = UsageInfo(
|
|
84
|
-
prompt_tokens=int(self.input_tokens or 0),
|
|
85
|
-
completion_tokens=int(self.output_tokens or 0),
|
|
86
|
-
total_tokens=int(self.input_tokens or 0) + int(self.output_tokens or 0),
|
|
87
|
-
)
|
|
88
|
-
finish_reason = cast(FinishReason, (self.finish_reasons or [])[0])
|
|
89
|
-
completion = ChatCompletionResponse(
|
|
90
|
-
id=self.id if self.id else "",
|
|
91
|
-
choices=[
|
|
92
|
-
ChatCompletionChoice(
|
|
93
|
-
finish_reason=finish_reason,
|
|
94
|
-
index=0,
|
|
95
|
-
message=self.message_param,
|
|
96
|
-
)
|
|
97
|
-
],
|
|
98
|
-
created=0,
|
|
99
|
-
model=self.model,
|
|
100
|
-
object="",
|
|
101
|
-
usage=usage,
|
|
102
|
-
)
|
|
103
|
-
return MistralCallResponse(
|
|
104
|
-
metadata=self.metadata,
|
|
105
|
-
response=completion,
|
|
106
|
-
tool_types=self.tool_types,
|
|
107
|
-
prompt_template=self.prompt_template,
|
|
108
|
-
fn_args=self.fn_args if self.fn_args else {},
|
|
109
|
-
dynamic_config=self.dynamic_config,
|
|
110
|
-
messages=self.messages,
|
|
111
|
-
call_params=self.call_params,
|
|
112
|
-
call_kwargs=self.call_kwargs,
|
|
113
|
-
user_message_param=self.user_message_param,
|
|
114
|
-
start_time=self.start_time,
|
|
115
|
-
end_time=self.end_time,
|
|
116
|
-
)
|
|
117
|
-
|
|
118
|
-
@property
|
|
119
|
-
def cost_metadata(self) -> CostMetadata:
|
|
120
|
-
return super().cost_metadata
|
mirascope/core/mistral/tool.py
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
"""The `MistralTool` class for easy tool usage with Mistral LLM calls.
|
|
2
|
-
|
|
3
|
-
usage docs: learn/tools.md
|
|
4
|
-
"""
|
|
5
|
-
|
|
6
|
-
from __future__ import annotations
|
|
7
|
-
|
|
8
|
-
from typing import Any
|
|
9
|
-
|
|
10
|
-
import jiter
|
|
11
|
-
from mistralai.models import ToolCall
|
|
12
|
-
from pydantic.json_schema import SkipJsonSchema
|
|
13
|
-
|
|
14
|
-
from ..base import BaseTool
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
class MistralTool(BaseTool):
|
|
18
|
-
"""A class for defining tools for Mistral LLM calls.
|
|
19
|
-
|
|
20
|
-
Example:
|
|
21
|
-
|
|
22
|
-
```python
|
|
23
|
-
from mirascope.core import prompt_template
|
|
24
|
-
from mirascope.core.mistral import mistral_call
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
def format_book(title: str, author: str) -> str:
|
|
28
|
-
return f"{title} by {author}"
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
@mistral_call("mistral-large-latest", tools=[format_book])
|
|
32
|
-
def recommend_book(genre: str) -> str:
|
|
33
|
-
return f"Recommend a {genre} book"
|
|
34
|
-
|
|
35
|
-
response = recommend_book("fantasy")
|
|
36
|
-
if tool := response.tool: # returns a `MistralTool` instance
|
|
37
|
-
print(tool.call())
|
|
38
|
-
```
|
|
39
|
-
"""
|
|
40
|
-
|
|
41
|
-
__provider__ = "mistral"
|
|
42
|
-
|
|
43
|
-
tool_call: SkipJsonSchema[ToolCall]
|
|
44
|
-
|
|
45
|
-
@classmethod
|
|
46
|
-
def tool_schema(cls) -> dict[str, Any]:
|
|
47
|
-
"""Constructs a JSON Schema tool schema from the `BaseModel` schema defined.
|
|
48
|
-
|
|
49
|
-
Example:
|
|
50
|
-
```python
|
|
51
|
-
from mirascope.core.mistral import MistralTool
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
def format_book(title: str, author: str) -> str:
|
|
55
|
-
return f"{title} by {author}"
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
tool_type = MistralTool.type_from_fn(format_book)
|
|
59
|
-
print(tool_type.tool_schema()) # prints the Mistral-specific tool schema
|
|
60
|
-
```
|
|
61
|
-
"""
|
|
62
|
-
fn: dict[str, Any] = {"name": cls._name(), "description": cls._description()}
|
|
63
|
-
model_schema = cls.model_json_schema()
|
|
64
|
-
fn["parameters"] = (
|
|
65
|
-
model_schema if model_schema["properties"] else {"type": "object"}
|
|
66
|
-
)
|
|
67
|
-
return {"function": fn, "type": "function"}
|
|
68
|
-
|
|
69
|
-
@classmethod
|
|
70
|
-
def from_tool_call(cls, tool_call: ToolCall) -> MistralTool:
|
|
71
|
-
"""Constructs an `MistralTool` instance from a `tool_call`.
|
|
72
|
-
|
|
73
|
-
Args:
|
|
74
|
-
tool_call: The Mistral tool call from which to construct this tool instance.
|
|
75
|
-
"""
|
|
76
|
-
model_json = {"tool_call": tool_call}
|
|
77
|
-
if args := tool_call.function.arguments:
|
|
78
|
-
model_json |= (
|
|
79
|
-
jiter.from_json(args.encode()) if isinstance(args, str) else args
|
|
80
|
-
)
|
|
81
|
-
return cls.model_validate(model_json)
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"""The Mirascope OpenAI Module."""
|
|
2
|
-
|
|
3
|
-
from typing import TypeAlias
|
|
4
|
-
|
|
5
|
-
from openai.types.chat import ChatCompletionMessageParam
|
|
6
|
-
|
|
7
|
-
from ..base import BaseMessageParam
|
|
8
|
-
from ._call import openai_call
|
|
9
|
-
from ._call import openai_call as call
|
|
10
|
-
from .call_params import OpenAICallParams
|
|
11
|
-
from .call_response import OpenAICallResponse
|
|
12
|
-
from .call_response_chunk import OpenAICallResponseChunk
|
|
13
|
-
from .dynamic_config import AsyncOpenAIDynamicConfig, OpenAIDynamicConfig
|
|
14
|
-
from .stream import OpenAIStream
|
|
15
|
-
from .tool import OpenAITool, OpenAIToolConfig
|
|
16
|
-
|
|
17
|
-
OpenAIMessageParam: TypeAlias = ChatCompletionMessageParam | BaseMessageParam
|
|
18
|
-
|
|
19
|
-
__all__ = [
|
|
20
|
-
"AsyncOpenAIDynamicConfig",
|
|
21
|
-
"OpenAICallParams",
|
|
22
|
-
"OpenAICallResponse",
|
|
23
|
-
"OpenAICallResponseChunk",
|
|
24
|
-
"OpenAIDynamicConfig",
|
|
25
|
-
"OpenAIMessageParam",
|
|
26
|
-
"OpenAIStream",
|
|
27
|
-
"OpenAITool",
|
|
28
|
-
"OpenAIToolConfig",
|
|
29
|
-
"call",
|
|
30
|
-
"openai_call",
|
|
31
|
-
]
|
mirascope/core/openai/_call.py
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
"""The `openai_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 OpenAICallParams
|
|
11
|
-
from .call_response import OpenAICallResponse
|
|
12
|
-
from .call_response_chunk import OpenAICallResponseChunk
|
|
13
|
-
from .stream import OpenAIStream
|
|
14
|
-
from .tool import OpenAITool
|
|
15
|
-
|
|
16
|
-
openai_call = call_factory(
|
|
17
|
-
TCallResponse=OpenAICallResponse,
|
|
18
|
-
TCallResponseChunk=OpenAICallResponseChunk,
|
|
19
|
-
TToolType=OpenAITool,
|
|
20
|
-
TStream=OpenAIStream,
|
|
21
|
-
default_call_params=OpenAICallParams(),
|
|
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 OpenAI 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 OpenAI 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.openai import openai_call
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
@openai_call("gpt-4o-mini")
|
|
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 OpenAI 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 OpenAI API call.
|
|
54
|
-
response_model (BaseModel | BaseType): The response model into which the response
|
|
55
|
-
should be structured.
|
|
56
|
-
output_parser (Callable[[OpenAICallResponse | 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 (OpenAICallParams): The `OpenAICallParams` call parameters to use in the
|
|
62
|
-
API call.
|
|
63
|
-
|
|
64
|
-
Returns:
|
|
65
|
-
decorator (Callable): The decorator for turning a typed function into an OpenAI API
|
|
66
|
-
call.
|
|
67
|
-
"""
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"""This module contains the type definition for the OpenAI call keyword arguments."""
|
|
2
|
-
|
|
3
|
-
from collections.abc import Sequence
|
|
4
|
-
|
|
5
|
-
from openai.types.chat import ChatCompletionMessageParam, ChatCompletionToolParam
|
|
6
|
-
|
|
7
|
-
from ..base import BaseCallKwargs
|
|
8
|
-
from .call_params import OpenAICallParams
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class OpenAICallKwargs(OpenAICallParams, BaseCallKwargs[ChatCompletionToolParam]):
|
|
12
|
-
model: str
|
|
13
|
-
messages: Sequence[ChatCompletionMessageParam]
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"""OpenAI 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
|
-
]
|