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,79 +0,0 @@
|
|
|
1
|
-
"""Utility for setting up a provider-specific call."""
|
|
2
|
-
|
|
3
|
-
import inspect
|
|
4
|
-
from collections.abc import (
|
|
5
|
-
Awaitable,
|
|
6
|
-
Callable,
|
|
7
|
-
Sequence,
|
|
8
|
-
)
|
|
9
|
-
from typing import Any, Protocol, TypeVar, cast
|
|
10
|
-
|
|
11
|
-
from ..call_kwargs import BaseCallKwargs
|
|
12
|
-
from ..call_params import BaseCallParams, CommonCallParams
|
|
13
|
-
from ..dynamic_config import BaseDynamicConfig
|
|
14
|
-
from ..message_param import BaseMessageParam
|
|
15
|
-
from ..tool import BaseTool
|
|
16
|
-
from . import get_prompt_template, parse_prompt_messages
|
|
17
|
-
from ._convert_base_model_to_base_tool import convert_base_model_to_base_tool
|
|
18
|
-
from ._convert_function_to_base_tool import convert_function_to_base_tool
|
|
19
|
-
|
|
20
|
-
_BaseToolT = TypeVar("_BaseToolT", bound=BaseTool)
|
|
21
|
-
_BaseDynamicConfigT = TypeVar("_BaseDynamicConfigT", bound=BaseDynamicConfig)
|
|
22
|
-
_BaseCallParamsT = TypeVar("_BaseCallParamsT", bound=BaseCallParams, covariant=True)
|
|
23
|
-
_CALL_PARAMS_KEYS = set(CommonCallParams.__annotations__)
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
class ConvertCommonParamsFunc(Protocol[_BaseCallParamsT]):
|
|
27
|
-
def __call__(self, common_params: CommonCallParams) -> _BaseCallParamsT: ...
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
def setup_call(
|
|
31
|
-
fn: Callable[..., _BaseDynamicConfigT | Awaitable[_BaseDynamicConfigT]]
|
|
32
|
-
| Callable[..., Sequence[BaseMessageParam]]
|
|
33
|
-
| Callable[..., Awaitable[Sequence[BaseMessageParam]]],
|
|
34
|
-
fn_args: dict[str, Any],
|
|
35
|
-
dynamic_config: _BaseDynamicConfigT,
|
|
36
|
-
tools: Sequence[type[BaseTool] | Callable] | None,
|
|
37
|
-
tool_type: type[_BaseToolT],
|
|
38
|
-
call_params: _BaseCallParamsT | CommonCallParams,
|
|
39
|
-
convert_common_call_params: ConvertCommonParamsFunc[_BaseCallParamsT],
|
|
40
|
-
) -> tuple[
|
|
41
|
-
str | None,
|
|
42
|
-
list[BaseMessageParam | Any],
|
|
43
|
-
list[type[_BaseToolT]] | None,
|
|
44
|
-
BaseCallKwargs,
|
|
45
|
-
]:
|
|
46
|
-
if isinstance(call_params, dict) and call_params.keys() <= _CALL_PARAMS_KEYS:
|
|
47
|
-
call_params = convert_common_call_params(cast(CommonCallParams, call_params))
|
|
48
|
-
call_kwargs = cast(BaseCallKwargs[_BaseToolT], dict(call_params))
|
|
49
|
-
prompt_template, messages = None, None
|
|
50
|
-
if dynamic_config is not None:
|
|
51
|
-
tools = dynamic_config.get("tools", tools)
|
|
52
|
-
messages = dynamic_config.get("messages", None)
|
|
53
|
-
if messages is not None and not isinstance(messages, list):
|
|
54
|
-
messages = list(messages)
|
|
55
|
-
dynamic_call_params = dynamic_config.get("call_params", None)
|
|
56
|
-
if dynamic_call_params:
|
|
57
|
-
call_kwargs |= dynamic_call_params
|
|
58
|
-
|
|
59
|
-
if not messages:
|
|
60
|
-
prompt_template = get_prompt_template(fn)
|
|
61
|
-
assert prompt_template is not None, "The function must have a prompt template."
|
|
62
|
-
messages = parse_prompt_messages(
|
|
63
|
-
roles=["system", "user", "assistant"],
|
|
64
|
-
template=prompt_template,
|
|
65
|
-
attrs=fn_args,
|
|
66
|
-
dynamic_config=dynamic_config,
|
|
67
|
-
)
|
|
68
|
-
|
|
69
|
-
tool_types = None
|
|
70
|
-
if tools:
|
|
71
|
-
tool_types = [
|
|
72
|
-
convert_base_model_to_base_tool(tool, tool_type)
|
|
73
|
-
if inspect.isclass(tool)
|
|
74
|
-
else convert_function_to_base_tool(tool, tool_type)
|
|
75
|
-
for tool in tools
|
|
76
|
-
]
|
|
77
|
-
call_kwargs["tools"] = [tool_type.tool_schema() for tool_type in tool_types]
|
|
78
|
-
|
|
79
|
-
return prompt_template, messages, tool_types, call_kwargs
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"""This module contains the `setup_extract_tool` function."""
|
|
2
|
-
|
|
3
|
-
from abc import update_abstractmethods
|
|
4
|
-
from typing import TypeVar
|
|
5
|
-
|
|
6
|
-
from pydantic import BaseModel
|
|
7
|
-
|
|
8
|
-
from ._base_type import BaseType, is_base_type
|
|
9
|
-
from ._convert_base_model_to_base_tool import convert_base_model_to_base_tool
|
|
10
|
-
from ._convert_base_type_to_base_tool import convert_base_type_to_base_tool
|
|
11
|
-
|
|
12
|
-
BaseToolT = TypeVar("BaseToolT", bound=BaseModel)
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
def setup_extract_tool(
|
|
16
|
-
response_model: type[BaseModel] | type[BaseType], tool_type: type[BaseToolT]
|
|
17
|
-
) -> type[BaseToolT]:
|
|
18
|
-
if is_base_type(response_model):
|
|
19
|
-
converted_tool_type = convert_base_type_to_base_tool(response_model, tool_type)
|
|
20
|
-
elif issubclass(response_model, BaseModel):
|
|
21
|
-
converted_tool_type = convert_base_model_to_base_tool(response_model, tool_type)
|
|
22
|
-
else: # pragma: no cover
|
|
23
|
-
# pyright should work with IsType for the case of BaseModel | BaseType
|
|
24
|
-
# But it doesn't, so we need to cover this
|
|
25
|
-
raise ValueError(
|
|
26
|
-
f"`response_model` must be a BaseModel or a BaseType, not `{response_model}`."
|
|
27
|
-
)
|
|
28
|
-
if not hasattr(response_model, "call"):
|
|
29
|
-
converted_tool_type.call = lambda self: "" # pyright: ignore [reportAttributeAccessIssue]
|
|
30
|
-
return update_abstractmethods(converted_tool_type)
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"""This module contains the type definition for the base call keyword arguments."""
|
|
2
|
-
|
|
3
|
-
from typing import Generic, TypeVar
|
|
4
|
-
|
|
5
|
-
from typing_extensions import NotRequired
|
|
6
|
-
|
|
7
|
-
from .call_params import BaseCallParams
|
|
8
|
-
|
|
9
|
-
_ToolSchemaT = TypeVar("_ToolSchemaT")
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class BaseCallKwargs(BaseCallParams, Generic[_ToolSchemaT]):
|
|
13
|
-
tools: NotRequired[list[_ToolSchemaT]]
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
"""This module contains the type definition for the base call parameters."""
|
|
2
|
-
|
|
3
|
-
from typing import TypeVar
|
|
4
|
-
|
|
5
|
-
from typing_extensions import NotRequired, TypedDict
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class BaseCallParams(TypedDict, total=False): ... # pragma: no cover
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
_BaseCallParamsT = TypeVar("_BaseCallParamsT", bound=BaseCallParams)
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
class CommonCallParams(TypedDict, total=False):
|
|
15
|
-
"""Common parameters shared across LLM providers.
|
|
16
|
-
|
|
17
|
-
Note: Each provider may handle these parameters differently or not support them at all.
|
|
18
|
-
Please check provider-specific documentation for parameter support and behavior.
|
|
19
|
-
|
|
20
|
-
Attributes:
|
|
21
|
-
temperature: Controls randomness in the output (0.0 to 1.0).
|
|
22
|
-
max_tokens: Maximum number of tokens to generate.
|
|
23
|
-
top_p: Nucleus sampling parameter (0.0 to 1.0).
|
|
24
|
-
frequency_penalty: Penalizes frequent tokens (-2.0 to 2.0).
|
|
25
|
-
presence_penalty: Penalizes tokens based on presence (-2.0 to 2.0).
|
|
26
|
-
seed: Random seed for reproducibility.
|
|
27
|
-
stop: Stop sequence(s) to end generation.
|
|
28
|
-
"""
|
|
29
|
-
|
|
30
|
-
temperature: NotRequired[float | None]
|
|
31
|
-
max_tokens: NotRequired[int | None]
|
|
32
|
-
top_p: NotRequired[float | None]
|
|
33
|
-
frequency_penalty: NotRequired[float | None]
|
|
34
|
-
presence_penalty: NotRequired[float | None]
|
|
35
|
-
seed: NotRequired[int | None]
|
|
36
|
-
stop: NotRequired[str | list[str] | None]
|
|
@@ -1,338 +0,0 @@
|
|
|
1
|
-
"""This module contains the base call response class."""
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
import base64
|
|
6
|
-
import json
|
|
7
|
-
from abc import ABC, abstractmethod
|
|
8
|
-
from collections.abc import Callable, Sequence
|
|
9
|
-
from functools import cached_property, wraps
|
|
10
|
-
from typing import TYPE_CHECKING, Any, ClassVar, Generic, TypeVar, cast
|
|
11
|
-
|
|
12
|
-
from pydantic import (
|
|
13
|
-
BaseModel,
|
|
14
|
-
ConfigDict,
|
|
15
|
-
FieldSerializationInfo,
|
|
16
|
-
SkipValidation,
|
|
17
|
-
computed_field,
|
|
18
|
-
field_serializer,
|
|
19
|
-
)
|
|
20
|
-
|
|
21
|
-
from ..costs import calculate_cost
|
|
22
|
-
from ._utils import BaseMessageParamConverter, BaseType, get_common_usage
|
|
23
|
-
from .call_kwargs import BaseCallKwargs
|
|
24
|
-
from .call_params import BaseCallParams
|
|
25
|
-
from .dynamic_config import BaseDynamicConfig
|
|
26
|
-
from .metadata import Metadata
|
|
27
|
-
from .tool import BaseTool
|
|
28
|
-
from .types import CostMetadata, FinishReason, JsonableType, Provider, Usage
|
|
29
|
-
|
|
30
|
-
if TYPE_CHECKING:
|
|
31
|
-
from ...llm.tool import Tool
|
|
32
|
-
from .. import BaseMessageParam
|
|
33
|
-
|
|
34
|
-
_ResponseT = TypeVar("_ResponseT", bound=Any)
|
|
35
|
-
_BaseToolT = TypeVar("_BaseToolT", bound=BaseTool)
|
|
36
|
-
_ToolSchemaT = TypeVar("_ToolSchemaT")
|
|
37
|
-
_BaseDynamicConfigT = TypeVar("_BaseDynamicConfigT", bound=BaseDynamicConfig)
|
|
38
|
-
_MessageParamT = TypeVar("_MessageParamT", bound=Any)
|
|
39
|
-
_ToolMessageParamT = TypeVar("_ToolMessageParamT", bound=Any)
|
|
40
|
-
_CallParamsT = TypeVar("_CallParamsT", bound=BaseCallParams)
|
|
41
|
-
_UserMessageParamT = TypeVar("_UserMessageParamT", bound=Any)
|
|
42
|
-
_BaseCallResponseT = TypeVar("_BaseCallResponseT", bound="BaseCallResponse")
|
|
43
|
-
_BaseMessageParamConverterT = TypeVar(
|
|
44
|
-
"_BaseMessageParamConverterT", bound=BaseMessageParamConverter
|
|
45
|
-
)
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
def transform_tool_outputs(
|
|
49
|
-
fn: Callable[
|
|
50
|
-
[type[_BaseCallResponseT], Sequence[tuple[_BaseToolT, str]]],
|
|
51
|
-
list[_ToolMessageParamT],
|
|
52
|
-
],
|
|
53
|
-
) -> Callable[
|
|
54
|
-
[type[_BaseCallResponseT], Sequence[tuple[_BaseToolT, JsonableType]]],
|
|
55
|
-
list[_ToolMessageParamT],
|
|
56
|
-
]:
|
|
57
|
-
@wraps(fn)
|
|
58
|
-
def wrapper(
|
|
59
|
-
cls: type[_BaseCallResponseT],
|
|
60
|
-
tools_and_outputs: Sequence[tuple[_BaseToolT, JsonableType]],
|
|
61
|
-
) -> list[_ToolMessageParamT]:
|
|
62
|
-
def recursive_serializer(value: JsonableType) -> BaseType:
|
|
63
|
-
if isinstance(value, str | int | float | bool | None):
|
|
64
|
-
return value
|
|
65
|
-
if isinstance(value, bytes):
|
|
66
|
-
return base64.b64encode(value).decode("utf-8")
|
|
67
|
-
if isinstance(value, BaseModel):
|
|
68
|
-
return value.model_dump()
|
|
69
|
-
if isinstance(value, list | set | tuple):
|
|
70
|
-
return [recursive_serializer(item) for item in value]
|
|
71
|
-
if isinstance(value, dict):
|
|
72
|
-
return {k: recursive_serializer(v) for k, v in value.items()}
|
|
73
|
-
raise TypeError(f"Unsupported type for serialization: {type(value)}")
|
|
74
|
-
|
|
75
|
-
transformed_tools_and_outputs = [
|
|
76
|
-
(
|
|
77
|
-
tool,
|
|
78
|
-
output.model_dump_json()
|
|
79
|
-
if isinstance(output, BaseModel)
|
|
80
|
-
else str(recursive_serializer(output))
|
|
81
|
-
if isinstance(output, str | bytes)
|
|
82
|
-
else json.dumps(recursive_serializer(output)),
|
|
83
|
-
)
|
|
84
|
-
for tool, output in tools_and_outputs
|
|
85
|
-
]
|
|
86
|
-
return fn(cls, transformed_tools_and_outputs)
|
|
87
|
-
|
|
88
|
-
return wrapper
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
class BaseCallResponse(
|
|
92
|
-
BaseModel,
|
|
93
|
-
Generic[
|
|
94
|
-
_ResponseT,
|
|
95
|
-
_BaseToolT,
|
|
96
|
-
_ToolSchemaT,
|
|
97
|
-
_BaseDynamicConfigT,
|
|
98
|
-
_MessageParamT,
|
|
99
|
-
_CallParamsT,
|
|
100
|
-
_UserMessageParamT,
|
|
101
|
-
_BaseMessageParamConverterT,
|
|
102
|
-
],
|
|
103
|
-
ABC,
|
|
104
|
-
):
|
|
105
|
-
"""A base abstract interface for LLM call responses.
|
|
106
|
-
|
|
107
|
-
Attributes:
|
|
108
|
-
metadata: The metadata pulled from the call that was made.
|
|
109
|
-
response: The original response from whichever model response this wraps.
|
|
110
|
-
tool_types: The list of tool types used, if any.
|
|
111
|
-
prompt_template: The unformatted prompt template from the call that was made.
|
|
112
|
-
fn_args: The input arguments used when making the call.
|
|
113
|
-
dynamic_config: Dynamic configuration options, if any.
|
|
114
|
-
messages: The list of provider-specific messages used to make the API call.
|
|
115
|
-
call_params: The original call params set in the call decorator.
|
|
116
|
-
call_kwargs: The keyword arguments used to make the API call.
|
|
117
|
-
user_message_param: The most recent provider-specific message if it was a user
|
|
118
|
-
message. Otherwise `None`.
|
|
119
|
-
start_time: The start time of the completion in ms.
|
|
120
|
-
end_time: The end time of the completion in ms.
|
|
121
|
-
"""
|
|
122
|
-
|
|
123
|
-
metadata: Metadata
|
|
124
|
-
response: _ResponseT
|
|
125
|
-
tool_types: list[type[_BaseToolT]] | None = None
|
|
126
|
-
prompt_template: str | None
|
|
127
|
-
fn_args: dict[str, Any]
|
|
128
|
-
dynamic_config: _BaseDynamicConfigT
|
|
129
|
-
messages: SkipValidation[list[_MessageParamT]]
|
|
130
|
-
call_params: SkipValidation[_CallParamsT]
|
|
131
|
-
call_kwargs: BaseCallKwargs[_ToolSchemaT]
|
|
132
|
-
user_message_param: _UserMessageParamT | None = None
|
|
133
|
-
start_time: float
|
|
134
|
-
end_time: float
|
|
135
|
-
|
|
136
|
-
_message_converter: type[_BaseMessageParamConverterT]
|
|
137
|
-
_provider: ClassVar[str] = "NO PROVIDER"
|
|
138
|
-
_model: str = "NO MODEL"
|
|
139
|
-
|
|
140
|
-
model_config = ConfigDict(extra="allow", arbitrary_types_allowed=True)
|
|
141
|
-
|
|
142
|
-
@field_serializer("tool_types", when_used="json")
|
|
143
|
-
def serialize_tool_types(
|
|
144
|
-
self, tool_types: list[type[_BaseToolT]] | None, info: FieldSerializationInfo
|
|
145
|
-
) -> list[dict[str, str]]:
|
|
146
|
-
return [{"type": "function", "name": tool._name()} for tool in tool_types or []]
|
|
147
|
-
|
|
148
|
-
def __str__(self) -> str:
|
|
149
|
-
"""Returns the string content of the response."""
|
|
150
|
-
return self.content
|
|
151
|
-
|
|
152
|
-
@computed_field
|
|
153
|
-
@property
|
|
154
|
-
@abstractmethod
|
|
155
|
-
def content(self) -> str:
|
|
156
|
-
"""Should return the string content of the response.
|
|
157
|
-
|
|
158
|
-
If there are multiple choices in a response, this method should select the 0th
|
|
159
|
-
choice and return it's string content.
|
|
160
|
-
|
|
161
|
-
If there is no string content (e.g. when using tools), this method must return
|
|
162
|
-
the empty string.
|
|
163
|
-
"""
|
|
164
|
-
...
|
|
165
|
-
|
|
166
|
-
@computed_field
|
|
167
|
-
@property
|
|
168
|
-
@abstractmethod
|
|
169
|
-
def finish_reasons(self) -> list[str] | None:
|
|
170
|
-
"""Should return the finish reasons of the response.
|
|
171
|
-
|
|
172
|
-
If there is no finish reason, this method must return None.
|
|
173
|
-
"""
|
|
174
|
-
...
|
|
175
|
-
|
|
176
|
-
@computed_field
|
|
177
|
-
@property
|
|
178
|
-
@abstractmethod
|
|
179
|
-
def model(self) -> str | None:
|
|
180
|
-
"""Should return the name of the response model."""
|
|
181
|
-
...
|
|
182
|
-
|
|
183
|
-
@computed_field
|
|
184
|
-
@property
|
|
185
|
-
@abstractmethod
|
|
186
|
-
def id(self) -> str | None:
|
|
187
|
-
"""Should return the id of the response."""
|
|
188
|
-
...
|
|
189
|
-
|
|
190
|
-
@property
|
|
191
|
-
@abstractmethod
|
|
192
|
-
def usage(self) -> Any: # noqa: ANN401
|
|
193
|
-
"""Should return the usage of the response.
|
|
194
|
-
|
|
195
|
-
If there is no usage, this method must return None.
|
|
196
|
-
"""
|
|
197
|
-
...
|
|
198
|
-
|
|
199
|
-
@computed_field
|
|
200
|
-
@property
|
|
201
|
-
@abstractmethod
|
|
202
|
-
def input_tokens(self) -> int | float | None:
|
|
203
|
-
"""Should return the number of input tokens.
|
|
204
|
-
|
|
205
|
-
If there is no input_tokens, this method must return None.
|
|
206
|
-
"""
|
|
207
|
-
...
|
|
208
|
-
|
|
209
|
-
@computed_field
|
|
210
|
-
@property
|
|
211
|
-
@abstractmethod
|
|
212
|
-
def cached_tokens(self) -> int | float | None:
|
|
213
|
-
"""Should return the number of cached tokens.
|
|
214
|
-
|
|
215
|
-
If there is no cached_tokens, this method must return None.
|
|
216
|
-
"""
|
|
217
|
-
...
|
|
218
|
-
|
|
219
|
-
@computed_field
|
|
220
|
-
@property
|
|
221
|
-
@abstractmethod
|
|
222
|
-
def output_tokens(self) -> int | float | None:
|
|
223
|
-
"""Should return the number of output tokens.
|
|
224
|
-
|
|
225
|
-
If there is no output_tokens, this method must return None.
|
|
226
|
-
"""
|
|
227
|
-
...
|
|
228
|
-
|
|
229
|
-
@computed_field
|
|
230
|
-
@property
|
|
231
|
-
@abstractmethod
|
|
232
|
-
def cost_metadata(self) -> CostMetadata:
|
|
233
|
-
"""Get metadata required for cost calculation.
|
|
234
|
-
|
|
235
|
-
Returns:
|
|
236
|
-
Metadata relevant to cost calculation
|
|
237
|
-
"""
|
|
238
|
-
|
|
239
|
-
return CostMetadata(
|
|
240
|
-
input_tokens=self.input_tokens,
|
|
241
|
-
output_tokens=self.output_tokens,
|
|
242
|
-
cached_tokens=self.cached_tokens,
|
|
243
|
-
)
|
|
244
|
-
|
|
245
|
-
@computed_field
|
|
246
|
-
@property
|
|
247
|
-
def cost(self) -> float | None:
|
|
248
|
-
"""Calculate the cost of this API call using the unified calculate_cost function."""
|
|
249
|
-
|
|
250
|
-
model = self.model
|
|
251
|
-
if not model:
|
|
252
|
-
return None
|
|
253
|
-
|
|
254
|
-
if self.input_tokens is None or self.output_tokens is None:
|
|
255
|
-
return None
|
|
256
|
-
|
|
257
|
-
return calculate_cost(
|
|
258
|
-
provider=self.provider,
|
|
259
|
-
model=model,
|
|
260
|
-
metadata=self.cost_metadata,
|
|
261
|
-
)
|
|
262
|
-
|
|
263
|
-
@property
|
|
264
|
-
def provider(self) -> Provider:
|
|
265
|
-
"""Get the provider used for this API call."""
|
|
266
|
-
return cast(Provider, self._provider)
|
|
267
|
-
|
|
268
|
-
@computed_field
|
|
269
|
-
@cached_property
|
|
270
|
-
@abstractmethod
|
|
271
|
-
def message_param(self) -> Any: # noqa: ANN401
|
|
272
|
-
"""Returns the assistant's response as a message parameter."""
|
|
273
|
-
...
|
|
274
|
-
|
|
275
|
-
@cached_property
|
|
276
|
-
@abstractmethod
|
|
277
|
-
def tools(self) -> list[_BaseToolT] | None:
|
|
278
|
-
"""Returns the tools for the 0th choice message."""
|
|
279
|
-
...
|
|
280
|
-
|
|
281
|
-
@cached_property
|
|
282
|
-
@abstractmethod
|
|
283
|
-
def tool(self) -> _BaseToolT | None:
|
|
284
|
-
"""Returns the 0th tool for the 0th choice message."""
|
|
285
|
-
...
|
|
286
|
-
|
|
287
|
-
@classmethod
|
|
288
|
-
@abstractmethod
|
|
289
|
-
@transform_tool_outputs
|
|
290
|
-
def tool_message_params(
|
|
291
|
-
cls, tools_and_outputs: Sequence[tuple[_BaseToolT, str]]
|
|
292
|
-
) -> list[Any]:
|
|
293
|
-
"""Returns the tool message parameters for tool call results.
|
|
294
|
-
|
|
295
|
-
Args:
|
|
296
|
-
tools_and_outputs: The sequence of tools and their outputs from which the tool
|
|
297
|
-
message parameters should be constructed.
|
|
298
|
-
"""
|
|
299
|
-
...
|
|
300
|
-
|
|
301
|
-
@property
|
|
302
|
-
@abstractmethod
|
|
303
|
-
def common_finish_reasons(self) -> list[FinishReason] | None:
|
|
304
|
-
"""Provider-agnostic finish reasons."""
|
|
305
|
-
...
|
|
306
|
-
|
|
307
|
-
@property
|
|
308
|
-
@abstractmethod
|
|
309
|
-
def common_message_param(self) -> BaseMessageParam:
|
|
310
|
-
"""Provider-agnostic assistant message param."""
|
|
311
|
-
...
|
|
312
|
-
|
|
313
|
-
@property
|
|
314
|
-
@abstractmethod
|
|
315
|
-
def common_user_message_param(self) -> BaseMessageParam | None:
|
|
316
|
-
"""Provider-agnostic user message param."""
|
|
317
|
-
...
|
|
318
|
-
|
|
319
|
-
@property
|
|
320
|
-
def common_messages(self) -> list[BaseMessageParam]:
|
|
321
|
-
"""Provider-agnostic list of messages."""
|
|
322
|
-
return self._message_converter.from_provider(self.messages)
|
|
323
|
-
|
|
324
|
-
@property
|
|
325
|
-
def common_tools(self) -> list[Tool] | None:
|
|
326
|
-
"""Provider-agnostic tools."""
|
|
327
|
-
from ...llm.tool import Tool
|
|
328
|
-
|
|
329
|
-
if not self.tools:
|
|
330
|
-
return None
|
|
331
|
-
return [Tool(tool=tool) for tool in self.tools] # pyright: ignore [reportAbstractUsage]
|
|
332
|
-
|
|
333
|
-
@property
|
|
334
|
-
def common_usage(self) -> Usage | None:
|
|
335
|
-
"""Provider-agnostic usage info."""
|
|
336
|
-
return get_common_usage(
|
|
337
|
-
self.input_tokens, self.cached_tokens, self.output_tokens
|
|
338
|
-
)
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
"""This module contains the `BaseCallResponseChunk` class.
|
|
2
|
-
|
|
3
|
-
usage docs: learn/streams.md#handling-streamed-responses
|
|
4
|
-
"""
|
|
5
|
-
|
|
6
|
-
from __future__ import annotations
|
|
7
|
-
|
|
8
|
-
from abc import ABC, abstractmethod
|
|
9
|
-
from typing import Any, Generic, TypeVar
|
|
10
|
-
|
|
11
|
-
from pydantic import BaseModel, ConfigDict
|
|
12
|
-
|
|
13
|
-
from mirascope.core.base._utils import get_common_usage
|
|
14
|
-
from mirascope.core.base.types import CostMetadata, FinishReason, Usage
|
|
15
|
-
|
|
16
|
-
_ChunkT = TypeVar("_ChunkT", bound=Any)
|
|
17
|
-
_FinishReasonT = TypeVar("_FinishReasonT", bound=Any)
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
class BaseCallResponseChunk(BaseModel, Generic[_ChunkT, _FinishReasonT], ABC):
|
|
21
|
-
"""A base abstract interface for LLM streaming response chunks.
|
|
22
|
-
|
|
23
|
-
Attributes:
|
|
24
|
-
chunk: The original response chunk from whichever model response this wraps.
|
|
25
|
-
"""
|
|
26
|
-
|
|
27
|
-
chunk: _ChunkT
|
|
28
|
-
|
|
29
|
-
model_config = ConfigDict(extra="allow", arbitrary_types_allowed=True)
|
|
30
|
-
|
|
31
|
-
def __str__(self) -> str:
|
|
32
|
-
"""Returns the string content of the chunk."""
|
|
33
|
-
return self.content
|
|
34
|
-
|
|
35
|
-
@property
|
|
36
|
-
@abstractmethod
|
|
37
|
-
def content(self) -> str:
|
|
38
|
-
"""Should return the string content of the response chunk.
|
|
39
|
-
|
|
40
|
-
If there are multiple choices in a chunk, this method should select the 0th
|
|
41
|
-
choice and return it's string content.
|
|
42
|
-
|
|
43
|
-
If there is no string content (e.g. when using tools), this method must return
|
|
44
|
-
the empty string.
|
|
45
|
-
"""
|
|
46
|
-
...
|
|
47
|
-
|
|
48
|
-
@property
|
|
49
|
-
@abstractmethod
|
|
50
|
-
def finish_reasons(self) -> list[_FinishReasonT] | None:
|
|
51
|
-
"""Should return the finish reasons of the response.
|
|
52
|
-
|
|
53
|
-
If there is no finish reason, this method must return None.
|
|
54
|
-
"""
|
|
55
|
-
...
|
|
56
|
-
|
|
57
|
-
@property
|
|
58
|
-
@abstractmethod
|
|
59
|
-
def model(self) -> str | None:
|
|
60
|
-
"""Should return the name of the response model."""
|
|
61
|
-
...
|
|
62
|
-
|
|
63
|
-
@property
|
|
64
|
-
@abstractmethod
|
|
65
|
-
def id(self) -> str | None:
|
|
66
|
-
"""Should return the id of the response."""
|
|
67
|
-
...
|
|
68
|
-
|
|
69
|
-
@property
|
|
70
|
-
@abstractmethod
|
|
71
|
-
def usage(self) -> Any: # noqa: ANN401
|
|
72
|
-
"""Should return the usage of the response.
|
|
73
|
-
|
|
74
|
-
If there is no usage, this method must return None.
|
|
75
|
-
"""
|
|
76
|
-
...
|
|
77
|
-
|
|
78
|
-
@property
|
|
79
|
-
@abstractmethod
|
|
80
|
-
def input_tokens(self) -> int | float | None:
|
|
81
|
-
"""Should return the number of input tokens.
|
|
82
|
-
|
|
83
|
-
If there is no input_tokens, this method must return None.
|
|
84
|
-
"""
|
|
85
|
-
...
|
|
86
|
-
|
|
87
|
-
@property
|
|
88
|
-
@abstractmethod
|
|
89
|
-
def cached_tokens(self) -> int | float | None:
|
|
90
|
-
"""Should return the number of cached tokens.
|
|
91
|
-
|
|
92
|
-
If there is no cached_tokens, this method must return None.
|
|
93
|
-
"""
|
|
94
|
-
...
|
|
95
|
-
|
|
96
|
-
@property
|
|
97
|
-
@abstractmethod
|
|
98
|
-
def output_tokens(self) -> int | float | None:
|
|
99
|
-
"""Should return the number of output tokens.
|
|
100
|
-
|
|
101
|
-
If there is no output_tokens, this method must return None.
|
|
102
|
-
"""
|
|
103
|
-
...
|
|
104
|
-
|
|
105
|
-
@property
|
|
106
|
-
@abstractmethod
|
|
107
|
-
def cost_metadata(self) -> CostMetadata:
|
|
108
|
-
"""Get metadata required for cost calculation.
|
|
109
|
-
|
|
110
|
-
Returns:
|
|
111
|
-
A CostMetadata object with information relevant to cost calculation
|
|
112
|
-
"""
|
|
113
|
-
return CostMetadata(
|
|
114
|
-
input_tokens=self.input_tokens,
|
|
115
|
-
output_tokens=self.output_tokens,
|
|
116
|
-
cached_tokens=self.cached_tokens,
|
|
117
|
-
)
|
|
118
|
-
|
|
119
|
-
@property
|
|
120
|
-
@abstractmethod
|
|
121
|
-
def common_finish_reasons(self) -> list[FinishReason] | None:
|
|
122
|
-
"""Provider-agnostic finish reasons."""
|
|
123
|
-
...
|
|
124
|
-
|
|
125
|
-
@property
|
|
126
|
-
def common_usage(self) -> Usage | None:
|
|
127
|
-
"""Provider-agnostic usage info."""
|
|
128
|
-
return get_common_usage(
|
|
129
|
-
self.input_tokens, self.cached_tokens, self.output_tokens
|
|
130
|
-
)
|