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 random
15
15
  import warnings
16
16
  from typing import Any, Dict, List, Optional, Sequence, Tuple, Union
@@ -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 re
15
15
  from typing import Dict, List, Optional, Union
16
16
 
@@ -103,105 +103,105 @@ class DeductiveReasonerAgent(ChatAgent):
103
103
  """
104
104
  self.reset()
105
105
 
106
- deduce_prompt = """You are a deductive reasoner. You are tasked to
107
- complete the TASK based on the THOUGHT OF DEDUCTIVE REASONING, the
108
- STARTING STATE A and the TARGET STATE B. You are given the CONTEXT
106
+ deduce_prompt = """You are a deductive reasoner. You are tasked to
107
+ complete the TASK based on the THOUGHT OF DEDUCTIVE REASONING, the
108
+ STARTING STATE A and the TARGET STATE B. You are given the CONTEXT
109
109
  CONTENT to help you complete the TASK.
110
- Your answer MUST strictly adhere to the structure of ANSWER TEMPLATE, ONLY
110
+ Your answer MUST strictly adhere to the structure of ANSWER TEMPLATE, ONLY
111
111
  fill in the BLANKs, and DO NOT alter or modify any other part of the template
112
112
 
113
113
  ===== MODELING OF DEDUCTIVE REASONING =====
114
- You are tasked with understanding a mathematical model based on the components
114
+ You are tasked with understanding a mathematical model based on the components
115
115
  ${A, B, C, Q, L}$. In this model: ``L: A ⊕ C -> q * B``.
116
116
  - $A$ represents the known starting state.
117
117
  - $B$ represents the known target state.
118
118
  - $C$ represents the conditions required to transition from $A$ to $B$.
119
- - $Q$ represents the quality or effectiveness of the transition from $A$ to
119
+ - $Q$ represents the quality or effectiveness of the transition from $A$ to
120
120
  $B$.
121
121
  - $L$ represents the path or process from $A$ to $B$.
122
122
 
123
123
  ===== THOUGHT OF DEDUCTIVE REASONING =====
124
124
  1. Define the Parameters of A and B:
125
- - Characterization: Before delving into transitions, thoroughly understand
126
- the nature and boundaries of both $A$ and $B$. This includes the type,
125
+ - Characterization: Before delving into transitions, thoroughly understand
126
+ the nature and boundaries of both $A$ and $B$. This includes the type,
127
127
  properties, constraints, and possible interactions between the two.
128
- - Contrast and Compare: Highlight the similarities and differences between
129
- $A$ and $B$. This comparative analysis will give an insight into what
128
+ - Contrast and Compare: Highlight the similarities and differences between
129
+ $A$ and $B$. This comparative analysis will give an insight into what
130
130
  needs changing and what remains constant.
131
131
  2. Historical & Empirical Analysis:
132
- - Previous Transitions according to the Knowledge Base of GPT: (if
133
- applicable) Extract conditions and patterns from the historical instances
134
- where a similar transition from a state comparable to $A$ moved towards
132
+ - Previous Transitions according to the Knowledge Base of GPT: (if
133
+ applicable) Extract conditions and patterns from the historical instances
134
+ where a similar transition from a state comparable to $A$ moved towards
135
135
  $B$.
136
- - Scientific Principles: (if applicable) Consider the underlying
137
- scientific principles governing or related to the states and their
138
- transition. For example, if $A$ and $B$ are physical states, laws of
136
+ - Scientific Principles: (if applicable) Consider the underlying
137
+ scientific principles governing or related to the states and their
138
+ transition. For example, if $A$ and $B$ are physical states, laws of
139
139
  physics might apply.
140
140
  3. Logical Deduction of Conditions ($C$):
141
- - Direct Path Analysis: What are the immediate and direct conditions
141
+ - Direct Path Analysis: What are the immediate and direct conditions
142
142
  required to move from $A$ to $B$?
143
- - Intermediate States: Are there states between $A$ and $B$ that must be
144
- traversed or can be used to make the transition smoother or more
143
+ - Intermediate States: Are there states between $A$ and $B$ that must be
144
+ traversed or can be used to make the transition smoother or more
145
145
  efficient? If yes, what is the content?
146
- - Constraints & Limitations: Identify potential barriers or restrictions
147
- in moving from $A$ to $B$. These can be external (e.g., environmental
146
+ - Constraints & Limitations: Identify potential barriers or restrictions
147
+ in moving from $A$ to $B$. These can be external (e.g., environmental
148
148
  factors) or internal (properties of $A$ or $B$).
149
- - Resource and Information Analysis: What resources and information are
150
- required for the transition? This could be time, entity, factor, code
149
+ - Resource and Information Analysis: What resources and information are
150
+ required for the transition? This could be time, entity, factor, code
151
151
  language, software platform, unknowns, etc.
152
- - External Influences: Consider socio-economic, political, or
153
- environmental factors (if applicable) that could influence the transition
152
+ - External Influences: Consider socio-economic, political, or
153
+ environmental factors (if applicable) that could influence the transition
154
154
  conditions.
155
- - Creative/Heuristic Reasoning: Open your mind to multiple possible $C$'s,
156
- no matter how unconventional they might seem. Utilize analogies,
157
- metaphors, or brainstorming techniques to envision possible conditions or
155
+ - Creative/Heuristic Reasoning: Open your mind to multiple possible $C$'s,
156
+ no matter how unconventional they might seem. Utilize analogies,
157
+ metaphors, or brainstorming techniques to envision possible conditions or
158
158
  paths from $A$ to $B$.
159
- - The conditions $C$ should be multiple but in one sentence. And each
159
+ - The conditions $C$ should be multiple but in one sentence. And each
160
160
  condition should be concerned with one aspect/entity.
161
161
  4. Entity/Label Recognition of Conditions ($C$):
162
- - Identify and categorize entities of Conditions ($C$) such as the names,
163
- locations, dates, specific technical terms or contextual parameters that
162
+ - Identify and categorize entities of Conditions ($C$) such as the names,
163
+ locations, dates, specific technical terms or contextual parameters that
164
164
  might be associated with events, innovations post-2022.
165
- - The output of the entities/labels will be used as tags or labels for
166
- semantic similarity searches. The entities/labels may be the words, or
167
- phrases, each of them should contain valuable, high information entropy
165
+ - The output of the entities/labels will be used as tags or labels for
166
+ semantic similarity searches. The entities/labels may be the words, or
167
+ phrases, each of them should contain valuable, high information entropy
168
168
  information, and should be independent.
169
- - Ensure that the identified entities are formatted in a manner suitable
170
- for database indexing and retrieval. Organize the entities into
171
- categories, and combine the category with its instance into a continuous
169
+ - Ensure that the identified entities are formatted in a manner suitable
170
+ for database indexing and retrieval. Organize the entities into
171
+ categories, and combine the category with its instance into a continuous
172
172
  phrase, without using colons or other separators.
173
- - Format these entities for database indexing: output the category rather
174
- than its instance/content into a continuous phrase. For example, instead
173
+ - Format these entities for database indexing: output the category rather
174
+ than its instance/content into a continuous phrase. For example, instead
175
175
  of "Jan. 02", identify it as "Event time".
176
176
  5. Quality Assessment ($Q$):
177
- - Efficiency: How efficient is the transition from $A$ to $B$, which
177
+ - Efficiency: How efficient is the transition from $A$ to $B$, which
178
178
  measures the resources used versus the desired outcome?
179
- - Effectiveness: Did the transition achieve the desired outcome or was the
179
+ - Effectiveness: Did the transition achieve the desired outcome or was the
180
180
  target state achieved as intended?
181
- - Safety & Risks: Assess any risks associated with the transition and the
181
+ - Safety & Risks: Assess any risks associated with the transition and the
182
182
  measures to mitigate them.
183
- - Feedback Mechanisms: Incorporate feedback loops to continuously monitor
183
+ - Feedback Mechanisms: Incorporate feedback loops to continuously monitor
184
184
  and adjust the quality of transition, making it more adaptive.
185
185
  6. Iterative Evaluation:
186
- - Test & Refine: Based on the initially deduced conditions and assessed
187
- quality, iterate the process to refine and optimize the transition. This
188
- might involve tweaking conditions, employing different paths, or changing
186
+ - Test & Refine: Based on the initially deduced conditions and assessed
187
+ quality, iterate the process to refine and optimize the transition. This
188
+ might involve tweaking conditions, employing different paths, or changing
189
189
  resources.
190
- - Feedback Integration: Use feedback to make improvements and increase the
190
+ - Feedback Integration: Use feedback to make improvements and increase the
191
191
  quality of the transition.
192
- 7. Real-world scenarios often present challenges that may not be captured by
192
+ 7. Real-world scenarios often present challenges that may not be captured by
193
193
  models and frameworks. While using the model, maintain an adaptive mindset:
194
- - Scenario Exploration: Continuously imagine various possible scenarios,
194
+ - Scenario Exploration: Continuously imagine various possible scenarios,
195
195
  both positive and negative, to prepare for unexpected events.
196
196
  - Flexibility: Be prepared to modify conditions ($C$) or alter the path/
197
197
  process ($L$) if unforeseen challenges arise.
198
- - Feedback Integration: Rapidly integrate feedback from actual
199
- implementations to adjust the model's application, ensuring relevancy and
198
+ - Feedback Integration: Rapidly integrate feedback from actual
199
+ implementations to adjust the model's application, ensuring relevancy and
200
200
  effectiveness.
201
201
 
202
202
  ===== TASK =====
203
- Given the starting state $A$ and the target state $B$, assuming that a path
204
- $L$ always exists between $A$ and $B$, how can one deduce or identify the
203
+ Given the starting state $A$ and the target state $B$, assuming that a path
204
+ $L$ always exists between $A$ and $B$, how can one deduce or identify the
205
205
  necessary conditions $C$ and the quality $Q$ of the transition?
206
206
 
207
207
  ===== STARTING STATE $A$ =====
@@ -217,7 +217,7 @@ necessary conditions $C$ and the quality $Q$ of the transition?
217
217
  - Logical Deduction of Conditions ($C$) (multiple conditions can be deduced):
218
218
  condition <NUM>:
219
219
  <BLANK>.
220
- - Entity/Label Recognition of Conditions:\n[<BLANK>, <BLANK>, ...] (include
220
+ - Entity/Label Recognition of Conditions:\n[<BLANK>, <BLANK>, ...] (include
221
221
  square brackets)
222
222
  - Quality Assessment ($Q$) (do not use symbols):
223
223
  <BLANK>.
@@ -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
  from typing import Any, List, Optional
15
15
 
16
16
  from colorama import Fore
@@ -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
  from typing import TYPE_CHECKING, Optional, Union
15
15
 
16
16
  if TYPE_CHECKING:
@@ -40,53 +40,53 @@ except (ImportError, AttributeError):
40
40
 
41
41
 
42
42
  text_prompt = """
