camel-ai 0.2.65__py3-none-any.whl → 0.2.82__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.

Potentially problematic release.


This version of camel-ai might be problematic. Click here for more details.

Files changed (505) hide show
  1. camel/__init__.py +3 -3
  2. camel/agents/__init__.py +2 -2
  3. camel/agents/_types.py +9 -4
  4. camel/agents/_utils.py +40 -2
  5. camel/agents/base.py +2 -2
  6. camel/agents/chat_agent.py +4835 -947
  7. camel/agents/critic_agent.py +2 -2
  8. camel/agents/deductive_reasoner_agent.py +56 -56
  9. camel/agents/embodied_agent.py +2 -2
  10. camel/agents/knowledge_graph_agent.py +20 -20
  11. camel/agents/mcp_agent.py +35 -36
  12. camel/agents/multi_hop_generator_agent.py +3 -3
  13. camel/agents/programmed_agent_instruction.py +2 -2
  14. camel/agents/repo_agent.py +4 -3
  15. camel/agents/role_assignment_agent.py +2 -2
  16. camel/agents/search_agent.py +2 -2
  17. camel/agents/task_agent.py +2 -2
  18. camel/agents/tool_agents/__init__.py +2 -2
  19. camel/agents/tool_agents/base.py +2 -2
  20. camel/agents/tool_agents/hugging_face_tool_agent.py +3 -3
  21. camel/benchmarks/__init__.py +2 -2
  22. camel/benchmarks/apibank.py +5 -5
  23. camel/benchmarks/apibench.py +2 -2
  24. camel/benchmarks/base.py +2 -2
  25. camel/benchmarks/browsecomp.py +44 -33
  26. camel/benchmarks/gaia.py +17 -13
  27. camel/benchmarks/mock_website/README.md +1 -3
  28. camel/benchmarks/mock_website/mock_web.py +2 -2
  29. camel/benchmarks/mock_website/requirements.txt +1 -1
  30. camel/benchmarks/mock_website/shopping_mall/app.py +2 -2
  31. camel/benchmarks/mock_website/task.json +1 -1
  32. camel/benchmarks/nexus.py +3 -3
  33. camel/benchmarks/ragbench.py +2 -2
  34. camel/bots/__init__.py +2 -2
  35. camel/bots/discord/__init__.py +2 -2
  36. camel/bots/discord/discord_app.py +2 -2
  37. camel/bots/discord/discord_installation.py +2 -2
  38. camel/bots/discord/discord_store.py +3 -3
  39. camel/bots/slack/__init__.py +2 -2
  40. camel/bots/slack/models.py +4 -4
  41. camel/bots/slack/slack_app.py +2 -2
  42. camel/bots/telegram_bot.py +2 -2
  43. camel/configs/__init__.py +23 -2
  44. camel/configs/aihubmix_config.py +90 -0
  45. camel/configs/aiml_config.py +2 -2
  46. camel/configs/amd_config.py +70 -0
  47. camel/configs/anthropic_config.py +2 -2
  48. camel/configs/base_config.py +2 -2
  49. camel/configs/bedrock_config.py +5 -3
  50. camel/configs/cerebras_config.py +98 -0
  51. camel/configs/cohere_config.py +2 -2
  52. camel/configs/cometapi_config.py +106 -0
  53. camel/configs/crynux_config.py +2 -2
  54. camel/configs/deepseek_config.py +9 -8
  55. camel/configs/gemini_config.py +6 -4
  56. camel/configs/groq_config.py +6 -4
  57. camel/configs/internlm_config.py +6 -4
  58. camel/configs/litellm_config.py +2 -2
  59. camel/configs/lmstudio_config.py +6 -4
  60. camel/configs/minimax_config.py +95 -0
  61. camel/configs/mistral_config.py +2 -2
  62. camel/configs/modelscope_config.py +5 -3
  63. camel/configs/moonshot_config.py +2 -2
  64. camel/configs/nebius_config.py +105 -0
  65. camel/configs/netmind_config.py +2 -2
  66. camel/configs/novita_config.py +2 -2
  67. camel/configs/nvidia_config.py +2 -2
  68. camel/configs/ollama_config.py +2 -2
  69. camel/configs/openai_config.py +5 -3
  70. camel/configs/openrouter_config.py +6 -4
  71. camel/configs/ppio_config.py +2 -2
  72. camel/configs/qianfan_config.py +85 -0
  73. camel/configs/qwen_config.py +2 -2
  74. camel/configs/reka_config.py +2 -2
  75. camel/configs/samba_config.py +6 -4
  76. camel/configs/sglang_config.py +2 -2
  77. camel/configs/siliconflow_config.py +2 -2
  78. camel/configs/togetherai_config.py +2 -2
  79. camel/configs/vllm_config.py +4 -2
  80. camel/configs/watsonx_config.py +2 -2
  81. camel/configs/yi_config.py +6 -4
  82. camel/configs/zhipuai_config.py +6 -4
  83. camel/data_collectors/__init__.py +2 -2
  84. camel/data_collectors/alpaca_collector.py +18 -9
  85. camel/data_collectors/base.py +2 -2
  86. camel/data_collectors/sharegpt_collector.py +2 -2
  87. camel/datagen/__init__.py +2 -2
  88. camel/datagen/cot_datagen.py +3 -3
  89. camel/datagen/evol_instruct/__init__.py +2 -2
  90. camel/datagen/evol_instruct/evol_instruct.py +2 -2
  91. camel/datagen/evol_instruct/scorer.py +12 -12
  92. camel/datagen/evol_instruct/templates.py +16 -16
  93. camel/datagen/self_improving_cot.py +5 -5
  94. camel/datagen/self_instruct/__init__.py +2 -2
  95. camel/datagen/self_instruct/filter/__init__.py +2 -2
  96. camel/datagen/self_instruct/filter/filter_function.py +2 -2
  97. camel/datagen/self_instruct/filter/filter_registry.py +2 -2
  98. camel/datagen/self_instruct/filter/instruction_filter.py +2 -2
  99. camel/datagen/self_instruct/self_instruct.py +2 -2
  100. camel/datagen/self_instruct/templates.py +47 -47
  101. camel/datagen/source2synth/__init__.py +2 -2
  102. camel/datagen/source2synth/data_processor.py +2 -2
  103. camel/datagen/source2synth/models.py +2 -2
  104. camel/datagen/source2synth/user_data_processor_config.py +2 -2
  105. camel/datahubs/__init__.py +2 -2
  106. camel/datahubs/base.py +2 -2
  107. camel/datahubs/huggingface.py +2 -2
  108. camel/datahubs/models.py +2 -2
  109. camel/datasets/__init__.py +2 -2
  110. camel/datasets/base_generator.py +41 -12
  111. camel/datasets/few_shot_generator.py +18 -18
  112. camel/datasets/models.py +2 -2
  113. camel/datasets/self_instruct_generator.py +2 -2
  114. camel/datasets/static_dataset.py +2 -2
  115. camel/embeddings/__init__.py +2 -2
  116. camel/embeddings/azure_embedding.py +2 -2
  117. camel/embeddings/base.py +2 -2
  118. camel/embeddings/gemini_embedding.py +2 -2
  119. camel/embeddings/jina_embedding.py +2 -2
  120. camel/embeddings/mistral_embedding.py +2 -2
  121. camel/embeddings/openai_compatible_embedding.py +2 -2
  122. camel/embeddings/openai_embedding.py +2 -2
  123. camel/embeddings/sentence_transformers_embeddings.py +2 -2
  124. camel/embeddings/together_embedding.py +2 -2
  125. camel/embeddings/vlm_embedding.py +2 -2
  126. camel/environments/__init__.py +14 -2
  127. camel/environments/models.py +2 -2
  128. camel/environments/multi_step.py +2 -2
  129. camel/environments/rlcards_env.py +860 -0
  130. camel/environments/single_step.py +30 -5
  131. camel/environments/tic_tac_toe.py +3 -3
  132. camel/extractors/__init__.py +2 -2
  133. camel/extractors/base.py +2 -2
  134. camel/extractors/python_strategies.py +2 -2
  135. camel/generators.py +2 -2
  136. camel/human.py +2 -2
  137. camel/interpreters/__init__.py +4 -2
  138. camel/interpreters/base.py +2 -2
  139. camel/interpreters/docker/Dockerfile +14 -24
  140. camel/interpreters/docker_interpreter.py +5 -4
  141. camel/interpreters/e2b_interpreter.py +36 -3
  142. camel/interpreters/internal_python_interpreter.py +53 -4
  143. camel/interpreters/interpreter_error.py +2 -2
  144. camel/interpreters/ipython_interpreter.py +2 -2
  145. camel/interpreters/microsandbox_interpreter.py +395 -0
  146. camel/interpreters/subprocess_interpreter.py +2 -2
  147. camel/loaders/__init__.py +13 -4
  148. camel/loaders/apify_reader.py +2 -2
  149. camel/loaders/base_io.py +2 -2
  150. camel/loaders/base_loader.py +85 -0
  151. camel/loaders/chunkr_reader.py +11 -2
  152. camel/loaders/crawl4ai_reader.py +2 -2
  153. camel/loaders/firecrawl_reader.py +6 -6
  154. camel/loaders/jina_url_reader.py +2 -2
  155. camel/loaders/markitdown.py +2 -2
  156. camel/loaders/mineru_extractor.py +2 -2
  157. camel/loaders/mistral_reader.py +2 -2
  158. camel/loaders/scrapegraph_reader.py +2 -2
  159. camel/loaders/unstructured_io.py +2 -2
  160. camel/logger.py +5 -5
  161. camel/memories/__init__.py +2 -2
  162. camel/memories/agent_memories.py +86 -3
  163. camel/memories/base.py +36 -2
  164. camel/memories/blocks/__init__.py +2 -2
  165. camel/memories/blocks/chat_history_block.py +125 -7
  166. camel/memories/blocks/vectordb_block.py +10 -3
  167. camel/memories/context_creators/__init__.py +2 -2
  168. camel/memories/context_creators/score_based.py +31 -239
  169. camel/memories/records.py +90 -10
  170. camel/messages/__init__.py +2 -2
  171. camel/messages/base.py +178 -43
  172. camel/messages/conversion/__init__.py +2 -2
  173. camel/messages/conversion/alpaca.py +2 -2
  174. camel/messages/conversion/conversation_models.py +2 -2
  175. camel/messages/conversion/sharegpt/__init__.py +2 -2
  176. camel/messages/conversion/sharegpt/function_call_formatter.py +2 -2
  177. camel/messages/conversion/sharegpt/hermes/__init__.py +2 -2
  178. camel/messages/conversion/sharegpt/hermes/hermes_function_formatter.py +2 -2
  179. camel/messages/func_message.py +54 -17
  180. camel/models/__init__.py +16 -2
  181. camel/models/_utils.py +3 -3
  182. camel/models/aihubmix_model.py +83 -0
  183. camel/models/aiml_model.py +11 -18
  184. camel/models/amd_model.py +101 -0
  185. camel/models/anthropic_model.py +127 -20
  186. camel/models/aws_bedrock_model.py +12 -35
  187. camel/models/azure_openai_model.py +212 -89
  188. camel/models/base_audio_model.py +5 -3
  189. camel/models/base_model.py +195 -26
  190. camel/models/cerebras_model.py +83 -0
  191. camel/models/cohere_model.py +16 -21
  192. camel/models/cometapi_model.py +83 -0
  193. camel/models/crynux_model.py +11 -18
  194. camel/models/deepseek_model.py +18 -58
  195. camel/models/fish_audio_model.py +8 -2
  196. camel/models/gemini_model.py +389 -26
  197. camel/models/groq_model.py +11 -19
  198. camel/models/internlm_model.py +11 -18
  199. camel/models/litellm_model.py +56 -34
  200. camel/models/lmstudio_model.py +17 -20
  201. camel/models/minimax_model.py +83 -0
  202. camel/models/mistral_model.py +18 -19
  203. camel/models/model_factory.py +37 -3
  204. camel/models/model_manager.py +26 -8
  205. camel/models/modelscope_model.py +13 -193
  206. camel/models/moonshot_model.py +195 -21
  207. camel/models/nebius_model.py +83 -0
  208. camel/models/nemotron_model.py +19 -9
  209. camel/models/netmind_model.py +11 -18
  210. camel/models/novita_model.py +11 -18
  211. camel/models/nvidia_model.py +11 -18
  212. camel/models/ollama_model.py +14 -21
  213. camel/models/openai_audio_models.py +2 -2
  214. camel/models/openai_compatible_model.py +188 -45
  215. camel/models/openai_model.py +216 -71
  216. camel/models/openrouter_model.py +11 -19
  217. camel/models/ppio_model.py +11 -18
  218. camel/models/qianfan_model.py +89 -0
  219. camel/models/qwen_model.py +13 -193
  220. camel/models/reka_model.py +21 -21
  221. camel/models/reward/__init__.py +2 -2
  222. camel/models/reward/base_reward_model.py +2 -2
  223. camel/models/reward/evaluator.py +2 -2
  224. camel/models/reward/nemotron_model.py +2 -2
  225. camel/models/reward/skywork_model.py +2 -2
  226. camel/models/samba_model.py +48 -47
  227. camel/models/sglang_model.py +88 -40
  228. camel/models/siliconflow_model.py +12 -35
  229. camel/models/stub_model.py +10 -7
  230. camel/models/togetherai_model.py +11 -18
  231. camel/models/vllm_model.py +10 -18
  232. camel/models/volcano_model.py +16 -20
  233. camel/models/watsonx_model.py +7 -19
  234. camel/models/yi_model.py +11 -18
  235. camel/models/zhipuai_model.py +70 -18
  236. camel/parsers/__init__.py +18 -0
  237. camel/parsers/mcp_tool_call_parser.py +176 -0
  238. camel/personas/__init__.py +2 -2
  239. camel/personas/persona.py +2 -2
  240. camel/personas/persona_hub.py +2 -2
  241. camel/prompts/__init__.py +2 -2
  242. camel/prompts/ai_society.py +2 -2
  243. camel/prompts/base.py +2 -2
  244. camel/prompts/code.py +2 -2
  245. camel/prompts/evaluation.py +2 -2
  246. camel/prompts/generate_text_embedding_data.py +2 -2
  247. camel/prompts/image_craft.py +2 -2
  248. camel/prompts/misalignment.py +2 -2
  249. camel/prompts/multi_condition_image_craft.py +2 -2
  250. camel/prompts/object_recognition.py +2 -2
  251. camel/prompts/persona_hub.py +3 -3
  252. camel/prompts/prompt_templates.py +2 -2
  253. camel/prompts/role_description_prompt_template.py +2 -2
  254. camel/prompts/solution_extraction.py +8 -8
  255. camel/prompts/task_prompt_template.py +2 -2
  256. camel/prompts/translation.py +2 -2
  257. camel/prompts/video_description_prompt.py +3 -3
  258. camel/responses/__init__.py +2 -2
  259. camel/responses/agent_responses.py +2 -2
  260. camel/retrievers/__init__.py +2 -2
  261. camel/retrievers/auto_retriever.py +3 -2
  262. camel/retrievers/base.py +2 -2
  263. camel/retrievers/bm25_retriever.py +2 -2
  264. camel/retrievers/cohere_rerank_retriever.py +2 -2
  265. camel/retrievers/hybrid_retrival.py +2 -2
  266. camel/retrievers/vector_retriever.py +2 -2
  267. camel/runtimes/Dockerfile.multi-toolkit +90 -0
  268. camel/runtimes/__init__.py +2 -2
  269. camel/runtimes/api.py +79 -23
  270. camel/runtimes/base.py +2 -2
  271. camel/runtimes/configs.py +13 -13
  272. camel/runtimes/daytona_runtime.py +17 -18
  273. camel/runtimes/docker_runtime.py +12 -12
  274. camel/runtimes/llm_guard_runtime.py +26 -26
  275. camel/runtimes/remote_http_runtime.py +11 -11
  276. camel/runtimes/ubuntu_docker_runtime.py +2 -2
  277. camel/runtimes/utils/__init__.py +2 -2
  278. camel/runtimes/utils/function_risk_toolkit.py +2 -2
  279. camel/runtimes/utils/ignore_risk_toolkit.py +2 -2
  280. camel/schemas/__init__.py +2 -2
  281. camel/schemas/base.py +2 -2
  282. camel/schemas/openai_converter.py +3 -3
  283. camel/schemas/outlines_converter.py +2 -2
  284. camel/services/agent_openapi_server.py +380 -0
  285. camel/societies/__init__.py +4 -2
  286. camel/societies/babyagi_playing.py +2 -2
  287. camel/societies/role_playing.py +201 -80
  288. camel/societies/workforce/__init__.py +10 -3
  289. camel/societies/workforce/base.py +2 -2
  290. camel/societies/workforce/events.py +143 -0
  291. camel/societies/workforce/prompts.py +258 -33
  292. camel/societies/workforce/role_playing_worker.py +88 -31
  293. camel/societies/workforce/single_agent_worker.py +638 -40
  294. camel/societies/workforce/structured_output_handler.py +512 -0
  295. camel/societies/workforce/task_channel.py +182 -38
  296. camel/societies/workforce/utils.py +780 -65
  297. camel/societies/workforce/worker.py +92 -26
  298. camel/societies/workforce/workflow_memory_manager.py +1746 -0
  299. camel/societies/workforce/workforce.py +5276 -355
  300. camel/societies/workforce/workforce_callback.py +103 -0
  301. camel/societies/workforce/workforce_logger.py +647 -0
  302. camel/societies/workforce/workforce_metrics.py +33 -0
  303. camel/storages/__init__.py +6 -2
  304. camel/storages/graph_storages/__init__.py +2 -2
  305. camel/storages/graph_storages/base.py +2 -2
  306. camel/storages/graph_storages/graph_element.py +2 -2
  307. camel/storages/graph_storages/nebula_graph.py +4 -4
  308. camel/storages/graph_storages/neo4j_graph.py +7 -7
  309. camel/storages/key_value_storages/__init__.py +2 -2
  310. camel/storages/key_value_storages/base.py +2 -2
  311. camel/storages/key_value_storages/in_memory.py +2 -2
  312. camel/storages/key_value_storages/json.py +17 -4
  313. camel/storages/key_value_storages/mem0_cloud.py +50 -49
  314. camel/storages/key_value_storages/redis.py +2 -2
  315. camel/storages/object_storages/__init__.py +2 -2
  316. camel/storages/object_storages/amazon_s3.py +2 -2
  317. camel/storages/object_storages/azure_blob.py +2 -2
  318. camel/storages/object_storages/base.py +2 -2
  319. camel/storages/object_storages/google_cloud.py +3 -3
  320. camel/storages/vectordb_storages/__init__.py +8 -2
  321. camel/storages/vectordb_storages/base.py +2 -2
  322. camel/storages/vectordb_storages/chroma.py +731 -0
  323. camel/storages/vectordb_storages/faiss.py +2 -2
  324. camel/storages/vectordb_storages/milvus.py +2 -2
  325. camel/storages/vectordb_storages/oceanbase.py +15 -15
  326. camel/storages/vectordb_storages/pgvector.py +349 -0
  327. camel/storages/vectordb_storages/qdrant.py +6 -6
  328. camel/storages/vectordb_storages/surreal.py +372 -0
  329. camel/storages/vectordb_storages/tidb.py +11 -8
  330. camel/storages/vectordb_storages/weaviate.py +2 -2
  331. camel/tasks/__init__.py +2 -2
  332. camel/tasks/task.py +348 -26
  333. camel/tasks/task_prompt.py +3 -3
  334. camel/terminators/__init__.py +2 -2
  335. camel/terminators/base.py +2 -2
  336. camel/terminators/response_terminator.py +2 -2
  337. camel/terminators/token_limit_terminator.py +2 -2
  338. camel/toolkits/__init__.py +54 -10
  339. camel/toolkits/aci_toolkit.py +66 -21
  340. camel/toolkits/arxiv_toolkit.py +8 -8
  341. camel/toolkits/ask_news_toolkit.py +2 -2
  342. camel/toolkits/async_browser_toolkit.py +4 -4
  343. camel/toolkits/audio_analysis_toolkit.py +3 -3
  344. camel/toolkits/base.py +65 -7
  345. camel/toolkits/bohrium_toolkit.py +2 -2
  346. camel/toolkits/browser_toolkit.py +34 -21
  347. camel/toolkits/browser_toolkit_commons.py +4 -4
  348. camel/toolkits/code_execution.py +31 -4
  349. camel/toolkits/context_summarizer_toolkit.py +684 -0
  350. camel/toolkits/craw4ai_toolkit.py +93 -0
  351. camel/toolkits/dappier_toolkit.py +12 -8
  352. camel/toolkits/data_commons_toolkit.py +2 -2
  353. camel/toolkits/dingtalk.py +1135 -0
  354. camel/toolkits/earth_science_toolkit.py +5367 -0
  355. camel/toolkits/edgeone_pages_mcp_toolkit.py +49 -0
  356. camel/toolkits/excel_toolkit.py +905 -71
  357. camel/toolkits/file_toolkit.py +1402 -0
  358. camel/toolkits/function_tool.py +126 -18
  359. camel/toolkits/github_toolkit.py +109 -22
  360. camel/toolkits/gmail_toolkit.py +1839 -0
  361. camel/toolkits/google_calendar_toolkit.py +40 -6
  362. camel/toolkits/google_drive_mcp_toolkit.py +54 -0
  363. camel/toolkits/google_maps_toolkit.py +2 -2
  364. camel/toolkits/google_scholar_toolkit.py +2 -2
  365. camel/toolkits/human_toolkit.py +36 -12
  366. camel/toolkits/hybrid_browser_toolkit/__init__.py +18 -0
  367. camel/toolkits/hybrid_browser_toolkit/config_loader.py +185 -0
  368. camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit.py +246 -0
  369. camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit_ts.py +1973 -0
  370. camel/toolkits/hybrid_browser_toolkit/installer.py +203 -0
  371. camel/toolkits/hybrid_browser_toolkit/ts/package-lock.json +4589 -0
  372. camel/toolkits/hybrid_browser_toolkit/ts/package.json +33 -0
  373. camel/toolkits/hybrid_browser_toolkit/ts/src/browser-scripts.js +125 -0
  374. camel/toolkits/hybrid_browser_toolkit/ts/src/browser-session.ts +1929 -0
  375. camel/toolkits/hybrid_browser_toolkit/ts/src/config-loader.ts +233 -0
  376. camel/toolkits/hybrid_browser_toolkit/ts/src/hybrid-browser-toolkit.ts +589 -0
  377. camel/toolkits/hybrid_browser_toolkit/ts/src/index.ts +7 -0
  378. camel/toolkits/hybrid_browser_toolkit/ts/src/parent-child-filter.ts +226 -0
  379. camel/toolkits/hybrid_browser_toolkit/ts/src/snapshot-parser.ts +219 -0
  380. camel/toolkits/hybrid_browser_toolkit/ts/src/som-screenshot-injected.ts +543 -0
  381. camel/toolkits/hybrid_browser_toolkit/ts/src/types.ts +129 -0
  382. camel/toolkits/hybrid_browser_toolkit/ts/tsconfig.json +27 -0
  383. camel/toolkits/hybrid_browser_toolkit/ts/websocket-server.js +319 -0
  384. camel/toolkits/hybrid_browser_toolkit/ws_wrapper.py +1037 -0
  385. camel/toolkits/hybrid_browser_toolkit_py/__init__.py +17 -0
  386. camel/toolkits/hybrid_browser_toolkit_py/actions.py +575 -0
  387. camel/toolkits/hybrid_browser_toolkit_py/agent.py +311 -0
  388. camel/toolkits/hybrid_browser_toolkit_py/browser_session.py +787 -0
  389. camel/toolkits/hybrid_browser_toolkit_py/config_loader.py +490 -0
  390. camel/toolkits/hybrid_browser_toolkit_py/hybrid_browser_toolkit.py +2390 -0
  391. camel/toolkits/hybrid_browser_toolkit_py/snapshot.py +233 -0
  392. camel/toolkits/hybrid_browser_toolkit_py/stealth_script.js +0 -0
  393. camel/toolkits/hybrid_browser_toolkit_py/unified_analyzer.js +1043 -0
  394. camel/toolkits/image_analysis_toolkit.py +3 -6
  395. camel/toolkits/image_generation_toolkit.py +390 -0
  396. camel/toolkits/jina_reranker_toolkit.py +5 -6
  397. camel/toolkits/klavis_toolkit.py +7 -3
  398. camel/toolkits/linkedin_toolkit.py +2 -2
  399. camel/toolkits/markitdown_toolkit.py +104 -0
  400. camel/toolkits/math_toolkit.py +66 -12
  401. camel/toolkits/mcp_toolkit.py +412 -36
  402. camel/toolkits/memory_toolkit.py +7 -3
  403. camel/toolkits/meshy_toolkit.py +2 -2
  404. camel/toolkits/message_agent_toolkit.py +608 -0
  405. camel/toolkits/message_integration.py +724 -0
  406. camel/toolkits/mineru_toolkit.py +2 -2
  407. camel/toolkits/minimax_mcp_toolkit.py +195 -0
  408. camel/toolkits/networkx_toolkit.py +2 -2
  409. camel/toolkits/note_taking_toolkit.py +277 -0
  410. camel/toolkits/notion_mcp_toolkit.py +224 -0
  411. camel/toolkits/notion_toolkit.py +2 -2
  412. camel/toolkits/open_api_specs/biztoc/__init__.py +2 -2
  413. camel/toolkits/open_api_specs/biztoc/ai-plugin.json +1 -1
  414. camel/toolkits/open_api_specs/coursera/__init__.py +2 -2
  415. camel/toolkits/open_api_specs/create_qr_code/__init__.py +2 -2
  416. camel/toolkits/open_api_specs/klarna/__init__.py +2 -2
  417. camel/toolkits/open_api_specs/nasa_apod/__init__.py +2 -2
  418. camel/toolkits/open_api_specs/outschool/__init__.py +2 -2
  419. camel/toolkits/open_api_specs/outschool/ai-plugin.json +1 -1
  420. camel/toolkits/open_api_specs/outschool/openapi.yaml +1 -1
  421. camel/toolkits/open_api_specs/outschool/paths/__init__.py +2 -2
  422. camel/toolkits/open_api_specs/outschool/paths/get_classes.py +2 -2
  423. camel/toolkits/open_api_specs/outschool/paths/search_teachers.py +2 -2
  424. camel/toolkits/open_api_specs/security_config.py +2 -2
  425. camel/toolkits/open_api_specs/speak/__init__.py +2 -2
  426. camel/toolkits/open_api_specs/web_scraper/__init__.py +2 -2
  427. camel/toolkits/open_api_specs/web_scraper/ai-plugin.json +1 -1
  428. camel/toolkits/open_api_specs/web_scraper/paths/__init__.py +2 -2
  429. camel/toolkits/open_api_specs/web_scraper/paths/scraper.py +2 -2
  430. camel/toolkits/open_api_toolkit.py +2 -2
  431. camel/toolkits/openbb_toolkit.py +7 -3
  432. camel/toolkits/origene_mcp_toolkit.py +56 -0
  433. camel/toolkits/page_script.js +53 -53
  434. camel/toolkits/playwright_mcp_toolkit.py +13 -31
  435. camel/toolkits/pptx_toolkit.py +36 -23
  436. camel/toolkits/pubmed_toolkit.py +2 -2
  437. camel/toolkits/pulse_mcp_search_toolkit.py +2 -2
  438. camel/toolkits/pyautogui_toolkit.py +2 -2
  439. camel/toolkits/reddit_toolkit.py +2 -2
  440. camel/toolkits/resend_toolkit.py +168 -0
  441. camel/toolkits/retrieval_toolkit.py +2 -2
  442. camel/toolkits/screenshot_toolkit.py +213 -0
  443. camel/toolkits/search_toolkit.py +539 -146
  444. camel/toolkits/searxng_toolkit.py +2 -2
  445. camel/toolkits/semantic_scholar_toolkit.py +2 -2
  446. camel/toolkits/slack_toolkit.py +108 -58
  447. camel/toolkits/sql_toolkit.py +712 -0
  448. camel/toolkits/stripe_toolkit.py +2 -2
  449. camel/toolkits/sympy_toolkit.py +3 -3
  450. camel/toolkits/task_planning_toolkit.py +5 -5
  451. camel/toolkits/terminal_toolkit/__init__.py +18 -0
  452. camel/toolkits/terminal_toolkit/terminal_toolkit.py +1070 -0
  453. camel/toolkits/terminal_toolkit/utils.py +532 -0
  454. camel/toolkits/thinking_toolkit.py +3 -3
  455. camel/toolkits/twitter_toolkit.py +2 -2
  456. camel/toolkits/vertex_ai_veo_toolkit.py +590 -0
  457. camel/toolkits/video_analysis_toolkit.py +109 -29
  458. camel/toolkits/video_download_toolkit.py +19 -16
  459. camel/toolkits/weather_toolkit.py +2 -2
  460. camel/toolkits/web_deploy_toolkit.py +1219 -0
  461. camel/toolkits/wechat_official_toolkit.py +483 -0
  462. camel/toolkits/whatsapp_toolkit.py +2 -2
  463. camel/toolkits/wolfram_alpha_toolkit.py +2 -2
  464. camel/toolkits/zapier_toolkit.py +7 -3
  465. camel/types/__init__.py +4 -4
  466. camel/types/agents/__init__.py +2 -2
  467. camel/types/agents/tool_calling_record.py +6 -3
  468. camel/types/enums.py +378 -39
  469. camel/types/mcp_registries.py +2 -2
  470. camel/types/openai_types.py +4 -4
  471. camel/types/unified_model_type.py +38 -6
  472. camel/utils/__init__.py +2 -2
  473. camel/utils/async_func.py +2 -2
  474. camel/utils/chunker/__init__.py +2 -2
  475. camel/utils/chunker/base.py +2 -2
  476. camel/utils/chunker/code_chunker.py +2 -2
  477. camel/utils/chunker/uio_chunker.py +2 -2
  478. camel/utils/commons.py +38 -7
  479. camel/utils/constants.py +5 -2
  480. camel/utils/context_utils.py +1134 -0
  481. camel/utils/deduplication.py +2 -2
  482. camel/utils/filename.py +2 -2
  483. camel/utils/langfuse.py +2 -2
  484. camel/utils/mcp.py +140 -6
  485. camel/utils/mcp_client.py +48 -38
  486. camel/utils/message_summarizer.py +148 -0
  487. camel/utils/response_format.py +2 -2
  488. camel/utils/token_counting.py +45 -22
  489. camel/utils/tool_result.py +44 -0
  490. camel/verifiers/__init__.py +2 -2
  491. camel/verifiers/base.py +2 -2
  492. camel/verifiers/math_verifier.py +2 -2
  493. camel/verifiers/models.py +2 -2
  494. camel/verifiers/physics_verifier.py +2 -2
  495. camel/verifiers/python_verifier.py +2 -2
  496. {camel_ai-0.2.65.dist-info → camel_ai-0.2.82.dist-info}/METADATA +327 -94
  497. camel_ai-0.2.82.dist-info/RECORD +507 -0
  498. {camel_ai-0.2.65.dist-info → camel_ai-0.2.82.dist-info}/WHEEL +1 -1
  499. {camel_ai-0.2.65.dist-info → camel_ai-0.2.82.dist-info}/licenses/LICENSE +1 -1
  500. camel/loaders/pandas_reader.py +0 -368
  501. camel/toolkits/dalle_toolkit.py +0 -175
  502. camel/toolkits/file_write_toolkit.py +0 -444
  503. camel/toolkits/openai_agent_toolkit.py +0 -135
  504. camel/toolkits/terminal_toolkit.py +0 -1037
  505. camel_ai-0.2.65.dist-info/RECORD +0 -426
