opik 1.6.4__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.
Files changed (1021) hide show
  1. opik/__init__.py +33 -2
  2. opik/anonymizer/__init__.py +5 -0
  3. opik/anonymizer/anonymizer.py +12 -0
  4. opik/anonymizer/factory.py +80 -0
  5. opik/anonymizer/recursive_anonymizer.py +64 -0
  6. opik/anonymizer/rules.py +56 -0
  7. opik/anonymizer/rules_anonymizer.py +35 -0
  8. opik/api_objects/attachment/__init__.py +5 -0
  9. opik/api_objects/attachment/attachment.py +20 -0
  10. opik/api_objects/attachment/attachment_context.py +36 -0
  11. opik/api_objects/attachment/attachments_extractor.py +153 -0
  12. opik/api_objects/attachment/client.py +220 -0
  13. opik/api_objects/attachment/converters.py +51 -0
  14. opik/api_objects/attachment/decoder.py +18 -0
  15. opik/api_objects/attachment/decoder_base64.py +83 -0
  16. opik/api_objects/attachment/decoder_helpers.py +137 -0
  17. opik/api_objects/conversation/__init__.py +0 -0
  18. opik/api_objects/conversation/conversation_factory.py +43 -0
  19. opik/api_objects/conversation/conversation_thread.py +49 -0
  20. opik/api_objects/data_helpers.py +79 -0
  21. opik/api_objects/dataset/dataset.py +107 -45
  22. opik/api_objects/dataset/rest_operations.py +12 -3
  23. opik/api_objects/experiment/experiment.py +81 -45
  24. opik/api_objects/experiment/experiment_item.py +2 -1
  25. opik/api_objects/experiment/experiments_client.py +64 -0
  26. opik/api_objects/experiment/helpers.py +35 -11
  27. opik/api_objects/experiment/rest_operations.py +88 -19
  28. opik/api_objects/helpers.py +104 -7
  29. opik/api_objects/local_recording.py +81 -0
  30. opik/api_objects/opik_client.py +872 -174
  31. opik/api_objects/opik_query_language.py +136 -18
  32. opik/api_objects/optimization/__init__.py +3 -0
  33. opik/api_objects/optimization/optimization.py +39 -0
  34. opik/api_objects/prompt/__init__.py +13 -1
  35. opik/api_objects/prompt/base_prompt.py +69 -0
  36. opik/api_objects/prompt/base_prompt_template.py +29 -0
  37. opik/api_objects/prompt/chat/__init__.py +1 -0
  38. opik/api_objects/prompt/chat/chat_prompt.py +210 -0
  39. opik/api_objects/prompt/chat/chat_prompt_template.py +350 -0
  40. opik/api_objects/prompt/chat/content_renderer_registry.py +203 -0
  41. opik/api_objects/prompt/client.py +193 -41
  42. opik/api_objects/prompt/text/__init__.py +1 -0
  43. opik/api_objects/prompt/text/prompt.py +174 -0
  44. opik/api_objects/prompt/text/prompt_template.py +55 -0
  45. opik/api_objects/prompt/types.py +29 -0
  46. opik/api_objects/rest_stream_parser.py +98 -0
  47. opik/api_objects/search_helpers.py +89 -0
  48. opik/api_objects/span/span_client.py +165 -45
  49. opik/api_objects/span/span_data.py +136 -25
  50. opik/api_objects/threads/__init__.py +0 -0
  51. opik/api_objects/threads/threads_client.py +185 -0
  52. opik/api_objects/trace/trace_client.py +72 -36
  53. opik/api_objects/trace/trace_data.py +112 -26
  54. opik/api_objects/validation_helpers.py +3 -3
  55. opik/cli/__init__.py +5 -0
  56. opik/cli/__main__.py +6 -0
  57. opik/cli/configure.py +66 -0
  58. opik/cli/exports/__init__.py +131 -0
  59. opik/cli/exports/dataset.py +278 -0
  60. opik/cli/exports/experiment.py +784 -0
  61. opik/cli/exports/project.py +685 -0
  62. opik/cli/exports/prompt.py +578 -0
  63. opik/cli/exports/utils.py +406 -0
  64. opik/cli/harbor.py +39 -0
  65. opik/cli/healthcheck.py +21 -0
  66. opik/cli/imports/__init__.py +439 -0
  67. opik/cli/imports/dataset.py +143 -0
  68. opik/cli/imports/experiment.py +1192 -0
  69. opik/cli/imports/project.py +262 -0
  70. opik/cli/imports/prompt.py +177 -0
  71. opik/cli/imports/utils.py +280 -0
  72. opik/cli/main.py +49 -0
  73. opik/cli/proxy.py +93 -0
  74. opik/cli/usage_report/__init__.py +16 -0
  75. opik/cli/usage_report/charts.py +783 -0
  76. opik/cli/usage_report/cli.py +274 -0
  77. opik/cli/usage_report/constants.py +9 -0
  78. opik/cli/usage_report/extraction.py +749 -0
  79. opik/cli/usage_report/pdf.py +244 -0
  80. opik/cli/usage_report/statistics.py +78 -0
  81. opik/cli/usage_report/utils.py +235 -0
  82. opik/config.py +62 -4
  83. opik/configurator/configure.py +45 -6
  84. opik/configurator/opik_rest_helpers.py +4 -1
  85. opik/context_storage.py +164 -65
  86. opik/datetime_helpers.py +12 -0
  87. opik/decorator/arguments_helpers.py +9 -1
  88. opik/decorator/base_track_decorator.py +298 -146
  89. opik/decorator/context_manager/__init__.py +0 -0
  90. opik/decorator/context_manager/span_context_manager.py +123 -0
  91. opik/decorator/context_manager/trace_context_manager.py +84 -0
  92. opik/decorator/generator_wrappers.py +3 -2
  93. opik/decorator/inspect_helpers.py +11 -0
  94. opik/decorator/opik_args/__init__.py +13 -0
  95. opik/decorator/opik_args/api_classes.py +71 -0
  96. opik/decorator/opik_args/helpers.py +120 -0
  97. opik/decorator/span_creation_handler.py +49 -21
  98. opik/decorator/tracker.py +9 -1
  99. opik/dict_utils.py +3 -3
  100. opik/environment.py +13 -1
  101. opik/error_tracking/api.py +1 -1
  102. opik/error_tracking/before_send.py +6 -5
  103. opik/error_tracking/environment_details.py +29 -7
  104. opik/error_tracking/error_filtering/filter_by_response_status_code.py +42 -0
  105. opik/error_tracking/error_filtering/filter_chain_builder.py +14 -3
  106. opik/evaluation/__init__.py +14 -2
  107. opik/evaluation/engine/engine.py +280 -82
  108. opik/evaluation/engine/evaluation_tasks_executor.py +15 -10
  109. opik/evaluation/engine/helpers.py +34 -9
  110. opik/evaluation/engine/metrics_evaluator.py +237 -0
  111. opik/evaluation/engine/types.py +5 -4
  112. opik/evaluation/evaluation_result.py +169 -2
  113. opik/evaluation/evaluator.py +659 -58
  114. opik/evaluation/metrics/__init__.py +121 -6
  115. opik/evaluation/metrics/aggregated_metric.py +92 -0
  116. opik/evaluation/metrics/arguments_helpers.py +15 -21
  117. opik/evaluation/metrics/arguments_validator.py +38 -0
  118. opik/evaluation/metrics/base_metric.py +20 -10
  119. opik/evaluation/metrics/conversation/__init__.py +48 -0
  120. opik/evaluation/metrics/conversation/conversation_thread_metric.py +79 -0
  121. opik/evaluation/metrics/conversation/conversation_turns_factory.py +39 -0
  122. opik/evaluation/metrics/conversation/g_eval_wrappers.py +19 -0
  123. opik/evaluation/metrics/conversation/helpers.py +84 -0
  124. opik/evaluation/metrics/conversation/heuristics/__init__.py +14 -0
  125. opik/evaluation/metrics/conversation/heuristics/degeneration/__init__.py +3 -0
  126. opik/evaluation/metrics/conversation/heuristics/degeneration/metric.py +189 -0
  127. opik/evaluation/metrics/conversation/heuristics/degeneration/phrases.py +12 -0
  128. opik/evaluation/metrics/conversation/heuristics/knowledge_retention/__init__.py +3 -0
  129. opik/evaluation/metrics/conversation/heuristics/knowledge_retention/metric.py +172 -0
  130. opik/evaluation/metrics/conversation/llm_judges/__init__.py +32 -0
  131. opik/evaluation/metrics/conversation/llm_judges/conversational_coherence/__init__.py +0 -0
  132. opik/evaluation/metrics/conversation/llm_judges/conversational_coherence/metric.py +274 -0
  133. opik/evaluation/metrics/conversation/llm_judges/conversational_coherence/schema.py +16 -0
  134. opik/evaluation/metrics/conversation/llm_judges/conversational_coherence/templates.py +95 -0
  135. opik/evaluation/metrics/conversation/llm_judges/g_eval_wrappers.py +442 -0
  136. opik/evaluation/metrics/conversation/llm_judges/session_completeness/__init__.py +0 -0
  137. opik/evaluation/metrics/conversation/llm_judges/session_completeness/metric.py +295 -0
  138. opik/evaluation/metrics/conversation/llm_judges/session_completeness/schema.py +22 -0
  139. opik/evaluation/metrics/conversation/llm_judges/session_completeness/templates.py +139 -0
  140. opik/evaluation/metrics/conversation/llm_judges/user_frustration/__init__.py +0 -0
  141. opik/evaluation/metrics/conversation/llm_judges/user_frustration/metric.py +277 -0
  142. opik/evaluation/metrics/conversation/llm_judges/user_frustration/schema.py +16 -0
  143. opik/evaluation/metrics/conversation/llm_judges/user_frustration/templates.py +135 -0
  144. opik/evaluation/metrics/conversation/types.py +34 -0
  145. opik/evaluation/metrics/conversation_types.py +9 -0
  146. opik/evaluation/metrics/heuristics/bertscore.py +107 -0
  147. opik/evaluation/metrics/heuristics/bleu.py +43 -16
  148. opik/evaluation/metrics/heuristics/chrf.py +127 -0
  149. opik/evaluation/metrics/heuristics/contains.py +50 -11
  150. opik/evaluation/metrics/heuristics/distribution_metrics.py +331 -0
  151. opik/evaluation/metrics/heuristics/equals.py +4 -1
  152. opik/evaluation/metrics/heuristics/gleu.py +113 -0
  153. opik/evaluation/metrics/heuristics/is_json.py +9 -3
  154. opik/evaluation/metrics/heuristics/language_adherence.py +123 -0
  155. opik/evaluation/metrics/heuristics/levenshtein_ratio.py +6 -5
  156. opik/evaluation/metrics/heuristics/meteor.py +119 -0
  157. opik/evaluation/metrics/heuristics/prompt_injection.py +150 -0
  158. opik/evaluation/metrics/heuristics/readability.py +129 -0
  159. opik/evaluation/metrics/heuristics/regex_match.py +4 -1
  160. opik/evaluation/metrics/heuristics/rouge.py +148 -0
  161. opik/evaluation/metrics/heuristics/sentiment.py +98 -0
  162. opik/evaluation/metrics/heuristics/spearman.py +88 -0
  163. opik/evaluation/metrics/heuristics/tone.py +155 -0
  164. opik/evaluation/metrics/heuristics/vader_sentiment.py +77 -0
  165. opik/evaluation/metrics/llm_judges/answer_relevance/metric.py +27 -30
  166. opik/evaluation/metrics/llm_judges/answer_relevance/parser.py +27 -0
  167. opik/evaluation/metrics/llm_judges/answer_relevance/templates.py +10 -10
  168. opik/evaluation/metrics/llm_judges/context_precision/metric.py +28 -31
  169. opik/evaluation/metrics/llm_judges/context_precision/parser.py +27 -0
  170. opik/evaluation/metrics/llm_judges/context_precision/template.py +7 -7
  171. opik/evaluation/metrics/llm_judges/context_recall/metric.py +27 -31
  172. opik/evaluation/metrics/llm_judges/context_recall/parser.py +27 -0
  173. opik/evaluation/metrics/llm_judges/context_recall/template.py +7 -7
  174. opik/evaluation/metrics/llm_judges/factuality/metric.py +7 -26
  175. opik/evaluation/metrics/llm_judges/factuality/parser.py +35 -0
  176. opik/evaluation/metrics/llm_judges/factuality/template.py +1 -1
  177. opik/evaluation/metrics/llm_judges/g_eval/__init__.py +5 -0
  178. opik/evaluation/metrics/llm_judges/g_eval/metric.py +244 -113
  179. opik/evaluation/metrics/llm_judges/g_eval/parser.py +161 -0
  180. opik/evaluation/metrics/llm_judges/g_eval/presets.py +209 -0
  181. opik/evaluation/metrics/llm_judges/g_eval_presets/__init__.py +36 -0
  182. opik/evaluation/metrics/llm_judges/g_eval_presets/agent_assessment.py +77 -0
  183. opik/evaluation/metrics/llm_judges/g_eval_presets/bias_classifier.py +181 -0
  184. opik/evaluation/metrics/llm_judges/g_eval_presets/compliance_risk.py +41 -0
  185. opik/evaluation/metrics/llm_judges/g_eval_presets/prompt_uncertainty.py +41 -0
  186. opik/evaluation/metrics/llm_judges/g_eval_presets/qa_suite.py +146 -0
  187. opik/evaluation/metrics/llm_judges/hallucination/metric.py +23 -27
  188. opik/evaluation/metrics/llm_judges/hallucination/parser.py +29 -0
  189. opik/evaluation/metrics/llm_judges/hallucination/template.py +2 -4
  190. opik/evaluation/metrics/llm_judges/llm_juries/__init__.py +3 -0
  191. opik/evaluation/metrics/llm_judges/llm_juries/metric.py +76 -0
  192. opik/evaluation/metrics/llm_judges/moderation/metric.py +23 -28
  193. opik/evaluation/metrics/llm_judges/moderation/parser.py +27 -0
  194. opik/evaluation/metrics/llm_judges/moderation/template.py +2 -2
  195. opik/evaluation/metrics/llm_judges/parsing_helpers.py +26 -0
  196. opik/evaluation/metrics/llm_judges/structure_output_compliance/__init__.py +0 -0
  197. opik/evaluation/metrics/llm_judges/structure_output_compliance/metric.py +144 -0
  198. opik/evaluation/metrics/llm_judges/structure_output_compliance/parser.py +79 -0
  199. opik/evaluation/metrics/llm_judges/structure_output_compliance/schema.py +15 -0
  200. opik/evaluation/metrics/llm_judges/structure_output_compliance/template.py +50 -0
  201. opik/evaluation/metrics/llm_judges/syc_eval/__init__.py +0 -0
  202. opik/evaluation/metrics/llm_judges/syc_eval/metric.py +252 -0
  203. opik/evaluation/metrics/llm_judges/syc_eval/parser.py +82 -0
  204. opik/evaluation/metrics/llm_judges/syc_eval/template.py +155 -0
  205. opik/evaluation/metrics/llm_judges/trajectory_accuracy/__init__.py +3 -0
  206. opik/evaluation/metrics/llm_judges/trajectory_accuracy/metric.py +171 -0
  207. opik/evaluation/metrics/llm_judges/trajectory_accuracy/parser.py +38 -0
  208. opik/evaluation/metrics/llm_judges/trajectory_accuracy/templates.py +65 -0
  209. opik/evaluation/metrics/llm_judges/usefulness/metric.py +23 -32
  210. opik/evaluation/metrics/llm_judges/usefulness/parser.py +28 -0
  211. opik/evaluation/metrics/ragas_metric.py +112 -0
  212. opik/evaluation/models/__init__.py +10 -0
  213. opik/evaluation/models/base_model.py +140 -18
  214. opik/evaluation/models/langchain/__init__.py +3 -0
  215. opik/evaluation/models/langchain/langchain_chat_model.py +166 -0
  216. opik/evaluation/models/langchain/message_converters.py +106 -0
  217. opik/evaluation/models/langchain/opik_monitoring.py +23 -0
  218. opik/evaluation/models/litellm/litellm_chat_model.py +186 -40
  219. opik/evaluation/models/litellm/opik_monitor.py +24 -21
  220. opik/evaluation/models/litellm/util.py +125 -0
  221. opik/evaluation/models/litellm/warning_filters.py +16 -4
  222. opik/evaluation/models/model_capabilities.py +187 -0
  223. opik/evaluation/models/models_factory.py +25 -3
  224. opik/evaluation/preprocessing.py +92 -0
  225. opik/evaluation/report.py +70 -12
  226. opik/evaluation/rest_operations.py +49 -45
  227. opik/evaluation/samplers/__init__.py +4 -0
  228. opik/evaluation/samplers/base_dataset_sampler.py +40 -0
  229. opik/evaluation/samplers/random_dataset_sampler.py +48 -0
  230. opik/evaluation/score_statistics.py +66 -0
  231. opik/evaluation/scorers/__init__.py +4 -0
  232. opik/evaluation/scorers/scorer_function.py +55 -0
  233. opik/evaluation/scorers/scorer_wrapper_metric.py +130 -0
  234. opik/evaluation/test_case.py +3 -2
  235. opik/evaluation/test_result.py +1 -0
  236. opik/evaluation/threads/__init__.py +0 -0
  237. opik/evaluation/threads/context_helper.py +32 -0
  238. opik/evaluation/threads/evaluation_engine.py +181 -0
  239. opik/evaluation/threads/evaluation_result.py +18 -0
  240. opik/evaluation/threads/evaluator.py +120 -0
  241. opik/evaluation/threads/helpers.py +51 -0
  242. opik/evaluation/types.py +9 -1
  243. opik/exceptions.py +116 -3
  244. opik/file_upload/__init__.py +0 -0
  245. opik/file_upload/base_upload_manager.py +39 -0
  246. opik/file_upload/file_upload_monitor.py +14 -0
  247. opik/file_upload/file_uploader.py +141 -0
  248. opik/file_upload/mime_type.py +9 -0
  249. opik/file_upload/s3_multipart_upload/__init__.py +0 -0
  250. opik/file_upload/s3_multipart_upload/file_parts_strategy.py +89 -0
  251. opik/file_upload/s3_multipart_upload/s3_file_uploader.py +86 -0
  252. opik/file_upload/s3_multipart_upload/s3_upload_error.py +29 -0
  253. opik/file_upload/thread_pool.py +17 -0
  254. opik/file_upload/upload_client.py +114 -0
  255. opik/file_upload/upload_manager.py +255 -0
  256. opik/file_upload/upload_options.py +37 -0
  257. opik/format_helpers.py +17 -0
  258. opik/guardrails/__init__.py +4 -0
  259. opik/guardrails/guardrail.py +157 -0
  260. opik/guardrails/guards/__init__.py +5 -0
  261. opik/guardrails/guards/guard.py +17 -0
  262. opik/guardrails/guards/pii.py +47 -0
  263. opik/guardrails/guards/topic.py +76 -0
  264. opik/guardrails/rest_api_client.py +34 -0
  265. opik/guardrails/schemas.py +24 -0
  266. opik/guardrails/tracing.py +61 -0
  267. opik/healthcheck/__init__.py +2 -1
  268. opik/healthcheck/checks.py +2 -2
  269. opik/healthcheck/rich_representation.py +1 -1
  270. opik/hooks/__init__.py +23 -0
  271. opik/hooks/anonymizer_hook.py +36 -0
  272. opik/hooks/httpx_client_hook.py +112 -0
  273. opik/httpx_client.py +75 -4
  274. opik/id_helpers.py +18 -0
  275. opik/integrations/adk/__init__.py +14 -0
  276. opik/integrations/adk/callback_context_info_extractors.py +32 -0
  277. opik/integrations/adk/graph/__init__.py +0 -0
  278. opik/integrations/adk/graph/mermaid_graph_builder.py +128 -0
  279. opik/integrations/adk/graph/nodes.py +101 -0
  280. opik/integrations/adk/graph/subgraph_edges_builders.py +41 -0
  281. opik/integrations/adk/helpers.py +48 -0
  282. opik/integrations/adk/legacy_opik_tracer.py +381 -0
  283. opik/integrations/adk/opik_tracer.py +370 -0
  284. opik/integrations/adk/patchers/__init__.py +4 -0
  285. opik/integrations/adk/patchers/adk_otel_tracer/__init__.py +0 -0
  286. opik/integrations/adk/patchers/adk_otel_tracer/llm_span_helpers.py +30 -0
  287. opik/integrations/adk/patchers/adk_otel_tracer/opik_adk_otel_tracer.py +201 -0
  288. opik/integrations/adk/patchers/litellm_wrappers.py +91 -0
  289. opik/integrations/adk/patchers/llm_response_wrapper.py +105 -0
  290. opik/integrations/adk/patchers/patchers.py +64 -0
  291. opik/integrations/adk/recursive_callback_injector.py +126 -0
  292. opik/integrations/aisuite/aisuite_decorator.py +8 -3
  293. opik/integrations/aisuite/opik_tracker.py +1 -0
  294. opik/integrations/anthropic/messages_create_decorator.py +8 -3
  295. opik/integrations/anthropic/opik_tracker.py +0 -1
  296. opik/integrations/bedrock/converse/__init__.py +0 -0
  297. opik/integrations/bedrock/converse/chunks_aggregator.py +188 -0
  298. opik/integrations/bedrock/{converse_decorator.py → converse/converse_decorator.py} +18 -8
  299. opik/integrations/bedrock/invoke_agent_decorator.py +12 -7
  300. opik/integrations/bedrock/invoke_model/__init__.py +0 -0
  301. opik/integrations/bedrock/invoke_model/chunks_aggregator/__init__.py +78 -0
  302. opik/integrations/bedrock/invoke_model/chunks_aggregator/api.py +45 -0
  303. opik/integrations/bedrock/invoke_model/chunks_aggregator/base.py +23 -0
  304. opik/integrations/bedrock/invoke_model/chunks_aggregator/claude.py +121 -0
  305. opik/integrations/bedrock/invoke_model/chunks_aggregator/format_detector.py +107 -0
  306. opik/integrations/bedrock/invoke_model/chunks_aggregator/llama.py +108 -0
  307. opik/integrations/bedrock/invoke_model/chunks_aggregator/mistral.py +118 -0
  308. opik/integrations/bedrock/invoke_model/chunks_aggregator/nova.py +99 -0
  309. opik/integrations/bedrock/invoke_model/invoke_model_decorator.py +178 -0
  310. opik/integrations/bedrock/invoke_model/response_types.py +34 -0
  311. opik/integrations/bedrock/invoke_model/stream_wrappers.py +122 -0
  312. opik/integrations/bedrock/invoke_model/usage_converters.py +87 -0
  313. opik/integrations/bedrock/invoke_model/usage_extraction.py +108 -0
  314. opik/integrations/bedrock/opik_tracker.py +43 -4
  315. opik/integrations/bedrock/types.py +19 -0
  316. opik/integrations/crewai/crewai_decorator.py +34 -56
  317. opik/integrations/crewai/opik_tracker.py +31 -10
  318. opik/integrations/crewai/patchers/__init__.py +5 -0
  319. opik/integrations/crewai/patchers/flow.py +118 -0
  320. opik/integrations/crewai/patchers/litellm_completion.py +30 -0
  321. opik/integrations/crewai/patchers/llm_client.py +207 -0
  322. opik/integrations/dspy/callback.py +246 -84
  323. opik/integrations/dspy/graph.py +88 -0
  324. opik/integrations/dspy/parsers.py +168 -0
  325. opik/integrations/genai/encoder_extension.py +2 -6
  326. opik/integrations/genai/generate_content_decorator.py +20 -13
  327. opik/integrations/guardrails/guardrails_decorator.py +4 -0
  328. opik/integrations/harbor/__init__.py +17 -0
  329. opik/integrations/harbor/experiment_service.py +269 -0
  330. opik/integrations/harbor/opik_tracker.py +528 -0
  331. opik/integrations/haystack/constants.py +35 -0
  332. opik/integrations/haystack/converters.py +1 -2
  333. opik/integrations/haystack/opik_connector.py +28 -6
  334. opik/integrations/haystack/opik_span_bridge.py +284 -0
  335. opik/integrations/haystack/opik_tracer.py +124 -222
  336. opik/integrations/langchain/__init__.py +3 -1
  337. opik/integrations/langchain/helpers.py +96 -0
  338. opik/integrations/langchain/langgraph_async_context_bridge.py +131 -0
  339. opik/integrations/langchain/langgraph_tracer_injector.py +88 -0
  340. opik/integrations/langchain/opik_encoder_extension.py +2 -2
  341. opik/integrations/langchain/opik_tracer.py +641 -206
  342. opik/integrations/langchain/provider_usage_extractors/__init__.py +5 -0
  343. opik/integrations/langchain/provider_usage_extractors/anthropic_usage_extractor.py +101 -0
  344. opik/integrations/langchain/provider_usage_extractors/anthropic_vertexai_usage_extractor.py +67 -0
  345. opik/integrations/langchain/provider_usage_extractors/bedrock_usage_extractor.py +94 -0
  346. opik/integrations/langchain/provider_usage_extractors/google_generative_ai_usage_extractor.py +109 -0
  347. opik/integrations/langchain/provider_usage_extractors/groq_usage_extractor.py +92 -0
  348. opik/integrations/langchain/provider_usage_extractors/langchain_run_helpers/__init__.py +15 -0
  349. opik/integrations/langchain/provider_usage_extractors/langchain_run_helpers/helpers.py +134 -0
  350. opik/integrations/langchain/provider_usage_extractors/langchain_run_helpers/langchain_usage.py +163 -0
  351. opik/integrations/langchain/provider_usage_extractors/openai_usage_extractor.py +124 -0
  352. opik/integrations/langchain/provider_usage_extractors/provider_usage_extractor_protocol.py +29 -0
  353. opik/integrations/langchain/provider_usage_extractors/usage_extractor.py +48 -0
  354. opik/integrations/langchain/provider_usage_extractors/vertexai_usage_extractor.py +109 -0
  355. opik/integrations/litellm/__init__.py +5 -0
  356. opik/integrations/litellm/completion_chunks_aggregator.py +115 -0
  357. opik/integrations/litellm/litellm_completion_decorator.py +242 -0
  358. opik/integrations/litellm/opik_tracker.py +43 -0
  359. opik/integrations/litellm/stream_patchers.py +151 -0
  360. opik/integrations/llama_index/callback.py +179 -78
  361. opik/integrations/llama_index/event_parsing_utils.py +29 -9
  362. opik/integrations/openai/agents/opik_tracing_processor.py +204 -32
  363. opik/integrations/openai/agents/span_data_parsers.py +15 -6
  364. opik/integrations/openai/chat_completion_chunks_aggregator.py +1 -1
  365. opik/integrations/openai/{openai_decorator.py → openai_chat_completions_decorator.py} +45 -35
  366. opik/integrations/openai/openai_responses_decorator.py +158 -0
  367. opik/integrations/openai/opik_tracker.py +94 -13
  368. opik/integrations/openai/response_events_aggregator.py +36 -0
  369. opik/integrations/openai/stream_patchers.py +125 -15
  370. opik/integrations/sagemaker/auth.py +5 -1
  371. opik/jsonable_encoder.py +29 -1
  372. opik/llm_usage/base_original_provider_usage.py +15 -8
  373. opik/llm_usage/bedrock_usage.py +8 -2
  374. opik/llm_usage/google_usage.py +6 -1
  375. opik/llm_usage/llm_usage_info.py +6 -0
  376. opik/llm_usage/{openai_usage.py → openai_chat_completions_usage.py} +2 -12
  377. opik/llm_usage/{openai_agent_usage.py → openai_responses_usage.py} +7 -15
  378. opik/llm_usage/opik_usage.py +36 -10
  379. opik/llm_usage/opik_usage_factory.py +35 -19
  380. opik/logging_messages.py +19 -7
  381. opik/message_processing/arguments_utils.py +22 -0
  382. opik/message_processing/batching/base_batcher.py +45 -17
  383. opik/message_processing/batching/batch_manager.py +22 -10
  384. opik/message_processing/batching/batch_manager_constuctors.py +36 -11
  385. opik/message_processing/batching/batchers.py +167 -44
  386. opik/message_processing/batching/flushing_thread.py +0 -3
  387. opik/message_processing/batching/sequence_splitter.py +50 -5
  388. opik/message_processing/emulation/__init__.py +0 -0
  389. opik/message_processing/emulation/emulator_message_processor.py +578 -0
  390. opik/message_processing/emulation/local_emulator_message_processor.py +140 -0
  391. opik/message_processing/emulation/models.py +162 -0
  392. opik/message_processing/encoder_helpers.py +79 -0
  393. opik/message_processing/message_queue.py +79 -0
  394. opik/message_processing/messages.py +154 -12
  395. opik/message_processing/preprocessing/__init__.py +0 -0
  396. opik/message_processing/preprocessing/attachments_preprocessor.py +70 -0
  397. opik/message_processing/preprocessing/batching_preprocessor.py +53 -0
  398. opik/message_processing/preprocessing/constants.py +1 -0
  399. opik/message_processing/preprocessing/file_upload_preprocessor.py +38 -0
  400. opik/message_processing/preprocessing/preprocessor.py +36 -0
  401. opik/message_processing/processors/__init__.py +0 -0
  402. opik/message_processing/processors/attachments_extraction_processor.py +146 -0
  403. opik/message_processing/processors/message_processors.py +92 -0
  404. opik/message_processing/processors/message_processors_chain.py +96 -0
  405. opik/message_processing/processors/online_message_processor.py +324 -0
  406. opik/message_processing/queue_consumer.py +61 -13
  407. opik/message_processing/streamer.py +102 -31
  408. opik/message_processing/streamer_constructors.py +67 -12
  409. opik/opik_context.py +103 -11
  410. opik/plugins/pytest/decorator.py +2 -2
  411. opik/plugins/pytest/experiment_runner.py +3 -2
  412. opik/plugins/pytest/hooks.py +6 -4
  413. opik/rate_limit/__init__.py +0 -0
  414. opik/rate_limit/rate_limit.py +25 -0
  415. opik/rest_api/__init__.py +643 -11
  416. opik/rest_api/alerts/__init__.py +7 -0
  417. opik/rest_api/alerts/client.py +667 -0
  418. opik/rest_api/alerts/raw_client.py +1015 -0
  419. opik/rest_api/alerts/types/__init__.py +7 -0
  420. opik/rest_api/alerts/types/get_webhook_examples_request_alert_type.py +5 -0
  421. opik/rest_api/annotation_queues/__init__.py +4 -0
  422. opik/rest_api/annotation_queues/client.py +668 -0
  423. opik/rest_api/annotation_queues/raw_client.py +1019 -0
  424. opik/rest_api/attachments/__init__.py +17 -0
  425. opik/rest_api/attachments/client.py +752 -0
  426. opik/rest_api/attachments/raw_client.py +1125 -0
  427. opik/rest_api/attachments/types/__init__.py +15 -0
  428. opik/rest_api/attachments/types/attachment_list_request_entity_type.py +5 -0
  429. opik/rest_api/attachments/types/download_attachment_request_entity_type.py +5 -0
  430. opik/rest_api/attachments/types/start_multipart_upload_request_entity_type.py +5 -0
  431. opik/rest_api/attachments/types/upload_attachment_request_entity_type.py +5 -0
  432. opik/rest_api/automation_rule_evaluators/__init__.py +2 -0
  433. opik/rest_api/automation_rule_evaluators/client.py +182 -1162
  434. opik/rest_api/automation_rule_evaluators/raw_client.py +598 -0
  435. opik/rest_api/chat_completions/__init__.py +2 -0
  436. opik/rest_api/chat_completions/client.py +115 -149
  437. opik/rest_api/chat_completions/raw_client.py +339 -0
  438. opik/rest_api/check/__init__.py +2 -0
  439. opik/rest_api/check/client.py +88 -106
  440. opik/rest_api/check/raw_client.py +258 -0
  441. opik/rest_api/client.py +112 -212
  442. opik/rest_api/core/__init__.py +5 -0
  443. opik/rest_api/core/api_error.py +12 -6
  444. opik/rest_api/core/client_wrapper.py +4 -14
  445. opik/rest_api/core/datetime_utils.py +1 -3
  446. opik/rest_api/core/file.py +2 -5
  447. opik/rest_api/core/http_client.py +42 -120
  448. opik/rest_api/core/http_response.py +55 -0
  449. opik/rest_api/core/jsonable_encoder.py +1 -4
  450. opik/rest_api/core/pydantic_utilities.py +79 -147
  451. opik/rest_api/core/query_encoder.py +1 -3
  452. opik/rest_api/core/serialization.py +10 -10
  453. opik/rest_api/dashboards/__init__.py +4 -0
  454. opik/rest_api/dashboards/client.py +462 -0
  455. opik/rest_api/dashboards/raw_client.py +648 -0
  456. opik/rest_api/datasets/__init__.py +5 -0
  457. opik/rest_api/datasets/client.py +1638 -1091
  458. opik/rest_api/datasets/raw_client.py +3389 -0
  459. opik/rest_api/datasets/types/__init__.py +8 -0
  460. opik/rest_api/datasets/types/dataset_update_visibility.py +5 -0
  461. opik/rest_api/datasets/types/dataset_write_visibility.py +5 -0
  462. opik/rest_api/errors/__init__.py +2 -0
  463. opik/rest_api/errors/bad_request_error.py +4 -3
  464. opik/rest_api/errors/conflict_error.py +4 -3
  465. opik/rest_api/errors/forbidden_error.py +4 -2
  466. opik/rest_api/errors/not_found_error.py +4 -3
  467. opik/rest_api/errors/not_implemented_error.py +4 -3
  468. opik/rest_api/errors/unauthorized_error.py +4 -3
  469. opik/rest_api/errors/unprocessable_entity_error.py +4 -3
  470. opik/rest_api/experiments/__init__.py +5 -0
  471. opik/rest_api/experiments/client.py +676 -752
  472. opik/rest_api/experiments/raw_client.py +1872 -0
  473. opik/rest_api/experiments/types/__init__.py +10 -0
  474. opik/rest_api/experiments/types/experiment_update_status.py +5 -0
  475. opik/rest_api/experiments/types/experiment_update_type.py +5 -0
  476. opik/rest_api/experiments/types/experiment_write_status.py +5 -0
  477. opik/rest_api/experiments/types/experiment_write_type.py +5 -0
  478. opik/rest_api/feedback_definitions/__init__.py +2 -0
  479. opik/rest_api/feedback_definitions/client.py +96 -370
  480. opik/rest_api/feedback_definitions/raw_client.py +541 -0
  481. opik/rest_api/feedback_definitions/types/__init__.py +2 -0
  482. opik/rest_api/feedback_definitions/types/find_feedback_definitions_request_type.py +1 -3
  483. opik/rest_api/guardrails/__init__.py +4 -0
  484. opik/rest_api/guardrails/client.py +104 -0
  485. opik/rest_api/guardrails/raw_client.py +102 -0
  486. opik/rest_api/llm_provider_key/__init__.py +2 -0
  487. opik/rest_api/llm_provider_key/client.py +166 -440
  488. opik/rest_api/llm_provider_key/raw_client.py +643 -0
  489. opik/rest_api/llm_provider_key/types/__init__.py +2 -0
  490. opik/rest_api/llm_provider_key/types/provider_api_key_write_provider.py +1 -1
  491. opik/rest_api/manual_evaluation/__init__.py +4 -0
  492. opik/rest_api/manual_evaluation/client.py +347 -0
  493. opik/rest_api/manual_evaluation/raw_client.py +543 -0
  494. opik/rest_api/open_telemetry_ingestion/__init__.py +2 -0
  495. opik/rest_api/open_telemetry_ingestion/client.py +38 -63
  496. opik/rest_api/open_telemetry_ingestion/raw_client.py +88 -0
  497. opik/rest_api/optimizations/__init__.py +7 -0
  498. opik/rest_api/optimizations/client.py +704 -0
  499. opik/rest_api/optimizations/raw_client.py +920 -0
  500. opik/rest_api/optimizations/types/__init__.py +7 -0
  501. opik/rest_api/optimizations/types/optimization_update_status.py +7 -0
  502. opik/rest_api/projects/__init__.py +10 -1
  503. opik/rest_api/projects/client.py +180 -855
  504. opik/rest_api/projects/raw_client.py +1216 -0
  505. opik/rest_api/projects/types/__init__.py +11 -4
  506. opik/rest_api/projects/types/project_metric_request_public_interval.py +1 -3
  507. opik/rest_api/projects/types/project_metric_request_public_metric_type.py +11 -1
  508. opik/rest_api/projects/types/project_update_visibility.py +5 -0
  509. opik/rest_api/projects/types/project_write_visibility.py +5 -0
  510. opik/rest_api/prompts/__init__.py +4 -2
  511. opik/rest_api/prompts/client.py +381 -970
  512. opik/rest_api/prompts/raw_client.py +1634 -0
  513. opik/rest_api/prompts/types/__init__.py +5 -1
  514. opik/rest_api/prompts/types/create_prompt_version_detail_template_structure.py +5 -0
  515. opik/rest_api/prompts/types/prompt_write_template_structure.py +5 -0
  516. opik/rest_api/raw_client.py +156 -0
  517. opik/rest_api/redirect/__init__.py +4 -0
  518. opik/rest_api/redirect/client.py +375 -0
  519. opik/rest_api/redirect/raw_client.py +566 -0
  520. opik/rest_api/service_toggles/__init__.py +4 -0
  521. opik/rest_api/service_toggles/client.py +91 -0
  522. opik/rest_api/service_toggles/raw_client.py +93 -0
  523. opik/rest_api/spans/__init__.py +2 -0
  524. opik/rest_api/spans/client.py +659 -1354
  525. opik/rest_api/spans/raw_client.py +2383 -0
  526. opik/rest_api/spans/types/__init__.py +2 -0
  527. opik/rest_api/spans/types/find_feedback_score_names_1_request_type.py +1 -3
  528. opik/rest_api/spans/types/get_span_stats_request_type.py +1 -3
  529. opik/rest_api/spans/types/get_spans_by_project_request_type.py +1 -3
  530. opik/rest_api/spans/types/span_search_stream_request_public_type.py +1 -3
  531. opik/rest_api/system_usage/__init__.py +2 -0
  532. opik/rest_api/system_usage/client.py +157 -216
  533. opik/rest_api/system_usage/raw_client.py +455 -0
  534. opik/rest_api/traces/__init__.py +2 -0
  535. opik/rest_api/traces/client.py +2102 -1625
  536. opik/rest_api/traces/raw_client.py +4144 -0
  537. opik/rest_api/types/__init__.py +629 -24
  538. opik/rest_api/types/aggregation_data.py +27 -0
  539. opik/rest_api/types/alert.py +33 -0
  540. opik/rest_api/types/alert_alert_type.py +5 -0
  541. opik/rest_api/types/alert_page_public.py +24 -0
  542. opik/rest_api/types/alert_public.py +33 -0
  543. opik/rest_api/types/alert_public_alert_type.py +5 -0
  544. opik/rest_api/types/alert_trigger.py +27 -0
  545. opik/rest_api/types/alert_trigger_config.py +28 -0
  546. opik/rest_api/types/alert_trigger_config_public.py +28 -0
  547. opik/rest_api/types/alert_trigger_config_public_type.py +10 -0
  548. opik/rest_api/types/alert_trigger_config_type.py +10 -0
  549. opik/rest_api/types/alert_trigger_config_write.py +22 -0
  550. opik/rest_api/types/alert_trigger_config_write_type.py +10 -0
  551. opik/rest_api/types/alert_trigger_event_type.py +19 -0
  552. opik/rest_api/types/alert_trigger_public.py +27 -0
  553. opik/rest_api/types/alert_trigger_public_event_type.py +19 -0
  554. opik/rest_api/types/alert_trigger_write.py +23 -0
  555. opik/rest_api/types/alert_trigger_write_event_type.py +19 -0
  556. opik/rest_api/types/alert_write.py +28 -0
  557. opik/rest_api/types/alert_write_alert_type.py +5 -0
  558. opik/rest_api/types/annotation_queue.py +42 -0
  559. opik/rest_api/types/annotation_queue_batch.py +27 -0
  560. opik/rest_api/types/{json_schema_element.py → annotation_queue_item_ids.py} +5 -7
  561. opik/rest_api/types/annotation_queue_page_public.py +28 -0
  562. opik/rest_api/types/annotation_queue_public.py +38 -0
  563. opik/rest_api/types/annotation_queue_public_scope.py +5 -0
  564. opik/rest_api/types/{workspace_metadata.py → annotation_queue_reviewer.py} +6 -7
  565. opik/rest_api/types/annotation_queue_reviewer_public.py +20 -0
  566. opik/rest_api/types/annotation_queue_scope.py +5 -0
  567. opik/rest_api/types/annotation_queue_write.py +31 -0
  568. opik/rest_api/types/annotation_queue_write_scope.py +5 -0
  569. opik/rest_api/types/assistant_message.py +7 -8
  570. opik/rest_api/types/assistant_message_role.py +1 -3
  571. opik/rest_api/types/attachment.py +22 -0
  572. opik/rest_api/types/attachment_page.py +28 -0
  573. opik/rest_api/types/audio_url.py +19 -0
  574. opik/rest_api/types/audio_url_public.py +19 -0
  575. opik/rest_api/types/audio_url_write.py +19 -0
  576. opik/rest_api/types/automation_rule_evaluator.py +160 -0
  577. opik/rest_api/types/automation_rule_evaluator_llm_as_judge.py +6 -6
  578. opik/rest_api/types/automation_rule_evaluator_llm_as_judge_public.py +6 -6
  579. opik/rest_api/types/automation_rule_evaluator_llm_as_judge_write.py +6 -6
  580. opik/rest_api/types/automation_rule_evaluator_object_object_public.py +155 -0
  581. opik/rest_api/types/automation_rule_evaluator_page_public.py +6 -6
  582. opik/rest_api/types/automation_rule_evaluator_public.py +155 -0
  583. opik/rest_api/types/automation_rule_evaluator_span_llm_as_judge.py +22 -0
  584. opik/rest_api/types/automation_rule_evaluator_span_llm_as_judge_public.py +22 -0
  585. opik/rest_api/types/automation_rule_evaluator_span_llm_as_judge_write.py +22 -0
  586. opik/rest_api/types/automation_rule_evaluator_span_user_defined_metric_python.py +22 -0
  587. opik/rest_api/types/automation_rule_evaluator_span_user_defined_metric_python_public.py +22 -0
  588. opik/rest_api/types/automation_rule_evaluator_span_user_defined_metric_python_write.py +22 -0
  589. opik/rest_api/types/automation_rule_evaluator_trace_thread_llm_as_judge.py +22 -0
  590. opik/rest_api/types/automation_rule_evaluator_trace_thread_llm_as_judge_public.py +22 -0
  591. opik/rest_api/types/automation_rule_evaluator_trace_thread_llm_as_judge_write.py +22 -0
  592. opik/rest_api/types/automation_rule_evaluator_trace_thread_user_defined_metric_python.py +22 -0
  593. opik/rest_api/types/automation_rule_evaluator_trace_thread_user_defined_metric_python_public.py +22 -0
  594. opik/rest_api/types/automation_rule_evaluator_trace_thread_user_defined_metric_python_write.py +22 -0
  595. opik/rest_api/types/automation_rule_evaluator_update.py +143 -0
  596. opik/rest_api/types/automation_rule_evaluator_update_llm_as_judge.py +6 -6
  597. opik/rest_api/types/automation_rule_evaluator_update_span_llm_as_judge.py +22 -0
  598. opik/rest_api/types/automation_rule_evaluator_update_span_user_defined_metric_python.py +22 -0
  599. opik/rest_api/types/automation_rule_evaluator_update_trace_thread_llm_as_judge.py +22 -0
  600. opik/rest_api/types/automation_rule_evaluator_update_trace_thread_user_defined_metric_python.py +22 -0
  601. opik/rest_api/types/automation_rule_evaluator_update_user_defined_metric_python.py +6 -6
  602. opik/rest_api/types/automation_rule_evaluator_user_defined_metric_python.py +6 -6
  603. opik/rest_api/types/automation_rule_evaluator_user_defined_metric_python_public.py +6 -6
  604. opik/rest_api/types/automation_rule_evaluator_user_defined_metric_python_write.py +6 -6
  605. opik/rest_api/types/automation_rule_evaluator_write.py +143 -0
  606. opik/rest_api/types/avg_value_stat_public.py +3 -5
  607. opik/rest_api/types/batch_delete.py +3 -5
  608. opik/rest_api/types/batch_delete_by_project.py +20 -0
  609. opik/rest_api/types/bi_information.py +3 -5
  610. opik/rest_api/types/bi_information_response.py +4 -6
  611. opik/rest_api/types/boolean_feedback_definition.py +25 -0
  612. opik/rest_api/types/boolean_feedback_definition_create.py +20 -0
  613. opik/rest_api/types/boolean_feedback_definition_public.py +25 -0
  614. opik/rest_api/types/boolean_feedback_definition_update.py +20 -0
  615. opik/rest_api/types/boolean_feedback_detail.py +29 -0
  616. opik/rest_api/types/boolean_feedback_detail_create.py +29 -0
  617. opik/rest_api/types/boolean_feedback_detail_public.py +29 -0
  618. opik/rest_api/types/boolean_feedback_detail_update.py +29 -0
  619. opik/rest_api/types/categorical_feedback_definition.py +5 -7
  620. opik/rest_api/types/categorical_feedback_definition_create.py +4 -6
  621. opik/rest_api/types/categorical_feedback_definition_public.py +5 -7
  622. opik/rest_api/types/categorical_feedback_definition_update.py +4 -6
  623. opik/rest_api/types/categorical_feedback_detail.py +3 -5
  624. opik/rest_api/types/categorical_feedback_detail_create.py +3 -5
  625. opik/rest_api/types/categorical_feedback_detail_public.py +3 -5
  626. opik/rest_api/types/categorical_feedback_detail_update.py +3 -5
  627. opik/rest_api/types/chat_completion_choice.py +4 -6
  628. opik/rest_api/types/chat_completion_response.py +5 -6
  629. opik/rest_api/types/check.py +22 -0
  630. opik/rest_api/types/{json_node_compare.py → check_name.py} +1 -1
  631. opik/rest_api/types/check_public.py +22 -0
  632. opik/rest_api/types/check_public_name.py +5 -0
  633. opik/rest_api/types/check_public_result.py +5 -0
  634. opik/rest_api/types/check_result.py +5 -0
  635. opik/rest_api/types/chunked_output_json_node.py +4 -6
  636. opik/rest_api/types/chunked_output_json_node_public.py +4 -6
  637. opik/rest_api/types/chunked_output_json_node_public_type.py +6 -10
  638. opik/rest_api/types/chunked_output_json_node_type.py +6 -10
  639. opik/rest_api/types/column.py +8 -10
  640. opik/rest_api/types/column_compare.py +8 -10
  641. opik/rest_api/types/column_public.py +8 -10
  642. opik/rest_api/types/column_types_item.py +1 -3
  643. opik/rest_api/types/comment.py +4 -6
  644. opik/rest_api/types/comment_compare.py +4 -6
  645. opik/rest_api/types/comment_public.py +4 -6
  646. opik/rest_api/types/complete_multipart_upload_request.py +33 -0
  647. opik/rest_api/types/complete_multipart_upload_request_entity_type.py +5 -0
  648. opik/rest_api/types/completion_tokens_details.py +3 -5
  649. opik/rest_api/types/count_value_stat_public.py +3 -5
  650. opik/rest_api/types/dashboard_page_public.py +24 -0
  651. opik/rest_api/types/dashboard_public.py +30 -0
  652. opik/rest_api/types/data_point_double.py +21 -0
  653. opik/rest_api/types/data_point_number_public.py +3 -5
  654. opik/rest_api/types/dataset.py +14 -6
  655. opik/rest_api/types/dataset_expansion.py +42 -0
  656. opik/rest_api/types/dataset_expansion_response.py +39 -0
  657. opik/rest_api/types/dataset_item.py +9 -8
  658. opik/rest_api/types/dataset_item_batch.py +3 -5
  659. opik/rest_api/types/dataset_item_changes_public.py +5 -0
  660. opik/rest_api/types/dataset_item_compare.py +9 -8
  661. opik/rest_api/types/dataset_item_compare_source.py +1 -3
  662. opik/rest_api/types/dataset_item_filter.py +27 -0
  663. opik/rest_api/types/dataset_item_filter_operator.py +21 -0
  664. opik/rest_api/types/dataset_item_page_compare.py +10 -7
  665. opik/rest_api/types/dataset_item_page_public.py +10 -7
  666. opik/rest_api/types/dataset_item_public.py +9 -8
  667. opik/rest_api/types/dataset_item_public_source.py +1 -3
  668. opik/rest_api/types/dataset_item_source.py +1 -3
  669. opik/rest_api/types/dataset_item_update.py +39 -0
  670. opik/rest_api/types/dataset_item_write.py +5 -6
  671. opik/rest_api/types/dataset_item_write_source.py +1 -3
  672. opik/rest_api/types/dataset_page_public.py +9 -6
  673. opik/rest_api/types/dataset_public.py +14 -6
  674. opik/rest_api/types/dataset_public_status.py +5 -0
  675. opik/rest_api/types/dataset_public_visibility.py +5 -0
  676. opik/rest_api/types/dataset_status.py +5 -0
  677. opik/rest_api/types/dataset_version_diff.py +22 -0
  678. opik/rest_api/types/dataset_version_diff_stats.py +24 -0
  679. opik/rest_api/types/dataset_version_page_public.py +23 -0
  680. opik/rest_api/types/dataset_version_public.py +59 -0
  681. opik/rest_api/types/dataset_version_summary.py +46 -0
  682. opik/rest_api/types/dataset_version_summary_public.py +46 -0
  683. opik/rest_api/types/dataset_visibility.py +5 -0
  684. opik/rest_api/types/delete_attachments_request.py +23 -0
  685. opik/rest_api/types/delete_attachments_request_entity_type.py +5 -0
  686. opik/rest_api/types/delete_feedback_score.py +4 -5
  687. opik/rest_api/types/delete_ids_holder.py +19 -0
  688. opik/rest_api/types/delta.py +7 -9
  689. opik/rest_api/types/error_count_with_deviation.py +21 -0
  690. opik/rest_api/types/error_count_with_deviation_detailed.py +21 -0
  691. opik/rest_api/types/error_info.py +3 -5
  692. opik/rest_api/types/error_info_experiment_item_bulk_write_view.py +21 -0
  693. opik/rest_api/types/error_info_public.py +3 -5
  694. opik/rest_api/types/error_info_write.py +3 -5
  695. opik/rest_api/types/error_message.py +3 -5
  696. opik/rest_api/types/error_message_detail.py +3 -5
  697. opik/rest_api/types/error_message_detailed.py +3 -5
  698. opik/rest_api/types/error_message_public.py +3 -5
  699. opik/rest_api/types/experiment.py +21 -10
  700. opik/rest_api/types/experiment_group_aggregations_response.py +20 -0
  701. opik/rest_api/types/experiment_group_response.py +22 -0
  702. opik/rest_api/types/experiment_item.py +14 -11
  703. opik/rest_api/types/experiment_item_bulk_record.py +27 -0
  704. opik/rest_api/types/experiment_item_bulk_record_experiment_item_bulk_write_view.py +27 -0
  705. opik/rest_api/types/experiment_item_bulk_upload.py +27 -0
  706. opik/rest_api/types/experiment_item_compare.py +14 -11
  707. opik/rest_api/types/experiment_item_compare_trace_visibility_mode.py +5 -0
  708. opik/rest_api/types/experiment_item_public.py +6 -6
  709. opik/rest_api/types/experiment_item_public_trace_visibility_mode.py +5 -0
  710. opik/rest_api/types/experiment_item_trace_visibility_mode.py +5 -0
  711. opik/rest_api/types/experiment_page_public.py +9 -6
  712. opik/rest_api/types/experiment_public.py +21 -10
  713. opik/rest_api/types/experiment_public_status.py +5 -0
  714. opik/rest_api/types/experiment_public_type.py +5 -0
  715. opik/rest_api/types/experiment_score.py +20 -0
  716. opik/rest_api/types/experiment_score_public.py +20 -0
  717. opik/rest_api/types/experiment_score_write.py +20 -0
  718. opik/rest_api/types/experiment_status.py +5 -0
  719. opik/rest_api/types/experiment_type.py +5 -0
  720. opik/rest_api/types/export_trace_service_request.py +5 -0
  721. opik/rest_api/types/feedback.py +40 -27
  722. opik/rest_api/types/feedback_create.py +27 -13
  723. opik/rest_api/types/feedback_definition_page_public.py +4 -6
  724. opik/rest_api/types/feedback_object_public.py +40 -27
  725. opik/rest_api/types/feedback_public.py +40 -27
  726. opik/rest_api/types/feedback_score.py +7 -7
  727. opik/rest_api/types/feedback_score_average.py +3 -5
  728. opik/rest_api/types/feedback_score_average_detailed.py +3 -5
  729. opik/rest_api/types/feedback_score_average_public.py +3 -5
  730. opik/rest_api/types/feedback_score_batch.py +4 -6
  731. opik/rest_api/types/feedback_score_batch_item.py +6 -6
  732. opik/rest_api/types/feedback_score_batch_item_source.py +1 -3
  733. opik/rest_api/types/feedback_score_batch_item_thread.py +32 -0
  734. opik/rest_api/types/feedback_score_batch_item_thread_source.py +5 -0
  735. opik/rest_api/types/feedback_score_compare.py +7 -7
  736. opik/rest_api/types/feedback_score_compare_source.py +1 -3
  737. opik/rest_api/types/feedback_score_experiment_item_bulk_write_view.py +31 -0
  738. opik/rest_api/types/feedback_score_experiment_item_bulk_write_view_source.py +5 -0
  739. opik/rest_api/types/feedback_score_names.py +4 -6
  740. opik/rest_api/types/feedback_score_public.py +11 -7
  741. opik/rest_api/types/feedback_score_public_source.py +1 -3
  742. opik/rest_api/types/feedback_score_source.py +1 -3
  743. opik/rest_api/types/feedback_update.py +27 -13
  744. opik/rest_api/types/function.py +4 -7
  745. opik/rest_api/types/function_call.py +3 -5
  746. opik/rest_api/types/group_content.py +19 -0
  747. opik/rest_api/types/group_content_with_aggregations.py +21 -0
  748. opik/rest_api/types/group_detail.py +19 -0
  749. opik/rest_api/types/group_details.py +20 -0
  750. opik/rest_api/types/guardrail.py +34 -0
  751. opik/rest_api/types/guardrail_batch.py +20 -0
  752. opik/rest_api/types/guardrail_name.py +5 -0
  753. opik/rest_api/types/guardrail_result.py +5 -0
  754. opik/rest_api/types/guardrail_write.py +33 -0
  755. opik/rest_api/types/guardrail_write_name.py +5 -0
  756. opik/rest_api/types/guardrail_write_result.py +5 -0
  757. opik/rest_api/types/guardrails_validation.py +21 -0
  758. opik/rest_api/types/guardrails_validation_public.py +21 -0
  759. opik/rest_api/types/ids_holder.py +19 -0
  760. opik/rest_api/types/image_url.py +20 -0
  761. opik/rest_api/types/image_url_public.py +20 -0
  762. opik/rest_api/types/image_url_write.py +20 -0
  763. opik/rest_api/types/json_list_string.py +7 -0
  764. opik/rest_api/types/json_list_string_compare.py +7 -0
  765. opik/rest_api/types/json_list_string_experiment_item_bulk_write_view.py +7 -0
  766. opik/rest_api/types/json_list_string_public.py +7 -0
  767. opik/rest_api/types/json_list_string_write.py +7 -0
  768. opik/rest_api/types/json_schema.py +5 -8
  769. opik/rest_api/types/llm_as_judge_code.py +8 -12
  770. opik/rest_api/types/llm_as_judge_code_public.py +8 -12
  771. opik/rest_api/types/llm_as_judge_code_write.py +8 -12
  772. opik/rest_api/types/llm_as_judge_message.py +9 -7
  773. opik/rest_api/types/llm_as_judge_message_content.py +26 -0
  774. opik/rest_api/types/llm_as_judge_message_content_public.py +26 -0
  775. opik/rest_api/types/llm_as_judge_message_content_write.py +26 -0
  776. opik/rest_api/types/llm_as_judge_message_public.py +9 -7
  777. opik/rest_api/types/llm_as_judge_message_public_role.py +1 -1
  778. opik/rest_api/types/llm_as_judge_message_role.py +1 -1
  779. opik/rest_api/types/llm_as_judge_message_write.py +9 -7
  780. opik/rest_api/types/llm_as_judge_message_write_role.py +1 -1
  781. opik/rest_api/types/llm_as_judge_model_parameters.py +6 -5
  782. opik/rest_api/types/llm_as_judge_model_parameters_public.py +6 -5
  783. opik/rest_api/types/llm_as_judge_model_parameters_write.py +6 -5
  784. opik/rest_api/types/llm_as_judge_output_schema.py +4 -6
  785. opik/rest_api/types/llm_as_judge_output_schema_public.py +4 -6
  786. opik/rest_api/types/llm_as_judge_output_schema_public_type.py +1 -3
  787. opik/rest_api/types/llm_as_judge_output_schema_type.py +1 -3
  788. opik/rest_api/types/llm_as_judge_output_schema_write.py +4 -6
  789. opik/rest_api/types/llm_as_judge_output_schema_write_type.py +1 -3
  790. opik/rest_api/types/log_item.py +5 -7
  791. opik/rest_api/types/log_item_level.py +1 -3
  792. opik/rest_api/types/log_page.py +4 -6
  793. opik/rest_api/types/manual_evaluation_request.py +38 -0
  794. opik/rest_api/types/manual_evaluation_request_entity_type.py +5 -0
  795. opik/rest_api/types/manual_evaluation_response.py +27 -0
  796. opik/rest_api/types/multipart_upload_part.py +20 -0
  797. opik/rest_api/types/numerical_feedback_definition.py +5 -7
  798. opik/rest_api/types/numerical_feedback_definition_create.py +4 -6
  799. opik/rest_api/types/numerical_feedback_definition_public.py +5 -7
  800. opik/rest_api/types/numerical_feedback_definition_update.py +4 -6
  801. opik/rest_api/types/numerical_feedback_detail.py +3 -5
  802. opik/rest_api/types/numerical_feedback_detail_create.py +3 -5
  803. opik/rest_api/types/numerical_feedback_detail_public.py +3 -5
  804. opik/rest_api/types/numerical_feedback_detail_update.py +3 -5
  805. opik/rest_api/types/optimization.py +37 -0
  806. opik/rest_api/types/optimization_page_public.py +28 -0
  807. opik/rest_api/types/optimization_public.py +37 -0
  808. opik/rest_api/types/optimization_public_status.py +7 -0
  809. opik/rest_api/types/optimization_status.py +7 -0
  810. opik/rest_api/types/optimization_studio_config.py +27 -0
  811. opik/rest_api/types/optimization_studio_config_public.py +27 -0
  812. opik/rest_api/types/optimization_studio_config_write.py +27 -0
  813. opik/rest_api/types/optimization_studio_log.py +22 -0
  814. opik/rest_api/types/optimization_write.py +30 -0
  815. opik/rest_api/types/optimization_write_status.py +7 -0
  816. opik/rest_api/types/page_columns.py +4 -6
  817. opik/rest_api/types/percentage_value_stat_public.py +4 -6
  818. opik/rest_api/types/percentage_values.py +8 -16
  819. opik/rest_api/types/percentage_values_detailed.py +8 -16
  820. opik/rest_api/types/percentage_values_public.py +8 -16
  821. opik/rest_api/types/project.py +12 -7
  822. opik/rest_api/types/project_detailed.py +12 -7
  823. opik/rest_api/types/project_detailed_visibility.py +5 -0
  824. opik/rest_api/types/project_metric_response_public.py +5 -9
  825. opik/rest_api/types/project_metric_response_public_interval.py +1 -3
  826. opik/rest_api/types/project_metric_response_public_metric_type.py +11 -1
  827. opik/rest_api/types/project_page_public.py +8 -10
  828. opik/rest_api/types/project_public.py +6 -6
  829. opik/rest_api/types/project_public_visibility.py +5 -0
  830. opik/rest_api/types/project_reference.py +31 -0
  831. opik/rest_api/types/project_reference_public.py +31 -0
  832. opik/rest_api/types/project_stat_item_object_public.py +8 -17
  833. opik/rest_api/types/project_stats_public.py +4 -6
  834. opik/rest_api/types/project_stats_summary.py +4 -6
  835. opik/rest_api/types/project_stats_summary_item.py +9 -6
  836. opik/rest_api/types/project_visibility.py +5 -0
  837. opik/rest_api/types/prompt.py +12 -7
  838. opik/rest_api/types/prompt_detail.py +12 -7
  839. opik/rest_api/types/prompt_detail_template_structure.py +5 -0
  840. opik/rest_api/types/prompt_page_public.py +9 -6
  841. opik/rest_api/types/prompt_public.py +11 -6
  842. opik/rest_api/types/prompt_public_template_structure.py +5 -0
  843. opik/rest_api/types/prompt_template_structure.py +5 -0
  844. opik/rest_api/types/prompt_tokens_details.py +19 -0
  845. opik/rest_api/types/prompt_version.py +7 -6
  846. opik/rest_api/types/prompt_version_detail.py +7 -6
  847. opik/rest_api/types/prompt_version_detail_template_structure.py +5 -0
  848. opik/rest_api/types/prompt_version_link.py +4 -5
  849. opik/rest_api/types/prompt_version_link_public.py +4 -5
  850. opik/rest_api/types/prompt_version_link_write.py +3 -5
  851. opik/rest_api/types/prompt_version_page_public.py +9 -6
  852. opik/rest_api/types/prompt_version_public.py +7 -6
  853. opik/rest_api/types/prompt_version_public_template_structure.py +5 -0
  854. opik/rest_api/types/prompt_version_template_structure.py +5 -0
  855. opik/rest_api/types/prompt_version_update.py +33 -0
  856. opik/rest_api/types/provider_api_key.py +18 -8
  857. opik/rest_api/types/provider_api_key_page_public.py +27 -0
  858. opik/rest_api/types/provider_api_key_provider.py +1 -1
  859. opik/rest_api/types/provider_api_key_public.py +18 -8
  860. opik/rest_api/types/provider_api_key_public_provider.py +1 -1
  861. opik/rest_api/types/response_format.py +5 -7
  862. opik/rest_api/types/response_format_type.py +1 -3
  863. opik/rest_api/types/result.py +21 -0
  864. opik/rest_api/types/results_number_public.py +4 -6
  865. opik/rest_api/types/score_name.py +4 -5
  866. opik/rest_api/types/service_toggles_config.py +44 -0
  867. opik/rest_api/types/span.py +13 -15
  868. opik/rest_api/types/span_batch.py +4 -6
  869. opik/rest_api/types/span_enrichment_options.py +31 -0
  870. opik/rest_api/types/span_experiment_item_bulk_write_view.py +39 -0
  871. opik/rest_api/types/span_experiment_item_bulk_write_view_type.py +5 -0
  872. opik/rest_api/types/span_filter.py +23 -0
  873. opik/rest_api/types/span_filter_operator.py +21 -0
  874. opik/rest_api/types/span_filter_public.py +4 -6
  875. opik/rest_api/types/span_filter_public_operator.py +2 -0
  876. opik/rest_api/types/span_filter_write.py +23 -0
  877. opik/rest_api/types/span_filter_write_operator.py +21 -0
  878. opik/rest_api/types/span_llm_as_judge_code.py +27 -0
  879. opik/rest_api/types/span_llm_as_judge_code_public.py +27 -0
  880. opik/rest_api/types/span_llm_as_judge_code_write.py +27 -0
  881. opik/rest_api/types/span_page_public.py +9 -6
  882. opik/rest_api/types/span_public.py +19 -16
  883. opik/rest_api/types/span_public_type.py +1 -1
  884. opik/rest_api/types/span_type.py +1 -1
  885. opik/rest_api/types/span_update.py +46 -0
  886. opik/rest_api/types/span_update_type.py +5 -0
  887. opik/rest_api/types/span_user_defined_metric_python_code.py +20 -0
  888. opik/rest_api/types/span_user_defined_metric_python_code_public.py +20 -0
  889. opik/rest_api/types/span_user_defined_metric_python_code_write.py +20 -0
  890. opik/rest_api/types/span_write.py +13 -14
  891. opik/rest_api/types/span_write_type.py +1 -1
  892. opik/rest_api/types/spans_count_response.py +20 -0
  893. opik/rest_api/types/start_multipart_upload_response.py +20 -0
  894. opik/rest_api/types/stream_options.py +3 -5
  895. opik/rest_api/types/studio_evaluation.py +20 -0
  896. opik/rest_api/types/studio_evaluation_public.py +20 -0
  897. opik/rest_api/types/studio_evaluation_write.py +20 -0
  898. opik/rest_api/types/studio_llm_model.py +21 -0
  899. opik/rest_api/types/studio_llm_model_public.py +21 -0
  900. opik/rest_api/types/studio_llm_model_write.py +21 -0
  901. opik/rest_api/types/studio_message.py +20 -0
  902. opik/rest_api/types/studio_message_public.py +20 -0
  903. opik/rest_api/types/studio_message_write.py +20 -0
  904. opik/rest_api/types/studio_metric.py +21 -0
  905. opik/rest_api/types/studio_metric_public.py +21 -0
  906. opik/rest_api/types/studio_metric_write.py +21 -0
  907. opik/rest_api/types/studio_optimizer.py +21 -0
  908. opik/rest_api/types/studio_optimizer_public.py +21 -0
  909. opik/rest_api/types/studio_optimizer_write.py +21 -0
  910. opik/rest_api/types/studio_prompt.py +20 -0
  911. opik/rest_api/types/studio_prompt_public.py +20 -0
  912. opik/rest_api/types/studio_prompt_write.py +20 -0
  913. opik/rest_api/types/tool.py +4 -6
  914. opik/rest_api/types/tool_call.py +4 -6
  915. opik/rest_api/types/trace.py +26 -12
  916. opik/rest_api/types/trace_batch.py +4 -6
  917. opik/rest_api/types/trace_count_response.py +4 -6
  918. opik/rest_api/types/trace_enrichment_options.py +32 -0
  919. opik/rest_api/types/trace_experiment_item_bulk_write_view.py +41 -0
  920. opik/rest_api/types/trace_filter.py +23 -0
  921. opik/rest_api/types/trace_filter_operator.py +21 -0
  922. opik/rest_api/types/trace_filter_public.py +23 -0
  923. opik/rest_api/types/trace_filter_public_operator.py +21 -0
  924. opik/rest_api/types/trace_filter_write.py +23 -0
  925. opik/rest_api/types/trace_filter_write_operator.py +21 -0
  926. opik/rest_api/types/trace_page_public.py +8 -10
  927. opik/rest_api/types/trace_public.py +27 -13
  928. opik/rest_api/types/trace_public_visibility_mode.py +5 -0
  929. opik/rest_api/types/trace_thread.py +18 -9
  930. opik/rest_api/types/trace_thread_filter.py +23 -0
  931. opik/rest_api/types/trace_thread_filter_operator.py +21 -0
  932. opik/rest_api/types/trace_thread_filter_public.py +23 -0
  933. opik/rest_api/types/trace_thread_filter_public_operator.py +21 -0
  934. opik/rest_api/types/trace_thread_filter_write.py +23 -0
  935. opik/rest_api/types/trace_thread_filter_write_operator.py +21 -0
  936. opik/rest_api/types/trace_thread_identifier.py +22 -0
  937. opik/rest_api/types/trace_thread_llm_as_judge_code.py +26 -0
  938. opik/rest_api/types/trace_thread_llm_as_judge_code_public.py +26 -0
  939. opik/rest_api/types/trace_thread_llm_as_judge_code_write.py +26 -0
  940. opik/rest_api/types/trace_thread_page.py +9 -6
  941. opik/rest_api/types/trace_thread_status.py +5 -0
  942. opik/rest_api/types/trace_thread_update.py +19 -0
  943. opik/rest_api/types/trace_thread_user_defined_metric_python_code.py +19 -0
  944. opik/rest_api/types/trace_thread_user_defined_metric_python_code_public.py +19 -0
  945. opik/rest_api/types/trace_thread_user_defined_metric_python_code_write.py +19 -0
  946. opik/rest_api/types/trace_update.py +39 -0
  947. opik/rest_api/types/trace_visibility_mode.py +5 -0
  948. opik/rest_api/types/trace_write.py +10 -11
  949. opik/rest_api/types/usage.py +6 -6
  950. opik/rest_api/types/user_defined_metric_python_code.py +3 -5
  951. opik/rest_api/types/user_defined_metric_python_code_public.py +3 -5
  952. opik/rest_api/types/user_defined_metric_python_code_write.py +3 -5
  953. opik/rest_api/types/value_entry.py +27 -0
  954. opik/rest_api/types/value_entry_compare.py +27 -0
  955. opik/rest_api/types/value_entry_compare_source.py +5 -0
  956. opik/rest_api/types/value_entry_experiment_item_bulk_write_view.py +27 -0
  957. opik/rest_api/types/value_entry_experiment_item_bulk_write_view_source.py +5 -0
  958. opik/rest_api/types/value_entry_public.py +27 -0
  959. opik/rest_api/types/value_entry_public_source.py +5 -0
  960. opik/rest_api/types/value_entry_source.py +5 -0
  961. opik/rest_api/types/video_url.py +19 -0
  962. opik/rest_api/types/video_url_public.py +19 -0
  963. opik/rest_api/types/video_url_write.py +19 -0
  964. opik/rest_api/types/webhook.py +28 -0
  965. opik/rest_api/types/webhook_examples.py +19 -0
  966. opik/rest_api/types/webhook_public.py +28 -0
  967. opik/rest_api/types/webhook_test_result.py +23 -0
  968. opik/rest_api/types/webhook_test_result_status.py +5 -0
  969. opik/rest_api/types/webhook_write.py +23 -0
  970. opik/rest_api/types/welcome_wizard_tracking.py +22 -0
  971. opik/rest_api/types/workspace_configuration.py +27 -0
  972. opik/rest_api/types/workspace_metric_request.py +24 -0
  973. opik/rest_api/types/workspace_metric_response.py +20 -0
  974. opik/rest_api/types/workspace_metrics_summary_request.py +23 -0
  975. opik/rest_api/types/workspace_metrics_summary_response.py +20 -0
  976. opik/rest_api/types/workspace_name_holder.py +19 -0
  977. opik/rest_api/types/workspace_spans_count.py +20 -0
  978. opik/rest_api/types/workspace_trace_count.py +3 -5
  979. opik/rest_api/welcome_wizard/__init__.py +4 -0
  980. opik/rest_api/welcome_wizard/client.py +195 -0
  981. opik/rest_api/welcome_wizard/raw_client.py +208 -0
  982. opik/rest_api/workspaces/__init__.py +2 -0
  983. opik/rest_api/workspaces/client.py +550 -77
  984. opik/rest_api/workspaces/raw_client.py +923 -0
  985. opik/rest_client_configurator/api.py +1 -0
  986. opik/rest_client_configurator/retry_decorator.py +1 -0
  987. opik/s3_httpx_client.py +67 -0
  988. opik/simulation/__init__.py +6 -0
  989. opik/simulation/simulated_user.py +99 -0
  990. opik/simulation/simulator.py +108 -0
  991. opik/synchronization.py +11 -24
  992. opik/tracing_runtime_config.py +48 -0
  993. opik/types.py +48 -2
  994. opik/url_helpers.py +13 -3
  995. opik/validation/chat_prompt_messages.py +241 -0
  996. opik/validation/feedback_score.py +4 -5
  997. opik/validation/parameter.py +122 -0
  998. opik/validation/parameters_validator.py +175 -0
  999. opik/validation/validator.py +30 -2
  1000. opik/validation/validator_helpers.py +147 -0
  1001. opik-1.9.71.dist-info/METADATA +370 -0
  1002. opik-1.9.71.dist-info/RECORD +1110 -0
  1003. {opik-1.6.4.dist-info → opik-1.9.71.dist-info}/WHEEL +1 -1
  1004. opik-1.9.71.dist-info/licenses/LICENSE +203 -0
  1005. opik/api_objects/prompt/prompt.py +0 -107
  1006. opik/api_objects/prompt/prompt_template.py +0 -35
  1007. opik/cli.py +0 -193
  1008. opik/evaluation/metrics/models.py +0 -8
  1009. opik/hooks.py +0 -13
  1010. opik/integrations/bedrock/chunks_aggregator.py +0 -55
  1011. opik/integrations/bedrock/helpers.py +0 -8
  1012. opik/integrations/langchain/google_run_helpers.py +0 -75
  1013. opik/integrations/langchain/openai_run_helpers.py +0 -122
  1014. opik/message_processing/message_processors.py +0 -203
  1015. opik/rest_api/types/delta_role.py +0 -7
  1016. opik/rest_api/types/json_object_schema.py +0 -34
  1017. opik-1.6.4.dist-info/METADATA +0 -270
  1018. opik-1.6.4.dist-info/RECORD +0 -507
  1019. /opik/integrations/bedrock/{stream_wrappers.py → converse/stream_wrappers.py} +0 -0
  1020. {opik-1.6.4.dist-info → opik-1.9.71.dist-info}/entry_points.txt +0 -0
  1021. {opik-1.6.4.dist-info → opik-1.9.71.dist-info}/top_level.txt +0 -0
