camel-ai 0.2.57__tar.gz → 0.2.58__tar.gz

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 (411) hide show
  1. {camel_ai-0.2.57 → camel_ai-0.2.58}/.gitignore +4 -1
  2. {camel_ai-0.2.57 → camel_ai-0.2.58}/PKG-INFO +4 -2
  3. {camel_ai-0.2.57 → camel_ai-0.2.58}/README.md +1 -1
  4. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/__init__.py +1 -2
  5. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/agents/chat_agent.py +10 -0
  6. camel_ai-0.2.58/camel/agents/mcp_agent.py +446 -0
  7. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/loaders/__init__.py +2 -0
  8. camel_ai-0.2.58/camel/loaders/markitdown.py +204 -0
  9. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/openai_compatible_model.py +3 -3
  10. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/societies/workforce/workforce.py +4 -4
  11. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/__init__.py +4 -0
  12. camel_ai-0.2.58/camel/toolkits/async_browser_toolkit.py +1800 -0
  13. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/base.py +10 -1
  14. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/browser_toolkit.py +19 -3
  15. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/excel_toolkit.py +1 -2
  16. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/function_tool.py +1 -1
  17. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/mcp_toolkit.py +129 -3
  18. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/search_toolkit.py +0 -169
  19. camel_ai-0.2.58/camel/toolkits/wolfram_alpha_toolkit.py +237 -0
  20. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/types/__init__.py +10 -0
  21. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/types/enums.py +3 -3
  22. camel_ai-0.2.58/camel/types/mcp_registries.py +157 -0
  23. {camel_ai-0.2.57 → camel_ai-0.2.58}/pyproject.toml +4 -1
  24. camel_ai-0.2.57/camel/agents/mcp_agent.py +0 -233
  25. {camel_ai-0.2.57 → camel_ai-0.2.58}/LICENSE +0 -0
  26. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/agents/__init__.py +0 -0
  27. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/agents/_types.py +0 -0
  28. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/agents/_utils.py +0 -0
  29. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/agents/base.py +0 -0
  30. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/agents/critic_agent.py +0 -0
  31. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/agents/deductive_reasoner_agent.py +0 -0
  32. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/agents/embodied_agent.py +0 -0
  33. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/agents/knowledge_graph_agent.py +0 -0
  34. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/agents/multi_hop_generator_agent.py +0 -0
  35. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/agents/programmed_agent_instruction.py +0 -0
  36. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/agents/repo_agent.py +0 -0
  37. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/agents/role_assignment_agent.py +0 -0
  38. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/agents/search_agent.py +0 -0
  39. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/agents/task_agent.py +0 -0
  40. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/agents/tool_agents/__init__.py +0 -0
  41. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/agents/tool_agents/base.py +0 -0
  42. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/agents/tool_agents/hugging_face_tool_agent.py +0 -0
  43. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/benchmarks/__init__.py +0 -0
  44. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/benchmarks/apibank.py +0 -0
  45. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/benchmarks/apibench.py +0 -0
  46. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/benchmarks/base.py +0 -0
  47. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/benchmarks/gaia.py +0 -0
  48. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/benchmarks/nexus.py +0 -0
  49. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/benchmarks/ragbench.py +0 -0
  50. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/bots/__init__.py +0 -0
  51. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/bots/discord/__init__.py +0 -0
  52. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/bots/discord/discord_app.py +0 -0
  53. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/bots/discord/discord_installation.py +0 -0
  54. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/bots/discord/discord_store.py +0 -0
  55. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/bots/slack/__init__.py +0 -0
  56. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/bots/slack/models.py +0 -0
  57. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/bots/slack/slack_app.py +0 -0
  58. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/bots/telegram_bot.py +0 -0
  59. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/configs/__init__.py +0 -0
  60. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/configs/aiml_config.py +0 -0
  61. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/configs/anthropic_config.py +0 -0
  62. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/configs/base_config.py +0 -0
  63. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/configs/bedrock_config.py +0 -0
  64. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/configs/cohere_config.py +0 -0
  65. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/configs/deepseek_config.py +0 -0
  66. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/configs/gemini_config.py +0 -0
  67. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/configs/groq_config.py +0 -0
  68. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/configs/internlm_config.py +0 -0
  69. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/configs/litellm_config.py +0 -0
  70. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/configs/lmstudio_config.py +0 -0
  71. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/configs/mistral_config.py +0 -0
  72. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/configs/modelscope_config.py +0 -0
  73. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/configs/moonshot_config.py +0 -0
  74. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/configs/netmind_config.py +0 -0
  75. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/configs/novita_config.py +0 -0
  76. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/configs/nvidia_config.py +0 -0
  77. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/configs/ollama_config.py +0 -0
  78. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/configs/openai_config.py +0 -0
  79. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/configs/openrouter_config.py +0 -0
  80. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/configs/ppio_config.py +0 -0
  81. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/configs/qwen_config.py +0 -0
  82. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/configs/reka_config.py +0 -0
  83. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/configs/samba_config.py +0 -0
  84. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/configs/sglang_config.py +0 -0
  85. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/configs/siliconflow_config.py +0 -0
  86. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/configs/togetherai_config.py +0 -0
  87. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/configs/vllm_config.py +0 -0
  88. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/configs/watsonx_config.py +0 -0
  89. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/configs/yi_config.py +0 -0
  90. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/configs/zhipuai_config.py +0 -0
  91. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/data_collector/__init__.py +0 -0
  92. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/data_collector/alpaca_collector.py +0 -0
  93. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/data_collector/base.py +0 -0
  94. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/data_collector/sharegpt_collector.py +0 -0
  95. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/datagen/__init__.py +0 -0
  96. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/datagen/cot_datagen.py +0 -0
  97. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/datagen/evol_instruct/__init__.py +0 -0
  98. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/datagen/evol_instruct/evol_instruct.py +0 -0
  99. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/datagen/evol_instruct/scorer.py +0 -0
  100. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/datagen/evol_instruct/templates.py +0 -0
  101. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/datagen/self_improving_cot.py +0 -0
  102. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/datagen/self_instruct/__init__.py +0 -0
  103. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/datagen/self_instruct/filter/__init__.py +0 -0
  104. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/datagen/self_instruct/filter/filter_function.py +0 -0
  105. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/datagen/self_instruct/filter/filter_registry.py +0 -0
  106. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/datagen/self_instruct/filter/instruction_filter.py +0 -0
  107. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/datagen/self_instruct/self_instruct.py +0 -0
  108. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/datagen/self_instruct/templates.py +0 -0
  109. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/datagen/source2synth/__init__.py +0 -0
  110. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/datagen/source2synth/data_processor.py +0 -0
  111. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/datagen/source2synth/models.py +0 -0
  112. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/datagen/source2synth/user_data_processor_config.py +0 -0
  113. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/datahubs/__init__.py +0 -0
  114. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/datahubs/base.py +0 -0
  115. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/datahubs/huggingface.py +0 -0
  116. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/datahubs/models.py +0 -0
  117. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/datasets/__init__.py +0 -0
  118. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/datasets/base_generator.py +0 -0
  119. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/datasets/few_shot_generator.py +0 -0
  120. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/datasets/models.py +0 -0
  121. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/datasets/self_instruct_generator.py +0 -0
  122. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/datasets/static_dataset.py +0 -0
  123. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/embeddings/__init__.py +0 -0
  124. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/embeddings/azure_embedding.py +0 -0
  125. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/embeddings/base.py +0 -0
  126. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/embeddings/gemini_embedding.py +0 -0
  127. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/embeddings/jina_embedding.py +0 -0
  128. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/embeddings/mistral_embedding.py +0 -0
  129. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/embeddings/openai_compatible_embedding.py +0 -0
  130. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/embeddings/openai_embedding.py +0 -0
  131. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/embeddings/sentence_transformers_embeddings.py +0 -0
  132. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/embeddings/together_embedding.py +0 -0
  133. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/embeddings/vlm_embedding.py +0 -0
  134. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/environments/__init__.py +0 -0
  135. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/environments/models.py +0 -0
  136. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/environments/multi_step.py +0 -0
  137. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/environments/single_step.py +0 -0
  138. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/environments/tic_tac_toe.py +0 -0
  139. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/extractors/__init__.py +0 -0
  140. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/extractors/base.py +0 -0
  141. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/extractors/python_strategies.py +0 -0
  142. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/generators.py +0 -0
  143. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/human.py +0 -0
  144. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/interpreters/__init__.py +0 -0
  145. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/interpreters/base.py +0 -0
  146. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/interpreters/docker/Dockerfile +0 -0
  147. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/interpreters/docker_interpreter.py +0 -0
  148. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/interpreters/e2b_interpreter.py +0 -0
  149. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/interpreters/internal_python_interpreter.py +0 -0
  150. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/interpreters/interpreter_error.py +0 -0
  151. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/interpreters/ipython_interpreter.py +0 -0
  152. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/interpreters/subprocess_interpreter.py +0 -0
  153. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/loaders/apify_reader.py +0 -0
  154. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/loaders/base_io.py +0 -0
  155. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/loaders/chunkr_reader.py +0 -0
  156. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/loaders/crawl4ai_reader.py +0 -0
  157. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/loaders/firecrawl_reader.py +0 -0
  158. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/loaders/jina_url_reader.py +0 -0
  159. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/loaders/mineru_extractor.py +0 -0
  160. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/loaders/pandas_reader.py +0 -0
  161. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/loaders/scrapegraph_reader.py +0 -0
  162. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/loaders/unstructured_io.py +0 -0
  163. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/logger.py +0 -0
  164. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/memories/__init__.py +0 -0
  165. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/memories/agent_memories.py +0 -0
  166. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/memories/base.py +0 -0
  167. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/memories/blocks/__init__.py +0 -0
  168. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/memories/blocks/chat_history_block.py +0 -0
  169. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/memories/blocks/vectordb_block.py +0 -0
  170. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/memories/context_creators/__init__.py +0 -0
  171. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/memories/context_creators/score_based.py +0 -0
  172. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/memories/records.py +0 -0
  173. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/messages/__init__.py +0 -0
  174. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/messages/base.py +0 -0
  175. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/messages/conversion/__init__.py +0 -0
  176. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/messages/conversion/alpaca.py +0 -0
  177. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/messages/conversion/conversation_models.py +0 -0
  178. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/messages/conversion/sharegpt/__init__.py +0 -0
  179. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/messages/conversion/sharegpt/function_call_formatter.py +0 -0
  180. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/messages/conversion/sharegpt/hermes/__init__.py +0 -0
  181. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/messages/conversion/sharegpt/hermes/hermes_function_formatter.py +0 -0
  182. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/messages/func_message.py +0 -0
  183. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/__init__.py +0 -0
  184. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/_utils.py +0 -0
  185. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/aiml_model.py +0 -0
  186. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/anthropic_model.py +0 -0
  187. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/aws_bedrock_model.py +0 -0
  188. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/azure_openai_model.py +0 -0
  189. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/base_audio_model.py +0 -0
  190. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/base_model.py +0 -0
  191. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/cohere_model.py +0 -0
  192. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/deepseek_model.py +0 -0
  193. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/fish_audio_model.py +0 -0
  194. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/gemini_model.py +0 -0
  195. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/groq_model.py +0 -0
  196. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/internlm_model.py +0 -0
  197. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/litellm_model.py +0 -0
  198. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/lmstudio_model.py +0 -0
  199. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/mistral_model.py +0 -0
  200. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/model_factory.py +0 -0
  201. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/model_manager.py +0 -0
  202. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/modelscope_model.py +0 -0
  203. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/moonshot_model.py +0 -0
  204. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/nemotron_model.py +0 -0
  205. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/netmind_model.py +0 -0
  206. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/novita_model.py +0 -0
  207. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/nvidia_model.py +0 -0
  208. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/ollama_model.py +0 -0
  209. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/openai_audio_models.py +0 -0
  210. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/openai_model.py +0 -0
  211. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/openrouter_model.py +0 -0
  212. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/ppio_model.py +0 -0
  213. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/qwen_model.py +0 -0
  214. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/reka_model.py +0 -0
  215. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/reward/__init__.py +0 -0
  216. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/reward/base_reward_model.py +0 -0
  217. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/reward/evaluator.py +0 -0
  218. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/reward/nemotron_model.py +0 -0
  219. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/reward/skywork_model.py +0 -0
  220. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/samba_model.py +0 -0
  221. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/sglang_model.py +0 -0
  222. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/siliconflow_model.py +0 -0
  223. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/stub_model.py +0 -0
  224. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/togetherai_model.py +0 -0
  225. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/vllm_model.py +0 -0
  226. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/volcano_model.py +0 -0
  227. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/watsonx_model.py +0 -0
  228. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/yi_model.py +0 -0
  229. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/models/zhipuai_model.py +0 -0
  230. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/personas/__init__.py +0 -0
  231. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/personas/persona.py +0 -0
  232. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/personas/persona_hub.py +0 -0
  233. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/prompts/__init__.py +0 -0
  234. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/prompts/ai_society.py +0 -0
  235. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/prompts/base.py +0 -0
  236. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/prompts/code.py +0 -0
  237. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/prompts/evaluation.py +0 -0
  238. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/prompts/generate_text_embedding_data.py +0 -0
  239. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/prompts/image_craft.py +0 -0
  240. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/prompts/misalignment.py +0 -0
  241. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/prompts/multi_condition_image_craft.py +0 -0
  242. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/prompts/object_recognition.py +0 -0
  243. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/prompts/persona_hub.py +0 -0
  244. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/prompts/prompt_templates.py +0 -0
  245. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/prompts/role_description_prompt_template.py +0 -0
  246. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/prompts/solution_extraction.py +0 -0
  247. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/prompts/task_prompt_template.py +0 -0
  248. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/prompts/translation.py +0 -0
  249. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/prompts/video_description_prompt.py +0 -0
  250. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/py.typed +0 -0
  251. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/responses/__init__.py +0 -0
  252. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/responses/agent_responses.py +0 -0
  253. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/retrievers/__init__.py +0 -0
  254. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/retrievers/auto_retriever.py +0 -0
  255. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/retrievers/base.py +0 -0
  256. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/retrievers/bm25_retriever.py +0 -0
  257. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/retrievers/cohere_rerank_retriever.py +0 -0
  258. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/retrievers/hybrid_retrival.py +0 -0
  259. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/retrievers/vector_retriever.py +0 -0
  260. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/runtime/__init__.py +0 -0
  261. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/runtime/api.py +0 -0
  262. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/runtime/base.py +0 -0
  263. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/runtime/configs.py +0 -0
  264. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/runtime/daytona_runtime.py +0 -0
  265. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/runtime/docker_runtime.py +0 -0
  266. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/runtime/llm_guard_runtime.py +0 -0
  267. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/runtime/remote_http_runtime.py +0 -0
  268. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/runtime/ubuntu_docker_runtime.py +0 -0
  269. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/runtime/utils/__init__.py +0 -0
  270. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/runtime/utils/function_risk_toolkit.py +0 -0
  271. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/runtime/utils/ignore_risk_toolkit.py +0 -0
  272. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/schemas/__init__.py +0 -0
  273. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/schemas/base.py +0 -0
  274. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/schemas/openai_converter.py +0 -0
  275. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/schemas/outlines_converter.py +0 -0
  276. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/societies/__init__.py +0 -0
  277. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/societies/babyagi_playing.py +0 -0
  278. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/societies/role_playing.py +0 -0
  279. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/societies/workforce/__init__.py +0 -0
  280. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/societies/workforce/base.py +0 -0
  281. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/societies/workforce/prompts.py +0 -0
  282. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/societies/workforce/role_playing_worker.py +0 -0
  283. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/societies/workforce/single_agent_worker.py +0 -0
  284. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/societies/workforce/task_channel.py +0 -0
  285. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/societies/workforce/utils.py +0 -0
  286. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/societies/workforce/worker.py +0 -0
  287. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/storages/__init__.py +0 -0
  288. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/storages/graph_storages/__init__.py +0 -0
  289. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/storages/graph_storages/base.py +0 -0
  290. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/storages/graph_storages/graph_element.py +0 -0
  291. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/storages/graph_storages/nebula_graph.py +0 -0
  292. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/storages/graph_storages/neo4j_graph.py +0 -0
  293. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/storages/key_value_storages/__init__.py +0 -0
  294. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/storages/key_value_storages/base.py +0 -0
  295. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/storages/key_value_storages/in_memory.py +0 -0
  296. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/storages/key_value_storages/json.py +0 -0
  297. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/storages/key_value_storages/mem0_cloud.py +0 -0
  298. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/storages/key_value_storages/redis.py +0 -0
  299. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/storages/object_storages/__init__.py +0 -0
  300. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/storages/object_storages/amazon_s3.py +0 -0
  301. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/storages/object_storages/azure_blob.py +0 -0
  302. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/storages/object_storages/base.py +0 -0
  303. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/storages/object_storages/google_cloud.py +0 -0
  304. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/storages/vectordb_storages/__init__.py +0 -0
  305. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/storages/vectordb_storages/base.py +0 -0
  306. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/storages/vectordb_storages/milvus.py +0 -0
  307. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/storages/vectordb_storages/oceanbase.py +0 -0
  308. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/storages/vectordb_storages/qdrant.py +0 -0
  309. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/storages/vectordb_storages/tidb.py +0 -0
  310. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/tasks/__init__.py +0 -0
  311. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/tasks/task.py +0 -0
  312. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/tasks/task_prompt.py +0 -0
  313. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/terminators/__init__.py +0 -0
  314. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/terminators/base.py +0 -0
  315. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/terminators/response_terminator.py +0 -0
  316. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/terminators/token_limit_terminator.py +0 -0
  317. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/aci_toolkit.py +0 -0
  318. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/arxiv_toolkit.py +0 -0
  319. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/ask_news_toolkit.py +0 -0
  320. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/audio_analysis_toolkit.py +0 -0
  321. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/code_execution.py +0 -0
  322. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/dalle_toolkit.py +0 -0
  323. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/dappier_toolkit.py +0 -0
  324. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/data_commons_toolkit.py +0 -0
  325. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/file_write_toolkit.py +0 -0
  326. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/github_toolkit.py +0 -0
  327. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/google_calendar_toolkit.py +0 -0
  328. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/google_maps_toolkit.py +0 -0
  329. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/google_scholar_toolkit.py +0 -0
  330. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/human_toolkit.py +0 -0
  331. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/image_analysis_toolkit.py +0 -0
  332. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/jina_reranker_toolkit.py +0 -0
  333. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/klavis_toolkit.py +0 -0
  334. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/linkedin_toolkit.py +0 -0
  335. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/math_toolkit.py +0 -0
  336. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/memory_toolkit.py +0 -0
  337. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/meshy_toolkit.py +0 -0
  338. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/mineru_toolkit.py +0 -0
  339. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/networkx_toolkit.py +0 -0
  340. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/notion_toolkit.py +0 -0
  341. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/open_api_specs/biztoc/__init__.py +0 -0
  342. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/open_api_specs/biztoc/ai-plugin.json +0 -0
  343. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/open_api_specs/biztoc/openapi.yaml +0 -0
  344. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/open_api_specs/coursera/__init__.py +0 -0
  345. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/open_api_specs/coursera/openapi.yaml +0 -0
  346. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/open_api_specs/create_qr_code/__init__.py +0 -0
  347. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/open_api_specs/create_qr_code/openapi.yaml +0 -0
  348. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/open_api_specs/klarna/__init__.py +0 -0
  349. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/open_api_specs/klarna/openapi.yaml +0 -0
  350. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/open_api_specs/nasa_apod/__init__.py +0 -0
  351. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/open_api_specs/nasa_apod/openapi.yaml +0 -0
  352. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/open_api_specs/outschool/__init__.py +0 -0
  353. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/open_api_specs/outschool/ai-plugin.json +0 -0
  354. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/open_api_specs/outschool/openapi.yaml +0 -0
  355. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/open_api_specs/outschool/paths/__init__.py +0 -0
  356. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/open_api_specs/outschool/paths/get_classes.py +0 -0
  357. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/open_api_specs/outschool/paths/search_teachers.py +0 -0
  358. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/open_api_specs/security_config.py +0 -0
  359. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/open_api_specs/speak/__init__.py +0 -0
  360. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/open_api_specs/speak/openapi.yaml +0 -0
  361. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/open_api_specs/web_scraper/__init__.py +0 -0
  362. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/open_api_specs/web_scraper/ai-plugin.json +0 -0
  363. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/open_api_specs/web_scraper/openapi.yaml +0 -0
  364. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/open_api_specs/web_scraper/paths/__init__.py +0 -0
  365. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/open_api_specs/web_scraper/paths/scraper.py +0 -0
  366. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/open_api_toolkit.py +0 -0
  367. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/openai_agent_toolkit.py +0 -0
  368. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/openbb_toolkit.py +0 -0
  369. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/page_script.js +0 -0
  370. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/playwright_mcp_toolkit.py +0 -0
  371. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/pubmed_toolkit.py +0 -0
  372. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/pulse_mcp_search_toolkit.py +0 -0
  373. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/pyautogui_toolkit.py +0 -0
  374. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/reddit_toolkit.py +0 -0
  375. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/retrieval_toolkit.py +0 -0
  376. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/searxng_toolkit.py +0 -0
  377. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/semantic_scholar_toolkit.py +0 -0
  378. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/slack_toolkit.py +0 -0
  379. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/stripe_toolkit.py +0 -0
  380. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/sympy_toolkit.py +0 -0
  381. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/terminal_toolkit.py +0 -0
  382. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/thinking_toolkit.py +0 -0
  383. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/twitter_toolkit.py +0 -0
  384. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/video_analysis_toolkit.py +0 -0
  385. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/video_download_toolkit.py +0 -0
  386. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/weather_toolkit.py +0 -0
  387. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/whatsapp_toolkit.py +0 -0
  388. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/toolkits/zapier_toolkit.py +0 -0
  389. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/types/agents/__init__.py +0 -0
  390. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/types/agents/tool_calling_record.py +0 -0
  391. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/types/openai_types.py +0 -0
  392. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/types/unified_model_type.py +0 -0
  393. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/utils/__init__.py +0 -0
  394. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/utils/async_func.py +0 -0
  395. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/utils/chunker/__init__.py +0 -0
  396. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/utils/chunker/base.py +0 -0
  397. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/utils/chunker/code_chunker.py +0 -0
  398. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/utils/chunker/uio_chunker.py +0 -0
  399. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/utils/commons.py +0 -0
  400. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/utils/constants.py +0 -0
  401. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/utils/deduplication.py +0 -0
  402. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/utils/filename.py +0 -0
  403. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/utils/mcp.py +0 -0
  404. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/utils/response_format.py +0 -0
  405. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/utils/token_counting.py +0 -0
  406. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/verifiers/__init__.py +0 -0
  407. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/verifiers/base.py +0 -0
  408. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/verifiers/math_verifier.py +0 -0
  409. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/verifiers/models.py +0 -0
  410. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/verifiers/physics_verifier.py +0 -0
  411. {camel_ai-0.2.57 → camel_ai-0.2.58}/camel/verifiers/python_verifier.py +0 -0