@@ -1,4 +1,4 @@
1
- # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
1
+ # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
2
2
  # Licensed under the Apache License, Version 2.0 (the "License");
3
3
  # you may not use this file except in compliance with the License.
4
4
  # You may obtain a copy of the License at
@@ -10,7 +10,7 @@
10
10
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  # See the License for the specific language governing permissions and
12
12
  # limitations under the License.
13
- # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
13
+ # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
14
14
  import logging
15
15
  import os
16
16
  import subprocess
@@ -21,7 +21,7 @@ from typing import Any, Dict, List, Optional, Type, Union
21
21
  from openai import AsyncOpenAI, AsyncStream, OpenAI, Stream
22
22
  from pydantic import BaseModel
23
23
 
24
- from camel.configs import SGLANG_API_PARAMS, SGLangConfig
24
+ from camel.configs import SGLangConfig
25
25
  from camel.messages import OpenAIMessage
26
26
  from camel.models import BaseModelBackend
27
27
  from camel.types import (
@@ -70,8 +70,21 @@ class SGLangModel(BaseModelBackend):
70
70
  API calls. If not provided, will fall back to the MODEL_TIMEOUT
71
71
  environment variable or default to 180 seconds.
72
72
  (default: :obj:`None`)
73
-
74
- Reference: https://sgl-project.github.io/backend/openai_api_completions.html
73
+ max_retries (int, optional): Maximum number of retries for API calls.
74
+ (default: :obj:`3`)
75
+ client (Optional[Any], optional): A custom synchronous
76
+ OpenAI-compatible client instance. If provided, this client will
77
+ be used instead of creating a new one. Note: When using custom
78
+ clients with SGLang, server auto-start features will be disabled.
79
+ (default: :obj:`None`)
80
+ async_client (Optional[Any], optional): A custom asynchronous
81
+ OpenAI-compatible client instance. If provided, this client will
82
+ be used instead of creating a new one. (default: :obj:`None`)
83
+ **kwargs (Any): Additional arguments to pass to the client
84
+ initialization. Ignored if custom clients are provided.
85
+
86
+ Reference: https://sgl-project.github.io/backend/openai_api_completions.
87
+ html
75
88
  """
76
89
 
77
90
  def __init__(
@@ -82,6 +95,10 @@ class SGLangModel(BaseModelBackend):
82
95
  url: Optional[str] = None,
83
96
  token_counter: Optional[BaseTokenCounter] = None,
84
97
  timeout: Optional[float] = None,
98
+ max_retries: int = 3,
99
+ client: Optional[Any] = None,
100
+ async_client: Optional[Any] = None,
101
+ **kwargs: Any,
85
102
  ) -> None:
86
103
  if model_config_dict is None:
87
104
  model_config_dict = SGLangConfig().as_dict()
@@ -95,25 +112,42 @@ class SGLangModel(BaseModelBackend):
95
112
 
96
113
  timeout = timeout or float(os.environ.get("MODEL_TIMEOUT", 180))
97
114
  super().__init__(
98
- model_type, model_config_dict, api_key, url, token_counter, timeout
115
+ model_type,
116
+ model_config_dict,
117
+ api_key,
118
+ url,
119
+ token_counter,
120
+ timeout,
121
+ max_retries,
99
122
  )
100
123
 
101
- self._client = None
102
-
103
- if self._url:
124
+ # Use custom clients if provided, otherwise create new ones
125
+ if client is not None:
126
+ self._client = client
127
+ elif self._url:
104
128
  # Initialize the client if an existing URL is provided
105
129
  self._client = OpenAI(
106
130
  timeout=self._timeout,
107
- max_retries=3,
131
+ max_retries=self._max_retries,
108
132
  api_key="Set-but-ignored", # required but ignored
109
133
  base_url=self._url,
134
+ **kwargs,
110
135
  )
136
+ else:
137
+ self._client = None
138
+
139
+ if async_client is not None:
140
+ self._async_client = async_client
141
+ elif self._url:
111
142
  self._async_client = AsyncOpenAI(
112
143
  timeout=self._timeout,
113
- max_retries=3,
144
+ max_retries=self._max_retries,
114
145
  api_key="Set-but-ignored", # required but ignored
115
146
  base_url=self._url,
147
+ **kwargs,
116
148
  )
149
+ else:
150
+ self._async_client = None
117
151
 
118
152
  def _start_server(self) -> None:
119
153
  try:
@@ -144,13 +178,24 @@ class SGLangModel(BaseModelBackend):
144
178
  )
145
179
  self._inactivity_thread.start()
146
180
  self.last_run_time = time.time()
147
- # Initialize the client after the server starts
148
- self._client = OpenAI(
149
- timeout=self._timeout,
150
- max_retries=3,
151
- api_key="Set-but-ignored", # required but ignored
152
- base_url=self._url,
153
- )
181
+ # Initialize client after server starts if not already set
182
+ if self._client is None:
183
+ self._client = OpenAI(
184
+ timeout=self._timeout,
185
+ max_retries=self._max_retries,
186
+ api_key="Set-but-ignored", # required but ignored
187
+ base_url=self._url,
188
+ )
189
+ if (
190
+ not hasattr(self, '_async_client')
191
+ or self._async_client is None
192
+ ):
193
+ self._async_client = AsyncOpenAI(
194
+ timeout=self._timeout,
195
+ max_retries=self._max_retries,
196
+ api_key="Set-but-ignored", # required but ignored
197
+ base_url=self._url,
198
+ )
154
199
  except Exception as e:
155
200
  raise RuntimeError(f"Failed to start SGLang server: {e}") from e
156
201
 
@@ -194,21 +239,6 @@ class SGLangModel(BaseModelBackend):
194
239
  self._token_counter = OpenAITokenCounter(ModelType.GPT_4O_MINI)
195
240
  return self._token_counter
196
241
 
197
- def check_model_config(self):
198
- r"""Check whether the model configuration contains any
199
- unexpected arguments to SGLang API.
200
-
201
- Raises:
202
- ValueError: If the model configuration dictionary contains any
203
- unexpected arguments to OpenAI API.
204
- """
205
- for param in self.model_config_dict:
206
- if param not in SGLANG_API_PARAMS:
207
- raise ValueError(
208
- f"Unexpected argument `{param}` is "
209
- "input into SGLang model backend."
210
- )
211
-
212
242
  @observe(as_type='generation')
213
243
  async def _arun(
214
244
  self,
@@ -256,15 +286,24 @@ class SGLangModel(BaseModelBackend):
256
286
  with self._lock:
257
287
  # Update last run time
258
288
  self.last_run_time = time.time()
289
+ async_client = self._async_client
259
290
 
260
- if self._client is None:
291
+ if async_client is None:
261
292
  raise RuntimeError(
262
293
  "Client is not initialized. Ensure the server is running."
263
294
  )
264
295
 
265
- response = await self._async_client.chat.completions.create(
296
+ # Prepare additional parameters
297
+ extra_params: Dict[str, Any] = {}
298
+ if response_format is not None:
299
+ extra_params["response_format"] = response_format
300
+ if tools is not None:
301
+ extra_params["tools"] = tools
302
+
303
+ response = await async_client.chat.completions.create(
266
304
  messages=messages,
267
305
  model=self.model_type,
306
+ **extra_params,
268
307
  **self.model_config_dict,
269
308
  )
270
309
  update_current_observation(
@@ -322,15 +361,24 @@ class SGLangModel(BaseModelBackend):
322
361
  with self._lock:
323
362
  # Update last run time
324
363
  self.last_run_time = time.time()
364
+ client = self._client
325
365
 
326
- if self._client is None:
366
+ if client is None:
327
367
  raise RuntimeError(
328
368
  "Client is not initialized. Ensure the server is running."
329
369
  )
330
370
 
331
- response = self._client.chat.completions.create(
371
+ # Prepare additional parameters
372
+ extra_params: Dict[str, Any] = {}
373
+ if response_format is not None:
374
+ extra_params["response_format"] = response_format
375
+ if tools is not None:
376
+ extra_params["tools"] = tools
377
+
378
+ response = client.chat.completions.create(
332
379
  messages=messages,
333
380
  model=self.model_type,
381
+ **extra_params,
334
382
  **self.model_config_dict,
335
383
  )
336
384
  update_current_observation(
@@ -456,10 +504,10 @@ def _wait_for_server(base_url: str, timeout: Optional[float] = 30) -> None:
456
504
  print(
457
505
  """\n
458
506
  NOTE: Typically, the server runs in a separate terminal.
459
- In this notebook, we run the server and notebook code
507
+ In this notebook, we run the server and notebook code
460
508
  together, so their outputs are combined.
461
- To improve clarity, the server logs are displayed in the
462
- original black color, while the notebook outputs are
509
+ To improve clarity, the server logs are displayed in the
510
+ original black color, while the notebook outputs are
463
511
  highlighted in blue.
464
512
  """
465
513
  )
@@ -1,4 +1,4 @@
1
- # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
1
+ # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
2
2
  # Licensed under the Apache License, Version 2.0 (the "License");
3
3
  # you may not use this file except in compliance with the License.
4
4
  # You may obtain a copy of the License at
@@ -10,19 +10,13 @@
10
10
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  # See the License for the specific language governing permissions and
12
12
  # limitations under the License.
13
- # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
13
+ # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
14
14
  import os
15
- from typing import Any, Dict, List, Optional, Type, Union
15
+ from typing import Any, Dict, Optional, Union
16
16
 
17
- from openai import AsyncStream
18
- from pydantic import BaseModel
19
-
20
- from camel.configs import SILICONFLOW_API_PARAMS, SiliconFlowConfig
21
- from camel.messages import OpenAIMessage
17
+ from camel.configs import SiliconFlowConfig
22
18
  from camel.models.openai_compatible_model import OpenAICompatibleModel
23
19
  from camel.types import (
24
- ChatCompletion,
25
- ChatCompletionChunk,
26
20
  ModelType,
27
21
  )
28
22
  from camel.utils import (
@@ -54,6 +48,10 @@ class SiliconFlowModel(OpenAICompatibleModel):
54
48
  API calls. If not provided, will fall back to the MODEL_TIMEOUT
55
49
  environment variable or default to 180 seconds.
56
50
  (default: :obj:`None`)
51
+ max_retries (int, optional): Maximum number of retries for API calls.
52
+ (default: :obj:`3`)
53
+ **kwargs (Any): Additional arguments to pass to the client
54
+ initialization.
57
55
  """
58
56
 
59
57
  @api_keys_required(
@@ -69,6 +67,8 @@ class SiliconFlowModel(OpenAICompatibleModel):
69
67
  url: Optional[str] = None,
70
68
  token_counter: Optional[BaseTokenCounter] = None,
71
69
  timeout: Optional[float] = None,
70
+ max_retries: int = 3,
71
+ **kwargs: Any,
72
72
  ) -> None:
73
73
  if model_config_dict is None:
74
74
  model_config_dict = SiliconFlowConfig().as_dict()
@@ -85,29 +85,6 @@ class SiliconFlowModel(OpenAICompatibleModel):
85
85
  url=url,
86
86
  token_counter=token_counter,
87
87
  timeout=timeout,
88
+ max_retries=max_retries,
89
+ **kwargs,
88
90
  )