43
- You are tasked with extracting nodes and relationships from given content and
44
- structures them into Node and Relationship objects. Here's the outline of what
43
+ You are tasked with extracting nodes and relationships from given content and
44
+ structures them into Node and Relationship objects. Here's the outline of what
45
45
  you needs to do:
46
46
 
47
47
  Content Extraction:
48
- You should be able to process input content and identify entities mentioned
48
+ You should be able to process input content and identify entities mentioned
49
49
  within it.
50
- Entities can be any noun phrases or concepts that represent distinct entities
50
+ Entities can be any noun phrases or concepts that represent distinct entities
51
51
  in the context of the given content.
52
52
 
53
53
  Node Extraction:
54
54
  For each identified entity, you should create a Node object.
55
55
  Each Node object should have a unique identifier (id) and a type (type).
56
- Additional properties associated with the node can also be extracted and
56
+ Additional properties associated with the node can also be extracted and
57
57
  stored.
58
58
 
59
59
  Relationship Extraction:
60
60
  You should identify relationships between entities mentioned in the content.
61
61
  For each relationship, create a Relationship object.
62
- A Relationship object should have a subject (subj) and an object (obj) which
62
+ A Relationship object should have a subject (subj) and an object (obj) which
63
63
  are Node objects representing the entities involved in the relationship.
