mirascope 1.25.6__py3-none-any.whl → 2.0.0__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 (797) hide show
  1. mirascope/__init__.py +5 -52
  2. mirascope/_stubs.py +363 -0
  3. mirascope/api/__init__.py +14 -0
  4. mirascope/api/_generated/README.md +207 -0
  5. mirascope/api/_generated/__init__.py +440 -0
  6. mirascope/api/_generated/annotations/__init__.py +33 -0
  7. mirascope/api/_generated/annotations/client.py +506 -0
  8. mirascope/api/_generated/annotations/raw_client.py +1414 -0
  9. mirascope/api/_generated/annotations/types/__init__.py +31 -0
  10. mirascope/api/_generated/annotations/types/annotations_create_request_label.py +5 -0
  11. mirascope/api/_generated/annotations/types/annotations_create_response.py +48 -0
  12. mirascope/api/_generated/annotations/types/annotations_create_response_label.py +5 -0
  13. mirascope/api/_generated/annotations/types/annotations_get_response.py +48 -0
  14. mirascope/api/_generated/annotations/types/annotations_get_response_label.py +5 -0
  15. mirascope/api/_generated/annotations/types/annotations_list_request_label.py +5 -0
  16. mirascope/api/_generated/annotations/types/annotations_list_response.py +21 -0
  17. mirascope/api/_generated/annotations/types/annotations_list_response_annotations_item.py +50 -0
  18. mirascope/api/_generated/annotations/types/annotations_list_response_annotations_item_label.py +5 -0
  19. mirascope/api/_generated/annotations/types/annotations_update_request_label.py +5 -0
  20. mirascope/api/_generated/annotations/types/annotations_update_response.py +48 -0
  21. mirascope/api/_generated/annotations/types/annotations_update_response_label.py +5 -0
  22. mirascope/api/_generated/api_keys/__init__.py +17 -0
  23. mirascope/api/_generated/api_keys/client.py +530 -0
  24. mirascope/api/_generated/api_keys/raw_client.py +1236 -0
  25. mirascope/api/_generated/api_keys/types/__init__.py +15 -0
  26. mirascope/api/_generated/api_keys/types/api_keys_create_response.py +28 -0
  27. mirascope/api/_generated/api_keys/types/api_keys_get_response.py +27 -0
  28. mirascope/api/_generated/api_keys/types/api_keys_list_all_for_org_response_item.py +40 -0
  29. mirascope/api/_generated/api_keys/types/api_keys_list_response_item.py +27 -0
  30. mirascope/api/_generated/client.py +211 -0
  31. mirascope/api/_generated/core/__init__.py +52 -0
  32. mirascope/api/_generated/core/api_error.py +23 -0
  33. mirascope/api/_generated/core/client_wrapper.py +46 -0
  34. mirascope/api/_generated/core/datetime_utils.py +28 -0
  35. mirascope/api/_generated/core/file.py +67 -0
  36. mirascope/api/_generated/core/force_multipart.py +16 -0
  37. mirascope/api/_generated/core/http_client.py +543 -0
  38. mirascope/api/_generated/core/http_response.py +55 -0
  39. mirascope/api/_generated/core/jsonable_encoder.py +100 -0
  40. mirascope/api/_generated/core/pydantic_utilities.py +255 -0
  41. mirascope/api/_generated/core/query_encoder.py +58 -0
  42. mirascope/api/_generated/core/remove_none_from_dict.py +11 -0
  43. mirascope/api/_generated/core/request_options.py +35 -0
  44. mirascope/api/_generated/core/serialization.py +276 -0
  45. mirascope/api/_generated/docs/__init__.py +4 -0
  46. mirascope/api/_generated/docs/client.py +91 -0
  47. mirascope/api/_generated/docs/raw_client.py +178 -0
  48. mirascope/api/_generated/environment.py +9 -0
  49. mirascope/api/_generated/environments/__init__.py +23 -0
  50. mirascope/api/_generated/environments/client.py +649 -0
  51. mirascope/api/_generated/environments/raw_client.py +1567 -0
  52. mirascope/api/_generated/environments/types/__init__.py +25 -0
  53. mirascope/api/_generated/environments/types/environments_create_response.py +24 -0
  54. mirascope/api/_generated/environments/types/environments_get_analytics_response.py +60 -0
  55. mirascope/api/_generated/environments/types/environments_get_analytics_response_top_functions_item.py +24 -0
  56. mirascope/api/_generated/environments/types/environments_get_analytics_response_top_models_item.py +22 -0
  57. mirascope/api/_generated/environments/types/environments_get_response.py +24 -0
  58. mirascope/api/_generated/environments/types/environments_list_response_item.py +24 -0
  59. mirascope/api/_generated/environments/types/environments_update_response.py +24 -0
  60. mirascope/api/_generated/errors/__init__.py +25 -0
  61. mirascope/api/_generated/errors/bad_request_error.py +14 -0
  62. mirascope/api/_generated/errors/conflict_error.py +14 -0
  63. mirascope/api/_generated/errors/forbidden_error.py +11 -0
  64. mirascope/api/_generated/errors/internal_server_error.py +10 -0
  65. mirascope/api/_generated/errors/not_found_error.py +11 -0
  66. mirascope/api/_generated/errors/payment_required_error.py +15 -0
  67. mirascope/api/_generated/errors/service_unavailable_error.py +14 -0
  68. mirascope/api/_generated/errors/too_many_requests_error.py +15 -0
  69. mirascope/api/_generated/errors/unauthorized_error.py +11 -0
  70. mirascope/api/_generated/functions/__init__.py +39 -0
  71. mirascope/api/_generated/functions/client.py +647 -0
  72. mirascope/api/_generated/functions/raw_client.py +1890 -0
  73. mirascope/api/_generated/functions/types/__init__.py +53 -0
  74. mirascope/api/_generated/functions/types/functions_create_request_dependencies_value.py +20 -0
  75. mirascope/api/_generated/functions/types/functions_create_response.py +37 -0
  76. mirascope/api/_generated/functions/types/functions_create_response_dependencies_value.py +20 -0
  77. mirascope/api/_generated/functions/types/functions_find_by_hash_response.py +39 -0
  78. mirascope/api/_generated/functions/types/functions_find_by_hash_response_dependencies_value.py +20 -0
  79. mirascope/api/_generated/functions/types/functions_get_by_env_response.py +53 -0
  80. mirascope/api/_generated/functions/types/functions_get_by_env_response_dependencies_value.py +22 -0
  81. mirascope/api/_generated/functions/types/functions_get_response.py +37 -0
  82. mirascope/api/_generated/functions/types/functions_get_response_dependencies_value.py +20 -0
  83. mirascope/api/_generated/functions/types/functions_list_by_env_response.py +25 -0
  84. mirascope/api/_generated/functions/types/functions_list_by_env_response_functions_item.py +56 -0
  85. mirascope/api/_generated/functions/types/functions_list_by_env_response_functions_item_dependencies_value.py +22 -0
  86. mirascope/api/_generated/functions/types/functions_list_response.py +21 -0
  87. mirascope/api/_generated/functions/types/functions_list_response_functions_item.py +41 -0
  88. mirascope/api/_generated/functions/types/functions_list_response_functions_item_dependencies_value.py +20 -0
  89. mirascope/api/_generated/health/__init__.py +7 -0
  90. mirascope/api/_generated/health/client.py +92 -0
  91. mirascope/api/_generated/health/raw_client.py +175 -0
  92. mirascope/api/_generated/health/types/__init__.py +8 -0
  93. mirascope/api/_generated/health/types/health_check_response.py +22 -0
  94. mirascope/api/_generated/health/types/health_check_response_status.py +5 -0
  95. mirascope/api/_generated/organization_invitations/__init__.py +33 -0
  96. mirascope/api/_generated/organization_invitations/client.py +546 -0
  97. mirascope/api/_generated/organization_invitations/raw_client.py +1519 -0
  98. mirascope/api/_generated/organization_invitations/types/__init__.py +53 -0
  99. mirascope/api/_generated/organization_invitations/types/organization_invitations_accept_response.py +34 -0
  100. mirascope/api/_generated/organization_invitations/types/organization_invitations_accept_response_role.py +7 -0
  101. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_request_role.py +7 -0
  102. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_response.py +48 -0
  103. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_response_role.py +7 -0
  104. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_response_status.py +7 -0
  105. mirascope/api/_generated/organization_invitations/types/organization_invitations_get_response.py +48 -0
  106. mirascope/api/_generated/organization_invitations/types/organization_invitations_get_response_role.py +7 -0
  107. mirascope/api/_generated/organization_invitations/types/organization_invitations_get_response_status.py +7 -0
  108. mirascope/api/_generated/organization_invitations/types/organization_invitations_list_response_item.py +48 -0
  109. mirascope/api/_generated/organization_invitations/types/organization_invitations_list_response_item_role.py +7 -0
  110. mirascope/api/_generated/organization_invitations/types/organization_invitations_list_response_item_status.py +7 -0
  111. mirascope/api/_generated/organization_memberships/__init__.py +19 -0
  112. mirascope/api/_generated/organization_memberships/client.py +302 -0
  113. mirascope/api/_generated/organization_memberships/raw_client.py +736 -0
  114. mirascope/api/_generated/organization_memberships/types/__init__.py +27 -0
  115. mirascope/api/_generated/organization_memberships/types/organization_memberships_list_response_item.py +33 -0
  116. mirascope/api/_generated/organization_memberships/types/organization_memberships_list_response_item_role.py +7 -0
  117. mirascope/api/_generated/organization_memberships/types/organization_memberships_update_request_role.py +7 -0
  118. mirascope/api/_generated/organization_memberships/types/organization_memberships_update_response.py +31 -0
  119. mirascope/api/_generated/organization_memberships/types/organization_memberships_update_response_role.py +7 -0
  120. mirascope/api/_generated/organizations/__init__.py +51 -0
  121. mirascope/api/_generated/organizations/client.py +869 -0
  122. mirascope/api/_generated/organizations/raw_client.py +2593 -0
  123. mirascope/api/_generated/organizations/types/__init__.py +71 -0
  124. mirascope/api/_generated/organizations/types/organizations_create_payment_intent_response.py +24 -0
  125. mirascope/api/_generated/organizations/types/organizations_create_response.py +26 -0
  126. mirascope/api/_generated/organizations/types/organizations_create_response_role.py +5 -0
  127. mirascope/api/_generated/organizations/types/organizations_get_response.py +26 -0
  128. mirascope/api/_generated/organizations/types/organizations_get_response_role.py +5 -0
  129. mirascope/api/_generated/organizations/types/organizations_list_response_item.py +26 -0
  130. mirascope/api/_generated/organizations/types/organizations_list_response_item_role.py +5 -0
  131. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_request_target_plan.py +7 -0
  132. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_response.py +47 -0
  133. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_response_validation_errors_item.py +33 -0
  134. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_response_validation_errors_item_resource.py +7 -0
  135. mirascope/api/_generated/organizations/types/organizations_router_balance_response.py +24 -0
  136. mirascope/api/_generated/organizations/types/organizations_subscription_response.py +53 -0
  137. mirascope/api/_generated/organizations/types/organizations_subscription_response_current_plan.py +7 -0
  138. mirascope/api/_generated/organizations/types/organizations_subscription_response_payment_method.py +26 -0
  139. mirascope/api/_generated/organizations/types/organizations_subscription_response_scheduled_change.py +34 -0
  140. mirascope/api/_generated/organizations/types/organizations_subscription_response_scheduled_change_target_plan.py +7 -0
  141. mirascope/api/_generated/organizations/types/organizations_update_response.py +26 -0
  142. mirascope/api/_generated/organizations/types/organizations_update_response_role.py +5 -0
  143. mirascope/api/_generated/organizations/types/organizations_update_subscription_request_target_plan.py +7 -0
  144. mirascope/api/_generated/organizations/types/organizations_update_subscription_response.py +35 -0
  145. mirascope/api/_generated/project_memberships/__init__.py +25 -0
  146. mirascope/api/_generated/project_memberships/client.py +437 -0
  147. mirascope/api/_generated/project_memberships/raw_client.py +1039 -0
  148. mirascope/api/_generated/project_memberships/types/__init__.py +29 -0
  149. mirascope/api/_generated/project_memberships/types/project_memberships_create_request_role.py +7 -0
  150. mirascope/api/_generated/project_memberships/types/project_memberships_create_response.py +35 -0
  151. mirascope/api/_generated/project_memberships/types/project_memberships_create_response_role.py +7 -0
  152. mirascope/api/_generated/project_memberships/types/project_memberships_list_response_item.py +33 -0
  153. mirascope/api/_generated/project_memberships/types/project_memberships_list_response_item_role.py +7 -0
  154. mirascope/api/_generated/project_memberships/types/project_memberships_update_request_role.py +7 -0
  155. mirascope/api/_generated/project_memberships/types/project_memberships_update_response.py +35 -0
  156. mirascope/api/_generated/project_memberships/types/project_memberships_update_response_role.py +7 -0
  157. mirascope/api/_generated/projects/__init__.py +7 -0
  158. mirascope/api/_generated/projects/client.py +428 -0
  159. mirascope/api/_generated/projects/raw_client.py +1302 -0
  160. mirascope/api/_generated/projects/types/__init__.py +10 -0
  161. mirascope/api/_generated/projects/types/projects_create_response.py +25 -0
  162. mirascope/api/_generated/projects/types/projects_get_response.py +25 -0
  163. mirascope/api/_generated/projects/types/projects_list_response_item.py +25 -0
  164. mirascope/api/_generated/projects/types/projects_update_response.py +25 -0
  165. mirascope/api/_generated/reference.md +4915 -0
  166. mirascope/api/_generated/tags/__init__.py +19 -0
  167. mirascope/api/_generated/tags/client.py +504 -0
  168. mirascope/api/_generated/tags/raw_client.py +1288 -0
  169. mirascope/api/_generated/tags/types/__init__.py +17 -0
  170. mirascope/api/_generated/tags/types/tags_create_response.py +41 -0
  171. mirascope/api/_generated/tags/types/tags_get_response.py +41 -0
  172. mirascope/api/_generated/tags/types/tags_list_response.py +23 -0
  173. mirascope/api/_generated/tags/types/tags_list_response_tags_item.py +41 -0
  174. mirascope/api/_generated/tags/types/tags_update_response.py +41 -0
  175. mirascope/api/_generated/token_cost/__init__.py +7 -0
  176. mirascope/api/_generated/token_cost/client.py +160 -0
  177. mirascope/api/_generated/token_cost/raw_client.py +264 -0
  178. mirascope/api/_generated/token_cost/types/__init__.py +8 -0
  179. mirascope/api/_generated/token_cost/types/token_cost_calculate_request_usage.py +54 -0
  180. mirascope/api/_generated/token_cost/types/token_cost_calculate_response.py +52 -0
  181. mirascope/api/_generated/traces/__init__.py +97 -0
  182. mirascope/api/_generated/traces/client.py +1103 -0
  183. mirascope/api/_generated/traces/raw_client.py +2322 -0
  184. mirascope/api/_generated/traces/types/__init__.py +155 -0
  185. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item.py +29 -0
  186. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource.py +27 -0
  187. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item.py +23 -0
  188. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value.py +38 -0
  189. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_array_value.py +19 -0
  190. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_kvlist_value.py +22 -0
  191. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_kvlist_value_values_item.py +20 -0
  192. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item.py +29 -0
  193. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope.py +31 -0
  194. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item.py +23 -0
  195. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value.py +38 -0
  196. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value_array_value.py +19 -0
  197. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value_kvlist_value.py +22 -0
  198. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value_kvlist_value_values_item.py +22 -0
  199. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item.py +48 -0
  200. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item.py +23 -0
  201. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value.py +38 -0
  202. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value_array_value.py +19 -0
  203. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value_kvlist_value.py +24 -0
  204. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value_kvlist_value_values_item.py +22 -0
  205. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_status.py +20 -0
  206. mirascope/api/_generated/traces/types/traces_create_response.py +24 -0
  207. mirascope/api/_generated/traces/types/traces_create_response_partial_success.py +22 -0
  208. mirascope/api/_generated/traces/types/traces_get_analytics_summary_response.py +60 -0
  209. mirascope/api/_generated/traces/types/traces_get_analytics_summary_response_top_functions_item.py +24 -0
  210. mirascope/api/_generated/traces/types/traces_get_analytics_summary_response_top_models_item.py +22 -0
  211. mirascope/api/_generated/traces/types/traces_get_trace_detail_by_env_response.py +33 -0
  212. mirascope/api/_generated/traces/types/traces_get_trace_detail_by_env_response_spans_item.py +88 -0
  213. mirascope/api/_generated/traces/types/traces_get_trace_detail_response.py +33 -0
  214. mirascope/api/_generated/traces/types/traces_get_trace_detail_response_spans_item.py +88 -0
  215. mirascope/api/_generated/traces/types/traces_list_by_function_hash_response.py +25 -0
  216. mirascope/api/_generated/traces/types/traces_list_by_function_hash_response_traces_item.py +44 -0
  217. mirascope/api/_generated/traces/types/traces_search_by_env_request_attribute_filters_item.py +26 -0
  218. mirascope/api/_generated/traces/types/traces_search_by_env_request_attribute_filters_item_operator.py +7 -0
  219. mirascope/api/_generated/traces/types/traces_search_by_env_request_sort_by.py +7 -0
  220. mirascope/api/_generated/traces/types/traces_search_by_env_request_sort_order.py +7 -0
  221. mirascope/api/_generated/traces/types/traces_search_by_env_response.py +26 -0
  222. mirascope/api/_generated/traces/types/traces_search_by_env_response_spans_item.py +50 -0
  223. mirascope/api/_generated/traces/types/traces_search_request_attribute_filters_item.py +26 -0
  224. mirascope/api/_generated/traces/types/traces_search_request_attribute_filters_item_operator.py +7 -0
  225. mirascope/api/_generated/traces/types/traces_search_request_sort_by.py +7 -0
  226. mirascope/api/_generated/traces/types/traces_search_request_sort_order.py +5 -0
  227. mirascope/api/_generated/traces/types/traces_search_response.py +26 -0
  228. mirascope/api/_generated/traces/types/traces_search_response_spans_item.py +50 -0
  229. mirascope/api/_generated/types/__init__.py +85 -0
  230. mirascope/api/_generated/types/already_exists_error.py +22 -0
  231. mirascope/api/_generated/types/already_exists_error_tag.py +5 -0
  232. mirascope/api/_generated/types/bad_request_error_body.py +50 -0
  233. mirascope/api/_generated/types/click_house_error.py +22 -0
  234. mirascope/api/_generated/types/database_error.py +22 -0
  235. mirascope/api/_generated/types/database_error_tag.py +5 -0
  236. mirascope/api/_generated/types/date.py +3 -0
  237. mirascope/api/_generated/types/http_api_decode_error.py +27 -0
  238. mirascope/api/_generated/types/http_api_decode_error_tag.py +5 -0
  239. mirascope/api/_generated/types/immutable_resource_error.py +22 -0
  240. mirascope/api/_generated/types/internal_server_error_body.py +49 -0
  241. mirascope/api/_generated/types/issue.py +38 -0
  242. mirascope/api/_generated/types/issue_tag.py +10 -0
  243. mirascope/api/_generated/types/not_found_error_body.py +22 -0
  244. mirascope/api/_generated/types/not_found_error_tag.py +5 -0
  245. mirascope/api/_generated/types/number_from_string.py +3 -0
  246. mirascope/api/_generated/types/permission_denied_error.py +22 -0
  247. mirascope/api/_generated/types/permission_denied_error_tag.py +5 -0
  248. mirascope/api/_generated/types/plan_limit_exceeded_error.py +32 -0
  249. mirascope/api/_generated/types/plan_limit_exceeded_error_tag.py +7 -0
  250. mirascope/api/_generated/types/pricing_unavailable_error.py +23 -0
  251. mirascope/api/_generated/types/property_key.py +7 -0
  252. mirascope/api/_generated/types/property_key_key.py +25 -0
  253. mirascope/api/_generated/types/property_key_key_tag.py +5 -0
  254. mirascope/api/_generated/types/rate_limit_error.py +31 -0
  255. mirascope/api/_generated/types/rate_limit_error_tag.py +5 -0
  256. mirascope/api/_generated/types/service_unavailable_error_body.py +24 -0
  257. mirascope/api/_generated/types/service_unavailable_error_tag.py +7 -0
  258. mirascope/api/_generated/types/stripe_error.py +20 -0
  259. mirascope/api/_generated/types/subscription_past_due_error.py +31 -0
  260. mirascope/api/_generated/types/subscription_past_due_error_tag.py +7 -0
  261. mirascope/api/_generated/types/unauthorized_error_body.py +21 -0
  262. mirascope/api/_generated/types/unauthorized_error_tag.py +5 -0
  263. mirascope/api/client.py +255 -0
  264. mirascope/api/settings.py +99 -0
  265. mirascope/llm/__init__.py +290 -15
  266. mirascope/llm/calls/__init__.py +17 -0
  267. mirascope/llm/calls/calls.py +341 -0
  268. mirascope/llm/calls/decorator.py +275 -0
  269. mirascope/llm/content/__init__.py +71 -0
  270. mirascope/llm/content/audio.py +173 -0
  271. mirascope/llm/content/document.py +94 -0
  272. mirascope/llm/content/image.py +206 -0
  273. mirascope/llm/content/text.py +47 -0
  274. mirascope/llm/content/thought.py +58 -0
  275. mirascope/llm/content/tool_call.py +69 -0
  276. mirascope/llm/content/tool_output.py +43 -0
  277. mirascope/llm/context/__init__.py +6 -0
  278. mirascope/llm/context/_utils.py +41 -0
  279. mirascope/llm/context/context.py +24 -0
  280. mirascope/llm/exceptions.py +360 -0
  281. mirascope/llm/formatting/__init__.py +39 -0
  282. mirascope/llm/formatting/format.py +293 -0
  283. mirascope/llm/formatting/from_call_args.py +30 -0
  284. mirascope/llm/formatting/output_parser.py +178 -0
  285. mirascope/llm/formatting/partial.py +131 -0
  286. mirascope/llm/formatting/primitives.py +192 -0
  287. mirascope/llm/formatting/types.py +66 -0
  288. mirascope/llm/mcp/__init__.py +5 -0
  289. mirascope/llm/mcp/mcp_client.py +130 -0
  290. mirascope/llm/messages/__init__.py +35 -0
  291. mirascope/llm/messages/_utils.py +34 -0
  292. mirascope/llm/messages/message.py +190 -0
  293. mirascope/llm/models/__init__.py +21 -0
  294. mirascope/llm/models/models.py +1419 -0
  295. mirascope/llm/models/params.py +72 -0
  296. mirascope/llm/models/thinking_config.py +61 -0
  297. mirascope/llm/prompts/__init__.py +34 -0
  298. mirascope/llm/prompts/_utils.py +31 -0
  299. mirascope/llm/prompts/decorator.py +226 -0
  300. mirascope/llm/prompts/prompts.py +487 -0
  301. mirascope/llm/prompts/protocols.py +65 -0
  302. mirascope/llm/providers/__init__.py +62 -0
  303. mirascope/llm/providers/anthropic/__init__.py +11 -0
  304. mirascope/llm/providers/anthropic/_utils/__init__.py +27 -0
  305. mirascope/llm/providers/anthropic/_utils/beta_decode.py +282 -0
  306. mirascope/llm/providers/anthropic/_utils/beta_encode.py +266 -0
  307. mirascope/llm/providers/anthropic/_utils/decode.py +288 -0
  308. mirascope/llm/providers/anthropic/_utils/encode.py +418 -0
  309. mirascope/llm/providers/anthropic/_utils/errors.py +46 -0
  310. mirascope/llm/providers/anthropic/beta_provider.py +374 -0
  311. mirascope/llm/providers/anthropic/model_id.py +23 -0
  312. mirascope/llm/providers/anthropic/model_info.py +87 -0
  313. mirascope/llm/providers/anthropic/provider.py +479 -0
  314. mirascope/llm/providers/base/__init__.py +14 -0
  315. mirascope/llm/providers/base/_utils.py +253 -0
  316. mirascope/llm/providers/base/base_provider.py +1579 -0
  317. mirascope/llm/providers/base/kwargs.py +12 -0
  318. mirascope/llm/providers/google/__init__.py +6 -0
  319. mirascope/llm/providers/google/_utils/__init__.py +17 -0
  320. mirascope/llm/providers/google/_utils/decode.py +307 -0
  321. mirascope/llm/providers/google/_utils/encode.py +401 -0
  322. mirascope/llm/providers/google/_utils/errors.py +50 -0
  323. mirascope/llm/providers/google/message.py +7 -0
  324. mirascope/llm/providers/google/model_id.py +22 -0
  325. mirascope/llm/providers/google/model_info.py +63 -0
  326. mirascope/llm/providers/google/provider.py +492 -0
  327. mirascope/llm/providers/mirascope/__init__.py +5 -0
  328. mirascope/llm/providers/mirascope/_utils.py +73 -0
  329. mirascope/llm/providers/mirascope/provider.py +349 -0
  330. mirascope/llm/providers/mlx/__init__.py +9 -0
  331. mirascope/llm/providers/mlx/_utils.py +141 -0
  332. mirascope/llm/providers/mlx/encoding/__init__.py +8 -0
  333. mirascope/llm/providers/mlx/encoding/base.py +72 -0
  334. mirascope/llm/providers/mlx/encoding/transformers.py +150 -0
  335. mirascope/llm/providers/mlx/mlx.py +254 -0
  336. mirascope/llm/providers/mlx/model_id.py +17 -0
  337. mirascope/llm/providers/mlx/provider.py +452 -0
  338. mirascope/llm/providers/model_id.py +16 -0
  339. mirascope/llm/providers/ollama/__init__.py +7 -0
  340. mirascope/llm/providers/ollama/provider.py +71 -0
  341. mirascope/llm/providers/openai/__init__.py +15 -0
  342. mirascope/llm/providers/openai/_utils/__init__.py +5 -0
  343. mirascope/llm/providers/openai/_utils/errors.py +46 -0
  344. mirascope/llm/providers/openai/completions/__init__.py +7 -0
  345. mirascope/llm/providers/openai/completions/_utils/__init__.py +15 -0
  346. mirascope/llm/providers/openai/completions/_utils/decode.py +252 -0
  347. mirascope/llm/providers/openai/completions/_utils/encode.py +376 -0
  348. mirascope/llm/providers/openai/completions/base_provider.py +542 -0
  349. mirascope/llm/providers/openai/completions/provider.py +22 -0
  350. mirascope/llm/providers/openai/model_id.py +31 -0
  351. mirascope/llm/providers/openai/model_info.py +303 -0
  352. mirascope/llm/providers/openai/provider.py +441 -0
  353. mirascope/llm/providers/openai/responses/__init__.py +5 -0
  354. mirascope/llm/providers/openai/responses/_utils/__init__.py +15 -0
  355. mirascope/llm/providers/openai/responses/_utils/decode.py +260 -0
  356. mirascope/llm/providers/openai/responses/_utils/encode.py +384 -0
  357. mirascope/llm/providers/openai/responses/provider.py +513 -0
  358. mirascope/llm/providers/provider_id.py +24 -0
  359. mirascope/llm/providers/provider_registry.py +299 -0
  360. mirascope/llm/providers/together/__init__.py +7 -0
  361. mirascope/llm/providers/together/provider.py +40 -0
  362. mirascope/llm/responses/__init__.py +65 -0
  363. mirascope/llm/responses/_utils.py +146 -0
  364. mirascope/llm/responses/base_response.py +103 -0
  365. mirascope/llm/responses/base_stream_response.py +820 -0
  366. mirascope/llm/responses/finish_reason.py +28 -0
  367. mirascope/llm/responses/response.py +366 -0
  368. mirascope/llm/responses/root_response.py +248 -0
  369. mirascope/llm/responses/stream_response.py +581 -0
  370. mirascope/llm/responses/streams.py +363 -0
  371. mirascope/llm/responses/usage.py +95 -0
  372. mirascope/llm/tools/__init__.py +47 -0
  373. mirascope/llm/tools/_utils.py +34 -0
  374. mirascope/llm/tools/decorator.py +184 -0
  375. mirascope/llm/tools/protocols.py +96 -0
  376. mirascope/llm/tools/tool_schema.py +314 -0
  377. mirascope/llm/tools/toolkit.py +160 -0
  378. mirascope/llm/tools/tools.py +263 -0
  379. mirascope/llm/types/__init__.py +22 -0
  380. mirascope/llm/types/dataclass.py +9 -0
  381. mirascope/llm/types/jsonable.py +44 -0
  382. mirascope/llm/types/type_vars.py +19 -0
  383. mirascope/ops/__init__.py +111 -0
  384. mirascope/ops/_internal/__init__.py +5 -0
  385. mirascope/ops/_internal/closure.py +1169 -0
  386. mirascope/ops/_internal/configuration.py +177 -0
  387. mirascope/ops/_internal/context.py +76 -0
  388. mirascope/ops/_internal/exporters/__init__.py +26 -0
  389. mirascope/ops/_internal/exporters/exporters.py +395 -0
  390. mirascope/ops/_internal/exporters/processors.py +104 -0
  391. mirascope/ops/_internal/exporters/types.py +165 -0
  392. mirascope/ops/_internal/exporters/utils.py +29 -0
  393. mirascope/ops/_internal/instrumentation/__init__.py +8 -0
  394. mirascope/ops/_internal/instrumentation/llm/__init__.py +8 -0
  395. mirascope/ops/_internal/instrumentation/llm/common.py +530 -0
  396. mirascope/ops/_internal/instrumentation/llm/cost.py +190 -0
  397. mirascope/ops/_internal/instrumentation/llm/encode.py +238 -0
  398. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/__init__.py +38 -0
  399. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/gen_ai_input_messages.py +31 -0
  400. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/gen_ai_output_messages.py +38 -0
  401. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/gen_ai_system_instructions.py +18 -0
  402. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/shared.py +100 -0
  403. mirascope/ops/_internal/instrumentation/llm/llm.py +161 -0
  404. mirascope/ops/_internal/instrumentation/llm/model.py +1798 -0
  405. mirascope/ops/_internal/instrumentation/llm/response.py +521 -0
  406. mirascope/ops/_internal/instrumentation/llm/serialize.py +300 -0
  407. mirascope/ops/_internal/propagation.py +198 -0
  408. mirascope/ops/_internal/protocols.py +133 -0
  409. mirascope/ops/_internal/session.py +139 -0
  410. mirascope/ops/_internal/spans.py +232 -0
  411. mirascope/ops/_internal/traced_calls.py +375 -0
  412. mirascope/ops/_internal/traced_functions.py +523 -0
  413. mirascope/ops/_internal/tracing.py +353 -0
  414. mirascope/ops/_internal/types.py +13 -0
  415. mirascope/ops/_internal/utils.py +123 -0
  416. mirascope/ops/_internal/versioned_calls.py +512 -0
  417. mirascope/ops/_internal/versioned_functions.py +357 -0
  418. mirascope/ops/_internal/versioning.py +303 -0
  419. mirascope/ops/exceptions.py +21 -0
  420. mirascope-2.0.0.dist-info/METADATA +203 -0
  421. mirascope-2.0.0.dist-info/RECORD +423 -0
  422. {mirascope-1.25.6.dist-info → mirascope-2.0.0.dist-info}/WHEEL +1 -1
  423. {mirascope-1.25.6.dist-info → mirascope-2.0.0.dist-info}/licenses/LICENSE +1 -1
  424. mirascope/beta/__init__.py +0 -3
  425. mirascope/beta/openai/__init__.py +0 -17
  426. mirascope/beta/openai/realtime/__init__.py +0 -13
  427. mirascope/beta/openai/realtime/_utils/__init__.py +0 -3
  428. mirascope/beta/openai/realtime/_utils/_audio.py +0 -74
  429. mirascope/beta/openai/realtime/_utils/_protocols.py +0 -50
  430. mirascope/beta/openai/realtime/realtime.py +0 -500
  431. mirascope/beta/openai/realtime/recording.py +0 -98
  432. mirascope/beta/openai/realtime/tool.py +0 -113
  433. mirascope/beta/rag/__init__.py +0 -24
  434. mirascope/beta/rag/base/__init__.py +0 -22
  435. mirascope/beta/rag/base/chunkers/__init__.py +0 -2
  436. mirascope/beta/rag/base/chunkers/base_chunker.py +0 -37
  437. mirascope/beta/rag/base/chunkers/text_chunker.py +0 -33
  438. mirascope/beta/rag/base/config.py +0 -8
  439. mirascope/beta/rag/base/document.py +0 -11
  440. mirascope/beta/rag/base/embedders.py +0 -35
  441. mirascope/beta/rag/base/embedding_params.py +0 -18
  442. mirascope/beta/rag/base/embedding_response.py +0 -30
  443. mirascope/beta/rag/base/query_results.py +0 -7
  444. mirascope/beta/rag/base/vectorstore_params.py +0 -18
  445. mirascope/beta/rag/base/vectorstores.py +0 -37
  446. mirascope/beta/rag/chroma/__init__.py +0 -11
  447. mirascope/beta/rag/chroma/types.py +0 -62
  448. mirascope/beta/rag/chroma/vectorstores.py +0 -121
  449. mirascope/beta/rag/cohere/__init__.py +0 -11
  450. mirascope/beta/rag/cohere/embedders.py +0 -87
  451. mirascope/beta/rag/cohere/embedding_params.py +0 -29
  452. mirascope/beta/rag/cohere/embedding_response.py +0 -29
  453. mirascope/beta/rag/cohere/py.typed +0 -0
  454. mirascope/beta/rag/openai/__init__.py +0 -11
  455. mirascope/beta/rag/openai/embedders.py +0 -144
  456. mirascope/beta/rag/openai/embedding_params.py +0 -18
  457. mirascope/beta/rag/openai/embedding_response.py +0 -14
  458. mirascope/beta/rag/openai/py.typed +0 -0
  459. mirascope/beta/rag/pinecone/__init__.py +0 -19
  460. mirascope/beta/rag/pinecone/types.py +0 -143
  461. mirascope/beta/rag/pinecone/vectorstores.py +0 -148
  462. mirascope/beta/rag/weaviate/__init__.py +0 -6
  463. mirascope/beta/rag/weaviate/types.py +0 -92
  464. mirascope/beta/rag/weaviate/vectorstores.py +0 -103
  465. mirascope/core/__init__.py +0 -109
  466. mirascope/core/anthropic/__init__.py +0 -31
  467. mirascope/core/anthropic/_call.py +0 -67
  468. mirascope/core/anthropic/_call_kwargs.py +0 -13
  469. mirascope/core/anthropic/_thinking.py +0 -70
  470. mirascope/core/anthropic/_utils/__init__.py +0 -16
  471. mirascope/core/anthropic/_utils/_convert_common_call_params.py +0 -25
  472. mirascope/core/anthropic/_utils/_convert_finish_reason_to_common_finish_reasons.py +0 -21
  473. mirascope/core/anthropic/_utils/_convert_message_params.py +0 -102
  474. mirascope/core/anthropic/_utils/_get_json_output.py +0 -31
  475. mirascope/core/anthropic/_utils/_handle_stream.py +0 -113
  476. mirascope/core/anthropic/_utils/_message_param_converter.py +0 -142
  477. mirascope/core/anthropic/_utils/_setup_call.py +0 -146
  478. mirascope/core/anthropic/call_params.py +0 -44
  479. mirascope/core/anthropic/call_response.py +0 -226
  480. mirascope/core/anthropic/call_response_chunk.py +0 -152
  481. mirascope/core/anthropic/dynamic_config.py +0 -40
  482. mirascope/core/anthropic/py.typed +0 -0
  483. mirascope/core/anthropic/stream.py +0 -204
  484. mirascope/core/anthropic/tool.py +0 -101
  485. mirascope/core/azure/__init__.py +0 -31
  486. mirascope/core/azure/_call.py +0 -67
  487. mirascope/core/azure/_call_kwargs.py +0 -13
  488. mirascope/core/azure/_utils/__init__.py +0 -14
  489. mirascope/core/azure/_utils/_convert_common_call_params.py +0 -26
  490. mirascope/core/azure/_utils/_convert_finish_reason_to_common_finish_reasons.py +0 -21
  491. mirascope/core/azure/_utils/_convert_message_params.py +0 -121
  492. mirascope/core/azure/_utils/_get_credential.py +0 -33
  493. mirascope/core/azure/_utils/_get_json_output.py +0 -27
  494. mirascope/core/azure/_utils/_handle_stream.py +0 -130
  495. mirascope/core/azure/_utils/_message_param_converter.py +0 -117
  496. mirascope/core/azure/_utils/_setup_call.py +0 -183
  497. mirascope/core/azure/call_params.py +0 -59
  498. mirascope/core/azure/call_response.py +0 -215
  499. mirascope/core/azure/call_response_chunk.py +0 -105
  500. mirascope/core/azure/dynamic_config.py +0 -30
  501. mirascope/core/azure/py.typed +0 -0
  502. mirascope/core/azure/stream.py +0 -147
  503. mirascope/core/azure/tool.py +0 -93
  504. mirascope/core/base/__init__.py +0 -86
  505. mirascope/core/base/_call_factory.py +0 -256
  506. mirascope/core/base/_create.py +0 -253
  507. mirascope/core/base/_extract.py +0 -175
  508. mirascope/core/base/_extract_with_tools.py +0 -189
  509. mirascope/core/base/_partial.py +0 -95
  510. mirascope/core/base/_utils/__init__.py +0 -92
  511. mirascope/core/base/_utils/_base_message_param_converter.py +0 -22
  512. mirascope/core/base/_utils/_base_type.py +0 -26
  513. mirascope/core/base/_utils/_convert_base_model_to_base_tool.py +0 -48
  514. mirascope/core/base/_utils/_convert_base_type_to_base_tool.py +0 -24
  515. mirascope/core/base/_utils/_convert_function_to_base_tool.py +0 -139
  516. mirascope/core/base/_utils/_convert_messages_to_message_params.py +0 -178
  517. mirascope/core/base/_utils/_convert_provider_finish_reason_to_finish_reason.py +0 -20
  518. mirascope/core/base/_utils/_default_tool_docstring.py +0 -6
  519. mirascope/core/base/_utils/_extract_tool_return.py +0 -42
  520. mirascope/core/base/_utils/_fn_is_async.py +0 -24
  521. mirascope/core/base/_utils/_format_template.py +0 -32
  522. mirascope/core/base/_utils/_get_audio_type.py +0 -18
  523. mirascope/core/base/_utils/_get_common_usage.py +0 -20
  524. mirascope/core/base/_utils/_get_create_fn_or_async_create_fn.py +0 -137
  525. mirascope/core/base/_utils/_get_document_type.py +0 -7
  526. mirascope/core/base/_utils/_get_dynamic_configuration.py +0 -69
  527. mirascope/core/base/_utils/_get_fields_from_call_args.py +0 -34
  528. mirascope/core/base/_utils/_get_fn_args.py +0 -23
  529. mirascope/core/base/_utils/_get_image_dimensions.py +0 -39
  530. mirascope/core/base/_utils/_get_image_type.py +0 -26
  531. mirascope/core/base/_utils/_get_metadata.py +0 -17
  532. mirascope/core/base/_utils/_get_possible_user_message_param.py +0 -21
  533. mirascope/core/base/_utils/_get_prompt_template.py +0 -28
  534. mirascope/core/base/_utils/_get_template_values.py +0 -51
  535. mirascope/core/base/_utils/_get_template_variables.py +0 -38
  536. mirascope/core/base/_utils/_get_unsupported_tool_config_keys.py +0 -10
  537. mirascope/core/base/_utils/_is_prompt_template.py +0 -24
  538. mirascope/core/base/_utils/_json_mode_content.py +0 -17
  539. mirascope/core/base/_utils/_messages_decorator.py +0 -121
  540. mirascope/core/base/_utils/_parse_content_template.py +0 -323
  541. mirascope/core/base/_utils/_parse_prompt_messages.py +0 -63
  542. mirascope/core/base/_utils/_pil_image_to_bytes.py +0 -13
  543. mirascope/core/base/_utils/_protocols.py +0 -901
  544. mirascope/core/base/_utils/_setup_call.py +0 -79
  545. mirascope/core/base/_utils/_setup_extract_tool.py +0 -30
  546. mirascope/core/base/call_kwargs.py +0 -13
  547. mirascope/core/base/call_params.py +0 -36
  548. mirascope/core/base/call_response.py +0 -338
  549. mirascope/core/base/call_response_chunk.py +0 -130
  550. mirascope/core/base/dynamic_config.py +0 -82
  551. mirascope/core/base/from_call_args.py +0 -30
  552. mirascope/core/base/merge_decorators.py +0 -59
  553. mirascope/core/base/message_param.py +0 -175
  554. mirascope/core/base/messages.py +0 -116
  555. mirascope/core/base/metadata.py +0 -13
  556. mirascope/core/base/prompt.py +0 -497
  557. mirascope/core/base/response_model_config_dict.py +0 -9
  558. mirascope/core/base/stream.py +0 -479
  559. mirascope/core/base/stream_config.py +0 -11
  560. mirascope/core/base/structured_stream.py +0 -296
  561. mirascope/core/base/tool.py +0 -214
  562. mirascope/core/base/toolkit.py +0 -176
  563. mirascope/core/base/types.py +0 -344
  564. mirascope/core/bedrock/__init__.py +0 -34
  565. mirascope/core/bedrock/_call.py +0 -68
  566. mirascope/core/bedrock/_call_kwargs.py +0 -12
  567. mirascope/core/bedrock/_types.py +0 -104
  568. mirascope/core/bedrock/_utils/__init__.py +0 -14
  569. mirascope/core/bedrock/_utils/_convert_common_call_params.py +0 -39
  570. mirascope/core/bedrock/_utils/_convert_finish_reason_to_common_finish_reasons.py +0 -23
  571. mirascope/core/bedrock/_utils/_convert_message_params.py +0 -111
  572. mirascope/core/bedrock/_utils/_get_json_output.py +0 -30
  573. mirascope/core/bedrock/_utils/_handle_stream.py +0 -104
  574. mirascope/core/bedrock/_utils/_message_param_converter.py +0 -172
  575. mirascope/core/bedrock/_utils/_setup_call.py +0 -258
  576. mirascope/core/bedrock/call_params.py +0 -38
  577. mirascope/core/bedrock/call_response.py +0 -248
  578. mirascope/core/bedrock/call_response_chunk.py +0 -111
  579. mirascope/core/bedrock/dynamic_config.py +0 -37
  580. mirascope/core/bedrock/py.typed +0 -0
  581. mirascope/core/bedrock/stream.py +0 -154
  582. mirascope/core/bedrock/tool.py +0 -100
  583. mirascope/core/cohere/__init__.py +0 -30
  584. mirascope/core/cohere/_call.py +0 -67
  585. mirascope/core/cohere/_call_kwargs.py +0 -11
  586. mirascope/core/cohere/_types.py +0 -20
  587. mirascope/core/cohere/_utils/__init__.py +0 -14
  588. mirascope/core/cohere/_utils/_convert_common_call_params.py +0 -26
  589. mirascope/core/cohere/_utils/_convert_finish_reason_to_common_finish_reasons.py +0 -24
  590. mirascope/core/cohere/_utils/_convert_message_params.py +0 -32
  591. mirascope/core/cohere/_utils/_get_json_output.py +0 -30
  592. mirascope/core/cohere/_utils/_handle_stream.py +0 -35
  593. mirascope/core/cohere/_utils/_message_param_converter.py +0 -54
  594. mirascope/core/cohere/_utils/_setup_call.py +0 -150
  595. mirascope/core/cohere/call_params.py +0 -62
  596. mirascope/core/cohere/call_response.py +0 -205
  597. mirascope/core/cohere/call_response_chunk.py +0 -125
  598. mirascope/core/cohere/dynamic_config.py +0 -32
  599. mirascope/core/cohere/py.typed +0 -0
  600. mirascope/core/cohere/stream.py +0 -113
  601. mirascope/core/cohere/tool.py +0 -93
  602. mirascope/core/costs/__init__.py +0 -5
  603. mirascope/core/costs/_anthropic_calculate_cost.py +0 -219
  604. mirascope/core/costs/_azure_calculate_cost.py +0 -11
  605. mirascope/core/costs/_bedrock_calculate_cost.py +0 -15
  606. mirascope/core/costs/_cohere_calculate_cost.py +0 -44
  607. mirascope/core/costs/_gemini_calculate_cost.py +0 -67
  608. mirascope/core/costs/_google_calculate_cost.py +0 -427
  609. mirascope/core/costs/_groq_calculate_cost.py +0 -156
  610. mirascope/core/costs/_litellm_calculate_cost.py +0 -11
  611. mirascope/core/costs/_mistral_calculate_cost.py +0 -64
  612. mirascope/core/costs/_openai_calculate_cost.py +0 -416
  613. mirascope/core/costs/_vertex_calculate_cost.py +0 -67
  614. mirascope/core/costs/_xai_calculate_cost.py +0 -104
  615. mirascope/core/costs/calculate_cost.py +0 -86
  616. mirascope/core/gemini/__init__.py +0 -40
  617. mirascope/core/gemini/_call.py +0 -67
  618. mirascope/core/gemini/_call_kwargs.py +0 -12
  619. mirascope/core/gemini/_utils/__init__.py +0 -14
  620. mirascope/core/gemini/_utils/_convert_common_call_params.py +0 -39
  621. mirascope/core/gemini/_utils/_convert_finish_reason_to_common_finish_reasons.py +0 -23
  622. mirascope/core/gemini/_utils/_convert_message_params.py +0 -156
  623. mirascope/core/gemini/_utils/_get_json_output.py +0 -35
  624. mirascope/core/gemini/_utils/_handle_stream.py +0 -33
  625. mirascope/core/gemini/_utils/_message_param_converter.py +0 -209
  626. mirascope/core/gemini/_utils/_setup_call.py +0 -149
  627. mirascope/core/gemini/call_params.py +0 -52
  628. mirascope/core/gemini/call_response.py +0 -216
  629. mirascope/core/gemini/call_response_chunk.py +0 -100
  630. mirascope/core/gemini/dynamic_config.py +0 -26
  631. mirascope/core/gemini/stream.py +0 -120
  632. mirascope/core/gemini/tool.py +0 -104
  633. mirascope/core/google/__init__.py +0 -29
  634. mirascope/core/google/_call.py +0 -67
  635. mirascope/core/google/_call_kwargs.py +0 -13
  636. mirascope/core/google/_utils/__init__.py +0 -14
  637. mirascope/core/google/_utils/_convert_common_call_params.py +0 -38
  638. mirascope/core/google/_utils/_convert_finish_reason_to_common_finish_reasons.py +0 -27
  639. mirascope/core/google/_utils/_convert_message_params.py +0 -297
  640. mirascope/core/google/_utils/_get_json_output.py +0 -37
  641. mirascope/core/google/_utils/_handle_stream.py +0 -58
  642. mirascope/core/google/_utils/_message_param_converter.py +0 -200
  643. mirascope/core/google/_utils/_setup_call.py +0 -201
  644. mirascope/core/google/_utils/_validate_media_type.py +0 -58
  645. mirascope/core/google/call_params.py +0 -22
  646. mirascope/core/google/call_response.py +0 -255
  647. mirascope/core/google/call_response_chunk.py +0 -135
  648. mirascope/core/google/dynamic_config.py +0 -26
  649. mirascope/core/google/stream.py +0 -199
  650. mirascope/core/google/tool.py +0 -146
  651. mirascope/core/groq/__init__.py +0 -30
  652. mirascope/core/groq/_call.py +0 -67
  653. mirascope/core/groq/_call_kwargs.py +0 -13
  654. mirascope/core/groq/_utils/__init__.py +0 -14
  655. mirascope/core/groq/_utils/_convert_common_call_params.py +0 -26
  656. mirascope/core/groq/_utils/_convert_message_params.py +0 -112
  657. mirascope/core/groq/_utils/_get_json_output.py +0 -27
  658. mirascope/core/groq/_utils/_handle_stream.py +0 -123
  659. mirascope/core/groq/_utils/_message_param_converter.py +0 -89
  660. mirascope/core/groq/_utils/_setup_call.py +0 -132
  661. mirascope/core/groq/call_params.py +0 -52
  662. mirascope/core/groq/call_response.py +0 -213
  663. mirascope/core/groq/call_response_chunk.py +0 -104
  664. mirascope/core/groq/dynamic_config.py +0 -29
  665. mirascope/core/groq/py.typed +0 -0
  666. mirascope/core/groq/stream.py +0 -135
  667. mirascope/core/groq/tool.py +0 -80
  668. mirascope/core/litellm/__init__.py +0 -28
  669. mirascope/core/litellm/_call.py +0 -67
  670. mirascope/core/litellm/_utils/__init__.py +0 -5
  671. mirascope/core/litellm/_utils/_setup_call.py +0 -109
  672. mirascope/core/litellm/call_params.py +0 -10
  673. mirascope/core/litellm/call_response.py +0 -24
  674. mirascope/core/litellm/call_response_chunk.py +0 -14
  675. mirascope/core/litellm/dynamic_config.py +0 -8
  676. mirascope/core/litellm/py.typed +0 -0
  677. mirascope/core/litellm/stream.py +0 -86
  678. mirascope/core/litellm/tool.py +0 -13
  679. mirascope/core/mistral/__init__.py +0 -36
  680. mirascope/core/mistral/_call.py +0 -65
  681. mirascope/core/mistral/_call_kwargs.py +0 -19
  682. mirascope/core/mistral/_utils/__init__.py +0 -14
  683. mirascope/core/mistral/_utils/_convert_common_call_params.py +0 -24
  684. mirascope/core/mistral/_utils/_convert_finish_reason_to_common_finish_reasons.py +0 -22
  685. mirascope/core/mistral/_utils/_convert_message_params.py +0 -122
  686. mirascope/core/mistral/_utils/_get_json_output.py +0 -34
  687. mirascope/core/mistral/_utils/_handle_stream.py +0 -139
  688. mirascope/core/mistral/_utils/_message_param_converter.py +0 -176
  689. mirascope/core/mistral/_utils/_setup_call.py +0 -164
  690. mirascope/core/mistral/call_params.py +0 -36
  691. mirascope/core/mistral/call_response.py +0 -205
  692. mirascope/core/mistral/call_response_chunk.py +0 -105
  693. mirascope/core/mistral/dynamic_config.py +0 -33
  694. mirascope/core/mistral/py.typed +0 -0
  695. mirascope/core/mistral/stream.py +0 -120
  696. mirascope/core/mistral/tool.py +0 -81
  697. mirascope/core/openai/__init__.py +0 -31
  698. mirascope/core/openai/_call.py +0 -67
  699. mirascope/core/openai/_call_kwargs.py +0 -13
  700. mirascope/core/openai/_utils/__init__.py +0 -14
  701. mirascope/core/openai/_utils/_convert_common_call_params.py +0 -26
  702. mirascope/core/openai/_utils/_convert_message_params.py +0 -148
  703. mirascope/core/openai/_utils/_get_json_output.py +0 -31
  704. mirascope/core/openai/_utils/_handle_stream.py +0 -138
  705. mirascope/core/openai/_utils/_message_param_converter.py +0 -105
  706. mirascope/core/openai/_utils/_setup_call.py +0 -155
  707. mirascope/core/openai/call_params.py +0 -92
  708. mirascope/core/openai/call_response.py +0 -273
  709. mirascope/core/openai/call_response_chunk.py +0 -139
  710. mirascope/core/openai/dynamic_config.py +0 -34
  711. mirascope/core/openai/py.typed +0 -0
  712. mirascope/core/openai/stream.py +0 -185
  713. mirascope/core/openai/tool.py +0 -101
  714. mirascope/core/py.typed +0 -0
  715. mirascope/core/vertex/__init__.py +0 -45
  716. mirascope/core/vertex/_call.py +0 -62
  717. mirascope/core/vertex/_call_kwargs.py +0 -12
  718. mirascope/core/vertex/_utils/__init__.py +0 -14
  719. mirascope/core/vertex/_utils/_convert_common_call_params.py +0 -37
  720. mirascope/core/vertex/_utils/_convert_finish_reason_to_common_finish_reasons.py +0 -23
  721. mirascope/core/vertex/_utils/_convert_message_params.py +0 -171
  722. mirascope/core/vertex/_utils/_get_json_output.py +0 -36
  723. mirascope/core/vertex/_utils/_handle_stream.py +0 -33
  724. mirascope/core/vertex/_utils/_message_param_converter.py +0 -133
  725. mirascope/core/vertex/_utils/_setup_call.py +0 -160
  726. mirascope/core/vertex/call_params.py +0 -24
  727. mirascope/core/vertex/call_response.py +0 -206
  728. mirascope/core/vertex/call_response_chunk.py +0 -99
  729. mirascope/core/vertex/dynamic_config.py +0 -28
  730. mirascope/core/vertex/stream.py +0 -119
  731. mirascope/core/vertex/tool.py +0 -101
  732. mirascope/core/xai/__init__.py +0 -28
  733. mirascope/core/xai/_call.py +0 -67
  734. mirascope/core/xai/_utils/__init__.py +0 -5
  735. mirascope/core/xai/_utils/_setup_call.py +0 -113
  736. mirascope/core/xai/call_params.py +0 -10
  737. mirascope/core/xai/call_response.py +0 -16
  738. mirascope/core/xai/call_response_chunk.py +0 -14
  739. mirascope/core/xai/dynamic_config.py +0 -8
  740. mirascope/core/xai/py.typed +0 -0
  741. mirascope/core/xai/stream.py +0 -57
  742. mirascope/core/xai/tool.py +0 -13
  743. mirascope/experimental/graphs/__init__.py +0 -5
  744. mirascope/experimental/graphs/finite_state_machine.py +0 -714
  745. mirascope/integrations/__init__.py +0 -16
  746. mirascope/integrations/_middleware_factory.py +0 -403
  747. mirascope/integrations/langfuse/__init__.py +0 -3
  748. mirascope/integrations/langfuse/_utils.py +0 -114
  749. mirascope/integrations/langfuse/_with_langfuse.py +0 -70
  750. mirascope/integrations/logfire/__init__.py +0 -3
  751. mirascope/integrations/logfire/_utils.py +0 -225
  752. mirascope/integrations/logfire/_with_logfire.py +0 -63
  753. mirascope/integrations/otel/__init__.py +0 -10
  754. mirascope/integrations/otel/_utils.py +0 -270
  755. mirascope/integrations/otel/_with_hyperdx.py +0 -60
  756. mirascope/integrations/otel/_with_otel.py +0 -59
  757. mirascope/integrations/tenacity.py +0 -14
  758. mirascope/llm/_call.py +0 -401
  759. mirascope/llm/_context.py +0 -384
  760. mirascope/llm/_override.py +0 -3639
  761. mirascope/llm/_protocols.py +0 -500
  762. mirascope/llm/_response_metaclass.py +0 -31
  763. mirascope/llm/call_response.py +0 -158
  764. mirascope/llm/call_response_chunk.py +0 -66
  765. mirascope/llm/stream.py +0 -162
  766. mirascope/llm/tool.py +0 -64
  767. mirascope/mcp/__init__.py +0 -7
  768. mirascope/mcp/_utils.py +0 -288
  769. mirascope/mcp/client.py +0 -167
  770. mirascope/mcp/server.py +0 -356
  771. mirascope/mcp/tools.py +0 -110
  772. mirascope/py.typed +0 -0
  773. mirascope/retries/__init__.py +0 -11
  774. mirascope/retries/fallback.py +0 -131
  775. mirascope/retries/tenacity.py +0 -50
  776. mirascope/tools/__init__.py +0 -37
  777. mirascope/tools/base.py +0 -98
  778. mirascope/tools/system/__init__.py +0 -0
  779. mirascope/tools/system/_docker_operation.py +0 -166
  780. mirascope/tools/system/_file_system.py +0 -267
  781. mirascope/tools/web/__init__.py +0 -0
  782. mirascope/tools/web/_duckduckgo.py +0 -111
  783. mirascope/tools/web/_httpx.py +0 -125
  784. mirascope/tools/web/_parse_url_content.py +0 -94
  785. mirascope/tools/web/_requests.py +0 -54
  786. mirascope/v0/__init__.py +0 -43
  787. mirascope/v0/anthropic.py +0 -54
  788. mirascope/v0/base/__init__.py +0 -12
  789. mirascope/v0/base/calls.py +0 -118
  790. mirascope/v0/base/extractors.py +0 -122
  791. mirascope/v0/base/ops_utils.py +0 -207
  792. mirascope/v0/base/prompts.py +0 -48
  793. mirascope/v0/base/types.py +0 -14
  794. mirascope/v0/base/utils.py +0 -21
  795. mirascope/v0/openai.py +0 -54
  796. mirascope-1.25.6.dist-info/METADATA +0 -169
  797. mirascope-1.25.6.dist-info/RECORD +0 -378
