langwatch 0.2.9__py3-none-any.whl → 0.2.11__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (344) hide show
  1. langwatch/__init__.py +14 -0
  2. langwatch/__version__.py +1 -1
  3. langwatch/attributes.py +4 -0
  4. langwatch/batch_evaluation.py +11 -2
  5. langwatch/generated/langwatch_rest_api_client/api/default/delete_api_scenario_events.py +183 -0
  6. langwatch/generated/langwatch_rest_api_client/api/default/get_api_prompts_by_id.py +22 -1
  7. langwatch/generated/langwatch_rest_api_client/api/default/get_api_prompts_by_id_versions.py +21 -16
  8. langwatch/generated/langwatch_rest_api_client/api/default/get_index.py +146 -0
  9. langwatch/generated/langwatch_rest_api_client/api/default/post_api_prompts.py +51 -10
  10. langwatch/generated/langwatch_rest_api_client/api/default/post_api_prompts_by_id_sync.py +230 -0
  11. langwatch/generated/langwatch_rest_api_client/api/default/post_api_scenario_events.py +229 -0
  12. langwatch/generated/langwatch_rest_api_client/api/default/post_index.py +175 -0
  13. langwatch/generated/langwatch_rest_api_client/api/default/put_api_prompts_by_id.py +26 -4
  14. langwatch/generated/langwatch_rest_api_client/models/__init__.py +719 -179
  15. langwatch/generated/langwatch_rest_api_client/models/delete_api_prompts_by_id_response_400.py +15 -6
  16. langwatch/generated/langwatch_rest_api_client/models/delete_api_prompts_by_id_response_401.py +15 -6
  17. langwatch/generated/langwatch_rest_api_client/models/delete_api_prompts_by_id_response_404.py +12 -1
  18. langwatch/generated/langwatch_rest_api_client/models/delete_api_prompts_by_id_response_500.py +12 -1
  19. langwatch/generated/langwatch_rest_api_client/models/delete_api_scenario_events_response_200.py +81 -0
  20. langwatch/generated/langwatch_rest_api_client/models/delete_api_scenario_events_response_400.py +70 -0
  21. langwatch/generated/langwatch_rest_api_client/models/delete_api_scenario_events_response_401.py +70 -0
  22. langwatch/generated/langwatch_rest_api_client/models/delete_api_scenario_events_response_500.py +70 -0
  23. langwatch/generated/langwatch_rest_api_client/models/get_api_dataset_by_slug_or_id_response_400.py +1 -12
  24. langwatch/generated/langwatch_rest_api_client/models/get_api_dataset_by_slug_or_id_response_401.py +1 -12
  25. langwatch/generated/langwatch_rest_api_client/models/get_api_dataset_by_slug_or_id_response_404.py +1 -12
  26. langwatch/generated/langwatch_rest_api_client/models/get_api_dataset_by_slug_or_id_response_500.py +1 -12
  27. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200.py +205 -43
  28. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_demonstrations.py +94 -0
  29. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_demonstrations_inline.py +93 -0
  30. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_demonstrations_inline_column_types_item.py +154 -0
  31. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_demonstrations_inline_records.py +51 -0
  32. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_inputs_item.py +69 -0
  33. langwatch/generated/langwatch_rest_api_client/models/{get_api_prompts_by_id_versions_response_200_config_data_inputs_item_type.py → get_api_prompts_by_id_response_200_inputs_item_type.py} +1 -1
  34. langwatch/generated/langwatch_rest_api_client/models/{post_api_prompts_by_id_versions_response_200_config_data_outputs_item.py → get_api_prompts_by_id_response_200_outputs_item.py} +17 -19
  35. langwatch/generated/langwatch_rest_api_client/models/{get_api_prompts_by_id_versions_response_200_config_data_outputs_item_json_schema.py → get_api_prompts_by_id_response_200_outputs_item_json_schema.py} +5 -5
  36. langwatch/generated/langwatch_rest_api_client/models/{get_api_prompts_by_id_versions_response_200_config_data_outputs_item_type.py → get_api_prompts_by_id_response_200_outputs_item_type.py} +1 -1
  37. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_prompting_technique.py +90 -0
  38. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_prompting_technique_demonstrations.py +94 -0
  39. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_prompting_technique_demonstrations_inline.py +95 -0
  40. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_prompting_technique_demonstrations_inline_column_types_item.py +154 -0
  41. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_prompting_technique_demonstrations_inline_records.py +53 -0
  42. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_prompting_technique_type.py +10 -0
  43. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_response_format.py +104 -0
  44. langwatch/generated/langwatch_rest_api_client/models/{get_api_prompts_by_id_response_200_response_format_type_0_json_schema.py → get_api_prompts_by_id_response_200_response_format_json_schema_type_0.py} +12 -12
  45. langwatch/generated/langwatch_rest_api_client/models/{get_api_prompts_by_id_response_200_response_format_type_0_json_schema_schema.py → get_api_prompts_by_id_response_200_response_format_json_schema_type_0_schema.py} +5 -5
  46. langwatch/generated/langwatch_rest_api_client/models/{post_api_prompts_response_200_response_format_type_0_type.py → get_api_prompts_by_id_response_200_response_format_type.py} +1 -1
  47. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_scope.py +9 -0
  48. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_400.py +15 -6
  49. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_401.py +15 -6
  50. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_404.py +12 -1
  51. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_500.py +12 -1
  52. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item.py +354 -0
  53. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_demonstrations.py +94 -0
  54. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_demonstrations_inline.py +93 -0
  55. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_demonstrations_inline_column_types_item.py +154 -0
  56. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_demonstrations_inline_records.py +53 -0
  57. langwatch/generated/langwatch_rest_api_client/models/{post_api_prompts_by_id_versions_body_config_data_inputs_item.py → get_api_prompts_by_id_versions_response_200_item_inputs_item.py} +10 -10
  58. langwatch/generated/langwatch_rest_api_client/models/{post_api_prompts_by_id_versions_body_config_data_inputs_item_type.py → get_api_prompts_by_id_versions_response_200_item_inputs_item_type.py} +1 -1
  59. langwatch/generated/langwatch_rest_api_client/models/{post_api_prompts_by_id_versions_body_config_data_messages_item.py → get_api_prompts_by_id_versions_response_200_item_messages_item.py} +10 -10
  60. langwatch/generated/langwatch_rest_api_client/models/{post_api_prompts_by_id_versions_body_config_data_messages_item_role.py → get_api_prompts_by_id_versions_response_200_item_messages_item_role.py} +1 -1
  61. langwatch/generated/langwatch_rest_api_client/models/{get_api_prompts_by_id_versions_response_200_config_data_outputs_item.py → get_api_prompts_by_id_versions_response_200_item_outputs_item.py} +18 -18
  62. langwatch/generated/langwatch_rest_api_client/models/{post_api_prompts_by_id_versions_body_config_data_outputs_item_json_schema.py → get_api_prompts_by_id_versions_response_200_item_outputs_item_json_schema.py} +5 -5
  63. langwatch/generated/langwatch_rest_api_client/models/{post_api_prompts_by_id_versions_body_config_data_outputs_item_type.py → get_api_prompts_by_id_versions_response_200_item_outputs_item_type.py} +1 -1
  64. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_prompting_technique.py +92 -0
  65. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_prompting_technique_demonstrations.py +94 -0
  66. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_prompting_technique_demonstrations_inline.py +98 -0
  67. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_prompting_technique_demonstrations_inline_column_types_item.py +158 -0
  68. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_prompting_technique_demonstrations_inline_records.py +51 -0
  69. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_prompting_technique_type.py +10 -0
  70. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_response_format.py +106 -0
  71. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_response_format_json_schema_type_0.py +77 -0
  72. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_response_format_json_schema_type_0_schema.py +44 -0
  73. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_response_format_type.py +8 -0
  74. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_item_scope.py +9 -0
  75. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_400.py +15 -6
  76. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_401.py +15 -6
  77. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_404.py +12 -1
  78. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_500.py +12 -1
  79. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item.py +203 -43
  80. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_demonstrations.py +94 -0
  81. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_demonstrations_inline.py +93 -0
  82. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_demonstrations_inline_column_types_item.py +154 -0
  83. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_demonstrations_inline_records.py +51 -0
  84. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_inputs_item.py +69 -0
  85. langwatch/generated/langwatch_rest_api_client/models/{post_api_prompts_by_id_versions_response_200_config_data_inputs_item_type.py → get_api_prompts_response_200_item_inputs_item_type.py} +1 -1
  86. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_outputs_item.py +96 -0
  87. langwatch/generated/langwatch_rest_api_client/models/{post_api_prompts_by_id_versions_response_200_config_data_outputs_item_json_schema.py → get_api_prompts_response_200_item_outputs_item_json_schema.py} +5 -5
  88. langwatch/generated/langwatch_rest_api_client/models/{post_api_prompts_by_id_versions_response_200_config_data_outputs_item_type.py → get_api_prompts_response_200_item_outputs_item_type.py} +1 -1
  89. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_prompting_technique.py +90 -0
  90. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_prompting_technique_demonstrations.py +94 -0
  91. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_prompting_technique_demonstrations_inline.py +95 -0
  92. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_prompting_technique_demonstrations_inline_column_types_item.py +154 -0
  93. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_prompting_technique_demonstrations_inline_records.py +53 -0
  94. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_prompting_technique_type.py +10 -0
  95. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_response_format.py +104 -0
  96. langwatch/generated/langwatch_rest_api_client/models/{get_api_prompts_response_200_item_response_format_type_0_json_schema.py → get_api_prompts_response_200_item_response_format_json_schema_type_0.py} +12 -12
  97. langwatch/generated/langwatch_rest_api_client/models/{get_api_prompts_response_200_item_response_format_type_0_json_schema_schema.py → get_api_prompts_response_200_item_response_format_json_schema_type_0_schema.py} +5 -5
  98. langwatch/generated/langwatch_rest_api_client/models/{get_api_prompts_response_200_item_response_format_type_0_type.py → get_api_prompts_response_200_item_response_format_type.py} +1 -1
  99. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_200_item_scope.py +9 -0
  100. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_400.py +15 -6
  101. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_401.py +15 -6
  102. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_500.py +12 -1
  103. langwatch/generated/langwatch_rest_api_client/models/get_index_response_200_item.py +210 -0
  104. langwatch/generated/langwatch_rest_api_client/models/get_index_response_200_item_messages_item.py +69 -0
  105. langwatch/generated/langwatch_rest_api_client/models/{get_api_prompts_by_id_versions_response_200_config_data_messages_item_role.py → get_index_response_200_item_messages_item_role.py} +1 -1
  106. langwatch/generated/langwatch_rest_api_client/models/{post_api_prompts_response_200_response_format_type_0.py → get_index_response_200_item_response_format_type_0.py} +17 -17
  107. langwatch/generated/langwatch_rest_api_client/models/get_index_response_200_item_response_format_type_0_json_schema.py +77 -0
  108. langwatch/generated/langwatch_rest_api_client/models/get_index_response_200_item_response_format_type_0_json_schema_schema.py +44 -0
  109. langwatch/generated/langwatch_rest_api_client/models/{get_api_prompts_by_id_response_200_response_format_type_0_type.py → get_index_response_200_item_response_format_type_0_type.py} +1 -1
  110. langwatch/generated/langwatch_rest_api_client/models/get_index_response_200_item_scope.py +9 -0
  111. langwatch/generated/langwatch_rest_api_client/models/{post_api_prompts_by_id_versions_response_404.py → get_index_response_400.py} +5 -5
  112. langwatch/generated/langwatch_rest_api_client/models/{post_api_prompts_by_id_versions_response_500.py → get_index_response_401.py} +5 -5
  113. langwatch/generated/langwatch_rest_api_client/models/get_index_response_500.py +59 -0
  114. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_body.py +162 -25
  115. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_body_inputs_item.py +69 -0
  116. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_body_inputs_item_type.py +16 -0
  117. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_body_messages_item.py +69 -0
  118. langwatch/generated/langwatch_rest_api_client/models/{post_api_prompts_by_id_versions_response_200_config_data_messages_item_role.py → post_api_prompts_body_messages_item_role.py} +1 -1
  119. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_body_outputs_item.py +92 -0
  120. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_body_outputs_item_json_schema.py +59 -0
  121. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_body_outputs_item_type.py +11 -0
  122. langwatch/generated/langwatch_rest_api_client/models/{get_api_prompts_response_400_error.py → post_api_prompts_body_schema_version.py} +2 -2
  123. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_body_scope.py +9 -0
  124. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body.py +85 -0
  125. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data.py +226 -0
  126. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_demonstrations.py +94 -0
  127. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_demonstrations_inline.py +93 -0
  128. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_demonstrations_inline_column_types_item.py +154 -0
  129. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_demonstrations_inline_records.py +53 -0
  130. langwatch/generated/langwatch_rest_api_client/models/{get_api_prompts_by_id_versions_response_200_config_data_inputs_item.py → post_api_prompts_by_id_sync_body_config_data_inputs_item.py} +10 -10
  131. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_inputs_item_type.py +16 -0
  132. langwatch/generated/langwatch_rest_api_client/models/{get_api_prompts_by_id_versions_response_200_config_data_messages_item.py → post_api_prompts_by_id_sync_body_config_data_messages_item.py} +10 -10
  133. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_messages_item_role.py +10 -0
  134. langwatch/generated/langwatch_rest_api_client/models/{post_api_prompts_by_id_versions_body_config_data_outputs_item.py → post_api_prompts_by_id_sync_body_config_data_outputs_item.py} +18 -18
  135. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_outputs_item_json_schema.py +59 -0
  136. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_outputs_item_type.py +11 -0
  137. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_prompting_technique.py +92 -0
  138. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_prompting_technique_demonstrations.py +94 -0
  139. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_prompting_technique_demonstrations_inline.py +98 -0
  140. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_prompting_technique_demonstrations_inline_column_types_item.py +154 -0
  141. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_prompting_technique_demonstrations_inline_records.py +51 -0
  142. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_prompting_technique_type.py +10 -0
  143. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_response_format.py +104 -0
  144. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_response_format_json_schema_type_0.py +77 -0
  145. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_response_format_json_schema_type_0_schema.py +44 -0
  146. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_body_config_data_response_format_type.py +8 -0
  147. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200.py +106 -0
  148. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_action.py +11 -0
  149. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info.py +95 -0
  150. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data.py +242 -0
  151. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_demonstrations.py +96 -0
  152. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_demonstrations_inline.py +98 -0
  153. 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 +156 -0
  154. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_demonstrations_inline_records.py +51 -0
  155. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_inputs_item.py +71 -0
  156. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_inputs_item_type.py +16 -0
  157. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_messages_item.py +71 -0
  158. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_messages_item_role.py +10 -0
  159. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_outputs_item.py +102 -0
  160. 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 +59 -0
  161. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_outputs_item_type.py +11 -0
  162. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_prompting_technique.py +99 -0
  163. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_prompting_technique_demonstrations.py +105 -0
  164. 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 +103 -0
  165. 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 +157 -0
  166. 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 +54 -0
  167. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_prompting_technique_type.py +10 -0
  168. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_response_format.py +116 -0
  169. 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 +85 -0
  170. 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 +46 -0
  171. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_conflict_info_remote_config_data_response_format_type.py +8 -0
  172. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt.py +352 -0
  173. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_demonstrations.py +94 -0
  174. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_demonstrations_inline.py +93 -0
  175. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_demonstrations_inline_column_types_item.py +154 -0
  176. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_demonstrations_inline_records.py +53 -0
  177. langwatch/generated/langwatch_rest_api_client/models/{post_api_prompts_by_id_versions_response_200_config_data_inputs_item.py → post_api_prompts_by_id_sync_response_200_prompt_inputs_item.py} +10 -10
  178. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_inputs_item_type.py +16 -0
  179. langwatch/generated/langwatch_rest_api_client/models/{post_api_prompts_by_id_versions_response_200_config_data_messages_item.py → post_api_prompts_by_id_sync_response_200_prompt_messages_item.py} +10 -10
  180. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_messages_item_role.py +10 -0
  181. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_outputs_item.py +98 -0
  182. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_outputs_item_json_schema.py +59 -0
  183. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_outputs_item_type.py +11 -0
  184. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_prompting_technique.py +92 -0
  185. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_prompting_technique_demonstrations.py +94 -0
  186. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_prompting_technique_demonstrations_inline.py +98 -0
  187. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_prompting_technique_demonstrations_inline_column_types_item.py +158 -0
  188. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_prompting_technique_demonstrations_inline_records.py +51 -0
  189. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_prompting_technique_type.py +10 -0
  190. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_response_format.py +106 -0
  191. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_response_format_json_schema_type_0.py +77 -0
  192. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_response_format_json_schema_type_0_schema.py +44 -0
  193. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_response_format_type.py +8 -0
  194. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_200_prompt_scope.py +9 -0
  195. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_400.py +70 -0
  196. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_401.py +70 -0
  197. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_sync_response_500.py +70 -0
  198. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200.py +200 -44
  199. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_demonstrations.py +94 -0
  200. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_demonstrations_inline.py +93 -0
  201. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_demonstrations_inline_column_types_item.py +154 -0
  202. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_demonstrations_inline_records.py +51 -0
  203. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_inputs_item.py +69 -0
  204. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_inputs_item_type.py +16 -0
  205. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_outputs_item.py +96 -0
  206. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_outputs_item_json_schema.py +59 -0
  207. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_outputs_item_type.py +11 -0
  208. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_prompting_technique.py +90 -0
  209. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_prompting_technique_demonstrations.py +94 -0
  210. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_prompting_technique_demonstrations_inline.py +95 -0
  211. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_prompting_technique_demonstrations_inline_column_types_item.py +154 -0
  212. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_prompting_technique_demonstrations_inline_records.py +53 -0
  213. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_prompting_technique_type.py +10 -0
  214. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_response_format.py +100 -0
  215. langwatch/generated/langwatch_rest_api_client/models/{post_api_prompts_response_200_response_format_type_0_json_schema.py → post_api_prompts_response_200_response_format_json_schema_type_0.py} +12 -12
  216. langwatch/generated/langwatch_rest_api_client/models/{post_api_prompts_response_200_response_format_type_0_json_schema_schema.py → post_api_prompts_response_200_response_format_json_schema_type_0_schema.py} +5 -5
  217. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_response_format_type.py +8 -0
  218. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_200_scope.py +9 -0
  219. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_400.py +15 -6
  220. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_401.py +15 -6
  221. langwatch/generated/langwatch_rest_api_client/models/{post_api_prompts_by_id_versions_body_config_data_demonstrations_rows_item.py → post_api_prompts_response_409.py} +19 -11
  222. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_500.py +12 -1
  223. langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_body_type_0.py +127 -0
  224. langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_body_type_0_metadata.py +68 -0
  225. langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_body_type_1.py +164 -0
  226. langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_body_type_1_results_type_0.py +98 -0
  227. langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_body_type_1_results_type_0_verdict.py +10 -0
  228. langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_body_type_1_status.py +13 -0
  229. langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_body_type_2.py +245 -0
  230. langwatch/generated/langwatch_rest_api_client/models/{post_api_prompts_by_id_versions_body_config_data_demonstrations_columns_item.py → post_api_scenario_events_body_type_2_messages_item_type_0.py} +29 -20
  231. langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_body_type_2_messages_item_type_1.py +88 -0
  232. langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_body_type_2_messages_item_type_2.py +120 -0
  233. langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_body_type_2_messages_item_type_2_tool_calls_item.py +87 -0
  234. langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_body_type_2_messages_item_type_2_tool_calls_item_function.py +67 -0
  235. langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_body_type_2_messages_item_type_3.py +88 -0
  236. langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_body_type_2_messages_item_type_4.py +85 -0
  237. langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_response_201.py +81 -0
  238. langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_response_400.py +59 -0
  239. langwatch/generated/langwatch_rest_api_client/models/{post_api_prompts_by_id_versions_response_401.py → post_api_scenario_events_response_401.py} +20 -11
  240. langwatch/generated/langwatch_rest_api_client/models/post_api_scenario_events_response_500.py +70 -0
  241. langwatch/generated/langwatch_rest_api_client/models/post_index_body.py +163 -0
  242. langwatch/generated/langwatch_rest_api_client/models/post_index_body_inputs_item.py +69 -0
  243. langwatch/generated/langwatch_rest_api_client/models/post_index_body_inputs_item_type.py +16 -0
  244. langwatch/generated/langwatch_rest_api_client/models/post_index_body_messages_item.py +69 -0
  245. langwatch/generated/langwatch_rest_api_client/models/post_index_body_messages_item_role.py +10 -0
  246. langwatch/generated/langwatch_rest_api_client/models/post_index_body_outputs_item.py +92 -0
  247. langwatch/generated/langwatch_rest_api_client/models/post_index_body_outputs_item_json_schema.py +59 -0
  248. langwatch/generated/langwatch_rest_api_client/models/post_index_body_outputs_item_type.py +11 -0
  249. langwatch/generated/langwatch_rest_api_client/models/post_index_body_scope.py +9 -0
  250. langwatch/generated/langwatch_rest_api_client/models/post_index_response_200.py +206 -0
  251. langwatch/generated/langwatch_rest_api_client/models/post_index_response_200_messages_item.py +69 -0
  252. langwatch/generated/langwatch_rest_api_client/models/post_index_response_200_messages_item_role.py +10 -0
  253. langwatch/generated/langwatch_rest_api_client/models/{get_api_prompts_response_200_item_response_format_type_0.py → post_index_response_200_response_format_type_0.py} +16 -18
  254. langwatch/generated/langwatch_rest_api_client/models/post_index_response_200_response_format_type_0_json_schema.py +77 -0
  255. langwatch/generated/langwatch_rest_api_client/models/post_index_response_200_response_format_type_0_json_schema_schema.py +44 -0
  256. langwatch/generated/langwatch_rest_api_client/models/post_index_response_200_response_format_type_0_type.py +8 -0
  257. langwatch/generated/langwatch_rest_api_client/models/post_index_response_200_scope.py +9 -0
  258. langwatch/generated/langwatch_rest_api_client/models/post_index_response_400.py +59 -0
  259. langwatch/generated/langwatch_rest_api_client/models/post_index_response_401.py +59 -0
  260. langwatch/generated/langwatch_rest_api_client/models/post_index_response_500.py +59 -0
  261. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_body.py +166 -11
  262. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_body_inputs_item.py +69 -0
  263. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_body_inputs_item_type.py +16 -0
  264. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_body_messages_item.py +69 -0
  265. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_body_messages_item_role.py +10 -0
  266. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_body_outputs_item.py +94 -0
  267. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_body_outputs_item_json_schema.py +59 -0
  268. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_body_outputs_item_type.py +11 -0
  269. langwatch/generated/langwatch_rest_api_client/models/{post_api_prompts_response_400_error.py → put_api_prompts_by_id_body_schema_version.py} +2 -2
  270. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_body_scope.py +9 -0
  271. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200.py +260 -1
  272. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_demonstrations.py +94 -0
  273. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_demonstrations_inline.py +93 -0
  274. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_demonstrations_inline_column_types_item.py +154 -0
  275. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_demonstrations_inline_records.py +51 -0
  276. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_inputs_item.py +69 -0
  277. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_inputs_item_type.py +16 -0
  278. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_messages_item.py +69 -0
  279. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_messages_item_role.py +10 -0
  280. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_outputs_item.py +96 -0
  281. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_outputs_item_json_schema.py +59 -0
  282. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_outputs_item_type.py +11 -0
  283. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_prompting_technique.py +90 -0
  284. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_prompting_technique_demonstrations.py +94 -0
  285. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_prompting_technique_demonstrations_inline.py +95 -0
  286. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_prompting_technique_demonstrations_inline_column_types_item.py +154 -0
  287. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_prompting_technique_demonstrations_inline_records.py +53 -0
  288. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_prompting_technique_type.py +10 -0
  289. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_response_format.py +104 -0
  290. langwatch/generated/langwatch_rest_api_client/models/{get_api_prompts_by_id_versions_response_200_config_data_demonstrations_columns_item.py → put_api_prompts_by_id_response_200_response_format_json_schema_type_0.py} +21 -23
  291. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_response_format_json_schema_type_0_schema.py +44 -0
  292. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_response_format_type.py +8 -0
  293. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_200_scope.py +9 -0
  294. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_400.py +15 -6
  295. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_401.py +15 -6
  296. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_404.py +12 -1
  297. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_409.py +67 -0
  298. langwatch/generated/langwatch_rest_api_client/models/{post_api_prompts_by_id_versions_response_400.py → put_api_prompts_by_id_response_422.py} +20 -11
  299. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_500.py +12 -1
  300. langwatch/litellm.py +7 -3
  301. langwatch/prompts/__init__.py +5 -0
  302. langwatch/prompts/decorators/prompt_service_tracing.py +59 -0
  303. langwatch/prompts/decorators/prompt_tracing.py +88 -0
  304. langwatch/prompts/errors.py +150 -0
  305. langwatch/{prompt → prompts}/formatter.py +5 -3
  306. langwatch/prompts/prompt.py +192 -0
  307. langwatch/prompts/service.py +265 -0
  308. langwatch/prompts/types.py +24 -0
  309. {langwatch-0.2.9.dist-info → langwatch-0.2.11.dist-info}/METADATA +5 -3
  310. langwatch-0.2.11.dist-info/RECORD +413 -0
  311. langwatch/generated/langwatch_rest_api_client/api/default/post_api_prompts_by_id_versions.py +0 -241
  312. langwatch/generated/langwatch_rest_api_client/models/delete_api_prompts_by_id_response_400_error.py +0 -8
  313. langwatch/generated/langwatch_rest_api_client/models/delete_api_prompts_by_id_response_401_error.py +0 -8
  314. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_200_response_format_type_0.py +0 -81
  315. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_400_error.py +0 -8
  316. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_response_401_error.py +0 -8
  317. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200.py +0 -155
  318. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_config_data.py +0 -180
  319. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_config_data_demonstrations.py +0 -101
  320. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_config_data_demonstrations_columns_item_type.py +0 -18
  321. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_200_config_data_demonstrations_rows_item.py +0 -59
  322. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_400_error.py +0 -8
  323. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_by_id_versions_response_401_error.py +0 -8
  324. langwatch/generated/langwatch_rest_api_client/models/get_api_prompts_response_401_error.py +0 -8
  325. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_versions_body.py +0 -147
  326. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_versions_body_config_data.py +0 -183
  327. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_versions_body_config_data_demonstrations.py +0 -106
  328. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_versions_body_config_data_demonstrations_columns_item_type.py +0 -18
  329. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_versions_response_200.py +0 -155
  330. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_versions_response_200_config_data.py +0 -182
  331. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_versions_response_200_config_data_demonstrations.py +0 -101
  332. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_versions_response_200_config_data_demonstrations_columns_item.py +0 -79
  333. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_versions_response_200_config_data_demonstrations_columns_item_type.py +0 -18
  334. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_versions_response_200_config_data_demonstrations_rows_item.py +0 -59
  335. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_versions_response_400_error.py +0 -8
  336. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_by_id_versions_response_401_error.py +0 -8
  337. langwatch/generated/langwatch_rest_api_client/models/post_api_prompts_response_401_error.py +0 -8
  338. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_400_error.py +0 -8
  339. langwatch/generated/langwatch_rest_api_client/models/put_api_prompts_by_id_response_401_error.py +0 -8
  340. langwatch/prompt/__init__.py +0 -7
  341. langwatch/prompt/get_prompt.py +0 -137
  342. langwatch/prompt/prompt.py +0 -65
  343. langwatch-0.2.9.dist-info/RECORD +0 -221
  344. {langwatch-0.2.9.dist-info → langwatch-0.2.11.dist-info}/WHEEL +0 -0