@@ -1,714 +1,43 @@
1
1
  # This file was auto-generated by Fern from our API Definition.
2
2
 
3
3
  import typing
4
- from ..core.client_wrapper import SyncClientWrapper
5
- from ..core.request_options import RequestOptions
6
- from ..types.automation_rule_evaluator_page_public import (
7
- AutomationRuleEvaluatorPagePublic,
8
- )
9
- from ..core.pydantic_utilities import parse_obj_as
10
- from json.decoder import JSONDecodeError
11
- from ..core.api_error import ApiError
12
- from ..core.jsonable_encoder import jsonable_encoder
13
- from ..types.log_page import LogPage
14
- from ..core.client_wrapper import AsyncClientWrapper
15
-
16
- # this is used as the default value for optional parameters
17
- OMIT = typing.cast(typing.Any, ...)
18
-
19
-
20
- class AutomationRuleEvaluatorsClient:
21
- def __init__(self, *, client_wrapper: SyncClientWrapper):
22
- self._client_wrapper = client_wrapper
23
-
24
- def find_evaluators(
25
- self,
26
- *,
27
- project_id: typing.Optional[str] = None,
28
- name: typing.Optional[str] = None,
29
- page: typing.Optional[int] = None,
30
- size: typing.Optional[int] = None,
31
- request_options: typing.Optional[RequestOptions] = None,
32
- ) -> AutomationRuleEvaluatorPagePublic:
33
- """
34
- Find project Evaluators
35
-
36
- Parameters
37
- ----------
38
- project_id : typing.Optional[str]
39
-
40
- name : typing.Optional[str]
41
-
42
- page : typing.Optional[int]
43
-
44
- size : typing.Optional[int]
45
-
46
- request_options : typing.Optional[RequestOptions]
47
- Request-specific configuration.
48
-
49
- Returns
50
- -------
51
- AutomationRuleEvaluatorPagePublic
52
- Evaluators resource
53
-
54
- Examples
55
- --------
56
- from Opik import OpikApi
57
-
58
- client = OpikApi(
59
- api_key="YOUR_API_KEY",
60
- workspace_name="YOUR_WORKSPACE_NAME",
61
- )
62
- client.automation_rule_evaluators.find_evaluators()
63
- """
64
- _response = self._client_wrapper.httpx_client.request(
65
- "v1/private/automations/evaluators",
66
- method="GET",
67
- params={
68
- "project_id": project_id,
69
- "name": name,
70
- "page": page,
71
- "size": size,
72
- },
73
- request_options=request_options,
74
- )
75
- try:
76
- if 200 <= _response.status_code < 300:
77
- return typing.cast(
78
- AutomationRuleEvaluatorPagePublic,
79
- parse_obj_as(
80
- type_=AutomationRuleEvaluatorPagePublic, # type: ignore
81
- object_=_response.json(),
82
- ),
83
- )
84
- _response_json = _response.json()
85
- except JSONDecodeError:
86
- raise ApiError(status_code=_response.status_code, body=_response.text)
87
- raise ApiError(status_code=_response.status_code, body=_response_json)
88
-
89
- def create_automation_rule_evaluator(
90
- self,
91
- *,
92
- request: typing.Optional[typing.Any] = None,
93
- request_options: typing.Optional[RequestOptions] = None,
94
- ) -> None:
95
- """
96
- Create automation rule evaluator
97
-
98
- Parameters
99
- ----------
100
- request : typing.Optional[typing.Any]
101
-
102
- request_options : typing.Optional[RequestOptions]
103
- Request-specific configuration.
104
-
105
- Returns
106
- -------
107
- None
108
-
109
- Examples
110
- --------
111
- from Opik import OpikApi
112
-
113
- client = OpikApi(
114
- api_key="YOUR_API_KEY",
115
- workspace_name="YOUR_WORKSPACE_NAME",
116
- )
117
- client.automation_rule_evaluators.create_automation_rule_evaluator(
118
- request={"key": "value"},
119
- )
120
- """
121
- _response = self._client_wrapper.httpx_client.request(
122
- "v1/private/automations/evaluators",
123
- method="POST",
124
- json=request,
125
- request_options=request_options,
126
- omit=OMIT,
127
- )
128
- try:
129
- if 200 <= _response.status_code < 300:
130
- return
131
- _response_json = _response.json()
132
- except JSONDecodeError:
133
- raise ApiError(status_code=_response.status_code, body=_response.text)
134
- raise ApiError(status_code=_response.status_code, body=_response_json)
135
-
136
- def delete_automation_rule_evaluator_batch(
137
- self,
138
- *,
139
- project_id: str,
140
- ids: typing.Sequence[str],
141
- request_options: typing.Optional[RequestOptions] = None,
142
- ) -> None:
143
- """
144
- Delete automation rule evaluators batch
145
-
146
- Parameters
147
- ----------
148
- project_id : str
149
-
150
- ids : typing.Sequence[str]
151
-
152
- request_options : typing.Optional[RequestOptions]
153
- Request-specific configuration.
154
-
155
- Returns
156
- -------
157
- None
158
-
159
- Examples
160
- --------
161
- from Opik import OpikApi
162
-
163
- client = OpikApi(
164
- api_key="YOUR_API_KEY",
165
- workspace_name="YOUR_WORKSPACE_NAME",
166
- )
167
- client.automation_rule_evaluators.delete_automation_rule_evaluator_batch(
168
- project_id="project_id",
169
- ids=["ids"],
170
- )
171
- """
172
- _response = self._client_wrapper.httpx_client.request(
173
- "v1/private/automations/evaluators/delete",
174
- method="POST",
175
- params={
176
- "project_id": project_id,
177
- },
178
- json={
179
- "ids": ids,
180
- },
181
- request_options=request_options,
182
- omit=OMIT,
183
- )
184
- try:
185
- if 200 <= _response.status_code < 300:
186
- return
187
- _response_json = _response.json()
188
- except JSONDecodeError:
189
- raise ApiError(status_code=_response.status_code, body=_response.text)
190
- raise ApiError(status_code=_response.status_code, body=_response_json)
191
-
192
- def get_evaluator_by_id(
193
- self,
194
- id: str,
195
- *,
196
- project_id: typing.Optional[str] = None,
197
- request_options: typing.Optional[RequestOptions] = None,
198
- ) -> typing.Optional[typing.Any]:
199
- """
200
- Get automation rule by id
201
-
202
- Parameters
203
- ----------
204
- id : str
205
-
206
- project_id : typing.Optional[str]
207
-
208
- request_options : typing.Optional[RequestOptions]
209
- Request-specific configuration.
210
-
211
- Returns
212
- -------
213
- typing.Optional[typing.Any]
214
- Automation Rule resource
215
-
216
- Examples
217
- --------
218
- from Opik import OpikApi
219
-
220
- client = OpikApi(
221
- api_key="YOUR_API_KEY",
222
- workspace_name="YOUR_WORKSPACE_NAME",
223
- )
224
- client.automation_rule_evaluators.get_evaluator_by_id(
225
- id="id",
226
- )
227
- """
228
- _response = self._client_wrapper.httpx_client.request(
229
- f"v1/private/automations/evaluators/{jsonable_encoder(id)}",
230
- method="GET",
231
- params={
232
- "project_id": project_id,
233
- },
234
- request_options=request_options,
235
- )
236
- try:
237
- if 200 <= _response.status_code < 300:
238
- return typing.cast(
239
- typing.Optional[typing.Any],
240
- parse_obj_as(
241
- type_=typing.Optional[typing.Any], # type: ignore
242
- object_=_response.json(),
243
- ),
244
- )
245
- _response_json = _response.json()
246
- except JSONDecodeError:
247
- raise ApiError(status_code=_response.status_code, body=_response.text)
248
- raise ApiError(status_code=_response.status_code, body=_response_json)
249
-
250
- def update_automation_rule_evaluator(
251
- self,
252
- id: str,
253
- *,
254
- request: typing.Optional[typing.Any] = None,
255
- request_options: typing.Optional[RequestOptions] = None,
256
- ) -> None:
257
- """
258
- Update Automation Rule Evaluator by id
259
-
260
- Parameters
261
- ----------
262
- id : str
263
-
264
- request : typing.Optional[typing.Any]
265
-
266
- request_options : typing.Optional[RequestOptions]
267
- Request-specific configuration.
268
-
269
- Returns
270
- -------
271
- None
272
-
273
- Examples
274
- --------
275
- from Opik import OpikApi
276
-
277
- client = OpikApi(
278
- api_key="YOUR_API_KEY",
279
- workspace_name="YOUR_WORKSPACE_NAME",
280
- )
281
- client.automation_rule_evaluators.update_automation_rule_evaluator(
282
- id="id",
283
- request={"key": "value"},
284
- )
285
- """
286
- _response = self._client_wrapper.httpx_client.request(
287
- f"v1/private/automations/evaluators/{jsonable_encoder(id)}",
288
- method="PATCH",
289
- json=request,
290
- request_options=request_options,
291
- omit=OMIT,
292
- )
293
- try:
294
- if 200 <= _response.status_code < 300:
295
- return
296
- _response_json = _response.json()
297
- except JSONDecodeError:
298
- raise ApiError(status_code=_response.status_code, body=_response.text)
299
- raise ApiError(status_code=_response.status_code, body=_response_json)
300
-
301
- def get_evaluator_logs_by_id(
302
- self,
303
- id: str,
304
- *,
305
- size: typing.Optional[int] = None,
306
- request_options: typing.Optional[RequestOptions] = None,
307
- ) -> LogPage:
308
- """
309
- Get automation rule evaluator logs by id
310
-
311
- Parameters
312
- ----------
313
- id : str
314
-
315
- size : typing.Optional[int]
316
-
317
- request_options : typing.Optional[RequestOptions]
318
- Request-specific configuration.
319
-
320
- Returns
321
- -------
322
- LogPage
323
- Automation rule evaluator logs resource
324
-
325
- Examples
326
- --------
327
- from Opik import OpikApi
328
-
329
- client = OpikApi(
330
- api_key="YOUR_API_KEY",
331
- workspace_name="YOUR_WORKSPACE_NAME",
332
- )
333
- client.automation_rule_evaluators.get_evaluator_logs_by_id(
334
- id="id",
335
- )
336
- """
337
- _response = self._client_wrapper.httpx_client.request(
338
- f"v1/private/automations/evaluators/{jsonable_encoder(id)}/logs",
339
- method="GET",
340
- params={
341
- "size": size,
342
- },
343
- request_options=request_options,
344
- )
345
- try:
346
- if 200 <= _response.status_code < 300:
347
- return typing.cast(
348
- LogPage,
349
- parse_obj_as(
350
- type_=LogPage, # type: ignore
351
- object_=_response.json(),
352
- ),
353
- )
354
- _response_json = _response.json()
355
- except JSONDecodeError:
356
- raise ApiError(status_code=_response.status_code, body=_response.text)
357
- raise ApiError(status_code=_response.status_code, body=_response_json)
358
-
359
- def find_evaluators_deprecated(
360
- self,
361
- project_id: str,
362
- *,
363
- name: typing.Optional[str] = None,
364
- page: typing.Optional[int] = None,
365
- size: typing.Optional[int] = None,
366
- request_options: typing.Optional[RequestOptions] = None,
367
- ) -> AutomationRuleEvaluatorPagePublic:
368
- """
369
- Find project Evaluators Deprecated
370
-
371
- Parameters
372
- ----------
373
- project_id : str
374
-
375
- name : typing.Optional[str]
376
-
377
- page : typing.Optional[int]
378
-
379
- size : typing.Optional[int]
380
-
381
- request_options : typing.Optional[RequestOptions]
382
- Request-specific configuration.
383
-
384
- Returns
385
- -------
386
- AutomationRuleEvaluatorPagePublic
387
- Evaluators resource
388
-
389
- Examples
390
- --------
391
- from Opik import OpikApi
392
-
393
- client = OpikApi(
394
- api_key="YOUR_API_KEY",
395
- workspace_name="YOUR_WORKSPACE_NAME",
396
- )
397
- client.automation_rule_evaluators.find_evaluators_deprecated(
398
- project_id="projectId",
399
- )
400
- """
401
- _response = self._client_wrapper.httpx_client.request(
402
- f"v1/private/automations/projects/{jsonable_encoder(project_id)}/evaluators",
403
- method="GET",
404
- params={
405
- "name": name,
406
- "page": page,
407
- "size": size,
408
- },
409
- request_options=request_options,
410
- )
411
- try:
412
- if 200 <= _response.status_code < 300:
413
- return typing.cast(
414
- AutomationRuleEvaluatorPagePublic,
415
- parse_obj_as(
416
- type_=AutomationRuleEvaluatorPagePublic, # type: ignore
417
- object_=_response.json(),
418
- ),
419
- )
420
- _response_json = _response.json()
421
- except JSONDecodeError:
422
- raise ApiError(status_code=_response.status_code, body=_response.text)
423
- raise ApiError(status_code=_response.status_code, body=_response_json)
424
-
425
- def create_automation_rule_evaluator_deprecated(
426
- self,
427
- project_id: str,
428
- *,
429
- request: typing.Optional[typing.Any] = None,
430
- request_options: typing.Optional[RequestOptions] = None,
431
- ) -> None:
432
- """
433
- Create automation rule evaluator Deprecated
434
-
435
- Parameters
436
- ----------
437
- project_id : str
438
-
439
- request : typing.Optional[typing.Any]
440
-
441
- request_options : typing.Optional[RequestOptions]
442
- Request-specific configuration.
443
-
444
- Returns
445
- -------
446
- None
447
-
448
- Examples
449
- --------
450
- from Opik import OpikApi
451
-
452
- client = OpikApi(
453
- api_key="YOUR_API_KEY",
454
- workspace_name="YOUR_WORKSPACE_NAME",
455
- )
456
- client.automation_rule_evaluators.create_automation_rule_evaluator_deprecated(
457
- project_id="projectId",
458
- request={"key": "value"},
459
- )
460
- """
461
- _response = self._client_wrapper.httpx_client.request(
462
- f"v1/private/automations/projects/{jsonable_encoder(project_id)}/evaluators",
463
- method="POST",
464
- json=request,
465
- request_options=request_options,
466
- omit=OMIT,
467
- )
468
- try:
469
- if 200 <= _response.status_code < 300:
470
- return
471
- _response_json = _response.json()
472
- except JSONDecodeError:
473
- raise ApiError(status_code=_response.status_code, body=_response.text)
474
- raise ApiError(status_code=_response.status_code, body=_response_json)
475
-
476
- def delete_automation_rule_evaluator_batch_deprecated(
477
- self,
478
- project_id: str,
479
- *,
480
- ids: typing.Sequence[str],
481
- request_options: typing.Optional[RequestOptions] = None,
482
- ) -> None:
483
- """
484
- Delete automation rule evaluators batch Deprecated
485
-
486
- Parameters
487
- ----------
488
- project_id : str
489
-
490
- ids : typing.Sequence[str]
491
-
492
- request_options : typing.Optional[RequestOptions]
493
- Request-specific configuration.
494
-
495
- Returns
496
- -------
497
- None
498
-
499
- Examples
500
- --------
501
- from Opik import OpikApi
502
-
503
- client = OpikApi(
504
- api_key="YOUR_API_KEY",
505
- workspace_name="YOUR_WORKSPACE_NAME",
506
- )
507
- client.automation_rule_evaluators.delete_automation_rule_evaluator_batch_deprecated(
508
- project_id="projectId",
509
- ids=["ids"],
510
- )
511
- """
512
- _response = self._client_wrapper.httpx_client.request(
513
- f"v1/private/automations/projects/{jsonable_encoder(project_id)}/evaluators/delete",
514
- method="POST",
515
- json={
516
- "ids": ids,
517
- },
518
- request_options=request_options,
519
- omit=OMIT,
520
- )
521
- try:
522
- if 200 <= _response.status_code < 300:
523
- return
524
- _response_json = _response.json()
525
- except JSONDecodeError:
526
- raise ApiError(status_code=_response.status_code, body=_response.text)
527
- raise ApiError(status_code=_response.status_code, body=_response_json)
528
-
529
- def get_evaluator_by_id_deprecated(
530
- self,
531
- project_id: str,
532
- id: str,
533
- *,
534
- request_options: typing.Optional[RequestOptions] = None,
535
- ) -> typing.Optional[typing.Any]:
536
- """
537
- Get automation rule by id Deprecated
538
-
539
- Parameters
540
- ----------
541
- project_id : str
542
-
543
- id : str
544
-
545
- request_options : typing.Optional[RequestOptions]
546
- Request-specific configuration.
547
-
548
- Returns
549
- -------
550
- typing.Optional[typing.Any]
551
- Automation Rule resource
552
-
553
- Examples
554
- --------
555
- from Opik import OpikApi
556
-
557
- client = OpikApi(
558
- api_key="YOUR_API_KEY",
559
- workspace_name="YOUR_WORKSPACE_NAME",
560
- )
561
- client.automation_rule_evaluators.get_evaluator_by_id_deprecated(
562
- project_id="projectId",
563
- id="id",
564
- )
565
- """
566
- _response = self._client_wrapper.httpx_client.request(
567
- f"v1/private/automations/projects/{jsonable_encoder(project_id)}/evaluators/{jsonable_encoder(id)}",
568
- method="GET",
569
- request_options=request_options,
570
- )
571
- try:
572
- if 200 <= _response.status_code < 300:
573
- return typing.cast(
574
- typing.Optional[typing.Any],
575
- parse_obj_as(
576
- type_=typing.Optional[typing.Any], # type: ignore
577
- object_=_response.json(),
578
- ),
579
- )
580
- _response_json = _response.json()
581
- except JSONDecodeError:
582
- raise ApiError(status_code=_response.status_code, body=_response.text)
583
- raise ApiError(status_code=_response.status_code, body=_response_json)
584
-
585
- def update_automation_rule_evaluator_deprecated(
586
- self,
587
- id: str,
588
- project_id: str,
589
- *,
590
- request: typing.Optional[typing.Any] = None,
591
- request_options: typing.Optional[RequestOptions] = None,
592
- ) -> None:
593
- """
594
- update Automation Rule Evaluator by id Deprecated
595
-
596
- Parameters
597
- ----------
598
- id : str
599
-
600
- project_id : str
601
-
602
- request : typing.Optional[typing.Any]
603
-
604
- request_options : typing.Optional[RequestOptions]
605
- Request-specific configuration.
606
-
607
- Returns
608
- -------
609
- None
610
-
611
- Examples
612
- --------
613
- from Opik import OpikApi
614
4
 
615
- client = OpikApi(
616
- api_key="YOUR_API_KEY",
617
- workspace_name="YOUR_WORKSPACE_NAME",
618
- )
619
- client.automation_rule_evaluators.update_automation_rule_evaluator_deprecated(
620
- id="id",
621
- project_id="projectId",
622
- request={"key": "value"},
623
- )
624
- """
625
- _response = self._client_wrapper.httpx_client.request(
626
- f"v1/private/automations/projects/{jsonable_encoder(project_id)}/evaluators/{jsonable_encoder(id)}",
627
- method="PATCH",
628
- json=request,
629
- request_options=request_options,
630
- omit=OMIT,
631
- )
632
- try:
633
- if 200 <= _response.status_code < 300:
634
- return
635
- _response_json = _response.json()
636
- except JSONDecodeError:
637
- raise ApiError(status_code=_response.status_code, body=_response.text)
638
- raise ApiError(status_code=_response.status_code, body=_response_json)
639
-
640
- def get_evaluator_logs_by_id_deprecated(
641
- self,
642
- project_id: str,
643
- id: str,
644
- *,
645
- size: typing.Optional[int] = None,
646
- request_options: typing.Optional[RequestOptions] = None,
647
- ) -> LogPage:
648
- """
649
- Get automation rule evaluator logs by id Deprecated
5
+ from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
6
+ from ..core.request_options import RequestOptions
7
+ from ..types.automation_rule_evaluator_page_public import AutomationRuleEvaluatorPagePublic
8
+ from ..types.automation_rule_evaluator_public import AutomationRuleEvaluatorPublic
9
+ from ..types.automation_rule_evaluator_update import AutomationRuleEvaluatorUpdate
10
+ from ..types.automation_rule_evaluator_write import AutomationRuleEvaluatorWrite
11
+ from ..types.log_page import LogPage
12
+ from .raw_client import AsyncRawAutomationRuleEvaluatorsClient, RawAutomationRuleEvaluatorsClient
650
13
 
651
- Parameters
652
- ----------
653
- project_id : str
14
+ # this is used as the default value for optional parameters
15
+ OMIT = typing.cast(typing.Any, ...)
654
16
 
655
- id : str
656
17
 
657
- size : typing.Optional[int]
18
+ class AutomationRuleEvaluatorsClient:
19
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
20
+ self._raw_client = RawAutomationRuleEvaluatorsClient(client_wrapper=client_wrapper)
658
21
 
659
- request_options : typing.Optional[RequestOptions]
660
- Request-specific configuration.
22
+ @property
23
+ def with_raw_response(self) -> RawAutomationRuleEvaluatorsClient:
24
+ """
25
+ Retrieves a raw implementation of this client that returns raw responses.
661
26
 