89
-
90
- async def _arun(
91
- self,
92
- messages: List[OpenAIMessage],
93
- response_format: Optional[Type[BaseModel]] = None,
94
- tools: Optional[List[Dict[str, Any]]] = None,
95
- ) -> Union[ChatCompletion, AsyncStream[ChatCompletionChunk]]:
96
- raise NotImplementedError(
97
- "SiliconFlow does not support async inference."
98
- )
99
-
100
- def check_model_config(self):
101
- r"""Check whether the model configuration contains any
102
- unexpected arguments to SiliconFlow API.
103
-
104
- Raises:
105
- ValueError: If the model configuration dictionary contains any
106
- unexpected arguments to SiliconFlow API.
107
- """
108
- for param in self.model_config_dict:
109
- if param not in SILICONFLOW_API_PARAMS:
110
- raise ValueError(
111
- f"Unexpected argument `{param}` is "
112
- "input into SiliconFlow model backend."
113
- )
@@ -1,4 +1,4 @@
1
- # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
1
+ # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
2
2
  # Licensed under the Apache License, Version 2.0 (the "License");
3
3
  # you may not use this file except in compliance with the License.
4
4
  # You may obtain a copy of the License at
@@ -10,7 +10,7 @@
10
10
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  # See the License for the specific language governing permissions and
12
12
  # limitations under the License.
