PraisonAI 3.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 (393) hide show
  1. praisonai/__init__.py +54 -0
  2. praisonai/__main__.py +15 -0
  3. praisonai/acp/__init__.py +54 -0
  4. praisonai/acp/config.py +159 -0
  5. praisonai/acp/server.py +587 -0
  6. praisonai/acp/session.py +219 -0
  7. praisonai/adapters/__init__.py +50 -0
  8. praisonai/adapters/readers.py +395 -0
  9. praisonai/adapters/rerankers.py +315 -0
  10. praisonai/adapters/retrievers.py +394 -0
  11. praisonai/adapters/vector_stores.py +409 -0
  12. praisonai/agent_scheduler.py +337 -0
  13. praisonai/agents_generator.py +903 -0
  14. praisonai/api/call.py +292 -0
  15. praisonai/auto.py +1197 -0
  16. praisonai/capabilities/__init__.py +275 -0
  17. praisonai/capabilities/a2a.py +140 -0
  18. praisonai/capabilities/assistants.py +283 -0
  19. praisonai/capabilities/audio.py +320 -0
  20. praisonai/capabilities/batches.py +469 -0
  21. praisonai/capabilities/completions.py +336 -0
  22. praisonai/capabilities/container_files.py +155 -0
  23. praisonai/capabilities/containers.py +93 -0
  24. praisonai/capabilities/embeddings.py +158 -0
  25. praisonai/capabilities/files.py +467 -0
  26. praisonai/capabilities/fine_tuning.py +293 -0
  27. praisonai/capabilities/guardrails.py +182 -0
  28. praisonai/capabilities/images.py +330 -0
  29. praisonai/capabilities/mcp.py +190 -0
  30. praisonai/capabilities/messages.py +270 -0
  31. praisonai/capabilities/moderations.py +154 -0
  32. praisonai/capabilities/ocr.py +217 -0
  33. praisonai/capabilities/passthrough.py +204 -0
  34. praisonai/capabilities/rag.py +207 -0
  35. praisonai/capabilities/realtime.py +160 -0
  36. praisonai/capabilities/rerank.py +165 -0
  37. praisonai/capabilities/responses.py +266 -0
  38. praisonai/capabilities/search.py +109 -0
  39. praisonai/capabilities/skills.py +133 -0
  40. praisonai/capabilities/vector_store_files.py +334 -0
  41. praisonai/capabilities/vector_stores.py +304 -0
  42. praisonai/capabilities/videos.py +141 -0
  43. praisonai/chainlit_ui.py +304 -0
  44. praisonai/chat/__init__.py +106 -0
  45. praisonai/chat/app.py +125 -0
  46. praisonai/cli/__init__.py +26 -0
  47. praisonai/cli/app.py +213 -0
  48. praisonai/cli/commands/__init__.py +75 -0
  49. praisonai/cli/commands/acp.py +70 -0
  50. praisonai/cli/commands/completion.py +333 -0
  51. praisonai/cli/commands/config.py +166 -0
  52. praisonai/cli/commands/debug.py +142 -0
  53. praisonai/cli/commands/diag.py +55 -0
  54. praisonai/cli/commands/doctor.py +166 -0
  55. praisonai/cli/commands/environment.py +179 -0
  56. praisonai/cli/commands/lsp.py +112 -0
  57. praisonai/cli/commands/mcp.py +210 -0
  58. praisonai/cli/commands/profile.py +457 -0
  59. praisonai/cli/commands/run.py +228 -0
  60. praisonai/cli/commands/schedule.py +150 -0
  61. praisonai/cli/commands/serve.py +97 -0
  62. praisonai/cli/commands/session.py +212 -0
  63. praisonai/cli/commands/traces.py +145 -0
  64. praisonai/cli/commands/version.py +101 -0
  65. praisonai/cli/configuration/__init__.py +18 -0
  66. praisonai/cli/configuration/loader.py +353 -0
  67. praisonai/cli/configuration/paths.py +114 -0
  68. praisonai/cli/configuration/schema.py +164 -0
  69. praisonai/cli/features/__init__.py +268 -0
  70. praisonai/cli/features/acp.py +236 -0
  71. praisonai/cli/features/action_orchestrator.py +546 -0
  72. praisonai/cli/features/agent_scheduler.py +773 -0
  73. praisonai/cli/features/agent_tools.py +474 -0
  74. praisonai/cli/features/agents.py +375 -0
  75. praisonai/cli/features/at_mentions.py +471 -0
  76. praisonai/cli/features/auto_memory.py +182 -0
  77. praisonai/cli/features/autonomy_mode.py +490 -0
  78. praisonai/cli/features/background.py +356 -0
  79. praisonai/cli/features/base.py +168 -0
  80. praisonai/cli/features/capabilities.py +1326 -0
  81. praisonai/cli/features/checkpoints.py +338 -0
  82. praisonai/cli/features/code_intelligence.py +652 -0
  83. praisonai/cli/features/compaction.py +294 -0
  84. praisonai/cli/features/compare.py +534 -0
  85. praisonai/cli/features/cost_tracker.py +514 -0
  86. praisonai/cli/features/debug.py +810 -0
  87. praisonai/cli/features/deploy.py +517 -0
  88. praisonai/cli/features/diag.py +289 -0
  89. praisonai/cli/features/doctor/__init__.py +63 -0
  90. praisonai/cli/features/doctor/checks/__init__.py +24 -0
  91. praisonai/cli/features/doctor/checks/acp_checks.py +240 -0
  92. praisonai/cli/features/doctor/checks/config_checks.py +366 -0
  93. praisonai/cli/features/doctor/checks/db_checks.py +366 -0
  94. praisonai/cli/features/doctor/checks/env_checks.py +543 -0
  95. praisonai/cli/features/doctor/checks/lsp_checks.py +199 -0
  96. praisonai/cli/features/doctor/checks/mcp_checks.py +349 -0
  97. praisonai/cli/features/doctor/checks/memory_checks.py +268 -0
  98. praisonai/cli/features/doctor/checks/network_checks.py +251 -0
  99. praisonai/cli/features/doctor/checks/obs_checks.py +328 -0
  100. praisonai/cli/features/doctor/checks/performance_checks.py +235 -0
  101. praisonai/cli/features/doctor/checks/permissions_checks.py +259 -0
  102. praisonai/cli/features/doctor/checks/selftest_checks.py +322 -0
  103. praisonai/cli/features/doctor/checks/serve_checks.py +426 -0
  104. praisonai/cli/features/doctor/checks/skills_checks.py +231 -0
  105. praisonai/cli/features/doctor/checks/tools_checks.py +371 -0
  106. praisonai/cli/features/doctor/engine.py +266 -0
  107. praisonai/cli/features/doctor/formatters.py +310 -0
  108. praisonai/cli/features/doctor/handler.py +397 -0
  109. praisonai/cli/features/doctor/models.py +264 -0
  110. praisonai/cli/features/doctor/registry.py +239 -0
  111. praisonai/cli/features/endpoints.py +1019 -0
  112. praisonai/cli/features/eval.py +560 -0
  113. praisonai/cli/features/external_agents.py +231 -0
  114. praisonai/cli/features/fast_context.py +410 -0
  115. praisonai/cli/features/flow_display.py +566 -0
  116. praisonai/cli/features/git_integration.py +651 -0
  117. praisonai/cli/features/guardrail.py +171 -0
  118. praisonai/cli/features/handoff.py +185 -0
  119. praisonai/cli/features/hooks.py +583 -0
  120. praisonai/cli/features/image.py +384 -0
  121. praisonai/cli/features/interactive_runtime.py +585 -0
  122. praisonai/cli/features/interactive_tools.py +380 -0
  123. praisonai/cli/features/interactive_tui.py +603 -0
  124. praisonai/cli/features/jobs.py +632 -0
  125. praisonai/cli/features/knowledge.py +531 -0
  126. praisonai/cli/features/lite.py +244 -0
  127. praisonai/cli/features/lsp_cli.py +225 -0
  128. praisonai/cli/features/mcp.py +169 -0
  129. praisonai/cli/features/message_queue.py +587 -0
  130. praisonai/cli/features/metrics.py +211 -0
  131. praisonai/cli/features/n8n.py +673 -0
  132. praisonai/cli/features/observability.py +293 -0
  133. praisonai/cli/features/ollama.py +361 -0
  134. praisonai/cli/features/output_style.py +273 -0
  135. praisonai/cli/features/package.py +631 -0
  136. praisonai/cli/features/performance.py +308 -0
  137. praisonai/cli/features/persistence.py +636 -0
  138. praisonai/cli/features/profile.py +226 -0
  139. praisonai/cli/features/profiler/__init__.py +81 -0
  140. praisonai/cli/features/profiler/core.py +558 -0
  141. praisonai/cli/features/profiler/optimizations.py +652 -0
  142. praisonai/cli/features/profiler/suite.py +386 -0
  143. praisonai/cli/features/profiling.py +350 -0
  144. praisonai/cli/features/queue/__init__.py +73 -0
  145. praisonai/cli/features/queue/manager.py +395 -0
  146. praisonai/cli/features/queue/models.py +286 -0
  147. praisonai/cli/features/queue/persistence.py +564 -0
  148. praisonai/cli/features/queue/scheduler.py +484 -0
  149. praisonai/cli/features/queue/worker.py +372 -0
  150. praisonai/cli/features/recipe.py +1723 -0
  151. praisonai/cli/features/recipes.py +449 -0
  152. praisonai/cli/features/registry.py +229 -0
  153. praisonai/cli/features/repo_map.py +860 -0
  154. praisonai/cli/features/router.py +466 -0
  155. praisonai/cli/features/sandbox_executor.py +515 -0
  156. praisonai/cli/features/serve.py +829 -0
  157. praisonai/cli/features/session.py +222 -0
  158. praisonai/cli/features/skills.py +856 -0
  159. praisonai/cli/features/slash_commands.py +650 -0
  160. praisonai/cli/features/telemetry.py +179 -0
  161. praisonai/cli/features/templates.py +1384 -0
  162. praisonai/cli/features/thinking.py +305 -0
  163. praisonai/cli/features/todo.py +334 -0
  164. praisonai/cli/features/tools.py +680 -0
  165. praisonai/cli/features/tui/__init__.py +83 -0
  166. praisonai/cli/features/tui/app.py +580 -0
  167. praisonai/cli/features/tui/cli.py +566 -0
  168. praisonai/cli/features/tui/debug.py +511 -0
  169. praisonai/cli/features/tui/events.py +99 -0
  170. praisonai/cli/features/tui/mock_provider.py +328 -0
  171. praisonai/cli/features/tui/orchestrator.py +652 -0
  172. praisonai/cli/features/tui/screens/__init__.py +50 -0
  173. praisonai/cli/features/tui/screens/main.py +245 -0
  174. praisonai/cli/features/tui/screens/queue.py +174 -0
  175. praisonai/cli/features/tui/screens/session.py +124 -0
  176. praisonai/cli/features/tui/screens/settings.py +148 -0
  177. praisonai/cli/features/tui/widgets/__init__.py +56 -0
  178. praisonai/cli/features/tui/widgets/chat.py +261 -0
  179. praisonai/cli/features/tui/widgets/composer.py +224 -0
  180. praisonai/cli/features/tui/widgets/queue_panel.py +200 -0
  181. praisonai/cli/features/tui/widgets/status.py +167 -0
  182. praisonai/cli/features/tui/widgets/tool_panel.py +248 -0
  183. praisonai/cli/features/workflow.py +720 -0
  184. praisonai/cli/legacy.py +236 -0
  185. praisonai/cli/main.py +5559 -0
  186. praisonai/cli/schedule_cli.py +54 -0
  187. praisonai/cli/state/__init__.py +31 -0
  188. praisonai/cli/state/identifiers.py +161 -0
  189. praisonai/cli/state/sessions.py +313 -0
  190. praisonai/code/__init__.py +93 -0
  191. praisonai/code/agent_tools.py +344 -0
  192. praisonai/code/diff/__init__.py +21 -0
  193. praisonai/code/diff/diff_strategy.py +432 -0
  194. praisonai/code/tools/__init__.py +27 -0
  195. praisonai/code/tools/apply_diff.py +221 -0
  196. praisonai/code/tools/execute_command.py +275 -0
  197. praisonai/code/tools/list_files.py +274 -0
  198. praisonai/code/tools/read_file.py +206 -0
  199. praisonai/code/tools/search_replace.py +248 -0
  200. praisonai/code/tools/write_file.py +217 -0
  201. praisonai/code/utils/__init__.py +46 -0
  202. praisonai/code/utils/file_utils.py +307 -0
  203. praisonai/code/utils/ignore_utils.py +308 -0
  204. praisonai/code/utils/text_utils.py +276 -0
  205. praisonai/db/__init__.py +64 -0
  206. praisonai/db/adapter.py +531 -0
  207. praisonai/deploy/__init__.py +62 -0
  208. praisonai/deploy/api.py +231 -0
  209. praisonai/deploy/docker.py +454 -0
  210. praisonai/deploy/doctor.py +367 -0
  211. praisonai/deploy/main.py +327 -0
  212. praisonai/deploy/models.py +179 -0
  213. praisonai/deploy/providers/__init__.py +33 -0
  214. praisonai/deploy/providers/aws.py +331 -0
  215. praisonai/deploy/providers/azure.py +358 -0
  216. praisonai/deploy/providers/base.py +101 -0
  217. praisonai/deploy/providers/gcp.py +314 -0
  218. praisonai/deploy/schema.py +208 -0
  219. praisonai/deploy.py +185 -0
  220. praisonai/endpoints/__init__.py +53 -0
  221. praisonai/endpoints/a2u_server.py +410 -0
  222. praisonai/endpoints/discovery.py +165 -0
  223. praisonai/endpoints/providers/__init__.py +28 -0
  224. praisonai/endpoints/providers/a2a.py +253 -0
  225. praisonai/endpoints/providers/a2u.py +208 -0
  226. praisonai/endpoints/providers/agents_api.py +171 -0
  227. praisonai/endpoints/providers/base.py +231 -0
  228. praisonai/endpoints/providers/mcp.py +263 -0
  229. praisonai/endpoints/providers/recipe.py +206 -0
  230. praisonai/endpoints/providers/tools_mcp.py +150 -0
  231. praisonai/endpoints/registry.py +131 -0
  232. praisonai/endpoints/server.py +161 -0
  233. praisonai/inbuilt_tools/__init__.py +24 -0
  234. praisonai/inbuilt_tools/autogen_tools.py +117 -0
  235. praisonai/inc/__init__.py +2 -0
  236. praisonai/inc/config.py +96 -0
  237. praisonai/inc/models.py +155 -0
  238. praisonai/integrations/__init__.py +56 -0
  239. praisonai/integrations/base.py +303 -0
  240. praisonai/integrations/claude_code.py +270 -0
  241. praisonai/integrations/codex_cli.py +255 -0
  242. praisonai/integrations/cursor_cli.py +195 -0
  243. praisonai/integrations/gemini_cli.py +222 -0
  244. praisonai/jobs/__init__.py +67 -0
  245. praisonai/jobs/executor.py +425 -0
  246. praisonai/jobs/models.py +230 -0
  247. praisonai/jobs/router.py +314 -0
  248. praisonai/jobs/server.py +186 -0
  249. praisonai/jobs/store.py +203 -0
  250. praisonai/llm/__init__.py +66 -0
  251. praisonai/llm/registry.py +382 -0
  252. praisonai/mcp_server/__init__.py +152 -0
  253. praisonai/mcp_server/adapters/__init__.py +74 -0
  254. praisonai/mcp_server/adapters/agents.py +128 -0
  255. praisonai/mcp_server/adapters/capabilities.py +168 -0
  256. praisonai/mcp_server/adapters/cli_tools.py +568 -0
  257. praisonai/mcp_server/adapters/extended_capabilities.py +462 -0
  258. praisonai/mcp_server/adapters/knowledge.py +93 -0
  259. praisonai/mcp_server/adapters/memory.py +104 -0
  260. praisonai/mcp_server/adapters/prompts.py +306 -0
  261. praisonai/mcp_server/adapters/resources.py +124 -0
  262. praisonai/mcp_server/adapters/tools_bridge.py +280 -0
  263. praisonai/mcp_server/auth/__init__.py +48 -0
  264. praisonai/mcp_server/auth/api_key.py +291 -0
  265. praisonai/mcp_server/auth/oauth.py +460 -0
  266. praisonai/mcp_server/auth/oidc.py +289 -0
  267. praisonai/mcp_server/auth/scopes.py +260 -0
  268. praisonai/mcp_server/cli.py +852 -0
  269. praisonai/mcp_server/elicitation.py +445 -0
  270. praisonai/mcp_server/icons.py +302 -0
  271. praisonai/mcp_server/recipe_adapter.py +573 -0
  272. praisonai/mcp_server/recipe_cli.py +824 -0
  273. praisonai/mcp_server/registry.py +703 -0
  274. praisonai/mcp_server/sampling.py +422 -0
  275. praisonai/mcp_server/server.py +490 -0
  276. praisonai/mcp_server/tasks.py +443 -0
  277. praisonai/mcp_server/transports/__init__.py +18 -0
  278. praisonai/mcp_server/transports/http_stream.py +376 -0
  279. praisonai/mcp_server/transports/stdio.py +132 -0
  280. praisonai/persistence/__init__.py +84 -0
  281. praisonai/persistence/config.py +238 -0
  282. praisonai/persistence/conversation/__init__.py +25 -0
  283. praisonai/persistence/conversation/async_mysql.py +427 -0
  284. praisonai/persistence/conversation/async_postgres.py +410 -0
  285. praisonai/persistence/conversation/async_sqlite.py +371 -0
  286. praisonai/persistence/conversation/base.py +151 -0
  287. praisonai/persistence/conversation/json_store.py +250 -0
  288. praisonai/persistence/conversation/mysql.py +387 -0
  289. praisonai/persistence/conversation/postgres.py +401 -0
  290. praisonai/persistence/conversation/singlestore.py +240 -0
  291. praisonai/persistence/conversation/sqlite.py +341 -0
  292. praisonai/persistence/conversation/supabase.py +203 -0
  293. praisonai/persistence/conversation/surrealdb.py +287 -0
  294. praisonai/persistence/factory.py +301 -0
  295. praisonai/persistence/hooks/__init__.py +18 -0
  296. praisonai/persistence/hooks/agent_hooks.py +297 -0
  297. praisonai/persistence/knowledge/__init__.py +26 -0
  298. praisonai/persistence/knowledge/base.py +144 -0
  299. praisonai/persistence/knowledge/cassandra.py +232 -0
  300. praisonai/persistence/knowledge/chroma.py +295 -0
  301. praisonai/persistence/knowledge/clickhouse.py +242 -0
  302. praisonai/persistence/knowledge/cosmosdb_vector.py +438 -0
  303. praisonai/persistence/knowledge/couchbase.py +286 -0
  304. praisonai/persistence/knowledge/lancedb.py +216 -0
  305. praisonai/persistence/knowledge/langchain_adapter.py +291 -0
  306. praisonai/persistence/knowledge/lightrag_adapter.py +212 -0
  307. praisonai/persistence/knowledge/llamaindex_adapter.py +256 -0
  308. praisonai/persistence/knowledge/milvus.py +277 -0
  309. praisonai/persistence/knowledge/mongodb_vector.py +306 -0
  310. praisonai/persistence/knowledge/pgvector.py +335 -0
  311. praisonai/persistence/knowledge/pinecone.py +253 -0
  312. praisonai/persistence/knowledge/qdrant.py +301 -0
  313. praisonai/persistence/knowledge/redis_vector.py +291 -0
  314. praisonai/persistence/knowledge/singlestore_vector.py +299 -0
  315. praisonai/persistence/knowledge/surrealdb_vector.py +309 -0
  316. praisonai/persistence/knowledge/upstash_vector.py +266 -0
  317. praisonai/persistence/knowledge/weaviate.py +223 -0
  318. praisonai/persistence/migrations/__init__.py +10 -0
  319. praisonai/persistence/migrations/manager.py +251 -0
  320. praisonai/persistence/orchestrator.py +406 -0
  321. praisonai/persistence/state/__init__.py +21 -0
  322. praisonai/persistence/state/async_mongodb.py +200 -0
  323. praisonai/persistence/state/base.py +107 -0
  324. praisonai/persistence/state/dynamodb.py +226 -0
  325. praisonai/persistence/state/firestore.py +175 -0
  326. praisonai/persistence/state/gcs.py +155 -0
  327. praisonai/persistence/state/memory.py +245 -0
  328. praisonai/persistence/state/mongodb.py +158 -0
  329. praisonai/persistence/state/redis.py +190 -0
  330. praisonai/persistence/state/upstash.py +144 -0
  331. praisonai/persistence/tests/__init__.py +3 -0
  332. praisonai/persistence/tests/test_all_backends.py +633 -0
  333. praisonai/profiler.py +1214 -0
  334. praisonai/recipe/__init__.py +134 -0
  335. praisonai/recipe/bridge.py +278 -0
  336. praisonai/recipe/core.py +893 -0
  337. praisonai/recipe/exceptions.py +54 -0
  338. praisonai/recipe/history.py +402 -0
  339. praisonai/recipe/models.py +266 -0
  340. praisonai/recipe/operations.py +440 -0
  341. praisonai/recipe/policy.py +422 -0
  342. praisonai/recipe/registry.py +849 -0
  343. praisonai/recipe/runtime.py +214 -0
  344. praisonai/recipe/security.py +711 -0
  345. praisonai/recipe/serve.py +859 -0
  346. praisonai/recipe/server.py +613 -0
  347. praisonai/scheduler/__init__.py +45 -0
  348. praisonai/scheduler/agent_scheduler.py +552 -0
  349. praisonai/scheduler/base.py +124 -0
  350. praisonai/scheduler/daemon_manager.py +225 -0
  351. praisonai/scheduler/state_manager.py +155 -0
  352. praisonai/scheduler/yaml_loader.py +193 -0
  353. praisonai/scheduler.py +194 -0
  354. praisonai/setup/__init__.py +1 -0
  355. praisonai/setup/build.py +21 -0
  356. praisonai/setup/post_install.py +23 -0
  357. praisonai/setup/setup_conda_env.py +25 -0
  358. praisonai/setup.py +16 -0
  359. praisonai/templates/__init__.py +116 -0
  360. praisonai/templates/cache.py +364 -0
  361. praisonai/templates/dependency_checker.py +358 -0
  362. praisonai/templates/discovery.py +391 -0
  363. praisonai/templates/loader.py +564 -0
  364. praisonai/templates/registry.py +511 -0
  365. praisonai/templates/resolver.py +206 -0
  366. praisonai/templates/security.py +327 -0
  367. praisonai/templates/tool_override.py +498 -0
  368. praisonai/templates/tools_doctor.py +256 -0
  369. praisonai/test.py +105 -0
  370. praisonai/train.py +562 -0
  371. praisonai/train_vision.py +306 -0
  372. praisonai/ui/agents.py +824 -0
  373. praisonai/ui/callbacks.py +57 -0
  374. praisonai/ui/chainlit_compat.py +246 -0
  375. praisonai/ui/chat.py +532 -0
  376. praisonai/ui/code.py +717 -0
  377. praisonai/ui/colab.py +474 -0
  378. praisonai/ui/colab_chainlit.py +81 -0
  379. praisonai/ui/components/aicoder.py +284 -0
  380. praisonai/ui/context.py +283 -0
  381. praisonai/ui/database_config.py +56 -0
  382. praisonai/ui/db.py +294 -0
  383. praisonai/ui/realtime.py +488 -0
  384. praisonai/ui/realtimeclient/__init__.py +756 -0
  385. praisonai/ui/realtimeclient/tools.py +242 -0
  386. praisonai/ui/sql_alchemy.py +710 -0
  387. praisonai/upload_vision.py +140 -0
  388. praisonai/version.py +1 -0
  389. praisonai-3.0.0.dist-info/METADATA +3493 -0
  390. praisonai-3.0.0.dist-info/RECORD +393 -0
  391. praisonai-3.0.0.dist-info/WHEEL +5 -0
  392. praisonai-3.0.0.dist-info/entry_points.txt +4 -0
  393. praisonai-3.0.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,469 @@
