mirascope 2.0.0__py3-none-any.whl → 2.0.0a1__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 (443) hide show
  1. mirascope/__init__.py +2 -11
  2. mirascope/graphs/__init__.py +22 -0
  3. mirascope/graphs/finite_state_machine.py +625 -0
  4. mirascope/llm/__init__.py +15 -96
  5. mirascope/llm/agents/__init__.py +15 -0
  6. mirascope/llm/agents/agent.py +97 -0
  7. mirascope/llm/agents/agent_template.py +45 -0
  8. mirascope/llm/agents/decorator.py +176 -0
  9. mirascope/llm/calls/__init__.py +1 -2
  10. mirascope/llm/calls/base_call.py +33 -0
  11. mirascope/llm/calls/calls.py +58 -84
  12. mirascope/llm/calls/decorator.py +120 -140
  13. mirascope/llm/clients/__init__.py +34 -0
  14. mirascope/llm/clients/_missing_import_stubs.py +47 -0
  15. mirascope/llm/clients/anthropic/__init__.py +25 -0
  16. mirascope/llm/{providers/openai/completions → clients/anthropic}/_utils/__init__.py +0 -2
  17. mirascope/llm/{providers → clients}/anthropic/_utils/decode.py +22 -66
  18. mirascope/llm/clients/anthropic/_utils/encode.py +243 -0
  19. mirascope/llm/clients/anthropic/clients.py +819 -0
  20. mirascope/llm/clients/anthropic/model_ids.py +8 -0
  21. mirascope/llm/{providers → clients}/base/__init__.py +5 -4
  22. mirascope/llm/{providers → clients}/base/_utils.py +17 -78
  23. mirascope/llm/{providers/base/base_provider.py → clients/base/client.py} +145 -468
  24. mirascope/llm/{models → clients/base}/params.py +37 -16
  25. mirascope/llm/clients/google/__init__.py +20 -0
  26. mirascope/llm/{providers/openai/responses → clients/google}/_utils/__init__.py +0 -2
  27. mirascope/llm/{providers → clients}/google/_utils/decode.py +22 -98
  28. mirascope/llm/{providers → clients}/google/_utils/encode.py +46 -168
  29. mirascope/llm/clients/google/clients.py +853 -0
  30. mirascope/llm/clients/google/model_ids.py +15 -0
  31. mirascope/llm/clients/openai/__init__.py +25 -0
  32. mirascope/llm/clients/openai/completions/__init__.py +28 -0
  33. mirascope/llm/{providers/google → clients/openai/completions}/_utils/__init__.py +0 -4
  34. mirascope/llm/{providers → clients}/openai/completions/_utils/decode.py +9 -74
  35. mirascope/llm/{providers → clients}/openai/completions/_utils/encode.py +52 -70
  36. mirascope/llm/clients/openai/completions/_utils/model_features.py +81 -0
  37. mirascope/llm/clients/openai/completions/clients.py +833 -0
  38. mirascope/llm/clients/openai/completions/model_ids.py +8 -0
  39. mirascope/llm/clients/openai/responses/__init__.py +26 -0
  40. mirascope/llm/clients/openai/responses/_utils/__init__.py +13 -0
  41. mirascope/llm/{providers → clients}/openai/responses/_utils/decode.py +14 -80
  42. mirascope/llm/{providers → clients}/openai/responses/_utils/encode.py +41 -92
  43. mirascope/llm/clients/openai/responses/_utils/model_features.py +87 -0
  44. mirascope/llm/clients/openai/responses/clients.py +832 -0
  45. mirascope/llm/clients/openai/responses/model_ids.py +8 -0
  46. mirascope/llm/clients/openai/shared/__init__.py +7 -0
  47. mirascope/llm/clients/openai/shared/_utils.py +55 -0
  48. mirascope/llm/clients/providers.py +175 -0
  49. mirascope/llm/content/__init__.py +2 -3
  50. mirascope/llm/content/tool_call.py +0 -6
  51. mirascope/llm/content/tool_output.py +5 -22
  52. mirascope/llm/context/_utils.py +6 -19
  53. mirascope/llm/exceptions.py +43 -298
  54. mirascope/llm/formatting/__init__.py +2 -19
  55. mirascope/llm/formatting/_utils.py +74 -0
  56. mirascope/llm/formatting/format.py +30 -219
  57. mirascope/llm/formatting/from_call_args.py +2 -2
  58. mirascope/llm/formatting/partial.py +7 -80
  59. mirascope/llm/formatting/types.py +64 -21
  60. mirascope/llm/mcp/__init__.py +2 -2
  61. mirascope/llm/mcp/client.py +118 -0
  62. mirascope/llm/messages/__init__.py +0 -3
  63. mirascope/llm/messages/message.py +5 -13
  64. mirascope/llm/models/__init__.py +2 -7
  65. mirascope/llm/models/models.py +139 -315
  66. mirascope/llm/prompts/__init__.py +12 -13
  67. mirascope/llm/prompts/_utils.py +43 -14
  68. mirascope/llm/prompts/decorator.py +204 -144
  69. mirascope/llm/prompts/protocols.py +59 -25
  70. mirascope/llm/responses/__init__.py +1 -9
  71. mirascope/llm/responses/_utils.py +12 -102
  72. mirascope/llm/responses/base_response.py +6 -18
  73. mirascope/llm/responses/base_stream_response.py +50 -173
  74. mirascope/llm/responses/finish_reason.py +0 -1
  75. mirascope/llm/responses/response.py +13 -34
  76. mirascope/llm/responses/root_response.py +29 -100
  77. mirascope/llm/responses/stream_response.py +31 -40
  78. mirascope/llm/tools/__init__.py +2 -9
  79. mirascope/llm/tools/_utils.py +3 -12
  80. mirascope/llm/tools/decorator.py +16 -25
  81. mirascope/llm/tools/protocols.py +4 -4
  82. mirascope/llm/tools/tool_schema.py +19 -87
  83. mirascope/llm/tools/toolkit.py +27 -35
  84. mirascope/llm/tools/tools.py +41 -135
  85. {mirascope-2.0.0.dist-info → mirascope-2.0.0a1.dist-info}/METADATA +13 -90
  86. mirascope-2.0.0a1.dist-info/RECORD +102 -0
  87. {mirascope-2.0.0.dist-info → mirascope-2.0.0a1.dist-info}/WHEEL +1 -1
  88. {mirascope-2.0.0.dist-info → mirascope-2.0.0a1.dist-info}/licenses/LICENSE +1 -1
  89. mirascope/_stubs.py +0 -363
  90. mirascope/api/__init__.py +0 -14
  91. mirascope/api/_generated/README.md +0 -207
  92. mirascope/api/_generated/__init__.py +0 -440
  93. mirascope/api/_generated/annotations/__init__.py +0 -33
  94. mirascope/api/_generated/annotations/client.py +0 -506
  95. mirascope/api/_generated/annotations/raw_client.py +0 -1414
  96. mirascope/api/_generated/annotations/types/__init__.py +0 -31
  97. mirascope/api/_generated/annotations/types/annotations_create_request_label.py +0 -5
  98. mirascope/api/_generated/annotations/types/annotations_create_response.py +0 -48
  99. mirascope/api/_generated/annotations/types/annotations_create_response_label.py +0 -5
  100. mirascope/api/_generated/annotations/types/annotations_get_response.py +0 -48
  101. mirascope/api/_generated/annotations/types/annotations_get_response_label.py +0 -5
  102. mirascope/api/_generated/annotations/types/annotations_list_request_label.py +0 -5
  103. mirascope/api/_generated/annotations/types/annotations_list_response.py +0 -21
  104. mirascope/api/_generated/annotations/types/annotations_list_response_annotations_item.py +0 -50
  105. mirascope/api/_generated/annotations/types/annotations_list_response_annotations_item_label.py +0 -5
  106. mirascope/api/_generated/annotations/types/annotations_update_request_label.py +0 -5
  107. mirascope/api/_generated/annotations/types/annotations_update_response.py +0 -48
  108. mirascope/api/_generated/annotations/types/annotations_update_response_label.py +0 -5
  109. mirascope/api/_generated/api_keys/__init__.py +0 -17
  110. mirascope/api/_generated/api_keys/client.py +0 -530
  111. mirascope/api/_generated/api_keys/raw_client.py +0 -1236
  112. mirascope/api/_generated/api_keys/types/__init__.py +0 -15
  113. mirascope/api/_generated/api_keys/types/api_keys_create_response.py +0 -28
  114. mirascope/api/_generated/api_keys/types/api_keys_get_response.py +0 -27
  115. mirascope/api/_generated/api_keys/types/api_keys_list_all_for_org_response_item.py +0 -40
  116. mirascope/api/_generated/api_keys/types/api_keys_list_response_item.py +0 -27
  117. mirascope/api/_generated/client.py +0 -211
  118. mirascope/api/_generated/core/__init__.py +0 -52
  119. mirascope/api/_generated/core/api_error.py +0 -23
  120. mirascope/api/_generated/core/client_wrapper.py +0 -46
  121. mirascope/api/_generated/core/datetime_utils.py +0 -28
  122. mirascope/api/_generated/core/file.py +0 -67
  123. mirascope/api/_generated/core/force_multipart.py +0 -16
  124. mirascope/api/_generated/core/http_client.py +0 -543
  125. mirascope/api/_generated/core/http_response.py +0 -55
  126. mirascope/api/_generated/core/jsonable_encoder.py +0 -100
  127. mirascope/api/_generated/core/pydantic_utilities.py +0 -255
  128. mirascope/api/_generated/core/query_encoder.py +0 -58
  129. mirascope/api/_generated/core/remove_none_from_dict.py +0 -11
  130. mirascope/api/_generated/core/request_options.py +0 -35
  131. mirascope/api/_generated/core/serialization.py +0 -276
  132. mirascope/api/_generated/docs/__init__.py +0 -4
  133. mirascope/api/_generated/docs/client.py +0 -91
  134. mirascope/api/_generated/docs/raw_client.py +0 -178
  135. mirascope/api/_generated/environment.py +0 -9
  136. mirascope/api/_generated/environments/__init__.py +0 -23
  137. mirascope/api/_generated/environments/client.py +0 -649
  138. mirascope/api/_generated/environments/raw_client.py +0 -1567
  139. mirascope/api/_generated/environments/types/__init__.py +0 -25
  140. mirascope/api/_generated/environments/types/environments_create_response.py +0 -24
  141. mirascope/api/_generated/environments/types/environments_get_analytics_response.py +0 -60
  142. mirascope/api/_generated/environments/types/environments_get_analytics_response_top_functions_item.py +0 -24
  143. mirascope/api/_generated/environments/types/environments_get_analytics_response_top_models_item.py +0 -22
  144. mirascope/api/_generated/environments/types/environments_get_response.py +0 -24
  145. mirascope/api/_generated/environments/types/environments_list_response_item.py +0 -24
  146. mirascope/api/_generated/environments/types/environments_update_response.py +0 -24
  147. mirascope/api/_generated/errors/__init__.py +0 -25
  148. mirascope/api/_generated/errors/bad_request_error.py +0 -14
  149. mirascope/api/_generated/errors/conflict_error.py +0 -14
  150. mirascope/api/_generated/errors/forbidden_error.py +0 -11
  151. mirascope/api/_generated/errors/internal_server_error.py +0 -10
  152. mirascope/api/_generated/errors/not_found_error.py +0 -11
  153. mirascope/api/_generated/errors/payment_required_error.py +0 -15
  154. mirascope/api/_generated/errors/service_unavailable_error.py +0 -14
  155. mirascope/api/_generated/errors/too_many_requests_error.py +0 -15
  156. mirascope/api/_generated/errors/unauthorized_error.py +0 -11
  157. mirascope/api/_generated/functions/__init__.py +0 -39
  158. mirascope/api/_generated/functions/client.py +0 -647
  159. mirascope/api/_generated/functions/raw_client.py +0 -1890
  160. mirascope/api/_generated/functions/types/__init__.py +0 -53
  161. mirascope/api/_generated/functions/types/functions_create_request_dependencies_value.py +0 -20
  162. mirascope/api/_generated/functions/types/functions_create_response.py +0 -37
  163. mirascope/api/_generated/functions/types/functions_create_response_dependencies_value.py +0 -20
  164. mirascope/api/_generated/functions/types/functions_find_by_hash_response.py +0 -39
  165. mirascope/api/_generated/functions/types/functions_find_by_hash_response_dependencies_value.py +0 -20
  166. mirascope/api/_generated/functions/types/functions_get_by_env_response.py +0 -53
  167. mirascope/api/_generated/functions/types/functions_get_by_env_response_dependencies_value.py +0 -22
  168. mirascope/api/_generated/functions/types/functions_get_response.py +0 -37
  169. mirascope/api/_generated/functions/types/functions_get_response_dependencies_value.py +0 -20
  170. mirascope/api/_generated/functions/types/functions_list_by_env_response.py +0 -25
  171. mirascope/api/_generated/functions/types/functions_list_by_env_response_functions_item.py +0 -56
  172. mirascope/api/_generated/functions/types/functions_list_by_env_response_functions_item_dependencies_value.py +0 -22
  173. mirascope/api/_generated/functions/types/functions_list_response.py +0 -21
  174. mirascope/api/_generated/functions/types/functions_list_response_functions_item.py +0 -41
  175. mirascope/api/_generated/functions/types/functions_list_response_functions_item_dependencies_value.py +0 -20
  176. mirascope/api/_generated/health/__init__.py +0 -7
  177. mirascope/api/_generated/health/client.py +0 -92
  178. mirascope/api/_generated/health/raw_client.py +0 -175
  179. mirascope/api/_generated/health/types/__init__.py +0 -8
  180. mirascope/api/_generated/health/types/health_check_response.py +0 -22
  181. mirascope/api/_generated/health/types/health_check_response_status.py +0 -5
  182. mirascope/api/_generated/organization_invitations/__init__.py +0 -33
  183. mirascope/api/_generated/organization_invitations/client.py +0 -546
  184. mirascope/api/_generated/organization_invitations/raw_client.py +0 -1519
  185. mirascope/api/_generated/organization_invitations/types/__init__.py +0 -53
  186. mirascope/api/_generated/organization_invitations/types/organization_invitations_accept_response.py +0 -34
  187. mirascope/api/_generated/organization_invitations/types/organization_invitations_accept_response_role.py +0 -7
  188. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_request_role.py +0 -7
  189. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_response.py +0 -48
  190. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_response_role.py +0 -7
  191. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_response_status.py +0 -7
  192. mirascope/api/_generated/organization_invitations/types/organization_invitations_get_response.py +0 -48
  193. mirascope/api/_generated/organization_invitations/types/organization_invitations_get_response_role.py +0 -7
  194. mirascope/api/_generated/organization_invitations/types/organization_invitations_get_response_status.py +0 -7
  195. mirascope/api/_generated/organization_invitations/types/organization_invitations_list_response_item.py +0 -48
  196. mirascope/api/_generated/organization_invitations/types/organization_invitations_list_response_item_role.py +0 -7
  197. mirascope/api/_generated/organization_invitations/types/organization_invitations_list_response_item_status.py +0 -7
  198. mirascope/api/_generated/organization_memberships/__init__.py +0 -19
  199. mirascope/api/_generated/organization_memberships/client.py +0 -302
  200. mirascope/api/_generated/organization_memberships/raw_client.py +0 -736
  201. mirascope/api/_generated/organization_memberships/types/__init__.py +0 -27
  202. mirascope/api/_generated/organization_memberships/types/organization_memberships_list_response_item.py +0 -33
  203. mirascope/api/_generated/organization_memberships/types/organization_memberships_list_response_item_role.py +0 -7
  204. mirascope/api/_generated/organization_memberships/types/organization_memberships_update_request_role.py +0 -7
  205. mirascope/api/_generated/organization_memberships/types/organization_memberships_update_response.py +0 -31
  206. mirascope/api/_generated/organization_memberships/types/organization_memberships_update_response_role.py +0 -7
  207. mirascope/api/_generated/organizations/__init__.py +0 -51
  208. mirascope/api/_generated/organizations/client.py +0 -869
  209. mirascope/api/_generated/organizations/raw_client.py +0 -2593
  210. mirascope/api/_generated/organizations/types/__init__.py +0 -71
  211. mirascope/api/_generated/organizations/types/organizations_create_payment_intent_response.py +0 -24
  212. mirascope/api/_generated/organizations/types/organizations_create_response.py +0 -26
  213. mirascope/api/_generated/organizations/types/organizations_create_response_role.py +0 -5
  214. mirascope/api/_generated/organizations/types/organizations_get_response.py +0 -26
  215. mirascope/api/_generated/organizations/types/organizations_get_response_role.py +0 -5
  216. mirascope/api/_generated/organizations/types/organizations_list_response_item.py +0 -26
  217. mirascope/api/_generated/organizations/types/organizations_list_response_item_role.py +0 -5
  218. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_request_target_plan.py +0 -7
  219. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_response.py +0 -47
  220. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_response_validation_errors_item.py +0 -33
  221. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_response_validation_errors_item_resource.py +0 -7
  222. mirascope/api/_generated/organizations/types/organizations_router_balance_response.py +0 -24
  223. mirascope/api/_generated/organizations/types/organizations_subscription_response.py +0 -53
  224. mirascope/api/_generated/organizations/types/organizations_subscription_response_current_plan.py +0 -7
  225. mirascope/api/_generated/organizations/types/organizations_subscription_response_payment_method.py +0 -26
  226. mirascope/api/_generated/organizations/types/organizations_subscription_response_scheduled_change.py +0 -34
  227. mirascope/api/_generated/organizations/types/organizations_subscription_response_scheduled_change_target_plan.py +0 -7
  228. mirascope/api/_generated/organizations/types/organizations_update_response.py +0 -26
  229. mirascope/api/_generated/organizations/types/organizations_update_response_role.py +0 -5
  230. mirascope/api/_generated/organizations/types/organizations_update_subscription_request_target_plan.py +0 -7
  231. mirascope/api/_generated/organizations/types/organizations_update_subscription_response.py +0 -35
  232. mirascope/api/_generated/project_memberships/__init__.py +0 -25
  233. mirascope/api/_generated/project_memberships/client.py +0 -437
  234. mirascope/api/_generated/project_memberships/raw_client.py +0 -1039
  235. mirascope/api/_generated/project_memberships/types/__init__.py +0 -29
  236. mirascope/api/_generated/project_memberships/types/project_memberships_create_request_role.py +0 -7
  237. mirascope/api/_generated/project_memberships/types/project_memberships_create_response.py +0 -35
  238. mirascope/api/_generated/project_memberships/types/project_memberships_create_response_role.py +0 -7
  239. mirascope/api/_generated/project_memberships/types/project_memberships_list_response_item.py +0 -33
  240. mirascope/api/_generated/project_memberships/types/project_memberships_list_response_item_role.py +0 -7
  241. mirascope/api/_generated/project_memberships/types/project_memberships_update_request_role.py +0 -7
  242. mirascope/api/_generated/project_memberships/types/project_memberships_update_response.py +0 -35
  243. mirascope/api/_generated/project_memberships/types/project_memberships_update_response_role.py +0 -7
  244. mirascope/api/_generated/projects/__init__.py +0 -7
  245. mirascope/api/_generated/projects/client.py +0 -428
  246. mirascope/api/_generated/projects/raw_client.py +0 -1302
  247. mirascope/api/_generated/projects/types/__init__.py +0 -10
  248. mirascope/api/_generated/projects/types/projects_create_response.py +0 -25
  249. mirascope/api/_generated/projects/types/projects_get_response.py +0 -25
  250. mirascope/api/_generated/projects/types/projects_list_response_item.py +0 -25
  251. mirascope/api/_generated/projects/types/projects_update_response.py +0 -25
  252. mirascope/api/_generated/reference.md +0 -4915
  253. mirascope/api/_generated/tags/__init__.py +0 -19
  254. mirascope/api/_generated/tags/client.py +0 -504
  255. mirascope/api/_generated/tags/raw_client.py +0 -1288
  256. mirascope/api/_generated/tags/types/__init__.py +0 -17
  257. mirascope/api/_generated/tags/types/tags_create_response.py +0 -41
  258. mirascope/api/_generated/tags/types/tags_get_response.py +0 -41
  259. mirascope/api/_generated/tags/types/tags_list_response.py +0 -23
  260. mirascope/api/_generated/tags/types/tags_list_response_tags_item.py +0 -41
  261. mirascope/api/_generated/tags/types/tags_update_response.py +0 -41
  262. mirascope/api/_generated/token_cost/__init__.py +0 -7
  263. mirascope/api/_generated/token_cost/client.py +0 -160
  264. mirascope/api/_generated/token_cost/raw_client.py +0 -264
  265. mirascope/api/_generated/token_cost/types/__init__.py +0 -8
  266. mirascope/api/_generated/token_cost/types/token_cost_calculate_request_usage.py +0 -54
  267. mirascope/api/_generated/token_cost/types/token_cost_calculate_response.py +0 -52
  268. mirascope/api/_generated/traces/__init__.py +0 -97
  269. mirascope/api/_generated/traces/client.py +0 -1103
  270. mirascope/api/_generated/traces/raw_client.py +0 -2322
  271. mirascope/api/_generated/traces/types/__init__.py +0 -155
  272. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item.py +0 -29
  273. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource.py +0 -27
  274. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item.py +0 -23
  275. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value.py +0 -38
  276. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_array_value.py +0 -19
  277. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_kvlist_value.py +0 -22
  278. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_kvlist_value_values_item.py +0 -20
  279. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item.py +0 -29
  280. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope.py +0 -31
  281. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item.py +0 -23
  282. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value.py +0 -38
  283. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value_array_value.py +0 -19
  284. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value_kvlist_value.py +0 -22
  285. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value_kvlist_value_values_item.py +0 -22
  286. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item.py +0 -48
  287. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item.py +0 -23
  288. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value.py +0 -38
  289. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value_array_value.py +0 -19
  290. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value_kvlist_value.py +0 -24
  291. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value_kvlist_value_values_item.py +0 -22
  292. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_status.py +0 -20
  293. mirascope/api/_generated/traces/types/traces_create_response.py +0 -24
  294. mirascope/api/_generated/traces/types/traces_create_response_partial_success.py +0 -22
  295. mirascope/api/_generated/traces/types/traces_get_analytics_summary_response.py +0 -60
  296. mirascope/api/_generated/traces/types/traces_get_analytics_summary_response_top_functions_item.py +0 -24
  297. mirascope/api/_generated/traces/types/traces_get_analytics_summary_response_top_models_item.py +0 -22
  298. mirascope/api/_generated/traces/types/traces_get_trace_detail_by_env_response.py +0 -33
  299. mirascope/api/_generated/traces/types/traces_get_trace_detail_by_env_response_spans_item.py +0 -88
  300. mirascope/api/_generated/traces/types/traces_get_trace_detail_response.py +0 -33
  301. mirascope/api/_generated/traces/types/traces_get_trace_detail_response_spans_item.py +0 -88
  302. mirascope/api/_generated/traces/types/traces_list_by_function_hash_response.py +0 -25
  303. mirascope/api/_generated/traces/types/traces_list_by_function_hash_response_traces_item.py +0 -44
  304. mirascope/api/_generated/traces/types/traces_search_by_env_request_attribute_filters_item.py +0 -26
  305. mirascope/api/_generated/traces/types/traces_search_by_env_request_attribute_filters_item_operator.py +0 -7
  306. mirascope/api/_generated/traces/types/traces_search_by_env_request_sort_by.py +0 -7
  307. mirascope/api/_generated/traces/types/traces_search_by_env_request_sort_order.py +0 -7
  308. mirascope/api/_generated/traces/types/traces_search_by_env_response.py +0 -26
  309. mirascope/api/_generated/traces/types/traces_search_by_env_response_spans_item.py +0 -50
  310. mirascope/api/_generated/traces/types/traces_search_request_attribute_filters_item.py +0 -26
  311. mirascope/api/_generated/traces/types/traces_search_request_attribute_filters_item_operator.py +0 -7
  312. mirascope/api/_generated/traces/types/traces_search_request_sort_by.py +0 -7
  313. mirascope/api/_generated/traces/types/traces_search_request_sort_order.py +0 -5
  314. mirascope/api/_generated/traces/types/traces_search_response.py +0 -26
  315. mirascope/api/_generated/traces/types/traces_search_response_spans_item.py +0 -50
  316. mirascope/api/_generated/types/__init__.py +0 -85
  317. mirascope/api/_generated/types/already_exists_error.py +0 -22
  318. mirascope/api/_generated/types/already_exists_error_tag.py +0 -5
  319. mirascope/api/_generated/types/bad_request_error_body.py +0 -50
  320. mirascope/api/_generated/types/click_house_error.py +0 -22
  321. mirascope/api/_generated/types/database_error.py +0 -22
  322. mirascope/api/_generated/types/database_error_tag.py +0 -5
  323. mirascope/api/_generated/types/date.py +0 -3
  324. mirascope/api/_generated/types/http_api_decode_error.py +0 -27
  325. mirascope/api/_generated/types/http_api_decode_error_tag.py +0 -5
  326. mirascope/api/_generated/types/immutable_resource_error.py +0 -22
  327. mirascope/api/_generated/types/internal_server_error_body.py +0 -49
  328. mirascope/api/_generated/types/issue.py +0 -38
  329. mirascope/api/_generated/types/issue_tag.py +0 -10
  330. mirascope/api/_generated/types/not_found_error_body.py +0 -22
  331. mirascope/api/_generated/types/not_found_error_tag.py +0 -5
  332. mirascope/api/_generated/types/number_from_string.py +0 -3
  333. mirascope/api/_generated/types/permission_denied_error.py +0 -22
  334. mirascope/api/_generated/types/permission_denied_error_tag.py +0 -5
  335. mirascope/api/_generated/types/plan_limit_exceeded_error.py +0 -32
  336. mirascope/api/_generated/types/plan_limit_exceeded_error_tag.py +0 -7
  337. mirascope/api/_generated/types/pricing_unavailable_error.py +0 -23
  338. mirascope/api/_generated/types/property_key.py +0 -7
  339. mirascope/api/_generated/types/property_key_key.py +0 -25
  340. mirascope/api/_generated/types/property_key_key_tag.py +0 -5
  341. mirascope/api/_generated/types/rate_limit_error.py +0 -31
  342. mirascope/api/_generated/types/rate_limit_error_tag.py +0 -5
  343. mirascope/api/_generated/types/service_unavailable_error_body.py +0 -24
  344. mirascope/api/_generated/types/service_unavailable_error_tag.py +0 -7
  345. mirascope/api/_generated/types/stripe_error.py +0 -20
  346. mirascope/api/_generated/types/subscription_past_due_error.py +0 -31
  347. mirascope/api/_generated/types/subscription_past_due_error_tag.py +0 -7
  348. mirascope/api/_generated/types/unauthorized_error_body.py +0 -21
  349. mirascope/api/_generated/types/unauthorized_error_tag.py +0 -5
  350. mirascope/api/client.py +0 -255
  351. mirascope/api/settings.py +0 -99
  352. mirascope/llm/formatting/output_parser.py +0 -178
  353. mirascope/llm/formatting/primitives.py +0 -192
  354. mirascope/llm/mcp/mcp_client.py +0 -130
  355. mirascope/llm/messages/_utils.py +0 -34
  356. mirascope/llm/models/thinking_config.py +0 -61
  357. mirascope/llm/prompts/prompts.py +0 -487
  358. mirascope/llm/providers/__init__.py +0 -62
  359. mirascope/llm/providers/anthropic/__init__.py +0 -11
  360. mirascope/llm/providers/anthropic/_utils/__init__.py +0 -27
  361. mirascope/llm/providers/anthropic/_utils/beta_decode.py +0 -282
  362. mirascope/llm/providers/anthropic/_utils/beta_encode.py +0 -266
  363. mirascope/llm/providers/anthropic/_utils/encode.py +0 -418
  364. mirascope/llm/providers/anthropic/_utils/errors.py +0 -46
  365. mirascope/llm/providers/anthropic/beta_provider.py +0 -374
  366. mirascope/llm/providers/anthropic/model_id.py +0 -23
  367. mirascope/llm/providers/anthropic/model_info.py +0 -87
  368. mirascope/llm/providers/anthropic/provider.py +0 -479
  369. mirascope/llm/providers/google/__init__.py +0 -6
  370. mirascope/llm/providers/google/_utils/errors.py +0 -50
  371. mirascope/llm/providers/google/model_id.py +0 -22
  372. mirascope/llm/providers/google/model_info.py +0 -63
  373. mirascope/llm/providers/google/provider.py +0 -492
  374. mirascope/llm/providers/mirascope/__init__.py +0 -5
  375. mirascope/llm/providers/mirascope/_utils.py +0 -73
  376. mirascope/llm/providers/mirascope/provider.py +0 -349
  377. mirascope/llm/providers/mlx/__init__.py +0 -9
  378. mirascope/llm/providers/mlx/_utils.py +0 -141
  379. mirascope/llm/providers/mlx/encoding/__init__.py +0 -8
  380. mirascope/llm/providers/mlx/encoding/base.py +0 -72
  381. mirascope/llm/providers/mlx/encoding/transformers.py +0 -150
  382. mirascope/llm/providers/mlx/mlx.py +0 -254
  383. mirascope/llm/providers/mlx/model_id.py +0 -17
  384. mirascope/llm/providers/mlx/provider.py +0 -452
  385. mirascope/llm/providers/model_id.py +0 -16
  386. mirascope/llm/providers/ollama/__init__.py +0 -7
  387. mirascope/llm/providers/ollama/provider.py +0 -71
  388. mirascope/llm/providers/openai/__init__.py +0 -15
  389. mirascope/llm/providers/openai/_utils/__init__.py +0 -5
  390. mirascope/llm/providers/openai/_utils/errors.py +0 -46
  391. mirascope/llm/providers/openai/completions/__init__.py +0 -7
  392. mirascope/llm/providers/openai/completions/base_provider.py +0 -542
  393. mirascope/llm/providers/openai/completions/provider.py +0 -22
  394. mirascope/llm/providers/openai/model_id.py +0 -31
  395. mirascope/llm/providers/openai/model_info.py +0 -303
  396. mirascope/llm/providers/openai/provider.py +0 -441
  397. mirascope/llm/providers/openai/responses/__init__.py +0 -5
  398. mirascope/llm/providers/openai/responses/provider.py +0 -513
  399. mirascope/llm/providers/provider_id.py +0 -24
  400. mirascope/llm/providers/provider_registry.py +0 -299
  401. mirascope/llm/providers/together/__init__.py +0 -7
  402. mirascope/llm/providers/together/provider.py +0 -40
  403. mirascope/llm/responses/usage.py +0 -95
  404. mirascope/ops/__init__.py +0 -111
  405. mirascope/ops/_internal/__init__.py +0 -5
  406. mirascope/ops/_internal/closure.py +0 -1169
  407. mirascope/ops/_internal/configuration.py +0 -177
  408. mirascope/ops/_internal/context.py +0 -76
  409. mirascope/ops/_internal/exporters/__init__.py +0 -26
  410. mirascope/ops/_internal/exporters/exporters.py +0 -395
  411. mirascope/ops/_internal/exporters/processors.py +0 -104
  412. mirascope/ops/_internal/exporters/types.py +0 -165
  413. mirascope/ops/_internal/exporters/utils.py +0 -29
  414. mirascope/ops/_internal/instrumentation/__init__.py +0 -8
  415. mirascope/ops/_internal/instrumentation/llm/__init__.py +0 -8
  416. mirascope/ops/_internal/instrumentation/llm/common.py +0 -530
  417. mirascope/ops/_internal/instrumentation/llm/cost.py +0 -190
  418. mirascope/ops/_internal/instrumentation/llm/encode.py +0 -238
  419. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/__init__.py +0 -38
  420. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/gen_ai_input_messages.py +0 -31
  421. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/gen_ai_output_messages.py +0 -38
  422. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/gen_ai_system_instructions.py +0 -18
  423. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/shared.py +0 -100
  424. mirascope/ops/_internal/instrumentation/llm/llm.py +0 -161
  425. mirascope/ops/_internal/instrumentation/llm/model.py +0 -1798
  426. mirascope/ops/_internal/instrumentation/llm/response.py +0 -521
  427. mirascope/ops/_internal/instrumentation/llm/serialize.py +0 -300
  428. mirascope/ops/_internal/propagation.py +0 -198
  429. mirascope/ops/_internal/protocols.py +0 -133
  430. mirascope/ops/_internal/session.py +0 -139
  431. mirascope/ops/_internal/spans.py +0 -232
  432. mirascope/ops/_internal/traced_calls.py +0 -375
  433. mirascope/ops/_internal/traced_functions.py +0 -523
  434. mirascope/ops/_internal/tracing.py +0 -353
  435. mirascope/ops/_internal/types.py +0 -13
  436. mirascope/ops/_internal/utils.py +0 -123
  437. mirascope/ops/_internal/versioned_calls.py +0 -512
  438. mirascope/ops/_internal/versioned_functions.py +0 -357
  439. mirascope/ops/_internal/versioning.py +0 -303
  440. mirascope/ops/exceptions.py +0 -21
  441. mirascope-2.0.0.dist-info/RECORD +0 -423
  442. /mirascope/llm/{providers → clients}/base/kwargs.py +0 -0
  443. /mirascope/llm/{providers → clients}/google/message.py +0 -0
