mirascope 2.0.0__py3-none-any.whl → 2.0.0a0__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 (442) 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 +16 -101
  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/anthropic/__init__.py +11 -0
  15. mirascope/llm/{providers/openai/completions → clients/anthropic}/_utils/__init__.py +0 -2
  16. mirascope/llm/{providers → clients}/anthropic/_utils/decode.py +22 -66
  17. mirascope/llm/clients/anthropic/_utils/encode.py +243 -0
  18. mirascope/llm/clients/anthropic/clients.py +819 -0
  19. mirascope/llm/clients/anthropic/model_ids.py +8 -0
  20. mirascope/llm/{providers → clients}/base/__init__.py +5 -4
  21. mirascope/llm/{providers → clients}/base/_utils.py +17 -78
  22. mirascope/llm/{providers/base/base_provider.py → clients/base/client.py} +145 -468
  23. mirascope/llm/{models → clients/base}/params.py +37 -16
  24. mirascope/llm/clients/google/__init__.py +6 -0
  25. mirascope/llm/{providers/openai/responses → clients/google}/_utils/__init__.py +0 -2
  26. mirascope/llm/{providers → clients}/google/_utils/decode.py +22 -98
  27. mirascope/llm/{providers → clients}/google/_utils/encode.py +46 -168
  28. mirascope/llm/clients/google/clients.py +853 -0
  29. mirascope/llm/clients/google/model_ids.py +15 -0
  30. mirascope/llm/clients/openai/__init__.py +25 -0
  31. mirascope/llm/clients/openai/completions/__init__.py +9 -0
  32. mirascope/llm/{providers/google → clients/openai/completions}/_utils/__init__.py +0 -4
  33. mirascope/llm/{providers → clients}/openai/completions/_utils/decode.py +9 -74
  34. mirascope/llm/{providers → clients}/openai/completions/_utils/encode.py +52 -70
  35. mirascope/llm/clients/openai/completions/_utils/model_features.py +81 -0
  36. mirascope/llm/clients/openai/completions/clients.py +833 -0
  37. mirascope/llm/clients/openai/completions/model_ids.py +8 -0
  38. mirascope/llm/clients/openai/responses/__init__.py +9 -0
  39. mirascope/llm/clients/openai/responses/_utils/__init__.py +13 -0
  40. mirascope/llm/{providers → clients}/openai/responses/_utils/decode.py +14 -80
  41. mirascope/llm/{providers → clients}/openai/responses/_utils/encode.py +41 -92
  42. mirascope/llm/clients/openai/responses/_utils/model_features.py +87 -0
  43. mirascope/llm/clients/openai/responses/clients.py +832 -0
  44. mirascope/llm/clients/openai/responses/model_ids.py +8 -0
  45. mirascope/llm/clients/openai/shared/__init__.py +7 -0
  46. mirascope/llm/clients/openai/shared/_utils.py +55 -0
  47. mirascope/llm/clients/providers.py +175 -0
  48. mirascope/llm/content/__init__.py +2 -3
  49. mirascope/llm/content/tool_call.py +0 -6
  50. mirascope/llm/content/tool_output.py +5 -22
  51. mirascope/llm/context/_utils.py +6 -19
  52. mirascope/llm/exceptions.py +43 -298
  53. mirascope/llm/formatting/__init__.py +2 -19
  54. mirascope/llm/formatting/_utils.py +74 -0
  55. mirascope/llm/formatting/format.py +30 -219
  56. mirascope/llm/formatting/from_call_args.py +2 -2
  57. mirascope/llm/formatting/partial.py +7 -80
  58. mirascope/llm/formatting/types.py +64 -21
  59. mirascope/llm/mcp/__init__.py +2 -2
  60. mirascope/llm/mcp/client.py +118 -0
  61. mirascope/llm/messages/__init__.py +0 -3
  62. mirascope/llm/messages/message.py +5 -13
  63. mirascope/llm/models/__init__.py +2 -7
  64. mirascope/llm/models/models.py +139 -315
  65. mirascope/llm/prompts/__init__.py +12 -13
  66. mirascope/llm/prompts/_utils.py +43 -14
  67. mirascope/llm/prompts/decorator.py +204 -144
  68. mirascope/llm/prompts/protocols.py +59 -25
  69. mirascope/llm/responses/__init__.py +1 -9
  70. mirascope/llm/responses/_utils.py +12 -102
  71. mirascope/llm/responses/base_response.py +6 -18
  72. mirascope/llm/responses/base_stream_response.py +50 -173
  73. mirascope/llm/responses/finish_reason.py +0 -1
  74. mirascope/llm/responses/response.py +13 -34
  75. mirascope/llm/responses/root_response.py +29 -100
  76. mirascope/llm/responses/stream_response.py +31 -40
  77. mirascope/llm/tools/__init__.py +2 -9
  78. mirascope/llm/tools/_utils.py +3 -12
  79. mirascope/llm/tools/decorator.py +16 -25
  80. mirascope/llm/tools/protocols.py +4 -4
  81. mirascope/llm/tools/tool_schema.py +19 -87
  82. mirascope/llm/tools/toolkit.py +27 -35
  83. mirascope/llm/tools/tools.py +41 -135
  84. {mirascope-2.0.0.dist-info → mirascope-2.0.0a0.dist-info}/METADATA +9 -95
  85. mirascope-2.0.0a0.dist-info/RECORD +101 -0
  86. {mirascope-2.0.0.dist-info → mirascope-2.0.0a0.dist-info}/WHEEL +1 -1
  87. {mirascope-2.0.0.dist-info → mirascope-2.0.0a0.dist-info}/licenses/LICENSE +1 -1
  88. mirascope/_stubs.py +0 -363
  89. mirascope/api/__init__.py +0 -14
  90. mirascope/api/_generated/README.md +0 -207
  91. mirascope/api/_generated/__init__.py +0 -440
  92. mirascope/api/_generated/annotations/__init__.py +0 -33
  93. mirascope/api/_generated/annotations/client.py +0 -506
  94. mirascope/api/_generated/annotations/raw_client.py +0 -1414
  95. mirascope/api/_generated/annotations/types/__init__.py +0 -31
  96. mirascope/api/_generated/annotations/types/annotations_create_request_label.py +0 -5
  97. mirascope/api/_generated/annotations/types/annotations_create_response.py +0 -48
  98. mirascope/api/_generated/annotations/types/annotations_create_response_label.py +0 -5
  99. mirascope/api/_generated/annotations/types/annotations_get_response.py +0 -48
  100. mirascope/api/_generated/annotations/types/annotations_get_response_label.py +0 -5
  101. mirascope/api/_generated/annotations/types/annotations_list_request_label.py +0 -5
  102. mirascope/api/_generated/annotations/types/annotations_list_response.py +0 -21
  103. mirascope/api/_generated/annotations/types/annotations_list_response_annotations_item.py +0 -50
  104. mirascope/api/_generated/annotations/types/annotations_list_response_annotations_item_label.py +0 -5
  105. mirascope/api/_generated/annotations/types/annotations_update_request_label.py +0 -5
  106. mirascope/api/_generated/annotations/types/annotations_update_response.py +0 -48
  107. mirascope/api/_generated/annotations/types/annotations_update_response_label.py +0 -5
  108. mirascope/api/_generated/api_keys/__init__.py +0 -17
  109. mirascope/api/_generated/api_keys/client.py +0 -530
  110. mirascope/api/_generated/api_keys/raw_client.py +0 -1236
  111. mirascope/api/_generated/api_keys/types/__init__.py +0 -15
  112. mirascope/api/_generated/api_keys/types/api_keys_create_response.py +0 -28
  113. mirascope/api/_generated/api_keys/types/api_keys_get_response.py +0 -27
  114. mirascope/api/_generated/api_keys/types/api_keys_list_all_for_org_response_item.py +0 -40
  115. mirascope/api/_generated/api_keys/types/api_keys_list_response_item.py +0 -27
  116. mirascope/api/_generated/client.py +0 -211
  117. mirascope/api/_generated/core/__init__.py +0 -52
  118. mirascope/api/_generated/core/api_error.py +0 -23
  119. mirascope/api/_generated/core/client_wrapper.py +0 -46
  120. mirascope/api/_generated/core/datetime_utils.py +0 -28
  121. mirascope/api/_generated/core/file.py +0 -67
  122. mirascope/api/_generated/core/force_multipart.py +0 -16
  123. mirascope/api/_generated/core/http_client.py +0 -543
  124. mirascope/api/_generated/core/http_response.py +0 -55
  125. mirascope/api/_generated/core/jsonable_encoder.py +0 -100
  126. mirascope/api/_generated/core/pydantic_utilities.py +0 -255
  127. mirascope/api/_generated/core/query_encoder.py +0 -58
  128. mirascope/api/_generated/core/remove_none_from_dict.py +0 -11
  129. mirascope/api/_generated/core/request_options.py +0 -35
  130. mirascope/api/_generated/core/serialization.py +0 -276
  131. mirascope/api/_generated/docs/__init__.py +0 -4
  132. mirascope/api/_generated/docs/client.py +0 -91
  133. mirascope/api/_generated/docs/raw_client.py +0 -178
  134. mirascope/api/_generated/environment.py +0 -9
  135. mirascope/api/_generated/environments/__init__.py +0 -23
  136. mirascope/api/_generated/environments/client.py +0 -649
  137. mirascope/api/_generated/environments/raw_client.py +0 -1567
  138. mirascope/api/_generated/environments/types/__init__.py +0 -25
  139. mirascope/api/_generated/environments/types/environments_create_response.py +0 -24
  140. mirascope/api/_generated/environments/types/environments_get_analytics_response.py +0 -60
  141. mirascope/api/_generated/environments/types/environments_get_analytics_response_top_functions_item.py +0 -24
  142. mirascope/api/_generated/environments/types/environments_get_analytics_response_top_models_item.py +0 -22
  143. mirascope/api/_generated/environments/types/environments_get_response.py +0 -24
  144. mirascope/api/_generated/environments/types/environments_list_response_item.py +0 -24
  145. mirascope/api/_generated/environments/types/environments_update_response.py +0 -24
  146. mirascope/api/_generated/errors/__init__.py +0 -25
  147. mirascope/api/_generated/errors/bad_request_error.py +0 -14
  148. mirascope/api/_generated/errors/conflict_error.py +0 -14
  149. mirascope/api/_generated/errors/forbidden_error.py +0 -11
  150. mirascope/api/_generated/errors/internal_server_error.py +0 -10
  151. mirascope/api/_generated/errors/not_found_error.py +0 -11
  152. mirascope/api/_generated/errors/payment_required_error.py +0 -15
  153. mirascope/api/_generated/errors/service_unavailable_error.py +0 -14
  154. mirascope/api/_generated/errors/too_many_requests_error.py +0 -15
  155. mirascope/api/_generated/errors/unauthorized_error.py +0 -11
  156. mirascope/api/_generated/functions/__init__.py +0 -39
  157. mirascope/api/_generated/functions/client.py +0 -647
  158. mirascope/api/_generated/functions/raw_client.py +0 -1890
  159. mirascope/api/_generated/functions/types/__init__.py +0 -53
  160. mirascope/api/_generated/functions/types/functions_create_request_dependencies_value.py +0 -20
  161. mirascope/api/_generated/functions/types/functions_create_response.py +0 -37
  162. mirascope/api/_generated/functions/types/functions_create_response_dependencies_value.py +0 -20
  163. mirascope/api/_generated/functions/types/functions_find_by_hash_response.py +0 -39
  164. mirascope/api/_generated/functions/types/functions_find_by_hash_response_dependencies_value.py +0 -20
  165. mirascope/api/_generated/functions/types/functions_get_by_env_response.py +0 -53
  166. mirascope/api/_generated/functions/types/functions_get_by_env_response_dependencies_value.py +0 -22
  167. mirascope/api/_generated/functions/types/functions_get_response.py +0 -37
  168. mirascope/api/_generated/functions/types/functions_get_response_dependencies_value.py +0 -20
  169. mirascope/api/_generated/functions/types/functions_list_by_env_response.py +0 -25
  170. mirascope/api/_generated/functions/types/functions_list_by_env_response_functions_item.py +0 -56
  171. mirascope/api/_generated/functions/types/functions_list_by_env_response_functions_item_dependencies_value.py +0 -22
  172. mirascope/api/_generated/functions/types/functions_list_response.py +0 -21
  173. mirascope/api/_generated/functions/types/functions_list_response_functions_item.py +0 -41
  174. mirascope/api/_generated/functions/types/functions_list_response_functions_item_dependencies_value.py +0 -20
  175. mirascope/api/_generated/health/__init__.py +0 -7
  176. mirascope/api/_generated/health/client.py +0 -92
  177. mirascope/api/_generated/health/raw_client.py +0 -175
  178. mirascope/api/_generated/health/types/__init__.py +0 -8
  179. mirascope/api/_generated/health/types/health_check_response.py +0 -22
  180. mirascope/api/_generated/health/types/health_check_response_status.py +0 -5
  181. mirascope/api/_generated/organization_invitations/__init__.py +0 -33
  182. mirascope/api/_generated/organization_invitations/client.py +0 -546
  183. mirascope/api/_generated/organization_invitations/raw_client.py +0 -1519
  184. mirascope/api/_generated/organization_invitations/types/__init__.py +0 -53
  185. mirascope/api/_generated/organization_invitations/types/organization_invitations_accept_response.py +0 -34
  186. mirascope/api/_generated/organization_invitations/types/organization_invitations_accept_response_role.py +0 -7
  187. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_request_role.py +0 -7
  188. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_response.py +0 -48
  189. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_response_role.py +0 -7
  190. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_response_status.py +0 -7
  191. mirascope/api/_generated/organization_invitations/types/organization_invitations_get_response.py +0 -48
  192. mirascope/api/_generated/organization_invitations/types/organization_invitations_get_response_role.py +0 -7
  193. mirascope/api/_generated/organization_invitations/types/organization_invitations_get_response_status.py +0 -7
  194. mirascope/api/_generated/organization_invitations/types/organization_invitations_list_response_item.py +0 -48
  195. mirascope/api/_generated/organization_invitations/types/organization_invitations_list_response_item_role.py +0 -7
  196. mirascope/api/_generated/organization_invitations/types/organization_invitations_list_response_item_status.py +0 -7
  197. mirascope/api/_generated/organization_memberships/__init__.py +0 -19
  198. mirascope/api/_generated/organization_memberships/client.py +0 -302
  199. mirascope/api/_generated/organization_memberships/raw_client.py +0 -736
  200. mirascope/api/_generated/organization_memberships/types/__init__.py +0 -27
  201. mirascope/api/_generated/organization_memberships/types/organization_memberships_list_response_item.py +0 -33
  202. mirascope/api/_generated/organization_memberships/types/organization_memberships_list_response_item_role.py +0 -7
  203. mirascope/api/_generated/organization_memberships/types/organization_memberships_update_request_role.py +0 -7
  204. mirascope/api/_generated/organization_memberships/types/organization_memberships_update_response.py +0 -31
  205. mirascope/api/_generated/organization_memberships/types/organization_memberships_update_response_role.py +0 -7
  206. mirascope/api/_generated/organizations/__init__.py +0 -51
  207. mirascope/api/_generated/organizations/client.py +0 -869
  208. mirascope/api/_generated/organizations/raw_client.py +0 -2593
  209. mirascope/api/_generated/organizations/types/__init__.py +0 -71
  210. mirascope/api/_generated/organizations/types/organizations_create_payment_intent_response.py +0 -24
  211. mirascope/api/_generated/organizations/types/organizations_create_response.py +0 -26
  212. mirascope/api/_generated/organizations/types/organizations_create_response_role.py +0 -5
  213. mirascope/api/_generated/organizations/types/organizations_get_response.py +0 -26
  214. mirascope/api/_generated/organizations/types/organizations_get_response_role.py +0 -5
  215. mirascope/api/_generated/organizations/types/organizations_list_response_item.py +0 -26
  216. mirascope/api/_generated/organizations/types/organizations_list_response_item_role.py +0 -5
  217. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_request_target_plan.py +0 -7
  218. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_response.py +0 -47
  219. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_response_validation_errors_item.py +0 -33
  220. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_response_validation_errors_item_resource.py +0 -7
  221. mirascope/api/_generated/organizations/types/organizations_router_balance_response.py +0 -24
  222. mirascope/api/_generated/organizations/types/organizations_subscription_response.py +0 -53
  223. mirascope/api/_generated/organizations/types/organizations_subscription_response_current_plan.py +0 -7
  224. mirascope/api/_generated/organizations/types/organizations_subscription_response_payment_method.py +0 -26
  225. mirascope/api/_generated/organizations/types/organizations_subscription_response_scheduled_change.py +0 -34
  226. mirascope/api/_generated/organizations/types/organizations_subscription_response_scheduled_change_target_plan.py +0 -7
  227. mirascope/api/_generated/organizations/types/organizations_update_response.py +0 -26
  228. mirascope/api/_generated/organizations/types/organizations_update_response_role.py +0 -5
  229. mirascope/api/_generated/organizations/types/organizations_update_subscription_request_target_plan.py +0 -7
  230. mirascope/api/_generated/organizations/types/organizations_update_subscription_response.py +0 -35
  231. mirascope/api/_generated/project_memberships/__init__.py +0 -25
  232. mirascope/api/_generated/project_memberships/client.py +0 -437
  233. mirascope/api/_generated/project_memberships/raw_client.py +0 -1039
  234. mirascope/api/_generated/project_memberships/types/__init__.py +0 -29
  235. mirascope/api/_generated/project_memberships/types/project_memberships_create_request_role.py +0 -7
  236. mirascope/api/_generated/project_memberships/types/project_memberships_create_response.py +0 -35
  237. mirascope/api/_generated/project_memberships/types/project_memberships_create_response_role.py +0 -7
  238. mirascope/api/_generated/project_memberships/types/project_memberships_list_response_item.py +0 -33
  239. mirascope/api/_generated/project_memberships/types/project_memberships_list_response_item_role.py +0 -7
  240. mirascope/api/_generated/project_memberships/types/project_memberships_update_request_role.py +0 -7
  241. mirascope/api/_generated/project_memberships/types/project_memberships_update_response.py +0 -35
  242. mirascope/api/_generated/project_memberships/types/project_memberships_update_response_role.py +0 -7
  243. mirascope/api/_generated/projects/__init__.py +0 -7
  244. mirascope/api/_generated/projects/client.py +0 -428
  245. mirascope/api/_generated/projects/raw_client.py +0 -1302
  246. mirascope/api/_generated/projects/types/__init__.py +0 -10
  247. mirascope/api/_generated/projects/types/projects_create_response.py +0 -25
  248. mirascope/api/_generated/projects/types/projects_get_response.py +0 -25
  249. mirascope/api/_generated/projects/types/projects_list_response_item.py +0 -25
  250. mirascope/api/_generated/projects/types/projects_update_response.py +0 -25
  251. mirascope/api/_generated/reference.md +0 -4915
  252. mirascope/api/_generated/tags/__init__.py +0 -19
  253. mirascope/api/_generated/tags/client.py +0 -504
  254. mirascope/api/_generated/tags/raw_client.py +0 -1288
  255. mirascope/api/_generated/tags/types/__init__.py +0 -17
  256. mirascope/api/_generated/tags/types/tags_create_response.py +0 -41
  257. mirascope/api/_generated/tags/types/tags_get_response.py +0 -41
  258. mirascope/api/_generated/tags/types/tags_list_response.py +0 -23
  259. mirascope/api/_generated/tags/types/tags_list_response_tags_item.py +0 -41
  260. mirascope/api/_generated/tags/types/tags_update_response.py +0 -41
  261. mirascope/api/_generated/token_cost/__init__.py +0 -7
  262. mirascope/api/_generated/token_cost/client.py +0 -160
  263. mirascope/api/_generated/token_cost/raw_client.py +0 -264
  264. mirascope/api/_generated/token_cost/types/__init__.py +0 -8
  265. mirascope/api/_generated/token_cost/types/token_cost_calculate_request_usage.py +0 -54
  266. mirascope/api/_generated/token_cost/types/token_cost_calculate_response.py +0 -52
  267. mirascope/api/_generated/traces/__init__.py +0 -97
  268. mirascope/api/_generated/traces/client.py +0 -1103
  269. mirascope/api/_generated/traces/raw_client.py +0 -2322
  270. mirascope/api/_generated/traces/types/__init__.py +0 -155
  271. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item.py +0 -29
  272. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource.py +0 -27
  273. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item.py +0 -23
  274. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value.py +0 -38
  275. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_array_value.py +0 -19
  276. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_kvlist_value.py +0 -22
  277. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_kvlist_value_values_item.py +0 -20
  278. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item.py +0 -29
  279. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope.py +0 -31
  280. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item.py +0 -23
  281. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value.py +0 -38
  282. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value_array_value.py +0 -19
  283. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value_kvlist_value.py +0 -22
  284. 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
  285. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item.py +0 -48
  286. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item.py +0 -23
  287. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value.py +0 -38
  288. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value_array_value.py +0 -19
  289. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value_kvlist_value.py +0 -24
  290. 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
  291. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_status.py +0 -20
  292. mirascope/api/_generated/traces/types/traces_create_response.py +0 -24
  293. mirascope/api/_generated/traces/types/traces_create_response_partial_success.py +0 -22
  294. mirascope/api/_generated/traces/types/traces_get_analytics_summary_response.py +0 -60
  295. mirascope/api/_generated/traces/types/traces_get_analytics_summary_response_top_functions_item.py +0 -24
  296. mirascope/api/_generated/traces/types/traces_get_analytics_summary_response_top_models_item.py +0 -22
  297. mirascope/api/_generated/traces/types/traces_get_trace_detail_by_env_response.py +0 -33
  298. mirascope/api/_generated/traces/types/traces_get_trace_detail_by_env_response_spans_item.py +0 -88
  299. mirascope/api/_generated/traces/types/traces_get_trace_detail_response.py +0 -33
  300. mirascope/api/_generated/traces/types/traces_get_trace_detail_response_spans_item.py +0 -88
  301. mirascope/api/_generated/traces/types/traces_list_by_function_hash_response.py +0 -25
  302. mirascope/api/_generated/traces/types/traces_list_by_function_hash_response_traces_item.py +0 -44
  303. mirascope/api/_generated/traces/types/traces_search_by_env_request_attribute_filters_item.py +0 -26
  304. mirascope/api/_generated/traces/types/traces_search_by_env_request_attribute_filters_item_operator.py +0 -7
  305. mirascope/api/_generated/traces/types/traces_search_by_env_request_sort_by.py +0 -7
  306. mirascope/api/_generated/traces/types/traces_search_by_env_request_sort_order.py +0 -7
  307. mirascope/api/_generated/traces/types/traces_search_by_env_response.py +0 -26
  308. mirascope/api/_generated/traces/types/traces_search_by_env_response_spans_item.py +0 -50
  309. mirascope/api/_generated/traces/types/traces_search_request_attribute_filters_item.py +0 -26
  310. mirascope/api/_generated/traces/types/traces_search_request_attribute_filters_item_operator.py +0 -7
  311. mirascope/api/_generated/traces/types/traces_search_request_sort_by.py +0 -7
  312. mirascope/api/_generated/traces/types/traces_search_request_sort_order.py +0 -5
  313. mirascope/api/_generated/traces/types/traces_search_response.py +0 -26
  314. mirascope/api/_generated/traces/types/traces_search_response_spans_item.py +0 -50
  315. mirascope/api/_generated/types/__init__.py +0 -85
  316. mirascope/api/_generated/types/already_exists_error.py +0 -22
  317. mirascope/api/_generated/types/already_exists_error_tag.py +0 -5
  318. mirascope/api/_generated/types/bad_request_error_body.py +0 -50
  319. mirascope/api/_generated/types/click_house_error.py +0 -22
  320. mirascope/api/_generated/types/database_error.py +0 -22
  321. mirascope/api/_generated/types/database_error_tag.py +0 -5
  322. mirascope/api/_generated/types/date.py +0 -3
  323. mirascope/api/_generated/types/http_api_decode_error.py +0 -27
  324. mirascope/api/_generated/types/http_api_decode_error_tag.py +0 -5
  325. mirascope/api/_generated/types/immutable_resource_error.py +0 -22
  326. mirascope/api/_generated/types/internal_server_error_body.py +0 -49
  327. mirascope/api/_generated/types/issue.py +0 -38
  328. mirascope/api/_generated/types/issue_tag.py +0 -10
  329. mirascope/api/_generated/types/not_found_error_body.py +0 -22
  330. mirascope/api/_generated/types/not_found_error_tag.py +0 -5
  331. mirascope/api/_generated/types/number_from_string.py +0 -3
  332. mirascope/api/_generated/types/permission_denied_error.py +0 -22
  333. mirascope/api/_generated/types/permission_denied_error_tag.py +0 -5
  334. mirascope/api/_generated/types/plan_limit_exceeded_error.py +0 -32
  335. mirascope/api/_generated/types/plan_limit_exceeded_error_tag.py +0 -7
  336. mirascope/api/_generated/types/pricing_unavailable_error.py +0 -23
  337. mirascope/api/_generated/types/property_key.py +0 -7
  338. mirascope/api/_generated/types/property_key_key.py +0 -25
  339. mirascope/api/_generated/types/property_key_key_tag.py +0 -5
  340. mirascope/api/_generated/types/rate_limit_error.py +0 -31
  341. mirascope/api/_generated/types/rate_limit_error_tag.py +0 -5
  342. mirascope/api/_generated/types/service_unavailable_error_body.py +0 -24
  343. mirascope/api/_generated/types/service_unavailable_error_tag.py +0 -7
  344. mirascope/api/_generated/types/stripe_error.py +0 -20
  345. mirascope/api/_generated/types/subscription_past_due_error.py +0 -31
  346. mirascope/api/_generated/types/subscription_past_due_error_tag.py +0 -7
  347. mirascope/api/_generated/types/unauthorized_error_body.py +0 -21
  348. mirascope/api/_generated/types/unauthorized_error_tag.py +0 -5
  349. mirascope/api/client.py +0 -255
  350. mirascope/api/settings.py +0 -99
  351. mirascope/llm/formatting/output_parser.py +0 -178
  352. mirascope/llm/formatting/primitives.py +0 -192
  353. mirascope/llm/mcp/mcp_client.py +0 -130
  354. mirascope/llm/messages/_utils.py +0 -34
  355. mirascope/llm/models/thinking_config.py +0 -61
  356. mirascope/llm/prompts/prompts.py +0 -487
  357. mirascope/llm/providers/__init__.py +0 -62
  358. mirascope/llm/providers/anthropic/__init__.py +0 -11
  359. mirascope/llm/providers/anthropic/_utils/__init__.py +0 -27
  360. mirascope/llm/providers/anthropic/_utils/beta_decode.py +0 -282
  361. mirascope/llm/providers/anthropic/_utils/beta_encode.py +0 -266
  362. mirascope/llm/providers/anthropic/_utils/encode.py +0 -418
  363. mirascope/llm/providers/anthropic/_utils/errors.py +0 -46
  364. mirascope/llm/providers/anthropic/beta_provider.py +0 -374
  365. mirascope/llm/providers/anthropic/model_id.py +0 -23
  366. mirascope/llm/providers/anthropic/model_info.py +0 -87
  367. mirascope/llm/providers/anthropic/provider.py +0 -479
  368. mirascope/llm/providers/google/__init__.py +0 -6
  369. mirascope/llm/providers/google/_utils/errors.py +0 -50
  370. mirascope/llm/providers/google/model_id.py +0 -22
  371. mirascope/llm/providers/google/model_info.py +0 -63
  372. mirascope/llm/providers/google/provider.py +0 -492
  373. mirascope/llm/providers/mirascope/__init__.py +0 -5
  374. mirascope/llm/providers/mirascope/_utils.py +0 -73
  375. mirascope/llm/providers/mirascope/provider.py +0 -349
  376. mirascope/llm/providers/mlx/__init__.py +0 -9
  377. mirascope/llm/providers/mlx/_utils.py +0 -141
  378. mirascope/llm/providers/mlx/encoding/__init__.py +0 -8
  379. mirascope/llm/providers/mlx/encoding/base.py +0 -72
  380. mirascope/llm/providers/mlx/encoding/transformers.py +0 -150
  381. mirascope/llm/providers/mlx/mlx.py +0 -254
  382. mirascope/llm/providers/mlx/model_id.py +0 -17
  383. mirascope/llm/providers/mlx/provider.py +0 -452
  384. mirascope/llm/providers/model_id.py +0 -16
  385. mirascope/llm/providers/ollama/__init__.py +0 -7
  386. mirascope/llm/providers/ollama/provider.py +0 -71
  387. mirascope/llm/providers/openai/__init__.py +0 -15
  388. mirascope/llm/providers/openai/_utils/__init__.py +0 -5
  389. mirascope/llm/providers/openai/_utils/errors.py +0 -46
  390. mirascope/llm/providers/openai/completions/__init__.py +0 -7
  391. mirascope/llm/providers/openai/completions/base_provider.py +0 -542
  392. mirascope/llm/providers/openai/completions/provider.py +0 -22
  393. mirascope/llm/providers/openai/model_id.py +0 -31
  394. mirascope/llm/providers/openai/model_info.py +0 -303
  395. mirascope/llm/providers/openai/provider.py +0 -441
  396. mirascope/llm/providers/openai/responses/__init__.py +0 -5
  397. mirascope/llm/providers/openai/responses/provider.py +0 -513
  398. mirascope/llm/providers/provider_id.py +0 -24
  399. mirascope/llm/providers/provider_registry.py +0 -299
  400. mirascope/llm/providers/together/__init__.py +0 -7
  401. mirascope/llm/providers/together/provider.py +0 -40
  402. mirascope/llm/responses/usage.py +0 -95
  403. mirascope/ops/__init__.py +0 -111
  404. mirascope/ops/_internal/__init__.py +0 -5
  405. mirascope/ops/_internal/closure.py +0 -1169
  406. mirascope/ops/_internal/configuration.py +0 -177
  407. mirascope/ops/_internal/context.py +0 -76
  408. mirascope/ops/_internal/exporters/__init__.py +0 -26
  409. mirascope/ops/_internal/exporters/exporters.py +0 -395
  410. mirascope/ops/_internal/exporters/processors.py +0 -104
  411. mirascope/ops/_internal/exporters/types.py +0 -165
  412. mirascope/ops/_internal/exporters/utils.py +0 -29
  413. mirascope/ops/_internal/instrumentation/__init__.py +0 -8
  414. mirascope/ops/_internal/instrumentation/llm/__init__.py +0 -8
  415. mirascope/ops/_internal/instrumentation/llm/common.py +0 -530
  416. mirascope/ops/_internal/instrumentation/llm/cost.py +0 -190
  417. mirascope/ops/_internal/instrumentation/llm/encode.py +0 -238
  418. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/__init__.py +0 -38
  419. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/gen_ai_input_messages.py +0 -31
  420. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/gen_ai_output_messages.py +0 -38
  421. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/gen_ai_system_instructions.py +0 -18
  422. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/shared.py +0 -100
  423. mirascope/ops/_internal/instrumentation/llm/llm.py +0 -161
  424. mirascope/ops/_internal/instrumentation/llm/model.py +0 -1798
  425. mirascope/ops/_internal/instrumentation/llm/response.py +0 -521
  426. mirascope/ops/_internal/instrumentation/llm/serialize.py +0 -300
  427. mirascope/ops/_internal/propagation.py +0 -198
  428. mirascope/ops/_internal/protocols.py +0 -133
  429. mirascope/ops/_internal/session.py +0 -139
  430. mirascope/ops/_internal/spans.py +0 -232
  431. mirascope/ops/_internal/traced_calls.py +0 -375
  432. mirascope/ops/_internal/traced_functions.py +0 -523
  433. mirascope/ops/_internal/tracing.py +0 -353
  434. mirascope/ops/_internal/types.py +0 -13
  435. mirascope/ops/_internal/utils.py +0 -123
  436. mirascope/ops/_internal/versioned_calls.py +0 -512
  437. mirascope/ops/_internal/versioned_functions.py +0 -357
  438. mirascope/ops/_internal/versioning.py +0 -303
  439. mirascope/ops/exceptions.py +0 -21
  440. mirascope-2.0.0.dist-info/RECORD +0 -423
  441. /mirascope/llm/{providers → clients}/base/kwargs.py +0 -0
  442. /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
- ]