@@ -1,427 +0,0 @@
1
- """Calculate the cost of a Gemini API call."""
2
-
3
- from ..base.types import CostMetadata
4
-
5
- # Standard Gemini API pricing table
6
- GEMINI_API_PRICING: dict[str, dict[str, float]] = {
7
- "gemini-2.0-pro": {
8
- "prompt_short": 0.000_001_25,
9
- "completion_short": 0.000_005,
10
- "prompt_long": 0.000_002_5,
11
- "completion_long": 0.000_01,
12
- "cached": 0.000_000_625,
13
- },
14
- "gemini-2.0-pro-preview-1206": {
15
- "prompt_short": 0.000_001_25,
16
- "completion_short": 0.000_005,
17
- "prompt_long": 0.000_002_5,
18
- "completion_long": 0.000_01,
19
- "cached": 0.000_000_625,
20
- },
21
- "gemini-2.0-flash": {
22
- "prompt_short": 0.000_000_10,
23
- "completion_short": 0.000_000_40,
24
- "prompt_long": 0.000_000_10,
25
- "completion_long": 0.000_000_40,
26
- "cached": 0.000_000_037_5,
27
- },
28
- "gemini-2.0-flash-latest": {
29
- "prompt_short": 0.000_000_10,
30
- "completion_short": 0.000_000_40,
31
- "prompt_long": 0.000_000_10,
32
- "completion_long": 0.000_000_40,
33
- "cached": 0.000_000_037_5,
34
- },
35
- "gemini-2.0-flash-001": {
36
- "prompt_short": 0.000_000_10,
37
- "completion_short": 0.000_000_40,
38
- "prompt_long": 0.000_000_10,
39
- "completion_long": 0.000_000_40,
40
- "cached": 0.000_000_037_5,
41
- },
42
- "gemini-2.0-flash-lite": {
43
- "prompt_short": 0.000_000_075,
44
- "completion_short": 0.000_000_30,
45
- "prompt_long": 0.000_000_075,
46
- "completion_long": 0.000_000_30,
47
- "cached": 0.000_000_037_5,
48
- },
49
- "gemini-2.0-flash-lite-preview-02-05": {
50
- "prompt_short": 0.000_000_075,
51
- "completion_short": 0.000_000_30,
52
- "prompt_long": 0.000_000_075,
53
- "completion_long": 0.000_000_30,
54
- "cached": 0.000_000_037_5,
55
- },
56
- "gemini-1.5-pro": {
57
- "prompt_short": 0.000_001_25,
58
- "completion_short": 0.000_005,
59
- "prompt_long": 0.000_002_5,
60
- "completion_long": 0.000_01,
61
- "cached": 0.000_000_625,
62
- },
63
- "gemini-1.5-pro-latest": {
64
- "prompt_short": 0.000_001_25,
65
- "completion_short": 0.000_005,
66
- "prompt_long": 0.000_002_5,
67
- "completion_long": 0.000_01,
68
- "cached": 0.000_000_625,
69
- },
70
- "gemini-1.5-pro-001": {
71
- "prompt_short": 0.000_001_25,
72
- "completion_short": 0.000_005,
73
- "prompt_long": 0.000_002_5,
74
- "completion_long": 0.000_01,
75
- "cached": 0.000_000_625,
76
- },
77
- "gemini-1.5-pro-002": {
78
- "prompt_short": 0.000_001_25,
79
- "completion_short": 0.000_005,
80
- "prompt_long": 0.000_002_5,
81
- "completion_long": 0.000_01,
82
- "cached": 0.000_000_625,
83
- },
84
- "gemini-1.5-flash": {
85
- "prompt_short": 0.000_000_075,
86
- "completion_short": 0.000_000_30,
87
- "prompt_long": 0.000_000_15,
88
- "completion_long": 0.000_000_60,
89
- "cached": 0.000_000_037_5,
90
- },
91
- "gemini-1.5-flash-latest": {
92
- "prompt_short": 0.000_000_075,
93
- "completion_short": 0.000_000_30,
94
- "prompt_long": 0.000_000_15,
95
- "completion_long": 0.000_000_60,
96
- "cached": 0.000_000_037_5,
97
- },
98
- "gemini-1.5-flash-001": {
99
- "prompt_short": 0.000_000_075,
100
- "completion_short": 0.000_000_30,
101
- "prompt_long": 0.000_000_15,
102
- "completion_long": 0.000_000_60,
103
- "cached": 0.000_000_037_5,
104
- },
105
- "gemini-1.5-flash-002": {
106
- "prompt_short": 0.000_000_075,
107
- "completion_short": 0.000_000_30,
108
- "prompt_long": 0.000_000_15,
109
- "completion_long": 0.000_000_60,
110
- "cached": 0.000_000_037_5,
111
- },
112
- "gemini-1.5-flash-8b": {
113
- "prompt_short": 0.000_000_037_5,
114
- "completion_short": 0.000_000_15,
115
- "prompt_long": 0.000_000_075,
116
- "completion_long": 0.000_000_30,
117
- "cached": 0.000_000_025,
118
- },
119
- "gemini-1.5-flash-8b-latest": {
120
- "prompt_short": 0.000_000_037_5,
121
- "completion_short": 0.000_000_15,
122
- "prompt_long": 0.000_000_075,
123
- "completion_long": 0.000_000_30,
124
- "cached": 0.000_000_025,
125
- },
126
- "gemini-1.5-flash-8b-001": {
127
- "prompt_short": 0.000_000_037_5,
128
- "completion_short": 0.000_000_15,
129
- "prompt_long": 0.000_000_075,
130
- "completion_long": 0.000_000_30,
131
- "cached": 0.000_000_025,
132
- },
133
- "gemini-1.5-flash-8b-002": {
134
- "prompt_short": 0.000_000_037_5,
135
- "completion_short": 0.000_000_15,
136
- "prompt_long": 0.000_000_075,
137
- "completion_long": 0.000_000_30,
138
- "cached": 0.000_000_025,
139
- },
140
- "gemini-1.0-pro": {
141
- "prompt_short": 0.000_000_5,
142
- "completion_short": 0.000_001_5,
143
- "prompt_long": 0.000_000_5,
144
- "completion_long": 0.000_001_5,
145
- "cached": 0.000_000,
146
- },
147
- }
148
-
149
- # Vertex AI pricing table
150
- VERTEX_AI_PRICING: dict[str, dict[str, float]] = {
151
- "gemini-2.0-flash": {
152
- "text_input": 0.000_000_15,
153
- "image_input": 0.000_000_15,
154
- "video_input": 0.000_000_15,
155
- "audio_input": 0.000_001_00,
156
- "output": 0.000_000_60,
157
- "cached": 0.000_000_037_5,
158
- "cache_storage_per_hour": 0.000_001_00,
159
- },
160
- "gemini-2.0-flash-lite": {
161
- "text_input": 0.000_000_075,
162
- "image_input": 0.000_000_075,
163
- "video_input": 0.000_000_075,
164
- "audio_input": 0.000_000_075,
165
- "output": 0.000_000_30,
166
- "cached": 0.000_000_037_5,
167
- "cache_storage_per_hour": 0.000_001_00,
168
- },
169
- # Vertex AI pricing for Gemini 1.5 models is based on modalities rather than tokens
170
- "gemini-1.5-flash": {
171
- "text_input": 0.000_000_075, # per 1K chars (approx. 250 tokens)
172
- "image_input": 0.000_02, # per image
173
- "video_input": 0.000_02, # per second
174
- "audio_input": 0.000_002, # per second
175
- "output": 0.000_000_30, # per 1K chars
176
- "cached_text": 0.000_000_046_875, # per 1K chars
177
- "cached_image": 0.000_005, # per image
178
- "cached_video": 0.000_005, # per second
179
- "cached_audio": 0.000_000_5, # per second
180
- "cache_storage_text": 0.000_25, # per 1K chars per hour
181
- "cache_storage_image": 0.000_263, # per image per hour
182
- "cache_storage_video": 0.000_263, # per second per hour
183
- "cache_storage_audio": 0.000_025, # per second per hour
184
- },
185
- "gemini-1.5-pro": {
186
- "text_input": 0.000_001_25, # per 1K chars (approx. 250 tokens)
187
- "image_input": 0.000_32875, # per image
188
- "video_input": 0.000_32875, # per second
189
- "audio_input": 0.000_03125, # per second
190
- "output": 0.000_005, # per 1K chars
191
- "cached_text": 0.000_000_078125, # per 1K chars
192
- "cached_image": 0.000_0821875, # per image
193
- "cached_video": 0.000_0821875, # per second
194
- "cached_audio": 0.000_0078125, # per second
195
- "cache_storage_text": 0.001125, # per 1K chars per hour
196
- "cache_storage_image": 0.0011835, # per image per hour
197
- "cache_storage_video": 0.0011835, # per second per hour
198
- "cache_storage_audio": 0.0001125, # per second per hour
199
- },
200
- }
201
-
202
-
203
- def _calculate_context_cache_cost(
204
- metadata: CostMetadata,
205
- model_pricing: dict[str, float],
206
- model: str,
207
- use_vertex_ai: bool = False,
208
- ) -> float:
209
- """Calculate cost for context caching."""
210
- if metadata.context_cache_tokens is None or metadata.context_cache_hours is None:
211
- return 0.0
212
-
213
- if use_vertex_ai:
214
- # Vertex AI pricing depends on the model family
215
- if model.startswith("gemini-2.0"):
216
- return (
217
- metadata.context_cache_tokens
218
- * model_pricing.get("cache_storage_per_hour", 0)
219
- * metadata.context_cache_hours
220
- )
221
- elif model.startswith("gemini-1.5"):
222
- # Convert cache tokens to characters (approx)
223
- cache_chars = metadata.context_cache_tokens * 4
224
- return (
225
- (cache_chars / 1000)
226
- * model_pricing["cache_storage_text"]
227
- * metadata.context_cache_hours
228
- )
229
-
230
- # Standard Gemini API pricing - storage cost per token-hour
231
- storage_rate_per_token = 0.000001 # $1.00 per million tokens per hour
232
- if "flash-8b" in model:
233
- storage_rate_per_token = 0.00000025 # $0.25 per million tokens for 8B models
234
-
235
- return (
236
- metadata.context_cache_tokens
237
- * storage_rate_per_token
238
- * metadata.context_cache_hours
239
- )
240
-
241
-
242
- def _calculate_grounding_cost(metadata: CostMetadata, model: str) -> float:
243
- """Calculate cost for grounding requests."""
244
- if metadata.google is None or metadata.google.grounding_requests is None:
245
- return 0.0
246
-
247
- # First 1,500 requests per day are free for Gemini 2.0 Flash models in Vertex AI
248
- if (
249
- model == "gemini-2.0-flash"
250
- and metadata.google.use_vertex_ai
251
- and metadata.google.grounding_requests <= 1500
252
- ):
253
- return 0.0
254
-
255
- # $35 per 1,000 requests for excess
256
- if metadata.google.use_vertex_ai and model == "gemini-2.0-flash":
257
- excess_requests = max(0, metadata.google.grounding_requests - 1500)
258
- else:
259
- excess_requests = metadata.google.grounding_requests
260
-
261
- return (excess_requests / 1000) * 35.0
262
-
263
-
264
- def _calculate_vertex_2_0_cost(
265
- metadata: CostMetadata, model_pricing: dict[str, float], model: str
266
- ) -> float:
267
- """Calculate cost for Vertex AI's Gemini 2.0 models."""
268
- # Text tokens cost
269
- prompt_cost = (metadata.input_tokens or 0) * model_pricing["text_input"]
270
- completion_cost = (metadata.output_tokens or 0) * model_pricing["output"]
271
- cached_cost = (metadata.cached_tokens or 0) * model_pricing.get("cached", 0)
272
-
273
- # Context cache costs
274
- context_cache_cost = _calculate_context_cache_cost(
275
- metadata, model_pricing, model, use_vertex_ai=True
276
- )
277
-
278
- # Grounding costs
279
- grounding_cost = _calculate_grounding_cost(metadata, model)
280
-
281
- # Apply batch mode discount (50% for Vertex AI)
282
- if metadata.batch_mode:
283
- prompt_cost *= 0.5
284
- completion_cost *= 0.5
285
- context_cache_cost *= 0.5
286
- # Note: We don't discount grounding costs
287
-
288
- total_cost = (
289
- prompt_cost
290
- + completion_cost
291
- + cached_cost
292
- + context_cache_cost
293
- + grounding_cost
294
- )
295
-
296
- return total_cost
297
-
298
-
299
- def _calculate_vertex_1_5_cost(
300
- metadata: CostMetadata, model_pricing: dict[str, float], model: str
301
- ) -> float:
302
- """Calculate cost for Vertex AI's Gemini 1.5 models."""
303
- # Text cost - convert tokens to characters (approx 4 chars per token)
304
- text_chars = (metadata.input_tokens or 0) * 4 # Approximation
305
- text_cost = (text_chars / 1000) * model_pricing["text_input"]
306
-
307
- # Output cost
308
- output_chars = (metadata.output_tokens or 0) * 4 # Approximation
309
- output_cost = (output_chars / 1000) * model_pricing["output"]
310
-
311
- # Context cache costs
312
- context_cache_cost = _calculate_context_cache_cost(
313
- metadata, model_pricing, model, use_vertex_ai=True
314
- )
315
-
316
- # Grounding costs
317
- grounding_cost = _calculate_grounding_cost(metadata, model)
318
-
319
- # Apply batch mode discount if applicable (50% off for Vertex AI)
320
- if metadata.batch_mode:
321
- text_cost *= 0.5
322
- output_cost *= 0.5
323
- context_cache_cost *= 0.5
324
- # Note: We don't discount grounding costs
325
-
326
- total_cost = text_cost + output_cost + context_cache_cost + grounding_cost
327
-
328
- return total_cost
329
-
330
-
331
- def _calculate_standard_gemini_cost(
332
- metadata: CostMetadata,
333
- model_pricing: dict[str, float],
334
- model: str,
335
- use_long_context: bool,
336
- ) -> float:
337
- """Calculate cost for standard Gemini API."""
338
- # Determine prices based on context length
339
- prompt_price = model_pricing["prompt_long" if use_long_context else "prompt_short"]
340
- cached_price = model_pricing["cached"]
341
- completion_price = model_pricing[
342
- "completion_long" if use_long_context else "completion_short"
343
- ]
344
-
345
- # Basic token costs
346
- prompt_cost = (metadata.input_tokens or 0) * prompt_price
347
- cached_cost = (metadata.cached_tokens or 0) * cached_price
348
- completion_cost = (metadata.output_tokens or 0) * completion_price
349
-
350
- # Media token costs is included in the prompt/completion cost
351
-
352
- # Context cache costs
353
- context_cache_cost = _calculate_context_cache_cost(
354
- metadata, model_pricing, model, use_vertex_ai=False
355
- )
356
-
357
- # Grounding costs - only applies to certain models
358
- grounding_cost = _calculate_grounding_cost(metadata, model)
359
-
360
- total_cost = (
361
- prompt_cost
362
- + cached_cost
363
- + completion_cost
364
- + context_cache_cost
365
- + grounding_cost
366
- )
367
-
368
- return total_cost
369
-
370
-
371
- def calculate_cost(
372
- metadata: CostMetadata,
373
- model: str,
374
- ) -> float | None:
375
- """Calculate the cost of a Google API call.
376
-
377
- This function supports both direct Gemini API and Vertex AI pricing.
378
- It handles different media types (text, image, video, audio) and special features
379
- like context caching and grounding.
380
-
381
- https://ai.google.dev/pricing
382
- https://cloud.google.com/vertex-ai/generative-ai/pricing
383
-
384
- Args:
385
- metadata: Additional metadata required for cost calculation
386
- model: Model name to use for pricing calculation
387
-
388
- Returns:
389
- Total cost in USD or None if invalid input
390
- """
391
- # Basic validation
392
- if metadata.input_tokens is None or metadata.output_tokens is None:
393
- return None
394
-
395
- # Initialize default values
396
- if metadata.cached_tokens is None:
397
- metadata.cached_tokens = 0
398
-
399
- # Check if we're using Vertex AI pricing
400
- use_vertex_ai = metadata.google and metadata.google.use_vertex_ai
401
-
402
- # Determine if we're using long context pricing
403
- use_long_context = (
404
- metadata.context_length is not None and metadata.context_length > 128_000
405
- ) or (metadata.input_tokens > 128_000)
406
-
407
- # Get the appropriate pricing table
408
- try:
409
- if use_vertex_ai and model in VERTEX_AI_PRICING:
410
- model_pricing = VERTEX_AI_PRICING[model]
411
- else:
412
- model_pricing = GEMINI_API_PRICING[model]
413
- except KeyError:
414
- # Unknown model
415
- return None
416
-
417
- # Calculate cost based on API type
418
- if use_vertex_ai:
419
- if model.startswith("gemini-2.0"):
420
- return _calculate_vertex_2_0_cost(metadata, model_pricing, model)
421
- elif model.startswith("gemini-1.5"): # pragma: no cover
422
- return _calculate_vertex_1_5_cost(metadata, model_pricing, model)
423
- else:
424
- # Standard Gemini API pricing
425
- return _calculate_standard_gemini_cost(
426
- metadata, model_pricing, model, use_long_context
427
- )
@@ -1,156 +0,0 @@
1
- """Calculate the cost of a completion using the Groq API."""
2
-
3
- from ..base.types import CostMetadata
4
-
5
-
6
- def calculate_cost(
7
- metadata: CostMetadata,
8
- model: str = "mixtral-8x7b-32768",
9
- ) -> float | None:
10
- """Calculate the cost of a completion using the Groq API.
11
-
12
- https://wow.groq.com/
13
-
14
- Model Input Output
15
- llama-3.3-70b-versatile $0.59 / 1M tokens $0.79 / 1M tokens
16
- llama-3.3-70b-specdec $0.59 / 1M tokens $0.99 / 1M tokens
17
- llama-3.1-8b-instant $0.05 / 1M tokens $0.08 / 1M tokens
18
- llama3-70b-8192 $0.59 / 1M tokens $0.79 / 1M tokens
19
- llama3-8b-8192 $0.05 / 1M tokens $0.08 / 1M tokens
20
- llama-guard-3-8b $0.20 / 1M tokens $0.20 / 1M tokens
21
- mixtral-8x7b-32768 $0.24 / 1M tokens $0.24 / 1M tokens
22
- gemma-7b-it $0.07 / 1M tokens $0.07 / 1M tokens
23
- gemma2-9b-it $0.20 / 1M tokens $0.20 / 1M tokens
24
- mistral-saba-24b $0.79 / 1M tokens $0.79 / 1M tokens
25
- qwen-2.5-32b $0.79 / 1M tokens $0.79 / 1M tokens
26
- qwen-2.5-coder-32b $0.79 / 1M tokens $0.79 / 1M tokens
27
- deepseek-r1-distill-qwen-32b $0.69 / 1M tokens $0.69 / 1M tokens
28
- deepseek-r1-distill-llama-70b $0.75 / 1M tokens $0.99 / 1M tokens
29
- deepseek-r1-distill-llama-70b-specdec $0.75 / 1M tokens $0.99 / 1M tokens
30
- llama-3.2-1b-preview $0.04 / 1M tokens $0.04 / 1M tokens
31
- llama-3.2-3b-preview $0.06 / 1M tokens $0.06 / 1M tokens
32
- llama-3.2-11b-vision-preview $0.18 / 1M tokens $0.18 / 1M tokens
33
- llama-3.2-90b-vision-preview $0.90 / 1M tokens $0.90 / 1M tokens
34
- """
35
- pricing = {
36
- "llama-3.3-70b-versatile": {
37
- "prompt": 0.000_000_59,
38
- "completion": 0.000_000_79,
39
- },
40
- "llama-3.3-70b-specdec": {
41
- "prompt": 0.000_000_59,
42
- "completion": 0.000_000_99,
43
- },
44
- "llama3-groq-70b-8192-tool-use-preview": {
45
- "prompt": 0.000_000_89,
46
- "completion": 0.000_000_89,
47
- },
48
- "llama3-groq-8b-8192-tool-use-preview": {
49
- "prompt": 0.000_000_19,
50
- "completion": 0.000_000_19,
51
- },
52
- "llama-3.1-8b-instant": {
53
- "prompt": 0.000_000_05,
54
- "completion": 0.000_000_08,
55
- },
56
- "llama-guard-3-8b": {
57
- "prompt": 0.000_000_2,
58
- "completion": 0.000_000_2,
59
- },
60
- "llama3-70b-8192": {
61
- "prompt": 0.000_000_59,
62
- "completion": 0.000_000_79,
63
- },
64
- "llama3-8b-8192": {
65
- "prompt": 0.000_000_05,
66
- "completion": 0.000_000_08,
67
- },
68
- "mixtral-8x7b-32768": {
69
- "prompt": 0.000_000_24,
70
- "completion": 0.000_000_24,
71
- },
72
- "gemma-7b-it": {
73
- "prompt": 0.000_000_07,
74
- "completion": 0.000_000_07,
75
- },
76
- "gemma2-9b-it": {
77
- "prompt": 0.000_000_2,
78
- "completion": 0.000_000_2,
79
- },
80
- "mistral-saba-24b": {
81
- "prompt": 0.000_000_79,
82
- "completion": 0.000_000_79,
83
- },
84
- "qwen-2.5-32b": {
85
- "prompt": 0.000_000_79,
86
- "completion": 0.000_000_79,
87
- },
88
- "qwen-2.5-coder-32b": {
89
- "prompt": 0.000_000_79,
90
- "completion": 0.000_000_79,
91
- },
92
- "deepseek-r1-distill-qwen-32b": {
93
- "prompt": 0.000_000_69,
94
- "completion": 0.000_000_69,
95
- },
96
- "deepseek-r1-distill-llama-70b": {
97
- "prompt": 0.000_000_75,
98
- "completion": 0.000_000_99,
99
- },
100
- "deepseek-r1-distill-llama-70b-specdec": {
101
- "prompt": 0.000_000_75,
102
- "completion": 0.000_000_99,
103
- },
104
- "llama-3.2-1b-preview": {
105
- "prompt": 0.000_000_04,
106
- "completion": 0.000_000_04,
107
- },
108
- "llama-3.2-3b-preview": {
109
- "prompt": 0.000_000_06,
110
- "completion": 0.000_000_06,
111
- },
112
- # Vision models
113
- "llama-3.2-11b-vision-preview": {
114
- "prompt": 0.000_000_18,
115
- "completion": 0.000_000_18,
116
- },
117
- "llama-3.2-90b-vision-preview": {
118
- "prompt": 0.000_000_90,
119
- "completion": 0.000_000_90,
120
- },
121
- }
122
-
123
- if metadata.input_tokens is None or metadata.output_tokens is None:
124
- return None
125
-
126
- try:
127
- model_pricing = pricing[model]
128
- except KeyError:
129
- return None
130
-
131
- # Calculate cost for text tokens
132
- prompt_cost = metadata.input_tokens * model_pricing["prompt"]
133
- completion_cost = metadata.output_tokens * model_pricing["completion"]
134
- total_cost = prompt_cost + completion_cost
135
-
136
- # Calculate cost for images if present
137
- # Groq bills 6,400 tokens per image for vision models
138
- # https://groq.com/pricing/
139
- image_cost = 0.0
140
- if metadata.images and "vision" in model:
141
- # For Groq vision models, each image is billed at 6,400 tokens
142
- tokens_per_image = 6400
143
-
144
- # Count the number of images
145
- image_count = len(metadata.images)
146
-
147
- # Calculate total image tokens
148
- total_image_tokens = image_count * tokens_per_image
149
-
150
- # Images are charged at the prompt token rate
151
- image_cost = total_image_tokens * model_pricing["prompt"]
152
-
153
- # Add image cost to total
154
- total_cost += image_cost
155
-
156
- return total_cost
@@ -1,11 +0,0 @@
1
- """Calculate the cost of a Litellm call."""
2
-
3
- from ..base.types import CostMetadata
4
-
5
-
6
- def calculate_cost(
7
- metadata: CostMetadata,
8
- model: str,
9
- ) -> float | None:
10
- """Calculate the cost of a Litellm call."""
11
- return metadata.cost
@@ -1,64 +0,0 @@
1
- """Calculate the cost of a completion using the Mistral API."""
2
-
3
- from ..base.types import CostMetadata
4
-
5
-
6
- def calculate_cost(
7
- metadata: CostMetadata,
8
- model: str = "open-mistral-7b",
9
- ) -> float | None:
10
- """Calculate the cost of a completion using the Mistral API.
11
-
12
- https://mistral.ai/technology/#pricing
13
-
14
- Model Input Cached Output
15
- mistral-large-latest $2/1M tokens $6/1M tokens
16
- pixtral-large-latest $2/1M tokens $6/1M tokens
17
- mistral-small-latest $0.1/1M tokens $0.3/1M tokens
18
- mistral-saba-latest $0.2/1M tokens $0.6/1M tokens
19
- codestral-latest $0.3/1M tokens $0.9/1M tokens
20
- ministral-8b-latest $0.1/1M tokens $0.1/1M tokens
21
- ministral-3b-latest $0.04/1M tokens $0.04/1M tokens
22
- mistral-embed $0.1/1M tokens -
23
- mistral-moderation-latest $0.1/1M tokens -
24
- open-mistral-nemo $0.3/1M tokens $0.3/1M tokens
25
- open-mistral-7b $0.25/1M tokens $0.25/1M tokens
26
- open-mixtral-8x7b $0.7/1M tokens $0.7/1M tokens
27
- open-mixtral-8x22b $2/1M tokens $6/1M tokens
28
- """
29
- pricing = {
30
- "mistral-large-latest": {"prompt": 0.000_002, "completion": 0.000_006},
31
- "pixtral-large-latest": {"prompt": 0.000_002, "completion": 0.000_006},
32
- "mistral-small-latest": {"prompt": 0.000_000_1, "completion": 0.000_000_3},
33
- "mistral-saba-latest": {"prompt": 0.000_000_2, "completion": 0.000_000_6},
34
- "codestral-latest": {"prompt": 0.000_000_3, "completion": 0.000_000_9},
35
- "ministral-8b-latest": {"prompt": 0.000_000_1, "completion": 0.000_000_1},
36
- "ministral-3b-latest": {"prompt": 0.000_000_04, "completion": 0.000_000_04},
37
- "mistral-embed": {"prompt": 0.000_000_1, "completion": 0},
38
- "mistral-moderation-latest": {"prompt": 0.000_000_1, "completion": 0},
39
- "open-mistral-nemo": {"prompt": 0.000_000_3, "completion": 0.000_000_3},
40
- "open-mistral-nemo-2407": {"prompt": 0.000_000_3, "completion": 0.000_000_3},
41
- "open-mistral-7b": {"prompt": 0.000_000_25, "completion": 0.000_000_25},
42
- "open-mixtral-8x7b": {"prompt": 0.000_000_7, "completion": 0.000_000_7},
43
- "open-mixtral-8x22b": {"prompt": 0.000_002, "completion": 0.000_006},
44
- "mistral-large-2407": {"prompt": 0.000_003, "completion": 0.000_009},
45
- "mistral-medium-latest": {"prompt": 0.000_002_75, "completion": 0.000_008_1},
46
- "pixtral-12b-2409": {"prompt": 0.000_002, "completion": 0.000_006},
47
- }
48
-
49
- if metadata.input_tokens is None or metadata.output_tokens is None:
50
- return None
51
-
52
- try:
53
- model_pricing = pricing[model]
54
- except KeyError:
55
- return None
56
-
57
- # Calculate cost for text tokens
58
- prompt_cost = metadata.input_tokens * model_pricing["prompt"]
59
- completion_cost = metadata.output_tokens * model_pricing["completion"]
60
- total_cost = prompt_cost + completion_cost
61
-
62
- # Image tokens is included in the cost
63
-
64
- return total_cost