13
- # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
13
+ # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
14
14
  import time
15
15
  from typing import Any, Dict, List, Optional, Type, Union
16
16
 
@@ -83,10 +83,17 @@ class StubModel(BaseModelBackend):
83
83
  url: Optional[str] = None,
84
84
  token_counter: Optional[BaseTokenCounter] = None,
85
85
  timeout: Optional[float] = None,
86
+ max_retries: int = 3,
86
87
  ) -> None:
87
88
  r"""All arguments are unused for the dummy model."""
88
89
  super().__init__(
89
- model_type, model_config_dict, api_key, url, token_counter, timeout
90
+ model_type,
91
+ model_config_dict,
92
+ api_key,
93
+ url,
94
+ token_counter,
95
+ timeout,
96
+ max_retries,
90
97
  )
91
98
 
92
99
  @property
@@ -175,7 +182,3 @@ class StubModel(BaseModelBackend):
175
182
  ),
176
183
  )
177
184
  return response
178
-
179
- def check_model_config(self):
180
- r"""Directly pass the check on arguments to STUB model."""
181
- pass
@@ -1,4 +1,4 @@
1
- # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
1
+ # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
2
2
  # Licensed under the Apache License, Version 2.0 (the "License");
3
3
  # you may not use this file except in compliance with the License.