langwatch/__init__.py CHANGED
@@ -12,12 +12,18 @@ from .utils.initialization import ensure_setup, setup
12
12
  # Type hints for IntelliSense (only imported for typing)
13
13
  from typing import TYPE_CHECKING
14
14
 
15
+ # Type hints for IntelliSense (only imported for typing)
15
16
  if TYPE_CHECKING:
16
17
  import langwatch.evaluations as evaluations
17
18
  import langwatch.evaluation as evaluation
18
19
  import langwatch.dataset as dataset
19
20
  import langwatch.dspy as dspy
20
21
  import langwatch.langchain as langchain
22
+ from .prompts.service import PromptService
23
+
24
+ # Type hint for the prompts service specifically
25
+ # required to get the instance typing correct
26
+ prompts: PromptService
21
27
 
22
28
 
23
29
  @module_property
@@ -54,6 +60,13 @@ def __getattr__(name: str):
54
60
  # Cache it in the module globals for subsequent access
55
61
  globals()[name] = module
56
62
  return module
63
+ elif name == "prompts":
64
+ # Special-case: expose a PromptService instance at langwatch.prompts
65
+ from .prompts.service import PromptService
66
+
67
+ svc = PromptService.from_global()
68
+ globals()[name] = svc # Cache for subsequent access
69
+ return svc
57
70
 