64
- Each relationship should also have a type (type), and additional properties if
64
+ Each relationship should also have a type (type), and additional properties if
65
65
  applicable.
66
66
 
67
67
  Output Formatting:
68
- The extracted nodes and relationships should be formatted as instances of the
68
+ The extracted nodes and relationships should be formatted as instances of the
69
69
  provided Node and Relationship classes.
70
70
  Ensure that the extracted data adheres to the structure defined by the classes.
71
- Output the structured data in a format that can be easily validated against
71
+ Output the structured data in a format that can be easily validated against
72
72
  the provided code.
73
- Do not wrap the output in lists or dictionaries, provide the Node and
73
+ Do not wrap the output in lists or dictionaries, provide the Node and
74
74
  Relationship with unique identifiers.
75
- Strictly follow the format provided in the example output, do not add any
75
+ Strictly follow the format provided in the example output, do not add any
76
76
  additional information.
77
77
 
78
78
 
79
79
  Instructions for you:
80
80
  Read the provided content thoroughly.
81
- Identify distinct entities mentioned in the content and categorize them as
81
+ Identify distinct entities mentioned in the content and categorize them as
82
82
  nodes.
83
- Determine relationships between these entities and represent them as directed
83
+ Determine relationships between these entities and represent them as directed
84
84
  relationships.