4
4
  # You may obtain a copy of the License at
@@ -10,12 +10,12 @@
10
10
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  # See the License for the specific language governing permissions and
12
12
  # limitations under the License.
13
- # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
13
+ # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
14
14
 
15
15
  import os
16
16
  from typing import Any, Dict, Optional, Union
17
17
 
18
- from camel.configs import TOGETHERAI_API_PARAMS, TogetherAIConfig
18
+ from camel.configs import TogetherAIConfig
19
19
  from camel.models.openai_compatible_model import OpenAICompatibleModel
20
20
  from camel.types import ModelType
21
21
  from camel.utils import (
@@ -47,6 +47,10 @@ class TogetherAIModel(OpenAICompatibleModel):
47
47
  API calls. If not provided, will fall back to the MODEL_TIMEOUT
48
48
  environment variable or default to 180 seconds.
49
49
  (default: :obj:`None`)
50
+ max_retries (int, optional): Maximum number of retries for API calls.
51
+ (default: :obj:`3`)
52
+ **kwargs (Any): Additional arguments to pass to the client
53
+ initialization.
50
54
  """
51
55
 
52
56
  @api_keys_required(
@@ -62,6 +66,8 @@ class TogetherAIModel(OpenAICompatibleModel):
62
66
  url: Optional[str] = None,
63
67
  token_counter: Optional[BaseTokenCounter] = None,
64
68
  timeout: Optional[float] = None,
69
+ max_retries: int = 3,
70
+ **kwargs: Any,
65
71
  ) -> None:
66
72
  if model_config_dict is None:
67
73
  model_config_dict = TogetherAIConfig().as_dict()
@@ -77,19 +83,6 @@ class TogetherAIModel(OpenAICompatibleModel):
77
83
  url=url,
78
84
  token_counter=token_counter,
79
85
  timeout=timeout,
86
+ max_retries=max_retries,
87
+ **kwargs,
80
88
  )
81
-
82
- def check_model_config(self):
83
- r"""Check whether the model configuration contains any
84
- unexpected arguments to TogetherAI API.
85
-
86
- Raises:
87
- ValueError: If the model configuration dictionary contains any
88
- unexpected arguments to TogetherAI API.
89
- """
90
- for param in self.model_config_dict:
91
- if param not in TOGETHERAI_API_PARAMS:
92
- raise ValueError(
93
- f"Unexpected argument `{param}` is "
94
- "input into TogetherAI model backend."
95
- )
@@ -1,4 +1,4 @@
1
- # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
1
+ # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
2
2
  # Licensed under the Apache License, Version 2.0 (the "License");
3
3
  # you may not use this file except in compliance with the License.
4
4
  # You may obtain a copy of the License at
@@ -10,12 +10,12 @@
10
10
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  # See the License for the specific language governing permissions and
12
12
  # limitations under the License.
13
- # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
13
+ # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
14
14
  import os
15
15
  import subprocess
16
16
  from typing import Any, Dict, Optional, Union
17
17
 
18
- from camel.configs import VLLM_API_PARAMS, VLLMConfig
18
+ from camel.configs import VLLMConfig
19
19
  from camel.logger import get_logger
20
20
  from camel.models.openai_compatible_model import OpenAICompatibleModel
21
21
  from camel.types import ModelType
@@ -49,6 +49,9 @@ class VLLMModel(OpenAICompatibleModel):
49
49
  API calls. If not provided, will fall back to the MODEL_TIMEOUT
50
50
  environment variable or default to 180 seconds.
51
51
  (default: :obj:`None`)
52
+ max_retries (int, optional): Maximum number of retries for API calls.
53
+ (default: :obj:`3`)
54
+ **kwargs (Any): Additional arguments to pass to the client initialization.
52
55
 
53
56
  References:
54
57
  https://docs.vllm.ai/en/latest/serving/openai_compatible_server.html
@@ -62,6 +65,8 @@ class VLLMModel(OpenAICompatibleModel):
62
65
  url: Optional[str] = None,
63
66
  token_counter: Optional[BaseTokenCounter] = None,
64
67
  timeout: Optional[float] = None,
68
+ max_retries: int = 3,
69
+ **kwargs: Any,
65
70
  ) -> None:
66
71
  if model_config_dict is None:
67
72
  model_config_dict = VLLMConfig().as_dict()
@@ -79,6 +84,8 @@ class VLLMModel(OpenAICompatibleModel):
79
84
  url=self._url,
80
85
  token_counter=token_counter,
81
86
  timeout=timeout,
87
+ max_retries=max_retries,
88
+ **kwargs,
82
89
  )
83
90
 
84
91
  def _start_server(self) -> None:
@@ -96,18 +103,3 @@ class VLLMModel(OpenAICompatibleModel):
96
103
  )
97
104
  except Exception as e:
98
105
  logger.error(f"Failed to start vllm server: {e}.")
99
-
100
- def check_model_config(self):
101
- r"""Check whether the model configuration contains any
102
- unexpected arguments to vLLM API.
103
-
104
- Raises:
105
- ValueError: If the model configuration dictionary contains any
106
- unexpected arguments to OpenAI API.
107
- """
108
- for param in self.model_config_dict:
109
- if param not in VLLM_API_PARAMS:
110
- raise ValueError(
111
- f"Unexpected argument `{param}` is "
112
- "input into vLLM model backend."
113
- )
@@ -1,4 +1,4 @@
1
- # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
1
+ # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
2
2
  # Licensed under the Apache License, Version 2.0 (the "License");
3
3
  # you may not use this file except in compliance with the License.
4
4
  # You may obtain a copy of the License at
@@ -10,12 +10,11 @@
10
10
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  # See the License for the specific language governing permissions and
12
12
  # limitations under the License.
13
- # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
13
+ # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
14
14
 
15
15
  import os
16
16
  from typing import Any, Dict, Optional, Union
17
17
 
18
- from camel.configs import OPENAI_API_PARAMS
19
18
  from camel.models.openai_compatible_model import OpenAICompatibleModel
20
19
  from camel.types import ModelType
21
20
  from camel.utils import (
@@ -44,6 +43,10 @@ class VolcanoModel(OpenAICompatibleModel):
44
43
  API calls. If not provided, will fall back to the MODEL_TIMEOUT
45
44
  environment variable or default to 180 seconds.
46
45
  (default: :obj:`None`)
46
+ max_retries (int, optional): Maximum number of retries for API calls.
47
+ (default: :obj:`3`)
48
+ **kwargs (Any): Additional arguments to pass to the client
49
+ initialization.
47
50
  """
48
51
 
49
52
  @api_keys_required(
@@ -59,6 +62,8 @@ class VolcanoModel(OpenAICompatibleModel):
59
62
  url: Optional[str] = None,
60
63
  token_counter: Optional[BaseTokenCounter] = None,
61
64
  timeout: Optional[float] = None,
65
+ max_retries: int = 3,
66
+ **kwargs: Any,
62
67
  ) -> None:
63
68
  if model_config_dict is None:
64
69
  model_config_dict = {}
@@ -71,21 +76,12 @@ class VolcanoModel(OpenAICompatibleModel):
71
76
  )