58
71
  raise AttributeError(f"module '{__name__}' has no attribute '{name}'")
59
72
 
@@ -140,4 +153,5 @@ __all__ = [
140
153
  "evaluations",
141
154
  "langchain",
142
155
  "dspy",
156
+ "prompts",
143
157
  ]
langwatch/__version__.py CHANGED
@@ -1,3 +1,3 @@
1
1
  """Version information for LangWatch."""
2
2
 
3
- __version__ = "0.2.9"
3
+ __version__ = "0.2.11"
langwatch/attributes.py CHANGED
@@ -72,9 +72,13 @@ class AttributeKey:
72
72
  LangWatchEventEvaluationCustom = "langwatch.evaluation.custom"
73
73
  LangWatchEventEvaluationLog = "langwatch.evaluation.log"
74
74
 
75
+ # LangWatch Prompt attributes
75
76
  LangWatchPromptId = "langwatch.prompt.id"
77
+ LangWatchPromptHandle = "langwatch.prompt.handle"
76
78
  LangWatchPromptVersionId = "langwatch.prompt.version.id"
77
79
  LangWatchPromptVersionNumber = "langwatch.prompt.version.number"
80
+ LangWatchPromptVariables = "langwatch.prompt.variables"
81
+ LangWatchPromptSelectedId = "langwatch.prompt.selected.id"
78
82
 
