mirascope 1.0.5__py3-none-any.whl → 2.1.1__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 (632) hide show
  1. mirascope/__init__.py +6 -6
  2. mirascope/_stubs.py +384 -0
  3. mirascope/_utils.py +34 -0
  4. mirascope/api/__init__.py +14 -0
  5. mirascope/api/_generated/README.md +207 -0
  6. mirascope/api/_generated/__init__.py +444 -0
  7. mirascope/api/_generated/annotations/__init__.py +33 -0
  8. mirascope/api/_generated/annotations/client.py +506 -0
  9. mirascope/api/_generated/annotations/raw_client.py +1414 -0
  10. mirascope/api/_generated/annotations/types/__init__.py +31 -0
  11. mirascope/api/_generated/annotations/types/annotations_create_request_label.py +5 -0
  12. mirascope/api/_generated/annotations/types/annotations_create_response.py +48 -0
  13. mirascope/api/_generated/annotations/types/annotations_create_response_label.py +5 -0
  14. mirascope/api/_generated/annotations/types/annotations_get_response.py +48 -0
  15. mirascope/api/_generated/annotations/types/annotations_get_response_label.py +5 -0
  16. mirascope/api/_generated/annotations/types/annotations_list_request_label.py +5 -0
  17. mirascope/api/_generated/annotations/types/annotations_list_response.py +21 -0
  18. mirascope/api/_generated/annotations/types/annotations_list_response_annotations_item.py +50 -0
  19. mirascope/api/_generated/annotations/types/annotations_list_response_annotations_item_label.py +5 -0
  20. mirascope/api/_generated/annotations/types/annotations_update_request_label.py +5 -0
  21. mirascope/api/_generated/annotations/types/annotations_update_response.py +48 -0
  22. mirascope/api/_generated/annotations/types/annotations_update_response_label.py +5 -0
  23. mirascope/api/_generated/api_keys/__init__.py +17 -0
  24. mirascope/api/_generated/api_keys/client.py +530 -0
  25. mirascope/api/_generated/api_keys/raw_client.py +1236 -0
  26. mirascope/api/_generated/api_keys/types/__init__.py +15 -0
  27. mirascope/api/_generated/api_keys/types/api_keys_create_response.py +28 -0
  28. mirascope/api/_generated/api_keys/types/api_keys_get_response.py +27 -0
  29. mirascope/api/_generated/api_keys/types/api_keys_list_all_for_org_response_item.py +40 -0
  30. mirascope/api/_generated/api_keys/types/api_keys_list_response_item.py +27 -0
  31. mirascope/api/_generated/client.py +211 -0
  32. mirascope/api/_generated/core/__init__.py +52 -0
  33. mirascope/api/_generated/core/api_error.py +23 -0
  34. mirascope/api/_generated/core/client_wrapper.py +46 -0
  35. mirascope/api/_generated/core/datetime_utils.py +28 -0
  36. mirascope/api/_generated/core/file.py +67 -0
  37. mirascope/api/_generated/core/force_multipart.py +16 -0
  38. mirascope/api/_generated/core/http_client.py +543 -0
  39. mirascope/api/_generated/core/http_response.py +55 -0
  40. mirascope/api/_generated/core/jsonable_encoder.py +100 -0
  41. mirascope/api/_generated/core/pydantic_utilities.py +255 -0
  42. mirascope/api/_generated/core/query_encoder.py +58 -0
  43. mirascope/api/_generated/core/remove_none_from_dict.py +11 -0
  44. mirascope/api/_generated/core/request_options.py +35 -0
  45. mirascope/api/_generated/core/serialization.py +276 -0
  46. mirascope/api/_generated/docs/__init__.py +4 -0
  47. mirascope/api/_generated/docs/client.py +91 -0
  48. mirascope/api/_generated/docs/raw_client.py +178 -0
  49. mirascope/api/_generated/environment.py +9 -0
  50. mirascope/api/_generated/environments/__init__.py +23 -0
  51. mirascope/api/_generated/environments/client.py +649 -0
  52. mirascope/api/_generated/environments/raw_client.py +1567 -0
  53. mirascope/api/_generated/environments/types/__init__.py +25 -0
  54. mirascope/api/_generated/environments/types/environments_create_response.py +24 -0
  55. mirascope/api/_generated/environments/types/environments_get_analytics_response.py +60 -0
  56. mirascope/api/_generated/environments/types/environments_get_analytics_response_top_functions_item.py +24 -0
  57. mirascope/api/_generated/environments/types/environments_get_analytics_response_top_models_item.py +22 -0
  58. mirascope/api/_generated/environments/types/environments_get_response.py +24 -0
  59. mirascope/api/_generated/environments/types/environments_list_response_item.py +24 -0
  60. mirascope/api/_generated/environments/types/environments_update_response.py +24 -0
  61. mirascope/api/_generated/errors/__init__.py +25 -0
  62. mirascope/api/_generated/errors/bad_request_error.py +14 -0
  63. mirascope/api/_generated/errors/conflict_error.py +14 -0
  64. mirascope/api/_generated/errors/forbidden_error.py +11 -0
  65. mirascope/api/_generated/errors/internal_server_error.py +10 -0
  66. mirascope/api/_generated/errors/not_found_error.py +11 -0
  67. mirascope/api/_generated/errors/payment_required_error.py +15 -0
  68. mirascope/api/_generated/errors/service_unavailable_error.py +14 -0
  69. mirascope/api/_generated/errors/too_many_requests_error.py +15 -0
  70. mirascope/api/_generated/errors/unauthorized_error.py +11 -0
  71. mirascope/api/_generated/functions/__init__.py +39 -0
  72. mirascope/api/_generated/functions/client.py +647 -0
  73. mirascope/api/_generated/functions/raw_client.py +1890 -0
  74. mirascope/api/_generated/functions/types/__init__.py +53 -0
  75. mirascope/api/_generated/functions/types/functions_create_request_dependencies_value.py +20 -0
  76. mirascope/api/_generated/functions/types/functions_create_response.py +37 -0
  77. mirascope/api/_generated/functions/types/functions_create_response_dependencies_value.py +20 -0
  78. mirascope/api/_generated/functions/types/functions_find_by_hash_response.py +39 -0
  79. mirascope/api/_generated/functions/types/functions_find_by_hash_response_dependencies_value.py +20 -0
  80. mirascope/api/_generated/functions/types/functions_get_by_env_response.py +53 -0
  81. mirascope/api/_generated/functions/types/functions_get_by_env_response_dependencies_value.py +22 -0
  82. mirascope/api/_generated/functions/types/functions_get_response.py +37 -0
  83. mirascope/api/_generated/functions/types/functions_get_response_dependencies_value.py +20 -0
  84. mirascope/api/_generated/functions/types/functions_list_by_env_response.py +25 -0
  85. mirascope/api/_generated/functions/types/functions_list_by_env_response_functions_item.py +56 -0
  86. mirascope/api/_generated/functions/types/functions_list_by_env_response_functions_item_dependencies_value.py +22 -0
  87. mirascope/api/_generated/functions/types/functions_list_response.py +21 -0
  88. mirascope/api/_generated/functions/types/functions_list_response_functions_item.py +41 -0
  89. mirascope/api/_generated/functions/types/functions_list_response_functions_item_dependencies_value.py +20 -0
  90. mirascope/api/_generated/health/__init__.py +7 -0
  91. mirascope/api/_generated/health/client.py +92 -0
  92. mirascope/api/_generated/health/raw_client.py +175 -0
  93. mirascope/api/_generated/health/types/__init__.py +8 -0
  94. mirascope/api/_generated/health/types/health_check_response.py +22 -0
  95. mirascope/api/_generated/health/types/health_check_response_status.py +5 -0
  96. mirascope/api/_generated/organization_invitations/__init__.py +33 -0
  97. mirascope/api/_generated/organization_invitations/client.py +546 -0
  98. mirascope/api/_generated/organization_invitations/raw_client.py +1519 -0
  99. mirascope/api/_generated/organization_invitations/types/__init__.py +53 -0
  100. mirascope/api/_generated/organization_invitations/types/organization_invitations_accept_response.py +34 -0
  101. mirascope/api/_generated/organization_invitations/types/organization_invitations_accept_response_role.py +7 -0
  102. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_request_role.py +7 -0
  103. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_response.py +48 -0
  104. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_response_role.py +7 -0
  105. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_response_status.py +7 -0
  106. mirascope/api/_generated/organization_invitations/types/organization_invitations_get_response.py +48 -0
  107. mirascope/api/_generated/organization_invitations/types/organization_invitations_get_response_role.py +7 -0
  108. mirascope/api/_generated/organization_invitations/types/organization_invitations_get_response_status.py +7 -0
  109. mirascope/api/_generated/organization_invitations/types/organization_invitations_list_response_item.py +48 -0
  110. mirascope/api/_generated/organization_invitations/types/organization_invitations_list_response_item_role.py +7 -0
  111. mirascope/api/_generated/organization_invitations/types/organization_invitations_list_response_item_status.py +7 -0
  112. mirascope/api/_generated/organization_memberships/__init__.py +19 -0
  113. mirascope/api/_generated/organization_memberships/client.py +302 -0
  114. mirascope/api/_generated/organization_memberships/raw_client.py +736 -0
  115. mirascope/api/_generated/organization_memberships/types/__init__.py +27 -0
  116. mirascope/api/_generated/organization_memberships/types/organization_memberships_list_response_item.py +33 -0
  117. mirascope/api/_generated/organization_memberships/types/organization_memberships_list_response_item_role.py +7 -0
  118. mirascope/api/_generated/organization_memberships/types/organization_memberships_update_request_role.py +7 -0
  119. mirascope/api/_generated/organization_memberships/types/organization_memberships_update_response.py +31 -0
  120. mirascope/api/_generated/organization_memberships/types/organization_memberships_update_response_role.py +7 -0
  121. mirascope/api/_generated/organizations/__init__.py +51 -0
  122. mirascope/api/_generated/organizations/client.py +869 -0
  123. mirascope/api/_generated/organizations/raw_client.py +2593 -0
  124. mirascope/api/_generated/organizations/types/__init__.py +71 -0
  125. mirascope/api/_generated/organizations/types/organizations_create_payment_intent_response.py +24 -0
  126. mirascope/api/_generated/organizations/types/organizations_create_response.py +26 -0
  127. mirascope/api/_generated/organizations/types/organizations_create_response_role.py +5 -0
  128. mirascope/api/_generated/organizations/types/organizations_get_response.py +26 -0
  129. mirascope/api/_generated/organizations/types/organizations_get_response_role.py +5 -0
  130. mirascope/api/_generated/organizations/types/organizations_list_response_item.py +26 -0
  131. mirascope/api/_generated/organizations/types/organizations_list_response_item_role.py +5 -0
  132. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_request_target_plan.py +7 -0
  133. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_response.py +47 -0
  134. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_response_validation_errors_item.py +33 -0
  135. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_response_validation_errors_item_resource.py +7 -0
  136. mirascope/api/_generated/organizations/types/organizations_router_balance_response.py +24 -0
  137. mirascope/api/_generated/organizations/types/organizations_subscription_response.py +53 -0
  138. mirascope/api/_generated/organizations/types/organizations_subscription_response_current_plan.py +7 -0
  139. mirascope/api/_generated/organizations/types/organizations_subscription_response_payment_method.py +26 -0
  140. mirascope/api/_generated/organizations/types/organizations_subscription_response_scheduled_change.py +34 -0
  141. mirascope/api/_generated/organizations/types/organizations_subscription_response_scheduled_change_target_plan.py +7 -0
  142. mirascope/api/_generated/organizations/types/organizations_update_response.py +26 -0
  143. mirascope/api/_generated/organizations/types/organizations_update_response_role.py +5 -0
  144. mirascope/api/_generated/organizations/types/organizations_update_subscription_request_target_plan.py +7 -0
  145. mirascope/api/_generated/organizations/types/organizations_update_subscription_response.py +35 -0
  146. mirascope/api/_generated/project_memberships/__init__.py +29 -0
  147. mirascope/api/_generated/project_memberships/client.py +528 -0
  148. mirascope/api/_generated/project_memberships/raw_client.py +1278 -0
  149. mirascope/api/_generated/project_memberships/types/__init__.py +33 -0
  150. mirascope/api/_generated/project_memberships/types/project_memberships_create_request_role.py +7 -0
  151. mirascope/api/_generated/project_memberships/types/project_memberships_create_response.py +35 -0
  152. mirascope/api/_generated/project_memberships/types/project_memberships_create_response_role.py +7 -0
  153. mirascope/api/_generated/project_memberships/types/project_memberships_get_response.py +33 -0
  154. mirascope/api/_generated/project_memberships/types/project_memberships_get_response_role.py +7 -0
  155. mirascope/api/_generated/project_memberships/types/project_memberships_list_response_item.py +33 -0
  156. mirascope/api/_generated/project_memberships/types/project_memberships_list_response_item_role.py +7 -0
  157. mirascope/api/_generated/project_memberships/types/project_memberships_update_request_role.py +7 -0
  158. mirascope/api/_generated/project_memberships/types/project_memberships_update_response.py +35 -0
  159. mirascope/api/_generated/project_memberships/types/project_memberships_update_response_role.py +7 -0
  160. mirascope/api/_generated/projects/__init__.py +7 -0
  161. mirascope/api/_generated/projects/client.py +428 -0
  162. mirascope/api/_generated/projects/raw_client.py +1302 -0
  163. mirascope/api/_generated/projects/types/__init__.py +10 -0
  164. mirascope/api/_generated/projects/types/projects_create_response.py +25 -0
  165. mirascope/api/_generated/projects/types/projects_get_response.py +25 -0
  166. mirascope/api/_generated/projects/types/projects_list_response_item.py +25 -0
  167. mirascope/api/_generated/projects/types/projects_update_response.py +25 -0
  168. mirascope/api/_generated/reference.md +4987 -0
  169. mirascope/api/_generated/tags/__init__.py +19 -0
  170. mirascope/api/_generated/tags/client.py +504 -0
  171. mirascope/api/_generated/tags/raw_client.py +1288 -0
  172. mirascope/api/_generated/tags/types/__init__.py +17 -0
  173. mirascope/api/_generated/tags/types/tags_create_response.py +41 -0
  174. mirascope/api/_generated/tags/types/tags_get_response.py +41 -0
  175. mirascope/api/_generated/tags/types/tags_list_response.py +23 -0
  176. mirascope/api/_generated/tags/types/tags_list_response_tags_item.py +41 -0
  177. mirascope/api/_generated/tags/types/tags_update_response.py +41 -0
  178. mirascope/api/_generated/token_cost/__init__.py +7 -0
  179. mirascope/api/_generated/token_cost/client.py +160 -0
  180. mirascope/api/_generated/token_cost/raw_client.py +264 -0
  181. mirascope/api/_generated/token_cost/types/__init__.py +8 -0
  182. mirascope/api/_generated/token_cost/types/token_cost_calculate_request_usage.py +54 -0
  183. mirascope/api/_generated/token_cost/types/token_cost_calculate_response.py +52 -0
  184. mirascope/api/_generated/traces/__init__.py +97 -0
  185. mirascope/api/_generated/traces/client.py +1103 -0
  186. mirascope/api/_generated/traces/raw_client.py +2322 -0
  187. mirascope/api/_generated/traces/types/__init__.py +155 -0
  188. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item.py +29 -0
  189. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource.py +27 -0
  190. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item.py +23 -0
  191. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value.py +38 -0
  192. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_array_value.py +19 -0
  193. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_kvlist_value.py +22 -0
  194. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_kvlist_value_values_item.py +20 -0
  195. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item.py +29 -0
  196. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope.py +31 -0
  197. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item.py +23 -0
  198. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value.py +38 -0
  199. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value_array_value.py +19 -0
  200. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value_kvlist_value.py +22 -0
  201. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value_kvlist_value_values_item.py +22 -0
  202. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item.py +48 -0
  203. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item.py +23 -0
  204. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value.py +38 -0
  205. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value_array_value.py +19 -0
  206. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value_kvlist_value.py +24 -0
  207. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value_kvlist_value_values_item.py +22 -0
  208. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_status.py +20 -0
  209. mirascope/api/_generated/traces/types/traces_create_response.py +24 -0
  210. mirascope/api/_generated/traces/types/traces_create_response_partial_success.py +22 -0
  211. mirascope/api/_generated/traces/types/traces_get_analytics_summary_response.py +60 -0
  212. mirascope/api/_generated/traces/types/traces_get_analytics_summary_response_top_functions_item.py +24 -0
  213. mirascope/api/_generated/traces/types/traces_get_analytics_summary_response_top_models_item.py +22 -0
  214. mirascope/api/_generated/traces/types/traces_get_trace_detail_by_env_response.py +33 -0
  215. mirascope/api/_generated/traces/types/traces_get_trace_detail_by_env_response_spans_item.py +88 -0
  216. mirascope/api/_generated/traces/types/traces_get_trace_detail_response.py +33 -0
  217. mirascope/api/_generated/traces/types/traces_get_trace_detail_response_spans_item.py +88 -0
  218. mirascope/api/_generated/traces/types/traces_list_by_function_hash_response.py +25 -0
  219. mirascope/api/_generated/traces/types/traces_list_by_function_hash_response_traces_item.py +44 -0
  220. mirascope/api/_generated/traces/types/traces_search_by_env_request_attribute_filters_item.py +26 -0
  221. mirascope/api/_generated/traces/types/traces_search_by_env_request_attribute_filters_item_operator.py +7 -0
  222. mirascope/api/_generated/traces/types/traces_search_by_env_request_sort_by.py +7 -0
  223. mirascope/api/_generated/traces/types/traces_search_by_env_request_sort_order.py +7 -0
  224. mirascope/api/_generated/traces/types/traces_search_by_env_response.py +26 -0
  225. mirascope/api/_generated/traces/types/traces_search_by_env_response_spans_item.py +50 -0
  226. mirascope/api/_generated/traces/types/traces_search_request_attribute_filters_item.py +26 -0
  227. mirascope/api/_generated/traces/types/traces_search_request_attribute_filters_item_operator.py +7 -0
  228. mirascope/api/_generated/traces/types/traces_search_request_sort_by.py +7 -0
  229. mirascope/api/_generated/traces/types/traces_search_request_sort_order.py +5 -0
  230. mirascope/api/_generated/traces/types/traces_search_response.py +26 -0
  231. mirascope/api/_generated/traces/types/traces_search_response_spans_item.py +50 -0
  232. mirascope/api/_generated/types/__init__.py +85 -0
  233. mirascope/api/_generated/types/already_exists_error.py +22 -0
  234. mirascope/api/_generated/types/already_exists_error_tag.py +5 -0
  235. mirascope/api/_generated/types/bad_request_error_body.py +50 -0
  236. mirascope/api/_generated/types/click_house_error.py +22 -0
  237. mirascope/api/_generated/types/database_error.py +22 -0
  238. mirascope/api/_generated/types/database_error_tag.py +5 -0
  239. mirascope/api/_generated/types/date.py +3 -0
  240. mirascope/api/_generated/types/http_api_decode_error.py +27 -0
  241. mirascope/api/_generated/types/http_api_decode_error_tag.py +5 -0
  242. mirascope/api/_generated/types/immutable_resource_error.py +22 -0
  243. mirascope/api/_generated/types/internal_server_error_body.py +49 -0
  244. mirascope/api/_generated/types/issue.py +38 -0
  245. mirascope/api/_generated/types/issue_tag.py +10 -0
  246. mirascope/api/_generated/types/not_found_error_body.py +22 -0
  247. mirascope/api/_generated/types/not_found_error_tag.py +5 -0
  248. mirascope/api/_generated/types/number_from_string.py +3 -0
  249. mirascope/api/_generated/types/permission_denied_error.py +22 -0
  250. mirascope/api/_generated/types/permission_denied_error_tag.py +5 -0
  251. mirascope/api/_generated/types/plan_limit_exceeded_error.py +32 -0
  252. mirascope/api/_generated/types/plan_limit_exceeded_error_tag.py +7 -0
  253. mirascope/api/_generated/types/pricing_unavailable_error.py +23 -0
  254. mirascope/api/_generated/types/property_key.py +7 -0
  255. mirascope/api/_generated/types/property_key_key.py +25 -0
  256. mirascope/api/_generated/types/property_key_key_tag.py +5 -0
  257. mirascope/api/_generated/types/rate_limit_error.py +31 -0
  258. mirascope/api/_generated/types/rate_limit_error_tag.py +5 -0
  259. mirascope/api/_generated/types/service_unavailable_error_body.py +24 -0
  260. mirascope/api/_generated/types/service_unavailable_error_tag.py +7 -0
  261. mirascope/api/_generated/types/stripe_error.py +20 -0
  262. mirascope/api/_generated/types/subscription_past_due_error.py +31 -0
  263. mirascope/api/_generated/types/subscription_past_due_error_tag.py +7 -0
  264. mirascope/api/_generated/types/unauthorized_error_body.py +21 -0
  265. mirascope/api/_generated/types/unauthorized_error_tag.py +5 -0
  266. mirascope/api/client.py +255 -0
  267. mirascope/api/settings.py +99 -0
  268. mirascope/llm/__init__.py +316 -0
  269. mirascope/llm/calls/__init__.py +17 -0
  270. mirascope/llm/calls/calls.py +348 -0
  271. mirascope/llm/calls/decorator.py +268 -0
  272. mirascope/llm/content/__init__.py +71 -0
  273. mirascope/llm/content/audio.py +173 -0
  274. mirascope/llm/content/document.py +94 -0
  275. mirascope/llm/content/image.py +206 -0
  276. mirascope/llm/content/text.py +47 -0
  277. mirascope/llm/content/thought.py +58 -0
  278. mirascope/llm/content/tool_call.py +69 -0
  279. mirascope/llm/content/tool_output.py +43 -0
  280. mirascope/llm/context/__init__.py +6 -0
  281. mirascope/llm/context/_utils.py +41 -0
  282. mirascope/llm/context/context.py +24 -0
  283. mirascope/llm/exceptions.py +360 -0
  284. mirascope/llm/formatting/__init__.py +39 -0
  285. mirascope/llm/formatting/format.py +291 -0
  286. mirascope/llm/formatting/from_call_args.py +30 -0
  287. mirascope/llm/formatting/output_parser.py +178 -0
  288. mirascope/llm/formatting/partial.py +131 -0
  289. mirascope/llm/formatting/primitives.py +192 -0
  290. mirascope/llm/formatting/types.py +83 -0
  291. mirascope/llm/mcp/__init__.py +5 -0
  292. mirascope/llm/mcp/mcp_client.py +130 -0
  293. mirascope/llm/messages/__init__.py +35 -0
  294. mirascope/llm/messages/_utils.py +34 -0
  295. mirascope/llm/messages/message.py +190 -0
  296. mirascope/llm/models/__init__.py +21 -0
  297. mirascope/llm/models/models.py +1339 -0
  298. mirascope/llm/models/params.py +72 -0
  299. mirascope/llm/models/thinking_config.py +61 -0
  300. mirascope/llm/prompts/__init__.py +34 -0
  301. mirascope/llm/prompts/_utils.py +31 -0
  302. mirascope/llm/prompts/decorator.py +215 -0
  303. mirascope/llm/prompts/prompts.py +484 -0
  304. mirascope/llm/prompts/protocols.py +65 -0
  305. mirascope/llm/providers/__init__.py +65 -0
  306. mirascope/llm/providers/anthropic/__init__.py +11 -0
  307. mirascope/llm/providers/anthropic/_utils/__init__.py +27 -0
  308. mirascope/llm/providers/anthropic/_utils/beta_decode.py +297 -0
  309. mirascope/llm/providers/anthropic/_utils/beta_encode.py +272 -0
  310. mirascope/llm/providers/anthropic/_utils/decode.py +326 -0
  311. mirascope/llm/providers/anthropic/_utils/encode.py +431 -0
  312. mirascope/llm/providers/anthropic/_utils/errors.py +46 -0
  313. mirascope/llm/providers/anthropic/beta_provider.py +338 -0
  314. mirascope/llm/providers/anthropic/model_id.py +23 -0
  315. mirascope/llm/providers/anthropic/model_info.py +87 -0
  316. mirascope/llm/providers/anthropic/provider.py +440 -0
  317. mirascope/llm/providers/base/__init__.py +14 -0
  318. mirascope/llm/providers/base/_utils.py +248 -0
  319. mirascope/llm/providers/base/base_provider.py +1463 -0
  320. mirascope/llm/providers/base/kwargs.py +12 -0
  321. mirascope/llm/providers/google/__init__.py +6 -0
  322. mirascope/llm/providers/google/_utils/__init__.py +17 -0
  323. mirascope/llm/providers/google/_utils/decode.py +357 -0
  324. mirascope/llm/providers/google/_utils/encode.py +418 -0
  325. mirascope/llm/providers/google/_utils/errors.py +50 -0
  326. mirascope/llm/providers/google/message.py +7 -0
  327. mirascope/llm/providers/google/model_id.py +22 -0
  328. mirascope/llm/providers/google/model_info.py +63 -0
  329. mirascope/llm/providers/google/provider.py +456 -0
  330. mirascope/llm/providers/mirascope/__init__.py +5 -0
  331. mirascope/llm/providers/mirascope/_utils.py +73 -0
  332. mirascope/llm/providers/mirascope/provider.py +313 -0
  333. mirascope/llm/providers/mlx/__init__.py +9 -0
  334. mirascope/llm/providers/mlx/_utils.py +141 -0
  335. mirascope/llm/providers/mlx/encoding/__init__.py +8 -0
  336. mirascope/llm/providers/mlx/encoding/base.py +69 -0
  337. mirascope/llm/providers/mlx/encoding/transformers.py +146 -0
  338. mirascope/llm/providers/mlx/mlx.py +242 -0
  339. mirascope/llm/providers/mlx/model_id.py +17 -0
  340. mirascope/llm/providers/mlx/provider.py +416 -0
  341. mirascope/llm/providers/model_id.py +16 -0
  342. mirascope/llm/providers/ollama/__init__.py +7 -0
  343. mirascope/llm/providers/ollama/provider.py +71 -0
  344. mirascope/llm/providers/openai/__init__.py +15 -0
  345. mirascope/llm/providers/openai/_utils/__init__.py +5 -0
  346. mirascope/llm/providers/openai/_utils/errors.py +46 -0
  347. mirascope/llm/providers/openai/completions/__init__.py +7 -0
  348. mirascope/llm/providers/openai/completions/_utils/__init__.py +18 -0
  349. mirascope/llm/providers/openai/completions/_utils/decode.py +252 -0
  350. mirascope/llm/providers/openai/completions/_utils/encode.py +390 -0
  351. mirascope/llm/providers/openai/completions/_utils/feature_info.py +50 -0
  352. mirascope/llm/providers/openai/completions/base_provider.py +522 -0
  353. mirascope/llm/providers/openai/completions/provider.py +28 -0
  354. mirascope/llm/providers/openai/model_id.py +31 -0
  355. mirascope/llm/providers/openai/model_info.py +303 -0
  356. mirascope/llm/providers/openai/provider.py +405 -0
  357. mirascope/llm/providers/openai/responses/__init__.py +5 -0
  358. mirascope/llm/providers/openai/responses/_utils/__init__.py +15 -0
  359. mirascope/llm/providers/openai/responses/_utils/decode.py +289 -0
  360. mirascope/llm/providers/openai/responses/_utils/encode.py +399 -0
  361. mirascope/llm/providers/openai/responses/provider.py +472 -0
  362. mirascope/llm/providers/openrouter/__init__.py +5 -0
  363. mirascope/llm/providers/openrouter/provider.py +67 -0
  364. mirascope/llm/providers/provider_id.py +26 -0
  365. mirascope/llm/providers/provider_registry.py +305 -0
  366. mirascope/llm/providers/together/__init__.py +7 -0
  367. mirascope/llm/providers/together/provider.py +40 -0
  368. mirascope/llm/responses/__init__.py +66 -0
  369. mirascope/llm/responses/_utils.py +146 -0
  370. mirascope/llm/responses/base_response.py +103 -0
  371. mirascope/llm/responses/base_stream_response.py +824 -0
  372. mirascope/llm/responses/finish_reason.py +28 -0
  373. mirascope/llm/responses/response.py +362 -0
  374. mirascope/llm/responses/root_response.py +248 -0
  375. mirascope/llm/responses/stream_response.py +577 -0
  376. mirascope/llm/responses/streams.py +363 -0
  377. mirascope/llm/responses/usage.py +139 -0
  378. mirascope/llm/tools/__init__.py +71 -0
  379. mirascope/llm/tools/_utils.py +34 -0
  380. mirascope/llm/tools/decorator.py +184 -0
  381. mirascope/llm/tools/protocols.py +96 -0
  382. mirascope/llm/tools/provider_tools.py +18 -0
  383. mirascope/llm/tools/tool_schema.py +321 -0
  384. mirascope/llm/tools/toolkit.py +178 -0
  385. mirascope/llm/tools/tools.py +263 -0
  386. mirascope/llm/tools/types.py +112 -0
  387. mirascope/llm/tools/web_search_tool.py +32 -0
  388. mirascope/llm/types/__init__.py +22 -0
  389. mirascope/llm/types/dataclass.py +9 -0
  390. mirascope/llm/types/jsonable.py +44 -0
  391. mirascope/llm/types/type_vars.py +19 -0
  392. mirascope/ops/__init__.py +129 -0
  393. mirascope/ops/_internal/__init__.py +5 -0
  394. mirascope/ops/_internal/closure.py +1172 -0
  395. mirascope/ops/_internal/configuration.py +177 -0
  396. mirascope/ops/_internal/context.py +76 -0
  397. mirascope/ops/_internal/exporters/__init__.py +26 -0
  398. mirascope/ops/_internal/exporters/exporters.py +362 -0
  399. mirascope/ops/_internal/exporters/processors.py +104 -0
  400. mirascope/ops/_internal/exporters/types.py +165 -0
  401. mirascope/ops/_internal/exporters/utils.py +66 -0
  402. mirascope/ops/_internal/instrumentation/__init__.py +28 -0
  403. mirascope/ops/_internal/instrumentation/llm/__init__.py +8 -0
  404. mirascope/ops/_internal/instrumentation/llm/common.py +500 -0
  405. mirascope/ops/_internal/instrumentation/llm/cost.py +190 -0
  406. mirascope/ops/_internal/instrumentation/llm/encode.py +238 -0
  407. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/__init__.py +38 -0
  408. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/gen_ai_input_messages.py +31 -0
  409. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/gen_ai_output_messages.py +38 -0
  410. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/gen_ai_system_instructions.py +18 -0
  411. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/shared.py +100 -0
  412. mirascope/ops/_internal/instrumentation/llm/llm.py +161 -0
  413. mirascope/ops/_internal/instrumentation/llm/model.py +1777 -0
  414. mirascope/ops/_internal/instrumentation/llm/response.py +521 -0
  415. mirascope/ops/_internal/instrumentation/llm/serialize.py +324 -0
  416. mirascope/ops/_internal/instrumentation/providers/__init__.py +29 -0
  417. mirascope/ops/_internal/instrumentation/providers/anthropic.py +78 -0
  418. mirascope/ops/_internal/instrumentation/providers/base.py +179 -0
  419. mirascope/ops/_internal/instrumentation/providers/google_genai.py +85 -0
  420. mirascope/ops/_internal/instrumentation/providers/openai.py +82 -0
  421. mirascope/ops/_internal/propagation.py +198 -0
  422. mirascope/ops/_internal/protocols.py +133 -0
  423. mirascope/ops/_internal/session.py +139 -0
  424. mirascope/ops/_internal/spans.py +232 -0
  425. mirascope/ops/_internal/traced_calls.py +389 -0
  426. mirascope/ops/_internal/traced_functions.py +528 -0
  427. mirascope/ops/_internal/tracing.py +353 -0
  428. mirascope/ops/_internal/types.py +13 -0
  429. mirascope/ops/_internal/utils.py +131 -0
  430. mirascope/ops/_internal/versioned_calls.py +512 -0
  431. mirascope/ops/_internal/versioned_functions.py +357 -0
  432. mirascope/ops/_internal/versioning.py +303 -0
  433. mirascope/ops/exceptions.py +21 -0
  434. mirascope-2.1.1.dist-info/METADATA +231 -0
  435. mirascope-2.1.1.dist-info/RECORD +437 -0
  436. {mirascope-1.0.5.dist-info → mirascope-2.1.1.dist-info}/WHEEL +1 -1
  437. {mirascope-1.0.5.dist-info → mirascope-2.1.1.dist-info}/licenses/LICENSE +1 -1
  438. mirascope/beta/__init__.py +0 -0
  439. mirascope/beta/openai/__init__.py +0 -5
  440. mirascope/beta/openai/parse.py +0 -129
  441. mirascope/beta/rag/__init__.py +0 -24
  442. mirascope/beta/rag/base/__init__.py +0 -22
  443. mirascope/beta/rag/base/chunkers/__init__.py +0 -2
  444. mirascope/beta/rag/base/chunkers/base_chunker.py +0 -37
  445. mirascope/beta/rag/base/chunkers/text_chunker.py +0 -33
  446. mirascope/beta/rag/base/config.py +0 -8
  447. mirascope/beta/rag/base/document.py +0 -11
  448. mirascope/beta/rag/base/embedders.py +0 -35
  449. mirascope/beta/rag/base/embedding_params.py +0 -18
  450. mirascope/beta/rag/base/embedding_response.py +0 -30
  451. mirascope/beta/rag/base/query_results.py +0 -7
  452. mirascope/beta/rag/base/vectorstore_params.py +0 -18
  453. mirascope/beta/rag/base/vectorstores.py +0 -37
  454. mirascope/beta/rag/chroma/__init__.py +0 -11
  455. mirascope/beta/rag/chroma/types.py +0 -57
  456. mirascope/beta/rag/chroma/vectorstores.py +0 -97
  457. mirascope/beta/rag/cohere/__init__.py +0 -11
  458. mirascope/beta/rag/cohere/embedders.py +0 -87
  459. mirascope/beta/rag/cohere/embedding_params.py +0 -29
  460. mirascope/beta/rag/cohere/embedding_response.py +0 -29
  461. mirascope/beta/rag/cohere/py.typed +0 -0
  462. mirascope/beta/rag/openai/__init__.py +0 -11
  463. mirascope/beta/rag/openai/embedders.py +0 -144
  464. mirascope/beta/rag/openai/embedding_params.py +0 -18
  465. mirascope/beta/rag/openai/embedding_response.py +0 -14
  466. mirascope/beta/rag/openai/py.typed +0 -0
  467. mirascope/beta/rag/pinecone/__init__.py +0 -19
  468. mirascope/beta/rag/pinecone/types.py +0 -143
  469. mirascope/beta/rag/pinecone/vectorstores.py +0 -148
  470. mirascope/beta/rag/weaviate/__init__.py +0 -6
  471. mirascope/beta/rag/weaviate/types.py +0 -92
  472. mirascope/beta/rag/weaviate/vectorstores.py +0 -103
  473. mirascope/core/__init__.py +0 -55
  474. mirascope/core/anthropic/__init__.py +0 -21
  475. mirascope/core/anthropic/_call.py +0 -71
  476. mirascope/core/anthropic/_utils/__init__.py +0 -16
  477. mirascope/core/anthropic/_utils/_calculate_cost.py +0 -63
  478. mirascope/core/anthropic/_utils/_convert_message_params.py +0 -54
  479. mirascope/core/anthropic/_utils/_get_json_output.py +0 -34
  480. mirascope/core/anthropic/_utils/_handle_stream.py +0 -89
  481. mirascope/core/anthropic/_utils/_setup_call.py +0 -76
  482. mirascope/core/anthropic/call_params.py +0 -36
  483. mirascope/core/anthropic/call_response.py +0 -158
  484. mirascope/core/anthropic/call_response_chunk.py +0 -104
  485. mirascope/core/anthropic/dynamic_config.py +0 -26
  486. mirascope/core/anthropic/py.typed +0 -0
  487. mirascope/core/anthropic/stream.py +0 -140
  488. mirascope/core/anthropic/tool.py +0 -77
  489. mirascope/core/base/__init__.py +0 -40
  490. mirascope/core/base/_call_factory.py +0 -323
  491. mirascope/core/base/_create.py +0 -167
  492. mirascope/core/base/_extract.py +0 -139
  493. mirascope/core/base/_partial.py +0 -63
  494. mirascope/core/base/_utils/__init__.py +0 -64
  495. mirascope/core/base/_utils/_base_type.py +0 -17
  496. mirascope/core/base/_utils/_convert_base_model_to_base_tool.py +0 -45
  497. mirascope/core/base/_utils/_convert_base_type_to_base_tool.py +0 -24
  498. mirascope/core/base/_utils/_convert_function_to_base_tool.py +0 -126
  499. mirascope/core/base/_utils/_default_tool_docstring.py +0 -6
  500. mirascope/core/base/_utils/_extract_tool_return.py +0 -36
  501. mirascope/core/base/_utils/_format_template.py +0 -29
  502. mirascope/core/base/_utils/_get_audio_type.py +0 -18
  503. mirascope/core/base/_utils/_get_fn_args.py +0 -14
  504. mirascope/core/base/_utils/_get_image_type.py +0 -26
  505. mirascope/core/base/_utils/_get_metadata.py +0 -17
  506. mirascope/core/base/_utils/_get_possible_user_message_param.py +0 -21
  507. mirascope/core/base/_utils/_get_prompt_template.py +0 -25
  508. mirascope/core/base/_utils/_get_template_values.py +0 -52
  509. mirascope/core/base/_utils/_get_template_variables.py +0 -38
  510. mirascope/core/base/_utils/_json_mode_content.py +0 -15
  511. mirascope/core/base/_utils/_parse_content_template.py +0 -157
  512. mirascope/core/base/_utils/_parse_prompt_messages.py +0 -51
  513. mirascope/core/base/_utils/_protocols.py +0 -215
  514. mirascope/core/base/_utils/_setup_call.py +0 -64
  515. mirascope/core/base/_utils/_setup_extract_tool.py +0 -24
  516. mirascope/core/base/call_params.py +0 -6
  517. mirascope/core/base/call_response.py +0 -189
  518. mirascope/core/base/call_response_chunk.py +0 -91
  519. mirascope/core/base/dynamic_config.py +0 -55
  520. mirascope/core/base/message_param.py +0 -61
  521. mirascope/core/base/metadata.py +0 -13
  522. mirascope/core/base/prompt.py +0 -415
  523. mirascope/core/base/stream.py +0 -365
  524. mirascope/core/base/structured_stream.py +0 -251
  525. mirascope/core/base/tool.py +0 -126
  526. mirascope/core/base/toolkit.py +0 -146
  527. mirascope/core/cohere/__init__.py +0 -21
  528. mirascope/core/cohere/_call.py +0 -71
  529. mirascope/core/cohere/_utils/__init__.py +0 -16
  530. mirascope/core/cohere/_utils/_calculate_cost.py +0 -39
  531. mirascope/core/cohere/_utils/_convert_message_params.py +0 -31
  532. mirascope/core/cohere/_utils/_get_json_output.py +0 -31
  533. mirascope/core/cohere/_utils/_handle_stream.py +0 -33
  534. mirascope/core/cohere/_utils/_setup_call.py +0 -89
  535. mirascope/core/cohere/call_params.py +0 -57
  536. mirascope/core/cohere/call_response.py +0 -167
  537. mirascope/core/cohere/call_response_chunk.py +0 -101
  538. mirascope/core/cohere/dynamic_config.py +0 -24
  539. mirascope/core/cohere/py.typed +0 -0
  540. mirascope/core/cohere/stream.py +0 -113
  541. mirascope/core/cohere/tool.py +0 -92
  542. mirascope/core/gemini/__init__.py +0 -21
  543. mirascope/core/gemini/_call.py +0 -71
  544. mirascope/core/gemini/_utils/__init__.py +0 -16
  545. mirascope/core/gemini/_utils/_calculate_cost.py +0 -8
  546. mirascope/core/gemini/_utils/_convert_message_params.py +0 -74
  547. mirascope/core/gemini/_utils/_get_json_output.py +0 -33
  548. mirascope/core/gemini/_utils/_handle_stream.py +0 -33
  549. mirascope/core/gemini/_utils/_setup_call.py +0 -68
  550. mirascope/core/gemini/call_params.py +0 -28
  551. mirascope/core/gemini/call_response.py +0 -173
  552. mirascope/core/gemini/call_response_chunk.py +0 -85
  553. mirascope/core/gemini/dynamic_config.py +0 -26
  554. mirascope/core/gemini/stream.py +0 -121
  555. mirascope/core/gemini/tool.py +0 -104
  556. mirascope/core/groq/__init__.py +0 -21
  557. mirascope/core/groq/_call.py +0 -71
  558. mirascope/core/groq/_utils/__init__.py +0 -16
  559. mirascope/core/groq/_utils/_calculate_cost.py +0 -68
  560. mirascope/core/groq/_utils/_convert_message_params.py +0 -23
  561. mirascope/core/groq/_utils/_get_json_output.py +0 -27
  562. mirascope/core/groq/_utils/_handle_stream.py +0 -121
  563. mirascope/core/groq/_utils/_setup_call.py +0 -67
  564. mirascope/core/groq/call_params.py +0 -51
  565. mirascope/core/groq/call_response.py +0 -160
  566. mirascope/core/groq/call_response_chunk.py +0 -89
  567. mirascope/core/groq/dynamic_config.py +0 -26
  568. mirascope/core/groq/py.typed +0 -0
  569. mirascope/core/groq/stream.py +0 -136
  570. mirascope/core/groq/tool.py +0 -79
  571. mirascope/core/litellm/__init__.py +0 -6
  572. mirascope/core/litellm/_call.py +0 -73
  573. mirascope/core/litellm/_utils/__init__.py +0 -5
  574. mirascope/core/litellm/_utils/_setup_call.py +0 -46
  575. mirascope/core/litellm/py.typed +0 -0
  576. mirascope/core/mistral/__init__.py +0 -21
  577. mirascope/core/mistral/_call.py +0 -69
  578. mirascope/core/mistral/_utils/__init__.py +0 -16
  579. mirascope/core/mistral/_utils/_calculate_cost.py +0 -47
  580. mirascope/core/mistral/_utils/_convert_message_params.py +0 -23
  581. mirascope/core/mistral/_utils/_get_json_output.py +0 -28
  582. mirascope/core/mistral/_utils/_handle_stream.py +0 -121
  583. mirascope/core/mistral/_utils/_setup_call.py +0 -86
  584. mirascope/core/mistral/call_params.py +0 -36
  585. mirascope/core/mistral/call_response.py +0 -156
  586. mirascope/core/mistral/call_response_chunk.py +0 -84
  587. mirascope/core/mistral/dynamic_config.py +0 -24
  588. mirascope/core/mistral/py.typed +0 -0
  589. mirascope/core/mistral/stream.py +0 -117
  590. mirascope/core/mistral/tool.py +0 -77
  591. mirascope/core/openai/__init__.py +0 -21
  592. mirascope/core/openai/_call.py +0 -71
  593. mirascope/core/openai/_utils/__init__.py +0 -16
  594. mirascope/core/openai/_utils/_calculate_cost.py +0 -110
  595. mirascope/core/openai/_utils/_convert_message_params.py +0 -53
  596. mirascope/core/openai/_utils/_get_json_output.py +0 -27
  597. mirascope/core/openai/_utils/_handle_stream.py +0 -125
  598. mirascope/core/openai/_utils/_setup_call.py +0 -62
  599. mirascope/core/openai/call_params.py +0 -54
  600. mirascope/core/openai/call_response.py +0 -162
  601. mirascope/core/openai/call_response_chunk.py +0 -90
  602. mirascope/core/openai/dynamic_config.py +0 -26
  603. mirascope/core/openai/py.typed +0 -0
  604. mirascope/core/openai/stream.py +0 -148
  605. mirascope/core/openai/tool.py +0 -79
  606. mirascope/core/py.typed +0 -0
  607. mirascope/integrations/__init__.py +0 -20
  608. mirascope/integrations/_middleware_factory.py +0 -277
  609. mirascope/integrations/langfuse/__init__.py +0 -3
  610. mirascope/integrations/langfuse/_utils.py +0 -114
  611. mirascope/integrations/langfuse/_with_langfuse.py +0 -71
  612. mirascope/integrations/logfire/__init__.py +0 -3
  613. mirascope/integrations/logfire/_utils.py +0 -188
  614. mirascope/integrations/logfire/_with_logfire.py +0 -60
  615. mirascope/integrations/otel/__init__.py +0 -5
  616. mirascope/integrations/otel/_utils.py +0 -268
  617. mirascope/integrations/otel/_with_hyperdx.py +0 -61
  618. mirascope/integrations/otel/_with_otel.py +0 -60
  619. mirascope/integrations/tenacity.py +0 -50
  620. mirascope/py.typed +0 -0
  621. mirascope/v0/__init__.py +0 -43
  622. mirascope/v0/anthropic.py +0 -54
  623. mirascope/v0/base/__init__.py +0 -12
  624. mirascope/v0/base/calls.py +0 -118
  625. mirascope/v0/base/extractors.py +0 -122
  626. mirascope/v0/base/ops_utils.py +0 -207
  627. mirascope/v0/base/prompts.py +0 -48
  628. mirascope/v0/base/types.py +0 -14
  629. mirascope/v0/base/utils.py +0 -21
  630. mirascope/v0/openai.py +0 -54
  631. mirascope-1.0.5.dist-info/METADATA +0 -519
  632. mirascope-1.0.5.dist-info/RECORD +0 -198