72
77
  timeout = timeout or float(os.environ.get("MODEL_TIMEOUT", 180))
73
78
  super().__init__(
74
- model_type, model_config_dict, api_key, url, token_counter, timeout
79
+ model_type,
80
+ model_config_dict,
81
+ api_key,
82
+ url,
83
+ token_counter,
84
+ timeout,
85
+ max_retries,
86
+ **kwargs,
75
87
  )
76
-
77
- def check_model_config(self):
78
- r"""Check whether the model configuration is valid for Volcano
79
- model backends.
80
-
81
- Raises:
82
- ValueError: If the model configuration dictionary contains any
83
- unexpected arguments to Volcano API.
84
- """
85
- # Using OpenAI API params as Volcano Engine API is OpenAI-compatible
86
- for param in self.model_config_dict:
87
- if param not in OPENAI_API_PARAMS:
88
- raise ValueError(
89
- f"Unexpected argument `{param}` is "
90
- "input into Volcano model backend."
91
- )
@@ -1,4 +1,4 @@
1
- # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
1
+ # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
2
2
  # Licensed under the Apache License, Version 2.0 (the "License");
3
3
  # you may not use this file except in compliance with the License.
4
4
  # You may obtain a copy of the License at
@@ -10,13 +10,13 @@
10
10
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  # See the License for the specific language governing permissions and
12
12
  # limitations under the License.