662
27
  Returns
663
28
  -------
664
- LogPage
665
- Automation rule evaluator logs resource
666
-
667
- Examples
668
- --------
669
- from Opik import OpikApi
670
-
671
- client = OpikApi(
672
- api_key="YOUR_API_KEY",
673
- workspace_name="YOUR_WORKSPACE_NAME",
674
- )
675
- client.automation_rule_evaluators.get_evaluator_logs_by_id_deprecated(
676
- project_id="projectId",
677
- id="id",
678
- )
29
+ RawAutomationRuleEvaluatorsClient
679
30
  """
680
- _response = self._client_wrapper.httpx_client.request(
681
- f"v1/private/automations/projects/{jsonable_encoder(project_id)}/evaluators/{jsonable_encoder(id)}/logs",
682
- method="GET",
683
- params={
684
- "size": size,
685
- },
686
- request_options=request_options,
687
- )
688
- try:
689
- if 200 <= _response.status_code < 300:
690
- return typing.cast(
691
- LogPage,
692
- parse_obj_as(
693
- type_=LogPage, # type: ignore
694
- object_=_response.json(),
695
- ),
696
- )
697
- _response_json = _response.json()
698
- except JSONDecodeError:
699
- raise ApiError(status_code=_response.status_code, body=_response.text)
700
- raise ApiError(status_code=_response.status_code, body=_response_json)
701
-
702
-
703
- class AsyncAutomationRuleEvaluatorsClient:
704
- def __init__(self, *, client_wrapper: AsyncClientWrapper):
705
- self._client_wrapper = client_wrapper
31
+ return self._raw_client
706
32
 
707
- async def find_evaluators(
33
+ def find_evaluators(
708
34
  self,
709
35
  *,
710
36
  project_id: typing.Optional[str] = None,
37
+ id: typing.Optional[str] = None,
711
38
  name: typing.Optional[str] = None,
39
+ filters: typing.Optional[str] = None,
40
+ sorting: typing.Optional[str] = None,
712
41
  page: typing.Optional[int] = None,
713
42
  size: typing.Optional[int] = None,
714
43
  request_options: typing.Optional[RequestOptions] = None,
@@ -720,8 +49,14 @@ class AsyncAutomationRuleEvaluatorsClient:
720
49
  ----------
721
50
  project_id : typing.Optional[str]
722
51
 
52
+ id : typing.Optional[str]
53
+
723
54
  name : typing.Optional[str]
724
55
 
56
+ filters : typing.Optional[str]
57
+
58
+ sorting : typing.Optional[str]
59
+
725
60
  page : typing.Optional[int]
726
61
 
727
62
  size : typing.Optional[int]
@@ -736,59 +71,31 @@ class AsyncAutomationRuleEvaluatorsClient:
736
71
 
737
72
  Examples
738
73
  --------
739
- import asyncio
740
-
741
- from Opik import AsyncOpikApi
742
-
743
- client = AsyncOpikApi(
744
- api_key="YOUR_API_KEY",
745
- workspace_name="YOUR_WORKSPACE_NAME",
746
- )
747
-
748
-
749
- async def main() -> None:
750
- await client.automation_rule_evaluators.find_evaluators()
751
-
752
-
753
- asyncio.run(main())
74
+ from Opik import OpikApi
75
+ client = OpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
76
+ client.automation_rule_evaluators.find_evaluators()
754
77
  """
