langwatch 0.8.1__tar.gz → 0.10.0__tar.gz

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 (544) hide show
  1. {langwatch-0.8.1 → langwatch-0.10.0}/CHANGELOG.md +32 -0
  2. {langwatch-0.8.1 → langwatch-0.10.0}/PKG-INFO +1 -1
  3. {langwatch-0.8.1 → langwatch-0.10.0}/examples/dspy_bot.py +3 -8
  4. langwatch-0.10.0/examples/generic_bot_image.py +37 -0
  5. {langwatch-0.8.1 → langwatch-0.10.0}/examples/guardrails.py +8 -4
  6. {langwatch-0.8.1 → langwatch-0.10.0}/examples/guardrails_parallel.py +13 -8
  7. {langwatch-0.8.1 → langwatch-0.10.0}/examples/guardrails_without_tracing.py +7 -4
  8. langwatch-0.10.0/examples/langwatch_docs_rag_evaluation.ipynb +301 -0
  9. langwatch-0.10.0/examples/offline_evaluation.ipynb +263 -0
  10. langwatch-0.10.0/examples/pdf_parsing_evaluation.ipynb +446 -0
  11. {langwatch-0.8.1 → langwatch-0.10.0}/pyproject.toml +1 -1
  12. langwatch-0.10.0/specs/evaluation/with_target.feature +100 -0
  13. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/__init__.py +6 -3
  14. langwatch-0.10.0/src/langwatch/__version__.py +3 -0
  15. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/dspy/__init__.py +4 -32
  16. langwatch-0.8.1/src/langwatch/evaluations.py → langwatch-0.10.0/src/langwatch/evaluation/__init__.py +202 -120
  17. langwatch-0.10.0/src/langwatch/evaluations.py +285 -0
  18. langwatch-0.10.0/src/langwatch/experiment/__init__.py +108 -0
  19. langwatch-0.10.0/src/langwatch/experiment/experiment.py +912 -0
  20. langwatch-0.10.0/src/langwatch/experiment/platform_run.py +435 -0
  21. langwatch-0.10.0/tests/e2e/test_platform_experiment_e2e.py +88 -0
  22. langwatch-0.10.0/tests/evaluation/__init__.py +1 -0
  23. langwatch-0.10.0/tests/evaluation/test_evaluate.py +385 -0
  24. langwatch-0.10.0/tests/experiment/__init__.py +0 -0
  25. langwatch-0.10.0/tests/experiment/test_target_registration.py +244 -0
  26. langwatch-0.10.0/tests/experiment/test_target_trace_isolation.py +262 -0
  27. langwatch-0.10.0/tests/experiment/test_with_target.py +271 -0
  28. langwatch-0.10.0/tests/experiment/test_with_target_integration.py +415 -0
  29. {langwatch-0.8.1 → langwatch-0.10.0}/uv.lock +1 -1
  30. langwatch-0.8.1/examples/langwatch_docs_rag_evaluation.ipynb +0 -301
  31. langwatch-0.8.1/examples/offline_evaluation.ipynb +0 -207
  32. langwatch-0.8.1/examples/pdf_parsing_evaluation.ipynb +0 -446
  33. langwatch-0.8.1/src/langwatch/__version__.py +0 -3
  34. langwatch-0.8.1/src/langwatch/evaluation/__init__.py +0 -9
  35. langwatch-0.8.1/src/langwatch/evaluation/evaluation.py +0 -484
  36. {langwatch-0.8.1 → langwatch-0.10.0}/.editorconfig +0 -0
  37. {langwatch-0.8.1 → langwatch-0.10.0}/.env.example +0 -0
  38. {langwatch-0.8.1 → langwatch-0.10.0}/.gitignore +0 -0
  39. {langwatch-0.8.1 → langwatch-0.10.0}/AGENTS.md +0 -0
  40. {langwatch-0.8.1 → langwatch-0.10.0}/Makefile +0 -0
  41. {langwatch-0.8.1 → langwatch-0.10.0}/README.md +0 -0
  42. {langwatch-0.8.1 → langwatch-0.10.0}/examples/README.md +0 -0
  43. {langwatch-0.8.1 → langwatch-0.10.0}/examples/__init__.py +0 -0
  44. {langwatch-0.8.1 → langwatch-0.10.0}/examples/azure_openai_stream_bot.py +0 -0
  45. {langwatch-0.8.1 → langwatch-0.10.0}/examples/cli/README.md +0 -0
  46. {langwatch-0.8.1 → langwatch-0.10.0}/examples/cli/guaranteed_availability_with_cli.py +0 -0
  47. {langwatch-0.8.1 → langwatch-0.10.0}/examples/custom_evaluation_bot.py +0 -0
  48. {langwatch-0.8.1 → langwatch-0.10.0}/examples/data/rag_dspy_bot.json +0 -0
  49. {langwatch-0.8.1 → langwatch-0.10.0}/examples/dataset_kitchen_sink.py +0 -0
  50. {langwatch-0.8.1 → langwatch-0.10.0}/examples/distributed_tracing.py +0 -0
  51. {langwatch-0.8.1 → langwatch-0.10.0}/examples/documentation/openai_langwatch.py +0 -0
  52. {langwatch-0.8.1 → langwatch-0.10.0}/examples/documentation/openai_openinference.py +0 -0
  53. {langwatch-0.8.1 → langwatch-0.10.0}/examples/dspy_visualization.ipynb +0 -0
  54. {langwatch-0.8.1 → langwatch-0.10.0}/examples/evaluation_manual_call.py +0 -0
  55. {langwatch-0.8.1 → langwatch-0.10.0}/examples/fastapi_app.py +0 -0
  56. {langwatch-0.8.1 → langwatch-0.10.0}/examples/generic_bot.py +0 -0
  57. {langwatch-0.8.1 → langwatch-0.10.0}/examples/generic_bot_async_streaming.py +0 -0
  58. {langwatch-0.8.1 → langwatch-0.10.0}/examples/generic_bot_exception.py +0 -0
  59. {langwatch-0.8.1 → langwatch-0.10.0}/examples/generic_bot_rag.py +0 -0
  60. {langwatch-0.8.1 → langwatch-0.10.0}/examples/generic_bot_rag_expected_output.py +0 -0
  61. {langwatch-0.8.1 → langwatch-0.10.0}/examples/generic_bot_rag_multithreaded.py +0 -0
  62. {langwatch-0.8.1 → langwatch-0.10.0}/examples/generic_bot_span_context_manager.py +0 -0
  63. {langwatch-0.8.1 → langwatch-0.10.0}/examples/generic_bot_span_low_level.py +0 -0
  64. {langwatch-0.8.1 → langwatch-0.10.0}/examples/generic_bot_streaming.py +0 -0
  65. {langwatch-0.8.1 → langwatch-0.10.0}/examples/generic_bot_sync_function.py +0 -0
  66. {langwatch-0.8.1 → langwatch-0.10.0}/examples/generic_bot_update_metadata_later.py +0 -0
  67. {langwatch-0.8.1 → langwatch-0.10.0}/examples/haystack_bot.py +0 -0
  68. {langwatch-0.8.1 → langwatch-0.10.0}/examples/langchain_bot.py +0 -0
  69. {langwatch-0.8.1 → langwatch-0.10.0}/examples/langchain_bot_with_memory.py +0 -0
  70. {langwatch-0.8.1 → langwatch-0.10.0}/examples/langchain_rag_bot.py +0 -0
  71. {langwatch-0.8.1 → langwatch-0.10.0}/examples/langchain_rag_bot_vertex_ai.py +0 -0
  72. {langwatch-0.8.1 → langwatch-0.10.0}/examples/langchain_rag_bot_with_threads.py +0 -0
  73. {langwatch-0.8.1 → langwatch-0.10.0}/examples/langgraph_rag_bot_with_threads.py +0 -0
  74. {langwatch-0.8.1 → langwatch-0.10.0}/examples/litellm_bot.py +0 -0
  75. {langwatch-0.8.1 → langwatch-0.10.0}/examples/openai_bot.py +0 -0
  76. {langwatch-0.8.1 → langwatch-0.10.0}/examples/openai_bot_disable_trace.py +0 -0
  77. {langwatch-0.8.1 → langwatch-0.10.0}/examples/openai_bot_function_call.py +0 -0
  78. {langwatch-0.8.1 → langwatch-0.10.0}/examples/openai_bot_max_string_length.py +0 -0
  79. {langwatch-0.8.1 → langwatch-0.10.0}/examples/openai_bot_max_string_length_none.py +0 -0
  80. {langwatch-0.8.1 → langwatch-0.10.0}/examples/openai_bot_otel_metrics.py +0 -0
  81. {langwatch-0.8.1 → langwatch-0.10.0}/examples/openai_bot_rag.py +0 -0
  82. {langwatch-0.8.1 → langwatch-0.10.0}/examples/openai_bot_sampling_rate.py +0 -0
  83. {langwatch-0.8.1 → langwatch-0.10.0}/examples/openinference/google_adk.py +0 -0
  84. {langwatch-0.8.1 → langwatch-0.10.0}/examples/opentelemetry/openinference_dspy_bot.py +0 -0
  85. {langwatch-0.8.1 → langwatch-0.10.0}/examples/opentelemetry/openinference_haystack.py +0 -0
  86. {langwatch-0.8.1 → langwatch-0.10.0}/examples/opentelemetry/openinference_langchain_bot.py +0 -0
  87. {langwatch-0.8.1 → langwatch-0.10.0}/examples/opentelemetry/openinference_openai_assistants_api_bot.py +0 -0
  88. {langwatch-0.8.1 → langwatch-0.10.0}/examples/opentelemetry/openinference_openai_bot.py +0 -0
  89. {langwatch-0.8.1 → langwatch-0.10.0}/examples/opentelemetry/openllmetry_anthropic_bot.py +0 -0
  90. {langwatch-0.8.1 → langwatch-0.10.0}/examples/opentelemetry/openllmetry_crewai_bot.py +0 -0
  91. {langwatch-0.8.1 → langwatch-0.10.0}/examples/opentelemetry/openllmetry_langchain_bot.py +0 -0
  92. {langwatch-0.8.1 → langwatch-0.10.0}/examples/opentelemetry/openllmetry_openai_bot.py +0 -0
  93. {langwatch-0.8.1 → langwatch-0.10.0}/examples/opentelemetry/traditional_instrumentation_fastapi_app.py +0 -0
  94. {langwatch-0.8.1 → langwatch-0.10.0}/examples/prompt_cli/.gitignore +0 -0
  95. {langwatch-0.8.1 → langwatch-0.10.0}/examples/prompt_cli/main.py +0 -0
  96. {langwatch-0.8.1 → langwatch-0.10.0}/examples/prompt_cli/prompts/agent/performance.prompt.yaml +0 -0
  97. {langwatch-0.8.1 → langwatch-0.10.0}/examples/prompt_management_fastapi.py +0 -0
  98. {langwatch-0.8.1 → langwatch-0.10.0}/examples/sanity/setup_example.py +0 -0
  99. {langwatch-0.8.1 → langwatch-0.10.0}/examples/span_evaluation.py +0 -0
  100. {langwatch-0.8.1 → langwatch-0.10.0}/examples/strands_bot.py +0 -0
  101. {langwatch-0.8.1 → langwatch-0.10.0}/examples/streamlit_openai_assistants_api_bot.py +0 -0
  102. {langwatch-0.8.1 → langwatch-0.10.0}/examples/test_utils/run_cli.py +0 -0
  103. {langwatch-0.8.1 → langwatch-0.10.0}/examples/weaviate_dspy_visualization.ipynb +0 -0
  104. {langwatch-0.8.1 → langwatch-0.10.0}/examples/weaviate_setup/.gitignore +0 -0
  105. {langwatch-0.8.1 → langwatch-0.10.0}/examples/weaviate_setup/Weaviate-Import.ipynb +0 -0
  106. {langwatch-0.8.1 → langwatch-0.10.0}/examples/weaviate_setup/docker-compose.yml +0 -0
  107. {langwatch-0.8.1 → langwatch-0.10.0}/examples/weaviate_setup/optimization_screenshot.png +0 -0
  108. {langwatch-0.8.1 → langwatch-0.10.0}/examples/weaviate_setup/tracing_screenshot.png +0 -0
  109. {langwatch-0.8.1 → langwatch-0.10.0}/specs/prompts/fetch-policy.feature +0 -0
  110. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/attributes.py +0 -0
  111. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/batch_evaluation.py +0 -0
  112. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/client.py +0 -0
  113. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/dataset/__init__.py +0 -0
  114. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/domain/__init__.py +0 -0
  115. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/exporters/filterable_batch_span_exporter.py +0 -0
  116. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/__init__.py +0 -0
  117. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/api/__init__.py +0 -0
  118. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/api/default/__init__.py +0 -0
  119. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/api/default/delete_api_annotations_id.py +0 -0
  120. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/api/default/delete_api_prompts_by_id.py +0 -0
  121. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/api/default/delete_api_scenario_events.py +0 -0
  122. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/api/default/get_api_annotations.py +0 -0
  123. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/api/default/get_api_annotations_id.py +0 -0
  124. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/api/default/get_api_annotations_trace_id.py +0 -0
  125. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/api/default/get_api_dataset_by_slug_or_id.py +0 -0
  126. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/api/default/get_api_prompts.py +0 -0
  127. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/api/default/get_api_prompts_by_id.py +0 -0
  128. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/api/default/get_api_prompts_by_id_versions.py +0 -0
  129. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/api/default/get_api_trace_id.py +0 -0
  130. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/api/default/get_index.py +0 -0
  131. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/api/default/patch_api_annotations_id.py +0 -0
  132. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/api/default/post_api_annotations_trace_id.py +0 -0
  133. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/api/default/post_api_dataset_by_slug_entries.py +0 -0
  134. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/api/default/post_api_prompts.py +0 -0
  135. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/api/default/post_api_prompts_by_id_sync.py +0 -0
  136. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/api/default/post_api_scenario_events.py +0 -0
  137. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/api/default/post_api_trace_id_share.py +0 -0
  138. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/api/default/post_api_trace_id_unshare.py +0 -0
  139. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/api/default/post_index.py +0 -0
  140. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/api/default/put_api_prompts_by_id.py +0 -0
  141. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/api/traces/__init__.py +0 -0
  142. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/api/traces/post_api_trace_search.py +0 -0
  143. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/client.py +0 -0
  144. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/errors.py +0 -0
  145. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/__init__.py +0 -0
  146. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/annotation.py +0 -0
  147. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/dataset_post_entries.py +0 -0
  148. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/dataset_post_entries_entries_item.py +0 -0
  149. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/delete_api_annotations_id_response_200.py +0 -0
  150. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/delete_api_prompts_by_id_response_200.py +0 -0
  151. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/delete_api_prompts_by_id_response_400.py +0 -0
  152. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/delete_api_prompts_by_id_response_401.py +0 -0
  153. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/delete_api_prompts_by_id_response_404.py +0 -0
  154. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/delete_api_prompts_by_id_response_422.py +0 -0
  155. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/delete_api_prompts_by_id_response_500.py +0 -0
  156. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/delete_api_scenario_events_response_200.py +0 -0
  157. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/delete_api_scenario_events_response_400.py +0 -0
  158. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/delete_api_scenario_events_response_401.py +0 -0
  159. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/delete_api_scenario_events_response_422.py +0 -0
  160. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/delete_api_scenario_events_response_500.py +0 -0
  161. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/error.py +0 -0
  162. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/evaluation.py +0 -0
  163. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/evaluation_timestamps.py +0 -0
  164. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_dataset_by_slug_or_id_response_200.py +0 -0
  165. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_dataset_by_slug_or_id_response_200_data_item.py +0 -0
  166. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_dataset_by_slug_or_id_response_200_data_item_entry.py +0 -0
  167. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_dataset_by_slug_or_id_response_400.py +0 -0
  168. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_dataset_by_slug_or_id_response_401.py +0 -0
  169. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_dataset_by_slug_or_id_response_404.py +0 -0
  170. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_dataset_by_slug_or_id_response_422.py +0 -0
  171. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_dataset_by_slug_or_id_response_500.py +0 -0
  172. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200.py +0 -0
  173. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_demonstrations.py +0 -0
  174. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_demonstrations_inline.py +0 -0
  175. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_demonstrations_inline_column_types_item.py +0 -0
  176. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_demonstrations_inline_records.py +0 -0
  177. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_inputs_item.py +0 -0
  178. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_inputs_item_type.py +0 -0
  179. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_messages_item.py +0 -0
  180. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_messages_item_role.py +0 -0
  181. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_outputs_item.py +0 -0
  182. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_outputs_item_json_schema.py +0 -0
  183. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_outputs_item_type.py +0 -0
  184. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_prompting_technique.py +0 -0
  185. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_prompting_technique_demonstrations.py +0 -0
  186. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_prompting_technique_demonstrations_inline.py +0 -0
  187. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_prompting_technique_demonstrations_inline_column_types_item.py +0 -0
  188. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_prompting_technique_demonstrations_inline_records.py +0 -0
  189. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_prompting_technique_type.py +0 -0
  190. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_response_format.py +0 -0
  191. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_response_format_json_schema_type_0.py +0 -0
  192. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_response_format_json_schema_type_0_schema.py +0 -0
  193. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_response_format_type.py +0 -0
  194. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_scope.py +0 -0
  195. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_400.py +0 -0
  196. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_401.py +0 -0
  197. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_404.py +0 -0
  198. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_422.py +0 -0
  199. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_500.py +0 -0
  200. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item.py +0 -0
  201. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_demonstrations.py +0 -0
  202. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_demonstrations_inline.py +0 -0
  203. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_demonstrations_inline_column_types_item.py +0 -0
  204. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_demonstrations_inline_records.py +0 -0
  205. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_inputs_item.py +0 -0
  206. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_inputs_item_type.py +0 -0
  207. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_messages_item.py +0 -0
  208. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_messages_item_role.py +0 -0
  209. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_outputs_item.py +0 -0
  210. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_outputs_item_json_schema.py +0 -0
  211. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_outputs_item_type.py +0 -0
  212. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_prompting_technique.py +0 -0
  213. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_prompting_technique_demonstrations.py +0 -0
  214. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_prompting_technique_demonstrations_inline.py +0 -0
  215. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_prompting_technique_demonstrations_inline_column_types_item.py +0 -0
  216. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_prompting_technique_demonstrations_inline_records.py +0 -0
  217. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_prompting_technique_type.py +0 -0
  218. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_response_format.py +0 -0
  219. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_response_format_json_schema_type_0.py +0 -0
  220. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_response_format_json_schema_type_0_schema.py +0 -0
  221. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_response_format_type.py +0 -0
  222. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_scope.py +0 -0
  223. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_400.py +0 -0
  224. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_401.py +0 -0
  225. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_404.py +0 -0
  226. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_422.py +0 -0
  227. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_500.py +0 -0
  228. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item.py +0 -0
  229. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_demonstrations.py +0 -0
  230. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_demonstrations_inline.py +0 -0
  231. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_demonstrations_inline_column_types_item.py +0 -0
  232. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_demonstrations_inline_records.py +0 -0
  233. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_inputs_item.py +0 -0
  234. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_inputs_item_type.py +0 -0
  235. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_messages_item.py +0 -0
  236. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_messages_item_role.py +0 -0
  237. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_outputs_item.py +0 -0
  238. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_outputs_item_json_schema.py +0 -0
  239. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_outputs_item_type.py +0 -0
  240. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_prompting_technique.py +0 -0
  241. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_prompting_technique_demonstrations.py +0 -0
  242. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_prompting_technique_demonstrations_inline.py +0 -0
  243. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_prompting_technique_demonstrations_inline_column_types_item.py +0 -0
  244. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_prompting_technique_demonstrations_inline_records.py +0 -0
  245. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_prompting_technique_type.py +0 -0
  246. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_response_format.py +0 -0
  247. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_response_format_json_schema_type_0.py +0 -0
  248. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_response_format_json_schema_type_0_schema.py +0 -0
  249. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_response_format_type.py +0 -0
  250. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_scope.py +0 -0
  251. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_400.py +0 -0
  252. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_401.py +0 -0
  253. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_422.py +0 -0
  254. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_500.py +0 -0
  255. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200.py +0 -0
  256. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_error_type_0.py +0 -0
  257. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_evaluations_item.py +0 -0
  258. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_evaluations_item_error.py +0 -0
  259. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_evaluations_item_timestamps.py +0 -0
  260. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_input.py +0 -0
  261. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_metadata.py +0 -0
  262. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_metrics.py +0 -0
  263. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_output.py +0 -0
  264. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_spans_item.py +0 -0
  265. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_spans_item_error_type_0.py +0 -0
  266. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_spans_item_input.py +0 -0
  267. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_spans_item_input_value_item.py +0 -0
  268. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_spans_item_metrics.py +0 -0
  269. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_spans_item_output.py +0 -0
  270. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_spans_item_output_value_item.py +0 -0
  271. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_spans_item_params.py +0 -0
  272. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_spans_item_timestamps.py +0 -0
  273. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_api_trace_id_response_200_timestamps.py +0 -0
  274. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_index_response_200_item.py +0 -0
  275. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_index_response_200_item_messages_item.py +0 -0
  276. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_index_response_200_item_messages_item_role.py +0 -0
  277. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_index_response_200_item_response_format_type_0.py +0 -0
  278. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_index_response_200_item_response_format_type_0_json_schema.py +0 -0
  279. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_index_response_200_item_response_format_type_0_json_schema_schema.py +0 -0
  280. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_index_response_200_item_response_format_type_0_type.py +0 -0
  281. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_index_response_200_item_scope.py +0 -0
  282. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_index_response_400.py +0 -0
  283. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_index_response_401.py +0 -0
  284. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/get_index_response_500.py +0 -0
  285. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/input_.py +0 -0
  286. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/metadata.py +0 -0
  287. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/metrics.py +0 -0
  288. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/output.py +0 -0
  289. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/pagination.py +0 -0
  290. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/patch_api_annotations_id_body.py +0 -0
  291. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/patch_api_annotations_id_response_200.py +0 -0
  292. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_annotations_trace_id_body.py +0 -0
  293. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_body.py +0 -0
  294. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_body_inputs_item.py +0 -0
  295. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_body_inputs_item_type.py +0 -0
  296. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_body_messages_item.py +0 -0
  297. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_body_messages_item_role.py +0 -0
  298. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_body_outputs_item.py +0 -0
  299. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_body_outputs_item_json_schema.py +0 -0
  300. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_body_outputs_item_type.py +0 -0
  301. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_body_schema_version.py +0 -0
  302. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_body_scope.py +0 -0
  303. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body.py +0 -0
  304. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data.py +0 -0
  305. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_demonstrations.py +0 -0
  306. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_demonstrations_inline.py +0 -0
  307. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_demonstrations_inline_column_types_item.py +0 -0
  308. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_demonstrations_inline_records.py +0 -0
  309. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_inputs_item.py +0 -0
  310. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_inputs_item_type.py +0 -0
  311. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_messages_item.py +0 -0
  312. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_messages_item_role.py +0 -0
  313. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_outputs_item.py +0 -0
  314. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_outputs_item_json_schema.py +0 -0
  315. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_outputs_item_type.py +0 -0
  316. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_prompting_technique.py +0 -0
  317. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_prompting_technique_demonstrations.py +0 -0
  318. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_prompting_technique_demonstrations_inline.py +0 -0
  319. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_prompting_technique_demonstrations_inline_column_types_item.py +0 -0
  320. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_prompting_technique_demonstrations_inline_records.py +0 -0
  321. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_prompting_technique_type.py +0 -0
  322. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_response_format.py +0 -0
  323. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_response_format_json_schema_type_0.py +0 -0
  324. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_response_format_json_schema_type_0_schema.py +0 -0
  325. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_response_format_type.py +0 -0
  326. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200.py +0 -0
  327. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_action.py +0 -0
  328. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info.py +0 -0
  329. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data.py +0 -0
  330. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_demonstrations.py +0 -0
  331. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_demonstrations_inline.py +0 -0
  332. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_demonstrations_inline_column_types_item.py +0 -0
  333. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_demonstrations_inline_records.py +0 -0
  334. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_inputs_item.py +0 -0
  335. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_inputs_item_type.py +0 -0
  336. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_messages_item.py +0 -0
  337. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_messages_item_role.py +0 -0
  338. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_outputs_item.py +0 -0
  339. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_outputs_item_json_schema.py +0 -0
  340. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_outputs_item_type.py +0 -0
  341. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_prompting_technique.py +0 -0
  342. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_prompting_technique_demonstrations.py +0 -0
  343. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_prompting_technique_demonstrations_inline.py +0 -0
  344. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_prompting_technique_demonstrations_inline_column_types_item.py +0 -0
  345. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_prompting_technique_demonstrations_inline_records.py +0 -0
  346. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_prompting_technique_type.py +0 -0
  347. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_response_format.py +0 -0
  348. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_response_format_json_schema_type_0.py +0 -0
  349. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_response_format_json_schema_type_0_schema.py +0 -0
  350. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_response_format_type.py +0 -0
  351. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt.py +0 -0
  352. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_demonstrations.py +0 -0
  353. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_demonstrations_inline.py +0 -0
  354. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_demonstrations_inline_column_types_item.py +0 -0
  355. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_demonstrations_inline_records.py +0 -0
  356. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_inputs_item.py +0 -0
  357. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_inputs_item_type.py +0 -0
  358. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_messages_item.py +0 -0
  359. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_messages_item_role.py +0 -0
  360. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_outputs_item.py +0 -0
  361. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_outputs_item_json_schema.py +0 -0
  362. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_outputs_item_type.py +0 -0
  363. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_prompting_technique.py +0 -0
  364. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_prompting_technique_demonstrations.py +0 -0
  365. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_prompting_technique_demonstrations_inline.py +0 -0
  366. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_prompting_technique_demonstrations_inline_column_types_item.py +0 -0
  367. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_prompting_technique_demonstrations_inline_records.py +0 -0
  368. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_prompting_technique_type.py +0 -0
  369. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_response_format.py +0 -0
  370. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_response_format_json_schema_type_0.py +0 -0
  371. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_response_format_json_schema_type_0_schema.py +0 -0
  372. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_response_format_type.py +0 -0
  373. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_scope.py +0 -0
  374. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_400.py +0 -0
  375. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_401.py +0 -0
  376. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_422.py +0 -0
  377. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_500.py +0 -0
  378. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200.py +0 -0
  379. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_demonstrations.py +0 -0
  380. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_demonstrations_inline.py +0 -0
  381. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_demonstrations_inline_column_types_item.py +0 -0
  382. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_demonstrations_inline_records.py +0 -0
  383. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_inputs_item.py +0 -0
  384. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_inputs_item_type.py +0 -0
  385. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_messages_item.py +0 -0
  386. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_messages_item_role.py +0 -0
  387. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_outputs_item.py +0 -0
  388. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_outputs_item_json_schema.py +0 -0
  389. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_outputs_item_type.py +0 -0
  390. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_prompting_technique.py +0 -0
  391. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_prompting_technique_demonstrations.py +0 -0
  392. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_prompting_technique_demonstrations_inline.py +0 -0
  393. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_prompting_technique_demonstrations_inline_column_types_item.py +0 -0
  394. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_prompting_technique_demonstrations_inline_records.py +0 -0
  395. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_prompting_technique_type.py +0 -0
  396. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_response_format.py +0 -0
  397. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_response_format_json_schema_type_0.py +0 -0
  398. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_response_format_json_schema_type_0_schema.py +0 -0
  399. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_response_format_type.py +0 -0
  400. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_scope.py +0 -0
  401. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_400.py +0 -0
  402. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_401.py +0 -0
  403. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_409.py +0 -0
  404. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_422.py +0 -0
  405. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_500.py +0 -0
  406. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_body_type_0.py +0 -0
  407. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_body_type_0_metadata.py +0 -0
  408. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_body_type_1.py +0 -0
  409. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_body_type_1_results_type_0.py +0 -0
  410. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_body_type_1_results_type_0_verdict.py +0 -0
  411. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_body_type_1_status.py +0 -0
  412. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_body_type_2.py +0 -0
  413. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_body_type_2_messages_item.py +0 -0
  414. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_response_201.py +0 -0
  415. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_response_400.py +0 -0
  416. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_response_401.py +0 -0
  417. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_response_422.py +0 -0
  418. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_response_500.py +0 -0
  419. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_trace_id_share_response_200.py +0 -0
  420. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_api_trace_id_unshare_response_200.py +0 -0
  421. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_body.py +0 -0
  422. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_body_inputs_item.py +0 -0
  423. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_body_inputs_item_type.py +0 -0
  424. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_body_messages_item.py +0 -0
  425. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_body_messages_item_role.py +0 -0
  426. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_body_outputs_item.py +0 -0
  427. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_body_outputs_item_json_schema.py +0 -0
  428. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_body_outputs_item_type.py +0 -0
  429. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_body_scope.py +0 -0
  430. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_response_200.py +0 -0
  431. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_response_200_messages_item.py +0 -0
  432. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_response_200_messages_item_role.py +0 -0
  433. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_response_200_response_format_type_0.py +0 -0
  434. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_response_200_response_format_type_0_json_schema.py +0 -0
  435. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_response_200_response_format_type_0_json_schema_schema.py +0 -0
  436. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_response_200_response_format_type_0_type.py +0 -0
  437. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_response_200_scope.py +0 -0
  438. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_response_400.py +0 -0
  439. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_response_401.py +0 -0
  440. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/post_index_response_500.py +0 -0
  441. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_body.py +0 -0
  442. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_body_inputs_item.py +0 -0
  443. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_body_inputs_item_type.py +0 -0
  444. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_body_messages_item.py +0 -0
  445. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_body_messages_item_role.py +0 -0
  446. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_body_outputs_item.py +0 -0
  447. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_body_outputs_item_json_schema.py +0 -0
  448. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_body_outputs_item_type.py +0 -0
  449. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_body_schema_version.py +0 -0
  450. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_body_scope.py +0 -0
  451. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200.py +0 -0
  452. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_demonstrations.py +0 -0
  453. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_demonstrations_inline.py +0 -0
  454. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_demonstrations_inline_column_types_item.py +0 -0
  455. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_demonstrations_inline_records.py +0 -0
  456. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_inputs_item.py +0 -0
  457. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_inputs_item_type.py +0 -0
  458. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_messages_item.py +0 -0
  459. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_messages_item_role.py +0 -0
  460. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_outputs_item.py +0 -0
  461. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_outputs_item_json_schema.py +0 -0
  462. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_outputs_item_type.py +0 -0
  463. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_prompting_technique.py +0 -0
  464. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_prompting_technique_demonstrations.py +0 -0
  465. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_prompting_technique_demonstrations_inline.py +0 -0
  466. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_prompting_technique_demonstrations_inline_column_types_item.py +0 -0
  467. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_prompting_technique_demonstrations_inline_records.py +0 -0
  468. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_prompting_technique_type.py +0 -0
  469. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_response_format.py +0 -0
  470. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_response_format_json_schema_type_0.py +0 -0
  471. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_response_format_json_schema_type_0_schema.py +0 -0
  472. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_response_format_type.py +0 -0
  473. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_scope.py +0 -0
  474. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_400.py +0 -0
  475. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_401.py +0 -0
  476. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_404.py +0 -0
  477. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_409.py +0 -0
  478. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_422.py +0 -0
  479. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_500.py +0 -0
  480. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/search_request.py +0 -0
  481. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/search_request_filters.py +0 -0
  482. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/search_response.py +0 -0
  483. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/timestamps.py +0 -0
  484. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/models/trace.py +0 -0
  485. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/py.typed +0 -0
  486. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/generated/langwatch_rest_api_client/types.py +0 -0
  487. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/guardrails.py +0 -0
  488. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/langchain.py +0 -0
  489. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/litellm.py +0 -0
  490. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/login.py +0 -0
  491. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/openai.py +0 -0
  492. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/prompts/__init__.py +0 -0
  493. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/prompts/decorators/prompt_service_tracing.py +0 -0
  494. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/prompts/decorators/prompt_tracing.py +0 -0
  495. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/prompts/errors.py +0 -0
  496. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/prompts/local_loader.py +0 -0
  497. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/prompts/prompt.py +0 -0
  498. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/prompts/prompt_api_service.py +0 -0
  499. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/prompts/prompt_facade.py +0 -0
  500. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/prompts/types/__init__.py +0 -0
  501. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/prompts/types/fetch_policy.py +0 -0
  502. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/prompts/types/prompt_data.py +0 -0
  503. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/prompts/types/structures.py +0 -0
  504. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/py.typed +0 -0
  505. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/state.py +0 -0
  506. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/telemetry/__tests__/test_tracing.py +0 -0
  507. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/telemetry/context.py +0 -0
  508. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/telemetry/sampling.py +0 -0
  509. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/telemetry/span.py +0 -0
  510. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/telemetry/tracing.py +0 -0
  511. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/telemetry/types.py +0 -0
  512. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/tracer.py +0 -0
  513. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/types.py +0 -0
  514. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/utils/__init__.py +0 -0
  515. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/utils/capture.py +0 -0
  516. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/utils/exceptions.py +0 -0
  517. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/utils/initialization.py +0 -0
  518. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/utils/module.py +0 -0
  519. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/utils/transformation.py +0 -0
  520. {langwatch-0.8.1 → langwatch-0.10.0}/src/langwatch/utils/utils.py +0 -0
  521. {langwatch-0.8.1 → langwatch-0.10.0}/tests/conftest.py +0 -0
  522. {langwatch-0.8.1 → langwatch-0.10.0}/tests/e2e/test_fetch_policies_e2e.py +0 -0
  523. {langwatch-0.8.1 → langwatch-0.10.0}/tests/exporters/test_filterable_batch_span_exporter.py +0 -0
  524. {langwatch-0.8.1 → langwatch-0.10.0}/tests/fixtures/README.md +0 -0
  525. {langwatch-0.8.1 → langwatch-0.10.0}/tests/fixtures/__init__.py +0 -0
  526. {langwatch-0.8.1 → langwatch-0.10.0}/tests/fixtures/get_response_factories.py +0 -0
  527. {langwatch-0.8.1 → langwatch-0.10.0}/tests/fixtures/prompts/cli.py +0 -0
  528. {langwatch-0.8.1 → langwatch-0.10.0}/tests/fixtures/prompts/general.py +0 -0
  529. {langwatch-0.8.1 → langwatch-0.10.0}/tests/fixtures/prompts/prompt_fixtures.py +0 -0
  530. {langwatch-0.8.1 → langwatch-0.10.0}/tests/fixtures/span_exporter.py +0 -0
  531. {langwatch-0.8.1 → langwatch-0.10.0}/tests/prompts/test_fetch_policies.py +0 -0
  532. {langwatch-0.8.1 → langwatch-0.10.0}/tests/prompts/test_guaranteed_availability.py +0 -0
  533. {langwatch-0.8.1 → langwatch-0.10.0}/tests/prompts/test_local_loader.py +0 -0
  534. {langwatch-0.8.1 → langwatch-0.10.0}/tests/prompts/test_prompt.py +0 -0
  535. {langwatch-0.8.1 → langwatch-0.10.0}/tests/prompts/test_prompt_service_tracing.py +0 -0
  536. {langwatch-0.8.1 → langwatch-0.10.0}/tests/prompts/test_prompt_tracing.py +0 -0
  537. {langwatch-0.8.1 → langwatch-0.10.0}/tests/telemetry/test_context.py +0 -0
  538. {langwatch-0.8.1 → langwatch-0.10.0}/tests/telemetry/test_tracing.py +0 -0
  539. {langwatch-0.8.1 → langwatch-0.10.0}/tests/test_cli_runner.py +0 -0
  540. {langwatch-0.8.1 → langwatch-0.10.0}/tests/test_client.py +0 -0
  541. {langwatch-0.8.1 → langwatch-0.10.0}/tests/test_examples.py +0 -0
  542. {langwatch-0.8.1 → langwatch-0.10.0}/tests/test_login.py +0 -0
  543. {langwatch-0.8.1 → langwatch-0.10.0}/tests/test_version.py +0 -0
  544. {langwatch-0.8.1 → langwatch-0.10.0}/tests/utils/test_transformation.py +0 -0