@@ -430,4 +430,7 @@ benchmark/gaia/Dataset
430
430
  benchmark/gaia/results.jsonl
431
431
 
432
432
  # Secret files for docker
433
- .container/.env
433
+ .container/.env
434
+
435
+ # Environment variables file
436
+ .env
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: camel-ai
3
- Version: 0.2.57
3
+ Version: 0.2.58
4
4
  Summary: Communicative Agents for AI Society Study
5
5
  Project-URL: Homepage, https://www.camel-ai.org/
6
6
  Project-URL: Repository, https://github.com/camel-ai/camel
@@ -65,6 +65,7 @@ Requires-Dist: ipykernel<7,>=6.0.0; extra == 'all'
65
65
  Requires-Dist: jupyter-client<9,>=8.6.2; extra == 'all'
66
66
  Requires-Dist: linkup-sdk<0.3,>=0.2.1; extra == 'all'
67
67
  Requires-Dist: litellm<2,>=1.38.1; extra == 'all'
68
+ Requires-Dist: markitdown==0.1.1; extra == 'all'
68
69
  Requires-Dist: math-verify<0.8,>=0.7.0; extra == 'all'
69
70
  Requires-Dist: mcp>=1.3.0; extra == 'all'
70
71
  Requires-Dist: mem0ai>=0.1.67; extra == 'all'