85
85
  Provide the extracted nodes and relationships in the specified format below.
86
86
  Example for you:
87
87
 
88
88
  Example Content:
89
- "John works at XYZ Corporation. He is a software engineer. The company is
89
+ "John works at XYZ Corporation. He is a software engineer. The company is
90
90
  located in New York City."
91
91
 
92
92
  Expected Output:
@@ -99,14 +99,14 @@ Node(id='New York City', type='Location')
99
99
 
100
100
  Relationships:
101
101
 
102
- Relationship(subj=Node(id='John', type='Person'), obj=Node(id='XYZ
102
+ Relationship(subj=Node(id='John', type='Person'), obj=Node(id='XYZ
103
103
  Corporation', type='Organization'), type='WorksAt')
104
- Relationship(subj=Node(id='John', type='Person'), obj=Node(id='New York City',
104
+ Relationship(subj=Node(id='John', type='Person'), obj=Node(id='New York City',
105
105
  type='Location'), type='ResidesIn')
106
106
 
107
107
  ===== TASK =====
108
- Please extracts nodes and relationships from given content and structures them
109
- into Node and Relationship objects.
108
+ Please extracts nodes and relationships from given content and structures them
109
+ into Node and Relationship objects.
110
110
 
111
111
  {task}
112
112
  """
camel/agents/mcp_agent.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,21 +10,30 @@
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 asyncio
16
16
  import json
17
17
  import platform
18
- import re
19
- from typing import Any, Callable, Dict, List, Optional, Union, cast
18
+ from typing import (
19
+ TYPE_CHECKING,
20
+ Any,
21
+ Callable,
22
+ Dict,
23
+ List,
24
+ Optional,
25
+ Union,
26
+ cast,
27
+ )
20
28
 
21
- from camel.agents import ChatAgent
29
+ from camel.agents.chat_agent import ChatAgent
22
30
  from camel.logger import get_logger
23
31
  from camel.messages import BaseMessage
24
- from camel.models import BaseModelBackend, ModelFactory
32
+ from camel.models.base_model import BaseModelBackend
33
+ from camel.models.model_factory import ModelFactory
25
34
  from camel.prompts import TextPrompt
26
35
  from camel.responses import ChatAgentResponse
27
- from camel.toolkits import FunctionTool, MCPToolkit
36
+ from camel.toolkits.function_tool import FunctionTool
28
37
  from camel.types import (
29
38
  BaseMCPRegistryConfig,
30
39
  MCPRegistryType,
@@ -33,6 +42,9 @@ from camel.types import (
33
42
  RoleType,
34
43
  )
35
44
 
45
+ if TYPE_CHECKING:
46
+ from camel.toolkits.mcp_toolkit import MCPToolkit
47
+
36
48
  # AgentOps decorator setting
37
49
  try:
38
50
  import os
@@ -44,13 +56,15 @@ try:
44
56
  except (ImportError, AttributeError):
45
57
  from camel.utils import track_agent
46
58
 
59
+ from camel.parsers.mcp_tool_call_parser import extract_tool_calls_from_text
60
+
47
61
  logger = get_logger(__name__)
48
62
 
49
63
 
50
64
  SYS_MSG_CONTENT = """
51
- You are a helpful assistant, and you prefer to use tools provided by the user
65
+ You are a helpful assistant, and you prefer to use tools provided by the user
52
66
  to solve problems.
53
- Using a tool, you will tell the user `server_idx`, `tool_name` and
67
+ Using a tool, you will tell the user `server_idx`, `tool_name` and
54
68
  `tool_args` formatted in JSON as following:
55
69
  ```json
56
70
  {
@@ -125,7 +139,6 @@ class MCPAgent(ChatAgent):
125
139
  local_config_path: Optional[str] = None,
126
140
  tools: Optional[List[Union[FunctionTool, Callable]]] = None,
127
141
  function_calling_available: bool = True,
128
- strict: bool = False,
129
142
  **kwargs,
130
143
  ):
131
144
  if model is None:
@@ -145,7 +158,6 @@ class MCPAgent(ChatAgent):
145
158
 
146
159
  self.local_config = local_config
147
160
  self.function_calling_available = function_calling_available
148
- self.strict = strict
149
161
 
150
162
  if function_calling_available:
151
163
  sys_msg_content = "You are a helpful assistant, and you prefer "
@@ -170,8 +182,10 @@ class MCPAgent(ChatAgent):
170
182
  **kwargs,
171
183
  )
172
184
 
173
- def _initialize_mcp_toolkit(self) -> MCPToolkit:
185
+ def _initialize_mcp_toolkit(self) -> "MCPToolkit":
174
186
  r"""Initialize the MCP toolkit from the provided configuration."""
187
+ from camel.toolkits.mcp_toolkit import MCPToolkit
188
+
175
189
  config_dict = {}
176
190
  for registry_config in self.registry_configs:
177
191
  config_dict.update(registry_config.get_config())
@@ -179,7 +193,7 @@ class MCPAgent(ChatAgent):
179
193
  if self.local_config:
180
194
  config_dict.update(self.local_config)
181
195
 
182
- return MCPToolkit(config_dict=config_dict, strict=self.strict)
196
+ return MCPToolkit(config_dict=config_dict)
183
197
 
184
198
  def add_registry(self, registry_config: BaseMCPRegistryConfig) -> None:
185
199
  r"""Add a new registry configuration to the agent.
@@ -213,7 +227,6 @@ class MCPAgent(ChatAgent):
213
227
  ] = None,
214
228
  model: Optional[BaseModelBackend] = None,
215
229
  function_calling_available: bool = False,
216
- strict: bool = False,
217
230
  **kwargs,
218
231
  ) -> "MCPAgent":
219
232
  r"""Create and connect an MCPAgent instance.
@@ -279,7 +292,6 @@ class MCPAgent(ChatAgent):
279
292
  registry_configs=final_registry_configs,
280
293
  model=model,
281
294
  function_calling_available=function_calling_available,
282
- strict=strict,
283
295
  **kwargs,
284
296
  )
285
297
 
@@ -338,27 +350,14 @@ class MCPAgent(ChatAgent):
338
350
  task = f"## Task:\n {input_message}"
339
351
  input_message = str(self._text_tools) + task
340
352
  response = await super().astep(input_message, *args, **kwargs)
341
- content = response.msgs[0].content.lower()
342
-
343
- tool_calls = []
344
- while "```json" in content:
345
- json_match = re.search(r'```json', content)
346
- if not json_match:
347
- break
348
- json_start = json_match.span()[1]
349
-
350
- end_match = re.search(r'```', content[json_start:])
351
- if not end_match:
352
- break
353
- json_end = end_match.span()[0] + json_start
354
-
355
- tool_json = content[json_start:json_end].strip('\n')
356
- try:
357
- tool_calls.append(json.loads(tool_json))
358
- except json.JSONDecodeError:
359
- logger.warning(f"Failed to parse JSON: {tool_json}")
360
- continue
361
- content = content[json_end:]
353
+ raw_content = response.msgs[0].content if response.msgs else ""
354
+ content = (
355
+ raw_content
356
+ if isinstance(raw_content, str)
357
+ else str(raw_content)
358
+ )
359
+
360
+ tool_calls = extract_tool_calls_from_text(content)
362
361
 
363
362
  if not tool_calls:
364
363
  return response
@@ -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
 
15
15
  import textwrap
16
16
  from typing import Any
@@ -56,7 +56,7 @@ class MultiHopGeneratorAgent(ProgrammableChatAgent):
56
56
 
57
57
  system_text: str = textwrap.dedent(
58
58
  """\
59
- You are an expert at generating
59
+ You are an expert at generating
60
60
  multi-hop question-answer pairs.
61
61
  For each context, you should:
62
62
  1. Identify multiple related facts or pieces of information
@@ -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 abc
15
15
  import threading
16
16
  from enum import Enum
@@ -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 enum import Enum, auto
16
16
  from string import Template
@@ -21,6 +21,7 @@ if TYPE_CHECKING:
21
21
  from pydantic import BaseModel
22
22
 
23
23
  from camel.agents import ChatAgent
24
+ from camel.agents.chat_agent import StreamingChatAgentResponse
24
25
  from camel.logger import get_logger
25
26
  from camel.messages import BaseMessage
26
27
  from camel.models import BaseModelBackend, ModelFactory
@@ -442,7 +443,7 @@ class RepoAgent(ChatAgent):
442
443
 
443
444
  def step(
444
445
  self, input_message: Union[BaseMessage, str], *args, **kwargs
445
- ) -> ChatAgentResponse:
446
+ ) -> Union[ChatAgentResponse, StreamingChatAgentResponse]:
446
447
  r"""Overrides `ChatAgent.step()` to first retrieve relevant context
447
448
  from the vector store before passing the input to the language model.
448
449
  """
@@ -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 re
15
15
  from typing import Dict, Optional, Union
16
16
 
@@ -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
  from typing import Optional
15
15
 
16
16
  from camel.agents.chat_agent import ChatAgent
@@ -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
  from typing import Any, Dict, List, Optional, Union
15
15
 
16
16
  from camel.agents.chat_agent import ChatAgent
@@ -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
  from .base import BaseToolAgent
15
15
  from .hugging_face_tool_agent import HuggingFaceToolAgent
16
16
 
@@ -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
  from camel.agents import BaseAgent
15
15
 
16
16
 
@@ -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
  from typing import Any, Optional
15
15
 
16
16
  from camel.agents.tool_agents.base import BaseToolAgent
@@ -90,7 +90,7 @@ rivers_and_lakes_image.save("./rivers_and_lakes_image.png")
90
90
  sea_add_island_image = {name}.step("Draw me a picture of the sea then transform the picture to add an island")
91
91
  sea_add_island_image.save("./sea_add_island_image.png")
92
92
 
93
- # If you'd like to keep a state across executions or to pass non-text objects to the agent,
93
+ # If you'd like to keep a state across executions or to pass non-text objects to the agent,
94
94
  # you can do so by specifying variables that you would like the agent to use. For example,
95
95
  # you could generate the first image of rivers and lakes, and ask the model to update that picture to add an island by doing the following:
96
96
  picture = {name}.step("Generate a picture of rivers and lakes.")