755
- _response = await self._client_wrapper.httpx_client.request(
756
- "v1/private/automations/evaluators",
757
- method="GET",
758
- params={
759
- "project_id": project_id,
760
- "name": name,
761
- "page": page,
762
- "size": size,
763
- },
78
+ _response = self._raw_client.find_evaluators(
79
+ project_id=project_id,
80
+ id=id,
81
+ name=name,
82
+ filters=filters,
83
+ sorting=sorting,
84
+ page=page,
85
+ size=size,
764
86
  request_options=request_options,
765
87
  )
766
- try:
767
- if 200 <= _response.status_code < 300:
768
- return typing.cast(
769
- AutomationRuleEvaluatorPagePublic,
770
- parse_obj_as(
771
- type_=AutomationRuleEvaluatorPagePublic, # type: ignore
772
- object_=_response.json(),
773
- ),
774
- )
775
- _response_json = _response.json()
776
- except JSONDecodeError:
777
- raise ApiError(status_code=_response.status_code, body=_response.text)
778
- raise ApiError(status_code=_response.status_code, body=_response_json)
88
+ return _response.data
779
89
 
780
- async def create_automation_rule_evaluator(
781
- self,
782
- *,
783
- request: typing.Optional[typing.Any] = None,
784
- request_options: typing.Optional[RequestOptions] = None,
90
+ def create_automation_rule_evaluator(
91
+ self, *, request: AutomationRuleEvaluatorWrite, request_options: typing.Optional[RequestOptions] = None
785
92
  ) -> None:
786
93
  """
787
94
  Create automation rule evaluator
788
95
 
789
96
  Parameters
790
97
  ----------
791
- request : typing.Optional[typing.Any]
98
+ request : AutomationRuleEvaluatorWrite
792
99
 
793
100
  request_options : typing.Optional[RequestOptions]
794
101
  Request-specific configuration.
@@ -799,44 +106,19 @@ class AsyncAutomationRuleEvaluatorsClient:
799
106
 
800
107
  Examples
801
108
  --------
802
- import asyncio
803
-
804
- from Opik import AsyncOpikApi
805
-
806
- client = AsyncOpikApi(
807
- api_key="YOUR_API_KEY",
808
- workspace_name="YOUR_WORKSPACE_NAME",
809
- )
810
-
811
-
812
- async def main() -> None:
813
- await client.automation_rule_evaluators.create_automation_rule_evaluator(
814
- request={"key": "value"},
815
- )
816
-
817
-
818
- asyncio.run(main())
109
+ from Opik import OpikApi
110
+ from Opik import AutomationRuleEvaluatorWrite_LlmAsJudge
111
+ client = OpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
112
+ client.automation_rule_evaluators.create_automation_rule_evaluator(request=AutomationRuleEvaluatorWrite_LlmAsJudge(), )
819
113
  """
820
- _response = await self._client_wrapper.httpx_client.request(
821
- "v1/private/automations/evaluators",
822
- method="POST",
823
- json=request,
824
- request_options=request_options,
825
- omit=OMIT,
826
- )
827
- try:
828
- if 200 <= _response.status_code < 300:
829
- return
830
- _response_json = _response.json()
831
- except JSONDecodeError:
832
- raise ApiError(status_code=_response.status_code, body=_response.text)
833
- raise ApiError(status_code=_response.status_code, body=_response_json)
114
+ _response = self._raw_client.create_automation_rule_evaluator(request=request, request_options=request_options)
115
+ return _response.data
834
116
 
835
- async def delete_automation_rule_evaluator_batch(
117
+ def delete_automation_rule_evaluator_batch(
836
118
  self,
837
119
  *,
838
- project_id: str,
839
120
  ids: typing.Sequence[str],
121
+ project_id: typing.Optional[str] = None,
840
122
  request_options: typing.Optional[RequestOptions] = None,
841
123
  ) -> None:
842
124
  """
@@ -844,10 +126,10 @@ class AsyncAutomationRuleEvaluatorsClient:
844
126
 
845
127
  Parameters
846
128
  ----------
847
- project_id : str
848
-
849
129
  ids : typing.Sequence[str]
850
130
 
131
+ project_id : typing.Optional[str]
132
+
851
133
  request_options : typing.Optional[RequestOptions]
852
134
  Request-specific configuration.
853
135
 
@@ -857,52 +139,22 @@ class AsyncAutomationRuleEvaluatorsClient:
857
139
 
858
140
  Examples
859
141
  --------
860
- import asyncio
861
-
862
- from Opik import AsyncOpikApi
863
-
864
- client = AsyncOpikApi(
865
- api_key="YOUR_API_KEY",
866
- workspace_name="YOUR_WORKSPACE_NAME",
867
- )
868
-
869
-
870
- async def main() -> None:
871
- await client.automation_rule_evaluators.delete_automation_rule_evaluator_batch(
872
- project_id="project_id",
873
- ids=["ids"],
874
- )
875
-
876
-
877
- asyncio.run(main())
142
+ from Opik import OpikApi
143
+ client = OpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
144
+ client.automation_rule_evaluators.delete_automation_rule_evaluator_batch(ids=['ids'], )
878
145
  """
879
- _response = await self._client_wrapper.httpx_client.request(
880
- "v1/private/automations/evaluators/delete",
881
- method="POST",
882
- params={
883
- "project_id": project_id,
884
- },
885
- json={
886
- "ids": ids,
887
- },
888
- request_options=request_options,
889
- omit=OMIT,
146
+ _response = self._raw_client.delete_automation_rule_evaluator_batch(
147
+ ids=ids, project_id=project_id, request_options=request_options
890
148
  )
891
- try:
892
- if 200 <= _response.status_code < 300:
893
- return
894
- _response_json = _response.json()
895
- except JSONDecodeError:
896
- raise ApiError(status_code=_response.status_code, body=_response.text)
897
- raise ApiError(status_code=_response.status_code, body=_response_json)
149
+ return _response.data
898
150
 
899
- async def get_evaluator_by_id(
151
+ def get_evaluator_by_id(
900
152
  self,
901
153
  id: str,
902
154
  *,
903
155
  project_id: typing.Optional[str] = None,
904
156
  request_options: typing.Optional[RequestOptions] = None,
905
- ) -> typing.Optional[typing.Any]:
157
+ ) -> AutomationRuleEvaluatorPublic:
906
158
  """
907
159
  Get automation rule by id
908
160
 
@@ -917,56 +169,23 @@ class AsyncAutomationRuleEvaluatorsClient:
917
169
 
918
170
  Returns
919
171
  -------
920
- typing.Optional[typing.Any]
172
+ AutomationRuleEvaluatorPublic
921
173
  Automation Rule resource
922
174
 
923
175
  Examples
924
176
  --------
925
- import asyncio
926
-
927
- from Opik import AsyncOpikApi
928
-
929
- client = AsyncOpikApi(
930
- api_key="YOUR_API_KEY",
931
- workspace_name="YOUR_WORKSPACE_NAME",
932
- )
933
-
934
-
935
- async def main() -> None:
936
- await client.automation_rule_evaluators.get_evaluator_by_id(
937
- id="id",
938
- )
939
-
940
-
941
- asyncio.run(main())
177
+ from Opik import OpikApi
178
+ client = OpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
179
+ client.automation_rule_evaluators.get_evaluator_by_id(id='id', )
942
180
  """
943
- _response = await self._client_wrapper.httpx_client.request(
944
- f"v1/private/automations/evaluators/{jsonable_encoder(id)}",
945
- method="GET",
946
- params={
947
- "project_id": project_id,
948
- },
949
- request_options=request_options,
950
- )
951
- try:
952
- if 200 <= _response.status_code < 300:
953
- return typing.cast(
954
- typing.Optional[typing.Any],
955
- parse_obj_as(
956
- type_=typing.Optional[typing.Any], # type: ignore
957
- object_=_response.json(),
958
- ),
959
- )
960
- _response_json = _response.json()
961
- except JSONDecodeError:
962
- raise ApiError(status_code=_response.status_code, body=_response.text)
963
- raise ApiError(status_code=_response.status_code, body=_response_json)
181
+ _response = self._raw_client.get_evaluator_by_id(id, project_id=project_id, request_options=request_options)
182
+ return _response.data
964
183
 
965
- async def update_automation_rule_evaluator(
184
+ def update_automation_rule_evaluator(
966
185
  self,
967
186
  id: str,
968
187
  *,
969
- request: typing.Optional[typing.Any] = None,
188
+ request: AutomationRuleEvaluatorUpdate,
970
189
  request_options: typing.Optional[RequestOptions] = None,
971
190
  ) -> None:
972
191
  """
@@ -976,7 +195,7 @@ class AsyncAutomationRuleEvaluatorsClient:
976
195
  ----------
977
196
  id : str
978
197
 
979
- request : typing.Optional[typing.Any]
198
+ request : AutomationRuleEvaluatorUpdate
980
199
 
981
200
  request_options : typing.Optional[RequestOptions]
982
201
  Request-specific configuration.
@@ -987,46 +206,18 @@ class AsyncAutomationRuleEvaluatorsClient:
987
206
 
988
207
  Examples
989
208
  --------
990
- import asyncio
991
-
992
- from Opik import AsyncOpikApi
993
-
994
- client = AsyncOpikApi(
995
- api_key="YOUR_API_KEY",
996
- workspace_name="YOUR_WORKSPACE_NAME",
997
- )
998
-
999
-
1000
- async def main() -> None:
1001
- await client.automation_rule_evaluators.update_automation_rule_evaluator(
1002
- id="id",
1003
- request={"key": "value"},
1004
- )
1005
-
1006
-
1007
- asyncio.run(main())
209
+ from Opik import OpikApi
210
+ from Opik import AutomationRuleEvaluatorUpdate_LlmAsJudge
211
+ client = OpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
212
+ client.automation_rule_evaluators.update_automation_rule_evaluator(id='id', request=AutomationRuleEvaluatorUpdate_LlmAsJudge(), )
1008
213
  """
1009
- _response = await self._client_wrapper.httpx_client.request(
1010
- f"v1/private/automations/evaluators/{jsonable_encoder(id)}",
1011
- method="PATCH",
1012
- json=request,
1013
- request_options=request_options,
1014
- omit=OMIT,
214
+ _response = self._raw_client.update_automation_rule_evaluator(
215
+ id, request=request, request_options=request_options
1015
216
  )
1016
- try:
1017
- if 200 <= _response.status_code < 300:
1018
- return
1019
- _response_json = _response.json()
1020
- except JSONDecodeError:
1021
- raise ApiError(status_code=_response.status_code, body=_response.text)
1022
- raise ApiError(status_code=_response.status_code, body=_response_json)
217
+ return _response.data
1023
218
 
1024
- async def get_evaluator_logs_by_id(
1025
- self,
1026
- id: str,
1027
- *,
1028
- size: typing.Optional[int] = None,
1029
- request_options: typing.Optional[RequestOptions] = None,
219
+ def get_evaluator_logs_by_id(
220
+ self, id: str, *, size: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None
1030
221
  ) -> LogPage:
1031
222
  """
1032
223
  Get automation rule evaluator logs by id
@@ -1047,64 +238,56 @@ class AsyncAutomationRuleEvaluatorsClient:
1047
238
 
1048
239
  Examples
1049
240
  --------
1050
- import asyncio
1051
-
1052
- from Opik import AsyncOpikApi
1053
-
1054
- client = AsyncOpikApi(
1055
- api_key="YOUR_API_KEY",
1056
- workspace_name="YOUR_WORKSPACE_NAME",
1057
- )
241
+ from Opik import OpikApi
242
+ client = OpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
243
+ client.automation_rule_evaluators.get_evaluator_logs_by_id(id='id', )
244
+ """
245
+ _response = self._raw_client.get_evaluator_logs_by_id(id, size=size, request_options=request_options)
246
+ return _response.data
1058
247
 
1059
248
 
1060
- async def main() -> None:
1061
- await client.automation_rule_evaluators.get_evaluator_logs_by_id(
1062
- id="id",
1063
- )
249
+ class AsyncAutomationRuleEvaluatorsClient:
250
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
251
+ self._raw_client = AsyncRawAutomationRuleEvaluatorsClient(client_wrapper=client_wrapper)
1064
252
 
253
+ @property
254
+ def with_raw_response(self) -> AsyncRawAutomationRuleEvaluatorsClient:
255
+ """
256
+ Retrieves a raw implementation of this client that returns raw responses.
1065
257
 
1066
- asyncio.run(main())
258
+ Returns
259
+ -------
260
+ AsyncRawAutomationRuleEvaluatorsClient
1067
261
  """
1068
- _response = await self._client_wrapper.httpx_client.request(
1069
- f"v1/private/automations/evaluators/{jsonable_encoder(id)}/logs",
1070
- method="GET",
1071
- params={
1072
- "size": size,
1073
- },
1074
- request_options=request_options,
1075
- )
1076
- try:
1077
- if 200 <= _response.status_code < 300:
1078
- return typing.cast(
1079
- LogPage,
1080
- parse_obj_as(
1081
- type_=LogPage, # type: ignore
1082
- object_=_response.json(),
1083
- ),
1084
- )
1085
- _response_json = _response.json()
1086
- except JSONDecodeError:
1087
- raise ApiError(status_code=_response.status_code, body=_response.text)
1088
- raise ApiError(status_code=_response.status_code, body=_response_json)
1089
-
1090
- async def find_evaluators_deprecated(
262
+ return self._raw_client
263
+
264
+ async def find_evaluators(
1091
265
  self,
1092
- project_id: str,
1093
266
  *,
267
+ project_id: typing.Optional[str] = None,
268
+ id: typing.Optional[str] = None,
1094
269
  name: typing.Optional[str] = None,
270
+ filters: typing.Optional[str] = None,
271
+ sorting: typing.Optional[str] = None,
1095
272
  page: typing.Optional[int] = None,
1096
273
  size: typing.Optional[int] = None,
1097
274
  request_options: typing.Optional[RequestOptions] = None,
1098
275
  ) -> AutomationRuleEvaluatorPagePublic:
1099
276
  """
1100
- Find project Evaluators Deprecated
277
+ Find project Evaluators
1101
278
 
1102
279
  Parameters
1103
280
  ----------
1104
- project_id : str
281
+ project_id : typing.Optional[str]
282
+
283
+ id : typing.Optional[str]
1105
284
 
1106
285
  name : typing.Optional[str]
1107
286
 
287
+ filters : typing.Optional[str]
288
+
289
+ sorting : typing.Optional[str]
290
+
1108
291
  page : typing.Optional[int]
1109
292
 
1110
293
  size : typing.Optional[int]
@@ -1119,63 +302,34 @@ class AsyncAutomationRuleEvaluatorsClient:
1119
302
 
1120
303
  Examples
1121
304
  --------
1122
- import asyncio
1123
-
1124
305
  from Opik import AsyncOpikApi
1125
-
1126
- client = AsyncOpikApi(
1127
- api_key="YOUR_API_KEY",
1128
- workspace_name="YOUR_WORKSPACE_NAME",
1129
- )
1130
-
1131
-
306
+ import asyncio
307
+ client = AsyncOpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
1132
308
  async def main() -> None:
1133
- await client.automation_rule_evaluators.find_evaluators_deprecated(
1134
- project_id="projectId",
1135
- )
1136
-
1137
-
309
+ await client.automation_rule_evaluators.find_evaluators()
1138
310
  asyncio.run(main())
1139
311
  """
1140
- _response = await self._client_wrapper.httpx_client.request(
1141
- f"v1/private/automations/projects/{jsonable_encoder(project_id)}/evaluators",
1142
- method="GET",
1143
- params={
1144
- "name": name,
1145
- "page": page,
1146
- "size": size,
1147
- },
312
+ _response = await self._raw_client.find_evaluators(
313
+ project_id=project_id,
314
+ id=id,
315
+ name=name,
316
+ filters=filters,
317
+ sorting=sorting,
318
+ page=page,
319
+ size=size,
1148
320
  request_options=request_options,
1149
321
  )
1150
- try:
1151
- if 200 <= _response.status_code < 300:
1152
- return typing.cast(
1153
- AutomationRuleEvaluatorPagePublic,
1154
- parse_obj_as(
1155
- type_=AutomationRuleEvaluatorPagePublic, # type: ignore
1156
- object_=_response.json(),
1157
- ),
1158
- )
1159
- _response_json = _response.json()
1160
- except JSONDecodeError:
1161
- raise ApiError(status_code=_response.status_code, body=_response.text)
1162
- raise ApiError(status_code=_response.status_code, body=_response_json)
1163
-
1164
- async def create_automation_rule_evaluator_deprecated(
1165
- self,
1166
- project_id: str,
1167
- *,
1168
- request: typing.Optional[typing.Any] = None,
1169
- request_options: typing.Optional[RequestOptions] = None,
322
+ return _response.data
323
+
324
+ async def create_automation_rule_evaluator(
325
+ self, *, request: AutomationRuleEvaluatorWrite, request_options: typing.Optional[RequestOptions] = None
1170
326
  ) -> None:
1171
327
  """
1172
- Create automation rule evaluator Deprecated
328
+ Create automation rule evaluator
1173
329
 
1174
330
  Parameters
1175
331
  ----------
1176
- project_id : str
1177
-
1178
- request : typing.Optional[typing.Any]
332
+ request : AutomationRuleEvaluatorWrite
1179
333
 
1180
334
  request_options : typing.Optional[RequestOptions]
1181
335
  Request-specific configuration.
@@ -1186,56 +340,35 @@ class AsyncAutomationRuleEvaluatorsClient:
1186
340
 
1187
341
  Examples
1188
342
  --------
1189
- import asyncio
1190
-
1191
343
  from Opik import AsyncOpikApi
1192
-
1193
- client = AsyncOpikApi(
1194
- api_key="YOUR_API_KEY",
1195
- workspace_name="YOUR_WORKSPACE_NAME",
1196
- )
1197
-
1198
-
344
+ from Opik import AutomationRuleEvaluatorWrite_LlmAsJudge
345
+ import asyncio
346
+ client = AsyncOpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
1199
347
  async def main() -> None:
1200
- await client.automation_rule_evaluators.create_automation_rule_evaluator_deprecated(
1201
- project_id="projectId",
1202
- request={"key": "value"},
1203
- )
1204
-
1205
-
348
+ await client.automation_rule_evaluators.create_automation_rule_evaluator(request=AutomationRuleEvaluatorWrite_LlmAsJudge(), )
1206
349
  asyncio.run(main())
1207
350
  """
1208
- _response = await self._client_wrapper.httpx_client.request(
1209
- f"v1/private/automations/projects/{jsonable_encoder(project_id)}/evaluators",
1210
- method="POST",
1211
- json=request,
1212
- request_options=request_options,
1213
- omit=OMIT,
351
+ _response = await self._raw_client.create_automation_rule_evaluator(
352
+ request=request, request_options=request_options
1214
353
  )
1215
- try:
1216
- if 200 <= _response.status_code < 300:
1217
- return
1218
- _response_json = _response.json()
1219
- except JSONDecodeError:
1220
- raise ApiError(status_code=_response.status_code, body=_response.text)
1221
- raise ApiError(status_code=_response.status_code, body=_response_json)
1222
-
1223
- async def delete_automation_rule_evaluator_batch_deprecated(
354
+ return _response.data
355
+
356
+ async def delete_automation_rule_evaluator_batch(
1224
357
  self,
1225
- project_id: str,
1226
358
  *,
1227
359
  ids: typing.Sequence[str],
360
+ project_id: typing.Optional[str] = None,
1228
361
  request_options: typing.Optional[RequestOptions] = None,
1229
362
  ) -> None:
1230
363
  """
1231
- Delete automation rule evaluators batch Deprecated
364
+ Delete automation rule evaluators batch
1232
365
 
1233
366
  Parameters
1234
367
  ----------
1235
- project_id : str
1236
-
1237
368
  ids : typing.Sequence[str]
1238
369
 
370
+ project_id : typing.Optional[str]
371
+
1239
372
  request_options : typing.Optional[RequestOptions]
1240
373
  Request-specific configuration.
1241
374
 
@@ -1245,124 +378,71 @@ class AsyncAutomationRuleEvaluatorsClient:
1245
378
 
1246
379
  Examples
1247
380
  --------
1248
- import asyncio
1249
-
1250
381
  from Opik import AsyncOpikApi
1251
-
1252
- client = AsyncOpikApi(
1253
- api_key="YOUR_API_KEY",
1254
- workspace_name="YOUR_WORKSPACE_NAME",
1255
- )
1256
-
1257
-
382
+ import asyncio
383
+ client = AsyncOpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
1258
384
  async def main() -> None:
1259
- await client.automation_rule_evaluators.delete_automation_rule_evaluator_batch_deprecated(
1260
- project_id="projectId",
1261
- ids=["ids"],
1262
- )
1263
-
1264
-
385
+ await client.automation_rule_evaluators.delete_automation_rule_evaluator_batch(ids=['ids'], )
1265
386
  asyncio.run(main())
1266
387
  """
1267
- _response = await self._client_wrapper.httpx_client.request(
1268
- f"v1/private/automations/projects/{jsonable_encoder(project_id)}/evaluators/delete",
1269
- method="POST",
1270
- json={
1271
- "ids": ids,
1272
- },
1273
- request_options=request_options,
1274
- omit=OMIT,
388
+ _response = await self._raw_client.delete_automation_rule_evaluator_batch(
389
+ ids=ids, project_id=project_id, request_options=request_options
1275
390
  )
1276
- try:
1277
- if 200 <= _response.status_code < 300:
1278
- return
1279
- _response_json = _response.json()
1280
- except JSONDecodeError:
1281
- raise ApiError(status_code=_response.status_code, body=_response.text)
1282
- raise ApiError(status_code=_response.status_code, body=_response_json)
1283
-
1284
- async def get_evaluator_by_id_deprecated(
391
+ return _response.data
392
+
393
+ async def get_evaluator_by_id(
1285
394
  self,
1286
- project_id: str,
1287
395
  id: str,
1288
396
  *,
397
+ project_id: typing.Optional[str] = None,
1289
398
  request_options: typing.Optional[RequestOptions] = None,
1290
- ) -> typing.Optional[typing.Any]:
399
+ ) -> AutomationRuleEvaluatorPublic:
1291
400
  """
1292
- Get automation rule by id Deprecated
401
+ Get automation rule by id
1293
402
 
1294
403
  Parameters
1295
404
  ----------
1296
- project_id : str
1297
-
1298
405
  id : str
1299
406
 
407
+ project_id : typing.Optional[str]
408
+
1300
409
  request_options : typing.Optional[RequestOptions]
1301
410
  Request-specific configuration.
1302
411
 
1303
412
  Returns
1304
413
  -------
1305
- typing.Optional[typing.Any]
414
+ AutomationRuleEvaluatorPublic
1306
415
  Automation Rule resource
1307
416
 
1308
417
  Examples
1309
418
  --------
1310
- import asyncio
1311
-
1312
419
  from Opik import AsyncOpikApi
1313
-
1314
- client = AsyncOpikApi(
1315
- api_key="YOUR_API_KEY",
1316
- workspace_name="YOUR_WORKSPACE_NAME",
1317
- )
1318
-
1319
-
420
+ import asyncio
421
+ client = AsyncOpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
1320
422
  async def main() -> None:
1321
- await client.automation_rule_evaluators.get_evaluator_by_id_deprecated(
1322
- project_id="projectId",
1323
- id="id",
1324
- )
1325
-
1326
-
423
+ await client.automation_rule_evaluators.get_evaluator_by_id(id='id', )
1327
424
  asyncio.run(main())
1328
425
  """
1329
- _response = await self._client_wrapper.httpx_client.request(
1330
- f"v1/private/automations/projects/{jsonable_encoder(project_id)}/evaluators/{jsonable_encoder(id)}",
1331
- method="GET",
1332
- request_options=request_options,
426
+ _response = await self._raw_client.get_evaluator_by_id(
427
+ id, project_id=project_id, request_options=request_options
1333
428
  )
1334
- try:
1335
- if 200 <= _response.status_code < 300:
1336
- return typing.cast(
1337
- typing.Optional[typing.Any],
1338
- parse_obj_as(
1339
- type_=typing.Optional[typing.Any], # type: ignore
1340
- object_=_response.json(),
1341
- ),
1342
- )
1343
- _response_json = _response.json()
1344
- except JSONDecodeError:
1345
- raise ApiError(status_code=_response.status_code, body=_response.text)
1346
- raise ApiError(status_code=_response.status_code, body=_response_json)
1347
-
1348
- async def update_automation_rule_evaluator_deprecated(
429
+ return _response.data
430
+
431
+ async def update_automation_rule_evaluator(
1349
432
  self,
1350
433
  id: str,
1351
- project_id: str,
1352
434
  *,
1353
- request: typing.Optional[typing.Any] = None,
435
+ request: AutomationRuleEvaluatorUpdate,
1354
436
  request_options: typing.Optional[RequestOptions] = None,
1355
437
  ) -> None:
1356
438
  """
1357
- update Automation Rule Evaluator by id Deprecated
439
+ Update Automation Rule Evaluator by id
1358
440
 
1359
441
  Parameters
1360
442
  ----------
1361
443
  id : str
1362
444
 
1363
- project_id : str
1364
-
1365
- request : typing.Optional[typing.Any]
445
+ request : AutomationRuleEvaluatorUpdate
1366
446
 
1367
447
  request_options : typing.Optional[RequestOptions]
1368
448
  Request-specific configuration.
@@ -1373,56 +453,27 @@ class AsyncAutomationRuleEvaluatorsClient:
1373
453
 
1374
454
  Examples
1375
455
  --------
1376
- import asyncio
1377
-
1378
456
  from Opik import AsyncOpikApi
1379
-
1380
- client = AsyncOpikApi(
1381
- api_key="YOUR_API_KEY",
1382
- workspace_name="YOUR_WORKSPACE_NAME",
1383
- )
1384
-
1385
-
457
+ from Opik import AutomationRuleEvaluatorUpdate_LlmAsJudge
458
+ import asyncio
459
+ client = AsyncOpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
1386
460
  async def main() -> None:
1387
- await client.automation_rule_evaluators.update_automation_rule_evaluator_deprecated(
1388
- id="id",
1389
- project_id="projectId",
1390
- request={"key": "value"},
1391
- )
1392
-
1393
-
461
+ await client.automation_rule_evaluators.update_automation_rule_evaluator(id='id', request=AutomationRuleEvaluatorUpdate_LlmAsJudge(), )
1394
462
  asyncio.run(main())
1395
463
  """
1396
- _response = await self._client_wrapper.httpx_client.request(
1397
- f"v1/private/automations/projects/{jsonable_encoder(project_id)}/evaluators/{jsonable_encoder(id)}",
1398
- method="PATCH",
1399
- json=request,
1400
- request_options=request_options,
1401
- omit=OMIT,
464
+ _response = await self._raw_client.update_automation_rule_evaluator(
465
+ id, request=request, request_options=request_options
1402
466
  )
1403
- try:
1404
- if 200 <= _response.status_code < 300:
1405
- return
1406
- _response_json = _response.json()
1407
- except JSONDecodeError:
1408
- raise ApiError(status_code=_response.status_code, body=_response.text)
1409
- raise ApiError(status_code=_response.status_code, body=_response_json)
1410
-
1411
- async def get_evaluator_logs_by_id_deprecated(
1412
- self,
1413
- project_id: str,
1414
- id: str,
1415
- *,
1416
- size: typing.Optional[int] = None,
1417
- request_options: typing.Optional[RequestOptions] = None,
467
+ return _response.data
468
+
469
+ async def get_evaluator_logs_by_id(
470
+ self, id: str, *, size: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None
1418
471
  ) -> LogPage:
1419
472
  """
1420
- Get automation rule evaluator logs by id Deprecated
473
+ Get automation rule evaluator logs by id
1421
474
 
1422
475
  Parameters
1423
476
  ----------
1424
- project_id : str
1425
-
1426
477
  id : str
1427
478
 
1428
479
  size : typing.Optional[int]
@@ -1437,43 +488,12 @@ class AsyncAutomationRuleEvaluatorsClient:
1437
488
 
1438
489
  Examples
1439
490
  --------
1440
- import asyncio
1441
-
1442
491
  from Opik import AsyncOpikApi
1443
-
1444
- client = AsyncOpikApi(
1445
- api_key="YOUR_API_KEY",
1446
- workspace_name="YOUR_WORKSPACE_NAME",
1447
- )
1448
-
1449
-
492
+ import asyncio
493
+ client = AsyncOpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
1450
494
  async def main() -> None:
1451
- await client.automation_rule_evaluators.get_evaluator_logs_by_id_deprecated(
1452
- project_id="projectId",
1453
- id="id",
1454
- )
1455
-
1456
-
495
+ await client.automation_rule_evaluators.get_evaluator_logs_by_id(id='id', )
1457
496
  asyncio.run(main())
1458
497
  """
1459
- _response = await self._client_wrapper.httpx_client.request(
1460
- f"v1/private/automations/projects/{jsonable_encoder(project_id)}/evaluators/{jsonable_encoder(id)}/logs",
1461
- method="GET",
1462
- params={
1463
- "size": size,
1464
- },
1465
- request_options=request_options,
1466
- )
1467
- try:
1468
- if 200 <= _response.status_code < 300:
1469
- return typing.cast(
1470
- LogPage,
1471
- parse_obj_as(
1472
- type_=LogPage, # type: ignore
1473
- object_=_response.json(),
1474
- ),
1475
- )
1476
- _response_json = _response.json()
1477
- except JSONDecodeError:
1478
- raise ApiError(status_code=_response.status_code, body=_response.text)
1479
- raise ApiError(status_code=_response.status_code, body=_response_json)
498
+ _response = await self._raw_client.get_evaluator_logs_by_id(id, size=size, request_options=request_options)
499
+ return _response.data