79
83
  # Deprecated attributes
80
84
  DeprecatedTraceId = "deprecated.trace.id"
@@ -108,6 +108,7 @@ class BatchEvaluation:
108
108
  experiment: Optional[str] = None,
109
109
  run_id: Optional[str] = None,
110
110
  max_workers=4,
111
+ settings: Optional[dict[str, Any]] = None,
111
112
  ):
112
113
  self.dataset = dataset
113
114
  self.evaluations = evaluations
@@ -119,7 +120,7 @@ class BatchEvaluation:
119
120
  self.total = 0
120
121
  self.progress = 0
121
122
  self.created_at = int(time.time() * 1000)
122
-
123
+ self.settings = settings or {}
123
124
  self.lock = threading.Lock()
124
125
  self.batch = {"dataset": [], "evaluations": []}
125
126
  self.last_sent = 0
@@ -244,7 +245,9 @@ class BatchEvaluation:
244
245
 
245
246
  coroutines: list[Coroutine[Tuple[str, SingleEvaluationResult], Any, Any]] = []
246
247
  for evaluation in self.evaluations:
247
- coroutines.append(run_evaluation(entry_with_output, evaluation, error))
248
+ coroutines.append(
249
+ run_evaluation(entry_with_output, evaluation, error, self.settings)
250
+ )
248
251
 
