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,487 +0,0 @@
1
- """Concrete Prompt classes for generating messages with tools and formatting."""
2
-
3
- from collections.abc import Sequence
4
- from dataclasses import dataclass
5
- from typing import Generic, overload
6
-
7
- from ..context import Context, DepsT
8
- from ..formatting import Format, FormattableT, OutputParser
9
- from ..messages import Message, promote_to_messages
10
- from ..models import Model
11
- from ..providers import ModelId
12
- from ..responses import (
13
- AsyncContextResponse,
14
- AsyncContextStreamResponse,
15
- AsyncResponse,
16
- AsyncStreamResponse,
17
- ContextResponse,
18
- ContextStreamResponse,
19
- Response,
20
- StreamResponse,
21
- )
22
- from ..tools import (
23
- AsyncContextToolkit,
24
- AsyncToolkit,
25
- ContextToolkit,
26
- Toolkit,
27
- )
28
- from ..types import P
29
- from .protocols import (
30
- AsyncContextMessageTemplate,
31
- AsyncMessageTemplate,
32
- ContextMessageTemplate,
33
- MessageTemplate,
34
- )
35
-
36
-
37
- @dataclass
38
- class Prompt(Generic[P, FormattableT]):
39
- """A prompt that can be called with a model to generate a response.
40
-
41
- Created by decorating a `MessageTemplate` with `llm.prompt`. The decorated
42
- function becomes callable with a `Model` to generate LLM responses.
43
-
44
- A `Prompt` is essentially: `MessageTemplate` + tools + format.
45
- It can be invoked with a model: `prompt(model, *args, **kwargs)`.
46
- """
47
-
48
- fn: MessageTemplate[P]
49
- """The underlying prompt function that generates message content."""
50
-
51
- toolkit: Toolkit
52
- """The toolkit containing this prompt's tools."""
53
-
54
- format: (
55
- type[FormattableT] | Format[FormattableT] | OutputParser[FormattableT] | None
56
- )
57
- """The response format for the generated response."""
58
-
59
- def messages(self, *args: P.args, **kwargs: P.kwargs) -> Sequence[Message]:
60
- """Return the `Messages` from invoking this prompt."""
61
- return promote_to_messages(self.fn(*args, **kwargs))
62
-
63
- @overload
64
- def __call__(
65
- self: "Prompt[P, None]",
66
- model: Model | ModelId,
67
- *args: P.args,
68
- **kwargs: P.kwargs,
69
- ) -> Response: ...
70
-
71
- @overload
72
- def __call__(
73
- self: "Prompt[P, FormattableT]",
74
- model: Model | ModelId,
75
- *args: P.args,
76
- **kwargs: P.kwargs,
77
- ) -> Response[FormattableT]: ...
78
-
79
- def __call__(
80
- self, model: Model | ModelId, *args: P.args, **kwargs: P.kwargs
81
- ) -> Response | Response[FormattableT]:
82
- """Generates a response using the provided model."""
83
- return self.call(model, *args, **kwargs)
84
-
85
- @overload
86
- def call(
87
- self: "Prompt[P, None]",
88
- model: Model | ModelId,
89
- *args: P.args,
90
- **kwargs: P.kwargs,
91
- ) -> Response: ...
92
-
93
- @overload
94
- def call(
95
- self: "Prompt[P, FormattableT]",
96
- model: Model | ModelId,
97
- *args: P.args,
98
- **kwargs: P.kwargs,
99
- ) -> Response[FormattableT]: ...
100
-
101
- def call(
102
- self, model: Model | ModelId, *args: P.args, **kwargs: P.kwargs
103
- ) -> Response | Response[FormattableT]:
104
- """Generates a response using the provided model."""
105
- if isinstance(model, str):
106
- model = Model(model)
107
- messages = self.messages(*args, **kwargs)
108
- return model.call(messages, tools=self.toolkit, format=self.format)
109
-
110
- @overload
111
- def stream(
112
- self: "Prompt[P, None]",
113
- model: Model | ModelId,
114
- *args: P.args,
115
- **kwargs: P.kwargs,
116
- ) -> StreamResponse: ...
117
-
118
- @overload
119
- def stream(
120
- self: "Prompt[P, FormattableT]",
121
- model: Model | ModelId,
122
- *args: P.args,
123
- **kwargs: P.kwargs,
124
- ) -> StreamResponse[FormattableT]: ...
125
-
126
- def stream(
127
- self, model: Model | ModelId, *args: P.args, **kwargs: P.kwargs
128
- ) -> StreamResponse | StreamResponse[FormattableT]:
129
- """Generates a streaming response using the provided model."""
130
- if isinstance(model, str):
131
- model = Model(model)
132
- messages = self.messages(*args, **kwargs)
133
- return model.stream(messages, tools=self.toolkit, format=self.format)
134
-
135
-
136
- @dataclass
137
- class AsyncPrompt(Generic[P, FormattableT]):
138
- """An async prompt that can be called with a model to generate a response.
139
-
140
- Created by decorating an async `MessageTemplate` with `llm.prompt`. The decorated
141
- async function becomes callable with a `Model` to generate LLM responses asynchronously.
142
-
143
- An `AsyncPrompt` is essentially: async `MessageTemplate` + tools + format.
144
- It can be invoked with a model: `await prompt(model, *args, **kwargs)`.
145
- """
146
-
147
- fn: AsyncMessageTemplate[P]
148
- """The underlying async prompt function that generates message content."""
149
-
150
- toolkit: AsyncToolkit
151
- """The toolkit containing this prompt's async tools."""
152
-
153
- format: (
154
- type[FormattableT] | Format[FormattableT] | OutputParser[FormattableT] | None
155
- )
156
- """The response format for the generated response."""
157
-
158
- async def messages(self, *args: P.args, **kwargs: P.kwargs) -> Sequence[Message]:
159
- """Return the `Messages` from invoking this prompt."""
160
- return promote_to_messages(await self.fn(*args, **kwargs))
161
-
162
- @overload
163
- async def __call__(
164
- self: "AsyncPrompt[P, None]",
165
- model: Model | ModelId,
166
- *args: P.args,
167
- **kwargs: P.kwargs,
168
- ) -> AsyncResponse: ...
169
-
170
- @overload
171
- async def __call__(
172
- self: "AsyncPrompt[P, FormattableT]",
173
- model: Model | ModelId,
174
- *args: P.args,
175
- **kwargs: P.kwargs,
176
- ) -> AsyncResponse[FormattableT]: ...
177
-
178
- async def __call__(
179
- self, model: Model | ModelId, *args: P.args, **kwargs: P.kwargs
180
- ) -> AsyncResponse | AsyncResponse[FormattableT]:
181
- """Generates a response using the provided model asynchronously."""
182
- return await self.call(model, *args, **kwargs)
183
-
184
- @overload
185
- async def call(
186
- self: "AsyncPrompt[P, None]",
187
- model: Model | ModelId,
188
- *args: P.args,
189
- **kwargs: P.kwargs,
190
- ) -> AsyncResponse: ...
191
-
192
- @overload
193
- async def call(
194
- self: "AsyncPrompt[P, FormattableT]",
195
- model: Model | ModelId,
196
- *args: P.args,
197
- **kwargs: P.kwargs,
198
- ) -> AsyncResponse[FormattableT]: ...
199
-
200
- async def call(
201
- self, model: Model | ModelId, *args: P.args, **kwargs: P.kwargs
202
- ) -> AsyncResponse | AsyncResponse[FormattableT]:
203
- """Generates a response using the provided model asynchronously."""
204
- if isinstance(model, str):
205
- model = Model(model)
206
- messages = await self.messages(*args, **kwargs)
207
- return await model.call_async(messages, tools=self.toolkit, format=self.format)
208
-
209
- @overload
210
- async def stream(
211
- self: "AsyncPrompt[P, None]",
212
- model: Model | ModelId,
213
- *args: P.args,
214
- **kwargs: P.kwargs,
215
- ) -> AsyncStreamResponse: ...
216
-
217
- @overload
218
- async def stream(
219
- self: "AsyncPrompt[P, FormattableT]",
220
- model: Model | ModelId,
221
- *args: P.args,
222
- **kwargs: P.kwargs,
223
- ) -> AsyncStreamResponse[FormattableT]: ...
224
-
225
- async def stream(
226
- self, model: Model | ModelId, *args: P.args, **kwargs: P.kwargs
227
- ) -> AsyncStreamResponse | AsyncStreamResponse[FormattableT]:
228
- """Generates a streaming response using the provided model asynchronously."""
229
- if isinstance(model, str):
230
- model = Model(model)
231
- messages = await self.messages(*args, **kwargs)
232
- return await model.stream_async(
233
- messages, tools=self.toolkit, format=self.format
234
- )
235
-
236
-
237
- @dataclass
238
- class ContextPrompt(Generic[P, DepsT, FormattableT]):
239
- """A context-aware prompt that can be called with a model to generate a response.
240
-
241
- Created by decorating a `ContextMessageTemplate` with `llm.prompt`. The decorated
242
- function (with first parameter `'ctx'` of type `Context[DepsT]`) becomes callable
243
- with a `Model` to generate LLM responses with context dependencies.
244
-
245
- A `ContextPrompt` is essentially: `ContextMessageTemplate` + tools + format.
246
- It can be invoked with a model: `prompt(model, ctx, *args, **kwargs)`.
247
- """
248
-
249
- fn: ContextMessageTemplate[P, DepsT]
250
- """The underlying context-aware prompt function that generates message content."""
251
-
252
- toolkit: ContextToolkit[DepsT]
253
- """The toolkit containing this prompt's context-aware tools."""
254
-
255
- format: (
256
- type[FormattableT] | Format[FormattableT] | OutputParser[FormattableT] | None
257
- )
258
- """The response format for the generated response."""
259
-
260
- def messages(
261
- self, ctx: Context[DepsT], *args: P.args, **kwargs: P.kwargs
262
- ) -> Sequence[Message]:
263
- """Return the `Messages` from invoking this prompt."""
264
- return promote_to_messages(self.fn(ctx, *args, **kwargs))
265
-
266
- @overload
267
- def __call__(
268
- self: "ContextPrompt[P, DepsT, None]",
269
- model: Model | ModelId,
270
- ctx: Context[DepsT],
271
- *args: P.args,
272
- **kwargs: P.kwargs,
273
- ) -> ContextResponse[DepsT, None]: ...
274
-
275
- @overload
276
- def __call__(
277
- self: "ContextPrompt[P, DepsT, FormattableT]",
278
- model: Model | ModelId,
279
- ctx: Context[DepsT],
280
- *args: P.args,
281
- **kwargs: P.kwargs,
282
- ) -> ContextResponse[DepsT, FormattableT]: ...
283
-
284
- def __call__(
285
- self,
286
- model: Model | ModelId,
287
- ctx: Context[DepsT],
288
- *args: P.args,
289
- **kwargs: P.kwargs,
290
- ) -> ContextResponse[DepsT, None] | ContextResponse[DepsT, FormattableT]:
291
- """Generates a response using the provided model."""
292
- return self.call(model, ctx, *args, **kwargs)
293
-
294
- @overload
295
- def call(
296
- self: "ContextPrompt[P, DepsT, None]",
297
- model: Model | ModelId,
298
- ctx: Context[DepsT],
299
- *args: P.args,
300
- **kwargs: P.kwargs,
301
- ) -> ContextResponse[DepsT, None]: ...
302
-
303
- @overload
304
- def call(
305
- self: "ContextPrompt[P, DepsT, FormattableT]",
306
- model: Model | ModelId,
307
- ctx: Context[DepsT],
308
- *args: P.args,
309
- **kwargs: P.kwargs,
310
- ) -> ContextResponse[DepsT, FormattableT]: ...
311
-
312
- def call(
313
- self,
314
- model: Model | ModelId,
315
- ctx: Context[DepsT],
316
- *args: P.args,
317
- **kwargs: P.kwargs,
318
- ) -> ContextResponse[DepsT, None] | ContextResponse[DepsT, FormattableT]:
319
- """Generates a response using the provided model."""
320
- if isinstance(model, str):
321
- model = Model(model)
322
- messages = self.messages(ctx, *args, **kwargs)
323
- return model.context_call(
324
- messages, ctx=ctx, tools=self.toolkit, format=self.format
325
- )
326
-
327
- @overload
328
- def stream(
329
- self: "ContextPrompt[P, DepsT, None]",
330
- model: Model | ModelId,
331
- ctx: Context[DepsT],
332
- *args: P.args,
333
- **kwargs: P.kwargs,
334
- ) -> ContextStreamResponse[DepsT, None]: ...
335
-
336
- @overload
337
- def stream(
338
- self: "ContextPrompt[P, DepsT, FormattableT]",
339
- model: Model | ModelId,
340
- ctx: Context[DepsT],
341
- *args: P.args,
342
- **kwargs: P.kwargs,
343
- ) -> ContextStreamResponse[DepsT, FormattableT]: ...
344
-
345
- def stream(
346
- self,
347
- model: Model | ModelId,
348
- ctx: Context[DepsT],
349
- *args: P.args,
350
- **kwargs: P.kwargs,
351
- ) -> (
352
- ContextStreamResponse[DepsT, None] | ContextStreamResponse[DepsT, FormattableT]
353
- ):
354
- """Generates a streaming response using the provided model."""
355
- if isinstance(model, str):
356
- model = Model(model)
357
- messages = self.messages(ctx, *args, **kwargs)
358
- return model.context_stream(
359
- messages, ctx=ctx, tools=self.toolkit, format=self.format
360
- )
361
-
362
-
363
- @dataclass
364
- class AsyncContextPrompt(Generic[P, DepsT, FormattableT]):
365
- """An async context-aware prompt that can be called with a model to generate a response.
366
-
367
- Created by decorating an async `ContextMessageTemplate` with `llm.prompt`. The decorated
368
- async function (with first parameter `'ctx'` of type `Context[DepsT]`) becomes callable
369
- with a `Model` to generate LLM responses asynchronously with context dependencies.
370
-
371
- An `AsyncContextPrompt` is essentially: async `ContextMessageTemplate` + tools + format.
372
- It can be invoked with a model: `await prompt(model, ctx, *args, **kwargs)`.
373
- """
374
-
375
- fn: AsyncContextMessageTemplate[P, DepsT]
376
- """The underlying async context-aware prompt function that generates message content."""
377
-
378
- toolkit: AsyncContextToolkit[DepsT]
379
- """The toolkit containing this prompt's async context-aware tools."""
380
-
381
- format: (
382
- type[FormattableT] | Format[FormattableT] | OutputParser[FormattableT] | None
383
- )
384
- """The response format for the generated response."""
385
-
386
- async def messages(
387
- self, ctx: Context[DepsT], *args: P.args, **kwargs: P.kwargs
388
- ) -> Sequence[Message]:
389
- """Return the `Messages` from invoking this prompt."""
390
- return promote_to_messages(await self.fn(ctx, *args, **kwargs))
391
-
392
- @overload
393
- async def __call__(
394
- self: "AsyncContextPrompt[P, DepsT, None]",
395
- model: Model | ModelId,
396
- ctx: Context[DepsT],
397
- *args: P.args,
398
- **kwargs: P.kwargs,
399
- ) -> AsyncContextResponse[DepsT, None]: ...
400
-
401
- @overload
402
- async def __call__(
403
- self: "AsyncContextPrompt[P, DepsT, FormattableT]",
404
- model: Model | ModelId,
405
- ctx: Context[DepsT],
406
- *args: P.args,
407
- **kwargs: P.kwargs,
408
- ) -> AsyncContextResponse[DepsT, FormattableT]: ...
409
-
410
- async def __call__(
411
- self,
412
- model: Model | ModelId,
413
- ctx: Context[DepsT],
414
- *args: P.args,
415
- **kwargs: P.kwargs,
416
- ) -> AsyncContextResponse[DepsT, None] | AsyncContextResponse[DepsT, FormattableT]:
417
- """Generates a response using the provided model asynchronously."""
418
- return await self.call(model, ctx, *args, **kwargs)
419
-
420
- @overload
421
- async def call(
422
- self: "AsyncContextPrompt[P, DepsT, None]",
423
- model: Model | ModelId,
424
- ctx: Context[DepsT],
425
- *args: P.args,
426
- **kwargs: P.kwargs,
427
- ) -> AsyncContextResponse[DepsT, None]: ...
428
-
429
- @overload
430
- async def call(
431
- self: "AsyncContextPrompt[P, DepsT, FormattableT]",
432
- model: Model | ModelId,
433
- ctx: Context[DepsT],
434
- *args: P.args,
435
- **kwargs: P.kwargs,
436
- ) -> AsyncContextResponse[DepsT, FormattableT]: ...
437
-
438
- async def call(
439
- self,
440
- model: Model | ModelId,
441
- ctx: Context[DepsT],
442
- *args: P.args,
443
- **kwargs: P.kwargs,
444
- ) -> AsyncContextResponse[DepsT, None] | AsyncContextResponse[DepsT, FormattableT]:
445
- """Generates a response using the provided model asynchronously."""
446
- if isinstance(model, str):
447
- model = Model(model)
448
- messages = await self.messages(ctx, *args, **kwargs)
449
- return await model.context_call_async(
450
- messages, ctx=ctx, tools=self.toolkit, format=self.format
451
- )
452
-
453
- @overload
454
- async def stream(
455
- self: "AsyncContextPrompt[P, DepsT, None]",
456
- model: Model | ModelId,
457
- ctx: Context[DepsT],
458
- *args: P.args,
459
- **kwargs: P.kwargs,
460
- ) -> AsyncContextStreamResponse[DepsT, None]: ...
461
-
462
- @overload
463
- async def stream(
464
- self: "AsyncContextPrompt[P, DepsT, FormattableT]",
465
- model: Model | ModelId,
466
- ctx: Context[DepsT],
467
- *args: P.args,
468
- **kwargs: P.kwargs,
469
- ) -> AsyncContextStreamResponse[DepsT, FormattableT]: ...
470
-
471
- async def stream(
472
- self,
473
- model: Model | ModelId,
474
- ctx: Context[DepsT],
475
- *args: P.args,
476
- **kwargs: P.kwargs,
477
- ) -> (
478
- AsyncContextStreamResponse[DepsT, None]
479
- | AsyncContextStreamResponse[DepsT, FormattableT]
480
- ):
481
- """Generates a streaming response using the provided model asynchronously."""
482
- if isinstance(model, str):
483
- model = Model(model)
484
- messages = await self.messages(ctx, *args, **kwargs)
485
- return await model.context_stream_async(
486
- messages, ctx=ctx, tools=self.toolkit, format=self.format
487
- )
@@ -1,62 +0,0 @@
1
- """Interfaces for LLM providers."""
2
-
3
- from ..._stubs import stub_module_if_missing
4
-
5
- # Stub modules for missing optional dependencies BEFORE importing
6
- # This must happen before any imports from these modules
7
- # Note: We only stub top-level provider modules, not their submodules.
8
- # The _StubModule will automatically handle nested attribute access.
9
- stub_module_if_missing("mirascope.llm.providers.anthropic", "anthropic")
10
- stub_module_if_missing("mirascope.llm.providers.google", "google")
11
- stub_module_if_missing("mirascope.llm.providers.mlx", "mlx")
12
- stub_module_if_missing("mirascope.llm.providers.openai", "openai")
13
- stub_module_if_missing("mirascope.llm.providers.together", "openai")
14
- stub_module_if_missing("mirascope.llm.providers.ollama", "openai")
15
-
16
- # Now imports work regardless of which packages are installed
17
- # ruff: noqa: E402
18
- from .anthropic import (
19
- AnthropicModelId,
20
- AnthropicProvider,
21
- )
22
- from .base import BaseProvider, Provider
23
- from .google import GoogleModelId, GoogleProvider
24
- from .mirascope import MirascopeProvider
25
- from .mlx import MLXModelId, MLXProvider
26
- from .model_id import ModelId
27
- from .ollama import OllamaProvider
28
- from .openai import (
29
- OpenAIModelId,
30
- OpenAIProvider,
31
- )
32
- from .openai.completions import BaseOpenAICompletionsProvider
33
- from .provider_id import KNOWN_PROVIDER_IDS, ProviderId
34
- from .provider_registry import (
35
- get_provider_for_model,
36
- register_provider,
37
- reset_provider_registry,
38
- )
39
- from .together import TogetherProvider
40
-
41
- __all__ = [
42
- "KNOWN_PROVIDER_IDS",
43
- "AnthropicModelId",
44
- "AnthropicProvider",
45
- "BaseOpenAICompletionsProvider",
46
- "BaseProvider",
47
- "GoogleModelId",
48
- "GoogleProvider",
49
- "MLXModelId",
50
- "MLXProvider",
51
- "MirascopeProvider",
52
- "ModelId",
53
- "OllamaProvider",
54
- "OpenAIModelId",
55
- "OpenAIProvider",
56
- "Provider",
57
- "ProviderId",
58
- "TogetherProvider",
59
- "get_provider_for_model",
60
- "register_provider",
61
- "reset_provider_registry",
62
- ]
@@ -1,11 +0,0 @@
1
- """Anthropic client implementation."""
2
-
3
- from .beta_provider import AnthropicBetaProvider
4
- from .model_id import AnthropicModelId
5
- from .provider import AnthropicProvider
6
-
7
- __all__ = [
8
- "AnthropicBetaProvider",
9
- "AnthropicModelId",
10
- "AnthropicProvider",
11
- ]
@@ -1,27 +0,0 @@
1
- """Shared Anthropic utilities."""
2
-
3
- from ...base._utils import get_include_thoughts
4
- from .decode import decode_async_stream, decode_response, decode_stream
5
- from .encode import (
6
- DEFAULT_FORMAT_MODE,
7
- DEFAULT_MAX_TOKENS,
8
- AnthropicImageMimeType,
9
- encode_image_mime_type,
10
- encode_request,
11
- process_params,
12
- )
13
- from .errors import ANTHROPIC_ERROR_MAP
14
-
15
- __all__ = [
16
- "ANTHROPIC_ERROR_MAP",
17
- "DEFAULT_FORMAT_MODE",
18
- "DEFAULT_MAX_TOKENS",
19
- "AnthropicImageMimeType",
20
- "decode_async_stream",
21
- "decode_response",
22
- "decode_stream",
23
- "encode_image_mime_type",
24
- "encode_request",
25
- "get_include_thoughts",
26
- "process_params",
27
- ]