opik 1.8.39__py3-none-any.whl → 1.9.71__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.
- opik/__init__.py +19 -3
- opik/anonymizer/__init__.py +5 -0
- opik/anonymizer/anonymizer.py +12 -0
- opik/anonymizer/factory.py +80 -0
- opik/anonymizer/recursive_anonymizer.py +64 -0
- opik/anonymizer/rules.py +56 -0
- opik/anonymizer/rules_anonymizer.py +35 -0
- opik/api_objects/attachment/attachment_context.py +36 -0
- opik/api_objects/attachment/attachments_extractor.py +153 -0
- opik/api_objects/attachment/client.py +1 -0
- opik/api_objects/attachment/converters.py +2 -0
- opik/api_objects/attachment/decoder.py +18 -0
- opik/api_objects/attachment/decoder_base64.py +83 -0
- opik/api_objects/attachment/decoder_helpers.py +137 -0
- opik/api_objects/data_helpers.py +79 -0
- opik/api_objects/dataset/dataset.py +64 -4
- opik/api_objects/dataset/rest_operations.py +11 -2
- opik/api_objects/experiment/experiment.py +57 -57
- opik/api_objects/experiment/experiment_item.py +2 -1
- opik/api_objects/experiment/experiments_client.py +64 -0
- opik/api_objects/experiment/helpers.py +35 -11
- opik/api_objects/experiment/rest_operations.py +65 -5
- opik/api_objects/helpers.py +8 -5
- opik/api_objects/local_recording.py +81 -0
- opik/api_objects/opik_client.py +600 -108
- opik/api_objects/opik_query_language.py +39 -5
- opik/api_objects/prompt/__init__.py +12 -2
- opik/api_objects/prompt/base_prompt.py +69 -0
- opik/api_objects/prompt/base_prompt_template.py +29 -0
- opik/api_objects/prompt/chat/__init__.py +1 -0
- opik/api_objects/prompt/chat/chat_prompt.py +210 -0
- opik/api_objects/prompt/chat/chat_prompt_template.py +350 -0
- opik/api_objects/prompt/chat/content_renderer_registry.py +203 -0
- opik/api_objects/prompt/client.py +189 -47
- opik/api_objects/prompt/text/__init__.py +1 -0
- opik/api_objects/prompt/text/prompt.py +174 -0
- opik/api_objects/prompt/{prompt_template.py → text/prompt_template.py} +10 -6
- opik/api_objects/prompt/types.py +23 -0
- opik/api_objects/search_helpers.py +89 -0
- opik/api_objects/span/span_data.py +35 -25
- opik/api_objects/threads/threads_client.py +39 -5
- opik/api_objects/trace/trace_client.py +52 -2
- opik/api_objects/trace/trace_data.py +15 -24
- opik/api_objects/validation_helpers.py +3 -3
- opik/cli/__init__.py +5 -0
- opik/cli/__main__.py +6 -0
- opik/cli/configure.py +66 -0
- opik/cli/exports/__init__.py +131 -0
- opik/cli/exports/dataset.py +278 -0
- opik/cli/exports/experiment.py +784 -0
- opik/cli/exports/project.py +685 -0
- opik/cli/exports/prompt.py +578 -0
- opik/cli/exports/utils.py +406 -0
- opik/cli/harbor.py +39 -0
- opik/cli/healthcheck.py +21 -0
- opik/cli/imports/__init__.py +439 -0
- opik/cli/imports/dataset.py +143 -0
- opik/cli/imports/experiment.py +1192 -0
- opik/cli/imports/project.py +262 -0
- opik/cli/imports/prompt.py +177 -0
- opik/cli/imports/utils.py +280 -0
- opik/cli/main.py +49 -0
- opik/cli/proxy.py +93 -0
- opik/cli/usage_report/__init__.py +16 -0
- opik/cli/usage_report/charts.py +783 -0
- opik/cli/usage_report/cli.py +274 -0
- opik/cli/usage_report/constants.py +9 -0
- opik/cli/usage_report/extraction.py +749 -0
- opik/cli/usage_report/pdf.py +244 -0
- opik/cli/usage_report/statistics.py +78 -0
- opik/cli/usage_report/utils.py +235 -0
- opik/config.py +13 -7
- opik/configurator/configure.py +17 -0
- opik/datetime_helpers.py +12 -0
- opik/decorator/arguments_helpers.py +9 -1
- opik/decorator/base_track_decorator.py +205 -133
- opik/decorator/context_manager/span_context_manager.py +123 -0
- opik/decorator/context_manager/trace_context_manager.py +84 -0
- opik/decorator/opik_args/__init__.py +13 -0
- opik/decorator/opik_args/api_classes.py +71 -0
- opik/decorator/opik_args/helpers.py +120 -0
- opik/decorator/span_creation_handler.py +25 -6
- opik/dict_utils.py +3 -3
- opik/evaluation/__init__.py +13 -2
- opik/evaluation/engine/engine.py +272 -75
- opik/evaluation/engine/evaluation_tasks_executor.py +6 -3
- opik/evaluation/engine/helpers.py +31 -6
- opik/evaluation/engine/metrics_evaluator.py +237 -0
- opik/evaluation/evaluation_result.py +168 -2
- opik/evaluation/evaluator.py +533 -62
- opik/evaluation/metrics/__init__.py +103 -4
- opik/evaluation/metrics/aggregated_metric.py +35 -6
- opik/evaluation/metrics/base_metric.py +1 -1
- opik/evaluation/metrics/conversation/__init__.py +48 -0
- opik/evaluation/metrics/conversation/conversation_thread_metric.py +56 -2
- opik/evaluation/metrics/conversation/g_eval_wrappers.py +19 -0
- opik/evaluation/metrics/conversation/helpers.py +14 -15
- opik/evaluation/metrics/conversation/heuristics/__init__.py +14 -0
- opik/evaluation/metrics/conversation/heuristics/degeneration/__init__.py +3 -0
- opik/evaluation/metrics/conversation/heuristics/degeneration/metric.py +189 -0
- opik/evaluation/metrics/conversation/heuristics/degeneration/phrases.py +12 -0
- opik/evaluation/metrics/conversation/heuristics/knowledge_retention/__init__.py +3 -0
- opik/evaluation/metrics/conversation/heuristics/knowledge_retention/metric.py +172 -0
- opik/evaluation/metrics/conversation/llm_judges/__init__.py +32 -0
- opik/evaluation/metrics/conversation/{conversational_coherence → llm_judges/conversational_coherence}/metric.py +22 -17
- opik/evaluation/metrics/conversation/{conversational_coherence → llm_judges/conversational_coherence}/templates.py +1 -1
- opik/evaluation/metrics/conversation/llm_judges/g_eval_wrappers.py +442 -0
- opik/evaluation/metrics/conversation/{session_completeness → llm_judges/session_completeness}/metric.py +13 -7
- opik/evaluation/metrics/conversation/{session_completeness → llm_judges/session_completeness}/templates.py +1 -1
- opik/evaluation/metrics/conversation/llm_judges/user_frustration/__init__.py +0 -0
- opik/evaluation/metrics/conversation/{user_frustration → llm_judges/user_frustration}/metric.py +21 -14
- opik/evaluation/metrics/conversation/{user_frustration → llm_judges/user_frustration}/templates.py +1 -1
- opik/evaluation/metrics/conversation/types.py +4 -5
- opik/evaluation/metrics/conversation_types.py +9 -0
- opik/evaluation/metrics/heuristics/bertscore.py +107 -0
- opik/evaluation/metrics/heuristics/bleu.py +35 -15
- opik/evaluation/metrics/heuristics/chrf.py +127 -0
- opik/evaluation/metrics/heuristics/contains.py +47 -11
- opik/evaluation/metrics/heuristics/distribution_metrics.py +331 -0
- opik/evaluation/metrics/heuristics/gleu.py +113 -0
- opik/evaluation/metrics/heuristics/language_adherence.py +123 -0
- opik/evaluation/metrics/heuristics/meteor.py +119 -0
- opik/evaluation/metrics/heuristics/prompt_injection.py +150 -0
- opik/evaluation/metrics/heuristics/readability.py +129 -0
- opik/evaluation/metrics/heuristics/rouge.py +26 -9
- opik/evaluation/metrics/heuristics/spearman.py +88 -0
- opik/evaluation/metrics/heuristics/tone.py +155 -0
- opik/evaluation/metrics/heuristics/vader_sentiment.py +77 -0
- opik/evaluation/metrics/llm_judges/answer_relevance/metric.py +20 -5
- opik/evaluation/metrics/llm_judges/context_precision/metric.py +20 -6
- opik/evaluation/metrics/llm_judges/context_recall/metric.py +20 -6
- opik/evaluation/metrics/llm_judges/g_eval/__init__.py +5 -0
- opik/evaluation/metrics/llm_judges/g_eval/metric.py +219 -68
- opik/evaluation/metrics/llm_judges/g_eval/parser.py +102 -52
- opik/evaluation/metrics/llm_judges/g_eval/presets.py +209 -0
- opik/evaluation/metrics/llm_judges/g_eval_presets/__init__.py +36 -0
- opik/evaluation/metrics/llm_judges/g_eval_presets/agent_assessment.py +77 -0
- opik/evaluation/metrics/llm_judges/g_eval_presets/bias_classifier.py +181 -0
- opik/evaluation/metrics/llm_judges/g_eval_presets/compliance_risk.py +41 -0
- opik/evaluation/metrics/llm_judges/g_eval_presets/prompt_uncertainty.py +41 -0
- opik/evaluation/metrics/llm_judges/g_eval_presets/qa_suite.py +146 -0
- opik/evaluation/metrics/llm_judges/hallucination/metric.py +16 -3
- opik/evaluation/metrics/llm_judges/llm_juries/__init__.py +3 -0
- opik/evaluation/metrics/llm_judges/llm_juries/metric.py +76 -0
- opik/evaluation/metrics/llm_judges/moderation/metric.py +16 -4
- opik/evaluation/metrics/llm_judges/structure_output_compliance/__init__.py +0 -0
- opik/evaluation/metrics/llm_judges/structure_output_compliance/metric.py +144 -0
- opik/evaluation/metrics/llm_judges/structure_output_compliance/parser.py +79 -0
- opik/evaluation/metrics/llm_judges/structure_output_compliance/schema.py +15 -0
- opik/evaluation/metrics/llm_judges/structure_output_compliance/template.py +50 -0
- opik/evaluation/metrics/llm_judges/syc_eval/__init__.py +0 -0
- opik/evaluation/metrics/llm_judges/syc_eval/metric.py +252 -0
- opik/evaluation/metrics/llm_judges/syc_eval/parser.py +82 -0
- opik/evaluation/metrics/llm_judges/syc_eval/template.py +155 -0
- opik/evaluation/metrics/llm_judges/trajectory_accuracy/metric.py +20 -5
- opik/evaluation/metrics/llm_judges/usefulness/metric.py +16 -4
- opik/evaluation/metrics/ragas_metric.py +43 -23
- opik/evaluation/models/__init__.py +8 -0
- opik/evaluation/models/base_model.py +107 -1
- opik/evaluation/models/langchain/langchain_chat_model.py +15 -7
- opik/evaluation/models/langchain/message_converters.py +97 -15
- opik/evaluation/models/litellm/litellm_chat_model.py +156 -29
- opik/evaluation/models/litellm/util.py +125 -0
- opik/evaluation/models/litellm/warning_filters.py +16 -4
- opik/evaluation/models/model_capabilities.py +187 -0
- opik/evaluation/models/models_factory.py +25 -3
- opik/evaluation/preprocessing.py +92 -0
- opik/evaluation/report.py +70 -12
- opik/evaluation/rest_operations.py +49 -45
- opik/evaluation/samplers/__init__.py +4 -0
- opik/evaluation/samplers/base_dataset_sampler.py +40 -0
- opik/evaluation/samplers/random_dataset_sampler.py +48 -0
- opik/evaluation/score_statistics.py +66 -0
- opik/evaluation/scorers/__init__.py +4 -0
- opik/evaluation/scorers/scorer_function.py +55 -0
- opik/evaluation/scorers/scorer_wrapper_metric.py +130 -0
- opik/evaluation/test_case.py +3 -2
- opik/evaluation/test_result.py +1 -0
- opik/evaluation/threads/evaluator.py +31 -3
- opik/evaluation/threads/helpers.py +3 -2
- opik/evaluation/types.py +9 -1
- opik/exceptions.py +33 -0
- opik/file_upload/file_uploader.py +13 -0
- opik/file_upload/upload_options.py +2 -0
- opik/hooks/__init__.py +23 -0
- opik/hooks/anonymizer_hook.py +36 -0
- opik/hooks/httpx_client_hook.py +112 -0
- opik/httpx_client.py +12 -9
- opik/id_helpers.py +18 -0
- opik/integrations/adk/graph/subgraph_edges_builders.py +1 -2
- opik/integrations/adk/helpers.py +16 -7
- opik/integrations/adk/legacy_opik_tracer.py +7 -4
- opik/integrations/adk/opik_tracer.py +14 -1
- opik/integrations/adk/patchers/adk_otel_tracer/opik_adk_otel_tracer.py +7 -3
- opik/integrations/adk/recursive_callback_injector.py +4 -7
- opik/integrations/bedrock/converse/__init__.py +0 -0
- opik/integrations/bedrock/converse/chunks_aggregator.py +188 -0
- opik/integrations/bedrock/{converse_decorator.py → converse/converse_decorator.py} +4 -3
- opik/integrations/bedrock/invoke_agent_decorator.py +5 -4
- opik/integrations/bedrock/invoke_model/__init__.py +0 -0
- opik/integrations/bedrock/invoke_model/chunks_aggregator/__init__.py +78 -0
- opik/integrations/bedrock/invoke_model/chunks_aggregator/api.py +45 -0
- opik/integrations/bedrock/invoke_model/chunks_aggregator/base.py +23 -0
- opik/integrations/bedrock/invoke_model/chunks_aggregator/claude.py +121 -0
- opik/integrations/bedrock/invoke_model/chunks_aggregator/format_detector.py +107 -0
- opik/integrations/bedrock/invoke_model/chunks_aggregator/llama.py +108 -0
- opik/integrations/bedrock/invoke_model/chunks_aggregator/mistral.py +118 -0
- opik/integrations/bedrock/invoke_model/chunks_aggregator/nova.py +99 -0
- opik/integrations/bedrock/invoke_model/invoke_model_decorator.py +178 -0
- opik/integrations/bedrock/invoke_model/response_types.py +34 -0
- opik/integrations/bedrock/invoke_model/stream_wrappers.py +122 -0
- opik/integrations/bedrock/invoke_model/usage_converters.py +87 -0
- opik/integrations/bedrock/invoke_model/usage_extraction.py +108 -0
- opik/integrations/bedrock/opik_tracker.py +42 -4
- opik/integrations/bedrock/types.py +19 -0
- opik/integrations/crewai/crewai_decorator.py +8 -51
- opik/integrations/crewai/opik_tracker.py +31 -10
- opik/integrations/crewai/patchers/__init__.py +5 -0
- opik/integrations/crewai/patchers/flow.py +118 -0
- opik/integrations/crewai/patchers/litellm_completion.py +30 -0
- opik/integrations/crewai/patchers/llm_client.py +207 -0
- opik/integrations/dspy/callback.py +80 -17
- opik/integrations/dspy/parsers.py +168 -0
- opik/integrations/harbor/__init__.py +17 -0
- opik/integrations/harbor/experiment_service.py +269 -0
- opik/integrations/harbor/opik_tracker.py +528 -0
- opik/integrations/haystack/opik_connector.py +2 -2
- opik/integrations/haystack/opik_tracer.py +3 -7
- opik/integrations/langchain/__init__.py +3 -1
- opik/integrations/langchain/helpers.py +96 -0
- opik/integrations/langchain/langgraph_async_context_bridge.py +131 -0
- opik/integrations/langchain/langgraph_tracer_injector.py +88 -0
- opik/integrations/langchain/opik_encoder_extension.py +1 -1
- opik/integrations/langchain/opik_tracer.py +474 -229
- opik/integrations/litellm/__init__.py +5 -0
- opik/integrations/litellm/completion_chunks_aggregator.py +115 -0
- opik/integrations/litellm/litellm_completion_decorator.py +242 -0
- opik/integrations/litellm/opik_tracker.py +43 -0
- opik/integrations/litellm/stream_patchers.py +151 -0
- opik/integrations/llama_index/callback.py +146 -107
- opik/integrations/openai/agents/opik_tracing_processor.py +1 -2
- opik/integrations/openai/openai_chat_completions_decorator.py +2 -16
- opik/integrations/openai/opik_tracker.py +1 -1
- opik/integrations/sagemaker/auth.py +5 -1
- opik/llm_usage/google_usage.py +3 -1
- opik/llm_usage/opik_usage.py +7 -8
- opik/llm_usage/opik_usage_factory.py +4 -2
- opik/logging_messages.py +6 -0
- opik/message_processing/batching/base_batcher.py +14 -21
- opik/message_processing/batching/batch_manager.py +22 -10
- opik/message_processing/batching/batch_manager_constuctors.py +10 -0
- opik/message_processing/batching/batchers.py +59 -27
- opik/message_processing/batching/flushing_thread.py +0 -3
- opik/message_processing/emulation/__init__.py +0 -0
- opik/message_processing/emulation/emulator_message_processor.py +578 -0
- opik/message_processing/emulation/local_emulator_message_processor.py +140 -0
- opik/message_processing/emulation/models.py +162 -0
- opik/message_processing/encoder_helpers.py +79 -0
- opik/message_processing/messages.py +56 -1
- opik/message_processing/preprocessing/__init__.py +0 -0
- opik/message_processing/preprocessing/attachments_preprocessor.py +70 -0
- opik/message_processing/preprocessing/batching_preprocessor.py +53 -0
- opik/message_processing/preprocessing/constants.py +1 -0
- opik/message_processing/preprocessing/file_upload_preprocessor.py +38 -0
- opik/message_processing/preprocessing/preprocessor.py +36 -0
- opik/message_processing/processors/__init__.py +0 -0
- opik/message_processing/processors/attachments_extraction_processor.py +146 -0
- opik/message_processing/processors/message_processors.py +92 -0
- opik/message_processing/processors/message_processors_chain.py +96 -0
- opik/message_processing/{message_processors.py → processors/online_message_processor.py} +85 -29
- opik/message_processing/queue_consumer.py +9 -3
- opik/message_processing/streamer.py +71 -33
- opik/message_processing/streamer_constructors.py +43 -10
- opik/opik_context.py +16 -4
- opik/plugins/pytest/hooks.py +5 -3
- opik/rest_api/__init__.py +346 -15
- opik/rest_api/alerts/__init__.py +7 -0
- opik/rest_api/alerts/client.py +667 -0
- opik/rest_api/alerts/raw_client.py +1015 -0
- opik/rest_api/alerts/types/__init__.py +7 -0
- opik/rest_api/alerts/types/get_webhook_examples_request_alert_type.py +5 -0
- opik/rest_api/annotation_queues/__init__.py +4 -0
- opik/rest_api/annotation_queues/client.py +668 -0
- opik/rest_api/annotation_queues/raw_client.py +1019 -0
- opik/rest_api/automation_rule_evaluators/client.py +34 -2
- opik/rest_api/automation_rule_evaluators/raw_client.py +24 -0
- opik/rest_api/client.py +15 -0
- opik/rest_api/dashboards/__init__.py +4 -0
- opik/rest_api/dashboards/client.py +462 -0
- opik/rest_api/dashboards/raw_client.py +648 -0
- opik/rest_api/datasets/client.py +1310 -44
- opik/rest_api/datasets/raw_client.py +2269 -358
- opik/rest_api/experiments/__init__.py +2 -2
- opik/rest_api/experiments/client.py +191 -5
- opik/rest_api/experiments/raw_client.py +301 -7
- opik/rest_api/experiments/types/__init__.py +4 -1
- opik/rest_api/experiments/types/experiment_update_status.py +5 -0
- opik/rest_api/experiments/types/experiment_update_type.py +5 -0
- opik/rest_api/experiments/types/experiment_write_status.py +5 -0
- opik/rest_api/feedback_definitions/types/find_feedback_definitions_request_type.py +1 -1
- opik/rest_api/llm_provider_key/client.py +20 -0
- opik/rest_api/llm_provider_key/raw_client.py +20 -0
- opik/rest_api/llm_provider_key/types/provider_api_key_write_provider.py +1 -1
- opik/rest_api/manual_evaluation/__init__.py +4 -0
- opik/rest_api/manual_evaluation/client.py +347 -0
- opik/rest_api/manual_evaluation/raw_client.py +543 -0
- opik/rest_api/optimizations/client.py +145 -9
- opik/rest_api/optimizations/raw_client.py +237 -13
- opik/rest_api/optimizations/types/optimization_update_status.py +3 -1
- opik/rest_api/prompts/__init__.py +2 -2
- opik/rest_api/prompts/client.py +227 -6
- opik/rest_api/prompts/raw_client.py +331 -2
- opik/rest_api/prompts/types/__init__.py +3 -1
- opik/rest_api/prompts/types/create_prompt_version_detail_template_structure.py +5 -0
- opik/rest_api/prompts/types/prompt_write_template_structure.py +5 -0
- opik/rest_api/spans/__init__.py +0 -2
- opik/rest_api/spans/client.py +238 -76
- opik/rest_api/spans/raw_client.py +307 -95
- opik/rest_api/spans/types/__init__.py +0 -2
- opik/rest_api/traces/client.py +572 -161
- opik/rest_api/traces/raw_client.py +736 -229
- opik/rest_api/types/__init__.py +352 -17
- opik/rest_api/types/aggregation_data.py +1 -0
- opik/rest_api/types/alert.py +33 -0
- opik/rest_api/types/alert_alert_type.py +5 -0
- opik/rest_api/types/alert_page_public.py +24 -0
- opik/rest_api/types/alert_public.py +33 -0
- opik/rest_api/types/alert_public_alert_type.py +5 -0
- opik/rest_api/types/alert_trigger.py +27 -0
- opik/rest_api/types/alert_trigger_config.py +28 -0
- opik/rest_api/types/alert_trigger_config_public.py +28 -0
- opik/rest_api/types/alert_trigger_config_public_type.py +10 -0
- opik/rest_api/types/alert_trigger_config_type.py +10 -0
- opik/rest_api/types/alert_trigger_config_write.py +22 -0
- opik/rest_api/types/alert_trigger_config_write_type.py +10 -0
- opik/rest_api/types/alert_trigger_event_type.py +19 -0
- opik/rest_api/types/alert_trigger_public.py +27 -0
- opik/rest_api/types/alert_trigger_public_event_type.py +19 -0
- opik/rest_api/types/alert_trigger_write.py +23 -0
- opik/rest_api/types/alert_trigger_write_event_type.py +19 -0
- opik/rest_api/types/alert_write.py +28 -0
- opik/rest_api/types/alert_write_alert_type.py +5 -0
- opik/rest_api/types/annotation_queue.py +42 -0
- opik/rest_api/types/annotation_queue_batch.py +27 -0
- opik/rest_api/types/annotation_queue_item_ids.py +19 -0
- opik/rest_api/types/annotation_queue_page_public.py +28 -0
- opik/rest_api/types/annotation_queue_public.py +38 -0
- opik/rest_api/types/annotation_queue_public_scope.py +5 -0
- opik/rest_api/types/annotation_queue_reviewer.py +20 -0
- opik/rest_api/types/annotation_queue_reviewer_public.py +20 -0
- opik/rest_api/types/annotation_queue_scope.py +5 -0
- opik/rest_api/types/annotation_queue_write.py +31 -0
- opik/rest_api/types/annotation_queue_write_scope.py +5 -0
- opik/rest_api/types/audio_url.py +19 -0
- opik/rest_api/types/audio_url_public.py +19 -0
- opik/rest_api/types/audio_url_write.py +19 -0
- opik/rest_api/types/automation_rule_evaluator.py +62 -2
- opik/rest_api/types/automation_rule_evaluator_llm_as_judge.py +2 -0
- opik/rest_api/types/automation_rule_evaluator_llm_as_judge_public.py +2 -0
- opik/rest_api/types/automation_rule_evaluator_llm_as_judge_write.py +2 -0
- opik/rest_api/types/automation_rule_evaluator_object_object_public.py +155 -0
- opik/rest_api/types/automation_rule_evaluator_page_public.py +3 -2
- opik/rest_api/types/automation_rule_evaluator_public.py +57 -2
- opik/rest_api/types/automation_rule_evaluator_span_llm_as_judge.py +22 -0
- opik/rest_api/types/automation_rule_evaluator_span_llm_as_judge_public.py +22 -0
- opik/rest_api/types/automation_rule_evaluator_span_llm_as_judge_write.py +22 -0
- opik/rest_api/types/automation_rule_evaluator_span_user_defined_metric_python.py +22 -0
- opik/rest_api/types/automation_rule_evaluator_span_user_defined_metric_python_public.py +22 -0
- opik/rest_api/types/automation_rule_evaluator_span_user_defined_metric_python_write.py +22 -0
- opik/rest_api/types/automation_rule_evaluator_trace_thread_llm_as_judge.py +2 -0
- opik/rest_api/types/automation_rule_evaluator_trace_thread_llm_as_judge_public.py +2 -0
- opik/rest_api/types/automation_rule_evaluator_trace_thread_llm_as_judge_write.py +2 -0
- opik/rest_api/types/automation_rule_evaluator_trace_thread_user_defined_metric_python.py +2 -0
- opik/rest_api/types/automation_rule_evaluator_trace_thread_user_defined_metric_python_public.py +2 -0
- opik/rest_api/types/automation_rule_evaluator_trace_thread_user_defined_metric_python_write.py +2 -0
- opik/rest_api/types/automation_rule_evaluator_update.py +51 -1
- opik/rest_api/types/automation_rule_evaluator_update_llm_as_judge.py +2 -0
- opik/rest_api/types/automation_rule_evaluator_update_span_llm_as_judge.py +22 -0
- opik/rest_api/types/automation_rule_evaluator_update_span_user_defined_metric_python.py +22 -0
- opik/rest_api/types/automation_rule_evaluator_update_trace_thread_llm_as_judge.py +2 -0
- opik/rest_api/types/automation_rule_evaluator_update_trace_thread_user_defined_metric_python.py +2 -0
- opik/rest_api/types/automation_rule_evaluator_update_user_defined_metric_python.py +2 -0
- opik/rest_api/types/automation_rule_evaluator_user_defined_metric_python.py +2 -0
- opik/rest_api/types/automation_rule_evaluator_user_defined_metric_python_public.py +2 -0
- opik/rest_api/types/automation_rule_evaluator_user_defined_metric_python_write.py +2 -0
- opik/rest_api/types/automation_rule_evaluator_write.py +51 -1
- opik/rest_api/types/boolean_feedback_definition.py +25 -0
- opik/rest_api/types/boolean_feedback_definition_create.py +20 -0
- opik/rest_api/types/boolean_feedback_definition_public.py +25 -0
- opik/rest_api/types/boolean_feedback_definition_update.py +20 -0
- opik/rest_api/types/boolean_feedback_detail.py +29 -0
- opik/rest_api/types/boolean_feedback_detail_create.py +29 -0
- opik/rest_api/types/boolean_feedback_detail_public.py +29 -0
- opik/rest_api/types/boolean_feedback_detail_update.py +29 -0
- opik/rest_api/types/dashboard_page_public.py +24 -0
- opik/rest_api/types/dashboard_public.py +30 -0
- opik/rest_api/types/dataset.py +4 -0
- opik/rest_api/types/dataset_expansion.py +42 -0
- opik/rest_api/types/dataset_expansion_response.py +39 -0
- opik/rest_api/types/dataset_item.py +2 -0
- opik/rest_api/types/dataset_item_changes_public.py +5 -0
- opik/rest_api/types/dataset_item_compare.py +2 -0
- opik/rest_api/types/dataset_item_filter.py +27 -0
- opik/rest_api/types/dataset_item_filter_operator.py +21 -0
- opik/rest_api/types/dataset_item_page_compare.py +5 -0
- opik/rest_api/types/dataset_item_page_public.py +5 -0
- opik/rest_api/types/dataset_item_public.py +2 -0
- opik/rest_api/types/dataset_item_update.py +39 -0
- opik/rest_api/types/dataset_item_write.py +1 -0
- opik/rest_api/types/dataset_public.py +4 -0
- opik/rest_api/types/dataset_public_status.py +5 -0
- opik/rest_api/types/dataset_status.py +5 -0
- opik/rest_api/types/dataset_version_diff.py +22 -0
- opik/rest_api/types/dataset_version_diff_stats.py +24 -0
- opik/rest_api/types/dataset_version_page_public.py +23 -0
- opik/rest_api/types/dataset_version_public.py +59 -0
- opik/rest_api/types/dataset_version_summary.py +46 -0
- opik/rest_api/types/dataset_version_summary_public.py +46 -0
- opik/rest_api/types/experiment.py +7 -2
- opik/rest_api/types/experiment_group_response.py +2 -0
- opik/rest_api/types/experiment_public.py +7 -2
- opik/rest_api/types/experiment_public_status.py +5 -0
- opik/rest_api/types/experiment_score.py +20 -0
- opik/rest_api/types/experiment_score_public.py +20 -0
- opik/rest_api/types/experiment_score_write.py +20 -0
- opik/rest_api/types/experiment_status.py +5 -0
- opik/rest_api/types/feedback.py +25 -1
- opik/rest_api/types/feedback_create.py +20 -1
- opik/rest_api/types/feedback_object_public.py +27 -1
- opik/rest_api/types/feedback_public.py +25 -1
- opik/rest_api/types/feedback_score_batch_item.py +2 -1
- opik/rest_api/types/feedback_score_batch_item_thread.py +2 -1
- opik/rest_api/types/feedback_score_public.py +4 -0
- opik/rest_api/types/feedback_update.py +20 -1
- opik/rest_api/types/group_content_with_aggregations.py +1 -0
- opik/rest_api/types/group_detail.py +19 -0
- opik/rest_api/types/group_details.py +20 -0
- opik/rest_api/types/guardrail.py +1 -0
- opik/rest_api/types/guardrail_write.py +1 -0
- opik/rest_api/types/ids_holder.py +19 -0
- opik/rest_api/types/image_url.py +20 -0
- opik/rest_api/types/image_url_public.py +20 -0
- opik/rest_api/types/image_url_write.py +20 -0
- opik/rest_api/types/llm_as_judge_message.py +5 -1
- opik/rest_api/types/llm_as_judge_message_content.py +26 -0
- opik/rest_api/types/llm_as_judge_message_content_public.py +26 -0
- opik/rest_api/types/llm_as_judge_message_content_write.py +26 -0
- opik/rest_api/types/llm_as_judge_message_public.py +5 -1
- opik/rest_api/types/llm_as_judge_message_write.py +5 -1
- opik/rest_api/types/llm_as_judge_model_parameters.py +3 -0
- opik/rest_api/types/llm_as_judge_model_parameters_public.py +3 -0
- opik/rest_api/types/llm_as_judge_model_parameters_write.py +3 -0
- opik/rest_api/types/manual_evaluation_request.py +38 -0
- opik/rest_api/types/manual_evaluation_request_entity_type.py +5 -0
- opik/rest_api/types/manual_evaluation_response.py +27 -0
- opik/rest_api/types/optimization.py +4 -2
- opik/rest_api/types/optimization_public.py +4 -2
- opik/rest_api/types/optimization_public_status.py +3 -1
- opik/rest_api/types/optimization_status.py +3 -1
- opik/rest_api/types/optimization_studio_config.py +27 -0
- opik/rest_api/types/optimization_studio_config_public.py +27 -0
- opik/rest_api/types/optimization_studio_config_write.py +27 -0
- opik/rest_api/types/optimization_studio_log.py +22 -0
- opik/rest_api/types/optimization_write.py +4 -2
- opik/rest_api/types/optimization_write_status.py +3 -1
- opik/rest_api/types/project.py +1 -0
- opik/rest_api/types/project_detailed.py +1 -0
- opik/rest_api/types/project_reference.py +31 -0
- opik/rest_api/types/project_reference_public.py +31 -0
- opik/rest_api/types/project_stats_summary_item.py +1 -0
- opik/rest_api/types/prompt.py +6 -0
- opik/rest_api/types/prompt_detail.py +6 -0
- opik/rest_api/types/prompt_detail_template_structure.py +5 -0
- opik/rest_api/types/prompt_public.py +6 -0
- opik/rest_api/types/prompt_public_template_structure.py +5 -0
- opik/rest_api/types/prompt_template_structure.py +5 -0
- opik/rest_api/types/prompt_version.py +3 -0
- opik/rest_api/types/prompt_version_detail.py +3 -0
- opik/rest_api/types/prompt_version_detail_template_structure.py +5 -0
- opik/rest_api/types/prompt_version_link.py +1 -0
- opik/rest_api/types/prompt_version_link_public.py +1 -0
- opik/rest_api/types/prompt_version_page_public.py +5 -0
- opik/rest_api/types/prompt_version_public.py +3 -0
- opik/rest_api/types/prompt_version_public_template_structure.py +5 -0
- opik/rest_api/types/prompt_version_template_structure.py +5 -0
- opik/rest_api/types/prompt_version_update.py +33 -0
- opik/rest_api/types/provider_api_key.py +9 -0
- opik/rest_api/types/provider_api_key_provider.py +1 -1
- opik/rest_api/types/provider_api_key_public.py +9 -0
- opik/rest_api/types/provider_api_key_public_provider.py +1 -1
- opik/rest_api/types/score_name.py +1 -0
- opik/rest_api/types/service_toggles_config.py +18 -0
- opik/rest_api/types/span.py +1 -2
- opik/rest_api/types/span_enrichment_options.py +31 -0
- opik/rest_api/types/span_experiment_item_bulk_write_view.py +1 -2
- opik/rest_api/types/span_filter.py +23 -0
- opik/rest_api/types/span_filter_operator.py +21 -0
- opik/rest_api/types/span_filter_write.py +23 -0
- opik/rest_api/types/span_filter_write_operator.py +21 -0
- opik/rest_api/types/span_llm_as_judge_code.py +27 -0
- opik/rest_api/types/span_llm_as_judge_code_public.py +27 -0
- opik/rest_api/types/span_llm_as_judge_code_write.py +27 -0
- opik/rest_api/types/span_public.py +1 -2
- opik/rest_api/types/span_update.py +46 -0
- opik/rest_api/types/span_user_defined_metric_python_code.py +20 -0
- opik/rest_api/types/span_user_defined_metric_python_code_public.py +20 -0
- opik/rest_api/types/span_user_defined_metric_python_code_write.py +20 -0
- opik/rest_api/types/span_write.py +1 -2
- opik/rest_api/types/studio_evaluation.py +20 -0
- opik/rest_api/types/studio_evaluation_public.py +20 -0
- opik/rest_api/types/studio_evaluation_write.py +20 -0
- opik/rest_api/types/studio_llm_model.py +21 -0
- opik/rest_api/types/studio_llm_model_public.py +21 -0
- opik/rest_api/types/studio_llm_model_write.py +21 -0
- opik/rest_api/types/studio_message.py +20 -0
- opik/rest_api/types/studio_message_public.py +20 -0
- opik/rest_api/types/studio_message_write.py +20 -0
- opik/rest_api/types/studio_metric.py +21 -0
- opik/rest_api/types/studio_metric_public.py +21 -0
- opik/rest_api/types/studio_metric_write.py +21 -0
- opik/rest_api/types/studio_optimizer.py +21 -0
- opik/rest_api/types/studio_optimizer_public.py +21 -0
- opik/rest_api/types/studio_optimizer_write.py +21 -0
- opik/rest_api/types/studio_prompt.py +20 -0
- opik/rest_api/types/studio_prompt_public.py +20 -0
- opik/rest_api/types/studio_prompt_write.py +20 -0
- opik/rest_api/types/trace.py +11 -2
- opik/rest_api/types/trace_enrichment_options.py +32 -0
- opik/rest_api/types/trace_experiment_item_bulk_write_view.py +1 -2
- opik/rest_api/types/trace_filter.py +23 -0
- opik/rest_api/types/trace_filter_operator.py +21 -0
- opik/rest_api/types/trace_filter_write.py +23 -0
- opik/rest_api/types/trace_filter_write_operator.py +21 -0
- opik/rest_api/types/trace_public.py +11 -2
- opik/rest_api/types/trace_thread_filter_write.py +23 -0
- opik/rest_api/types/trace_thread_filter_write_operator.py +21 -0
- opik/rest_api/types/trace_thread_identifier.py +1 -0
- opik/rest_api/types/trace_update.py +39 -0
- opik/rest_api/types/trace_write.py +1 -2
- opik/rest_api/types/value_entry.py +2 -0
- opik/rest_api/types/value_entry_compare.py +2 -0
- opik/rest_api/types/value_entry_experiment_item_bulk_write_view.py +2 -0
- opik/rest_api/types/value_entry_public.py +2 -0
- opik/rest_api/types/video_url.py +19 -0
- opik/rest_api/types/video_url_public.py +19 -0
- opik/rest_api/types/video_url_write.py +19 -0
- opik/rest_api/types/webhook.py +28 -0
- opik/rest_api/types/webhook_examples.py +19 -0
- opik/rest_api/types/webhook_public.py +28 -0
- opik/rest_api/types/webhook_test_result.py +23 -0
- opik/rest_api/types/webhook_test_result_status.py +5 -0
- opik/rest_api/types/webhook_write.py +23 -0
- opik/rest_api/types/welcome_wizard_tracking.py +22 -0
- opik/rest_api/types/workspace_configuration.py +5 -0
- opik/rest_api/welcome_wizard/__init__.py +4 -0
- opik/rest_api/welcome_wizard/client.py +195 -0
- opik/rest_api/welcome_wizard/raw_client.py +208 -0
- opik/rest_api/workspaces/client.py +14 -2
- opik/rest_api/workspaces/raw_client.py +10 -0
- opik/s3_httpx_client.py +14 -1
- opik/simulation/__init__.py +6 -0
- opik/simulation/simulated_user.py +99 -0
- opik/simulation/simulator.py +108 -0
- opik/synchronization.py +5 -6
- opik/{decorator/tracing_runtime_config.py → tracing_runtime_config.py} +6 -7
- opik/types.py +36 -0
- opik/validation/chat_prompt_messages.py +241 -0
- opik/validation/feedback_score.py +3 -3
- opik/validation/validator.py +28 -0
- opik-1.9.71.dist-info/METADATA +370 -0
- opik-1.9.71.dist-info/RECORD +1110 -0
- opik/api_objects/prompt/prompt.py +0 -112
- opik/cli.py +0 -193
- opik/hooks.py +0 -13
- opik/integrations/bedrock/chunks_aggregator.py +0 -55
- opik/integrations/bedrock/helpers.py +0 -8
- opik/rest_api/types/automation_rule_evaluator_object_public.py +0 -100
- opik/rest_api/types/json_node_experiment_item_bulk_write_view.py +0 -5
- opik-1.8.39.dist-info/METADATA +0 -339
- opik-1.8.39.dist-info/RECORD +0 -790
- /opik/{evaluation/metrics/conversation/conversational_coherence → decorator/context_manager}/__init__.py +0 -0
- /opik/evaluation/metrics/conversation/{session_completeness → llm_judges/conversational_coherence}/__init__.py +0 -0
- /opik/evaluation/metrics/conversation/{conversational_coherence → llm_judges/conversational_coherence}/schema.py +0 -0
- /opik/evaluation/metrics/conversation/{user_frustration → llm_judges/session_completeness}/__init__.py +0 -0
- /opik/evaluation/metrics/conversation/{session_completeness → llm_judges/session_completeness}/schema.py +0 -0
- /opik/evaluation/metrics/conversation/{user_frustration → llm_judges/user_frustration}/schema.py +0 -0
- /opik/integrations/bedrock/{stream_wrappers.py → converse/stream_wrappers.py} +0 -0
- /opik/rest_api/{spans/types → types}/span_update_type.py +0 -0
- {opik-1.8.39.dist-info → opik-1.9.71.dist-info}/WHEEL +0 -0
- {opik-1.8.39.dist-info → opik-1.9.71.dist-info}/entry_points.txt +0 -0
- {opik-1.8.39.dist-info → opik-1.9.71.dist-info}/licenses/LICENSE +0 -0
- {opik-1.8.39.dist-info → opik-1.9.71.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
import pydantic
|
|
6
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class AudioUrl(UniversalBaseModel):
|
|
10
|
+
url: str
|
|
11
|
+
|
|
12
|
+
if IS_PYDANTIC_V2:
|
|
13
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
14
|
+
else:
|
|
15
|
+
|
|
16
|
+
class Config:
|
|
17
|
+
frozen = True
|
|
18
|
+
smart_union = True
|
|
19
|
+
extra = pydantic.Extra.allow
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
import pydantic
|
|
6
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class AudioUrlPublic(UniversalBaseModel):
|
|
10
|
+
url: str
|
|
11
|
+
|
|
12
|
+
if IS_PYDANTIC_V2:
|
|
13
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
14
|
+
else:
|
|
15
|
+
|
|
16
|
+
class Config:
|
|
17
|
+
frozen = True
|
|
18
|
+
smart_union = True
|
|
19
|
+
extra = pydantic.Extra.allow
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
import pydantic
|
|
6
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class AudioUrlWrite(UniversalBaseModel):
|
|
10
|
+
url: str
|
|
11
|
+
|
|
12
|
+
if IS_PYDANTIC_V2:
|
|
13
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
14
|
+
else:
|
|
15
|
+
|
|
16
|
+
class Config:
|
|
17
|
+
frozen = True
|
|
18
|
+
smart_union = True
|
|
19
|
+
extra = pydantic.Extra.allow
|
|
@@ -8,6 +8,12 @@ import typing
|
|
|
8
8
|
import pydantic
|
|
9
9
|
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
10
10
|
from .llm_as_judge_code import LlmAsJudgeCode
|
|
11
|
+
from .project_reference import ProjectReference
|
|
12
|
+
from .span_filter import SpanFilter
|
|
13
|
+
from .span_llm_as_judge_code import SpanLlmAsJudgeCode
|
|
14
|
+
from .span_user_defined_metric_python_code import SpanUserDefinedMetricPythonCode
|
|
15
|
+
from .trace_filter import TraceFilter
|
|
16
|
+
from .trace_thread_filter import TraceThreadFilter
|
|
11
17
|
from .trace_thread_llm_as_judge_code import TraceThreadLlmAsJudgeCode
|
|
12
18
|
from .trace_thread_user_defined_metric_python_code import TraceThreadUserDefinedMetricPythonCode
|
|
13
19
|
from .user_defined_metric_python_code import UserDefinedMetricPythonCode
|
|
@@ -15,8 +21,26 @@ from .user_defined_metric_python_code import UserDefinedMetricPythonCode
|
|
|
15
21
|
|
|
16
22
|
class Base(UniversalBaseModel):
|
|
17
23
|
id: typing.Optional[str] = None
|
|
18
|
-
project_id: str
|
|
19
|
-
|
|
24
|
+
project_id: typing.Optional[str] = pydantic.Field(default=None)
|
|
25
|
+
"""
|
|
26
|
+
Primary project ID (legacy field for backwards compatibility)
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
project_name: typing.Optional[str] = pydantic.Field(default=None)
|
|
30
|
+
"""
|
|
31
|
+
Primary project name (legacy field for backwards compatibility)
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
projects: typing.Optional[typing.List[ProjectReference]] = pydantic.Field(default=None)
|
|
35
|
+
"""
|
|
36
|
+
Projects assigned to this rule (unique, sorted alphabetically by name)
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
project_ids: typing.Optional[typing.List[str]] = pydantic.Field(default=None)
|
|
40
|
+
"""
|
|
41
|
+
Project IDs for write operations (used when creating/updating rules)
|
|
42
|
+
"""
|
|
43
|
+
|
|
20
44
|
name: str
|
|
21
45
|
sampling_rate: typing.Optional[float] = None
|
|
22
46
|
enabled: typing.Optional[bool] = None
|
|
@@ -38,6 +62,7 @@ class Base(UniversalBaseModel):
|
|
|
38
62
|
|
|
39
63
|
class AutomationRuleEvaluator_LlmAsJudge(Base):
|
|
40
64
|
type: typing.Literal["llm_as_judge"] = "llm_as_judge"
|
|
65
|
+
filters: typing.Optional[typing.List[TraceFilter]] = None
|
|
41
66
|
code: typing.Optional[LlmAsJudgeCode] = None
|
|
42
67
|
|
|
43
68
|
if IS_PYDANTIC_V2:
|
|
@@ -52,6 +77,7 @@ class AutomationRuleEvaluator_LlmAsJudge(Base):
|
|
|
52
77
|
|
|
53
78
|
class AutomationRuleEvaluator_UserDefinedMetricPython(Base):
|
|
54
79
|
type: typing.Literal["user_defined_metric_python"] = "user_defined_metric_python"
|
|
80
|
+
filters: typing.Optional[typing.List[TraceFilter]] = None
|
|
55
81
|
code: typing.Optional[UserDefinedMetricPythonCode] = None
|
|
56
82
|
|
|
57
83
|
if IS_PYDANTIC_V2:
|
|
@@ -66,6 +92,7 @@ class AutomationRuleEvaluator_UserDefinedMetricPython(Base):
|
|
|
66
92
|
|
|
67
93
|
class AutomationRuleEvaluator_TraceThreadLlmAsJudge(Base):
|
|
68
94
|
type: typing.Literal["trace_thread_llm_as_judge"] = "trace_thread_llm_as_judge"
|
|
95
|
+
filters: typing.Optional[typing.List[TraceThreadFilter]] = None
|
|
69
96
|
code: typing.Optional[TraceThreadLlmAsJudgeCode] = None
|
|
70
97
|
|
|
71
98
|
if IS_PYDANTIC_V2:
|
|
@@ -80,6 +107,7 @@ class AutomationRuleEvaluator_TraceThreadLlmAsJudge(Base):
|
|
|
80
107
|
|
|
81
108
|
class AutomationRuleEvaluator_TraceThreadUserDefinedMetricPython(Base):
|
|
82
109
|
type: typing.Literal["trace_thread_user_defined_metric_python"] = "trace_thread_user_defined_metric_python"
|
|
110
|
+
filters: typing.Optional[typing.List[TraceThreadFilter]] = None
|
|
83
111
|
code: typing.Optional[TraceThreadUserDefinedMetricPythonCode] = None
|
|
84
112
|
|
|
85
113
|
if IS_PYDANTIC_V2:
|
|
@@ -92,9 +120,41 @@ class AutomationRuleEvaluator_TraceThreadUserDefinedMetricPython(Base):
|
|
|
92
120
|
extra = pydantic.Extra.allow
|
|
93
121
|
|
|
94
122
|
|
|
123
|
+
class AutomationRuleEvaluator_SpanLlmAsJudge(Base):
|
|
124
|
+
type: typing.Literal["span_llm_as_judge"] = "span_llm_as_judge"
|
|
125
|
+
filters: typing.Optional[typing.List[SpanFilter]] = None
|
|
126
|
+
code: typing.Optional[SpanLlmAsJudgeCode] = None
|
|
127
|
+
|
|
128
|
+
if IS_PYDANTIC_V2:
|
|
129
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
130
|
+
else:
|
|
131
|
+
|
|
132
|
+
class Config:
|
|
133
|
+
frozen = True
|
|
134
|
+
smart_union = True
|
|
135
|
+
extra = pydantic.Extra.allow
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
class AutomationRuleEvaluator_SpanUserDefinedMetricPython(Base):
|
|
139
|
+
type: typing.Literal["span_user_defined_metric_python"] = "span_user_defined_metric_python"
|
|
140
|
+
filters: typing.Optional[typing.List[SpanFilter]] = None
|
|
141
|
+
code: typing.Optional[SpanUserDefinedMetricPythonCode] = None
|
|
142
|
+
|
|
143
|
+
if IS_PYDANTIC_V2:
|
|
144
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
145
|
+
else:
|
|
146
|
+
|
|
147
|
+
class Config:
|
|
148
|
+
frozen = True
|
|
149
|
+
smart_union = True
|
|
150
|
+
extra = pydantic.Extra.allow
|
|
151
|
+
|
|
152
|
+
|
|
95
153
|
AutomationRuleEvaluator = typing.Union[
|
|
96
154
|
AutomationRuleEvaluator_LlmAsJudge,
|
|
97
155
|
AutomationRuleEvaluator_UserDefinedMetricPython,
|
|
98
156
|
AutomationRuleEvaluator_TraceThreadLlmAsJudge,
|
|
99
157
|
AutomationRuleEvaluator_TraceThreadUserDefinedMetricPython,
|
|
158
|
+
AutomationRuleEvaluator_SpanLlmAsJudge,
|
|
159
|
+
AutomationRuleEvaluator_SpanUserDefinedMetricPython,
|
|
100
160
|
]
|
|
@@ -5,9 +5,11 @@ import typing
|
|
|
5
5
|
import pydantic
|
|
6
6
|
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
7
|
from .llm_as_judge_code import LlmAsJudgeCode
|
|
8
|
+
from .trace_filter import TraceFilter
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
class AutomationRuleEvaluatorLlmAsJudge(UniversalBaseModel):
|
|
12
|
+
filters: typing.Optional[typing.List[TraceFilter]] = None
|
|
11
13
|
code: typing.Optional[LlmAsJudgeCode] = None
|
|
12
14
|
|
|
13
15
|
if IS_PYDANTIC_V2:
|
|
@@ -5,9 +5,11 @@ import typing
|
|
|
5
5
|
import pydantic
|
|
6
6
|
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
7
|
from .llm_as_judge_code_public import LlmAsJudgeCodePublic
|
|
8
|
+
from .trace_filter_public import TraceFilterPublic
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
class AutomationRuleEvaluatorLlmAsJudgePublic(UniversalBaseModel):
|
|
12
|
+
filters: typing.Optional[typing.List[TraceFilterPublic]] = None
|
|
11
13
|
code: typing.Optional[LlmAsJudgeCodePublic] = None
|
|
12
14
|
|
|
13
15
|
if IS_PYDANTIC_V2:
|
|
@@ -5,9 +5,11 @@ import typing
|
|
|
5
5
|
import pydantic
|
|
6
6
|
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
7
|
from .llm_as_judge_code_write import LlmAsJudgeCodeWrite
|
|
8
|
+
from .trace_filter_write import TraceFilterWrite
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
class AutomationRuleEvaluatorLlmAsJudgeWrite(UniversalBaseModel):
|
|
12
|
+
filters: typing.Optional[typing.List[TraceFilterWrite]] = None
|
|
11
13
|
code: typing.Optional[LlmAsJudgeCodeWrite] = None
|
|
12
14
|
|
|
13
15
|
if IS_PYDANTIC_V2:
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import datetime as dt
|
|
6
|
+
import typing
|
|
7
|
+
|
|
8
|
+
import pydantic
|
|
9
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
10
|
+
from .llm_as_judge_code_public import LlmAsJudgeCodePublic
|
|
11
|
+
from .project_reference_public import ProjectReferencePublic
|
|
12
|
+
from .span_filter_public import SpanFilterPublic
|
|
13
|
+
from .span_llm_as_judge_code_public import SpanLlmAsJudgeCodePublic
|
|
14
|
+
from .span_user_defined_metric_python_code_public import SpanUserDefinedMetricPythonCodePublic
|
|
15
|
+
from .trace_filter_public import TraceFilterPublic
|
|
16
|
+
from .trace_thread_filter_public import TraceThreadFilterPublic
|
|
17
|
+
from .trace_thread_llm_as_judge_code_public import TraceThreadLlmAsJudgeCodePublic
|
|
18
|
+
from .trace_thread_user_defined_metric_python_code_public import TraceThreadUserDefinedMetricPythonCodePublic
|
|
19
|
+
from .user_defined_metric_python_code_public import UserDefinedMetricPythonCodePublic
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class Base(UniversalBaseModel):
|
|
23
|
+
id: typing.Optional[str] = None
|
|
24
|
+
project_id: typing.Optional[str] = pydantic.Field(default=None)
|
|
25
|
+
"""
|
|
26
|
+
Primary project ID (legacy field for backwards compatibility)
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
project_name: typing.Optional[str] = pydantic.Field(default=None)
|
|
30
|
+
"""
|
|
31
|
+
Primary project name (legacy field for backwards compatibility)
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
projects: typing.Optional[typing.List[ProjectReferencePublic]] = pydantic.Field(default=None)
|
|
35
|
+
"""
|
|
36
|
+
Projects assigned to this rule (unique, sorted alphabetically by name)
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
name: str
|
|
40
|
+
sampling_rate: typing.Optional[float] = None
|
|
41
|
+
enabled: typing.Optional[bool] = None
|
|
42
|
+
created_at: typing.Optional[dt.datetime] = None
|
|
43
|
+
created_by: typing.Optional[str] = None
|
|
44
|
+
last_updated_at: typing.Optional[dt.datetime] = None
|
|
45
|
+
last_updated_by: typing.Optional[str] = None
|
|
46
|
+
action: typing.Literal["evaluator"] = "evaluator"
|
|
47
|
+
|
|
48
|
+
if IS_PYDANTIC_V2:
|
|
49
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
50
|
+
else:
|
|
51
|
+
|
|
52
|
+
class Config:
|
|
53
|
+
frozen = True
|
|
54
|
+
smart_union = True
|
|
55
|
+
extra = pydantic.Extra.allow
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
class AutomationRuleEvaluatorObjectObjectPublic_LlmAsJudge(Base):
|
|
59
|
+
type: typing.Literal["llm_as_judge"] = "llm_as_judge"
|
|
60
|
+
filters: typing.Optional[typing.List[TraceFilterPublic]] = None
|
|
61
|
+
code: typing.Optional[LlmAsJudgeCodePublic] = None
|
|
62
|
+
|
|
63
|
+
if IS_PYDANTIC_V2:
|
|
64
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
65
|
+
else:
|
|
66
|
+
|
|
67
|
+
class Config:
|
|
68
|
+
frozen = True
|
|
69
|
+
smart_union = True
|
|
70
|
+
extra = pydantic.Extra.allow
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
class AutomationRuleEvaluatorObjectObjectPublic_UserDefinedMetricPython(Base):
|
|
74
|
+
type: typing.Literal["user_defined_metric_python"] = "user_defined_metric_python"
|
|
75
|
+
filters: typing.Optional[typing.List[TraceFilterPublic]] = None
|
|
76
|
+
code: typing.Optional[UserDefinedMetricPythonCodePublic] = None
|
|
77
|
+
|
|
78
|
+
if IS_PYDANTIC_V2:
|
|
79
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
80
|
+
else:
|
|
81
|
+
|
|
82
|
+
class Config:
|
|
83
|
+
frozen = True
|
|
84
|
+
smart_union = True
|
|
85
|
+
extra = pydantic.Extra.allow
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
class AutomationRuleEvaluatorObjectObjectPublic_TraceThreadLlmAsJudge(Base):
|
|
89
|
+
type: typing.Literal["trace_thread_llm_as_judge"] = "trace_thread_llm_as_judge"
|
|
90
|
+
filters: typing.Optional[typing.List[TraceThreadFilterPublic]] = None
|
|
91
|
+
code: typing.Optional[TraceThreadLlmAsJudgeCodePublic] = None
|
|
92
|
+
|
|
93
|
+
if IS_PYDANTIC_V2:
|
|
94
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
95
|
+
else:
|
|
96
|
+
|
|
97
|
+
class Config:
|
|
98
|
+
frozen = True
|
|
99
|
+
smart_union = True
|
|
100
|
+
extra = pydantic.Extra.allow
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
class AutomationRuleEvaluatorObjectObjectPublic_TraceThreadUserDefinedMetricPython(Base):
|
|
104
|
+
type: typing.Literal["trace_thread_user_defined_metric_python"] = "trace_thread_user_defined_metric_python"
|
|
105
|
+
filters: typing.Optional[typing.List[TraceThreadFilterPublic]] = None
|
|
106
|
+
code: typing.Optional[TraceThreadUserDefinedMetricPythonCodePublic] = None
|
|
107
|
+
|
|
108
|
+
if IS_PYDANTIC_V2:
|
|
109
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
110
|
+
else:
|
|
111
|
+
|
|
112
|
+
class Config:
|
|
113
|
+
frozen = True
|
|
114
|
+
smart_union = True
|
|
115
|
+
extra = pydantic.Extra.allow
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
class AutomationRuleEvaluatorObjectObjectPublic_SpanLlmAsJudge(Base):
|
|
119
|
+
type: typing.Literal["span_llm_as_judge"] = "span_llm_as_judge"
|
|
120
|
+
filters: typing.Optional[typing.List[SpanFilterPublic]] = None
|
|
121
|
+
code: typing.Optional[SpanLlmAsJudgeCodePublic] = None
|
|
122
|
+
|
|
123
|
+
if IS_PYDANTIC_V2:
|
|
124
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
125
|
+
else:
|
|
126
|
+
|
|
127
|
+
class Config:
|
|
128
|
+
frozen = True
|
|
129
|
+
smart_union = True
|
|
130
|
+
extra = pydantic.Extra.allow
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
class AutomationRuleEvaluatorObjectObjectPublic_SpanUserDefinedMetricPython(Base):
|
|
134
|
+
type: typing.Literal["span_user_defined_metric_python"] = "span_user_defined_metric_python"
|
|
135
|
+
filters: typing.Optional[typing.List[SpanFilterPublic]] = None
|
|
136
|
+
code: typing.Optional[SpanUserDefinedMetricPythonCodePublic] = None
|
|
137
|
+
|
|
138
|
+
if IS_PYDANTIC_V2:
|
|
139
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
140
|
+
else:
|
|
141
|
+
|
|
142
|
+
class Config:
|
|
143
|
+
frozen = True
|
|
144
|
+
smart_union = True
|
|
145
|
+
extra = pydantic.Extra.allow
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
AutomationRuleEvaluatorObjectObjectPublic = typing.Union[
|
|
149
|
+
AutomationRuleEvaluatorObjectObjectPublic_LlmAsJudge,
|
|
150
|
+
AutomationRuleEvaluatorObjectObjectPublic_UserDefinedMetricPython,
|
|
151
|
+
AutomationRuleEvaluatorObjectObjectPublic_TraceThreadLlmAsJudge,
|
|
152
|
+
AutomationRuleEvaluatorObjectObjectPublic_TraceThreadUserDefinedMetricPython,
|
|
153
|
+
AutomationRuleEvaluatorObjectObjectPublic_SpanLlmAsJudge,
|
|
154
|
+
AutomationRuleEvaluatorObjectObjectPublic_SpanUserDefinedMetricPython,
|
|
155
|
+
]
|
|
@@ -4,14 +4,15 @@ import typing
|
|
|
4
4
|
|
|
5
5
|
import pydantic
|
|
6
6
|
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
|
-
from .
|
|
7
|
+
from .automation_rule_evaluator_object_object_public import AutomationRuleEvaluatorObjectObjectPublic
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class AutomationRuleEvaluatorPagePublic(UniversalBaseModel):
|
|
11
11
|
page: typing.Optional[int] = None
|
|
12
12
|
size: typing.Optional[int] = None
|
|
13
13
|
total: typing.Optional[int] = None
|
|
14
|
-
content: typing.Optional[typing.List[
|
|
14
|
+
content: typing.Optional[typing.List[AutomationRuleEvaluatorObjectObjectPublic]] = None
|
|
15
|
+
sortable_by: typing.Optional[typing.List[str]] = None
|
|
15
16
|
|
|
16
17
|
if IS_PYDANTIC_V2:
|
|
17
18
|
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
@@ -8,6 +8,12 @@ import typing
|
|
|
8
8
|
import pydantic
|
|
9
9
|
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
10
10
|
from .llm_as_judge_code_public import LlmAsJudgeCodePublic
|
|
11
|
+
from .project_reference_public import ProjectReferencePublic
|
|
12
|
+
from .span_filter_public import SpanFilterPublic
|
|
13
|
+
from .span_llm_as_judge_code_public import SpanLlmAsJudgeCodePublic
|
|
14
|
+
from .span_user_defined_metric_python_code_public import SpanUserDefinedMetricPythonCodePublic
|
|
15
|
+
from .trace_filter_public import TraceFilterPublic
|
|
16
|
+
from .trace_thread_filter_public import TraceThreadFilterPublic
|
|
11
17
|
from .trace_thread_llm_as_judge_code_public import TraceThreadLlmAsJudgeCodePublic
|
|
12
18
|
from .trace_thread_user_defined_metric_python_code_public import TraceThreadUserDefinedMetricPythonCodePublic
|
|
13
19
|
from .user_defined_metric_python_code_public import UserDefinedMetricPythonCodePublic
|
|
@@ -15,8 +21,21 @@ from .user_defined_metric_python_code_public import UserDefinedMetricPythonCodeP
|
|
|
15
21
|
|
|
16
22
|
class Base(UniversalBaseModel):
|
|
17
23
|
id: typing.Optional[str] = None
|
|
18
|
-
project_id: str
|
|
19
|
-
|
|
24
|
+
project_id: typing.Optional[str] = pydantic.Field(default=None)
|
|
25
|
+
"""
|
|
26
|
+
Primary project ID (legacy field for backwards compatibility)
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
project_name: typing.Optional[str] = pydantic.Field(default=None)
|
|
30
|
+
"""
|
|
31
|
+
Primary project name (legacy field for backwards compatibility)
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
projects: typing.Optional[typing.List[ProjectReferencePublic]] = pydantic.Field(default=None)
|
|
35
|
+
"""
|
|
36
|
+
Projects assigned to this rule (unique, sorted alphabetically by name)
|
|
37
|
+
"""
|
|
38
|
+
|
|
20
39
|
name: str
|
|
21
40
|
sampling_rate: typing.Optional[float] = None
|
|
22
41
|
enabled: typing.Optional[bool] = None
|
|
@@ -38,6 +57,7 @@ class Base(UniversalBaseModel):
|
|
|
38
57
|
|
|
39
58
|
class AutomationRuleEvaluatorPublic_LlmAsJudge(Base):
|
|
40
59
|
type: typing.Literal["llm_as_judge"] = "llm_as_judge"
|
|
60
|
+
filters: typing.Optional[typing.List[TraceFilterPublic]] = None
|
|
41
61
|
code: typing.Optional[LlmAsJudgeCodePublic] = None
|
|
42
62
|
|
|
43
63
|
if IS_PYDANTIC_V2:
|
|
@@ -52,6 +72,7 @@ class AutomationRuleEvaluatorPublic_LlmAsJudge(Base):
|
|
|
52
72
|
|
|
53
73
|
class AutomationRuleEvaluatorPublic_UserDefinedMetricPython(Base):
|
|
54
74
|
type: typing.Literal["user_defined_metric_python"] = "user_defined_metric_python"
|
|
75
|
+
filters: typing.Optional[typing.List[TraceFilterPublic]] = None
|
|
55
76
|
code: typing.Optional[UserDefinedMetricPythonCodePublic] = None
|
|
56
77
|
|
|
57
78
|
if IS_PYDANTIC_V2:
|
|
@@ -66,6 +87,7 @@ class AutomationRuleEvaluatorPublic_UserDefinedMetricPython(Base):
|
|
|
66
87
|
|
|
67
88
|
class AutomationRuleEvaluatorPublic_TraceThreadLlmAsJudge(Base):
|
|
68
89
|
type: typing.Literal["trace_thread_llm_as_judge"] = "trace_thread_llm_as_judge"
|
|
90
|
+
filters: typing.Optional[typing.List[TraceThreadFilterPublic]] = None
|
|
69
91
|
code: typing.Optional[TraceThreadLlmAsJudgeCodePublic] = None
|
|
70
92
|
|
|
71
93
|
if IS_PYDANTIC_V2:
|
|
@@ -80,6 +102,7 @@ class AutomationRuleEvaluatorPublic_TraceThreadLlmAsJudge(Base):
|
|
|
80
102
|
|
|
81
103
|
class AutomationRuleEvaluatorPublic_TraceThreadUserDefinedMetricPython(Base):
|
|
82
104
|
type: typing.Literal["trace_thread_user_defined_metric_python"] = "trace_thread_user_defined_metric_python"
|
|
105
|
+
filters: typing.Optional[typing.List[TraceThreadFilterPublic]] = None
|
|
83
106
|
code: typing.Optional[TraceThreadUserDefinedMetricPythonCodePublic] = None
|
|
84
107
|
|
|
85
108
|
if IS_PYDANTIC_V2:
|
|
@@ -92,9 +115,41 @@ class AutomationRuleEvaluatorPublic_TraceThreadUserDefinedMetricPython(Base):
|
|
|
92
115
|
extra = pydantic.Extra.allow
|
|
93
116
|
|
|
94
117
|
|
|
118
|
+
class AutomationRuleEvaluatorPublic_SpanLlmAsJudge(Base):
|
|
119
|
+
type: typing.Literal["span_llm_as_judge"] = "span_llm_as_judge"
|
|
120
|
+
filters: typing.Optional[typing.List[SpanFilterPublic]] = None
|
|
121
|
+
code: typing.Optional[SpanLlmAsJudgeCodePublic] = None
|
|
122
|
+
|
|
123
|
+
if IS_PYDANTIC_V2:
|
|
124
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
125
|
+
else:
|
|
126
|
+
|
|
127
|
+
class Config:
|
|
128
|
+
frozen = True
|
|
129
|
+
smart_union = True
|
|
130
|
+
extra = pydantic.Extra.allow
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
class AutomationRuleEvaluatorPublic_SpanUserDefinedMetricPython(Base):
|
|
134
|
+
type: typing.Literal["span_user_defined_metric_python"] = "span_user_defined_metric_python"
|
|
135
|
+
filters: typing.Optional[typing.List[SpanFilterPublic]] = None
|
|
136
|
+
code: typing.Optional[SpanUserDefinedMetricPythonCodePublic] = None
|
|
137
|
+
|
|
138
|
+
if IS_PYDANTIC_V2:
|
|
139
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
140
|
+
else:
|
|
141
|
+
|
|
142
|
+
class Config:
|
|
143
|
+
frozen = True
|
|
144
|
+
smart_union = True
|
|
145
|
+
extra = pydantic.Extra.allow
|
|
146
|
+
|
|
147
|
+
|
|
95
148
|
AutomationRuleEvaluatorPublic = typing.Union[
|
|
96
149
|
AutomationRuleEvaluatorPublic_LlmAsJudge,
|
|
97
150
|
AutomationRuleEvaluatorPublic_UserDefinedMetricPython,
|
|
98
151
|
AutomationRuleEvaluatorPublic_TraceThreadLlmAsJudge,
|
|
99
152
|
AutomationRuleEvaluatorPublic_TraceThreadUserDefinedMetricPython,
|
|
153
|
+
AutomationRuleEvaluatorPublic_SpanLlmAsJudge,
|
|
154
|
+
AutomationRuleEvaluatorPublic_SpanUserDefinedMetricPython,
|
|
100
155
|
]
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
import pydantic
|
|
6
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
|
+
from .span_filter import SpanFilter
|
|
8
|
+
from .span_llm_as_judge_code import SpanLlmAsJudgeCode
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class AutomationRuleEvaluatorSpanLlmAsJudge(UniversalBaseModel):
|
|
12
|
+
filters: typing.Optional[typing.List[SpanFilter]] = None
|
|
13
|
+
code: typing.Optional[SpanLlmAsJudgeCode] = None
|
|
14
|
+
|
|
15
|
+
if IS_PYDANTIC_V2:
|
|
16
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
17
|
+
else:
|
|
18
|
+
|
|
19
|
+
class Config:
|
|
20
|
+
frozen = True
|
|
21
|
+
smart_union = True
|
|
22
|
+
extra = pydantic.Extra.allow
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
import pydantic
|
|
6
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
|
+
from .span_filter_public import SpanFilterPublic
|
|
8
|
+
from .span_llm_as_judge_code_public import SpanLlmAsJudgeCodePublic
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class AutomationRuleEvaluatorSpanLlmAsJudgePublic(UniversalBaseModel):
|
|
12
|
+
filters: typing.Optional[typing.List[SpanFilterPublic]] = None
|
|
13
|
+
code: typing.Optional[SpanLlmAsJudgeCodePublic] = None
|
|
14
|
+
|
|
15
|
+
if IS_PYDANTIC_V2:
|
|
16
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
17
|
+
else:
|
|
18
|
+
|
|
19
|
+
class Config:
|
|
20
|
+
frozen = True
|
|
21
|
+
smart_union = True
|
|
22
|
+
extra = pydantic.Extra.allow
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
import pydantic
|
|
6
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
|
+
from .span_filter_write import SpanFilterWrite
|
|
8
|
+
from .span_llm_as_judge_code_write import SpanLlmAsJudgeCodeWrite
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class AutomationRuleEvaluatorSpanLlmAsJudgeWrite(UniversalBaseModel):
|
|
12
|
+
filters: typing.Optional[typing.List[SpanFilterWrite]] = None
|
|
13
|
+
code: typing.Optional[SpanLlmAsJudgeCodeWrite] = None
|
|
14
|
+
|
|
15
|
+
if IS_PYDANTIC_V2:
|
|
16
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
17
|
+
else:
|
|
18
|
+
|
|
19
|
+
class Config:
|
|
20
|
+
frozen = True
|
|
21
|
+
smart_union = True
|
|
22
|
+
extra = pydantic.Extra.allow
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
import pydantic
|
|
6
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
|
+
from .span_filter import SpanFilter
|
|
8
|
+
from .span_user_defined_metric_python_code import SpanUserDefinedMetricPythonCode
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class AutomationRuleEvaluatorSpanUserDefinedMetricPython(UniversalBaseModel):
|
|
12
|
+
filters: typing.Optional[typing.List[SpanFilter]] = None
|
|
13
|
+
code: typing.Optional[SpanUserDefinedMetricPythonCode] = None
|
|
14
|
+
|
|
15
|
+
if IS_PYDANTIC_V2:
|
|
16
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
17
|
+
else:
|
|
18
|
+
|
|
19
|
+
class Config:
|
|
20
|
+
frozen = True
|
|
21
|
+
smart_union = True
|
|
22
|
+
extra = pydantic.Extra.allow
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
import pydantic
|
|
6
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
|
+
from .span_filter_public import SpanFilterPublic
|
|
8
|
+
from .span_user_defined_metric_python_code_public import SpanUserDefinedMetricPythonCodePublic
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class AutomationRuleEvaluatorSpanUserDefinedMetricPythonPublic(UniversalBaseModel):
|
|
12
|
+
filters: typing.Optional[typing.List[SpanFilterPublic]] = None
|
|
13
|
+
code: typing.Optional[SpanUserDefinedMetricPythonCodePublic] = None
|
|
14
|
+
|
|
15
|
+
if IS_PYDANTIC_V2:
|
|
16
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
17
|
+
else:
|
|
18
|
+
|
|
19
|
+
class Config:
|
|
20
|
+
frozen = True
|
|
21
|
+
smart_union = True
|
|
22
|
+
extra = pydantic.Extra.allow
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
import pydantic
|
|
6
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
|
+
from .span_filter_write import SpanFilterWrite
|
|
8
|
+
from .span_user_defined_metric_python_code_write import SpanUserDefinedMetricPythonCodeWrite
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class AutomationRuleEvaluatorSpanUserDefinedMetricPythonWrite(UniversalBaseModel):
|
|
12
|
+
filters: typing.Optional[typing.List[SpanFilterWrite]] = None
|
|
13
|
+
code: typing.Optional[SpanUserDefinedMetricPythonCodeWrite] = None
|
|
14
|
+
|
|
15
|
+
if IS_PYDANTIC_V2:
|
|
16
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
17
|
+
else:
|
|
18
|
+
|
|
19
|
+
class Config:
|
|
20
|
+
frozen = True
|
|
21
|
+
smart_union = True
|
|
22
|
+
extra = pydantic.Extra.allow
|
|
@@ -4,10 +4,12 @@ import typing
|
|
|
4
4
|
|
|
5
5
|
import pydantic
|
|
6
6
|
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
|
+
from .trace_thread_filter import TraceThreadFilter
|
|
7
8
|
from .trace_thread_llm_as_judge_code import TraceThreadLlmAsJudgeCode
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
class AutomationRuleEvaluatorTraceThreadLlmAsJudge(UniversalBaseModel):
|
|
12
|
+
filters: typing.Optional[typing.List[TraceThreadFilter]] = None
|
|
11
13
|
code: typing.Optional[TraceThreadLlmAsJudgeCode] = None
|
|
12
14
|
|
|
13
15
|
if IS_PYDANTIC_V2:
|
|
@@ -4,10 +4,12 @@ import typing
|
|
|
4
4
|
|
|
5
5
|
import pydantic
|
|
6
6
|
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
|
+
from .trace_thread_filter_public import TraceThreadFilterPublic
|
|
7
8
|
from .trace_thread_llm_as_judge_code_public import TraceThreadLlmAsJudgeCodePublic
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
class AutomationRuleEvaluatorTraceThreadLlmAsJudgePublic(UniversalBaseModel):
|
|
12
|
+
filters: typing.Optional[typing.List[TraceThreadFilterPublic]] = None
|
|
11
13
|
code: typing.Optional[TraceThreadLlmAsJudgeCodePublic] = None
|
|
12
14
|
|
|
13
15
|
if IS_PYDANTIC_V2:
|