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
opik/rest_api/spans/client.py
CHANGED
|
@@ -12,12 +12,12 @@ from ..types.feedback_score_batch_item import FeedbackScoreBatchItem
|
|
|
12
12
|
from ..types.feedback_score_source import FeedbackScoreSource
|
|
13
13
|
from ..types.json_list_string import JsonListString
|
|
14
14
|
from ..types.json_list_string_write import JsonListStringWrite
|
|
15
|
-
from ..types.json_node import JsonNode
|
|
16
|
-
from ..types.json_node_write import JsonNodeWrite
|
|
17
15
|
from ..types.project_stats_public import ProjectStatsPublic
|
|
18
16
|
from ..types.span_filter_public import SpanFilterPublic
|
|
19
17
|
from ..types.span_page_public import SpanPagePublic
|
|
20
18
|
from ..types.span_public import SpanPublic
|
|
19
|
+
from ..types.span_update import SpanUpdate
|
|
20
|
+
from ..types.span_update_type import SpanUpdateType
|
|
21
21
|
from ..types.span_write import SpanWrite
|
|
22
22
|
from ..types.span_write_type import SpanWriteType
|
|
23
23
|
from ..types.value_entry import ValueEntry
|
|
@@ -26,7 +26,6 @@ from .types.find_feedback_score_names_1_request_type import FindFeedbackScoreNam
|
|
|
26
26
|
from .types.get_span_stats_request_type import GetSpanStatsRequestType
|
|
27
27
|
from .types.get_spans_by_project_request_type import GetSpansByProjectRequestType
|
|
28
28
|
from .types.span_search_stream_request_public_type import SpanSearchStreamRequestPublicType
|
|
29
|
-
from .types.span_update_type import SpanUpdateType
|
|
30
29
|
|
|
31
30
|
# this is used as the default value for optional parameters
|
|
32
31
|
OMIT = typing.cast(typing.Any, ...)
|
|
@@ -175,6 +174,74 @@ class SpansClient:
|
|
|
175
174
|
)
|
|
176
175
|
return _response.data
|
|
177
176
|
|
|
177
|
+
def create_spans(
|
|
178
|
+
self, *, spans: typing.Sequence[SpanWrite], request_options: typing.Optional[RequestOptions] = None
|
|
179
|
+
) -> None:
|
|
180
|
+
"""
|
|
181
|
+
Create spans
|
|
182
|
+
|
|
183
|
+
Parameters
|
|
184
|
+
----------
|
|
185
|
+
spans : typing.Sequence[SpanWrite]
|
|
186
|
+
|
|
187
|
+
request_options : typing.Optional[RequestOptions]
|
|
188
|
+
Request-specific configuration.
|
|
189
|
+
|
|
190
|
+
Returns
|
|
191
|
+
-------
|
|
192
|
+
None
|
|
193
|
+
|
|
194
|
+
Examples
|
|
195
|
+
--------
|
|
196
|
+
from Opik import OpikApi
|
|
197
|
+
from Opik import SpanWrite
|
|
198
|
+
import datetime
|
|
199
|
+
client = OpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
|
|
200
|
+
client.spans.create_spans(spans=[SpanWrite(start_time=datetime.datetime.fromisoformat("2024-01-15 09:30:00+00:00", ), )], )
|
|
201
|
+
"""
|
|
202
|
+
_response = self._raw_client.create_spans(spans=spans, request_options=request_options)
|
|
203
|
+
return _response.data
|
|
204
|
+
|
|
205
|
+
def batch_update_spans(
|
|
206
|
+
self,
|
|
207
|
+
*,
|
|
208
|
+
ids: typing.Sequence[str],
|
|
209
|
+
update: SpanUpdate,
|
|
210
|
+
merge_tags: typing.Optional[bool] = OMIT,
|
|
211
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
212
|
+
) -> None:
|
|
213
|
+
"""
|
|
214
|
+
Update multiple spans
|
|
215
|
+
|
|
216
|
+
Parameters
|
|
217
|
+
----------
|
|
218
|
+
ids : typing.Sequence[str]
|
|
219
|
+
List of span IDs to update (max 1000)
|
|
220
|
+
|
|
221
|
+
update : SpanUpdate
|
|
222
|
+
|
|
223
|
+
merge_tags : typing.Optional[bool]
|
|
224
|
+
If true, merge tags with existing tags instead of replacing them. Default: false
|
|
225
|
+
|
|
226
|
+
request_options : typing.Optional[RequestOptions]
|
|
227
|
+
Request-specific configuration.
|
|
228
|
+
|
|
229
|
+
Returns
|
|
230
|
+
-------
|
|
231
|
+
None
|
|
232
|
+
|
|
233
|
+
Examples
|
|
234
|
+
--------
|
|
235
|
+
from Opik import OpikApi
|
|
236
|
+
from Opik import SpanUpdate
|
|
237
|
+
client = OpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
|
|
238
|
+
client.spans.batch_update_spans(ids=['ids'], update=SpanUpdate(trace_id='trace_id', ), )
|
|
239
|
+
"""
|
|
240
|
+
_response = self._raw_client.batch_update_spans(
|
|
241
|
+
ids=ids, update=update, merge_tags=merge_tags, request_options=request_options
|
|
242
|
+
)
|
|
243
|
+
return _response.data
|
|
244
|
+
|
|
178
245
|
def get_spans_by_project(
|
|
179
246
|
self,
|
|
180
247
|
*,
|
|
@@ -186,8 +253,11 @@ class SpansClient:
|
|
|
186
253
|
type: typing.Optional[GetSpansByProjectRequestType] = None,
|
|
187
254
|
filters: typing.Optional[str] = None,
|
|
188
255
|
truncate: typing.Optional[bool] = None,
|
|
256
|
+
strip_attachments: typing.Optional[bool] = None,
|
|
189
257
|
sorting: typing.Optional[str] = None,
|
|
190
258
|
exclude: typing.Optional[str] = None,
|
|
259
|
+
from_time: typing.Optional[dt.datetime] = None,
|
|
260
|
+
to_time: typing.Optional[dt.datetime] = None,
|
|
191
261
|
request_options: typing.Optional[RequestOptions] = None,
|
|
192
262
|
) -> SpanPagePublic:
|
|
193
263
|
"""
|
|
@@ -211,10 +281,16 @@ class SpansClient:
|
|
|
211
281
|
|
|
212
282
|
truncate : typing.Optional[bool]
|
|
213
283
|
|
|
284
|
+
strip_attachments : typing.Optional[bool]
|
|
285
|
+
|
|
214
286
|
sorting : typing.Optional[str]
|
|
215
287
|
|
|
216
288
|
exclude : typing.Optional[str]
|
|
217
289
|
|
|
290
|
+
from_time : typing.Optional[dt.datetime]
|
|
291
|
+
|
|
292
|
+
to_time : typing.Optional[dt.datetime]
|
|
293
|
+
|
|
218
294
|
request_options : typing.Optional[RequestOptions]
|
|
219
295
|
Request-specific configuration.
|
|
220
296
|
|
|
@@ -238,8 +314,11 @@ class SpansClient:
|
|
|
238
314
|
type=type,
|
|
239
315
|
filters=filters,
|
|
240
316
|
truncate=truncate,
|
|
317
|
+
strip_attachments=strip_attachments,
|
|
241
318
|
sorting=sorting,
|
|
242
319
|
exclude=exclude,
|
|
320
|
+
from_time=from_time,
|
|
321
|
+
to_time=to_time,
|
|
243
322
|
request_options=request_options,
|
|
244
323
|
)
|
|
245
324
|
return _response.data
|
|
@@ -257,7 +336,7 @@ class SpansClient:
|
|
|
257
336
|
end_time: typing.Optional[dt.datetime] = OMIT,
|
|
258
337
|
input: typing.Optional[JsonListStringWrite] = OMIT,
|
|
259
338
|
output: typing.Optional[JsonListStringWrite] = OMIT,
|
|
260
|
-
metadata: typing.Optional[
|
|
339
|
+
metadata: typing.Optional[JsonListStringWrite] = OMIT,
|
|
261
340
|
model: typing.Optional[str] = OMIT,
|
|
262
341
|
provider: typing.Optional[str] = OMIT,
|
|
263
342
|
tags: typing.Optional[typing.Sequence[str]] = OMIT,
|
|
@@ -294,7 +373,7 @@ class SpansClient:
|
|
|
294
373
|
|
|
295
374
|
output : typing.Optional[JsonListStringWrite]
|
|
296
375
|
|
|
297
|
-
metadata : typing.Optional[
|
|
376
|
+
metadata : typing.Optional[JsonListStringWrite]
|
|
298
377
|
|
|
299
378
|
model : typing.Optional[str]
|
|
300
379
|
|
|
@@ -350,35 +429,13 @@ class SpansClient:
|
|
|
350
429
|
)
|
|
351
430
|
return _response.data
|
|
352
431
|
|
|
353
|
-
def
|
|
354
|
-
self,
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
----------
|
|
361
|
-
spans : typing.Sequence[SpanWrite]
|
|
362
|
-
|
|
363
|
-
request_options : typing.Optional[RequestOptions]
|
|
364
|
-
Request-specific configuration.
|
|
365
|
-
|
|
366
|
-
Returns
|
|
367
|
-
-------
|
|
368
|
-
None
|
|
369
|
-
|
|
370
|
-
Examples
|
|
371
|
-
--------
|
|
372
|
-
from Opik import OpikApi
|
|
373
|
-
from Opik import SpanWrite
|
|
374
|
-
import datetime
|
|
375
|
-
client = OpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
|
|
376
|
-
client.spans.create_spans(spans=[SpanWrite(start_time=datetime.datetime.fromisoformat("2024-01-15 09:30:00+00:00", ), )], )
|
|
377
|
-
"""
|
|
378
|
-
_response = self._raw_client.create_spans(spans=spans, request_options=request_options)
|
|
379
|
-
return _response.data
|
|
380
|
-
|
|
381
|
-
def get_span_by_id(self, id: str, *, request_options: typing.Optional[RequestOptions] = None) -> SpanPublic:
|
|
432
|
+
def get_span_by_id(
|
|
433
|
+
self,
|
|
434
|
+
id: str,
|
|
435
|
+
*,
|
|
436
|
+
strip_attachments: typing.Optional[bool] = None,
|
|
437
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
438
|
+
) -> SpanPublic:
|
|
382
439
|
"""
|
|
383
440
|
Get span by id
|
|
384
441
|
|
|
@@ -386,6 +443,8 @@ class SpansClient:
|
|
|
386
443
|
----------
|
|
387
444
|
id : str
|
|
388
445
|
|
|
446
|
+
strip_attachments : typing.Optional[bool]
|
|
447
|
+
|
|
389
448
|
request_options : typing.Optional[RequestOptions]
|
|
390
449
|
Request-specific configuration.
|
|
391
450
|
|
|
@@ -400,7 +459,9 @@ class SpansClient:
|
|
|
400
459
|
client = OpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
|
|
401
460
|
client.spans.get_span_by_id(id='id', )
|
|
402
461
|
"""
|
|
403
|
-
_response = self._raw_client.get_span_by_id(
|
|
462
|
+
_response = self._raw_client.get_span_by_id(
|
|
463
|
+
id, strip_attachments=strip_attachments, request_options=request_options
|
|
464
|
+
)
|
|
404
465
|
return _response.data
|
|
405
466
|
|
|
406
467
|
def delete_span_by_id(self, id: str, *, request_options: typing.Optional[RequestOptions] = None) -> None:
|
|
@@ -440,7 +501,7 @@ class SpansClient:
|
|
|
440
501
|
end_time: typing.Optional[dt.datetime] = OMIT,
|
|
441
502
|
input: typing.Optional[JsonListString] = OMIT,
|
|
442
503
|
output: typing.Optional[JsonListString] = OMIT,
|
|
443
|
-
metadata: typing.Optional[
|
|
504
|
+
metadata: typing.Optional[JsonListString] = OMIT,
|
|
444
505
|
model: typing.Optional[str] = OMIT,
|
|
445
506
|
provider: typing.Optional[str] = OMIT,
|
|
446
507
|
tags: typing.Optional[typing.Sequence[str]] = OMIT,
|
|
@@ -476,7 +537,7 @@ class SpansClient:
|
|
|
476
537
|
|
|
477
538
|
output : typing.Optional[JsonListString]
|
|
478
539
|
|
|
479
|
-
metadata : typing.Optional[
|
|
540
|
+
metadata : typing.Optional[JsonListString]
|
|
480
541
|
|
|
481
542
|
model : typing.Optional[str]
|
|
482
543
|
|
|
@@ -660,6 +721,8 @@ class SpansClient:
|
|
|
660
721
|
trace_id: typing.Optional[str] = None,
|
|
661
722
|
type: typing.Optional[GetSpanStatsRequestType] = None,
|
|
662
723
|
filters: typing.Optional[str] = None,
|
|
724
|
+
from_time: typing.Optional[dt.datetime] = None,
|
|
725
|
+
to_time: typing.Optional[dt.datetime] = None,
|
|
663
726
|
request_options: typing.Optional[RequestOptions] = None,
|
|
664
727
|
) -> ProjectStatsPublic:
|
|
665
728
|
"""
|
|
@@ -677,6 +740,10 @@ class SpansClient:
|
|
|
677
740
|
|
|
678
741
|
filters : typing.Optional[str]
|
|
679
742
|
|
|
743
|
+
from_time : typing.Optional[dt.datetime]
|
|
744
|
+
|
|
745
|
+
to_time : typing.Optional[dt.datetime]
|
|
746
|
+
|
|
680
747
|
request_options : typing.Optional[RequestOptions]
|
|
681
748
|
Request-specific configuration.
|
|
682
749
|
|
|
@@ -697,6 +764,8 @@ class SpansClient:
|
|
|
697
764
|
trace_id=trace_id,
|
|
698
765
|
type=type,
|
|
699
766
|
filters=filters,
|
|
767
|
+
from_time=from_time,
|
|
768
|
+
to_time=to_time,
|
|
700
769
|
request_options=request_options,
|
|
701
770
|
)
|
|
702
771
|
return _response.data
|
|
@@ -726,7 +795,7 @@ class SpansClient:
|
|
|
726
795
|
from Opik import OpikApi
|
|
727
796
|
from Opik import FeedbackScoreBatchItem
|
|
728
797
|
client = OpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
|
|
729
|
-
client.spans.score_batch_of_spans(scores=[FeedbackScoreBatchItem(
|
|
798
|
+
client.spans.score_batch_of_spans(scores=[FeedbackScoreBatchItem(name='name', value=1.1, source="ui", id='id', )], )
|
|
730
799
|
"""
|
|
731
800
|
_response = self._raw_client.score_batch_of_spans(scores=scores, request_options=request_options)
|
|
732
801
|
return _response.data
|
|
@@ -742,6 +811,8 @@ class SpansClient:
|
|
|
742
811
|
limit: typing.Optional[int] = OMIT,
|
|
743
812
|
last_retrieved_id: typing.Optional[str] = OMIT,
|
|
744
813
|
truncate: typing.Optional[bool] = OMIT,
|
|
814
|
+
from_time: typing.Optional[dt.datetime] = OMIT,
|
|
815
|
+
to_time: typing.Optional[dt.datetime] = OMIT,
|
|
745
816
|
request_options: typing.Optional[RequestOptions] = None,
|
|
746
817
|
) -> typing.Iterator[bytes]:
|
|
747
818
|
"""
|
|
@@ -767,6 +838,12 @@ class SpansClient:
|
|
|
767
838
|
truncate : typing.Optional[bool]
|
|
768
839
|
Truncate image included in either input, output or metadata
|
|
769
840
|
|
|
841
|
+
from_time : typing.Optional[dt.datetime]
|
|
842
|
+
Filter spans created from this time (ISO-8601 format).
|
|
843
|
+
|
|
844
|
+
to_time : typing.Optional[dt.datetime]
|
|
845
|
+
Filter spans created up to this time (ISO-8601 format). If not provided, defaults to current time. Must be after 'from_time'.
|
|
846
|
+
|
|
770
847
|
request_options : typing.Optional[RequestOptions]
|
|
771
848
|
Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
|
|
772
849
|
|
|
@@ -784,6 +861,8 @@ class SpansClient:
|
|
|
784
861
|
limit=limit,
|
|
785
862
|
last_retrieved_id=last_retrieved_id,
|
|
786
863
|
truncate=truncate,
|
|
864
|
+
from_time=from_time,
|
|
865
|
+
to_time=to_time,
|
|
787
866
|
request_options=request_options,
|
|
788
867
|
) as r:
|
|
789
868
|
yield from r.data
|
|
@@ -994,6 +1073,80 @@ class AsyncSpansClient:
|
|
|
994
1073
|
)
|
|
995
1074
|
return _response.data
|
|
996
1075
|
|
|
1076
|
+
async def create_spans(
|
|
1077
|
+
self, *, spans: typing.Sequence[SpanWrite], request_options: typing.Optional[RequestOptions] = None
|
|
1078
|
+
) -> None:
|
|
1079
|
+
"""
|
|
1080
|
+
Create spans
|
|
1081
|
+
|
|
1082
|
+
Parameters
|
|
1083
|
+
----------
|
|
1084
|
+
spans : typing.Sequence[SpanWrite]
|
|
1085
|
+
|
|
1086
|
+
request_options : typing.Optional[RequestOptions]
|
|
1087
|
+
Request-specific configuration.
|
|
1088
|
+
|
|
1089
|
+
Returns
|
|
1090
|
+
-------
|
|
1091
|
+
None
|
|
1092
|
+
|
|
1093
|
+
Examples
|
|
1094
|
+
--------
|
|
1095
|
+
from Opik import AsyncOpikApi
|
|
1096
|
+
from Opik import SpanWrite
|
|
1097
|
+
import datetime
|
|
1098
|
+
import asyncio
|
|
1099
|
+
client = AsyncOpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
|
|
1100
|
+
async def main() -> None:
|
|
1101
|
+
await client.spans.create_spans(spans=[SpanWrite(start_time=datetime.datetime.fromisoformat("2024-01-15 09:30:00+00:00", ), )], )
|
|
1102
|
+
asyncio.run(main())
|
|
1103
|
+
"""
|
|
1104
|
+
_response = await self._raw_client.create_spans(spans=spans, request_options=request_options)
|
|
1105
|
+
return _response.data
|
|
1106
|
+
|
|
1107
|
+
async def batch_update_spans(
|
|
1108
|
+
self,
|
|
1109
|
+
*,
|
|
1110
|
+
ids: typing.Sequence[str],
|
|
1111
|
+
update: SpanUpdate,
|
|
1112
|
+
merge_tags: typing.Optional[bool] = OMIT,
|
|
1113
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
1114
|
+
) -> None:
|
|
1115
|
+
"""
|
|
1116
|
+
Update multiple spans
|
|
1117
|
+
|
|
1118
|
+
Parameters
|
|
1119
|
+
----------
|
|
1120
|
+
ids : typing.Sequence[str]
|
|
1121
|
+
List of span IDs to update (max 1000)
|
|
1122
|
+
|
|
1123
|
+
update : SpanUpdate
|
|
1124
|
+
|
|
1125
|
+
merge_tags : typing.Optional[bool]
|
|
1126
|
+
If true, merge tags with existing tags instead of replacing them. Default: false
|
|
1127
|
+
|
|
1128
|
+
request_options : typing.Optional[RequestOptions]
|
|
1129
|
+
Request-specific configuration.
|
|
1130
|
+
|
|
1131
|
+
Returns
|
|
1132
|
+
-------
|
|
1133
|
+
None
|
|
1134
|
+
|
|
1135
|
+
Examples
|
|
1136
|
+
--------
|
|
1137
|
+
from Opik import AsyncOpikApi
|
|
1138
|
+
from Opik import SpanUpdate
|
|
1139
|
+
import asyncio
|
|
1140
|
+
client = AsyncOpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
|
|
1141
|
+
async def main() -> None:
|
|
1142
|
+
await client.spans.batch_update_spans(ids=['ids'], update=SpanUpdate(trace_id='trace_id', ), )
|
|
1143
|
+
asyncio.run(main())
|
|
1144
|
+
"""
|
|
1145
|
+
_response = await self._raw_client.batch_update_spans(
|
|
1146
|
+
ids=ids, update=update, merge_tags=merge_tags, request_options=request_options
|
|
1147
|
+
)
|
|
1148
|
+
return _response.data
|
|
1149
|
+
|
|
997
1150
|
async def get_spans_by_project(
|
|
998
1151
|
self,
|
|
999
1152
|
*,
|
|
@@ -1005,8 +1158,11 @@ class AsyncSpansClient:
|
|
|
1005
1158
|
type: typing.Optional[GetSpansByProjectRequestType] = None,
|
|
1006
1159
|
filters: typing.Optional[str] = None,
|
|
1007
1160
|
truncate: typing.Optional[bool] = None,
|
|
1161
|
+
strip_attachments: typing.Optional[bool] = None,
|
|
1008
1162
|
sorting: typing.Optional[str] = None,
|
|
1009
1163
|
exclude: typing.Optional[str] = None,
|
|
1164
|
+
from_time: typing.Optional[dt.datetime] = None,
|
|
1165
|
+
to_time: typing.Optional[dt.datetime] = None,
|
|
1010
1166
|
request_options: typing.Optional[RequestOptions] = None,
|
|
1011
1167
|
) -> SpanPagePublic:
|
|
1012
1168
|
"""
|
|
@@ -1030,10 +1186,16 @@ class AsyncSpansClient:
|
|
|
1030
1186
|
|
|
1031
1187
|
truncate : typing.Optional[bool]
|
|
1032
1188
|
|
|
1189
|
+
strip_attachments : typing.Optional[bool]
|
|
1190
|
+
|
|
1033
1191
|
sorting : typing.Optional[str]
|
|
1034
1192
|
|
|
1035
1193
|
exclude : typing.Optional[str]
|
|
1036
1194
|
|
|
1195
|
+
from_time : typing.Optional[dt.datetime]
|
|
1196
|
+
|
|
1197
|
+
to_time : typing.Optional[dt.datetime]
|
|
1198
|
+
|
|
1037
1199
|
request_options : typing.Optional[RequestOptions]
|
|
1038
1200
|
Request-specific configuration.
|
|
1039
1201
|
|
|
@@ -1060,8 +1222,11 @@ class AsyncSpansClient:
|
|
|
1060
1222
|
type=type,
|
|
1061
1223
|
filters=filters,
|
|
1062
1224
|
truncate=truncate,
|
|
1225
|
+
strip_attachments=strip_attachments,
|
|
1063
1226
|
sorting=sorting,
|
|
1064
1227
|
exclude=exclude,
|
|
1228
|
+
from_time=from_time,
|
|
1229
|
+
to_time=to_time,
|
|
1065
1230
|
request_options=request_options,
|
|
1066
1231
|
)
|
|
1067
1232
|
return _response.data
|
|
@@ -1079,7 +1244,7 @@ class AsyncSpansClient:
|
|
|
1079
1244
|
end_time: typing.Optional[dt.datetime] = OMIT,
|
|
1080
1245
|
input: typing.Optional[JsonListStringWrite] = OMIT,
|
|
1081
1246
|
output: typing.Optional[JsonListStringWrite] = OMIT,
|
|
1082
|
-
metadata: typing.Optional[
|
|
1247
|
+
metadata: typing.Optional[JsonListStringWrite] = OMIT,
|
|
1083
1248
|
model: typing.Optional[str] = OMIT,
|
|
1084
1249
|
provider: typing.Optional[str] = OMIT,
|
|
1085
1250
|
tags: typing.Optional[typing.Sequence[str]] = OMIT,
|
|
@@ -1116,7 +1281,7 @@ class AsyncSpansClient:
|
|
|
1116
1281
|
|
|
1117
1282
|
output : typing.Optional[JsonListStringWrite]
|
|
1118
1283
|
|
|
1119
|
-
metadata : typing.Optional[
|
|
1284
|
+
metadata : typing.Optional[JsonListStringWrite]
|
|
1120
1285
|
|
|
1121
1286
|
model : typing.Optional[str]
|
|
1122
1287
|
|
|
@@ -1175,38 +1340,13 @@ class AsyncSpansClient:
|
|
|
1175
1340
|
)
|
|
1176
1341
|
return _response.data
|
|
1177
1342
|
|
|
1178
|
-
async def
|
|
1179
|
-
self,
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
----------
|
|
1186
|
-
spans : typing.Sequence[SpanWrite]
|
|
1187
|
-
|
|
1188
|
-
request_options : typing.Optional[RequestOptions]
|
|
1189
|
-
Request-specific configuration.
|
|
1190
|
-
|
|
1191
|
-
Returns
|
|
1192
|
-
-------
|
|
1193
|
-
None
|
|
1194
|
-
|
|
1195
|
-
Examples
|
|
1196
|
-
--------
|
|
1197
|
-
from Opik import AsyncOpikApi
|
|
1198
|
-
from Opik import SpanWrite
|
|
1199
|
-
import datetime
|
|
1200
|
-
import asyncio
|
|
1201
|
-
client = AsyncOpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
|
|
1202
|
-
async def main() -> None:
|
|
1203
|
-
await client.spans.create_spans(spans=[SpanWrite(start_time=datetime.datetime.fromisoformat("2024-01-15 09:30:00+00:00", ), )], )
|
|
1204
|
-
asyncio.run(main())
|
|
1205
|
-
"""
|
|
1206
|
-
_response = await self._raw_client.create_spans(spans=spans, request_options=request_options)
|
|
1207
|
-
return _response.data
|
|
1208
|
-
|
|
1209
|
-
async def get_span_by_id(self, id: str, *, request_options: typing.Optional[RequestOptions] = None) -> SpanPublic:
|
|
1343
|
+
async def get_span_by_id(
|
|
1344
|
+
self,
|
|
1345
|
+
id: str,
|
|
1346
|
+
*,
|
|
1347
|
+
strip_attachments: typing.Optional[bool] = None,
|
|
1348
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
1349
|
+
) -> SpanPublic:
|
|
1210
1350
|
"""
|
|
1211
1351
|
Get span by id
|
|
1212
1352
|
|
|
@@ -1214,6 +1354,8 @@ class AsyncSpansClient:
|
|
|
1214
1354
|
----------
|
|
1215
1355
|
id : str
|
|
1216
1356
|
|
|
1357
|
+
strip_attachments : typing.Optional[bool]
|
|
1358
|
+
|
|
1217
1359
|
request_options : typing.Optional[RequestOptions]
|
|
1218
1360
|
Request-specific configuration.
|
|
1219
1361
|
|
|
@@ -1231,7 +1373,9 @@ class AsyncSpansClient:
|
|
|
1231
1373
|
await client.spans.get_span_by_id(id='id', )
|
|
1232
1374
|
asyncio.run(main())
|
|
1233
1375
|
"""
|
|
1234
|
-
_response = await self._raw_client.get_span_by_id(
|
|
1376
|
+
_response = await self._raw_client.get_span_by_id(
|
|
1377
|
+
id, strip_attachments=strip_attachments, request_options=request_options
|
|
1378
|
+
)
|
|
1235
1379
|
return _response.data
|
|
1236
1380
|
|
|
1237
1381
|
async def delete_span_by_id(self, id: str, *, request_options: typing.Optional[RequestOptions] = None) -> None:
|
|
@@ -1274,7 +1418,7 @@ class AsyncSpansClient:
|
|
|
1274
1418
|
end_time: typing.Optional[dt.datetime] = OMIT,
|
|
1275
1419
|
input: typing.Optional[JsonListString] = OMIT,
|
|
1276
1420
|
output: typing.Optional[JsonListString] = OMIT,
|
|
1277
|
-
metadata: typing.Optional[
|
|
1421
|
+
metadata: typing.Optional[JsonListString] = OMIT,
|
|
1278
1422
|
model: typing.Optional[str] = OMIT,
|
|
1279
1423
|
provider: typing.Optional[str] = OMIT,
|
|
1280
1424
|
tags: typing.Optional[typing.Sequence[str]] = OMIT,
|
|
@@ -1310,7 +1454,7 @@ class AsyncSpansClient:
|
|
|
1310
1454
|
|
|
1311
1455
|
output : typing.Optional[JsonListString]
|
|
1312
1456
|
|
|
1313
|
-
metadata : typing.Optional[
|
|
1457
|
+
metadata : typing.Optional[JsonListString]
|
|
1314
1458
|
|
|
1315
1459
|
model : typing.Optional[str]
|
|
1316
1460
|
|
|
@@ -1509,6 +1653,8 @@ class AsyncSpansClient:
|
|
|
1509
1653
|
trace_id: typing.Optional[str] = None,
|
|
1510
1654
|
type: typing.Optional[GetSpanStatsRequestType] = None,
|
|
1511
1655
|
filters: typing.Optional[str] = None,
|
|
1656
|
+
from_time: typing.Optional[dt.datetime] = None,
|
|
1657
|
+
to_time: typing.Optional[dt.datetime] = None,
|
|
1512
1658
|
request_options: typing.Optional[RequestOptions] = None,
|
|
1513
1659
|
) -> ProjectStatsPublic:
|
|
1514
1660
|
"""
|
|
@@ -1526,6 +1672,10 @@ class AsyncSpansClient:
|
|
|
1526
1672
|
|
|
1527
1673
|
filters : typing.Optional[str]
|
|
1528
1674
|
|
|
1675
|
+
from_time : typing.Optional[dt.datetime]
|
|
1676
|
+
|
|
1677
|
+
to_time : typing.Optional[dt.datetime]
|
|
1678
|
+
|
|
1529
1679
|
request_options : typing.Optional[RequestOptions]
|
|
1530
1680
|
Request-specific configuration.
|
|
1531
1681
|
|
|
@@ -1549,6 +1699,8 @@ class AsyncSpansClient:
|
|
|
1549
1699
|
trace_id=trace_id,
|
|
1550
1700
|
type=type,
|
|
1551
1701
|
filters=filters,
|
|
1702
|
+
from_time=from_time,
|
|
1703
|
+
to_time=to_time,
|
|
1552
1704
|
request_options=request_options,
|
|
1553
1705
|
)
|
|
1554
1706
|
return _response.data
|
|
@@ -1580,7 +1732,7 @@ class AsyncSpansClient:
|
|
|
1580
1732
|
import asyncio
|
|
1581
1733
|
client = AsyncOpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
|
|
1582
1734
|
async def main() -> None:
|
|
1583
|
-
await client.spans.score_batch_of_spans(scores=[FeedbackScoreBatchItem(
|
|
1735
|
+
await client.spans.score_batch_of_spans(scores=[FeedbackScoreBatchItem(name='name', value=1.1, source="ui", id='id', )], )
|
|
1584
1736
|
asyncio.run(main())
|
|
1585
1737
|
"""
|
|
1586
1738
|
_response = await self._raw_client.score_batch_of_spans(scores=scores, request_options=request_options)
|
|
@@ -1597,6 +1749,8 @@ class AsyncSpansClient:
|
|
|
1597
1749
|
limit: typing.Optional[int] = OMIT,
|
|
1598
1750
|
last_retrieved_id: typing.Optional[str] = OMIT,
|
|
1599
1751
|
truncate: typing.Optional[bool] = OMIT,
|
|
1752
|
+
from_time: typing.Optional[dt.datetime] = OMIT,
|
|
1753
|
+
to_time: typing.Optional[dt.datetime] = OMIT,
|
|
1600
1754
|
request_options: typing.Optional[RequestOptions] = None,
|
|
1601
1755
|
) -> typing.AsyncIterator[bytes]:
|
|
1602
1756
|
"""
|
|
@@ -1622,6 +1776,12 @@ class AsyncSpansClient:
|
|
|
1622
1776
|
truncate : typing.Optional[bool]
|
|
1623
1777
|
Truncate image included in either input, output or metadata
|
|
1624
1778
|
|
|
1779
|
+
from_time : typing.Optional[dt.datetime]
|
|
1780
|
+
Filter spans created from this time (ISO-8601 format).
|
|
1781
|
+
|
|
1782
|
+
to_time : typing.Optional[dt.datetime]
|
|
1783
|
+
Filter spans created up to this time (ISO-8601 format). If not provided, defaults to current time. Must be after 'from_time'.
|
|
1784
|
+
|
|
1625
1785
|
request_options : typing.Optional[RequestOptions]
|
|
1626
1786
|
Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
|
|
1627
1787
|
|
|
@@ -1639,6 +1799,8 @@ class AsyncSpansClient:
|
|
|
1639
1799
|
limit=limit,
|
|
1640
1800
|
last_retrieved_id=last_retrieved_id,
|
|
1641
1801
|
truncate=truncate,
|
|
1802
|
+
from_time=from_time,
|
|
1803
|
+
to_time=to_time,
|
|
1642
1804
|
request_options=request_options,
|
|
1643
1805
|
) as r:
|
|
1644
1806
|
async for data in r.data:
|