1
+ """
2
+ Batches Capabilities Module
3
+
4
+ Provides batch processing functionality via LiteLLM.
5
+ """
6
+
7
+ from dataclasses import dataclass, field
8
+ from typing import Optional, Union, List, Any, Dict, Literal
9
+
10
+
11
+ @dataclass
12
+ class BatchResult:
13
+ """Result from batch operations."""
14
+ id: str
15
+ object: str = "batch"
16
+ endpoint: Optional[str] = None
17
+ status: Optional[str] = None
18
+ input_file_id: Optional[str] = None
19
+ output_file_id: Optional[str] = None
20
+ error_file_id: Optional[str] = None
21
+ created_at: Optional[int] = None
22
+ completed_at: Optional[int] = None
23
+ request_counts: Optional[Dict[str, int]] = None
24
+ metadata: Dict[str, Any] = field(default_factory=dict)
25
+
26
+
27
+ def batch_create(
28
+ input_file_id: str,
29
+ endpoint: Literal["/v1/chat/completions", "/v1/embeddings"] = "/v1/chat/completions",
30
+ completion_window: str = "24h",
31
+ custom_llm_provider: str = "openai",
32
+ timeout: float = 600.0,
33
+ api_key: Optional[str] = None,
34
+ api_base: Optional[str] = None,
35
+ batch_metadata: Optional[Dict[str, str]] = None,
36
+ **kwargs
37
+ ) -> BatchResult:
38
+ """
39
+ Create a batch processing job.
40
+
41
+ Args:
42
+ input_file_id: ID of the input file (from file_create with purpose="batch")
43
+ endpoint: The endpoint to use ("/v1/chat/completions" or "/v1/embeddings")
44
+ completion_window: Time window for completion ("24h")
45
+ custom_llm_provider: Provider ("openai", "azure")
46
+ timeout: Request timeout in seconds
47
+ api_key: Optional API key override
48
+ api_base: Optional API base URL override
49
+ batch_metadata: Optional metadata for the batch
50
+
51
+ Returns:
52
+ BatchResult with batch ID and status
53
+
54
+ Example:
55
+ >>> result = batch_create("file-abc123")
56
+ >>> print(result.id, result.status)
57
+ """
58
+ import litellm
59
+
60
+ call_kwargs = {
61
+ 'input_file_id': input_file_id,
62
+ 'endpoint': endpoint,
63
+ 'completion_window': completion_window,
64
+ 'custom_llm_provider': custom_llm_provider,
65
+ 'timeout': timeout,
66
+ }
67
+
68
+ if api_key:
69
+ call_kwargs['api_key'] = api_key
70
+ if api_base:
71
+ call_kwargs['api_base'] = api_base
72
+ if batch_metadata:
73
+ call_kwargs['metadata'] = batch_metadata
74
+
75
+ call_kwargs.update(kwargs)
76
+
77
+ response = litellm.create_batch(**call_kwargs)
78
+
79
+ request_counts = None
80
+ if hasattr(response, 'request_counts'):
81
+ request_counts = {
82
+ 'total': getattr(response.request_counts, 'total', 0),
83
+ 'completed': getattr(response.request_counts, 'completed', 0),
84
+ 'failed': getattr(response.request_counts, 'failed', 0),
85
+ }
86
+
87
+ return BatchResult(
88
+ id=getattr(response, 'id', ''),
89
+ object=getattr(response, 'object', 'batch'),
90
+ endpoint=getattr(response, 'endpoint', endpoint),
91
+ status=getattr(response, 'status', None),
92
+ input_file_id=getattr(response, 'input_file_id', input_file_id),
93
+ output_file_id=getattr(response, 'output_file_id', None),
94
+ error_file_id=getattr(response, 'error_file_id', None),
95
+ created_at=getattr(response, 'created_at', None),
96
+ completed_at=getattr(response, 'completed_at', None),
97
+ request_counts=request_counts,
98
+ metadata=batch_metadata or {},
99
+ )
100
+
101
+
102
+ async def abatch_create(
103
+ input_file_id: str,
104
+ endpoint: Literal["/v1/chat/completions", "/v1/embeddings"] = "/v1/chat/completions",
105
+ completion_window: str = "24h",
106
+ custom_llm_provider: str = "openai",
107
+ timeout: float = 600.0,
108
+ api_key: Optional[str] = None,
109
+ api_base: Optional[str] = None,
110
+ batch_metadata: Optional[Dict[str, str]] = None,
111
+ **kwargs
112
+ ) -> BatchResult:
113
+ """
114
+ Async: Create a batch processing job.
115
+
116
+ See batch_create() for full documentation.
117
+ """
118
+ import litellm
119
+
120
+ call_kwargs = {
121
+ 'input_file_id': input_file_id,
122
+ 'endpoint': endpoint,
123
+ 'completion_window': completion_window,
124
+ 'custom_llm_provider': custom_llm_provider,
125
+ 'timeout': timeout,
126
+ }
127
+
128
+ if api_key:
129
+ call_kwargs['api_key'] = api_key
130
+ if api_base:
131
+ call_kwargs['api_base'] = api_base
132
+ if batch_metadata:
133
+ call_kwargs['metadata'] = batch_metadata
134
+
135
+ call_kwargs.update(kwargs)
136
+
137
+ response = await litellm.acreate_batch(**call_kwargs)
138
+
139
+ request_counts = None
140
+ if hasattr(response, 'request_counts'):
141
+ request_counts = {
142
+ 'total': getattr(response.request_counts, 'total', 0),
143
+ 'completed': getattr(response.request_counts, 'completed', 0),
144
+ 'failed': getattr(response.request_counts, 'failed', 0),
145
+ }
146
+
147
+ return BatchResult(
148
+ id=getattr(response, 'id', ''),
149
+ object=getattr(response, 'object', 'batch'),
150
+ endpoint=getattr(response, 'endpoint', endpoint),
151
+ status=getattr(response, 'status', None),
152
+ input_file_id=getattr(response, 'input_file_id', input_file_id),
153
+ output_file_id=getattr(response, 'output_file_id', None),
154
+ error_file_id=getattr(response, 'error_file_id', None),
155
+ created_at=getattr(response, 'created_at', None),
156
+ completed_at=getattr(response, 'completed_at', None),
157
+ request_counts=request_counts,
158
+ metadata=batch_metadata or {},
159
+ )
160
+
161
+
162
+ def batch_retrieve(
163
+ batch_id: str,
164
+ custom_llm_provider: str = "openai",
165
+ api_key: Optional[str] = None,
166
+ api_base: Optional[str] = None,
167
+ **kwargs
168
+ ) -> BatchResult:
169
+ """
170
+ Retrieve a batch by ID.
171
+
172
+ Args:
173
+ batch_id: The batch ID
174
+ custom_llm_provider: Provider
175
+ api_key: Optional API key override
176
+ api_base: Optional API base URL override
177
+
178
+ Returns:
179
+ BatchResult with batch status
180
+ """
181
+ import litellm
182
+
183
+ call_kwargs = {
184
+ 'batch_id': batch_id,
185
+ 'custom_llm_provider': custom_llm_provider,
186
+ }
187
+
188
+ if api_key:
189
+ call_kwargs['api_key'] = api_key
190
+ if api_base:
191
+ call_kwargs['api_base'] = api_base
192
+
193
+ call_kwargs.update(kwargs)
194
+
195
+ response = litellm.retrieve_batch(**call_kwargs)
196
+
197
+ request_counts = None
198
+ if hasattr(response, 'request_counts'):
199
+ request_counts = {
200
+ 'total': getattr(response.request_counts, 'total', 0),
201
+ 'completed': getattr(response.request_counts, 'completed', 0),
202
+ 'failed': getattr(response.request_counts, 'failed', 0),
203
+ }
204
+
205
+ return BatchResult(
206
+ id=getattr(response, 'id', batch_id),
207
+ object=getattr(response, 'object', 'batch'),
208
+ endpoint=getattr(response, 'endpoint', None),
209
+ status=getattr(response, 'status', None),
210
+ input_file_id=getattr(response, 'input_file_id', None),
211
+ output_file_id=getattr(response, 'output_file_id', None),
212
+ error_file_id=getattr(response, 'error_file_id', None),
213
+ created_at=getattr(response, 'created_at', None),
214
+ completed_at=getattr(response, 'completed_at', None),
215
+ request_counts=request_counts,
216
+ )
217
+
218
+
219
+ async def abatch_retrieve(
220
+ batch_id: str,
221
+ custom_llm_provider: str = "openai",
222
+ api_key: Optional[str] = None,
223
+ api_base: Optional[str] = None,
224
+ **kwargs
225
+ ) -> BatchResult:
226
+ """
227
+ Async: Retrieve a batch by ID.
228
+
229
+ See batch_retrieve() for full documentation.
230
+ """
231
+ import litellm
232
+
233
+ call_kwargs = {
234
+ 'batch_id': batch_id,
235
+ 'custom_llm_provider': custom_llm_provider,
236
+ }
237
+
238
+ if api_key:
239
+ call_kwargs['api_key'] = api_key
240
+ if api_base:
241
+ call_kwargs['api_base'] = api_base
242
+
243
+ call_kwargs.update(kwargs)
244
+
245
+ response = await litellm.aretrieve_batch(**call_kwargs)
246
+
247
+ request_counts = None
248
+ if hasattr(response, 'request_counts'):
249
+ request_counts = {
250
+ 'total': getattr(response.request_counts, 'total', 0),
251
+ 'completed': getattr(response.request_counts, 'completed', 0),
252
+ 'failed': getattr(response.request_counts, 'failed', 0),
253
+ }
254
+
255
+ return BatchResult(
256
+ id=getattr(response, 'id', batch_id),
257
+ object=getattr(response, 'object', 'batch'),
258
+ endpoint=getattr(response, 'endpoint', None),
259
+ status=getattr(response, 'status', None),
260
+ input_file_id=getattr(response, 'input_file_id', None),
261
+ output_file_id=getattr(response, 'output_file_id', None),
262
+ error_file_id=getattr(response, 'error_file_id', None),
263
+ created_at=getattr(response, 'created_at', None),
264
+ completed_at=getattr(response, 'completed_at', None),
265
+ request_counts=request_counts,
266
+ )
267
+
268
+
269
+ def batch_list(
270
+ custom_llm_provider: str = "openai",
271
+ after: Optional[str] = None,
272
+ limit: int = 20,
273
+ api_key: Optional[str] = None,
274
+ api_base: Optional[str] = None,
275
+ **kwargs
276
+ ) -> List[BatchResult]:
277
+ """
278
+ List batches.
279
+
280
+ Args:
281
+ custom_llm_provider: Provider
282
+ after: Cursor for pagination
283
+ limit: Maximum number of batches to return
284
+ api_key: Optional API key override
285
+ api_base: Optional API base URL override
286
+
287
+ Returns:
288
+ List of BatchResult objects
289
+ """
290
+ import litellm
291
+
292
+ call_kwargs = {
293
+ 'custom_llm_provider': custom_llm_provider,
294
+ 'limit': limit,
295
+ }
296
+
297
+ if after:
298
+ call_kwargs['after'] = after
299
+ if api_key:
300
+ call_kwargs['api_key'] = api_key
301
+ if api_base:
302
+ call_kwargs['api_base'] = api_base
303
+
304
+ call_kwargs.update(kwargs)
305
+
306
+ response = litellm.list_batches(**call_kwargs)
307
+
308
+ results = []
309
+ data = getattr(response, 'data', response) if hasattr(response, 'data') else response
310
+ if isinstance(data, list):
311
+ for item in data:
312
+ request_counts = None
313
+ if hasattr(item, 'request_counts'):
314
+ request_counts = {
315
+ 'total': getattr(item.request_counts, 'total', 0),
316
+ 'completed': getattr(item.request_counts, 'completed', 0),
317
+ 'failed': getattr(item.request_counts, 'failed', 0),
318
+ }
319
+
320
+ results.append(BatchResult(
321
+ id=getattr(item, 'id', ''),
322
+ object=getattr(item, 'object', 'batch'),
323
+ endpoint=getattr(item, 'endpoint', None),
324
+ status=getattr(item, 'status', None),
325
+ input_file_id=getattr(item, 'input_file_id', None),
326
+ output_file_id=getattr(item, 'output_file_id', None),
327
+ error_file_id=getattr(item, 'error_file_id', None),
328
+ created_at=getattr(item, 'created_at', None),
329
+ completed_at=getattr(item, 'completed_at', None),
330
+ request_counts=request_counts,
331
+ ))
332
+
333
+ return results
334
+
335
+
336
+ async def abatch_list(
337
+ custom_llm_provider: str = "openai",
338
+ after: Optional[str] = None,
339
+ limit: int = 20,
340
+ api_key: Optional[str] = None,
341
+ api_base: Optional[str] = None,
342
+ **kwargs
343
+ ) -> List[BatchResult]:
344
+ """
345
+ Async: List batches.
346
+
347
+ See batch_list() for full documentation.
348
+ """
349
+ import litellm
350
+
351
+ call_kwargs = {
352
+ 'custom_llm_provider': custom_llm_provider,
353
+ 'limit': limit,
354
+ }
355
+
356
+ if after:
357
+ call_kwargs['after'] = after
358
+ if api_key:
359
+ call_kwargs['api_key'] = api_key
360
+ if api_base:
361
+ call_kwargs['api_base'] = api_base
362
+
363
+ call_kwargs.update(kwargs)
364
+
365
+ response = await litellm.alist_batches(**call_kwargs)
366
+
367
+ results = []
368
+ data = getattr(response, 'data', response) if hasattr(response, 'data') else response
369
+ if isinstance(data, list):
370
+ for item in data:
371
+ request_counts = None
372
+ if hasattr(item, 'request_counts'):
373
+ request_counts = {
374
+ 'total': getattr(item.request_counts, 'total', 0),
375
+ 'completed': getattr(item.request_counts, 'completed', 0),
376
+ 'failed': getattr(item.request_counts, 'failed', 0),
377
+ }
378
+
379
+ results.append(BatchResult(
380
+ id=getattr(item, 'id', ''),
381
+ object=getattr(item, 'object', 'batch'),
382
+ endpoint=getattr(item, 'endpoint', None),
383
+ status=getattr(item, 'status', None),
384
+ input_file_id=getattr(item, 'input_file_id', None),
385
+ output_file_id=getattr(item, 'output_file_id', None),
386
+ error_file_id=getattr(item, 'error_file_id', None),
387
+ created_at=getattr(item, 'created_at', None),
388
+ completed_at=getattr(item, 'completed_at', None),
389
+ request_counts=request_counts,
390
+ ))
391
+
392
+ return results
393
+
394
+
395
+ def batch_cancel(
396
+ batch_id: str,
397
+ custom_llm_provider: str = "openai",
398
+ api_key: Optional[str] = None,
399
+ api_base: Optional[str] = None,
400
+ **kwargs
401
+ ) -> BatchResult:
402
+ """
403
+ Cancel a batch.
404
+
405
+ Args:
406
+ batch_id: The batch ID
407
+ custom_llm_provider: Provider
408
+ api_key: Optional API key override
409
+ api_base: Optional API base URL override
410
+
411
+ Returns:
412
+ BatchResult with updated status
413
+ """
414
+ import litellm
415
+
416
+ call_kwargs = {
417
+ 'batch_id': batch_id,
418
+ 'custom_llm_provider': custom_llm_provider,
419
+ }
420
+
421
+ if api_key:
422
+ call_kwargs['api_key'] = api_key
423
+ if api_base:
424
+ call_kwargs['api_base'] = api_base
425
+
426
+ call_kwargs.update(kwargs)
427
+
428
+ response = litellm.cancel_batch(**call_kwargs)
429
+
430
+ return BatchResult(
431
+ id=getattr(response, 'id', batch_id),
432
+ object=getattr(response, 'object', 'batch'),
433
+ status=getattr(response, 'status', 'cancelling'),
434
+ )
435
+
436
+
437
+ async def abatch_cancel(
438
+ batch_id: str,
439
+ custom_llm_provider: str = "openai",
440
+ api_key: Optional[str] = None,
441
+ api_base: Optional[str] = None,
442
+ **kwargs
443
+ ) -> BatchResult:
444
+ """
445
+ Async: Cancel a batch.
446
+
447
+ See batch_cancel() for full documentation.
448
+ """
449
+ import litellm
450
+
451
+ call_kwargs = {
452
+ 'batch_id': batch_id,
453
+ 'custom_llm_provider': custom_llm_provider,
454
+ }
455
+
456
+ if api_key:
457
+ call_kwargs['api_key'] = api_key
458
+ if api_base:
459
+ call_kwargs['api_base'] = api_base
460
+
461
+ call_kwargs.update(kwargs)
462
+
463
+ response = await litellm.acancel_batch(**call_kwargs)
464
+
465
+ return BatchResult(
466
+ id=getattr(response, 'id', batch_id),
467
+ object=getattr(response, 'object', 'batch'),
468
+ status=getattr(response, 'status', 'cancelling'),
469
+ )