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
|
@@ -7,6 +7,7 @@ from json.decoder import JSONDecodeError
|
|
|
7
7
|
|
|
8
8
|
from ..core.api_error import ApiError
|
|
9
9
|
from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
|
|
10
|
+
from ..core.datetime_utils import serialize_datetime
|
|
10
11
|
from ..core.http_response import AsyncHttpResponse, HttpResponse
|
|
11
12
|
from ..core.jsonable_encoder import jsonable_encoder
|
|
12
13
|
from ..core.pydantic_utilities import parse_obj_as
|
|
@@ -23,12 +24,12 @@ from ..types.feedback_score_batch_item import FeedbackScoreBatchItem
|
|
|
23
24
|
from ..types.feedback_score_source import FeedbackScoreSource
|
|
24
25
|
from ..types.json_list_string import JsonListString
|
|
25
26
|
from ..types.json_list_string_write import JsonListStringWrite
|
|
26
|
-
from ..types.json_node import JsonNode
|
|
27
|
-
from ..types.json_node_write import JsonNodeWrite
|
|
28
27
|
from ..types.project_stats_public import ProjectStatsPublic
|
|
29
28
|
from ..types.span_filter_public import SpanFilterPublic
|
|
30
29
|
from ..types.span_page_public import SpanPagePublic
|
|
31
30
|
from ..types.span_public import SpanPublic
|
|
31
|
+
from ..types.span_update import SpanUpdate
|
|
32
|
+
from ..types.span_update_type import SpanUpdateType
|
|
32
33
|
from ..types.span_write import SpanWrite
|
|
33
34
|
from ..types.span_write_type import SpanWriteType
|
|
34
35
|
from ..types.value_entry import ValueEntry
|
|
@@ -36,7 +37,6 @@ from .types.find_feedback_score_names_1_request_type import FindFeedbackScoreNam
|
|
|
36
37
|
from .types.get_span_stats_request_type import GetSpanStatsRequestType
|
|
37
38
|
from .types.get_spans_by_project_request_type import GetSpansByProjectRequestType
|
|
38
39
|
from .types.span_search_stream_request_public_type import SpanSearchStreamRequestPublicType
|
|
39
|
-
from .types.span_update_type import SpanUpdateType
|
|
40
40
|
|
|
41
41
|
# this is used as the default value for optional parameters
|
|
42
42
|
OMIT = typing.cast(typing.Any, ...)
|
|
@@ -190,6 +190,108 @@ class RawSpansClient:
|
|
|
190
190
|
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
191
191
|
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
192
192
|
|
|
193
|
+
def create_spans(
|
|
194
|
+
self, *, spans: typing.Sequence[SpanWrite], request_options: typing.Optional[RequestOptions] = None
|
|
195
|
+
) -> HttpResponse[None]:
|
|
196
|
+
"""
|
|
197
|
+
Create spans
|
|
198
|
+
|
|
199
|
+
Parameters
|
|
200
|
+
----------
|
|
201
|
+
spans : typing.Sequence[SpanWrite]
|
|
202
|
+
|
|
203
|
+
request_options : typing.Optional[RequestOptions]
|
|
204
|
+
Request-specific configuration.
|
|
205
|
+
|
|
206
|
+
Returns
|
|
207
|
+
-------
|
|
208
|
+
HttpResponse[None]
|
|
209
|
+
"""
|
|
210
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
211
|
+
"v1/private/spans/batch",
|
|
212
|
+
method="POST",
|
|
213
|
+
json={
|
|
214
|
+
"spans": convert_and_respect_annotation_metadata(
|
|
215
|
+
object_=spans, annotation=typing.Sequence[SpanWrite], direction="write"
|
|
216
|
+
),
|
|
217
|
+
},
|
|
218
|
+
headers={
|
|
219
|
+
"content-type": "application/json",
|
|
220
|
+
},
|
|
221
|
+
request_options=request_options,
|
|
222
|
+
omit=OMIT,
|
|
223
|
+
)
|
|
224
|
+
try:
|
|
225
|
+
if 200 <= _response.status_code < 300:
|
|
226
|
+
return HttpResponse(response=_response, data=None)
|
|
227
|
+
_response_json = _response.json()
|
|
228
|
+
except JSONDecodeError:
|
|
229
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
230
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
231
|
+
|
|
232
|
+
def batch_update_spans(
|
|
233
|
+
self,
|
|
234
|
+
*,
|
|
235
|
+
ids: typing.Sequence[str],
|
|
236
|
+
update: SpanUpdate,
|
|
237
|
+
merge_tags: typing.Optional[bool] = OMIT,
|
|
238
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
239
|
+
) -> HttpResponse[None]:
|
|
240
|
+
"""
|
|
241
|
+
Update multiple spans
|
|
242
|
+
|
|
243
|
+
Parameters
|
|
244
|
+
----------
|
|
245
|
+
ids : typing.Sequence[str]
|
|
246
|
+
List of span IDs to update (max 1000)
|
|
247
|
+
|
|
248
|
+
update : SpanUpdate
|
|
249
|
+
|
|
250
|
+
merge_tags : typing.Optional[bool]
|
|
251
|
+
If true, merge tags with existing tags instead of replacing them. Default: false
|
|
252
|
+
|
|
253
|
+
request_options : typing.Optional[RequestOptions]
|
|
254
|
+
Request-specific configuration.
|
|
255
|
+
|
|
256
|
+
Returns
|
|
257
|
+
-------
|
|
258
|
+
HttpResponse[None]
|
|
259
|
+
"""
|
|
260
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
261
|
+
"v1/private/spans/batch",
|
|
262
|
+
method="PATCH",
|
|
263
|
+
json={
|
|
264
|
+
"ids": ids,
|
|
265
|
+
"update": convert_and_respect_annotation_metadata(
|
|
266
|
+
object_=update, annotation=SpanUpdate, direction="write"
|
|
267
|
+
),
|
|
268
|
+
"merge_tags": merge_tags,
|
|
269
|
+
},
|
|
270
|
+
headers={
|
|
271
|
+
"content-type": "application/json",
|
|
272
|
+
},
|
|
273
|
+
request_options=request_options,
|
|
274
|
+
omit=OMIT,
|
|
275
|
+
)
|
|
276
|
+
try:
|
|
277
|
+
if 200 <= _response.status_code < 300:
|
|
278
|
+
return HttpResponse(response=_response, data=None)
|
|
279
|
+
if _response.status_code == 400:
|
|
280
|
+
raise BadRequestError(
|
|
281
|
+
headers=dict(_response.headers),
|
|
282
|
+
body=typing.cast(
|
|
283
|
+
typing.Optional[typing.Any],
|
|
284
|
+
parse_obj_as(
|
|
285
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
286
|
+
object_=_response.json(),
|
|
287
|
+
),
|
|
288
|
+
),
|
|
289
|
+
)
|
|
290
|
+
_response_json = _response.json()
|
|
291
|
+
except JSONDecodeError:
|
|
292
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
293
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
294
|
+
|
|
193
295
|
def get_spans_by_project(
|
|
194
296
|
self,
|
|
195
297
|
*,
|
|
@@ -201,8 +303,11 @@ class RawSpansClient:
|
|
|
201
303
|
type: typing.Optional[GetSpansByProjectRequestType] = None,
|
|
202
304
|
filters: typing.Optional[str] = None,
|
|
203
305
|
truncate: typing.Optional[bool] = None,
|
|
306
|
+
strip_attachments: typing.Optional[bool] = None,
|
|
204
307
|
sorting: typing.Optional[str] = None,
|
|
205
308
|
exclude: typing.Optional[str] = None,
|
|
309
|
+
from_time: typing.Optional[dt.datetime] = None,
|
|
310
|
+
to_time: typing.Optional[dt.datetime] = None,
|
|
206
311
|
request_options: typing.Optional[RequestOptions] = None,
|
|
207
312
|
) -> HttpResponse[SpanPagePublic]:
|
|
208
313
|
"""
|
|
@@ -226,10 +331,16 @@ class RawSpansClient:
|
|
|
226
331
|
|
|
227
332
|
truncate : typing.Optional[bool]
|
|
228
333
|
|
|
334
|
+
strip_attachments : typing.Optional[bool]
|
|
335
|
+
|
|
229
336
|
sorting : typing.Optional[str]
|
|
230
337
|
|
|
231
338
|
exclude : typing.Optional[str]
|
|
232
339
|
|
|
340
|
+
from_time : typing.Optional[dt.datetime]
|
|
341
|
+
|
|
342
|
+
to_time : typing.Optional[dt.datetime]
|
|
343
|
+
|
|
233
344
|
request_options : typing.Optional[RequestOptions]
|
|
234
345
|
Request-specific configuration.
|
|
235
346
|
|
|
@@ -250,8 +361,11 @@ class RawSpansClient:
|
|
|
250
361
|
"type": type,
|
|
251
362
|
"filters": filters,
|
|
252
363
|
"truncate": truncate,
|
|
364
|
+
"strip_attachments": strip_attachments,
|
|
253
365
|
"sorting": sorting,
|
|
254
366
|
"exclude": exclude,
|
|
367
|
+
"from_time": serialize_datetime(from_time) if from_time is not None else None,
|
|
368
|
+
"to_time": serialize_datetime(to_time) if to_time is not None else None,
|
|
255
369
|
},
|
|
256
370
|
request_options=request_options,
|
|
257
371
|
)
|
|
@@ -283,7 +397,7 @@ class RawSpansClient:
|
|
|
283
397
|
end_time: typing.Optional[dt.datetime] = OMIT,
|
|
284
398
|
input: typing.Optional[JsonListStringWrite] = OMIT,
|
|
285
399
|
output: typing.Optional[JsonListStringWrite] = OMIT,
|
|
286
|
-
metadata: typing.Optional[
|
|
400
|
+
metadata: typing.Optional[JsonListStringWrite] = OMIT,
|
|
287
401
|
model: typing.Optional[str] = OMIT,
|
|
288
402
|
provider: typing.Optional[str] = OMIT,
|
|
289
403
|
tags: typing.Optional[typing.Sequence[str]] = OMIT,
|
|
@@ -320,7 +434,7 @@ class RawSpansClient:
|
|
|
320
434
|
|
|
321
435
|
output : typing.Optional[JsonListStringWrite]
|
|
322
436
|
|
|
323
|
-
metadata : typing.Optional[
|
|
437
|
+
metadata : typing.Optional[JsonListStringWrite]
|
|
324
438
|
|
|
325
439
|
model : typing.Optional[str]
|
|
326
440
|
|
|
@@ -363,7 +477,9 @@ class RawSpansClient:
|
|
|
363
477
|
"output": convert_and_respect_annotation_metadata(
|
|
364
478
|
object_=output, annotation=JsonListStringWrite, direction="write"
|
|
365
479
|
),
|
|
366
|
-
"metadata":
|
|
480
|
+
"metadata": convert_and_respect_annotation_metadata(
|
|
481
|
+
object_=metadata, annotation=JsonListStringWrite, direction="write"
|
|
482
|
+
),
|
|
367
483
|
"model": model,
|
|
368
484
|
"provider": provider,
|
|
369
485
|
"tags": tags,
|
|
@@ -400,47 +516,12 @@ class RawSpansClient:
|
|
|
400
516
|
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
401
517
|
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
402
518
|
|
|
403
|
-
def create_spans(
|
|
404
|
-
self, *, spans: typing.Sequence[SpanWrite], request_options: typing.Optional[RequestOptions] = None
|
|
405
|
-
) -> HttpResponse[None]:
|
|
406
|
-
"""
|
|
407
|
-
Create spans
|
|
408
|
-
|
|
409
|
-
Parameters
|
|
410
|
-
----------
|
|
411
|
-
spans : typing.Sequence[SpanWrite]
|
|
412
|
-
|
|
413
|
-
request_options : typing.Optional[RequestOptions]
|
|
414
|
-
Request-specific configuration.
|
|
415
|
-
|
|
416
|
-
Returns
|
|
417
|
-
-------
|
|
418
|
-
HttpResponse[None]
|
|
419
|
-
"""
|
|
420
|
-
_response = self._client_wrapper.httpx_client.request(
|
|
421
|
-
"v1/private/spans/batch",
|
|
422
|
-
method="POST",
|
|
423
|
-
json={
|
|
424
|
-
"spans": convert_and_respect_annotation_metadata(
|
|
425
|
-
object_=spans, annotation=typing.Sequence[SpanWrite], direction="write"
|
|
426
|
-
),
|
|
427
|
-
},
|
|
428
|
-
headers={
|
|
429
|
-
"content-type": "application/json",
|
|
430
|
-
},
|
|
431
|
-
request_options=request_options,
|
|
432
|
-
omit=OMIT,
|
|
433
|
-
)
|
|
434
|
-
try:
|
|
435
|
-
if 200 <= _response.status_code < 300:
|
|
436
|
-
return HttpResponse(response=_response, data=None)
|
|
437
|
-
_response_json = _response.json()
|
|
438
|
-
except JSONDecodeError:
|
|
439
|
-
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
440
|
-
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
441
|
-
|
|
442
519
|
def get_span_by_id(
|
|
443
|
-
self,
|
|
520
|
+
self,
|
|
521
|
+
id: str,
|
|
522
|
+
*,
|
|
523
|
+
strip_attachments: typing.Optional[bool] = None,
|
|
524
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
444
525
|
) -> HttpResponse[SpanPublic]:
|
|
445
526
|
"""
|
|
446
527
|
Get span by id
|
|
@@ -449,6 +530,8 @@ class RawSpansClient:
|
|
|
449
530
|
----------
|
|
450
531
|
id : str
|
|
451
532
|
|
|
533
|
+
strip_attachments : typing.Optional[bool]
|
|
534
|
+
|
|
452
535
|
request_options : typing.Optional[RequestOptions]
|
|
453
536
|
Request-specific configuration.
|
|
454
537
|
|
|
@@ -460,6 +543,9 @@ class RawSpansClient:
|
|
|
460
543
|
_response = self._client_wrapper.httpx_client.request(
|
|
461
544
|
f"v1/private/spans/{jsonable_encoder(id)}",
|
|
462
545
|
method="GET",
|
|
546
|
+
params={
|
|
547
|
+
"strip_attachments": strip_attachments,
|
|
548
|
+
},
|
|
463
549
|
request_options=request_options,
|
|
464
550
|
)
|
|
465
551
|
try:
|
|
@@ -542,7 +628,7 @@ class RawSpansClient:
|
|
|
542
628
|
end_time: typing.Optional[dt.datetime] = OMIT,
|
|
543
629
|
input: typing.Optional[JsonListString] = OMIT,
|
|
544
630
|
output: typing.Optional[JsonListString] = OMIT,
|
|
545
|
-
metadata: typing.Optional[
|
|
631
|
+
metadata: typing.Optional[JsonListString] = OMIT,
|
|
546
632
|
model: typing.Optional[str] = OMIT,
|
|
547
633
|
provider: typing.Optional[str] = OMIT,
|
|
548
634
|
tags: typing.Optional[typing.Sequence[str]] = OMIT,
|
|
@@ -578,7 +664,7 @@ class RawSpansClient:
|
|
|
578
664
|
|
|
579
665
|
output : typing.Optional[JsonListString]
|
|
580
666
|
|
|
581
|
-
metadata : typing.Optional[
|
|
667
|
+
metadata : typing.Optional[JsonListString]
|
|
582
668
|
|
|
583
669
|
model : typing.Optional[str]
|
|
584
670
|
|
|
@@ -616,7 +702,9 @@ class RawSpansClient:
|
|
|
616
702
|
"output": convert_and_respect_annotation_metadata(
|
|
617
703
|
object_=output, annotation=JsonListString, direction="write"
|
|
618
704
|
),
|
|
619
|
-
"metadata":
|
|
705
|
+
"metadata": convert_and_respect_annotation_metadata(
|
|
706
|
+
object_=metadata, annotation=JsonListString, direction="write"
|
|
707
|
+
),
|
|
620
708
|
"model": model,
|
|
621
709
|
"provider": provider,
|
|
622
710
|
"tags": tags,
|
|
@@ -842,6 +930,8 @@ class RawSpansClient:
|
|
|
842
930
|
trace_id: typing.Optional[str] = None,
|
|
843
931
|
type: typing.Optional[GetSpanStatsRequestType] = None,
|
|
844
932
|
filters: typing.Optional[str] = None,
|
|
933
|
+
from_time: typing.Optional[dt.datetime] = None,
|
|
934
|
+
to_time: typing.Optional[dt.datetime] = None,
|
|
845
935
|
request_options: typing.Optional[RequestOptions] = None,
|
|
846
936
|
) -> HttpResponse[ProjectStatsPublic]:
|
|
847
937
|
"""
|
|
@@ -859,6 +949,10 @@ class RawSpansClient:
|
|
|
859
949
|
|
|
860
950
|
filters : typing.Optional[str]
|
|
861
951
|
|
|
952
|
+
from_time : typing.Optional[dt.datetime]
|
|
953
|
+
|
|
954
|
+
to_time : typing.Optional[dt.datetime]
|
|
955
|
+
|
|
862
956
|
request_options : typing.Optional[RequestOptions]
|
|
863
957
|
Request-specific configuration.
|
|
864
958
|
|
|
@@ -876,6 +970,8 @@ class RawSpansClient:
|
|
|
876
970
|
"trace_id": trace_id,
|
|
877
971
|
"type": type,
|
|
878
972
|
"filters": filters,
|
|
973
|
+
"from_time": serialize_datetime(from_time) if from_time is not None else None,
|
|
974
|
+
"to_time": serialize_datetime(to_time) if to_time is not None else None,
|
|
879
975
|
},
|
|
880
976
|
request_options=request_options,
|
|
881
977
|
)
|
|
@@ -948,6 +1044,8 @@ class RawSpansClient:
|
|
|
948
1044
|
limit: typing.Optional[int] = OMIT,
|
|
949
1045
|
last_retrieved_id: typing.Optional[str] = OMIT,
|
|
950
1046
|
truncate: typing.Optional[bool] = OMIT,
|
|
1047
|
+
from_time: typing.Optional[dt.datetime] = OMIT,
|
|
1048
|
+
to_time: typing.Optional[dt.datetime] = OMIT,
|
|
951
1049
|
request_options: typing.Optional[RequestOptions] = None,
|
|
952
1050
|
) -> typing.Iterator[HttpResponse[typing.Iterator[bytes]]]:
|
|
953
1051
|
"""
|
|
@@ -973,6 +1071,12 @@ class RawSpansClient:
|
|
|
973
1071
|
truncate : typing.Optional[bool]
|
|
974
1072
|
Truncate image included in either input, output or metadata
|
|
975
1073
|
|
|
1074
|
+
from_time : typing.Optional[dt.datetime]
|
|
1075
|
+
Filter spans created from this time (ISO-8601 format).
|
|
1076
|
+
|
|
1077
|
+
to_time : typing.Optional[dt.datetime]
|
|
1078
|
+
Filter spans created up to this time (ISO-8601 format). If not provided, defaults to current time. Must be after 'from_time'.
|
|
1079
|
+
|
|
976
1080
|
request_options : typing.Optional[RequestOptions]
|
|
977
1081
|
Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
|
|
978
1082
|
|
|
@@ -995,6 +1099,8 @@ class RawSpansClient:
|
|
|
995
1099
|
"limit": limit,
|
|
996
1100
|
"last_retrieved_id": last_retrieved_id,
|
|
997
1101
|
"truncate": truncate,
|
|
1102
|
+
"from_time": from_time,
|
|
1103
|
+
"to_time": to_time,
|
|
998
1104
|
},
|
|
999
1105
|
headers={
|
|
1000
1106
|
"content-type": "application/json",
|
|
@@ -1254,6 +1360,108 @@ class AsyncRawSpansClient:
|
|
|
1254
1360
|
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
1255
1361
|
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
1256
1362
|
|
|
1363
|
+
async def create_spans(
|
|
1364
|
+
self, *, spans: typing.Sequence[SpanWrite], request_options: typing.Optional[RequestOptions] = None
|
|
1365
|
+
) -> AsyncHttpResponse[None]:
|
|
1366
|
+
"""
|
|
1367
|
+
Create spans
|
|
1368
|
+
|
|
1369
|
+
Parameters
|
|
1370
|
+
----------
|
|
1371
|
+
spans : typing.Sequence[SpanWrite]
|
|
1372
|
+
|
|
1373
|
+
request_options : typing.Optional[RequestOptions]
|
|
1374
|
+
Request-specific configuration.
|
|
1375
|
+
|
|
1376
|
+
Returns
|
|
1377
|
+
-------
|
|
1378
|
+
AsyncHttpResponse[None]
|
|
1379
|
+
"""
|
|
1380
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
1381
|
+
"v1/private/spans/batch",
|
|
1382
|
+
method="POST",
|
|
1383
|
+
json={
|
|
1384
|
+
"spans": convert_and_respect_annotation_metadata(
|
|
1385
|
+
object_=spans, annotation=typing.Sequence[SpanWrite], direction="write"
|
|
1386
|
+
),
|
|
1387
|
+
},
|
|
1388
|
+
headers={
|
|
1389
|
+
"content-type": "application/json",
|
|
1390
|
+
},
|
|
1391
|
+
request_options=request_options,
|
|
1392
|
+
omit=OMIT,
|
|
1393
|
+
)
|
|
1394
|
+
try:
|
|
1395
|
+
if 200 <= _response.status_code < 300:
|
|
1396
|
+
return AsyncHttpResponse(response=_response, data=None)
|
|
1397
|
+
_response_json = _response.json()
|
|
1398
|
+
except JSONDecodeError:
|
|
1399
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
1400
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
1401
|
+
|
|
1402
|
+
async def batch_update_spans(
|
|
1403
|
+
self,
|
|
1404
|
+
*,
|
|
1405
|
+
ids: typing.Sequence[str],
|
|
1406
|
+
update: SpanUpdate,
|
|
1407
|
+
merge_tags: typing.Optional[bool] = OMIT,
|
|
1408
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
1409
|
+
) -> AsyncHttpResponse[None]:
|
|
1410
|
+
"""
|
|
1411
|
+
Update multiple spans
|
|
1412
|
+
|
|
1413
|
+
Parameters
|
|
1414
|
+
----------
|
|
1415
|
+
ids : typing.Sequence[str]
|
|
1416
|
+
List of span IDs to update (max 1000)
|
|
1417
|
+
|
|
1418
|
+
update : SpanUpdate
|
|
1419
|
+
|
|
1420
|
+
merge_tags : typing.Optional[bool]
|
|
1421
|
+
If true, merge tags with existing tags instead of replacing them. Default: false
|
|
1422
|
+
|
|
1423
|
+
request_options : typing.Optional[RequestOptions]
|
|
1424
|
+
Request-specific configuration.
|
|
1425
|
+
|
|
1426
|
+
Returns
|
|
1427
|
+
-------
|
|
1428
|
+
AsyncHttpResponse[None]
|
|
1429
|
+
"""
|
|
1430
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
1431
|
+
"v1/private/spans/batch",
|
|
1432
|
+
method="PATCH",
|
|
1433
|
+
json={
|
|
1434
|
+
"ids": ids,
|
|
1435
|
+
"update": convert_and_respect_annotation_metadata(
|
|
1436
|
+
object_=update, annotation=SpanUpdate, direction="write"
|
|
1437
|
+
),
|
|
1438
|
+
"merge_tags": merge_tags,
|
|
1439
|
+
},
|
|
1440
|
+
headers={
|
|
1441
|
+
"content-type": "application/json",
|
|
1442
|
+
},
|
|
1443
|
+
request_options=request_options,
|
|
1444
|
+
omit=OMIT,
|
|
1445
|
+
)
|
|
1446
|
+
try:
|
|
1447
|
+
if 200 <= _response.status_code < 300:
|
|
1448
|
+
return AsyncHttpResponse(response=_response, data=None)
|
|
1449
|
+
if _response.status_code == 400:
|
|
1450
|
+
raise BadRequestError(
|
|
1451
|
+
headers=dict(_response.headers),
|
|
1452
|
+
body=typing.cast(
|
|
1453
|
+
typing.Optional[typing.Any],
|
|
1454
|
+
parse_obj_as(
|
|
1455
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
|
1456
|
+
object_=_response.json(),
|
|
1457
|
+
),
|
|
1458
|
+
),
|
|
1459
|
+
)
|
|
1460
|
+
_response_json = _response.json()
|
|
1461
|
+
except JSONDecodeError:
|
|
1462
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
1463
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
1464
|
+
|
|
1257
1465
|
async def get_spans_by_project(
|
|
1258
1466
|
self,
|
|
1259
1467
|
*,
|
|
@@ -1265,8 +1473,11 @@ class AsyncRawSpansClient:
|
|
|
1265
1473
|
type: typing.Optional[GetSpansByProjectRequestType] = None,
|
|
1266
1474
|
filters: typing.Optional[str] = None,
|
|
1267
1475
|
truncate: typing.Optional[bool] = None,
|
|
1476
|
+
strip_attachments: typing.Optional[bool] = None,
|
|
1268
1477
|
sorting: typing.Optional[str] = None,
|
|
1269
1478
|
exclude: typing.Optional[str] = None,
|
|
1479
|
+
from_time: typing.Optional[dt.datetime] = None,
|
|
1480
|
+
to_time: typing.Optional[dt.datetime] = None,
|
|
1270
1481
|
request_options: typing.Optional[RequestOptions] = None,
|
|
1271
1482
|
) -> AsyncHttpResponse[SpanPagePublic]:
|
|
1272
1483
|
"""
|
|
@@ -1290,10 +1501,16 @@ class AsyncRawSpansClient:
|
|
|
1290
1501
|
|
|
1291
1502
|
truncate : typing.Optional[bool]
|
|
1292
1503
|
|
|
1504
|
+
strip_attachments : typing.Optional[bool]
|
|
1505
|
+
|
|
1293
1506
|
sorting : typing.Optional[str]
|
|
1294
1507
|
|
|
1295
1508
|
exclude : typing.Optional[str]
|
|
1296
1509
|
|
|
1510
|
+
from_time : typing.Optional[dt.datetime]
|
|
1511
|
+
|
|
1512
|
+
to_time : typing.Optional[dt.datetime]
|
|
1513
|
+
|
|
1297
1514
|
request_options : typing.Optional[RequestOptions]
|
|
1298
1515
|
Request-specific configuration.
|
|
1299
1516
|
|
|
@@ -1314,8 +1531,11 @@ class AsyncRawSpansClient:
|
|
|
1314
1531
|
"type": type,
|
|
1315
1532
|
"filters": filters,
|
|
1316
1533
|
"truncate": truncate,
|
|
1534
|
+
"strip_attachments": strip_attachments,
|
|
1317
1535
|
"sorting": sorting,
|
|
1318
1536
|
"exclude": exclude,
|
|
1537
|
+
"from_time": serialize_datetime(from_time) if from_time is not None else None,
|
|
1538
|
+
"to_time": serialize_datetime(to_time) if to_time is not None else None,
|
|
1319
1539
|
},
|
|
1320
1540
|
request_options=request_options,
|
|
1321
1541
|
)
|
|
@@ -1347,7 +1567,7 @@ class AsyncRawSpansClient:
|
|
|
1347
1567
|
end_time: typing.Optional[dt.datetime] = OMIT,
|
|
1348
1568
|
input: typing.Optional[JsonListStringWrite] = OMIT,
|
|
1349
1569
|
output: typing.Optional[JsonListStringWrite] = OMIT,
|
|
1350
|
-
metadata: typing.Optional[
|
|
1570
|
+
metadata: typing.Optional[JsonListStringWrite] = OMIT,
|
|
1351
1571
|
model: typing.Optional[str] = OMIT,
|
|
1352
1572
|
provider: typing.Optional[str] = OMIT,
|
|
1353
1573
|
tags: typing.Optional[typing.Sequence[str]] = OMIT,
|
|
@@ -1384,7 +1604,7 @@ class AsyncRawSpansClient:
|
|
|
1384
1604
|
|
|
1385
1605
|
output : typing.Optional[JsonListStringWrite]
|
|
1386
1606
|
|
|
1387
|
-
metadata : typing.Optional[
|
|
1607
|
+
metadata : typing.Optional[JsonListStringWrite]
|
|
1388
1608
|
|
|
1389
1609
|
model : typing.Optional[str]
|
|
1390
1610
|
|
|
@@ -1427,7 +1647,9 @@ class AsyncRawSpansClient:
|
|
|
1427
1647
|
"output": convert_and_respect_annotation_metadata(
|
|
1428
1648
|
object_=output, annotation=JsonListStringWrite, direction="write"
|
|
1429
1649
|
),
|
|
1430
|
-
"metadata":
|
|
1650
|
+
"metadata": convert_and_respect_annotation_metadata(
|
|
1651
|
+
object_=metadata, annotation=JsonListStringWrite, direction="write"
|
|
1652
|
+
),
|
|
1431
1653
|
"model": model,
|
|
1432
1654
|
"provider": provider,
|
|
1433
1655
|
"tags": tags,
|
|
@@ -1464,47 +1686,12 @@ class AsyncRawSpansClient:
|
|
|
1464
1686
|
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
1465
1687
|
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
1466
1688
|
|
|
1467
|
-
async def create_spans(
|
|
1468
|
-
self, *, spans: typing.Sequence[SpanWrite], request_options: typing.Optional[RequestOptions] = None
|
|
1469
|
-
) -> AsyncHttpResponse[None]:
|
|
1470
|
-
"""
|
|
1471
|
-
Create spans
|
|
1472
|
-
|
|
1473
|
-
Parameters
|
|
1474
|
-
----------
|
|
1475
|
-
spans : typing.Sequence[SpanWrite]
|
|
1476
|
-
|
|
1477
|
-
request_options : typing.Optional[RequestOptions]
|
|
1478
|
-
Request-specific configuration.
|
|
1479
|
-
|
|
1480
|
-
Returns
|
|
1481
|
-
-------
|
|
1482
|
-
AsyncHttpResponse[None]
|
|
1483
|
-
"""
|
|
1484
|
-
_response = await self._client_wrapper.httpx_client.request(
|
|
1485
|
-
"v1/private/spans/batch",
|
|
1486
|
-
method="POST",
|
|
1487
|
-
json={
|
|
1488
|
-
"spans": convert_and_respect_annotation_metadata(
|
|
1489
|
-
object_=spans, annotation=typing.Sequence[SpanWrite], direction="write"
|
|
1490
|
-
),
|
|
1491
|
-
},
|
|
1492
|
-
headers={
|
|
1493
|
-
"content-type": "application/json",
|
|
1494
|
-
},
|
|
1495
|
-
request_options=request_options,
|
|
1496
|
-
omit=OMIT,
|
|
1497
|
-
)
|
|
1498
|
-
try:
|
|
1499
|
-
if 200 <= _response.status_code < 300:
|
|
1500
|
-
return AsyncHttpResponse(response=_response, data=None)
|
|
1501
|
-
_response_json = _response.json()
|
|
1502
|
-
except JSONDecodeError:
|
|
1503
|
-
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
1504
|
-
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
1505
|
-
|
|
1506
1689
|
async def get_span_by_id(
|
|
1507
|
-
self,
|
|
1690
|
+
self,
|
|
1691
|
+
id: str,
|
|
1692
|
+
*,
|
|
1693
|
+
strip_attachments: typing.Optional[bool] = None,
|
|
1694
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
1508
1695
|
) -> AsyncHttpResponse[SpanPublic]:
|
|
1509
1696
|
"""
|
|
1510
1697
|
Get span by id
|
|
@@ -1513,6 +1700,8 @@ class AsyncRawSpansClient:
|
|
|
1513
1700
|
----------
|
|
1514
1701
|
id : str
|
|
1515
1702
|
|
|
1703
|
+
strip_attachments : typing.Optional[bool]
|
|
1704
|
+
|
|
1516
1705
|
request_options : typing.Optional[RequestOptions]
|
|
1517
1706
|
Request-specific configuration.
|
|
1518
1707
|
|
|
@@ -1524,6 +1713,9 @@ class AsyncRawSpansClient:
|
|
|
1524
1713
|
_response = await self._client_wrapper.httpx_client.request(
|
|
1525
1714
|
f"v1/private/spans/{jsonable_encoder(id)}",
|
|
1526
1715
|
method="GET",
|
|
1716
|
+
params={
|
|
1717
|
+
"strip_attachments": strip_attachments,
|
|
1718
|
+
},
|
|
1527
1719
|
request_options=request_options,
|
|
1528
1720
|
)
|
|
1529
1721
|
try:
|
|
@@ -1606,7 +1798,7 @@ class AsyncRawSpansClient:
|
|
|
1606
1798
|
end_time: typing.Optional[dt.datetime] = OMIT,
|
|
1607
1799
|
input: typing.Optional[JsonListString] = OMIT,
|
|
1608
1800
|
output: typing.Optional[JsonListString] = OMIT,
|
|
1609
|
-
metadata: typing.Optional[
|
|
1801
|
+
metadata: typing.Optional[JsonListString] = OMIT,
|
|
1610
1802
|
model: typing.Optional[str] = OMIT,
|
|
1611
1803
|
provider: typing.Optional[str] = OMIT,
|
|
1612
1804
|
tags: typing.Optional[typing.Sequence[str]] = OMIT,
|
|
@@ -1642,7 +1834,7 @@ class AsyncRawSpansClient:
|
|
|
1642
1834
|
|
|
1643
1835
|
output : typing.Optional[JsonListString]
|
|
1644
1836
|
|
|
1645
|
-
metadata : typing.Optional[
|
|
1837
|
+
metadata : typing.Optional[JsonListString]
|
|
1646
1838
|
|
|
1647
1839
|
model : typing.Optional[str]
|
|
1648
1840
|
|
|
@@ -1680,7 +1872,9 @@ class AsyncRawSpansClient:
|
|
|
1680
1872
|
"output": convert_and_respect_annotation_metadata(
|
|
1681
1873
|
object_=output, annotation=JsonListString, direction="write"
|
|
1682
1874
|
),
|
|
1683
|
-
"metadata":
|
|
1875
|
+
"metadata": convert_and_respect_annotation_metadata(
|
|
1876
|
+
object_=metadata, annotation=JsonListString, direction="write"
|
|
1877
|
+
),
|
|
1684
1878
|
"model": model,
|
|
1685
1879
|
"provider": provider,
|
|
1686
1880
|
"tags": tags,
|
|
@@ -1906,6 +2100,8 @@ class AsyncRawSpansClient:
|
|
|
1906
2100
|
trace_id: typing.Optional[str] = None,
|
|
1907
2101
|
type: typing.Optional[GetSpanStatsRequestType] = None,
|
|
1908
2102
|
filters: typing.Optional[str] = None,
|
|
2103
|
+
from_time: typing.Optional[dt.datetime] = None,
|
|
2104
|
+
to_time: typing.Optional[dt.datetime] = None,
|
|
1909
2105
|
request_options: typing.Optional[RequestOptions] = None,
|
|
1910
2106
|
) -> AsyncHttpResponse[ProjectStatsPublic]:
|
|
1911
2107
|
"""
|
|
@@ -1923,6 +2119,10 @@ class AsyncRawSpansClient:
|
|
|
1923
2119
|
|
|
1924
2120
|
filters : typing.Optional[str]
|
|
1925
2121
|
|
|
2122
|
+
from_time : typing.Optional[dt.datetime]
|
|
2123
|
+
|
|
2124
|
+
to_time : typing.Optional[dt.datetime]
|
|
2125
|
+
|
|
1926
2126
|
request_options : typing.Optional[RequestOptions]
|
|
1927
2127
|
Request-specific configuration.
|
|
1928
2128
|
|
|
@@ -1940,6 +2140,8 @@ class AsyncRawSpansClient:
|
|
|
1940
2140
|
"trace_id": trace_id,
|
|
1941
2141
|
"type": type,
|
|
1942
2142
|
"filters": filters,
|
|
2143
|
+
"from_time": serialize_datetime(from_time) if from_time is not None else None,
|
|
2144
|
+
"to_time": serialize_datetime(to_time) if to_time is not None else None,
|
|
1943
2145
|
},
|
|
1944
2146
|
request_options=request_options,
|
|
1945
2147
|
)
|
|
@@ -2012,6 +2214,8 @@ class AsyncRawSpansClient:
|
|
|
2012
2214
|
limit: typing.Optional[int] = OMIT,
|
|
2013
2215
|
last_retrieved_id: typing.Optional[str] = OMIT,
|
|
2014
2216
|
truncate: typing.Optional[bool] = OMIT,
|
|
2217
|
+
from_time: typing.Optional[dt.datetime] = OMIT,
|
|
2218
|
+
to_time: typing.Optional[dt.datetime] = OMIT,
|
|
2015
2219
|
request_options: typing.Optional[RequestOptions] = None,
|
|
2016
2220
|
) -> typing.AsyncIterator[AsyncHttpResponse[typing.AsyncIterator[bytes]]]:
|
|
2017
2221
|
"""
|
|
@@ -2037,6 +2241,12 @@ class AsyncRawSpansClient:
|
|
|
2037
2241
|
truncate : typing.Optional[bool]
|
|
2038
2242
|
Truncate image included in either input, output or metadata
|
|
2039
2243
|
|
|
2244
|
+
from_time : typing.Optional[dt.datetime]
|
|
2245
|
+
Filter spans created from this time (ISO-8601 format).
|
|
2246
|
+
|
|
2247
|
+
to_time : typing.Optional[dt.datetime]
|
|
2248
|
+
Filter spans created up to this time (ISO-8601 format). If not provided, defaults to current time. Must be after 'from_time'.
|
|
2249
|
+
|
|
2040
2250
|
request_options : typing.Optional[RequestOptions]
|
|
2041
2251
|
Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
|
|
2042
2252
|
|
|
@@ -2059,6 +2269,8 @@ class AsyncRawSpansClient:
|
|
|
2059
2269
|
"limit": limit,
|
|
2060
2270
|
"last_retrieved_id": last_retrieved_id,
|
|
2061
2271
|
"truncate": truncate,
|
|
2272
|
+
"from_time": from_time,
|
|
2273
|
+
"to_time": to_time,
|
|
2062
2274
|
},
|
|
2063
2275
|
headers={
|
|
2064
2276
|
"content-type": "application/json",
|