@@ -1,299 +0,0 @@
1
- """Provider registry for managing provider instances and scopes."""
2
-
3
- import os
4
- from collections.abc import Sequence
5
- from dataclasses import dataclass
6
- from functools import lru_cache
7
- from typing import overload
8
-
9
- from ..exceptions import MissingAPIKeyError, NoRegisteredProviderError
10
- from .anthropic import AnthropicProvider
11
- from .base import Provider
12
- from .google import GoogleProvider
13
- from .mirascope import MirascopeProvider
14
- from .mlx import MLXProvider
15
- from .ollama import OllamaProvider
16
- from .openai import OpenAIProvider
17
- from .openai.completions.provider import OpenAICompletionsProvider
18
- from .openai.responses.provider import OpenAIResponsesProvider
19
- from .provider_id import ProviderId
20
- from .together import TogetherProvider
21
-
22
- # Global registry mapping scopes to providers
23
- # Scopes are matched by prefix (longest match wins)
24
- PROVIDER_REGISTRY: dict[str, Provider] = {}
25
-
26
-
27
- def reset_provider_registry() -> None:
28
- """Resets the provider registry, clearing all registered providers."""
29
- PROVIDER_REGISTRY.clear()
30
- provider_singleton.cache_clear()
31
-
32
-
33
- @dataclass(frozen=True)
34
- class ProviderDefault:
35
- """Configuration for a provider in the auto-registration fallback chain.
36
-
37
- When auto-registering a provider for a scope, the fallback chain is tried
38
- in order. The first provider whose API key is available will be used.
39
- """
40
-
41
- provider_id: ProviderId
42
- """The provider identifier."""
43
-
44
- api_key_env_var: str | None
45
- """Environment variable for the API key, or None if no key is required."""
46
-
47
-
48
- # Fallback chain for auto-registration: try providers in order until one has
49
- # its API key available. This enables automatic fallback to Mirascope Router
50
- # when direct provider keys are not set.
51
- DEFAULT_AUTO_REGISTER_SCOPES: dict[str, Sequence[ProviderDefault]] = {
52
- "anthropic/": [
53
- ProviderDefault("anthropic", "ANTHROPIC_API_KEY"),
54
- ProviderDefault("mirascope", "MIRASCOPE_API_KEY"),
55
- ],
56
- "google/": [
57
- ProviderDefault("google", "GOOGLE_API_KEY"),
58
- ProviderDefault("mirascope", "MIRASCOPE_API_KEY"),
59
- ],
60
- "openai/": [
61
- ProviderDefault("openai", "OPENAI_API_KEY"),
62
- ProviderDefault("mirascope", "MIRASCOPE_API_KEY"),
63
- ],
64
- "together/": [
65
- ProviderDefault("together", "TOGETHER_API_KEY"),
66
- # No Mirascope fallback for together
67
- ],
68
- "ollama/": [
69
- ProviderDefault("ollama", None), # No API key required
70
- ],
71
- "mlx-community/": [
72
- ProviderDefault("mlx", None), # No API key required
73
- ],
74
- }
75
-
76
-
77
- def _has_api_key(default: ProviderDefault) -> bool:
78
- """Check if the API key for a provider default is available.
79
-
80
- Args:
81
- default: The provider default configuration to check.
82
-
83
- Returns:
84
- True if the API key is available or not required, False otherwise.
85
- """
86
- if default.api_key_env_var is None:
87
- return True # Provider doesn't require API key
88
- return os.environ.get(default.api_key_env_var) is not None
89
-
90
-
91
- @lru_cache(maxsize=256)
92
- def provider_singleton(
93
- provider_id: ProviderId, *, api_key: str | None = None, base_url: str | None = None
94
- ) -> Provider:
95
- """Create a cached provider instance for the specified provider id.
96
-
97
- Args:
98
- provider_id: The provider name ("openai", "anthropic", or "google").
99
- api_key: API key for authentication. If None, uses provider-specific env var.
100
- base_url: Base URL for the API. If None, uses provider-specific env var.
101
-
102
- Returns:
103
- A cached provider instance for the specified provider with the given parameters.
104
-
105
- Raises:
106
- ValueError: If the provider_id is not supported.
107
- """
108
- match provider_id:
109
- case "anthropic":
110
- return AnthropicProvider(api_key=api_key, base_url=base_url)
111
- case "google":
112
- return GoogleProvider(api_key=api_key, base_url=base_url)
113
- case "mirascope":
114
- return MirascopeProvider(api_key=api_key, base_url=base_url)
115
- case "mlx": # pragma: no cover (MLX is only available on macOS)
116
- return MLXProvider()
117
- case "ollama":
118
- return OllamaProvider(api_key=api_key, base_url=base_url)
119
- case "openai":
120
- return OpenAIProvider(api_key=api_key, base_url=base_url)
121
- case "openai:completions":
122
- return OpenAICompletionsProvider(api_key=api_key, base_url=base_url)
123
- case "openai:responses":
124
- return OpenAIResponsesProvider(api_key=api_key, base_url=base_url)
125
- case "together":
126
- return TogetherProvider(api_key=api_key, base_url=base_url)
127
- case _: # pragma: no cover
128
- raise ValueError(f"Unknown provider: '{provider_id}'")
129
-
130
-
131
- @overload
132
- def register_provider(
133
- provider: Provider,
134
- scope: str | list[str] | None = None,
135
- ) -> Provider:
136
- """Register a provider instance with scope(s).
137
-
138
- Args:
139
- provider: Provider instance to register.
140
- scope: Scope string or list of scopes (e.g., "anthropic/", ["anthropic/", "openai/"]).
141
- If None, uses the provider's default_scope.
142
- """
143
- ...
144
-
145
-
146
- @overload
147
- def register_provider(
148
- provider: ProviderId,
149
- scope: str | list[str] | None = None,
150
- *,
151
- api_key: str | None = None,
152
- base_url: str | None = None,
153
- ) -> Provider:
154
- """Register a provider by ID with scope(s).
155
-
156
- Args:
157
- provider: Provider ID string (e.g., "anthropic", "openai").
158
- scope: Scope string or list of scopes (e.g., "anthropic/", ["anthropic/", "openai/"]).
159
- If None, uses the provider's default_scope.
160
- api_key: API key for authentication.
161
- base_url: Base URL for the API.
162
- """
163
- ...
164
-
165
-
166
- def register_provider(
167
- provider: ProviderId | Provider,
168
- scope: str | list[str] | None = None,
169
- *,
170
- api_key: str | None = None,
171
- base_url: str | None = None,
172
- ) -> Provider:
173
- """Register a provider with scope(s) in the global registry.
174
-
175
- Scopes use prefix matching on model IDs:
176
- - "anthropic/" matches "anthropic/*"
177
- - "anthropic/claude-4-5" matches "anthropic/claude-4-5*"
178
- - "anthropic/claude-4-5-sonnet" matches exactly "anthropic/claude-4-5-sonnet"
179
-
180
- When multiple scopes match a model_id, the longest match wins.
181
-
182
- Args:
183
- provider: Either a provider ID string or a provider instance.
184
- scope: Scope string or list of scopes for prefix matching on model IDs.
185
- If None, uses the provider's default_scope attribute.
186
- Can be a single string or a list of strings.
187
- api_key: API key for authentication (only used if provider is a string).
188
- base_url: Base URL for the API (only used if provider is a string).
189
-
190
- Example:
191
- ```python
192
- # Register with default scope
193
- llm.register_provider("anthropic", api_key="key")
194
-
195
- # Register for specific models
196
- llm.register_provider("openai", scope="openai/gpt-4")
197
-
198
- # Register for multiple scopes
199
- llm.register_provider("aws-bedrock", scope=["anthropic/", "openai/"])
200
-
201
- # Register a custom instance
202
- custom = llm.providers.AnthropicProvider(api_key="team-key")
203
- llm.register_provider(custom, scope="anthropic/claude-4-5-sonnet")
204
- ```
205
- """
206
-
207
- if isinstance(provider, str):
208
- provider = provider_singleton(provider, api_key=api_key, base_url=base_url)
209
-
210
- if scope is None:
211
- scope = provider.default_scope
212
-
213
- scopes = [scope] if isinstance(scope, str) else scope
214
- for s in scopes:
215
- PROVIDER_REGISTRY[s] = provider
216
-
217
- return provider
218
-
219
-
220
- def get_provider_for_model(model_id: str) -> Provider:
221
- """Get the provider for a model_id based on the registry.
222
-
223
- Uses longest prefix matching to find the most specific provider for the model.
224
- If no explicit registration is found, checks for auto-registration defaults
225
- and automatically registers the provider on first use.
226
-
227
- When auto-registering, providers are tried in fallback order. For example,
228
- if ANTHROPIC_API_KEY is not set but MIRASCOPE_API_KEY is, the Mirascope
229
- Router will be used as a fallback for anthropic/ models.
230
-
231
- Args:
232
- model_id: The full model ID (e.g., "anthropic/claude-4-5-sonnet").
233
-
234
- Returns:
235
- The provider instance registered for this model.
236
-
237
- Raises:
238
- NoRegisteredProviderError: If no provider scope matches the model_id.
239
- MissingAPIKeyError: If no provider in the fallback chain has its API key set.
240
-
241
- Example:
242
- ```python
243
- # Assuming providers are registered:
244
- # - "anthropic/" -> AnthropicProvider()
245
- # - "anthropic/claude-4-5-sonnet" -> CustomProvider()
246
-
247
- provider = get_provider_for_model("anthropic/claude-4-5-sonnet")
248
- # Returns CustomProvider (longest match)
249
-
250
- provider = get_provider_for_model("anthropic/claude-3-opus")
251
- # Returns AnthropicProvider (matches "anthropic/" prefix)
252
-
253
- # Auto-registration on first use:
254
- provider = get_provider_for_model("openai/gpt-4")
255
- # Automatically loads and registers OpenAIProvider() for "openai/"
256
-
257
- # Fallback to Mirascope Router if direct key missing:
258
- # (with MIRASCOPE_API_KEY set but not ANTHROPIC_API_KEY)
259
- provider = get_provider_for_model("anthropic/claude-4-5-sonnet")
260
- # Returns MirascopeProvider registered for "anthropic/" scope
261
- ```
262
- """
263
- # Try explicit registry first (longest match wins)
264
- matching_scopes = [
265
- scope for scope in PROVIDER_REGISTRY if model_id.startswith(scope)
266
- ]
267
- if matching_scopes:
268
- best_scope = max(matching_scopes, key=len)
269
- return PROVIDER_REGISTRY[best_scope]
270
-
271
- # Fall back to auto-registration with fallback chain
272
- matching_defaults = [
273
- scope for scope in DEFAULT_AUTO_REGISTER_SCOPES if model_id.startswith(scope)
274
- ]
275
- if matching_defaults:
276
- best_scope = max(matching_defaults, key=len)
277
- fallback_chain = DEFAULT_AUTO_REGISTER_SCOPES[best_scope]
278
-
279
- # Try each provider in the fallback chain
280
- for default in fallback_chain:
281
- if _has_api_key(default):
282
- provider = provider_singleton(default.provider_id)
283
- # Register for just this scope (not all provider's default scopes)
284
- PROVIDER_REGISTRY[best_scope] = provider
285
- return provider
286
-
287
- # No provider in chain has API key - raise helpful error
288
- primary = fallback_chain[0]
289
- has_mirascope_fallback = any(
290
- d.provider_id == "mirascope" for d in fallback_chain
291
- )
292
- raise MissingAPIKeyError(
293
- provider_id=primary.provider_id,
294
- env_var=primary.api_key_env_var or "",
295
- has_mirascope_fallback=has_mirascope_fallback,
296
- )
297
-
298
- # No matching scope at all
299
- raise NoRegisteredProviderError(model_id)
@@ -1,7 +0,0 @@
1
- """Together AI provider implementation."""
2
-
3
- from .provider import TogetherProvider
4
-
5
- __all__ = [
6
- "TogetherProvider",
7
- ]
@@ -1,40 +0,0 @@
1
- """Together AI provider implementation."""
2
-
3
- from typing import ClassVar
4
-
5
- from ..openai.completions.base_provider import BaseOpenAICompletionsProvider
6
-
7
-
8
- class TogetherProvider(BaseOpenAICompletionsProvider):
9
- """Provider for Together AI's OpenAI-compatible API.
10
-
11
- Inherits from BaseOpenAICompletionsProvider with Together-specific configuration:
12
- - Uses Together AI's API endpoint
13
- - Requires TOGETHER_API_KEY
14
-
15
- Usage:
16
- Register the provider with model ID prefixes you want to use:
17
-
18
- ```python
19
- import llm
20
-
21
- # Register for meta-llama models
22
- llm.register_provider("together", "meta-llama/")
23
-
24
- # Now you can use meta-llama models directly
25
- @llm.call("meta-llama/Llama-3.3-70B-Instruct-Turbo")
26
- def my_prompt():
27
- return [llm.messages.user("Hello!")]
28
- ```
29
- """
30
-
31
- id: ClassVar[str] = "together"
32
- default_scope: ClassVar[str | list[str]] = []
33
- default_base_url: ClassVar[str | None] = "https://api.together.xyz/v1"
34
- api_key_env_var: ClassVar[str] = "TOGETHER_API_KEY"
35
- api_key_required: ClassVar[bool] = True
36
- provider_name: ClassVar[str | None] = "Together"
37
-
38
- def _model_name(self, model_id: str) -> str:
39
- """Return the model ID as-is for Together API."""
40
- return model_id
@@ -1,95 +0,0 @@
1
- """Provider-agnostic usage statistics for LLM API calls."""
2
-
3
- from __future__ import annotations
4
-
5
- from dataclasses import dataclass
6
- from typing import Any, Literal
7
-
8
-
9
- @dataclass(kw_only=True)
10
- class UsageDeltaChunk:
11
- """A chunk containing incremental token usage information from a streaming response.
12
-
13
- This represents a delta/increment in usage statistics as they arrive during streaming.
14
- Multiple UsageDeltaChunks are accumulated to produce the final Usage object.
15
- """
16
-
17
- type: Literal["usage_delta_chunk"] = "usage_delta_chunk"
18
-
19
- input_tokens: int = 0
20
- """Delta in input tokens."""
21
-
22
- output_tokens: int = 0
23
- """Delta in output tokens."""
24
-
25
- cache_read_tokens: int = 0
26
- """Delta in cache read tokens."""
27
-
28
- cache_write_tokens: int = 0
29
- """Delta in cache write tokens."""
30
-
31
- reasoning_tokens: int = 0
32
- """Delta in reasoning/thinking tokens."""
33
-
34
-
35
- @dataclass(kw_only=True)
36
- class Usage:
37
- """Token usage statistics from an LLM API call.
38
-
39
- This abstraction captures common usage metrics across providers while preserving
40
- access to the raw provider-specific usage data.
41
- """
42
-
43
- input_tokens: int = 0
44
- """The number of input tokens used.
45
-
46
- This includes ALL input tokens, including cache read and write tokens.
47
-
48
- Will be 0 if not reported by the provider.
49
- """
50
-
51
- output_tokens: int = 0
52
- """The number of output tokens used.
53
-
54
- This includes ALL output tokens, including `reasoning_tokens` that may not be
55
- in the user's visible output, or other "hidden" tokens.
56
-
57
- Will be 0 if not reported by the provider.
58
- """
59
-
60
- cache_read_tokens: int = 0
61
- """The number of tokens read from cache (prompt caching).
62
-
63
- These are input tokens that were read from cache. Cache read tokens are generally
64
- much less expensive than regular input tokens.
65
-
66
- Will be 0 if not reported by the provider or if caching was not used.
67
- """
68
-
69
- cache_write_tokens: int = 0
70
- """The number of tokens written to cache (cache creation).
71
-
72
- These are input tokens that were written to cache, for future reuse and retrieval.
73
- Cache write tokens are generally more expensive than uncached input tokens,
74
- but may lead to cost savings down the line when they are re-read as cache_read_tokens.
75
-
76
- Will be 0 if not reported by the provider or if caching was not used.
77
- """
78
-
79
- reasoning_tokens: int = 0
80
- """The number of tokens used for reasoning/thinking.
81
-
82
- Reasoning tokens are a subset of output_tokens that were generated as part of the model's
83
- interior reasoning process. They are billed as output tokens, though they are generally
84
- not shown to the user.
85
-
86
- Will be 0 if not reported by the provider or if the model does not support reasoning.
87
- """
88
-
89
- raw: Any = None
90
- """The raw usage object from the provider."""
91
-
92
- @property
93
- def total_tokens(self) -> int:
94
- """The total number of tokens used (input + output)."""
95
- return self.input_tokens + self.output_tokens
mirascope/ops/__init__.py DELETED
@@ -1,111 +0,0 @@
1
- """Operational helpers (tracing, sessions, future ops.* utilities)."""
2
-
3
- from __future__ import annotations
4
-
5
- from .._stubs import stub_module_if_missing
6
-
7
- # Stub modules for missing optional dependencies BEFORE importing
8
- # This must happen before any imports from these modules
9
- stub_module_if_missing("mirascope.ops", "ops")
10
-
11
- # Now imports work regardless of which packages are installed
12
- # ruff: noqa: E402
13
- from ._internal.configuration import configure, tracer_context
14
- from ._internal.context import propagated_context
15
- from ._internal.instrumentation.llm import (
16
- instrument_llm,
17
- uninstrument_llm,
18
- )
19
- from ._internal.propagation import (
20
- ContextPropagator,
21
- PropagatorFormat,
22
- extract_context,
23
- get_propagator,
24
- inject_context,
25
- reset_propagator,
26
- )
27
- from ._internal.session import (
28
- SESSION_HEADER_NAME,
29
- SessionContext,
30
- current_session,
31
- extract_session_id,
32
- session,
33
- )
34
- from ._internal.spans import Span, span
35
- from ._internal.traced_calls import (
36
- TracedAsyncCall,
37
- TracedAsyncContextCall,
38
- TracedCall,
39
- TracedContextCall,
40
- )
41
- from ._internal.traced_functions import (
42
- AsyncTrace,
43
- AsyncTracedFunction,
44
- AsyncTracedSpanFunction,
45
- Trace,
46
- TracedFunction,
47
- TracedSpanFunction,
48
- )
49
- from ._internal.tracing import (
50
- TraceDecorator,
51
- trace,
52
- )
53
- from ._internal.versioned_calls import (
54
- VersionedAsyncCall,
55
- VersionedAsyncContextCall,
56
- VersionedCall,
57
- VersionedContextCall,
58
- )
59
- from ._internal.versioned_functions import (
60
- AsyncVersionedFunction,
61
- VersionedFunction,
62
- VersionInfo,
63
- )
64
- from ._internal.versioning import (
65
- VersionDecorator,
66
- version,
67
- )
68
- from .exceptions import ClosureComputationError
69
-
70
- __all__ = [
71
- "SESSION_HEADER_NAME",
72
- "AsyncTrace",
73
- "AsyncTracedFunction",
74
- "AsyncTracedSpanFunction",
75
- "AsyncVersionedFunction",
76
- "ClosureComputationError",
77
- "ContextPropagator",
78
- "PropagatorFormat",
79
- "SessionContext",
80
- "Span",
81
- "Trace",
82
- "TraceDecorator",
83
- "TracedAsyncCall",
84
- "TracedAsyncContextCall",
85
- "TracedCall",
86
- "TracedContextCall",
87
- "TracedFunction",
88
- "TracedSpanFunction",
89
- "VersionDecorator",
90
- "VersionInfo",
91
- "VersionedAsyncCall",
92
- "VersionedAsyncContextCall",
93
- "VersionedCall",
94
- "VersionedContextCall",
95
- "VersionedFunction",
96
- "configure",
97
- "current_session",
98
- "extract_context",
99
- "extract_session_id",
100
- "get_propagator",
101
- "inject_context",
102
- "instrument_llm",
103
- "propagated_context",
104
- "reset_propagator",
105
- "session",
106
- "span",
107
- "trace",
108
- "tracer_context",
109
- "uninstrument_llm",
110
- "version",
111
- ]
@@ -1,5 +0,0 @@
1
- """Private internal module for Mirascope.
2
-
3
- All modules within this directory are considered private implementation details
4
- and should not be imported directly by users.
5
- """