13
- # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
13
+ # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
14
14
  import os
15
15
  from typing import Any, Dict, List, Optional, Type, Union
16
16
 
17
17
  from pydantic import BaseModel
18
18
 
19
- from camel.configs import WATSONX_API_PARAMS, WatsonXConfig
19
+ from camel.configs import WatsonXConfig
20
20
  from camel.logger import get_logger
21
21
  from camel.messages import OpenAIMessage
22
22
  from camel.models import BaseModelBackend
@@ -66,6 +66,8 @@ class WatsonXModel(BaseModelBackend):
66
66
  API calls. If not provided, will fall back to the MODEL_TIMEOUT
67
67
  environment variable or default to 180 seconds.
68
68
  (default: :obj:`None`)
69
+ **kwargs (Any): Additional arguments to pass to the client
70
+ initialization.
69
71
  """
70
72
 
71
73
  @api_keys_required(
@@ -83,6 +85,7 @@ class WatsonXModel(BaseModelBackend):
83
85
  project_id: Optional[str] = None,
84
86
  token_counter: Optional[BaseTokenCounter] = None,
85
87
  timeout: Optional[float] = None,
88
+ **kwargs: Any,
86
89
  ):
87
90
  from ibm_watsonx_ai import APIClient, Credentials
88
91
  from ibm_watsonx_ai.foundation_models import ModelInference
@@ -103,7 +106,7 @@ class WatsonXModel(BaseModelBackend):
103
106
 
104
107
  self._project_id = project_id
105
108
  credentials = Credentials(api_key=self._api_key, url=self._url)
106
- client = APIClient(credentials, project_id=self._project_id)
109
+ client = APIClient(credentials, project_id=self._project_id, **kwargs)
107
110
 
108
111
  self._model = ModelInference(
109
112
  model_id=self.model_type,
@@ -289,21 +292,6 @@ class WatsonXModel(BaseModelBackend):
289
292
  logger.error(f"Unexpected error when calling WatsonX API: {e!s}")
290
293
  raise
291
294
 
292
- def check_model_config(self):
293
- r"""Check whether the model configuration contains any unexpected
294
- arguments to WatsonX API.
295
-
296
- Raises:
297
- ValueError: If the model configuration dictionary contains any
298
- unexpected arguments to WatsonX API.
299
- """
300
- for param in self.model_config_dict:
301
- if param not in WATSONX_API_PARAMS:
302
- raise ValueError(
303
- f"Unexpected argument `{param}` is "
304
- "input into WatsonX model backend."
305
- )
306
-
307
295
  @property
308
296
  def stream(self) -> bool:
309
297
  r"""Returns whether the model is in stream mode, which sends partial