@@ -196,6 +197,7 @@ Requires-Dist: crawl4ai>=0.3.745; extra == 'document-tools'
196
197
  Requires-Dist: docx2txt<0.9,>=0.8; extra == 'document-tools'
197
198
  Requires-Dist: docx>=0.2.4; extra == 'document-tools'
198
199
  Requires-Dist: fpdf>=1.7.2; extra == 'document-tools'
200
+ Requires-Dist: markitdown==0.1.1; extra == 'document-tools'
199
201
  Requires-Dist: numpy~=1.26; extra == 'document-tools'
200
202
  Requires-Dist: openapi-spec-validator<0.8,>=0.7.1; extra == 'document-tools'
201
203
  Requires-Dist: openpyxl>=3.1.5; extra == 'document-tools'
@@ -598,7 +600,7 @@ Please reach out to us on [CAMEL discord](https://discord.camel-ai.org/) if you
598
600
 
599
601
  <div align="center">
600
602
  <a href="https://docs.camel-ai.org">
601
- <img src="docs/images/techstack.png" alt="TechStack">
603
+ <img src="https://camel-ai.github.io/camel_asset/graphics/techstack.png" alt="TechStack">
602
604
  </a>
603
605
  </div>
604
606
 
@@ -260,7 +260,7 @@ Please reach out to us on [CAMEL discord](https://discord.camel-ai.org/) if you
260
260
 
261
261
  <div align="center">
262
262
  <a href="https://docs.camel-ai.org">
263
- <img src="docs/images/techstack.png" alt="TechStack">
263
+ <img src="https://camel-ai.github.io/camel_asset/graphics/techstack.png" alt="TechStack">
264
264
  </a>
265
265
  </div>
266
266
 
@@ -14,11 +14,10 @@
14
14
 
15
15
  from camel.logger import disable_logging, enable_logging, set_log_level
16
16
 
17
- __version__ = '0.2.57'
17
+ __version__ = '0.2.58'
18
18
 
19
19
  __all__ = [
20
20
  '__version__',
21
- 'camel',
22
21
  'disable_logging',
23
22
  'enable_logging',
24
23
  'set_log_level',
@@ -442,6 +442,11 @@ class ChatAgent(BaseAgent):
442
442
  new_tool = convert_to_function_tool(tool)
443
443
  self._internal_tools[new_tool.get_function_name()] = new_tool
444
444
 
445
+ def add_tools(self, tools: List[Union[FunctionTool, Callable]]) -> None:
446
+ r"""Add a list of tools to the agent."""
447
+ for tool in tools:
448
+ self.add_tool(tool)
449
+
445
450
  def add_external_tool(
446
451
  self, tool: Union[FunctionTool, Callable, Dict[str, Any]]
447
452
  ) -> None:
@@ -462,6 +467,11 @@ class ChatAgent(BaseAgent):
462
467
  return True
463
468
  return False
464
469
 
470
+ def remove_tools(self, tool_names: List[str]) -> None:
471
+ r"""Remove a list of tools from the agent by name."""
472
+ for tool_name in tool_names:
473
+ self.remove_tool(tool_name)
474
+
465
475
  def remove_external_tool(self, tool_name: str) -> bool:
466
476
  r"""Remove an external tool from the agent by name.
467
477
 
@@ -0,0 +1,446 @@
1
+ # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
2
+ # Licensed under the Apache License, Version 2.0 (the "License");
3
+ # you may not use this file except in compliance with the License.
4
+ # You may obtain a copy of the License at
5
+ #
6
+ # http://www.apache.org/licenses/LICENSE-2.0
7
+ #
8
+ # Unless required by applicable law or agreed to in writing, software
9
+ # distributed under the License is distributed on an "AS IS" BASIS,
10
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ # See the License for the specific language governing permissions and
12
+ # limitations under the License.
13
+ # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
14
+
15
+ import asyncio
16
+ import json
17
+ import platform
18
+ import re
19
+ from typing import Any, Callable, Dict, List, Optional, Union, cast
20
+
21
+ from camel.agents import ChatAgent
22
+ from camel.logger import get_logger
23
+ from camel.messages import BaseMessage
24
+ from camel.models import BaseModelBackend, ModelFactory
25
+ from camel.prompts import TextPrompt
26
+ from camel.responses import ChatAgentResponse
27
+ from camel.toolkits import FunctionTool, MCPToolkit
28
+ from camel.types import (
29
+ BaseMCPRegistryConfig,
30
+ MCPRegistryType,
31
+ ModelPlatformType,
32
+ ModelType,
33
+ RoleType,
34
+ )
35
+
36
+ # AgentOps decorator setting
37
+ try:
38
+ import os
39
+
40
+ if os.getenv("AGENTOPS_API_KEY") is not None:
41
+ from agentops import track_agent
42
+ else:
43
+ raise ImportError
44
+ except (ImportError, AttributeError):
45
+ from camel.utils import track_agent
46
+
47
+ logger = get_logger(__name__)
48
+
49
+
50
+ SYS_MSG_CONTENT = """
51
+ You are a helpful assistant, and you prefer to use tools provided by the user
52
+ to solve problems.
53
+ Using a tool, you will tell the user `server_idx`, `tool_name` and
54
+ `tool_args` formatted in JSON as following:
55
+ ```json
56
+ {
57
+ "server_idx": idx,
58
+ "tool_name": "tool_name",
59
+ "tool_args": {
60
+ "arg1": value1,
61
+ "arg2": value2,
62
+ ...
63
+ }
64
+ }
65
+ ```
66
+ For example:
67
+ ```json
68
+ {
69
+ "server_idx": 0,
70
+ "tool_name": "multiply",
71
+ "tool_args": {"a": 5, "b": 50}
72
+ }
73
+ ```
74
+ Otherwise, you should respond to the user directly.
75
+ """
76
+
77
+
78
+ TOOLS_PROMPT = """
79
+ ## Available Tools:
80
+
81
+ {tools}
82
+ """
83
+
84
+ FINAL_RESPONSE_PROMPT = """
85
+ The result `{results}` is provided by tools you proposed.
86
+ Please answer me according to the result directly.
87
+ """
88
+
89
+
90
+ @track_agent(name="MCPAgent")
91
+ class MCPAgent(ChatAgent):
92
+ r"""A specialized agent designed to interact with MCP registries.
93
+ The MCPAgent enhances a base ChatAgent by integrating MCP tools from
94
+ various registries for search capabilities.
95
+
96
+ Attributes:
97
+ system_message (Optional[str]): The system message for the chat agent.
98
+ (default: :str:`"You are an assistant with search capabilities
99
+ using MCP tools."`)
100
+ model (BaseModelBackend): The model backend to use for generating
101
+ responses. (default: :obj:`ModelPlatformType.DEFAULT` with
102
+ `ModelType.DEFAULT`)
103
+ registry_configs (List[BaseMCPRegistryConfig]): List of registry
104
+ configurations (default: :obj:`None`)
105
+ local_config (Optional[Dict[str, Any]]): The local configuration for
106
+ the MCP agent. (default: :obj:`None`)
107
+ local_config_path (Optional[str]): The path to the local configuration
108
+ file for the MCP agent. (default: :obj:`None`)
109
+ function_calling_available (bool): Flag indicating whether the
110
+ model is equipped with the function calling ability.
111
+ (default: :obj:`True`)
112
+ **kwargs: Inherited from ChatAgent
113
+ """
114
+
115
+ def __init__(
116
+ self,
117
+ system_message: Optional[Union[str, BaseMessage]] = (
118
+ "You are an assistant with search capabilities using MCP tools."
119
+ ),
120
+ model: Optional[BaseModelBackend] = None,
121
+ registry_configs: Optional[
122
+ Union[List[BaseMCPRegistryConfig], BaseMCPRegistryConfig]
123
+ ] = None,
124
+ local_config: Optional[Dict[str, Any]] = None,
125
+ local_config_path: Optional[str] = None,
126
+ tools: Optional[List[Union[FunctionTool, Callable]]] = None,
127
+ function_calling_available: bool = True,
128
+ **kwargs,
129
+ ):
130
+ if model is None:
131
+ model = ModelFactory.create(
132
+ model_platform=ModelPlatformType.DEFAULT,
133
+ model_type=ModelType.DEFAULT,
134
+ )
135
+
136
+ if isinstance(registry_configs, BaseMCPRegistryConfig):
137
+ self.registry_configs = [registry_configs]
138
+ else:
139
+ self.registry_configs = registry_configs or []
140
+
141
+ if local_config_path:
142
+ with open(local_config_path, 'r') as f:
143
+ local_config = json.load(f)
144
+
145
+ self.local_config = local_config
146
+ self.function_calling_available = function_calling_available
147
+
148
+ if function_calling_available:
149
+ sys_msg_content = "You are a helpful assistant, and you prefer "
150
+ "to use tools provided by the user to solve problems."
151
+ else:
152
+ sys_msg_content = SYS_MSG_CONTENT
153
+
154
+ system_message = BaseMessage(
155
+ role_name="MCPRouter",
156
+ role_type=RoleType.ASSISTANT,
157
+ meta_dict=None,
158
+ content=sys_msg_content,
159
+ )
160
+
161
+ # Initialize the toolkit if configuration is provided
162
+ self.mcp_toolkit = self._initialize_mcp_toolkit()
163
+
164
+ super().__init__(
165
+ system_message=system_message,
166
+ model=model,
167
+ tools=tools,
168
+ **kwargs,
169
+ )
170
+
171
+ def _initialize_mcp_toolkit(self) -> MCPToolkit:
172
+ r"""Initialize the MCP toolkit from the provided configuration."""
173
+ config_dict = {}
174
+ for registry_config in self.registry_configs:
175
+ config_dict.update(registry_config.get_config())
176
+
177
+ if self.local_config:
178
+ config_dict.update(self.local_config)
179
+
180
+ return MCPToolkit(config_dict=config_dict)
181
+
182
+ def add_registry(self, registry_config: BaseMCPRegistryConfig) -> None:
183
+ r"""Add a new registry configuration to the agent.
184
+
185
+ Args:
186
+ registry_config (BaseMCPRegistryConfig): The registry
187
+ configuration to add.
188
+ """
189
+ self.registry_configs.append(registry_config)
190
+ # Reinitialize the toolkit with the updated configurations
191
+ self.mcp_toolkit = self._initialize_mcp_toolkit()
192
+
193
+ # If already connected, reconnect to apply changes
194
+ if self.mcp_toolkit and self.mcp_toolkit.is_connected():
195
+ try:
196
+ asyncio.run(self.disconnect())
197
+ asyncio.run(self.connect())
198
+ except RuntimeError as e:
199
+ # Handle case where we're already in an event loop
200
+ logger.warning(
201
+ f"Could not reconnect synchronously: {e}. "
202
+ f"Manual reconnection may be required."
203
+ )
204
+
205
+ @classmethod
206
+ async def create(
207
+ cls,
208
+ config_path: Optional[str] = None,
209
+ registry_configs: Optional[
210
+ Union[List[BaseMCPRegistryConfig], BaseMCPRegistryConfig]
211
+ ] = None,
212
+ model: Optional[BaseModelBackend] = None,
213
+ function_calling_available: bool = False,
214
+ **kwargs,
215
+ ) -> "MCPAgent":
216
+ r"""Create and connect an MCPAgent instance.
217
+
218
+ Args:
219
+ config_path (Optional[str]): Path to the MCP configuration file.
220
+ If provided, will load registry configs from this file.
221
+ (default: :obj:`None`)
222
+ registry_configs (Optional[Union[List[BaseMCPRegistryConfig],
223
+ BaseMCPRegistryConfig]]): Registry configurations to use.
224
+ Can be a single config or list of configs. If both config_path
225
+ and registry_configs are provided, configs from both sources
226
+ will be combined. (default: :obj:`None`)
227
+ model (Optional[BaseModelBackend]): The model backend to use.
228
+ If None, will use the default model. (default: :obj:`None`)
229
+ function_calling_available (bool): Whether the model supports
230
+ function calling. (default: :obj:`False`)
231
+ **kwargs: Additional arguments to pass to MCPAgent constructor.
232
+
233
+ Returns:
234
+ MCPAgent: A connected MCPAgent instance ready to use.
235
+
236
+ Example:
237
+ >>> agent = await MCPAgent.create(
238
+ ... config_path="path/to/config.json",
239
+ ... function_calling_available=True
240
+ ... )
241
+ >>> response = await agent.run("Hello!")
242
+ """
243
+ # Initialize registry_configs list
244
+ final_registry_configs = []
245
+
246
+ # Add configs from registry_configs argument if provided
247
+ if registry_configs is not None:
248
+ if isinstance(registry_configs, BaseMCPRegistryConfig):
249
+ final_registry_configs.append(registry_configs)
250
+ else:
251
+ final_registry_configs.extend(registry_configs)
252
+
253
+ # Load additional configs from file if provided
254
+ if config_path:
255
+ try:
256
+ with open(config_path, 'r') as f:
257
+ config_data = json.load(f)
258
+
259
+ # Create registry configs from the loaded data
260
+ for _, server_config in config_data.get(
261
+ "mcpServers", {}
262
+ ).items():
263
+ # Create a custom registry config for each server
264
+ registry_config = BaseMCPRegistryConfig(
265
+ type=MCPRegistryType.CUSTOM,
266
+ os=platform.system().lower(), # type: ignore [arg-type]
267
+ **server_config,
268
+ )
269
+ final_registry_configs.append(registry_config)
270
+ except Exception as e:
271
+ logger.error(f"Failed to load config from {config_path}: {e}")
272
+ raise
273
+
274
+ # Create the agent instance
275
+ agent = cls(
276
+ registry_configs=final_registry_configs,
277
+ model=model,
278
+ function_calling_available=function_calling_available,
279
+ **kwargs,
280
+ )
281
+
282
+ # Connect to MCP servers
283
+ try:
284
+ await agent.connect()
285
+ except Exception as e:
286
+ logger.error(f"Failed to connect to MCP servers: {e}")
287
+ await agent.disconnect() # Clean up if connection fails
288
+ raise
289
+
290
+ return agent
291
+
292
+ async def connect(self) -> None:
293
+ r"""Connect to the MCP servers."""
294
+ if self.mcp_toolkit:
295
+ await self.mcp_toolkit.connect()
296
+ if self.function_calling_available:
297
+ self.add_tools(
298
+ cast(
299
+ list[FunctionTool | Callable[..., Any]],
300
+ self.mcp_toolkit.get_tools(),
301
+ )
302
+ )
303
+ else:
304
+ prompt = TextPrompt(TOOLS_PROMPT)
305
+ self._text_tools = prompt.format(
306
+ tools=self.mcp_toolkit.get_text_tools()
307
+ )
308
+
309
+ async def disconnect(self) -> None:
310
+ r"""Disconnect from the MCP servers."""
311
+ if self.mcp_toolkit:
312
+ await self.mcp_toolkit.disconnect()
313
+
314
+ async def astep(
315
+ self, input_message: Union[BaseMessage, str], *args, **kwargs
316
+ ) -> ChatAgentResponse:
317
+ r"""Asynchronous step function. Make sure MCP toolkit is connected
318
+ before proceeding.
319
+
320
+ Args:
321
+ input_message (Union[BaseMessage, str]): The input message.
322
+ *args: Additional arguments.
323
+ **kwargs: Additional keyword arguments.
324
+
325
+ Returns:
326
+ ChatAgentResponse: The response from the agent.
327
+ """
328
+ if self.mcp_toolkit and not self.mcp_toolkit.is_connected():
329
+ await self.connect()
330
+
331
+ if self.function_calling_available:
332
+ return await super().astep(input_message, *args, **kwargs)
333
+ else:
334
+ task = f"## Task:\n {input_message}"
335
+ input_message = str(self._text_tools) + task
336
+ response = await super().astep(input_message, *args, **kwargs)
337
+ content = response.msgs[0].content.lower()
338
+
339
+ tool_calls = []
340
+ while "```json" in content:
341
+ json_match = re.search(r'```json', content)
342
+ if not json_match:
343
+ break
344
+ json_start = json_match.span()[1]
345
+
346
+ end_match = re.search(r'```', content[json_start:])
347
+ if not end_match:
348
+ break
349
+ json_end = end_match.span()[0] + json_start
350
+
351
+ tool_json = content[json_start:json_end].strip('\n')
352
+ try:
353
+ tool_calls.append(json.loads(tool_json))
354
+ except json.JSONDecodeError:
355
+ logger.warning(f"Failed to parse JSON: {tool_json}")
356
+ continue
357
+ content = content[json_end:]
358
+
359
+ if not tool_calls:
360
+ return response
361
+ else:
362
+ tools_results = []
363
+ for tool_call in tool_calls:
364
+ try:
365
+ server_idx = tool_call.get('server_idx')
366
+ tool_name = tool_call.get('tool_name')
367
+ tool_args = tool_call.get('tool_args', {})
368
+
369
+ # Validate required fields
370
+ if server_idx is None or tool_name is None:
371
+ logger.warning(
372
+ f"Missing required fields in tool "
373
+ f"call: {tool_call}"
374
+ )
375
+ continue
376
+
377
+ # Check server index is valid
378
+ if (
379
+ not isinstance(server_idx, int)
380
+ or server_idx < 0
381
+ or server_idx >= len(self.mcp_toolkit.servers)
382
+ ):
383
+ logger.warning(
384
+ f"Invalid server index: {server_idx}"
385
+ )
386
+ continue
387
+
388
+ server = self.mcp_toolkit.servers[server_idx]
389
+ result = await server.call_tool(tool_name, tool_args)
390
+
391
+ # Safely access content
392
+ if result.content and len(result.content) > 0:
393
+ tools_results.append(
394
+ {tool_name: result.content[0].text}
395
+ )
396
+ else:
397
+ tools_results.append(
398
+ {tool_name: "No result content available"}
399
+ )
400
+ except Exception as e:
401
+ logger.error(f"Error processing tool call: {e}")
402
+ tools_results.append({"error": str(e)})
403
+ results = json.dumps(tools_results)
404
+ final_prompt = TextPrompt(FINAL_RESPONSE_PROMPT).format(
405
+ results=results
406
+ )
407
+ response = await self.astep(final_prompt)
408
+ return response
409
+
410
+ def step(
411
+ self, input_message: Union[BaseMessage, str], *args, **kwargs
412
+ ) -> ChatAgentResponse:
413
+ r"""Synchronous step function. Make sure MCP toolkit is connected
414
+ before proceeding.
415
+
416
+ Args:
417
+ input_message (Union[BaseMessage, str]): The input message.
418
+ *args: Additional arguments.
419
+ **kwargs: Additional keyword arguments.
420
+
421
+ Returns:
422
+ ChatAgentResponse: The response from the agent.
423
+ """
424
+ try:
425
+ loop = asyncio.get_running_loop()
426
+ except RuntimeError:
427
+ loop = None
428
+
429
+ if loop and loop.is_running():
430
+ # Running inside an existing loop (e.g., Jupyter/FastAPI)
431
+ # Use create_task and run with a future
432
+ coro = self.astep(input_message, *args, **kwargs)
433
+ future = asyncio.ensure_future(coro)
434
+ return asyncio.run_coroutine_threadsafe(future, loop).result()
435
+ else:
436
+ # Safe to run normally
437
+ return asyncio.run(self.astep(input_message, *args, **kwargs))
438
+
439
+ async def __aenter__(self):
440
+ r"""Async context manager entry."""
441
+ await self.connect()
442
+ return self
443
+
444
+ async def __aexit__(self, exc_type, exc_val, exc_tb):
445
+ r"""Async context manager exit."""
446
+ await self.disconnect()
@@ -18,6 +18,7 @@ from .chunkr_reader import ChunkrReader
18
18
  from .crawl4ai_reader import Crawl4AI
19
19
  from .firecrawl_reader import Firecrawl
20
20
  from .jina_url_reader import JinaURLReader
21
+ from .markitdown import MarkItDownLoader
21
22
  from .mineru_extractor import MinerU
22
23
  from .pandas_reader import PandasReader
23
24
  from .scrapegraph_reader import ScrapeGraphAI
@@ -35,5 +36,6 @@ __all__ = [
35
36
  'PandasReader',
36
37
  'MinerU',
37
38
  'Crawl4AI',
39
+ 'MarkItDownLoader',
38
40
  'ScrapeGraphAI',
39
41
  ]