249
252
  async def gather_results(futures):
250
253
  evaluation_results = await asyncio.gather(*futures)
@@ -331,6 +334,7 @@ class BatchEvaluation:
331
334
  "evaluations": self.batch["evaluations"],
332
335
  "progress": self.progress,
333
336
  "total": self.total,
337
+ "settings": self.settings,
334
338
  "timestamps": {
335
339
  "created_at": self.created_at,
336
340
  },
@@ -382,6 +386,7 @@ async def run_evaluation(
382
386
  data: DatasetEntry,
383
387
  evaluation: str,
384
388
  error: Optional[Exception] = None,
389
+ settings: Optional[Dict[str, Any]] = None,
385
390
  ) -> Tuple[str, SingleEvaluationResult]:
386
391
  if error:
387
392
  return evaluation, EvaluationResultSkipped(
@@ -395,6 +400,10 @@ async def run_evaluation(
395
400
  "data": data.model_dump(),
396
401
  }
397
402
 
403
+ # Include settings if provided
404
+ if settings:
405
+ json_data["settings"] = settings
406
+
398
407
  request_params = {
399
408
  "url": langwatch.get_endpoint() + f"/api/evaluations/{evaluation}/evaluate",
400
409
  "headers": {"X-Auth-Token": langwatch.get_api_key()},
@@ -0,0 +1,183 @@
1
+ from http import HTTPStatus
2
+ from typing import Any, Optional, Union
3
+
4
+ import httpx
5
+
6
+ from ... import errors
7
+ from ...client import AuthenticatedClient, Client
8
+ from ...models.delete_api_scenario_events_response_200 import DeleteApiScenarioEventsResponse200
9
+ from ...models.delete_api_scenario_events_response_400 import DeleteApiScenarioEventsResponse400
10
+ from ...models.delete_api_scenario_events_response_401 import DeleteApiScenarioEventsResponse401
11
+ from ...models.delete_api_scenario_events_response_500 import DeleteApiScenarioEventsResponse500
12
+ from ...types import Response
13
+
14
+
15
+ def _get_kwargs() -> dict[str, Any]:
16
+ _kwargs: dict[str, Any] = {
17
+ "method": "delete",
18
+ "url": "/api/scenario-events",
19
+ }
20
+
21
+ return _kwargs
22
+
23
+
24
+ def _parse_response(
25
+ *, client: Union[AuthenticatedClient, Client], response: httpx.Response
26
+ ) -> Optional[
27
+ Union[
28
+ DeleteApiScenarioEventsResponse200,
29
+ DeleteApiScenarioEventsResponse400,
30
+ DeleteApiScenarioEventsResponse401,
31
+ DeleteApiScenarioEventsResponse500,
32
+ ]
33
+ ]:
34
+ if response.status_code == 200:
35
+ response_200 = DeleteApiScenarioEventsResponse200.from_dict(response.json())
36
+
37
+ return response_200
38
+ if response.status_code == 400:
39
+ response_400 = DeleteApiScenarioEventsResponse400.from_dict(response.json())
40
+
41
+ return response_400
42
+ if response.status_code == 401:
43
+ response_401 = DeleteApiScenarioEventsResponse401.from_dict(response.json())
44
+
45
+ return response_401
46
+ if response.status_code == 500:
47
+ response_500 = DeleteApiScenarioEventsResponse500.from_dict(response.json())
48
+
49
+ return response_500
50
+ if client.raise_on_unexpected_status:
51
+ raise errors.UnexpectedStatus(response.status_code, response.content)
52
+ else:
53
+ return None
54
+
55
+
56
+ def _build_response(
57
+ *, client: Union[AuthenticatedClient, Client], response: httpx.Response
58
+ ) -> Response[
59
+ Union[
60
+ DeleteApiScenarioEventsResponse200,
61
+ DeleteApiScenarioEventsResponse400,
62
+ DeleteApiScenarioEventsResponse401,
63
+ DeleteApiScenarioEventsResponse500,
64
+ ]
65
+ ]:
66
+ return Response(
67
+ status_code=HTTPStatus(response.status_code),
68
+ content=response.content,
69
+ headers=response.headers,
70
+ parsed=_parse_response(client=client, response=response),
71
+ )
72
+
73
+
74
+ def sync_detailed(
75
+ *,
76
+ client: Union[AuthenticatedClient, Client],
77
+ ) -> Response[
78
+ Union[
79
+ DeleteApiScenarioEventsResponse200,
80
+ DeleteApiScenarioEventsResponse400,
81
+ DeleteApiScenarioEventsResponse401,
82
+ DeleteApiScenarioEventsResponse500,
83
+ ]
84
+ ]:
85
+ """Delete all events
86
+
87
+ Raises:
88
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
89
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
90
+
91
+ Returns:
92
+ Response[Union[DeleteApiScenarioEventsResponse200, DeleteApiScenarioEventsResponse400, DeleteApiScenarioEventsResponse401, DeleteApiScenarioEventsResponse500]]
93
+ """
94
+
95
+ kwargs = _get_kwargs()
96
+
97
+ response = client.get_httpx_client().request(
98
+ **kwargs,
99
+ )
100
+
101
+ return _build_response(client=client, response=response)
102
+
103
+
104
+ def sync(
105
+ *,
106
+ client: Union[AuthenticatedClient, Client],
107
+ ) -> Optional[
108
+ Union[
109
+ DeleteApiScenarioEventsResponse200,
110
+ DeleteApiScenarioEventsResponse400,
111
+ DeleteApiScenarioEventsResponse401,
112
+ DeleteApiScenarioEventsResponse500,
113
+ ]
114
+ ]:
115
+ """Delete all events
116
+
117
+ Raises:
118
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
119
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
120
+
121
+ Returns:
122
+ Union[DeleteApiScenarioEventsResponse200, DeleteApiScenarioEventsResponse400, DeleteApiScenarioEventsResponse401, DeleteApiScenarioEventsResponse500]
123
+ """
124
+
125
+ return sync_detailed(
126
+ client=client,
127
+ ).parsed
128
+
129
+
130
+ async def asyncio_detailed(
131
+ *,
132
+ client: Union[AuthenticatedClient, Client],
133
+ ) -> Response[
134
+ Union[
135
+ DeleteApiScenarioEventsResponse200,
136
+ DeleteApiScenarioEventsResponse400,
137
+ DeleteApiScenarioEventsResponse401,
138
+ DeleteApiScenarioEventsResponse500,
139
+ ]
140
+ ]:
141
+ """Delete all events
142
+
143
+ Raises:
144
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
145
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
146
+
147
+ Returns:
148
+ Response[Union[DeleteApiScenarioEventsResponse200, DeleteApiScenarioEventsResponse400, DeleteApiScenarioEventsResponse401, DeleteApiScenarioEventsResponse500]]
149
+ """
150
+
151
+ kwargs = _get_kwargs()
152
+
153
+ response = await client.get_async_httpx_client().request(**kwargs)
154
+
155
+ return _build_response(client=client, response=response)
156
+
157
+
158
+ async def asyncio(
159
+ *,
160
+ client: Union[AuthenticatedClient, Client],
161
+ ) -> Optional[
162
+ Union[
163
+ DeleteApiScenarioEventsResponse200,
164
+ DeleteApiScenarioEventsResponse400,
165
+ DeleteApiScenarioEventsResponse401,
166
+ DeleteApiScenarioEventsResponse500,
167
+ ]
168
+ ]:
169
+ """Delete all events
170
+
171
+ Raises:
172
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
173
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
174
+
175
+ Returns:
176
+ Union[DeleteApiScenarioEventsResponse200, DeleteApiScenarioEventsResponse400, DeleteApiScenarioEventsResponse401, DeleteApiScenarioEventsResponse500]
177
+ """
178
+
179
+ return (
180
+ await asyncio_detailed(
181
+ client=client,
182
+ )
183
+ ).parsed
@@ -10,15 +10,24 @@ from ...models.get_api_prompts_by_id_response_400 import GetApiPromptsByIdRespon
10
10
  from ...models.get_api_prompts_by_id_response_401 import GetApiPromptsByIdResponse401
11
11
  from ...models.get_api_prompts_by_id_response_404 import GetApiPromptsByIdResponse404
12
12
  from ...models.get_api_prompts_by_id_response_500 import GetApiPromptsByIdResponse500
13
- from ...types import Response
13
+ from ...types import UNSET, Response, Unset
14
14
 
15
15
 
16
16
  def _get_kwargs(
17
17
  id: str,
18
+ *,
19
+ version: Union[Unset, int] = UNSET,
18
20
  ) -> dict[str, Any]:
21
+ params: dict[str, Any] = {}
22
+
23
+ params["version"] = version
24
+
25
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
26
+
19
27
  _kwargs: dict[str, Any] = {
20
28
  "method": "get",
21
29
  "url": f"/api/prompts/{id}",
30
+ "params": params,
22
31
  }
23
32
 
24
33
  return _kwargs
@@ -84,6 +93,7 @@ def sync_detailed(
84
93
  id: str,
85
94
  *,
86
95
  client: Union[AuthenticatedClient, Client],
96
+ version: Union[Unset, int] = UNSET,
87
97
  ) -> Response[
88
98
  Union[
89
99
  GetApiPromptsByIdResponse200,
@@ -97,6 +107,7 @@ def sync_detailed(
97
107
 
98
108
  Args:
99
109
  id (str):
110
+ version (Union[Unset, int]):
100
111
 
101
112
  Raises:
102
113
  errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
@@ -108,6 +119,7 @@ def sync_detailed(
108
119
 
109
120
  kwargs = _get_kwargs(
110
121
  id=id,
122
+ version=version,
111
123
  )
112
124
 
113
125
  response = client.get_httpx_client().request(
@@ -121,6 +133,7 @@ def sync(
121
133
  id: str,
122
134
  *,
123
135
  client: Union[AuthenticatedClient, Client],
136
+ version: Union[Unset, int] = UNSET,
124
137
  ) -> Optional[
125
138
  Union[
126
139
  GetApiPromptsByIdResponse200,
@@ -134,6 +147,7 @@ def sync(
134
147
 
135
148
  Args:
136
149
  id (str):
150
+ version (Union[Unset, int]):
137
151
 
138
152
  Raises:
139
153
  errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
@@ -146,6 +160,7 @@ def sync(
146
160
  return sync_detailed(
147
161
  id=id,
148
162
  client=client,
163
+ version=version,
149
164
  ).parsed
150
165
 
151
166
 
@@ -153,6 +168,7 @@ async def asyncio_detailed(
153
168
  id: str,
154
169
  *,
155
170
  client: Union[AuthenticatedClient, Client],
171
+ version: Union[Unset, int] = UNSET,
156
172
  ) -> Response[
157
173
  Union[
158
174
  GetApiPromptsByIdResponse200,
@@ -166,6 +182,7 @@ async def asyncio_detailed(
166
182
 
167
183
  Args:
168
184
  id (str):
185
+ version (Union[Unset, int]):
169
186
 
170
187
  Raises:
171
188
  errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
@@ -177,6 +194,7 @@ async def asyncio_detailed(
177
194
 
178
195
  kwargs = _get_kwargs(
179
196
  id=id,
197
+ version=version,
180
198
  )
181
199
 
182
200
  response = await client.get_async_httpx_client().request(**kwargs)
@@ -188,6 +206,7 @@ async def asyncio(
188
206
  id: str,
189
207
  *,
190
208
  client: Union[AuthenticatedClient, Client],
209
+ version: Union[Unset, int] = UNSET,
191
210
  ) -> Optional[
192
211
  Union[
193
212
  GetApiPromptsByIdResponse200,
@@ -201,6 +220,7 @@ async def asyncio(
201
220
 
202
221
  Args:
203
222
  id (str):
223
+ version (Union[Unset, int]):
204
224
 
205
225
  Raises:
206
226
  errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
@@ -214,5 +234,6 @@ async def asyncio(
214
234
  await asyncio_detailed(
215
235
  id=id,
216
236
  client=client,
237
+ version=version,
217
238
  )
218
239
  ).parsed
@@ -5,7 +5,7 @@ import httpx
5
5
 
6
6
  from ... import errors
7
7
  from ...client import AuthenticatedClient, Client
8
- from ...models.get_api_prompts_by_id_versions_response_200 import GetApiPromptsByIdVersionsResponse200
8
+ from ...models.get_api_prompts_by_id_versions_response_200_item import GetApiPromptsByIdVersionsResponse200Item
9
9
  from ...models.get_api_prompts_by_id_versions_response_400 import GetApiPromptsByIdVersionsResponse400
10
10
  from ...models.get_api_prompts_by_id_versions_response_401 import GetApiPromptsByIdVersionsResponse401
11
11
  from ...models.get_api_prompts_by_id_versions_response_404 import GetApiPromptsByIdVersionsResponse404
@@ -28,15 +28,20 @@ def _parse_response(
28
28
  *, client: Union[AuthenticatedClient, Client], response: httpx.Response
29
29
  ) -> Optional[
30
30
  Union[
31
- GetApiPromptsByIdVersionsResponse200,
32
31
  GetApiPromptsByIdVersionsResponse400,
33
32
  GetApiPromptsByIdVersionsResponse401,
34
33
  GetApiPromptsByIdVersionsResponse404,
35
34
  GetApiPromptsByIdVersionsResponse500,
35
+ list["GetApiPromptsByIdVersionsResponse200Item"],
36
36
  ]
37
37
  ]:
38
38
  if response.status_code == 200:
39
- response_200 = GetApiPromptsByIdVersionsResponse200.from_dict(response.json())
39
+ response_200 = []
40
+ _response_200 = response.json()
41
+ for response_200_item_data in _response_200:
42
+ response_200_item = GetApiPromptsByIdVersionsResponse200Item.from_dict(response_200_item_data)
43
+
44
+ response_200.append(response_200_item)
40
45
 
41
46
  return response_200
42
47
  if response.status_code == 400:
@@ -65,11 +70,11 @@ def _build_response(
65
70
  *, client: Union[AuthenticatedClient, Client], response: httpx.Response
66
71
  ) -> Response[
67
72
  Union[
68
- GetApiPromptsByIdVersionsResponse200,
69
73
  GetApiPromptsByIdVersionsResponse400,
70
74
  GetApiPromptsByIdVersionsResponse401,
71
75
  GetApiPromptsByIdVersionsResponse404,
72
76
  GetApiPromptsByIdVersionsResponse500,
77
+ list["GetApiPromptsByIdVersionsResponse200Item"],
73
78
  ]
74
79
  ]:
75
80
  return Response(
@@ -86,14 +91,14 @@ def sync_detailed(
86
91
  client: Union[AuthenticatedClient, Client],
87
92
  ) -> Response[
88
93
  Union[
89
- GetApiPromptsByIdVersionsResponse200,
90
94
  GetApiPromptsByIdVersionsResponse400,
91
95
  GetApiPromptsByIdVersionsResponse401,
92
96
  GetApiPromptsByIdVersionsResponse404,
93
97
  GetApiPromptsByIdVersionsResponse500,
98
+ list["GetApiPromptsByIdVersionsResponse200Item"],
94
99
  ]
95
100
  ]:
96
- """Get all versions for a prompt
101
+ """Get all versions for a prompt. Does not include base prompt data, only versioned data.
97
102
 
98
103
  Args:
99
104
  id (str):
@@ -103,7 +108,7 @@ def sync_detailed(
103
108
  httpx.TimeoutException: If the request takes longer than Client.timeout.
104
109
 
105
110
  Returns:
106
- Response[Union[GetApiPromptsByIdVersionsResponse200, GetApiPromptsByIdVersionsResponse400, GetApiPromptsByIdVersionsResponse401, GetApiPromptsByIdVersionsResponse404, GetApiPromptsByIdVersionsResponse500]]
111
+ Response[Union[GetApiPromptsByIdVersionsResponse400, GetApiPromptsByIdVersionsResponse401, GetApiPromptsByIdVersionsResponse404, GetApiPromptsByIdVersionsResponse500, list['GetApiPromptsByIdVersionsResponse200Item']]]
107
112
  """
108
113
 
109
114
  kwargs = _get_kwargs(
@@ -123,14 +128,14 @@ def sync(
123
128
  client: Union[AuthenticatedClient, Client],
124
129
  ) -> Optional[
125
130
  Union[
126
- GetApiPromptsByIdVersionsResponse200,
127
131
  GetApiPromptsByIdVersionsResponse400,
128
132
  GetApiPromptsByIdVersionsResponse401,
129
133
  GetApiPromptsByIdVersionsResponse404,
130
134
  GetApiPromptsByIdVersionsResponse500,
135
+ list["GetApiPromptsByIdVersionsResponse200Item"],
131
136
  ]
132
137
  ]:
133
- """Get all versions for a prompt
138
+ """Get all versions for a prompt. Does not include base prompt data, only versioned data.
134
139
 
135
140
  Args:
136
141
  id (str):
@@ -140,7 +145,7 @@ def sync(
140
145
  httpx.TimeoutException: If the request takes longer than Client.timeout.
141
146
 
142
147
  Returns:
143
- Union[GetApiPromptsByIdVersionsResponse200, GetApiPromptsByIdVersionsResponse400, GetApiPromptsByIdVersionsResponse401, GetApiPromptsByIdVersionsResponse404, GetApiPromptsByIdVersionsResponse500]
148
+ Union[GetApiPromptsByIdVersionsResponse400, GetApiPromptsByIdVersionsResponse401, GetApiPromptsByIdVersionsResponse404, GetApiPromptsByIdVersionsResponse500, list['GetApiPromptsByIdVersionsResponse200Item']]
144
149
  """
145
150
 
146
151
  return sync_detailed(
@@ -155,14 +160,14 @@ async def asyncio_detailed(
155
160
  client: Union[AuthenticatedClient, Client],
156
161
  ) -> Response[
157
162
  Union[
158
- GetApiPromptsByIdVersionsResponse200,
159
163
  GetApiPromptsByIdVersionsResponse400,
160
164
  GetApiPromptsByIdVersionsResponse401,
161
165
  GetApiPromptsByIdVersionsResponse404,
162
166
  GetApiPromptsByIdVersionsResponse500,
167
+ list["GetApiPromptsByIdVersionsResponse200Item"],
163
168
  ]
164
169
  ]:
165
- """Get all versions for a prompt
170
+ """Get all versions for a prompt. Does not include base prompt data, only versioned data.
166
171
 
167
172
  Args:
168
173
  id (str):
@@ -172,7 +177,7 @@ async def asyncio_detailed(
172
177
  httpx.TimeoutException: If the request takes longer than Client.timeout.
173
178
 
174
179
  Returns:
175
- Response[Union[GetApiPromptsByIdVersionsResponse200, GetApiPromptsByIdVersionsResponse400, GetApiPromptsByIdVersionsResponse401, GetApiPromptsByIdVersionsResponse404, GetApiPromptsByIdVersionsResponse500]]
180
+ Response[Union[GetApiPromptsByIdVersionsResponse400, GetApiPromptsByIdVersionsResponse401, GetApiPromptsByIdVersionsResponse404, GetApiPromptsByIdVersionsResponse500, list['GetApiPromptsByIdVersionsResponse200Item']]]
176
181
  """
177
182
 
178
183
  kwargs = _get_kwargs(
@@ -190,14 +195,14 @@ async def asyncio(
190
195
  client: Union[AuthenticatedClient, Client],
191
196
  ) -> Optional[
192
197
  Union[
193
- GetApiPromptsByIdVersionsResponse200,
194
198
  GetApiPromptsByIdVersionsResponse400,
195
199
  GetApiPromptsByIdVersionsResponse401,
196
200
  GetApiPromptsByIdVersionsResponse404,
197
201
  GetApiPromptsByIdVersionsResponse500,
202
+ list["GetApiPromptsByIdVersionsResponse200Item"],
198
203
  ]
199
204
  ]:
200
- """Get all versions for a prompt
205
+ """Get all versions for a prompt. Does not include base prompt data, only versioned data.
201
206
 
202
207
  Args:
203
208
  id (str):
@@ -207,7 +212,7 @@ async def asyncio(
207
212
  httpx.TimeoutException: If the request takes longer than Client.timeout.
208
213
 
209
214
  Returns:
210
- Union[GetApiPromptsByIdVersionsResponse200, GetApiPromptsByIdVersionsResponse400, GetApiPromptsByIdVersionsResponse401, GetApiPromptsByIdVersionsResponse404, GetApiPromptsByIdVersionsResponse500]
215
+ Union[GetApiPromptsByIdVersionsResponse400, GetApiPromptsByIdVersionsResponse401, GetApiPromptsByIdVersionsResponse404, GetApiPromptsByIdVersionsResponse500, list['GetApiPromptsByIdVersionsResponse200Item']]
211
216
  """
212
217
 
213
218
  return (