camel/models/yi_model.py CHANGED
@@ -1,4 +1,4 @@
1
- # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
1
+ # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
2
2
  # Licensed under the Apache License, Version 2.0 (the "License");
3
3
  # you may not use this file except in compliance with the License.
4
4
  # You may obtain a copy of the License at
@@ -10,12 +10,12 @@
10
10
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  # See the License for the specific language governing permissions and
12
12
  # limitations under the License.
13
- # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
13
+ # ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
14
14
 
15
15
  import os
16
16
  from typing import Any, Dict, Optional, Union
17
17
 
18
- from camel.configs import YI_API_PARAMS, YiConfig
18
+ from camel.configs import YiConfig
19
19
  from camel.models.openai_compatible_model import OpenAICompatibleModel
20
20
  from camel.types import ModelType
21
21
  from camel.utils import (
@@ -46,6 +46,10 @@ class YiModel(OpenAICompatibleModel):
46
46
  API calls. If not provided, will fall back to the MODEL_TIMEOUT
47
47
  environment variable or default to 180 seconds.
48
48
  (default: :obj:`None`)
49
+ max_retries (int, optional): Maximum number of retries for API calls.
50
+ (default: :obj:`3`)
51
+ **kwargs (Any): Additional arguments to pass to the client
52
+ initialization.
49
53
  """
50
54
 
51
55
  @api_keys_required(
@@ -61,6 +65,8 @@ class YiModel(OpenAICompatibleModel):
61
65
  url: Optional[str] = None,
62
66
  token_counter: Optional[BaseTokenCounter] = None,
63
67
  timeout: Optional[float] = None,
68
+ max_retries: int = 3,
69
+ **kwargs: Any,
64
70
  ) -> None:
65
71
  if model_config_dict is None:
66
72
  model_config_dict = YiConfig().as_dict()
@@ -76,19 +82,6 @@ class YiModel(OpenAICompatibleModel):
76
82
  url=url,
77
83
  token_counter=token_counter,
78
84
  timeout=timeout,
85
+ max_retries=max_retries,
86
+ **kwargs,
79
87
  )
80
-
81
- def check_model_config(self):
82
- r"""Check whether the model configuration contains any
83
- unexpected arguments to Yi API.
84
-
85
- Raises:
86
- ValueError: If the model configuration dictionary contains any
87
- unexpected arguments to Yi API.
88
- """
89
- for param in self.model_config_dict:
90
- if param not in YI_API_PARAMS:
91
- raise ValueError(
92
- f"Unexpected argument `{param}` is "
93
- "input into Yi model backend."
94
- )