@@ -1,92 +0,0 @@
1
- """Types for interacting with Weaviate using Mirascope."""
2
-
3
- from __future__ import annotations
4
-
5
- from typing import Any, Literal
6
-
7
- import weaviate.types as wt
8
- from pydantic import BaseModel, ConfigDict
9
-
10
- from ..base.document import Document
11
- from ..base.vectorstore_params import BaseVectorStoreParams
12
-
13
-
14
- class WeaviateSettings(BaseModel):
15
- mode: Literal["local", "cloud", "custom", "embedded"] = "local"
16
- headers: dict[str, str] | None = None
17
- cluster_url: str | None = None
18
- auth_credentials: Any | None = None
19
- hostname: str | None = None
20
- port: int | None = None
21
- grpc_port: int | None = None
22
- additional_config: Any | None = None
23
- version: str | None = None
24
- persistence_data_path: str | None = None
25
- binary_path: str | None = None
26
- environment_variables: dict[str, str] | None = None
27
- http_host: str | None = None
28
- http_port: int | None = None
29
- http_secure: bool | None = None
30
- grpc_host: str | None = None
31
- grpc_secure: bool | None = None
32
-
33
- skip_init_checks: bool | None = None
34
-
35
- model_config = ConfigDict(arbitrary_types_allowed=True)
36
-
37
- def kwargs(self) -> dict[str, Any]:
38
- kwargs = {}
39
- exclude = {"mode"}
40
- if self.auth_credentials:
41
- kwargs["auth_credentials"] = self.auth_credentials
42
- exclude.add("auth_credentials")
43
- if self.additional_config:
44
- kwargs["additional_config"] = self.additional_config
45
- exclude.add("additional_config")
46
- additional_kwargs = {
47
- key: value
48
- for key, value in self.model_dump(exclude=exclude).items()
49
- if value is not None
50
- }
51
- kwargs.update(additional_kwargs)
52
- return kwargs
53
-
54
-
55
- class WeaviateParams(BaseVectorStoreParams):
56
- vectorizer_config: Any | None = None
57
- generative_config: Any | None = None
58
-
59
- def kwargs(self) -> dict[str, Any]:
60
- kwargs = {}
61
- exclude = set()
62
- if self.vectorizer_config:
63
- kwargs["vectorizer_config"] = self.vectorizer_config
64
- exclude = {"vectorizer_config"}
65
- additional_kwargs = {
66
- key: value
67
- for key, value in self.model_dump(exclude=exclude).items()
68
- if value is not None
69
- }
70
- kwargs.update(additional_kwargs)
71
- return kwargs
72
-
73
-
74
- class WeaviateQueryResult(BaseModel):
75
- id: wt.UUID
76
- documents: list[Document] | None
77
- metadata: dict[str, Any]
78
- collection: str | None = None
79
-
80
- model_config = ConfigDict(arbitrary_types_allowed=True)
81
-
82
- def from_response(response_object) -> WeaviateQueryResult:
83
- model_dict = {}
84
- id = str(response_object.uuid)
85
- text = response_object.properties["text"]
86
- model_dict["id"] = id
87
- doc = Document(id=id, text=text)
88
- model_dict["documents"] = [doc]
89
- model_dict["metadata"] = response_object.metadata.__dict__
90
- model_dict["collection"] = response_object.collection
91
-
92
- return WeaviateQueryResult.model_validate(model_dict)
@@ -1,103 +0,0 @@
1
- from functools import cached_property
2
- from typing import Any, ClassVar
3
-
4
- import weaviate
5
- import weaviate.classes as wvc
6
- from weaviate import WeaviateClient
7
- from weaviate.collections.collection import Collection
8
-
9
- from ..base.document import Document
10
- from ..base.vectorstores import BaseVectorStore
11
- from .types import (
12
- WeaviateParams,
13
- WeaviateQueryResult,
14
- WeaviateSettings,
15
- )
16
-
17
-
18
- class WeaviateVectorStore(BaseVectorStore):
19
- """A vectorstore for Weaviate.
20
-
21
- Example:
22
-
23
- ```python
24
- from mirascope.beta.rag.weaviate.types import WeaviateSettings, WeaviateParams
25
- from mirascope.beta.rag.weaviate import WeaviateVectorStore
26
- from mirascope.beta.rag import TextChunker
27
-
28
-
29
- class MyStore(WeaviateVectorStore):
30
- chunker = TextChunker(chunk_size=1000, chunk_overlap=200)
31
- index_name = "my-store-0001"
32
- client_settings = WeaviateSettings()
33
-
34
- my_store = MyStore()
35
- with open(f"{PATH_TO_FILE}") as file:
36
- data = file.read()
37
- my_store.add(data)
38
- properties = my_store.retrieve("my question").properties
39
- print(documents)
40
- """
41
-
42
- _provider: ClassVar[str] = "weaviate"
43
- vectorstore_params = WeaviateParams()
44
- client_settings: ClassVar[WeaviateSettings] = WeaviateSettings()
45
-
46
- def add(self, text: str | list[Document], **kwargs: Any) -> None: # noqa: ANN401
47
- """Takes unstructured data and inserts into vectorstore"""
48
- documents: list[Document]
49
- if isinstance(text, str):
50
- chunk = self.chunker.chunk
51
- documents = chunk(text)
52
- else:
53
- documents = text
54
-
55
- if len(documents) < 2:
56
- return self._index.data.insert(
57
- properties={"text": documents[0].text}, uuid=documents[0].id, **kwargs
58
- )
59
-
60
- data_objects = []
61
- for document in documents:
62
- data_object = wvc.data.DataObject(
63
- properties={"text": document.text}, uuid=document.id
64
- )
65
- data_objects.append(data_object)
66
-
67
- return self._index.data.insert_many(data_objects)
68
-
69
- def retrieve(self, text: str, **kwargs: Any) -> WeaviateQueryResult: # noqa: ANN401
70
- """Queries the vectorstore for closest match"""
71
- query_result = self._index.query.near_text(query=text, **kwargs)
72
- result = query_result.objects[0]
73
-
74
- return WeaviateQueryResult.from_response(result)
75
-
76
- def close_connection(self) -> None:
77
- self._client.close()
78
-
79
- ############################# PRIVATE PROPERTIES #################################
80
-
81
- @cached_property
82
- def _client(self) -> WeaviateClient:
83
- if self.client_settings.mode == "local":
84
- return weaviate.connect_to_local(**self.client_settings.kwargs())
85
- elif self.client_settings.mode == "embedded":
86
- return weaviate.connect_to_embedded(**self.client_settings.kwargs())
87
- elif self.client_settings.mode == "cloud":
88
- return weaviate.connect_to_weaviate_cloud(**self.client_settings.kwargs())
89
- elif self.client_settings.mode == "custom":
90
- return weaviate.connect_to_custom(**self.client_settings.kwargs())
91
-
92
- @cached_property
93
- def _index(self) -> Collection:
94
- vectorstore_params = self.vectorstore_params
95
-
96
- if self.index_name:
97
- vectorstore_params = self.vectorstore_params.model_copy(
98
- update={"name": self.index_name}
99
- )
100
- if self._client.collections.exists(self.index_name):
101
- return self._client.collections.get(self.index_name)
102
-
103
- return self._client.collections.create(**vectorstore_params.kwargs())
@@ -1,55 +0,0 @@
1
- """The Mirascope Core Functionality."""
2
-
3
- from contextlib import suppress
4
-
5
- from . import base
6
- from .base import (
7
- BaseMessageParam,
8
- BasePrompt,
9
- BaseTool,
10
- BaseToolKit,
11
- metadata,
12
- prompt_template,
13
- toolkit_tool,
14
- )
15
-
16
- with suppress(ImportError):
17
- from . import anthropic as anthropic
18
-
19
- with suppress(ImportError):
20
- from . import cohere as cohere
21
-
22
- with suppress(ImportError):
23
- from . import gemini as gemini
24
-
25
- with suppress(ImportError):
26
- from . import groq as groq
27
-
28
-
29
- with suppress(ImportError):
30
- from . import litellm as litellm
31
-
32
-
33
- with suppress(ImportError):
34
- from . import mistral as mistral
35
-
36
- with suppress(ImportError):
37
- from . import openai as openai
38
-
39
- __all__ = [
40
- "anthropic",
41
- "base",
42
- "BaseMessageParam",
43
- "BasePrompt",
44
- "BaseTool",
45
- "BaseToolKit",
46
- "cohere",
47
- "gemini",
48
- "groq",
49
- "litellm",
50
- "metadata",
51
- "mistral",
52
- "openai",
53
- "prompt_template",
54
- "toolkit_tool",
55
- ]
@@ -1,21 +0,0 @@
1
- """The Mirascope Anthropic Module."""
2
-
3
- from ._call import anthropic_call
4
- from ._call import anthropic_call as call
5
- from .call_params import AnthropicCallParams
6
- from .call_response import AnthropicCallResponse
7
- from .call_response_chunk import AnthropicCallResponseChunk
8
- from .dynamic_config import AnthropicDynamicConfig
9
- from .stream import AnthropicStream
10
- from .tool import AnthropicTool
11
-
12
- __all__ = [
13
- "call",
14
- "AnthropicDynamicConfig",
15
- "AnthropicCallParams",
16
- "AnthropicCallResponse",
17
- "AnthropicCallResponseChunk",
18
- "AnthropicStream",
19
- "AnthropicTool",
20
- "anthropic_call",
21
- ]
@@ -1,71 +0,0 @@
1
- """The `anthropic_call` decorator for functions as LLM calls."""
2
-
3
- from ..base import call_factory
4
- from ._utils import (
5
- get_json_output,
6
- handle_stream,
7
- handle_stream_async,
8
- setup_call,
9
- )
10
- from .call_params import AnthropicCallParams
11
- from .call_response import AnthropicCallResponse
12
- from .call_response_chunk import AnthropicCallResponseChunk
13
- from .dynamic_config import AnthropicDynamicConfig
14
- from .stream import AnthropicStream
15
- from .tool import AnthropicTool
16
-
17
- anthropic_call = call_factory(
18
- TCallResponse=AnthropicCallResponse,
19
- TCallResponseChunk=AnthropicCallResponseChunk,
20
- TDynamicConfig=AnthropicDynamicConfig,
21
- TStream=AnthropicStream,
22
- TToolType=AnthropicTool,
23
- TCallParams=AnthropicCallParams,
24
- default_call_params=AnthropicCallParams(max_tokens=1000),
25
- setup_call=setup_call, # type: ignore
26
- get_json_output=get_json_output,
27
- handle_stream=handle_stream,
28
- handle_stream_async=handle_stream_async,
29
- )
30
- """A decorator for calling the Anthropic API with a typed function.
31
-
32
- usage docs: learn/calls.md
33
-
34
- This decorator is used to wrap a typed function that calls the Anthropic API. It
35
- parses the docstring of the wrapped function as the messages array and templates the
36
- input arguments for the function into each message's template.
37
-
38
- Example:
39
-
40
- ```python
41
- from mirascope.core import prompt_template
42
- from mirascope.core.anthropic import anthropic_call
43
-
44
-
45
- @anthropic_call("claude-3-5-sonnet-20240620")
46
- @prompt_template("Recommend a {genre} book")
47
- def recommend_book(genre: str):
48
- ...
49
-
50
- response = recommend_book("fantasy")
51
- print(response.content)
52
- ```
53
-
54
- Args:
55
- model (str): The Anthropic model to use in the API call.
56
- stream (bool): Whether to stream the response from the API call.
57
- tools (list[BaseTool | Callable]): The tools to use in the Anthropic API call.
58
- response_model (BaseModel | BaseType): The response model into which the response
59
- should be structured.
60
- output_parser (Callable[[AnthropicCallResponse | ResponseModelT], Any]): A function
61
- for parsing the call response whose value will be returned in place of the
62
- original call response.
63
- json_mode (bool): Whether to use JSON Mode.
64
- client (object): An optional custom client to use in place of the default client.
65
- call_params (AnthropicCallParams): The `AnthropicCallParams` call parameters to use
66
- in the API call.
67
-
68
- Returns:
69
- decorator (Callable): The decorator for turning a typed function into an Anthropic
70
- API call.
71
- """
@@ -1,16 +0,0 @@
1
- """Anthropic utilities for decorator factories."""
2
-
3
- from ._calculate_cost import calculate_cost
4
- from ._convert_message_params import convert_message_params
5
- from ._get_json_output import get_json_output
6
- from ._handle_stream import handle_stream, handle_stream_async
7
- from ._setup_call import setup_call
8
-
9
- __all__ = [
10
- "calculate_cost",
11
- "convert_message_params",
12
- "get_json_output",
13
- "handle_stream",
14
- "handle_stream_async",
15
- "setup_call",
16
- ]
@@ -1,63 +0,0 @@
1
- """Calculate the cost of a completion using the Anthropic API."""
2
-
3
-
4
- def calculate_cost(
5
- input_tokens: int | float | None,
6
- output_tokens: int | float | None,
7
- model: str = "claude-3-haiku-20240229",
8
- ) -> float | None:
9
- """Calculate the cost of a completion using the Anthropic API.
10
-
11
- https://www.anthropic.com/api
12
-
13
- claude-instant-1.2 $0.80 / 1M tokens $2.40 / 1M tokens
14
- claude-2.0 $8.00 / 1M tokens $24.00 / 1M tokens
15
- claude-2.1 $8.00 / 1M tokens $24.00 / 1M tokens
16
- claude-3-haiku $0.25 / 1M tokens $1.25 / 1M tokens
17
- claude-3-sonnet $3.00 / 1M tokens $15.00 / 1M tokens
18
- claude-3-opus $15.00 / 1M tokens $75.00 / 1M tokens
19
- """
20
- pricing = {
21
- "claude-instant-1.2": {
22
- "prompt": 0.000_000_8,
23
- "completion": 0.000_002_4,
24
- },
25
- "claude-2.0": {
26
- "prompt": 0.000_008,
27
- "completion": 0.000_024,
28
- },
29
- "claude-2.1": {
30
- "prompt": 0.000_008,
31
- "completion": 0.000_024,
32
- },
33
- "claude-3-haiku-20240307": {
34
- "prompt": 0.000_002_5,
35
- "completion": 0.000_012_5,
36
- },
37
- "claude-3-sonnet-20240229": {
38
- "prompt": 0.000_003,
39
- "completion": 0.000_015,
40
- },
41
- "claude-3-opus-20240229": {
42
- "prompt": 0.000_015,
43
- "completion": 0.000_075,
44
- },
45
- "claude-3-5-sonnet-20240620": {
46
- "prompt": 0.000_003,
47
- "completion": 0.000_015,
48
- },
49
- }
50
-
51
- if input_tokens is None or output_tokens is None:
52
- return None
53
-
54
- try:
55
- model_pricing = pricing[model]
56
- except KeyError:
57
- return None
58
-
59
- prompt_cost = input_tokens * model_pricing["prompt"]
60
- completion_cost = output_tokens * model_pricing["completion"]
61
- total_cost = prompt_cost + completion_cost
62
-
63
- return total_cost
@@ -1,54 +0,0 @@
1
- """Utility for converting `BaseMessageParam` to `MessageParam`"""
2
-
3
- import base64
4
-
5
- from anthropic.types import MessageParam
6
-
7
- from ...base import BaseMessageParam
8
-
9
-
10
- def convert_message_params(
11
- message_params: list[BaseMessageParam | MessageParam],
12
- ) -> list[MessageParam]:
13
- converted_message_params = []
14
- for message_param in message_params:
15
- if not isinstance(message_param, BaseMessageParam):
16
- converted_message_params.append(message_param)
17
- elif isinstance(content := message_param.content, str):
18
- converted_message_params.append(message_param.model_dump())
19
- else:
20
- converted_content = []
21
- for part in content:
22
- if part.type == "text":
23
- converted_content.append(part.model_dump())
24
-
25
- elif part.type == "image":
26
- if part.media_type not in [
27
- "image/jpeg",
28
- "image/png",
29
- "image/gif",
30
- "image/webp",
31
- ]:
32
- raise ValueError(
33
- f"Unsupported image media type: {part.media_type}. Anthropic"
34
- " currently only supports JPEG, PNG, GIF, and WebP images."
35
- )
36
- converted_content.append(
37
- {
38
- "type": "image",
39
- "source": {
40
- "data": base64.b64encode(part.image).decode("utf-8"),
41
- "media_type": part.media_type,
42
- "type": "base64",
43
- },
44
- }
45
- )
46
- else:
47
- raise ValueError(
48
- "Anthropic currently only supports text and image modalities. "
49
- f"Modality provided: {part.type}"
50
- )
51
- converted_message_params.append(
52
- {"role": message_param.role, "content": converted_content}
53
- )
54
- return converted_message_params
@@ -1,34 +0,0 @@
1
- """Get the JSON output from an anthropic call response or chunk."""
2
-
3
- import json
4
-
5
- from ..call_response import AnthropicCallResponse
6
- from ..call_response_chunk import AnthropicCallResponseChunk
7
-
8
-
9
- def get_json_output(
10
- response: AnthropicCallResponse | AnthropicCallResponseChunk, json_mode: bool
11
- ) -> str:
12
- """Get the JSON output from a completion response."""
13
- if isinstance(response, AnthropicCallResponse):
14
- if json_mode and (content := response.content):
15
- json_start = content.index("{")
16
- json_end = content.rfind("}")
17
- return content[json_start : json_end + 1]
18
- elif (
19
- (block := response.response.content[0])
20
- and block.type == "tool_use"
21
- and block.input is not None
22
- ):
23
- return json.dumps(block.input)
24
- raise ValueError("No tool call or JSON object found in response.")
25
- else:
26
- if json_mode:
27
- return response.content
28
- elif (
29
- response.chunk.type == "content_block_delta"
30
- and (delta := response.chunk.delta)
31
- and delta.type == "input_json_delta"
32
- ):
33
- return delta.partial_json
34
- return ""
@@ -1,89 +0,0 @@
1
- """Utilities for handling a stream of messages."""
2
-
3
- from collections.abc import AsyncGenerator, Generator
4
-
5
- import jiter
6
- from anthropic.types import MessageStreamEvent, ToolUseBlock
7
-
8
- from ..call_response_chunk import AnthropicCallResponseChunk
9
- from ..tool import AnthropicTool
10
-
11
-
12
- def _handle_chunk(
13
- buffer: str,
14
- chunk: MessageStreamEvent,
15
- current_tool_call: ToolUseBlock,
16
- current_tool_type: type[AnthropicTool] | None,
17
- tool_types: list[type[AnthropicTool]] | None,
18
- ) -> tuple[
19
- str,
20
- AnthropicTool | None,
21
- ToolUseBlock,
22
- type[AnthropicTool] | None,
23
- ]:
24
- """Handles a chunk of the stream."""
25
- if not tool_types:
26
- return buffer, None, current_tool_call, current_tool_type
27
-
28
- if chunk.type == "content_block_stop" and current_tool_type and buffer:
29
- current_tool_call.input = jiter.from_json(buffer.encode())
30
- return (
31
- "",
32
- current_tool_type.from_tool_call(current_tool_call),
33
- ToolUseBlock(id="", input={}, name="", type="tool_use"),
34
- None,
35
- )
36
-
37
- if chunk.type == "content_block_start" and isinstance(
38
- chunk.content_block, ToolUseBlock
39
- ):
40
- content_block = chunk.content_block
41
- current_tool_type = None
42
- for tool_type in tool_types:
43
- if tool_type._name() == content_block.name:
44
- current_tool_type = tool_type
45
- break
46
- if current_tool_type is None:
47
- raise RuntimeError(
48
- f"Unknown tool type in stream: {content_block.name}."
49
- ) # pragma: no cover
50
- return (
51
- "",
52
- None,
53
- ToolUseBlock(
54
- id=content_block.id, input={}, name=content_block.name, type="tool_use"
55
- ),
56
- current_tool_type,
57
- )
58
-
59
- if chunk.type == "content_block_delta" and chunk.delta.type == "input_json_delta":
60
- buffer += chunk.delta.partial_json
61
-
62
- return buffer, None, current_tool_call, current_tool_type
63
-
64
-
65
- def handle_stream(
66
- stream: Generator[MessageStreamEvent, None, None],
67
- tool_types: list[type[AnthropicTool]] | None,
68
- ) -> Generator[tuple[AnthropicCallResponseChunk, AnthropicTool | None], None, None]:
69
- """Iterator over the stream and constructs tools as they are streamed."""
70
- current_tool_call = ToolUseBlock(id="", input={}, name="", type="tool_use")
71
- current_tool_type, buffer = None, ""
72
- for chunk in stream:
73
- buffer, tool, current_tool_call, current_tool_type = _handle_chunk(
74
- buffer, chunk, current_tool_call, current_tool_type, tool_types
75
- )
76
- yield AnthropicCallResponseChunk(chunk=chunk), tool
77
-
78
-
79
- async def handle_stream_async(
80
- stream: AsyncGenerator[MessageStreamEvent, None],
81
- tool_types: list[type[AnthropicTool]] | None,
82
- ) -> AsyncGenerator[tuple[AnthropicCallResponseChunk, AnthropicTool | None], None]:
83
- current_tool_call = ToolUseBlock(id="", input={}, name="", type="tool_use")
84
- current_tool_type, buffer = None, ""
85
- async for chunk in stream:
86
- buffer, tool, current_tool_call, current_tool_type = _handle_chunk(
87
- buffer, chunk, current_tool_call, current_tool_type, tool_types
88
- )
89
- yield AnthropicCallResponseChunk(chunk=chunk), tool
@@ -1,76 +0,0 @@
1
- """This module contains the setup_call function for the Anthropic API."""
2
-
3
- import inspect
4
- from collections.abc import Awaitable, Callable
5
- from typing import Any, cast
6
-
7
- from anthropic import (
8
- Anthropic,
9
- AnthropicBedrock,
10
- AnthropicVertex,
11
- AsyncAnthropic,
12
- AsyncAnthropicBedrock,
13
- AsyncAnthropicVertex,
14
- )
15
- from anthropic.types import Message, MessageParam
16
-
17
- from ...base import BaseMessageParam, BaseTool, _utils
18
- from ..call_params import AnthropicCallParams
19
- from ..dynamic_config import AnthropicDynamicConfig
20
- from ..tool import AnthropicTool
21
- from ._convert_message_params import convert_message_params
22
-
23
-
24
- def setup_call(
25
- *,
26
- model: str,
27
- client: Anthropic
28
- | AsyncAnthropic
29
- | AnthropicBedrock
30
- | AsyncAnthropicBedrock
31
- | AnthropicVertex
32
- | AsyncAnthropicVertex
33
- | None,
34
- fn: Callable[..., AnthropicDynamicConfig | Awaitable[AnthropicDynamicConfig]],
35
- fn_args: dict[str, Any],
36
- dynamic_config: AnthropicDynamicConfig,
37
- tools: list[type[BaseTool] | Callable] | None,
38
- json_mode: bool,
39
- call_params: AnthropicCallParams,
40
- extract: bool,
41
- ) -> tuple[
42
- Callable[..., Message] | Callable[..., Awaitable[Message]],
43
- str,
44
- list[MessageParam],
45
- list[type[AnthropicTool]] | None,
46
- dict[str, Any],
47
- ]:
48
- prompt_template, messages, tool_types, call_kwargs = _utils.setup_call(
49
- fn, fn_args, dynamic_config, tools, AnthropicTool, call_params
50
- )
51
- messages = cast(list[BaseMessageParam | MessageParam], messages)
52
- messages = convert_message_params(messages)
53
-
54
- if messages[0]["role"] == "system":
55
- call_kwargs["system"] = messages.pop(0)["content"]
56
-
57
- if json_mode:
58
- json_mode_content = _utils.json_mode_content(
59
- tool_types[0] if tool_types else None
60
- )
61
- if isinstance(messages[-1]["content"], str):
62
- messages[-1]["content"] += json_mode_content
63
- else:
64
- messages[-1]["content"] = list(messages[-1]["content"]) + [
65
- {"type": "text", "text": json_mode_content}
66
- ]
67
- call_kwargs.pop("tools", None)
68
- elif extract:
69
- assert tool_types, "At least one tool must be provided for extraction."
70
- call_kwargs["tool_choice"] = {"type": "tool", "name": tool_types[0]._name()}
71
- call_kwargs |= {"model": model, "messages": messages}
72
-
73
- if client is None:
74
- client = AsyncAnthropic() if inspect.iscoroutinefunction(fn) else Anthropic()
75
- create = client.messages.create
76
- return create, prompt_template, messages, tool_types, call_kwargs