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,38 +0,0 @@
|
|
|
1
|
-
"""usage docs: learn/calls.md#provider-specific-parameters"""
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
from collections.abc import Mapping
|
|
6
|
-
from typing import Any
|
|
7
|
-
|
|
8
|
-
from mypy_boto3_bedrock_runtime.type_defs import (
|
|
9
|
-
GuardrailConfigurationTypeDef,
|
|
10
|
-
InferenceConfigurationTypeDef,
|
|
11
|
-
SystemContentBlockTypeDef,
|
|
12
|
-
ToolConfigurationTypeDef,
|
|
13
|
-
)
|
|
14
|
-
from typing_extensions import NotRequired
|
|
15
|
-
|
|
16
|
-
from ..base import BaseCallParams
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
class BedrockCallParams(BaseCallParams):
|
|
20
|
-
"""The parameters to use when calling the Bedrock API.
|
|
21
|
-
|
|
22
|
-
[Bedrock converse API Reference](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/bedrock-runtime/client/converse.html)
|
|
23
|
-
|
|
24
|
-
Attributes:
|
|
25
|
-
system (Sequence[SystemContentBlockTypeDef]): The system content blocks to use in the API call.
|
|
26
|
-
inferenceConfig (InferenceConfigurationTypeDef): The inference configuration to use in the API call.
|
|
27
|
-
toolConfig (ToolConfigurationTypeDef): The tool configuration to use in the API call.
|
|
28
|
-
guardrailConfig (GuardrailConfigurationTypeDef): The guardrail configuration to use in the API call.
|
|
29
|
-
additionalModelRequestFields (Mapping[str, Any]): Additional model request fields to use in the API call.
|
|
30
|
-
additionalModelResponseFieldPaths (Sequence[str]): Additional model response field paths to use in the API call.
|
|
31
|
-
"""
|
|
32
|
-
|
|
33
|
-
system: NotRequired[list[SystemContentBlockTypeDef]]
|
|
34
|
-
inferenceConfig: NotRequired[InferenceConfigurationTypeDef]
|
|
35
|
-
toolConfig: NotRequired[ToolConfigurationTypeDef]
|
|
36
|
-
guardrailConfig: NotRequired[GuardrailConfigurationTypeDef]
|
|
37
|
-
additionalModelRequestFields: NotRequired[Mapping[str, Any]]
|
|
38
|
-
additionalModelResponseFieldPaths: NotRequired[list[str]]
|
|
@@ -1,248 +0,0 @@
|
|
|
1
|
-
"""This module contains the `BedrockCallResponse` 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 cast
|
|
9
|
-
|
|
10
|
-
from mypy_boto3_bedrock_runtime.type_defs import (
|
|
11
|
-
ConverseResponseTypeDef as SyncConverseResponseTypeDef,
|
|
12
|
-
)
|
|
13
|
-
from pydantic import SerializeAsAny, SkipValidation, computed_field
|
|
14
|
-
from types_aiobotocore_bedrock_runtime.type_defs import (
|
|
15
|
-
ConverseResponseTypeDef as AsyncConverseResponseTypeDef,
|
|
16
|
-
)
|
|
17
|
-
|
|
18
|
-
from .. import BaseMessageParam
|
|
19
|
-
from ..base import (
|
|
20
|
-
BaseCallResponse,
|
|
21
|
-
transform_tool_outputs,
|
|
22
|
-
)
|
|
23
|
-
from ..base.types import CostMetadata, FinishReason
|
|
24
|
-
from ._call_kwargs import BedrockCallKwargs
|
|
25
|
-
from ._types import (
|
|
26
|
-
AssistantMessageTypeDef,
|
|
27
|
-
AsyncMessageTypeDef,
|
|
28
|
-
InternalBedrockMessageParam,
|
|
29
|
-
SyncMessageTypeDef,
|
|
30
|
-
TokenUsageTypeDef,
|
|
31
|
-
ToolResultBlockContentTypeDef,
|
|
32
|
-
ToolResultBlockMessageTypeDef,
|
|
33
|
-
ToolTypeDef,
|
|
34
|
-
ToolUseBlockContentTypeDef,
|
|
35
|
-
UserMessageTypeDef,
|
|
36
|
-
)
|
|
37
|
-
from ._utils._convert_finish_reason_to_common_finish_reasons import (
|
|
38
|
-
_convert_finish_reasons_to_common_finish_reasons,
|
|
39
|
-
)
|
|
40
|
-
from ._utils._message_param_converter import BedrockMessageParamConverter
|
|
41
|
-
from .call_params import BedrockCallParams
|
|
42
|
-
from .dynamic_config import AsyncBedrockDynamicConfig, BedrockDynamicConfig
|
|
43
|
-
from .tool import BedrockTool
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
class BedrockCallResponse(
|
|
47
|
-
BaseCallResponse[
|
|
48
|
-
SyncConverseResponseTypeDef | AsyncConverseResponseTypeDef,
|
|
49
|
-
BedrockTool,
|
|
50
|
-
ToolTypeDef,
|
|
51
|
-
AsyncBedrockDynamicConfig | BedrockDynamicConfig,
|
|
52
|
-
InternalBedrockMessageParam,
|
|
53
|
-
BedrockCallParams,
|
|
54
|
-
UserMessageTypeDef,
|
|
55
|
-
BedrockMessageParamConverter,
|
|
56
|
-
]
|
|
57
|
-
):
|
|
58
|
-
"""A convenience wrapper around the Bedrock `ChatCompletion` response.
|
|
59
|
-
|
|
60
|
-
When calling the Bedrock API using a function decorated with `bedrock_call`, the
|
|
61
|
-
response will be an `BedrockCallResponse` instance with properties that allow for
|
|
62
|
-
more convenience access to commonly used attributes.
|
|
63
|
-
|
|
64
|
-
Example:
|
|
65
|
-
|
|
66
|
-
```python
|
|
67
|
-
from mirascope.core import prompt_template
|
|
68
|
-
from mirascope.core.bedrock import bedrock_call
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
@bedrock_call("anthropic.claude-3-haiku-20240307-v1:0")
|
|
72
|
-
@prompt_template("Recommend a {genre} book")
|
|
73
|
-
def recommend_book(genre: str):
|
|
74
|
-
...
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
response = recommend_book("fantasy") # response is an `BedrockCallResponse` instance
|
|
78
|
-
print(response.content)
|
|
79
|
-
```
|
|
80
|
-
"""
|
|
81
|
-
|
|
82
|
-
response: SkipValidation[SyncConverseResponseTypeDef | AsyncConverseResponseTypeDef]
|
|
83
|
-
_message_converter: type[BedrockMessageParamConverter] = (
|
|
84
|
-
BedrockMessageParamConverter
|
|
85
|
-
)
|
|
86
|
-
|
|
87
|
-
_provider = "bedrock"
|
|
88
|
-
|
|
89
|
-
@property
|
|
90
|
-
def message(self) -> SyncMessageTypeDef | AsyncMessageTypeDef | None:
|
|
91
|
-
"""Returns the message of the response."""
|
|
92
|
-
message = self.response.get("output", {}).get("message", {})
|
|
93
|
-
if message:
|
|
94
|
-
return cast(SyncMessageTypeDef | AsyncMessageTypeDef, message)
|
|
95
|
-
return None
|
|
96
|
-
|
|
97
|
-
@computed_field
|
|
98
|
-
@property
|
|
99
|
-
def content(self) -> str:
|
|
100
|
-
"""Returns the content of the chat completion for the 0th choice."""
|
|
101
|
-
if not self.message:
|
|
102
|
-
return ""
|
|
103
|
-
if content := self.message.get("content", []):
|
|
104
|
-
return content[0].get("text", "")
|
|
105
|
-
return ""
|
|
106
|
-
|
|
107
|
-
@computed_field
|
|
108
|
-
@property
|
|
109
|
-
def finish_reasons(self) -> list[str]:
|
|
110
|
-
"""Returns the finish reasons of the response."""
|
|
111
|
-
return [self.response["stopReason"]]
|
|
112
|
-
|
|
113
|
-
@computed_field
|
|
114
|
-
@property
|
|
115
|
-
def model(self) -> str:
|
|
116
|
-
"""Returns the name of the response model."""
|
|
117
|
-
return cast(BedrockCallKwargs, self.call_kwargs)["modelId"]
|
|
118
|
-
|
|
119
|
-
@computed_field
|
|
120
|
-
@property
|
|
121
|
-
def id(self) -> str:
|
|
122
|
-
"""Returns the id of the response."""
|
|
123
|
-
return self.response["ResponseMetadata"]["RequestId"]
|
|
124
|
-
|
|
125
|
-
@property
|
|
126
|
-
def usage(self) -> TokenUsageTypeDef:
|
|
127
|
-
"""Returns the usage of the chat completion."""
|
|
128
|
-
return self.response["usage"]
|
|
129
|
-
|
|
130
|
-
@computed_field
|
|
131
|
-
@property
|
|
132
|
-
def input_tokens(self) -> int | None:
|
|
133
|
-
"""Returns the number of input tokens."""
|
|
134
|
-
return self.usage["inputTokens"] if self.usage else None
|
|
135
|
-
|
|
136
|
-
@property
|
|
137
|
-
def cached_tokens(self) -> int | None:
|
|
138
|
-
"""Returns the number of cached tokens."""
|
|
139
|
-
return None
|
|
140
|
-
|
|
141
|
-
@computed_field
|
|
142
|
-
@property
|
|
143
|
-
def output_tokens(self) -> int | None:
|
|
144
|
-
"""Returns the number of output tokens."""
|
|
145
|
-
return self.usage["outputTokens"] if self.usage else None
|
|
146
|
-
|
|
147
|
-
@computed_field
|
|
148
|
-
@cached_property
|
|
149
|
-
def message_param(self) -> SerializeAsAny[AssistantMessageTypeDef]:
|
|
150
|
-
"""Returns the assistants's response as a message parameter."""
|
|
151
|
-
message = self.message
|
|
152
|
-
if not message:
|
|
153
|
-
return AssistantMessageTypeDef(role="assistant", content=[])
|
|
154
|
-
return AssistantMessageTypeDef(role="assistant", content=message["content"])
|
|
155
|
-
|
|
156
|
-
@cached_property
|
|
157
|
-
def tools(self) -> list[BedrockTool] | None:
|
|
158
|
-
"""Returns any available tool calls as their `BedrockTool` definition.
|
|
159
|
-
|
|
160
|
-
Raises:
|
|
161
|
-
ValidationError: if a tool call doesn't match the tool's schema.
|
|
162
|
-
ValueError: if the model refused to response, in which case the error
|
|
163
|
-
message will be the refusal.
|
|
164
|
-
"""
|
|
165
|
-
if not self.message:
|
|
166
|
-
return None
|
|
167
|
-
content = self.message.get("content", [])
|
|
168
|
-
tool_uses = [t for c in content if (t := c.get("toolUse"))]
|
|
169
|
-
if not self.tool_types or not tool_uses:
|
|
170
|
-
return None
|
|
171
|
-
|
|
172
|
-
extracted_tools = []
|
|
173
|
-
for tool_use in tool_uses:
|
|
174
|
-
for tool_type in self.tool_types:
|
|
175
|
-
if tool_use["name"] == tool_type._name():
|
|
176
|
-
extracted_tools.append(
|
|
177
|
-
tool_type.from_tool_call(
|
|
178
|
-
cast(ToolUseBlockContentTypeDef, {"toolUse": tool_use})
|
|
179
|
-
)
|
|
180
|
-
)
|
|
181
|
-
break
|
|
182
|
-
|
|
183
|
-
return extracted_tools
|
|
184
|
-
|
|
185
|
-
@cached_property
|
|
186
|
-
def tool(self) -> BedrockTool | None:
|
|
187
|
-
"""Returns the 0th tool for the 0th choice message.
|
|
188
|
-
|
|
189
|
-
Raises:
|
|
190
|
-
ValidationError: if the tool call doesn't match the tool's schema.
|
|
191
|
-
ValueError: if the model refused to response, in which case the error
|
|
192
|
-
message will be the refusal.
|
|
193
|
-
"""
|
|
194
|
-
if tools := self.tools:
|
|
195
|
-
return tools[0]
|
|
196
|
-
return None
|
|
197
|
-
|
|
198
|
-
@classmethod
|
|
199
|
-
@transform_tool_outputs
|
|
200
|
-
def tool_message_params(
|
|
201
|
-
cls, tools_and_outputs: Sequence[tuple[BedrockTool, str]]
|
|
202
|
-
) -> list[ToolResultBlockMessageTypeDef]:
|
|
203
|
-
"""Returns the tool message parameters for tool call results.
|
|
204
|
-
|
|
205
|
-
Args:
|
|
206
|
-
tools_and_outputs: The sequence of tools and their outputs from which the tool
|
|
207
|
-
message parameters should be constructed.
|
|
208
|
-
|
|
209
|
-
Returns:
|
|
210
|
-
The list of constructed `ChatCompletionToolMessageParam` parameters.
|
|
211
|
-
"""
|
|
212
|
-
return [
|
|
213
|
-
ToolResultBlockMessageTypeDef(
|
|
214
|
-
role="user",
|
|
215
|
-
content=[
|
|
216
|
-
cast(
|
|
217
|
-
ToolResultBlockContentTypeDef,
|
|
218
|
-
{
|
|
219
|
-
"toolResult": {
|
|
220
|
-
"content": [{"text": output}],
|
|
221
|
-
"toolUseId": tool.tool_call["toolUse"]["toolUseId"], # pyright: ignore [reportOptionalSubscript]
|
|
222
|
-
}
|
|
223
|
-
},
|
|
224
|
-
)
|
|
225
|
-
],
|
|
226
|
-
)
|
|
227
|
-
for tool, output in tools_and_outputs
|
|
228
|
-
]
|
|
229
|
-
|
|
230
|
-
@property
|
|
231
|
-
def common_finish_reasons(self) -> list[FinishReason] | None:
|
|
232
|
-
return _convert_finish_reasons_to_common_finish_reasons(self.finish_reasons)
|
|
233
|
-
|
|
234
|
-
@property
|
|
235
|
-
def common_message_param(self) -> BaseMessageParam:
|
|
236
|
-
return BedrockMessageParamConverter.from_provider([self.message_param])[0]
|
|
237
|
-
|
|
238
|
-
@property
|
|
239
|
-
def common_user_message_param(self) -> BaseMessageParam | None:
|
|
240
|
-
if not self.user_message_param:
|
|
241
|
-
return None
|
|
242
|
-
return BedrockMessageParamConverter.from_provider([self.user_message_param])[0] # pyright: ignore [reportArgumentType]
|
|
243
|
-
|
|
244
|
-
@computed_field
|
|
245
|
-
@property
|
|
246
|
-
def cost_metadata(self) -> CostMetadata:
|
|
247
|
-
"""Get metadata required for cost calculation."""
|
|
248
|
-
return super().cost_metadata
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
"""This module contains the `BedrockCallResponseChunk` class.
|
|
2
|
-
|
|
3
|
-
usage docs: learn/streams.md#handling-streamed-responses
|
|
4
|
-
"""
|
|
5
|
-
|
|
6
|
-
from typing import cast
|
|
7
|
-
|
|
8
|
-
from pydantic import SkipValidation
|
|
9
|
-
from types_aiobotocore_bedrock_runtime.literals import StopReasonType as FinishReason
|
|
10
|
-
|
|
11
|
-
from ..base import BaseCallResponseChunk, types
|
|
12
|
-
from ..base.types import CostMetadata
|
|
13
|
-
from ._types import AsyncStreamOutputChunk, StreamOutputChunk, TokenUsageTypeDef
|
|
14
|
-
from ._utils._convert_finish_reason_to_common_finish_reasons import (
|
|
15
|
-
_convert_finish_reasons_to_common_finish_reasons,
|
|
16
|
-
)
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
class BedrockCallResponseChunk(
|
|
20
|
-
BaseCallResponseChunk[StreamOutputChunk | AsyncStreamOutputChunk, FinishReason]
|
|
21
|
-
):
|
|
22
|
-
"""A convenience wrapper around the Bedrock `ChatCompletionChunk` streamed chunks.
|
|
23
|
-
|
|
24
|
-
When calling the Bedrock API using a function decorated with `bedrock_call` and
|
|
25
|
-
`stream` set to `True`, the stream will contain `BedrockResponseChunk` instances with
|
|
26
|
-
properties that allow for more convenient access to commonly used attributes.
|
|
27
|
-
|
|
28
|
-
Example:
|
|
29
|
-
|
|
30
|
-
```python
|
|
31
|
-
from mirascope.core import prompt_template
|
|
32
|
-
from mirascope.core.bedrock import bedrock_call
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
@bedrock_call("anthropic.claude-3-haiku-20240307-v1:0", stream=True)
|
|
36
|
-
@prompt_template("Recommend a {genre} book")
|
|
37
|
-
def recommend_book(genre: str):
|
|
38
|
-
...
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
stream = recommend_book("fantasy") # response is an `BedrockStream`
|
|
42
|
-
for chunk, _ in stream:
|
|
43
|
-
print(chunk.content, end="", flush=True)
|
|
44
|
-
```
|
|
45
|
-
"""
|
|
46
|
-
|
|
47
|
-
chunk: SkipValidation[StreamOutputChunk | AsyncStreamOutputChunk]
|
|
48
|
-
|
|
49
|
-
@property
|
|
50
|
-
def content(self) -> str:
|
|
51
|
-
"""Returns the content for the 0th choice delta."""
|
|
52
|
-
if content_block_delta := self.chunk.get("contentBlockDelta"):
|
|
53
|
-
return content_block_delta["delta"].get("text", "")
|
|
54
|
-
return ""
|
|
55
|
-
|
|
56
|
-
@property
|
|
57
|
-
def finish_reasons(self) -> list[FinishReason]:
|
|
58
|
-
"""Returns the finish reasons of the response."""
|
|
59
|
-
if (stop_reason := self.chunk.get("messageStop")) and stop_reason.get(
|
|
60
|
-
"stopReason"
|
|
61
|
-
):
|
|
62
|
-
return [stop_reason["stopReason"]]
|
|
63
|
-
return []
|
|
64
|
-
|
|
65
|
-
@property
|
|
66
|
-
def model(self) -> str:
|
|
67
|
-
"""Returns the name of the response model."""
|
|
68
|
-
return self.chunk["model"]
|
|
69
|
-
|
|
70
|
-
@property
|
|
71
|
-
def id(self) -> str:
|
|
72
|
-
"""Returns the id of the response."""
|
|
73
|
-
return self.chunk["responseMetadata"]["RequestId"]
|
|
74
|
-
|
|
75
|
-
@property
|
|
76
|
-
def usage(self) -> TokenUsageTypeDef | None:
|
|
77
|
-
"""Returns the usage of the chat completion."""
|
|
78
|
-
usage = self.chunk.get("metadata", {}).get("usage")
|
|
79
|
-
if usage:
|
|
80
|
-
return usage
|
|
81
|
-
return None
|
|
82
|
-
|
|
83
|
-
@property
|
|
84
|
-
def input_tokens(self) -> int | None:
|
|
85
|
-
"""Returns the number of input tokens."""
|
|
86
|
-
if self.usage:
|
|
87
|
-
return self.usage["inputTokens"]
|
|
88
|
-
return None
|
|
89
|
-
|
|
90
|
-
@property
|
|
91
|
-
def cached_tokens(self) -> int | None:
|
|
92
|
-
"""Returns the number of cached tokens."""
|
|
93
|
-
return None
|
|
94
|
-
|
|
95
|
-
@property
|
|
96
|
-
def output_tokens(self) -> int | None:
|
|
97
|
-
"""Returns the number of output tokens."""
|
|
98
|
-
if self.usage:
|
|
99
|
-
return self.usage["outputTokens"]
|
|
100
|
-
return None
|
|
101
|
-
|
|
102
|
-
@property
|
|
103
|
-
def cost_metadata(self) -> CostMetadata:
|
|
104
|
-
"""Returns the cost metadata."""
|
|
105
|
-
return super().cost_metadata
|
|
106
|
-
|
|
107
|
-
@property
|
|
108
|
-
def common_finish_reasons(self) -> list[types.FinishReason] | None:
|
|
109
|
-
return _convert_finish_reasons_to_common_finish_reasons(
|
|
110
|
-
cast(list[str], self.finish_reasons)
|
|
111
|
-
)
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"""This module defines the function return type for functions as LLM calls."""
|
|
2
|
-
|
|
3
|
-
from mypy_boto3_bedrock_runtime import BedrockRuntimeClient
|
|
4
|
-
from types_aiobotocore_bedrock_runtime import (
|
|
5
|
-
BedrockRuntimeClient as AsyncBedrockRuntimeClient,
|
|
6
|
-
)
|
|
7
|
-
|
|
8
|
-
from ..base import BaseDynamicConfig, BaseMessageParam
|
|
9
|
-
from ._types import InternalBedrockMessageParam
|
|
10
|
-
from .call_params import BedrockCallParams
|
|
11
|
-
|
|
12
|
-
AsyncBedrockDynamicConfig = BaseDynamicConfig[
|
|
13
|
-
InternalBedrockMessageParam | BaseMessageParam,
|
|
14
|
-
BedrockCallParams,
|
|
15
|
-
AsyncBedrockRuntimeClient,
|
|
16
|
-
]
|
|
17
|
-
BedrockDynamicConfig = BaseDynamicConfig[
|
|
18
|
-
InternalBedrockMessageParam | BaseMessageParam,
|
|
19
|
-
BedrockCallParams,
|
|
20
|
-
BedrockRuntimeClient,
|
|
21
|
-
]
|
|
22
|
-
|
|
23
|
-
"""The function return type for functions wrapped with the `bedrock_call` decorator.
|
|
24
|
-
|
|
25
|
-
Example:
|
|
26
|
-
|
|
27
|
-
```python
|
|
28
|
-
from mirascope.core import prompt_template
|
|
29
|
-
from mirascope.core.bedrock import BedrockDynamicConfig, bedrock_call
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
@bedrock_call("anthropic.claude-3-haiku-20240307-v1:0")
|
|
33
|
-
@prompt_template("Recommend a {capitalized_genre} book")
|
|
34
|
-
def recommend_book(genre: str) -> BedrockDynamicConfig:
|
|
35
|
-
return {"computed_fields": {"capitalized_genre": genre.capitalize()}}
|
|
36
|
-
```
|
|
37
|
-
"""
|
mirascope/core/bedrock/py.typed
DELETED
|
File without changes
|
mirascope/core/bedrock/stream.py
DELETED
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
"""The `BedrockStream` 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 mypy_boto3_bedrock_runtime.literals import StopReasonType as FinishReason
|
|
9
|
-
from mypy_boto3_bedrock_runtime.type_defs import (
|
|
10
|
-
ConverseResponseTypeDef,
|
|
11
|
-
ConverseStreamMetadataEventTypeDef,
|
|
12
|
-
MessageOutputTypeDef,
|
|
13
|
-
ResponseMetadataTypeDef,
|
|
14
|
-
)
|
|
15
|
-
from types_aiobotocore_bedrock_runtime.type_defs import (
|
|
16
|
-
ConverseStreamMetadataEventTypeDef as AsyncConverseStreamMetadataEventTypeDef,
|
|
17
|
-
)
|
|
18
|
-
from types_aiobotocore_bedrock_runtime.type_defs import (
|
|
19
|
-
ResponseMetadataTypeDef as AsyncResponseMetadataTypeDef,
|
|
20
|
-
)
|
|
21
|
-
|
|
22
|
-
from ..base.stream import BaseStream
|
|
23
|
-
from ..base.types import CostMetadata
|
|
24
|
-
from ._types import (
|
|
25
|
-
AssistantMessageTypeDef,
|
|
26
|
-
InternalBedrockMessageParam,
|
|
27
|
-
ToolTypeDef,
|
|
28
|
-
ToolUseBlockContentTypeDef,
|
|
29
|
-
ToolUseBlockMessageTypeDef,
|
|
30
|
-
UserMessageTypeDef,
|
|
31
|
-
)
|
|
32
|
-
from .call_params import BedrockCallParams
|
|
33
|
-
from .call_response import BedrockCallResponse
|
|
34
|
-
from .call_response_chunk import BedrockCallResponseChunk
|
|
35
|
-
from .dynamic_config import AsyncBedrockDynamicConfig, BedrockDynamicConfig
|
|
36
|
-
from .tool import BedrockTool
|
|
37
|
-
|
|
38
|
-
_DEFAULT_RESPONSE_METADATA = ResponseMetadataTypeDef(
|
|
39
|
-
RequestId="", HTTPStatusCode=500, HTTPHeaders={}, RetryAttempts=0
|
|
40
|
-
)
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
class BedrockStream(
|
|
44
|
-
BaseStream[
|
|
45
|
-
BedrockCallResponse,
|
|
46
|
-
BedrockCallResponseChunk,
|
|
47
|
-
UserMessageTypeDef,
|
|
48
|
-
AssistantMessageTypeDef,
|
|
49
|
-
ToolUseBlockMessageTypeDef,
|
|
50
|
-
InternalBedrockMessageParam,
|
|
51
|
-
BedrockTool,
|
|
52
|
-
ToolTypeDef,
|
|
53
|
-
AsyncBedrockDynamicConfig | BedrockDynamicConfig,
|
|
54
|
-
BedrockCallParams,
|
|
55
|
-
FinishReason,
|
|
56
|
-
]
|
|
57
|
-
):
|
|
58
|
-
"""A class for convenience around streaming Bedrock LLM calls.
|
|
59
|
-
|
|
60
|
-
Example:
|
|
61
|
-
|
|
62
|
-
```python
|
|
63
|
-
from mirascope.core import prompt_template
|
|
64
|
-
from mirascope.core.bedrock import bedrock_call
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
@bedrock_call("gpt-4o-mini", stream=True)
|
|
68
|
-
@prompt_template("Recommend a {genre} book")
|
|
69
|
-
def recommend_book(genre: str):
|
|
70
|
-
...
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
stream = recommend_book("fantasy") # returns `BedrockStream` instance
|
|
74
|
-
for chunk, _ in stream:
|
|
75
|
-
print(chunk.content, end="", flush=True)
|
|
76
|
-
```
|
|
77
|
-
"""
|
|
78
|
-
|
|
79
|
-
_provider = "bedrock"
|
|
80
|
-
|
|
81
|
-
def __init__(self, *args: Any, **kwargs: Any) -> None: # noqa: ANN401
|
|
82
|
-
super().__init__(*args, **kwargs)
|
|
83
|
-
self._metadata: (
|
|
84
|
-
ConverseStreamMetadataEventTypeDef
|
|
85
|
-
| AsyncConverseStreamMetadataEventTypeDef
|
|
86
|
-
| None
|
|
87
|
-
) = None
|
|
88
|
-
self._response_metadata: (
|
|
89
|
-
ResponseMetadataTypeDef | AsyncResponseMetadataTypeDef
|
|
90
|
-
) = _DEFAULT_RESPONSE_METADATA
|
|
91
|
-
|
|
92
|
-
def _construct_message_param(
|
|
93
|
-
self,
|
|
94
|
-
tool_calls: list[ToolUseBlockContentTypeDef] | None = None,
|
|
95
|
-
content: str | None = None,
|
|
96
|
-
) -> AssistantMessageTypeDef:
|
|
97
|
-
"""Constructs the message parameter for the assistant."""
|
|
98
|
-
contents = []
|
|
99
|
-
if content is not None:
|
|
100
|
-
contents.append({"text": content})
|
|
101
|
-
|
|
102
|
-
if tool_calls:
|
|
103
|
-
contents += [
|
|
104
|
-
cast(ToolUseBlockContentTypeDef, {"toolUse": tool_call})
|
|
105
|
-
for tool_call in tool_calls
|
|
106
|
-
]
|
|
107
|
-
message_param = AssistantMessageTypeDef(role="assistant", content=contents)
|
|
108
|
-
return message_param
|
|
109
|
-
|
|
110
|
-
def _update_properties(self, chunk: BedrockCallResponseChunk) -> None:
|
|
111
|
-
"""Updates the properties of the stream."""
|
|
112
|
-
super()._update_properties(chunk)
|
|
113
|
-
if metadata := chunk.chunk.get("metadata"):
|
|
114
|
-
self._metadata = metadata
|
|
115
|
-
self._response_metadata = chunk.chunk["responseMetadata"]
|
|
116
|
-
|
|
117
|
-
def construct_call_response(self) -> BedrockCallResponse:
|
|
118
|
-
"""Constructs the call response from a consumed BedrockStream.
|
|
119
|
-
|
|
120
|
-
Raises:
|
|
121
|
-
ValueError: if the stream has not yet been consumed.
|
|
122
|
-
"""
|
|
123
|
-
if not hasattr(self, "message_param"):
|
|
124
|
-
raise ValueError(
|
|
125
|
-
"No stream response, check if the stream has been consumed."
|
|
126
|
-
)
|
|
127
|
-
response = ConverseResponseTypeDef(
|
|
128
|
-
output={"message": cast(MessageOutputTypeDef, self.message_param)},
|
|
129
|
-
stopReason=self.finish_reasons[0] if self.finish_reasons else "end_turn",
|
|
130
|
-
usage=self.metadata.get("usage", {}),
|
|
131
|
-
metrics=self.metadata.get("metrics", {}),
|
|
132
|
-
additionalModelResponseFields={},
|
|
133
|
-
trace=self.metadata.get("trace", {}),
|
|
134
|
-
ResponseMetadata=self._response_metadata,
|
|
135
|
-
)
|
|
136
|
-
return BedrockCallResponse(
|
|
137
|
-
metadata=self.metadata,
|
|
138
|
-
response=response,
|
|
139
|
-
tool_types=self.tool_types,
|
|
140
|
-
prompt_template=self.prompt_template,
|
|
141
|
-
fn_args=self.fn_args if self.fn_args else {},
|
|
142
|
-
dynamic_config=self.dynamic_config,
|
|
143
|
-
messages=self.messages,
|
|
144
|
-
call_params=self.call_params,
|
|
145
|
-
call_kwargs=self.call_kwargs,
|
|
146
|
-
user_message_param=self.user_message_param,
|
|
147
|
-
start_time=self.start_time,
|
|
148
|
-
end_time=self.end_time,
|
|
149
|
-
)
|
|
150
|
-
|
|
151
|
-
@property
|
|
152
|
-
def cost_metadata(self) -> CostMetadata:
|
|
153
|
-
"""Get metadata required for cost calculation."""
|
|
154
|
-
return super().cost_metadata
|
mirascope/core/bedrock/tool.py
DELETED
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
"""The `BedrockTool` class for easy tool usage with Bedrock LLM calls.
|
|
2
|
-
|
|
3
|
-
usage docs: learn/tools.md
|
|
4
|
-
"""
|
|
5
|
-
|
|
6
|
-
from __future__ import annotations
|
|
7
|
-
|
|
8
|
-
from mypy_boto3_bedrock_runtime.type_defs import (
|
|
9
|
-
ToolSpecificationTypeDef,
|
|
10
|
-
ToolTypeDef,
|
|
11
|
-
)
|
|
12
|
-
from pydantic.json_schema import SkipJsonSchema
|
|
13
|
-
|
|
14
|
-
from ..base import BaseTool, GenerateJsonSchemaNoTitles, ToolConfig
|
|
15
|
-
from ._types import ToolUseBlockContentTypeDef
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
class GenerateBedrockStrictToolJsonSchema(GenerateJsonSchemaNoTitles):
|
|
19
|
-
pass
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
class BedrockToolConfig(ToolConfig, total=False):
|
|
23
|
-
"""A tool configuration for Bedrock-specific features."""
|
|
24
|
-
|
|
25
|
-
pass
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
class BedrockTool(BaseTool):
|
|
29
|
-
"""A class for defining tools for Bedrock LLM calls.
|
|
30
|
-
|
|
31
|
-
Example:
|
|
32
|
-
|
|
33
|
-
```python
|
|
34
|
-
from mirascope.core import prompt_template
|
|
35
|
-
from mirascope.core.bedrock import bedrock_call
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
def format_book(title: str, author: str) -> str:
|
|
39
|
-
return f"{title} by {author}"
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
@bedrock_call("anthropic.claude-3-haiku-20240307-v1:0", tools=[format_book])
|
|
43
|
-
@prompt_template("Recommend a {genre} book")
|
|
44
|
-
def recommend_book(genre: str):
|
|
45
|
-
...
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
response = recommend_book("fantasy")
|
|
49
|
-
if tool := response.tool: # returns an `BedrockTool` instance
|
|
50
|
-
print(tool.call())
|
|
51
|
-
```
|
|
52
|
-
"""
|
|
53
|
-
|
|
54
|
-
__provider__ = "bedrock"
|
|
55
|
-
__tool_config_type__ = BedrockToolConfig
|
|
56
|
-
|
|
57
|
-
tool_call: SkipJsonSchema[ToolUseBlockContentTypeDef]
|
|
58
|
-
|
|
59
|
-
@property
|
|
60
|
-
def id(self) -> str | None:
|
|
61
|
-
return self.tool_call["toolUse"]["toolUseId"]
|
|
62
|
-
|
|
63
|
-
@classmethod
|
|
64
|
-
def tool_schema(cls) -> ToolTypeDef:
|
|
65
|
-
"""Constructs a JSON Schema tool schema from the `BaseModel` schema defined.
|
|
66
|
-
|
|
67
|
-
Example:
|
|
68
|
-
```python
|
|
69
|
-
from mirascope.core.bedrock import BedrockTool
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
def format_book(title: str, author: str) -> str:
|
|
73
|
-
return f"{title} by {author}"
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
tool_type = BedrockTool.type_from_fn(format_book)
|
|
77
|
-
print(tool_type.tool_schema()) # prints the Bedrock-specific tool schema
|
|
78
|
-
```
|
|
79
|
-
"""
|
|
80
|
-
schema_generator = GenerateJsonSchemaNoTitles
|
|
81
|
-
return ToolTypeDef(
|
|
82
|
-
toolSpec=ToolSpecificationTypeDef(
|
|
83
|
-
name=cls._name(),
|
|
84
|
-
description=cls._description(),
|
|
85
|
-
inputSchema={
|
|
86
|
-
"json": cls.model_json_schema(schema_generator=schema_generator)
|
|
87
|
-
},
|
|
88
|
-
)
|
|
89
|
-
)
|
|
90
|
-
|
|
91
|
-
@classmethod
|
|
92
|
-
def from_tool_call(cls, tool_call: ToolUseBlockContentTypeDef) -> BedrockTool:
|
|
93
|
-
"""Constructs an `BedrockTool` instance from a `tool_call`.
|
|
94
|
-
|
|
95
|
-
Args:
|
|
96
|
-
tool_call: The Bedrock tool call from which to construct this tool instance.
|
|
97
|
-
"""
|
|
98
|
-
return cls.model_validate(
|
|
99
|
-
{"tool_call": tool_call, **tool_call["toolUse"]["input"]}
|
|
100
|
-
)
|