@@ -1,5 +1,37 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.10.0](https://github.com/langwatch/langwatch/compare/python-sdk@v0.9.0...python-sdk@v0.10.0) (2026-01-21)
4
+
5
+
6
+ ### Features
7
+
8
+ * **sdk:** add online evaluations API and ensureSetup for TypeScript ([2209258](https://github.com/langwatch/langwatch/commit/22092580433b9a3014123e62f39cf8c44543d8cc))
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * **python-sdk:** resolve name collision between Evaluation TypedDict and class alias ([873909a](https://github.com/langwatch/langwatch/commit/873909a09414bb309fa955b68e4a19bddc93e21f))
14
+
15
+
16
+ ### Code Refactoring
17
+
18
+ * **sdk:** fix evaluation API naming consistency ([3aef2a3](https://github.com/langwatch/langwatch/commit/3aef2a353cc4939c8087b53044f441e7501530ae))
19
+ * **sdk:** rename evaluation API to experiment for new terminology ([f10326c](https://github.com/langwatch/langwatch/commit/f10326c0f2ee5818fbcf51507a95933bfe83caeb))
20
+ * **sdk:** rename internal evaluation classes to experiment ([ff70cab](https://github.com/langwatch/langwatch/commit/ff70cab904905b85a77a68e7b1eb60e9c364a18d))
21
+
22
+ ## [0.9.0](https://github.com/langwatch/langwatch/compare/python-sdk@v0.8.1...python-sdk@v0.9.0) (2026-01-18)
23
+
24
+
25
+ ### Features
26
+
27
+ * add CI/CD execution support for evaluations v3 ([#1118](https://github.com/langwatch/langwatch/issues/1118)) ([d28adac](https://github.com/langwatch/langwatch/commit/d28adaceeb87921d9c7c0f1cf76b5e03f3b90fbd))
28
+ * evaluations v3 execution and new evaluations results page ([#1113](https://github.com/langwatch/langwatch/issues/1113)) ([510f65d](https://github.com/langwatch/langwatch/commit/510f65d17e13c539b877e7eed2fefff118ceb705))
29
+
30
+
31
+ ### Bug Fixes
32
+
33
+ * various evaluations v3 fixes ([#1122](https://github.com/langwatch/langwatch/issues/1122)) ([c9904fc](https://github.com/langwatch/langwatch/commit/c9904fc898a7982ec0b23b11fcfeed83f34fbeb7))
34
+
3
35
  ## [0.8.1](https://github.com/langwatch/langwatch/compare/python-sdk@v0.8.0...python-sdk@v0.8.1) (2026-01-06)
4
36
 
5
37
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langwatch
3
- Version: 0.8.1
3
+ Version: 0.10.0
4
4
  Summary: LangWatch Python SDK, for monitoring your LLMs
5
5
  Author-email: Langwatch Engineers <engineering@langwatch.ai>
6
6
  License: MIT
@@ -12,11 +12,7 @@ import dspy
12
12
 
13
13
  lm = dspy.LM("openai/gpt-4o-mini", api_key=os.environ["OPENAI_API_KEY"])
14
14
 
15
- colbertv2_wiki17_abstracts = dspy.ColBERTv2(
16
- url="http://20.102.90.50:2017/wiki17_abstracts"
17
- )
18
-
19
- dspy.settings.configure(lm=lm, rm=colbertv2_wiki17_abstracts)
15
+ dspy.settings.configure(lm=lm)
20
16
 
21
17
 
22
18
  class GenerateAnswer(dspy.Signature):
@@ -28,14 +24,13 @@ class GenerateAnswer(dspy.Signature):
28
24
 
29
25
 
30
26
  class RAG(dspy.Module):
31
- def __init__(self, num_passages=3):
27
+ def __init__(self):
32
28
  super().__init__()
33
29
 
34
- self.retrieve = dspy.Retrieve(k=num_passages)
35
30
  self.generate_answer = dspy.ChainOfThought(GenerateAnswer)
36
31
 
37
32
  def forward(self, question):
38
- context = self.retrieve(question).passages # type: ignore
33
+ context = ["This is a test context"]
39
34
  prediction = self.generate_answer(question=question, context=context)
40
35
  return dspy.Prediction(answer=prediction.answer)
41
36
 
@@ -0,0 +1,37 @@
1
+ import time
2
+ from dotenv import load_dotenv
3
+
4
+ load_dotenv()
5
+
6
+ import chainlit as cl
7
+
8
+ import langwatch
9
+
10
+
11
+ @langwatch.span(type="llm")
12
+ def generate(message: str):
13
+ time.sleep(1) # generating the message...
14
+
15
+ generated_message = """# Image generation
16
+
17
+ ![Image](data:image/png;base64,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VHQAAKAiAj4AAFREwAcAgIoI+AAAUBEBHwAAKiLgAwBARQR8AACoiIAPAAAVEfABAKAiAj4AAFREwAcAgIoI+AAAUBEBHwAAKiLgAwBARQR8AACoiIAPAAAVEfABAKAiAj4AAFREwAcAgIoI+AAAUBEBHwAAKiLgAwBARQR8AACoiIAPAAAVEfABAKAiAj4AAFREwAcAgIoI+AAAUBEBHwAAKiLgAwBARQR8AACoiIAPAAAVEfABAKAiAj4AAFREwAcAgIoI+AAAUBEBHwAAKiLgAwBARQR8AACoiIAPAAAVEfABAKAiAj4AAFREwAcAgIoI+AAAUBEBHwAAKiLgAwBARQR8AACoiIAPAAAVEfABAKAiAj4AAFREwAcAgIoI+AAAUBEBHwAAKiLgAwBARQR8AACoiIAPAAAVEfABAKAiAj4AAFREwAcAgIoI+AAAUBEBHwAAKiLgAwBARQR8AACoiIAPAAAVEfABAKAiAj4AAFREwAcAgIoI+AAAUBEBHwAAKiLgAwBARQR8AACoiIAPAAAVEfABAKAiAj4AAFREwAcAgIoI+AAAUBEBHwAAKiLgAwBARQR8AACoiIAPAAAVEfABAKAiAj4AAFREwAcAgIoI+AAAUBEBHwAAKiLgAwBARQR8AACoiIAPAAAVEfABAKAiAj4AAFREwAcAgIoI+AAAUBEBHwAAKiLgAwBARQR8AACoiIAPAAAVEfABAKAiAj4AAFREwAcAgIoI+AAAUBEBHwAAKiLgAwBARQR8AACoiIAPAAAVEfABAKAiAj4AAFREwAcAgIoI+AAAUBEBHwAAKiLgAwBARQR8AACoiIAPAAAVEfABAKAiAj4AAFREwAcAgIoI+AAAUBEBHwAAKiLgAwBARQR8AACoiIAPAAAVEfABAKAiAj4AAFREwAcAgIoI+AAAUBEBHwAAKiLgAwBARQR8AACoiIAPAAAVEfABAKAiAj4AAFREwAcAgIoI+AAAUBEBHwAAKiLgAwBARQR8AACoiIAPAAAVEfABAKAiAj4AAFREwAcAgIoI+AAAUBEBHwAAKiLgAwBARQR8AACoiIAPAAAVEfABAKAiAj4AAFREwAcAgIoI+AAAUBEBHwAAKiLgAwBARQR8AACoiIAPAAAVEfABAKAiAj4AAFREwAcAgIoI+AAAUBEBHwAAKiLgAwBARQR8AACoiIAPAAAV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)
18
+ """
19
+
20
+ return generated_message
21
+
22
+
23
+ @cl.on_message
24
+ @langwatch.trace(max_string_length=None)
25
+ async def main(message: cl.Message):
26
+ msg = cl.Message(
27
+ content="",
28
+ )
29
+
30
+ langwatch.get_current_trace().update(
31
+ metadata={"user_id": "123", "question_id": "456", "labels": ["some-label"]}
32
+ )
33
+
34
+ generated_message = generate(message.content)
35
+
36
+ await msg.stream_token(generated_message)
37
+ await msg.update()
@@ -8,7 +8,7 @@ from openai import OpenAI
8
8
  client = OpenAI()
9
9
 
10
10
  import langwatch
11
- import langwatch.guardrails
11
+ import langwatch.evaluation
12
12
 
13
13
 
14
14
  @cl.on_message
@@ -23,11 +23,15 @@ async def main(message: cl.Message):
23
23
  content="",
24
24
  )
25
25
 
26
- jailbreak_guardrail = langwatch.get_current_span().evaluate(
27
- "jailbreak-detection", as_guardrail=True, input=message.content
26
+ # New API: Use langwatch.evaluation.evaluate() instead of span.evaluate()
27
+ jailbreak_guardrail = langwatch.evaluation.evaluate(
28
+ "jailbreak-detection",
29
+ data={"input": message.content},
30
+ name="Jailbreak Detection",
31
+ as_guardrail=True,
28
32
  )
29
33
  if not jailbreak_guardrail.passed:
30
- await msg.stream_token(f"I'm sorry, I can't help you with that.")
34
+ await msg.stream_token("I'm sorry, I can't help you with that.")
31
35
  await msg.update()
32
36
  return
33
37
 
@@ -8,8 +8,8 @@ from openai import AsyncOpenAI
8
8
 
9
9
  client = AsyncOpenAI()
10
10
 
11
- import langwatch.openai
12
- import langwatch.guardrails
11
+ import langwatch
12
+ import langwatch.evaluation
13
13
 
14
14
 
15
15
  @cl.on_message
@@ -24,14 +24,19 @@ async def main(message: cl.Message):
24
24
  content="",
25
25
  )
26
26
 
27
+ # New API: Use langwatch.evaluation.async_evaluate() for parallel guardrails
27
28
  jailbreak_guardrail = asyncio.create_task(
28
- langwatch.get_current_span().async_evaluate(
29
- "jailbreak-detection", as_guardrail=True, input=message.content
29
+ langwatch.evaluation.async_evaluate(
30
+ "jailbreak-detection",
31
+ data={"input": message.content},
32
+ as_guardrail=True,
30
33
  )
31
34
  )
32
35
  off_topic_guardrail = asyncio.create_task(
33
- langwatch.get_current_span().async_evaluate(
34
- "off-topic-evaluator", as_guardrail=True, input=message.content
36
+ langwatch.evaluation.async_evaluate(
37
+ "off-topic-evaluator",
38
+ data={"input": message.content},
39
+ as_guardrail=True,
35
40
  )
36
41
  )
37
42
 
@@ -39,14 +44,14 @@ async def main(message: cl.Message):
39
44
  if jailbreak_guardrail.done():
40
45
  result = await jailbreak_guardrail
41
46
  if not result.passed:
42
- await msg.stream_token(f"I'm sorry, I can't help you with that.")
47
+ await msg.stream_token("I'm sorry, I can't help you with that.")
43
48
  await msg.update()
44
49
  return True
45
50
 
46
51
  if off_topic_guardrail.done():
47
52
  result = await off_topic_guardrail
48
53
  if not result.passed:
49
- await msg.stream_token(f"I'm sorry, I can't help you with that.")
54
+ await msg.stream_token("I'm sorry, I can't help you with that.")
50
55
  await msg.update()
51
56
  return True
52
57
 
@@ -7,7 +7,7 @@ from openai import OpenAI
7
7
 
8
8
  client = OpenAI()
9
9
 
10
- import langwatch.guardrails
10
+ import langwatch.evaluation
11
11
 
12
12
 
13
13
  @cl.on_message
@@ -16,11 +16,14 @@ async def main(message: cl.Message):
16
16
  content="",
17
17
  )
18
18
 
19
- jailbreak_guardrail = langwatch.guardrails.evaluate(
20
- "jailbreak-detection", input=message.content
19
+ # New API: Use langwatch.evaluation.evaluate() with as_guardrail=True
20
+ jailbreak_guardrail = langwatch.evaluation.evaluate(
21
+ "jailbreak-detection",
22
+ data={"input": message.content},
23
+ as_guardrail=True,
21
24
  )
22
25
  if not jailbreak_guardrail.passed:
23
- await msg.stream_token(f"I'm sorry, I can't help you with that.")
26
+ await msg.stream_token("I'm sorry, I can't help you with that.")
24
27
  await msg.update()
25
28
  return
26
29
 
@@ -0,0 +1,301 @@
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "markdown",
5
+ "id": "cde8a9dc",
6
+ "metadata": {},
7
+ "source": [
8
+ "# LangWatch Evaluation Tracking\n",
9
+ "\n",
10
+ "## Step 1: Define our LLM pipeline\n",
11
+ "\n",
12
+ "Let's create a simple RAG pipeline using LangChain, guaranteeing that we can get the output and the retrieved documents used during generation."
13
+ ]
14
+ },
15
+ {
16
+ "cell_type": "code",
17
+ "execution_count": null,
18
+ "id": "a61c2b75",
19
+ "metadata": {},
20
+ "outputs": [
21
+ {
22
+ "name": "stdout",
23
+ "output_type": "stream",
24
+ "text": [
25
+ "USER_AGENT environment variable not set, consider setting it to identify your requests.\n"
26
+ ]
27
+ },
28
+ {
29
+ "name": "stdout",
30
+ "output_type": "stream",
31
+ "text": [
32
+ "2025-05-24 10:04:14,630 - langwatch.utils.initialization - INFO - Setting up LangWatch client...\n",
33
+ "2025-05-24 10:04:14,636 - langwatch.client - INFO - Configuring OTLP exporter with endpoint: http://localhost:5560/api/otel/v1/traces\n",
34
+ "2025-05-24 10:04:14,636 - langwatch.client - INFO - Registering atexit handler to flush tracer provider on exit\n",
35
+ "2025-05-24 10:04:14,636 - langwatch.client - INFO - Successfully configured tracer provider with OTLP exporter\n",
36
+ "2025-05-24 10:04:14,637 - langwatch.utils.initialization - INFO - LangWatch client setup complete\n"
37
+ ]
38
+ },
39
+ {
40
+ "name": "stdout",
41
+ "output_type": "stream",
42
+ "text": [
43
+ "/var/folders/rp/9_s_f3kd1ssb089myww_p9zw0000gn/T/ipykernel_62985/2347759746.py:39: LangChainDeprecationWarning: The method `BaseRetriever.get_relevant_documents` was deprecated in langchain-core 0.1.46 and will be removed in 1.0. Use :meth:`~invoke` instead.\n",
44
+ " retrieved_documents = retriever.get_relevant_documents(query)\n"
45
+ ]
46
+ },
47
+ {
48
+ "name": "stdout",
49
+ "output_type": "stream",
50
+ "text": [
51
+ "\n",
52
+ "retrieved_documents: ['Introduction - LangWatchLangWatch home pageSearch...llms.txtSupportDashboardlangwatch/langwatchlangwatch/langwatchSearch...NavigationGet StartedIntroductionDocumentationOpen DashboardGitHub RepoGet StartedIntroductionSelf HostingCookbooksLLM ObservabilityOverviewConceptsLanguage APIs & SDKsUser EventsMonitoring & AlertsCode ExamplesLLM EvaluationOffline EvaluationReal-Time EvaluationList of EvaluatorsDatasetsAnnotationsLLM DevelopmentPrompt Optimization StudioDSPy VisualizationLangWatch MCPPrompt VersioningAPI EndpointsTracesPromptsAnnotationsDatasetsSupportTroubleshooting and SupportStatus PageGet StartedIntroductionCopy pageWelcome to LangWatch, the all-in-one open-source LLMops platform.LangWatch allows you to track, monitor, guardrail and evaluate your LLMs apps for measuring quality and alert on issues.\\nFor domain experts, it allows you to easily sift through conversations, see topics being discussed and annotate and score messages', 'For domain experts, it allows you to easily sift through conversations, see topics being discussed and annotate and score messages\\nfor improvement in a collaborative manner with the development team.\\nFor developers, it allows you to debug, build datasets, prompt engineer on the playground and\\nrun batch evaluations or DSPy experiments to continuously improve the product.\\nFinally, for the business, it allows you to track conversation metrics and give full user and quality analytics, cost tracking, build\\ncustom dashboards and even integrate it back on your own platform for reporting to your customers.\\nYou can sign up and already start the integration on our free tier by following the guides bellow:\\nPython Integration GuideTypeScript Integration GuideREST API\\nYou can also open the demo project check out a video on our platform.\\n\\u200bGet in touch\\nFeel free to reach out to us directly at [email\\xa0protected]. You can also open a GitHub issue', 'You can also open the demo project check out a video on our platform.\\n\\u200bGet in touch\\nFeel free to reach out to us directly at [email\\xa0protected]. You can also open a GitHub issue\\nto report bugs and request features, or join our Discord channel and ask questions directly for the community and the core team.Was this page helpful?YesNoOverviewgithubwebsitex-twitterlinkedinyoutubePowered by MintlifyOn this pageGet in touchAssistantResponses are generated using AI and may contain mistakes.']\n",
53
+ "output: LangWatch is an open-source LLMops platform for tracking, monitoring, and evaluating LLM applications, helping improve quality and alert on issues.\n"
54
+ ]
55
+ }
56
+ ],
57
+ "source": [
58
+ "from dotenv import load_dotenv\n",
59
+ "\n",
60
+ "load_dotenv(dotenv_path=\"langwatch/python-sdk/.env\")\n",
61
+ "\n",
62
+ "import langwatch\n",
63
+ "\n",
64
+ "from langchain.prompts import ChatPromptTemplate\n",
65
+ "\n",
66
+ "from langchain_community.document_loaders import WebBaseLoader\n",
67
+ "from langchain_community.vectorstores.faiss import FAISS\n",
68
+ "from langchain_core.vectorstores.base import VectorStoreRetriever\n",
69
+ "from langchain_openai import ChatOpenAI, OpenAIEmbeddings\n",
70
+ "from langchain_text_splitters import RecursiveCharacterTextSplitter\n",
71
+ "from langchain.tools.retriever import create_retriever_tool\n",
72
+ "from langchain.agents import AgentExecutor, create_tool_calling_agent\n",
73
+ "from langchain.tools import BaseTool\n",
74
+ "from langchain_core.documents import Document\n",
75
+ "\n",
76
+ "\n",
77
+ "loader = WebBaseLoader(\"https://docs.langwatch.ai\")\n",
78
+ "docs = loader.load()\n",
79
+ "documents = RecursiveCharacterTextSplitter(\n",
80
+ " chunk_size=1000, chunk_overlap=200\n",
81
+ ").split_documents(docs)\n",
82
+ "\n",
83
+ "vector = FAISS.from_documents(documents, OpenAIEmbeddings())\n",
84
+ "retriever = vector.as_retriever()\n",
85
+ "\n",
86
+ "retrieved_documents = []\n",
87
+ "\n",
88
+ "# Wrap the FAISS retriever so that we can capture which documents were used to generate the response\n",
89
+ "@tool\n",
90
+ "def langwatch_search(\n",
91
+ " query: str\n",
92
+ ") -> list[Document]:\n",
93
+ " \"\"\"\"Search for information about LangWatch. For any questions about LangWatch, use this tool if you didn't already\"\"\"\n",
94
+ "\n",
95
+ " global retrieved_documents\n",
96
+ " retrieved_documents = retriever.get_relevant_documents(query)\n",
97
+ " return retrieved_documents\n",
98
+ "\n",
99
+ "tools = [langwatch_search]\n",
100
+ "model = ChatOpenAI(model=\"gpt-4o-mini\")\n",
101
+ "prompt = ChatPromptTemplate.from_messages(\n",
102
+ " [\n",
103
+ " (\n",
104
+ " \"system\",\n",
105
+ " \"You are a helpful assistant that only reply in short tweet-like responses, use tools only once.\\n\\n{agent_scratchpad}\",\n",
106
+ " ),\n",
107
+ " (\"human\", \"{question}\"),\n",
108
+ " ]\n",
109
+ ")\n",
110
+ "agent = create_tool_calling_agent(model, tools, prompt)\n",
111
+ "executor = AgentExecutor(agent=agent, tools=tools, verbose=False) # type: ignore\n",
112
+ "\n",
113
+ "@langwatch.trace()\n",
114
+ "def execute_rag_pipeline(question: str):\n",
115
+ " response = executor.invoke({\"question\": question})[\"output\"]\n",
116
+ " contexts = [d.page_content for d in retrieved_documents]\n",
117
+ " return response, contexts\n",
118
+ "\n",
119
+ "response, contexts = execute_rag_pipeline(\"What is LangWatch?\")\n",
120
+ "\n",
121
+ "print(\"\")\n",
122
+ "print(\"retrieved_documents:\", contexts)\n",
123
+ "print(\"output:\", response)"
124
+ ]
125
+ },
126
+ {
127
+ "cell_type": "markdown",
128
+ "id": "eac02587",
129
+ "metadata": {},
130
+ "source": [
131
+ "## Step 2: Run the Offline Evaluation\n",
132
+ "\n",
133
+ "Now we can use the dataset we have from LangWatch to run a batch evaluation experiment through our LLM pipeline, to see the results and tweak it for optimizations."
134
+ ]
135
+ },
136
+ {
137
+ "cell_type": "code",
138
+ "execution_count": 2,
139
+ "id": "d47459a6",
140
+ "metadata": {},
141
+ "outputs": [
142
+ {
143
+ "name": "stdout",
144
+ "output_type": "stream",
145
+ "text": [
146
+ "Follow the results at: http://localhost:5560/inbox-narrator/experiments/my-incredible-experiment?runId=hopping-goat-of-glory\n"
147
+ ]
148
+ },
149
+ {
150
+ "data": {
151
+ "application/vnd.jupyter.widget-view+json": {
152
+ "model_id": "62ea227bee9b4f529f2c4efef7b93c7c",
153
+ "version_major": 2,
154
+ "version_minor": 0
155
+ },
156
+ "text/plain": [
157
+ "Evaluating: 0%| | 0/6 [00:00<?, ?it/s]"
158
+ ]
159
+ },
160
+ "metadata": {},
161
+ "output_type": "display_data"
162
+ },
163
+ {
164
+ "name": "stdout",
165
+ "output_type": "stream",
166
+ "text": [
167
+ "Failed to detach context\n",
168
+ "Traceback (most recent call last):\n",
169
+ " File \"/Users/rchaves/Projects/langwatch-saas/langwatch/python-sdk/.venv/lib/python3.11/site-packages/opentelemetry/context/__init__.py\", line 155, in detach\n",
170
+ " _RUNTIME_CONTEXT.detach(token)\n",
171
+ " File \"/Users/rchaves/Projects/langwatch-saas/langwatch/python-sdk/.venv/lib/python3.11/site-packages/opentelemetry/context/contextvars_context.py\", line 53, in detach\n",
172
+ " self._current_context.reset(token)\n",
173
+ "ValueError: <Token var=<ContextVar name='current_context' default={} at 0x10b2d4d10> at 0x31ab882c0> was created in a different Context\n",
174
+ "Failed to detach context\n",
175
+ "Traceback (most recent call last):\n",
176
+ " File \"/Users/rchaves/Projects/langwatch-saas/langwatch/python-sdk/.venv/lib/python3.11/site-packages/pydantic/type_adapter.py\", line 271, in _init_core_attrs\n",
177
+ " self.core_schema = _getattr_no_parents(self._type, '__pydantic_core_schema__')\n",
178
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
179
+ " File \"/Users/rchaves/Projects/langwatch-saas/langwatch/python-sdk/.venv/lib/python3.11/site-packages/pydantic/type_adapter.py\", line 55, in _getattr_no_parents\n",
180
+ " raise AttributeError(attribute)\n",
181
+ "AttributeError: __pydantic_core_schema__\n",
182
+ "\n",
183
+ "During handling of the above exception, another exception occurred:\n",
184
+ "\n",
185
+ "Traceback (most recent call last):\n",
186
+ " File \"/Users/rchaves/Projects/langwatch-saas/langwatch/python-sdk/.venv/lib/python3.11/site-packages/opentelemetry/context/__init__.py\", line 155, in detach\n",
187
+ " _RUNTIME_CONTEXT.detach(token)\n",
188
+ " File \"/Users/rchaves/Projects/langwatch-saas/langwatch/python-sdk/.venv/lib/python3.11/site-packages/opentelemetry/context/contextvars_context.py\", line 53, in detach\n",
189
+ " self._current_context.reset(token)\n",
190
+ "ValueError: <Token var=<ContextVar name='current_context' default={} at 0x10b2d4d10> at 0x319a37e40> was created in a different Context\n",
191
+ "Failed to detach context\n",
192
+ "Traceback (most recent call last):\n",
193
+ " File \"/Users/rchaves/Projects/langwatch-saas/langwatch/python-sdk/.venv/lib/python3.11/site-packages/pydantic/type_adapter.py\", line 271, in _init_core_attrs\n",
194
+ " self.core_schema = _getattr_no_parents(self._type, '__pydantic_core_schema__')\n",
195
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
196
+ " File \"/Users/rchaves/Projects/langwatch-saas/langwatch/python-sdk/.venv/lib/python3.11/site-packages/pydantic/type_adapter.py\", line 55, in _getattr_no_parents\n",
197
+ " raise AttributeError(attribute)\n",
198
+ "AttributeError: __pydantic_core_schema__\n",
199
+ "\n",
200
+ "During handling of the above exception, another exception occurred:\n",
201
+ "\n",
202
+ "Traceback (most recent call last):\n",
203
+ " File \"/Users/rchaves/Projects/langwatch-saas/langwatch/python-sdk/.venv/lib/python3.11/site-packages/opentelemetry/context/__init__.py\", line 155, in detach\n",
204
+ " _RUNTIME_CONTEXT.detach(token)\n",
205
+ " File \"/Users/rchaves/Projects/langwatch-saas/langwatch/python-sdk/.venv/lib/python3.11/site-packages/opentelemetry/context/contextvars_context.py\", line 53, in detach\n",
206
+ " self._current_context.reset(token)\n",
207
+ "ValueError: <Token var=<ContextVar name='current_context' default={} at 0x10b2d4d10> at 0x31a879580> was created in a different Context\n"
208
+ ]
209
+ }
210
+ ],
211
+ "source": [
212
+ "import langwatch\n",
213
+ "import pandas as pd\n",
214
+ "\n",
215
+ "# Create a dataset\n",
216
+ "df = pd.DataFrame(\n",
217
+ " [\n",
218
+ " {\n",
219
+ " \"question\": \"What is LangWatch?\",\n",
220
+ " \"answer\": \"LangWatch is a platform for evaluating and improving language models.\",\n",
221
+ " },\n",
222
+ " {\n",
223
+ " \"question\": \"How do I use LangWatch?\",\n",
224
+ " \"answer\": \"You can use LangWatch by installing the LangWatch SDK and then calling the LangWatch API.\",\n",
225
+ " },\n",
226
+ " {\n",
227
+ " \"question\": \"Does LangWatch support multiple language models?\",\n",
228
+ " \"answer\": \"Yes, LangWatch is compatible with all language models by using LiteLLM under the hood.\",\n",
229
+ " },\n",
230
+ " {\n",
231
+ " \"question\": \"Can I visualize evaluation metrics in LangWatch?\",\n",
232
+ " \"answer\": \"Yes, LangWatch provides dashboards for visualizing key evaluation metrics.\",\n",
233
+ " },\n",
234
+ " {\n",
235
+ " \"question\": \"Is there a free tier for LangWatch?\",\n",
236
+ " \"answer\": \"LangWatch offers a free tier with limited usage, ideal for small projects and evaluation.\",\n",
237
+ " },\n",
238
+ " {\n",
239
+ " \"question\": \"Where can I find documentation for LangWatch?\",\n",
240
+ " \"answer\": \"You can find the official documentation on the LangWatch website or GitHub repository.\",\n",
241
+ " },\n",
242
+ " ]\n",
243
+ ")\n",
244
+ "# Or retrieve it from LangWatch:\n",
245
+ "# df = langwatch.dataset.get_dataset(\"CEtFivQeya4kyAzy9eJht\").to_pandas() # dataset--rSAYL4HxQRXHSayq6c7A\n",
246
+ "\n",
247
+ "evaluation = langwatch.experiment.init(\"my-incredible-experiment\")\n",
248
+ "\n",
249
+ "for index, row in evaluation.loop(df.iterrows()):\n",
250
+ " def task(index, row):\n",
251
+ " response, contexts = execute_rag_pipeline(row[\"question\"])\n",
252
+ "\n",
253
+ " evaluation.evaluate(\n",
254
+ " \"ragas/faithfulness\",\n",
255
+ " name=\"Faithfulness\",\n",
256
+ " index=index,\n",
257
+ " data={\n",
258
+ " \"input\": row[\"question\"],\n",
259
+ " \"output\": response,\n",
260
+ " \"contexts\": contexts,\n",
261
+ " },\n",
262
+ " settings={\n",
263
+ " \"model\": \"openai/gpt-4o-mini\",\n",
264
+ " \"max_tokens\": 2048,\n",
265
+ " \"autodetect_dont_know\": True,\n",
266
+ " },\n",
267
+ " )\n",
268
+ " evaluation.submit(task, index, row)"
269
+ ]
270
+ },
271
+ {
272
+ "cell_type": "code",
273
+ "execution_count": null,
274
+ "id": "c9fa8b21",
275
+ "metadata": {},
276
+ "outputs": [],
277
+ "source": []
278
+ }
279
+ ],
280
+ "metadata": {
281
+ "kernelspec": {
282
+ "display_name": ".venv",
283
+ "language": "python",
284
+ "name": "python3"
285
+ },
286
+ "language_info": {
287
+ "codemirror_mode": {
288
+ "name": "ipython",
289
+ "version": 3
290
+ },
291
+ "file_extension": ".py",
292
+ "mimetype": "text/x-python",
293
+ "name": "python",
294
+ "nbconvert_exporter": "python",
295
+ "pygments_lexer": "ipython3",
296
+ "version": "3.11.6"
297
+ }
298
+ },
299
+ "nbformat": 4,
300
+ "nbformat_minor": 5
301
+ }