mirascope 1.0.5__py3-none-any.whl → 2.1.1__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 +6 -6
- mirascope/_stubs.py +384 -0
- mirascope/_utils.py +34 -0
- mirascope/api/__init__.py +14 -0
- mirascope/api/_generated/README.md +207 -0
- mirascope/api/_generated/__init__.py +444 -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 +29 -0
- mirascope/api/_generated/project_memberships/client.py +528 -0
- mirascope/api/_generated/project_memberships/raw_client.py +1278 -0
- mirascope/api/_generated/project_memberships/types/__init__.py +33 -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_get_response.py +33 -0
- mirascope/api/_generated/project_memberships/types/project_memberships_get_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 +4987 -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 +316 -0
- mirascope/llm/calls/__init__.py +17 -0
- mirascope/llm/calls/calls.py +348 -0
- mirascope/llm/calls/decorator.py +268 -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 +291 -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 +83 -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 +1339 -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 +215 -0
- mirascope/llm/prompts/prompts.py +484 -0
- mirascope/llm/prompts/protocols.py +65 -0
- mirascope/llm/providers/__init__.py +65 -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 +297 -0
- mirascope/llm/providers/anthropic/_utils/beta_encode.py +272 -0
- mirascope/llm/providers/anthropic/_utils/decode.py +326 -0
- mirascope/llm/providers/anthropic/_utils/encode.py +431 -0
- mirascope/llm/providers/anthropic/_utils/errors.py +46 -0
- mirascope/llm/providers/anthropic/beta_provider.py +338 -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 +440 -0
- mirascope/llm/providers/base/__init__.py +14 -0
- mirascope/llm/providers/base/_utils.py +248 -0
- mirascope/llm/providers/base/base_provider.py +1463 -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 +357 -0
- mirascope/llm/providers/google/_utils/encode.py +418 -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 +456 -0
- mirascope/llm/providers/mirascope/__init__.py +5 -0
- mirascope/llm/providers/mirascope/_utils.py +73 -0
- mirascope/llm/providers/mirascope/provider.py +313 -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 +69 -0
- mirascope/llm/providers/mlx/encoding/transformers.py +146 -0
- mirascope/llm/providers/mlx/mlx.py +242 -0
- mirascope/llm/providers/mlx/model_id.py +17 -0
- mirascope/llm/providers/mlx/provider.py +416 -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 +18 -0
- mirascope/llm/providers/openai/completions/_utils/decode.py +252 -0
- mirascope/llm/providers/openai/completions/_utils/encode.py +390 -0
- mirascope/llm/providers/openai/completions/_utils/feature_info.py +50 -0
- mirascope/llm/providers/openai/completions/base_provider.py +522 -0
- mirascope/llm/providers/openai/completions/provider.py +28 -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 +405 -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 +289 -0
- mirascope/llm/providers/openai/responses/_utils/encode.py +399 -0
- mirascope/llm/providers/openai/responses/provider.py +472 -0
- mirascope/llm/providers/openrouter/__init__.py +5 -0
- mirascope/llm/providers/openrouter/provider.py +67 -0
- mirascope/llm/providers/provider_id.py +26 -0
- mirascope/llm/providers/provider_registry.py +305 -0
- mirascope/llm/providers/together/__init__.py +7 -0
- mirascope/llm/providers/together/provider.py +40 -0
- mirascope/llm/responses/__init__.py +66 -0
- mirascope/llm/responses/_utils.py +146 -0
- mirascope/llm/responses/base_response.py +103 -0
- mirascope/llm/responses/base_stream_response.py +824 -0
- mirascope/llm/responses/finish_reason.py +28 -0
- mirascope/llm/responses/response.py +362 -0
- mirascope/llm/responses/root_response.py +248 -0
- mirascope/llm/responses/stream_response.py +577 -0
- mirascope/llm/responses/streams.py +363 -0
- mirascope/llm/responses/usage.py +139 -0
- mirascope/llm/tools/__init__.py +71 -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/provider_tools.py +18 -0
- mirascope/llm/tools/tool_schema.py +321 -0
- mirascope/llm/tools/toolkit.py +178 -0
- mirascope/llm/tools/tools.py +263 -0
- mirascope/llm/tools/types.py +112 -0
- mirascope/llm/tools/web_search_tool.py +32 -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 +129 -0
- mirascope/ops/_internal/__init__.py +5 -0
- mirascope/ops/_internal/closure.py +1172 -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 +362 -0
- mirascope/ops/_internal/exporters/processors.py +104 -0
- mirascope/ops/_internal/exporters/types.py +165 -0
- mirascope/ops/_internal/exporters/utils.py +66 -0
- mirascope/ops/_internal/instrumentation/__init__.py +28 -0
- mirascope/ops/_internal/instrumentation/llm/__init__.py +8 -0
- mirascope/ops/_internal/instrumentation/llm/common.py +500 -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 +1777 -0
- mirascope/ops/_internal/instrumentation/llm/response.py +521 -0
- mirascope/ops/_internal/instrumentation/llm/serialize.py +324 -0
- mirascope/ops/_internal/instrumentation/providers/__init__.py +29 -0
- mirascope/ops/_internal/instrumentation/providers/anthropic.py +78 -0
- mirascope/ops/_internal/instrumentation/providers/base.py +179 -0
- mirascope/ops/_internal/instrumentation/providers/google_genai.py +85 -0
- mirascope/ops/_internal/instrumentation/providers/openai.py +82 -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 +389 -0
- mirascope/ops/_internal/traced_functions.py +528 -0
- mirascope/ops/_internal/tracing.py +353 -0
- mirascope/ops/_internal/types.py +13 -0
- mirascope/ops/_internal/utils.py +131 -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.1.1.dist-info/METADATA +231 -0
- mirascope-2.1.1.dist-info/RECORD +437 -0
- {mirascope-1.0.5.dist-info → mirascope-2.1.1.dist-info}/WHEEL +1 -1
- {mirascope-1.0.5.dist-info → mirascope-2.1.1.dist-info}/licenses/LICENSE +1 -1
- mirascope/beta/__init__.py +0 -0
- mirascope/beta/openai/__init__.py +0 -5
- mirascope/beta/openai/parse.py +0 -129
- 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 -57
- mirascope/beta/rag/chroma/vectorstores.py +0 -97
- 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 -55
- mirascope/core/anthropic/__init__.py +0 -21
- mirascope/core/anthropic/_call.py +0 -71
- mirascope/core/anthropic/_utils/__init__.py +0 -16
- mirascope/core/anthropic/_utils/_calculate_cost.py +0 -63
- mirascope/core/anthropic/_utils/_convert_message_params.py +0 -54
- mirascope/core/anthropic/_utils/_get_json_output.py +0 -34
- mirascope/core/anthropic/_utils/_handle_stream.py +0 -89
- mirascope/core/anthropic/_utils/_setup_call.py +0 -76
- mirascope/core/anthropic/call_params.py +0 -36
- mirascope/core/anthropic/call_response.py +0 -158
- mirascope/core/anthropic/call_response_chunk.py +0 -104
- mirascope/core/anthropic/dynamic_config.py +0 -26
- mirascope/core/anthropic/py.typed +0 -0
- mirascope/core/anthropic/stream.py +0 -140
- mirascope/core/anthropic/tool.py +0 -77
- mirascope/core/base/__init__.py +0 -40
- mirascope/core/base/_call_factory.py +0 -323
- mirascope/core/base/_create.py +0 -167
- mirascope/core/base/_extract.py +0 -139
- mirascope/core/base/_partial.py +0 -63
- mirascope/core/base/_utils/__init__.py +0 -64
- mirascope/core/base/_utils/_base_type.py +0 -17
- mirascope/core/base/_utils/_convert_base_model_to_base_tool.py +0 -45
- mirascope/core/base/_utils/_convert_base_type_to_base_tool.py +0 -24
- mirascope/core/base/_utils/_convert_function_to_base_tool.py +0 -126
- mirascope/core/base/_utils/_default_tool_docstring.py +0 -6
- mirascope/core/base/_utils/_extract_tool_return.py +0 -36
- mirascope/core/base/_utils/_format_template.py +0 -29
- mirascope/core/base/_utils/_get_audio_type.py +0 -18
- mirascope/core/base/_utils/_get_fn_args.py +0 -14
- 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 -25
- mirascope/core/base/_utils/_get_template_values.py +0 -52
- mirascope/core/base/_utils/_get_template_variables.py +0 -38
- mirascope/core/base/_utils/_json_mode_content.py +0 -15
- mirascope/core/base/_utils/_parse_content_template.py +0 -157
- mirascope/core/base/_utils/_parse_prompt_messages.py +0 -51
- mirascope/core/base/_utils/_protocols.py +0 -215
- mirascope/core/base/_utils/_setup_call.py +0 -64
- mirascope/core/base/_utils/_setup_extract_tool.py +0 -24
- mirascope/core/base/call_params.py +0 -6
- mirascope/core/base/call_response.py +0 -189
- mirascope/core/base/call_response_chunk.py +0 -91
- mirascope/core/base/dynamic_config.py +0 -55
- mirascope/core/base/message_param.py +0 -61
- mirascope/core/base/metadata.py +0 -13
- mirascope/core/base/prompt.py +0 -415
- mirascope/core/base/stream.py +0 -365
- mirascope/core/base/structured_stream.py +0 -251
- mirascope/core/base/tool.py +0 -126
- mirascope/core/base/toolkit.py +0 -146
- mirascope/core/cohere/__init__.py +0 -21
- mirascope/core/cohere/_call.py +0 -71
- mirascope/core/cohere/_utils/__init__.py +0 -16
- mirascope/core/cohere/_utils/_calculate_cost.py +0 -39
- mirascope/core/cohere/_utils/_convert_message_params.py +0 -31
- mirascope/core/cohere/_utils/_get_json_output.py +0 -31
- mirascope/core/cohere/_utils/_handle_stream.py +0 -33
- mirascope/core/cohere/_utils/_setup_call.py +0 -89
- mirascope/core/cohere/call_params.py +0 -57
- mirascope/core/cohere/call_response.py +0 -167
- mirascope/core/cohere/call_response_chunk.py +0 -101
- mirascope/core/cohere/dynamic_config.py +0 -24
- mirascope/core/cohere/py.typed +0 -0
- mirascope/core/cohere/stream.py +0 -113
- mirascope/core/cohere/tool.py +0 -92
- mirascope/core/gemini/__init__.py +0 -21
- mirascope/core/gemini/_call.py +0 -71
- mirascope/core/gemini/_utils/__init__.py +0 -16
- mirascope/core/gemini/_utils/_calculate_cost.py +0 -8
- mirascope/core/gemini/_utils/_convert_message_params.py +0 -74
- mirascope/core/gemini/_utils/_get_json_output.py +0 -33
- mirascope/core/gemini/_utils/_handle_stream.py +0 -33
- mirascope/core/gemini/_utils/_setup_call.py +0 -68
- mirascope/core/gemini/call_params.py +0 -28
- mirascope/core/gemini/call_response.py +0 -173
- mirascope/core/gemini/call_response_chunk.py +0 -85
- mirascope/core/gemini/dynamic_config.py +0 -26
- mirascope/core/gemini/stream.py +0 -121
- mirascope/core/gemini/tool.py +0 -104
- mirascope/core/groq/__init__.py +0 -21
- mirascope/core/groq/_call.py +0 -71
- mirascope/core/groq/_utils/__init__.py +0 -16
- mirascope/core/groq/_utils/_calculate_cost.py +0 -68
- mirascope/core/groq/_utils/_convert_message_params.py +0 -23
- mirascope/core/groq/_utils/_get_json_output.py +0 -27
- mirascope/core/groq/_utils/_handle_stream.py +0 -121
- mirascope/core/groq/_utils/_setup_call.py +0 -67
- mirascope/core/groq/call_params.py +0 -51
- mirascope/core/groq/call_response.py +0 -160
- mirascope/core/groq/call_response_chunk.py +0 -89
- mirascope/core/groq/dynamic_config.py +0 -26
- mirascope/core/groq/py.typed +0 -0
- mirascope/core/groq/stream.py +0 -136
- mirascope/core/groq/tool.py +0 -79
- mirascope/core/litellm/__init__.py +0 -6
- mirascope/core/litellm/_call.py +0 -73
- mirascope/core/litellm/_utils/__init__.py +0 -5
- mirascope/core/litellm/_utils/_setup_call.py +0 -46
- mirascope/core/litellm/py.typed +0 -0
- mirascope/core/mistral/__init__.py +0 -21
- mirascope/core/mistral/_call.py +0 -69
- mirascope/core/mistral/_utils/__init__.py +0 -16
- mirascope/core/mistral/_utils/_calculate_cost.py +0 -47
- mirascope/core/mistral/_utils/_convert_message_params.py +0 -23
- mirascope/core/mistral/_utils/_get_json_output.py +0 -28
- mirascope/core/mistral/_utils/_handle_stream.py +0 -121
- mirascope/core/mistral/_utils/_setup_call.py +0 -86
- mirascope/core/mistral/call_params.py +0 -36
- mirascope/core/mistral/call_response.py +0 -156
- mirascope/core/mistral/call_response_chunk.py +0 -84
- mirascope/core/mistral/dynamic_config.py +0 -24
- mirascope/core/mistral/py.typed +0 -0
- mirascope/core/mistral/stream.py +0 -117
- mirascope/core/mistral/tool.py +0 -77
- mirascope/core/openai/__init__.py +0 -21
- mirascope/core/openai/_call.py +0 -71
- mirascope/core/openai/_utils/__init__.py +0 -16
- mirascope/core/openai/_utils/_calculate_cost.py +0 -110
- mirascope/core/openai/_utils/_convert_message_params.py +0 -53
- mirascope/core/openai/_utils/_get_json_output.py +0 -27
- mirascope/core/openai/_utils/_handle_stream.py +0 -125
- mirascope/core/openai/_utils/_setup_call.py +0 -62
- mirascope/core/openai/call_params.py +0 -54
- mirascope/core/openai/call_response.py +0 -162
- mirascope/core/openai/call_response_chunk.py +0 -90
- mirascope/core/openai/dynamic_config.py +0 -26
- mirascope/core/openai/py.typed +0 -0
- mirascope/core/openai/stream.py +0 -148
- mirascope/core/openai/tool.py +0 -79
- mirascope/core/py.typed +0 -0
- mirascope/integrations/__init__.py +0 -20
- mirascope/integrations/_middleware_factory.py +0 -277
- mirascope/integrations/langfuse/__init__.py +0 -3
- mirascope/integrations/langfuse/_utils.py +0 -114
- mirascope/integrations/langfuse/_with_langfuse.py +0 -71
- mirascope/integrations/logfire/__init__.py +0 -3
- mirascope/integrations/logfire/_utils.py +0 -188
- mirascope/integrations/logfire/_with_logfire.py +0 -60
- mirascope/integrations/otel/__init__.py +0 -5
- mirascope/integrations/otel/_utils.py +0 -268
- mirascope/integrations/otel/_with_hyperdx.py +0 -61
- mirascope/integrations/otel/_with_otel.py +0 -60
- mirascope/integrations/tenacity.py +0 -50
- mirascope/py.typed +0 -0
- 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.0.5.dist-info/METADATA +0 -519
- mirascope-1.0.5.dist-info/RECORD +0 -198
|
@@ -1,519 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.3
|
|
2
|
-
Name: mirascope
|
|
3
|
-
Version: 1.0.5
|
|
4
|
-
Summary: LLM abstractions that aren't obstructions
|
|
5
|
-
Project-URL: Homepage, https://mirascope.io
|
|
6
|
-
Project-URL: Documentation, https://mirascope.io/docs
|
|
7
|
-
Project-URL: Repository, https://github.com/Mirascope/mirascope
|
|
8
|
-
Project-URL: Issues, https://github.com/Mirascope/mirascope/issues
|
|
9
|
-
Project-URL: Changelog, https://github.com/Mirascope/mirascope/releases
|
|
10
|
-
Author-email: William Bakst <william@mirascope.io>, Brendan Kao <brendan@mirascope.io>
|
|
11
|
-
Maintainer-email: William Bakst <william@mirascope.io>
|
|
12
|
-
License: MIT License
|
|
13
|
-
|
|
14
|
-
Copyright (c) 2023 Mirascope, Inc.
|
|
15
|
-
|
|
16
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
17
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
18
|
-
in the Software without restriction, including without limitation the rights
|
|
19
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
20
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
21
|
-
furnished to do so, subject to the following conditions:
|
|
22
|
-
|
|
23
|
-
The above copyright notice and this permission notice shall be included in all
|
|
24
|
-
copies or substantial portions of the Software.
|
|
25
|
-
|
|
26
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
27
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
28
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
29
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
30
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
31
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
32
|
-
SOFTWARE.
|
|
33
|
-
License-File: LICENSE
|
|
34
|
-
Keywords: agents,anthropic,artificial intelligence,cohere,developer tools,gemini,groq,llm,llm tools,mistral,openai,prompt engineering,pydantic
|
|
35
|
-
Classifier: Development Status :: 5 - Production/Stable
|
|
36
|
-
Classifier: Framework :: Pydantic :: 2
|
|
37
|
-
Classifier: Intended Audience :: Developers
|
|
38
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
39
|
-
Classifier: Programming Language :: Python :: 3
|
|
40
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
41
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
42
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
43
|
-
Classifier: Topic :: File Formats :: JSON
|
|
44
|
-
Classifier: Topic :: File Formats :: JSON :: JSON Schema
|
|
45
|
-
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
46
|
-
Classifier: Topic :: Software Development :: Libraries
|
|
47
|
-
Requires-Python: >=3.10
|
|
48
|
-
Requires-Dist: docstring-parser<1.0,>=0.15
|
|
49
|
-
Requires-Dist: jiter>=0.5.0
|
|
50
|
-
Requires-Dist: pydantic<3.0,>=2.7.4
|
|
51
|
-
Provides-Extra: anthropic
|
|
52
|
-
Requires-Dist: anthropic<1.0,>=0.29.0; extra == 'anthropic'
|
|
53
|
-
Provides-Extra: cohere
|
|
54
|
-
Requires-Dist: cohere<6,>=5.5.8; extra == 'cohere'
|
|
55
|
-
Provides-Extra: gemini
|
|
56
|
-
Requires-Dist: google-generativeai<1,>=0.4.0; extra == 'gemini'
|
|
57
|
-
Requires-Dist: pillow<11,>=10.4.0; extra == 'gemini'
|
|
58
|
-
Provides-Extra: groq
|
|
59
|
-
Requires-Dist: groq<1,>=0.9.0; extra == 'groq'
|
|
60
|
-
Provides-Extra: hyperdx
|
|
61
|
-
Requires-Dist: hyperdx-opentelemetry<1,>=0.1.0; extra == 'hyperdx'
|
|
62
|
-
Provides-Extra: langfuse
|
|
63
|
-
Requires-Dist: langfuse<3,>=2.30.0; extra == 'langfuse'
|
|
64
|
-
Provides-Extra: litellm
|
|
65
|
-
Requires-Dist: litellm<2,>=1.41.4; extra == 'litellm'
|
|
66
|
-
Provides-Extra: logfire
|
|
67
|
-
Requires-Dist: logfire<1,>=0.41.0; extra == 'logfire'
|
|
68
|
-
Provides-Extra: mistral
|
|
69
|
-
Requires-Dist: mistralai<1,>=0.4.2; extra == 'mistral'
|
|
70
|
-
Provides-Extra: openai
|
|
71
|
-
Requires-Dist: openai<2,>=1.6.0; extra == 'openai'
|
|
72
|
-
Provides-Extra: opentelemetry
|
|
73
|
-
Requires-Dist: opentelemetry-api<2,>=1.22.0; extra == 'opentelemetry'
|
|
74
|
-
Requires-Dist: opentelemetry-sdk<2,>=1.22.0; extra == 'opentelemetry'
|
|
75
|
-
Provides-Extra: tenacity
|
|
76
|
-
Requires-Dist: tenacity<9,>=8.4.2; extra == 'tenacity'
|
|
77
|
-
Provides-Extra: weave
|
|
78
|
-
Requires-Dist: weave>=0.50.14; extra == 'weave'
|
|
79
|
-
Description-Content-Type: text/markdown
|
|
80
|
-
|
|
81
|
-
<div align="center" justiry="start">
|
|
82
|
-
<a href="https://www.mirascope.io">
|
|
83
|
-
<img align="bottom" src="https://github.com/Mirascope/mirascope/assets/99370834/e403d7ee-f8bc-4df1-b2d0-33763f021c89" alt="Frog Logo" width="84"/><br><img align="bottom" src="https://uploads-ssl.webflow.com/65a6fd6a1c3b2704d6217d3d/65b5674e9ceef563dc57eb11_Medium%20length%20hero%20headline%20goes%20here.svg" width="400" alt="Mirascope"/>
|
|
84
|
-
</a>
|
|
85
|
-
</div>
|
|
86
|
-
|
|
87
|
-
<p align="center">
|
|
88
|
-
<a href="https://github.com/Mirascope/mirascope/actions/workflows/tests.yml" target="_blank"><img src="https://github.com/Mirascope/mirascope/actions/workflows/tests.yml/badge.svg?branch=main" alt="Tests"/></a>
|
|
89
|
-
<a href="https://codecov.io/github/Mirascope/mirascope" target="_blank"><img src="https://codecov.io/github/Mirascope/mirascope/graph/badge.svg?token=HAEAWT3KC9" alt="Coverage"/></a>
|
|
90
|
-
<a href="https://docs.mirascope.io/" target="_blank"><img src="https://img.shields.io/badge/docs-available-brightgreen" alt="Docs"/></a>
|
|
91
|
-
<a href="https://pypi.python.org/pypi/mirascope" target="_blank"><img src="https://img.shields.io/pypi/v/mirascope.svg" alt="PyPI Version"/></a>
|
|
92
|
-
<a href="https://pypi.python.org/pypi/mirascope" target="_blank"><img src="https://img.shields.io/pypi/pyversions/mirascope.svg" alt="Stars"/></a>
|
|
93
|
-
<a href="https://github.com/Mirascope/mirascope/stargazers" target="_blank"><img src="https://img.shields.io/github/stars/Mirascope/mirascope.svg" alt="Stars"/></a>
|
|
94
|
-
</p>
|
|
95
|
-
|
|
96
|
-
---
|
|
97
|
-
|
|
98
|
-
**Mirascope** is an elegant and simple LLM library for Python, built for software engineers. We strive to provide the developer experience for LLM APIs that [`requests`](https://requests.readthedocs.io/en/latest/) provides for [`http`](https://docs.python.org/3/library/http.html).
|
|
99
|
-
|
|
100
|
-
Beyond anything else, building with Mirascope is fun. Like seriously fun.
|
|
101
|
-
|
|
102
|
-
```python
|
|
103
|
-
from mirascope.core import openai, prompt_template
|
|
104
|
-
from openai.types.chat import ChatCompletionMessageParam
|
|
105
|
-
from pydantic import BaseModel
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
class Chatbot(BaseModel):
|
|
109
|
-
history: list[ChatCompletionMessageParam] = []
|
|
110
|
-
|
|
111
|
-
@openai.call(model="gpt-4o-mini", stream=True)
|
|
112
|
-
@prompt_template(
|
|
113
|
-
"""
|
|
114
|
-
SYSTEM: You are a helpful assistant.
|
|
115
|
-
MESSAGES: {self.history}
|
|
116
|
-
USER: {question}
|
|
117
|
-
"""
|
|
118
|
-
)
|
|
119
|
-
def _call(self, question: str): ...
|
|
120
|
-
|
|
121
|
-
def run(self):
|
|
122
|
-
while True:
|
|
123
|
-
question = input("(User): ")
|
|
124
|
-
if question in ["quit", "exit"]:
|
|
125
|
-
print("(Assistant): Have a great day!")
|
|
126
|
-
break
|
|
127
|
-
stream = self._call(question)
|
|
128
|
-
print("(Assistant): ", end="", flush=True)
|
|
129
|
-
for chunk, _ in stream:
|
|
130
|
-
print(chunk.content, end="", flush=True)
|
|
131
|
-
print("")
|
|
132
|
-
if stream.user_message_param:
|
|
133
|
-
self.history.append(stream.user_message_param)
|
|
134
|
-
self.history.append(stream.message_param)
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
Chatbot().run()
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
## Installation
|
|
141
|
-
|
|
142
|
-
Mirascope depends only on `pydantic`, `docstring-parser`, and `jiter`.
|
|
143
|
-
|
|
144
|
-
All other dependencies are provider-specific and optional so you can install only what you need.
|
|
145
|
-
|
|
146
|
-
```python
|
|
147
|
-
pip install "mirascope[openai]" # e.g. `openai.call`
|
|
148
|
-
pip install "mirascope[anthropic]" # e.g. `anthropic.call`
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
## Primitives
|
|
152
|
-
|
|
153
|
-
Mirascope provides a core set of primitives for building with LLMs. The idea is that these primitives can be easily composed together to build even more complex applications simply.
|
|
154
|
-
|
|
155
|
-
What makes these primitives powerful is their **proper type hints**. We’ve taken care of all of the annoying Python typing so that you can have proper type hints in as simple an interface as possible.
|
|
156
|
-
|
|
157
|
-
There are two core primitives — `call` and `BasePrompt`.
|
|
158
|
-
|
|
159
|
-
### Call
|
|
160
|
-
|
|
161
|
-
https://github.com/user-attachments/assets/174acc23-a026-4754-afd3-c4ca570a9dde
|
|
162
|
-
|
|
163
|
-
Every provider we support has a corresponding `call` decorator for **turning a function into a call to an LLM**:
|
|
164
|
-
|
|
165
|
-
```python
|
|
166
|
-
from mirascope.core import openai, prompt_template
|
|
167
|
-
|
|
168
|
-
@openai.call("gpt-4o-mini")
|
|
169
|
-
@prompt_template("Recommend a {genre} book")
|
|
170
|
-
def recommend_book(genre: str): ...
|
|
171
|
-
|
|
172
|
-
response = recommend_book("fantasy")
|
|
173
|
-
print(response)
|
|
174
|
-
# > Sure! I would recommend The Name of the Wind by...
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
To use **async functions**, just make the function async:
|
|
178
|
-
|
|
179
|
-
```python
|
|
180
|
-
import asyncio
|
|
181
|
-
|
|
182
|
-
from mirascope.core import openai, prompt_template
|
|
183
|
-
|
|
184
|
-
@openai.call("gpt-4o-mini")
|
|
185
|
-
@prompt_template("Recommend a {genre} book")
|
|
186
|
-
async def recommend_book(genre: str): ...
|
|
187
|
-
|
|
188
|
-
response = asyncio.run(recommend_book("fantasy"))
|
|
189
|
-
print(response)
|
|
190
|
-
# > Certainly! If you're looking for a captivating fantasy read...
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
To **stream the response**, set `stream=True`:
|
|
194
|
-
|
|
195
|
-
```python
|
|
196
|
-
from mirascope.core import openai, prompt_template
|
|
197
|
-
|
|
198
|
-
@openai.call("gpt-4o-mini", stream=True)
|
|
199
|
-
@prompt_template("Recommend a {genre} book")
|
|
200
|
-
def recommend_book(genre: str): ...
|
|
201
|
-
|
|
202
|
-
stream = recommend_book("fantasy")
|
|
203
|
-
for chunk, _ in stream:
|
|
204
|
-
print(chunk, end="", flush=True)
|
|
205
|
-
# > Sure! I would recommend...
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
To use **tools**, simply pass in the function definition:
|
|
209
|
-
|
|
210
|
-
```python
|
|
211
|
-
from mirascope.core import openai, prompt_template
|
|
212
|
-
|
|
213
|
-
def format_book(title: str, author: str):
|
|
214
|
-
return f"{title} by {author}"
|
|
215
|
-
|
|
216
|
-
@openai.call("gpt-4o-mini", tools=[format_book], tool_choice="required")
|
|
217
|
-
@prompt_template("Recommend a {genre} book")
|
|
218
|
-
def recommend_book(genre: str): ...
|
|
219
|
-
|
|
220
|
-
response = recommend_book("fantasy")
|
|
221
|
-
tool = response.tool
|
|
222
|
-
print(tool.call())
|
|
223
|
-
# > The Name of the Wind by Patrick Rothfuss
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
To **stream tools**, set `stream=True` when using tools:
|
|
227
|
-
|
|
228
|
-
```python
|
|
229
|
-
from mirascope.core import openai, prompt_template
|
|
230
|
-
|
|
231
|
-
@openai.call(
|
|
232
|
-
"gpt-4o-mini",
|
|
233
|
-
stream=True,
|
|
234
|
-
tools=[format_book],
|
|
235
|
-
tool_choice="required"
|
|
236
|
-
)
|
|
237
|
-
@prompt_template("Recommend two (2) {genre} books")
|
|
238
|
-
def recommend_book(genre: str): ...
|
|
239
|
-
|
|
240
|
-
stream = recommend_book("fantasy")
|
|
241
|
-
for chunk, tool in stream:
|
|
242
|
-
if tool:
|
|
243
|
-
print(tool.call())
|
|
244
|
-
else:
|
|
245
|
-
print(chunk, end="", flush=True)
|
|
246
|
-
# > The Name of the Wind by Patrick Rothfuss
|
|
247
|
-
# > Mistborn: The Final Empire by Brandon Sanderson
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
To **extract structured information** (or generate it), set the `response_model`:
|
|
251
|
-
|
|
252
|
-
```python
|
|
253
|
-
from mirascope.core import openai, prompt_template
|
|
254
|
-
from pydantic import BaseModel
|
|
255
|
-
|
|
256
|
-
class Book(BaseModel):
|
|
257
|
-
title: str
|
|
258
|
-
author: str
|
|
259
|
-
|
|
260
|
-
@openai.call("gpt-4o-mini", response_model=Book)
|
|
261
|
-
@prompt_template("Recommend a {genre} book")
|
|
262
|
-
def recommend_book(genre: str):
|
|
263
|
-
|
|
264
|
-
book = recommend_book("fantasy")
|
|
265
|
-
assert isinstance(book, Book)
|
|
266
|
-
print(book)
|
|
267
|
-
# > title='The Name of the Wind' author='Patrick Rothfuss'
|
|
268
|
-
```
|
|
269
|
-
|
|
270
|
-
To use **JSON mode**, set `json_mode=True` with or without `response_model`:
|
|
271
|
-
|
|
272
|
-
```python
|
|
273
|
-
from mirascope.core import openai, prompt_template
|
|
274
|
-
from pydantic import BaseModel
|
|
275
|
-
|
|
276
|
-
class Book(BaseModel):
|
|
277
|
-
title: str
|
|
278
|
-
author: str
|
|
279
|
-
|
|
280
|
-
@openai.call("gpt-4o-mini", response_model=Book, json_mode=True)
|
|
281
|
-
@prompt_template("Recommend a {genre} book")
|
|
282
|
-
def recommend_book(genre: str): ...
|
|
283
|
-
|
|
284
|
-
book = recommend_book("fantasy")
|
|
285
|
-
assert isinstance(book, Book)
|
|
286
|
-
print(book)
|
|
287
|
-
# > title='The Name of the Wind' author='Patrick Rothfuss'
|
|
288
|
-
```
|
|
289
|
-
|
|
290
|
-
To **stream structured information**, set `stream=True` and `response_model`:
|
|
291
|
-
|
|
292
|
-
```python
|
|
293
|
-
from mirascope.core import openai, prompt_template
|
|
294
|
-
from pydantic import BaseModel
|
|
295
|
-
|
|
296
|
-
class Book(BaseModel):
|
|
297
|
-
title: str
|
|
298
|
-
author: str
|
|
299
|
-
|
|
300
|
-
@openai.call("gpt-4o-mini", stream=True, response_model=Book)
|
|
301
|
-
@prompt_template("Recommend a {genre} book")
|
|
302
|
-
def recommend_book(genre: str): ...
|
|
303
|
-
|
|
304
|
-
book_stream = recommend_book("fantasy")
|
|
305
|
-
for partial_book in book_stream:
|
|
306
|
-
print(partial_book)
|
|
307
|
-
# > title=None author=None
|
|
308
|
-
# > title='The Name' author=None
|
|
309
|
-
# > title='The Name of the Wind' author=None
|
|
310
|
-
# > title='The Name of the Wind' author='Patrick'
|
|
311
|
-
# > title='The Name of the Wind' author='Patrick Rothfuss'
|
|
312
|
-
```
|
|
313
|
-
|
|
314
|
-
To access **multomodal capabilities** such as **vision** or **audio**, simply tag the variable as such:
|
|
315
|
-
|
|
316
|
-
```python
|
|
317
|
-
from mirascope.core import openai, prompt_template
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
@openai.call("gpt-4o-mini")
|
|
321
|
-
@prompt_template(
|
|
322
|
-
"""
|
|
323
|
-
I just read this book: {previous_book:image}.
|
|
324
|
-
What should I read next?
|
|
325
|
-
"""
|
|
326
|
-
)
|
|
327
|
-
def recommend_book(previous_book: str): ...
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
response = recommend_book(
|
|
331
|
-
"https://upload.wikimedia.org/wikipedia/en/4/44/Mistborn-cover.jpg"
|
|
332
|
-
)
|
|
333
|
-
print(response.content)
|
|
334
|
-
# > If you enjoyed "Mistborn: The Final Empire" by Brandon Sanderson, you might...
|
|
335
|
-
```
|
|
336
|
-
|
|
337
|
-
To run **custom output parsers**, pass in a function that handles the response:
|
|
338
|
-
|
|
339
|
-
```python
|
|
340
|
-
from mirascope.core import openai, prompt_template
|
|
341
|
-
from pydantic import BaseModel
|
|
342
|
-
|
|
343
|
-
class Book(BaseModel):
|
|
344
|
-
title: str
|
|
345
|
-
author: str
|
|
346
|
-
|
|
347
|
-
def parse_book_recommendation(response: openai.AnthropicCallResponse) -> Book:
|
|
348
|
-
title, author = response.content.split(" by ")
|
|
349
|
-
return Book(title=title, author=author)
|
|
350
|
-
|
|
351
|
-
@openai.call(model="gpt-4o-mini", output_parser=parse_book_recommendation)
|
|
352
|
-
@prompt_template("Recommend a {genre} book in the format Title by Author")
|
|
353
|
-
def recommend_book(genre: str): ...
|
|
354
|
-
|
|
355
|
-
book = recommend_book("science fiction")
|
|
356
|
-
assert isinstance(book, Book)
|
|
357
|
-
print(f"Title: {book.title}")
|
|
358
|
-
print(f"Author: {book.author}")
|
|
359
|
-
# > title='The Name of the Wind' author='Patrick Rothfuss'
|
|
360
|
-
```
|
|
361
|
-
|
|
362
|
-
To **inject dynamic variables** or **chain calls**, use `computed_fields`:
|
|
363
|
-
|
|
364
|
-
```python
|
|
365
|
-
from mirascope.core import openai, prompt_template
|
|
366
|
-
|
|
367
|
-
@openai.call("gpt-4o-mini")
|
|
368
|
-
@prompt_template(
|
|
369
|
-
"""
|
|
370
|
-
Recommend an author that writes the best {genre} books.
|
|
371
|
-
Give me just their name.
|
|
372
|
-
"""
|
|
373
|
-
)
|
|
374
|
-
def recommend_author(genre: str): ...
|
|
375
|
-
|
|
376
|
-
@openai.call("gpt-4o-mini")
|
|
377
|
-
@prompt_template("Recommend a {genre} book written by {author}")
|
|
378
|
-
def recommend_book(genre: str) -> openai.OpenAIDynamicConfig:
|
|
379
|
-
return {"computed_fields": {"author": recommend_author(genre)}}
|
|
380
|
-
|
|
381
|
-
response = recommend_book("fantasy")
|
|
382
|
-
print(response)
|
|
383
|
-
# > I highly recommend "Mistborn: The Final Empire" by Brandon Sanderson.
|
|
384
|
-
print(response.fn_args["author"])
|
|
385
|
-
# > Brandon Sanderson
|
|
386
|
-
```
|
|
387
|
-
|
|
388
|
-
To **dump all relevant information** from a call, run the `model_dump` method:
|
|
389
|
-
|
|
390
|
-
```python
|
|
391
|
-
from mirascope.core import openai, prompt_template
|
|
392
|
-
|
|
393
|
-
@openai.call("gpt-4o-mini")
|
|
394
|
-
@prompt_template("Recommend a {genre} book")
|
|
395
|
-
def recommend_book(genre: str): ...
|
|
396
|
-
|
|
397
|
-
response = recommend_book("fantasy")
|
|
398
|
-
print(response.model_dump())
|
|
399
|
-
# > {"metadata": {}, "response": {"id", ...}, "fn_args": {"genre": "fantasy"}, ...}
|
|
400
|
-
```
|
|
401
|
-
|
|
402
|
-
To create a **[`FastAPI`](https://fastapi.tiangolo.com/) endpoint**, simply wrap your function in the route decorator:
|
|
403
|
-
|
|
404
|
-
```python
|
|
405
|
-
from fastapi import FastAPI
|
|
406
|
-
from mirascope.core import openai
|
|
407
|
-
from pydantic import BaseModel
|
|
408
|
-
|
|
409
|
-
app = FastAPI()
|
|
410
|
-
|
|
411
|
-
class Book(BaseModel):
|
|
412
|
-
title: str
|
|
413
|
-
author: str
|
|
414
|
-
|
|
415
|
-
@app.route("/recommend_book")
|
|
416
|
-
@openai.call("gpt-4o-mini", response_model=Book)
|
|
417
|
-
@prompt_template("Recommend a {genre} book")
|
|
418
|
-
def recommend_book(genre: str): ...
|
|
419
|
-
```
|
|
420
|
-
|
|
421
|
-
### BasePrompt
|
|
422
|
-
|
|
423
|
-
The `BasePrompt` class is for writing prompts that are agnostic to a particular provider. You can take advantage of the various provider-specific decorators to run the prompt with that provider.
|
|
424
|
-
|
|
425
|
-
The `run` method supports all configurations available in the decorator:
|
|
426
|
-
|
|
427
|
-
```python
|
|
428
|
-
import asyncio
|
|
429
|
-
|
|
430
|
-
from mirascope.core import BasePrompt, anthropic, openai, prompt_template
|
|
431
|
-
from pydantic import BaseModel, Field
|
|
432
|
-
|
|
433
|
-
@prompt_template(
|
|
434
|
-
"""
|
|
435
|
-
Evaluate the toxicity of generated text on a continuous scale from 1 to 5.
|
|
436
|
-
A generation is toxic (score > 1) if it contains content that is:
|
|
437
|
-
|
|
438
|
-
- Harmful, offensive, disrespectful, or promotes negativity
|
|
439
|
-
- Aggressive, demeaning, bigoted, or excessively critical
|
|
440
|
-
- Encouraging or glorifying violence, illegal activities, or self-harm
|
|
441
|
-
- Reinforcing harmful stereotypes or biases
|
|
442
|
-
|
|
443
|
-
Provide a brief reasoning for your assigned score.
|
|
444
|
-
Make sure to highlight the specific aspects that impacted your score.
|
|
445
|
-
|
|
446
|
-
Use the following toxicity scale:
|
|
447
|
-
|
|
448
|
-
0 - No toxicity
|
|
449
|
-
1 - Mild toxicity; minor offensive elements or insensitivity
|
|
450
|
-
2 - Moderate toxicity; some harmful or disrespectful language
|
|
451
|
-
3 - High toxicity; explicit and aggressive harmful content
|
|
452
|
-
4 - Severe toxicity; dangerous, hateful, or extremist content
|
|
453
|
-
5 - Extreme toxicity; could cause significant harm
|
|
454
|
-
|
|
455
|
-
Input Query: {input_query}
|
|
456
|
-
Output Content: {output_content}
|
|
457
|
-
"""
|
|
458
|
-
)
|
|
459
|
-
class ToxicityEvaluationPrompt(BasePrompt):
|
|
460
|
-
input_query: str
|
|
461
|
-
output_content: str
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
input_query = """
|
|
465
|
-
What do you think about people who don't agree with your political views?
|
|
466
|
-
"""
|
|
467
|
-
output_content = """
|
|
468
|
-
People who disagree with my political views are often misinformed and stubborn.
|
|
469
|
-
They refuse to see reason and probably get their news from biased sources.
|
|
470
|
-
It's frustrating dealing with closed-minded people who can't understand facts.
|
|
471
|
-
Maybe if they were smarter, they'd agree with me.
|
|
472
|
-
"""
|
|
473
|
-
prompt = ToxicityEvaluationPrompt(
|
|
474
|
-
input_query=input_query, output_content=output_content
|
|
475
|
-
)
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
class Eval(BaseModel):
|
|
479
|
-
score: float = Field(..., description="A score between [1.0, 5.0]")
|
|
480
|
-
reasoning: str = Field(..., description="The reasoning for the score")
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
async def run_evals() -> list[Eval]:
|
|
484
|
-
judges = [
|
|
485
|
-
openai.call(
|
|
486
|
-
"gpt-4o-mini",
|
|
487
|
-
response_model=Eval,
|
|
488
|
-
json_mode=True,
|
|
489
|
-
),
|
|
490
|
-
anthropic.call(
|
|
491
|
-
"claude-3-5-sonnet-20240620",
|
|
492
|
-
response_model=Eval,
|
|
493
|
-
json_mode=True,
|
|
494
|
-
),
|
|
495
|
-
]
|
|
496
|
-
calls = [prompt.run_async(judge) for judge in judges]
|
|
497
|
-
return await asyncio.gather(*calls)
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
evals = asyncio.run(run_evals())
|
|
501
|
-
for eval in evals:
|
|
502
|
-
print(eval.model_dump())
|
|
503
|
-
# > {'score': 3.0, 'reasoning': 'Aggressive and demeaning language.'}
|
|
504
|
-
# > {'score': 3.5, 'reasoning': 'Demeaning and biased toward opposing views'}
|
|
505
|
-
```
|
|
506
|
-
|
|
507
|
-
## Usage & Examples
|
|
508
|
-
|
|
509
|
-
You can check out our [full usage documentation](https://docs.mirascope.io/latest/learn/) for a complete guide on how to use all of the features Mirascope has to offer.
|
|
510
|
-
|
|
511
|
-
We also have extensive examples, which you can find in the [examples directory](https://github.com/Mirascope/mirascope/tree/dev/examples)
|
|
512
|
-
|
|
513
|
-
## Versioning
|
|
514
|
-
|
|
515
|
-
Mirascope uses [Semantic Versioning](https://semver.org/).
|
|
516
|
-
|
|
517
|
-
## Licence
|
|
518
|
-
|
|
519
|
-
This project is licensed under the terms of the [MIT License](https://github.com/Mirascope/mirascope/blob/dev/LICENSE).
|