camel-ai 0.2.72a5__tar.gz → 0.2.72a8__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 (458) hide show
  1. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/PKG-INFO +3 -3
  2. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/__init__.py +1 -1
  3. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/agents/chat_agent.py +59 -136
  4. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/memories/agent_memories.py +38 -0
  5. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/memories/base.py +8 -0
  6. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/gemini_model.py +30 -2
  7. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/storages/vectordb_storages/__init__.py +1 -0
  8. camel_ai-0.2.72a8/camel/storages/vectordb_storages/surreal.py +415 -0
  9. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/__init__.py +4 -0
  10. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/human_toolkit.py +5 -1
  11. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/markitdown_toolkit.py +2 -2
  12. camel_ai-0.2.72a8/camel/toolkits/note_taking_toolkit.py +279 -0
  13. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/openai_image_toolkit.py +5 -5
  14. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/origene_mcp_toolkit.py +13 -11
  15. camel_ai-0.2.72a8/camel/toolkits/screenshot_toolkit.py +128 -0
  16. camel_ai-0.2.72a8/camel/toolkits/web_deploy_toolkit.py +1024 -0
  17. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/pyproject.toml +3 -3
  18. camel_ai-0.2.72a5/camel/toolkits/note_taking_toolkit.py +0 -99
  19. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/.gitignore +0 -0
  20. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/LICENSE +0 -0
  21. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/README.md +0 -0
  22. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/agents/__init__.py +0 -0
  23. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/agents/_types.py +0 -0
  24. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/agents/_utils.py +0 -0
  25. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/agents/base.py +0 -0
  26. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/agents/critic_agent.py +0 -0
  27. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/agents/deductive_reasoner_agent.py +0 -0
  28. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/agents/embodied_agent.py +0 -0
  29. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/agents/knowledge_graph_agent.py +0 -0
  30. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/agents/mcp_agent.py +0 -0
  31. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/agents/multi_hop_generator_agent.py +0 -0
  32. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/agents/programmed_agent_instruction.py +0 -0
  33. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/agents/repo_agent.py +0 -0
  34. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/agents/role_assignment_agent.py +0 -0
  35. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/agents/search_agent.py +0 -0
  36. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/agents/task_agent.py +0 -0
  37. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/agents/tool_agents/__init__.py +0 -0
  38. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/agents/tool_agents/base.py +0 -0
  39. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/agents/tool_agents/hugging_face_tool_agent.py +0 -0
  40. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/benchmarks/__init__.py +0 -0
  41. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/benchmarks/apibank.py +0 -0
  42. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/benchmarks/apibench.py +0 -0
  43. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/benchmarks/base.py +0 -0
  44. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/benchmarks/browsecomp.py +0 -0
  45. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/benchmarks/gaia.py +0 -0
  46. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/benchmarks/mock_website/README.md +0 -0
  47. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/benchmarks/mock_website/mock_web.py +0 -0
  48. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/benchmarks/mock_website/requirements.txt +0 -0
  49. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/benchmarks/mock_website/shopping_mall/app.py +0 -0
  50. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/benchmarks/mock_website/task.json +0 -0
  51. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/benchmarks/nexus.py +0 -0
  52. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/benchmarks/ragbench.py +0 -0
  53. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/bots/__init__.py +0 -0
  54. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/bots/discord/__init__.py +0 -0
  55. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/bots/discord/discord_app.py +0 -0
  56. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/bots/discord/discord_installation.py +0 -0
  57. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/bots/discord/discord_store.py +0 -0
  58. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/bots/slack/__init__.py +0 -0
  59. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/bots/slack/models.py +0 -0
  60. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/bots/slack/slack_app.py +0 -0
  61. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/bots/telegram_bot.py +0 -0
  62. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/configs/__init__.py +0 -0
  63. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/configs/aiml_config.py +0 -0
  64. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/configs/anthropic_config.py +0 -0
  65. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/configs/base_config.py +0 -0
  66. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/configs/bedrock_config.py +0 -0
  67. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/configs/cohere_config.py +0 -0
  68. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/configs/crynux_config.py +0 -0
  69. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/configs/deepseek_config.py +0 -0
  70. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/configs/gemini_config.py +0 -0
  71. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/configs/groq_config.py +0 -0
  72. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/configs/internlm_config.py +0 -0
  73. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/configs/litellm_config.py +0 -0
  74. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/configs/lmstudio_config.py +0 -0
  75. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/configs/mistral_config.py +0 -0
  76. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/configs/modelscope_config.py +0 -0
  77. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/configs/moonshot_config.py +0 -0
  78. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/configs/netmind_config.py +0 -0
  79. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/configs/novita_config.py +0 -0
  80. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/configs/nvidia_config.py +0 -0
  81. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/configs/ollama_config.py +0 -0
  82. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/configs/openai_config.py +0 -0
  83. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/configs/openrouter_config.py +0 -0
  84. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/configs/ppio_config.py +0 -0
  85. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/configs/qianfan_config.py +0 -0
  86. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/configs/qwen_config.py +0 -0
  87. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/configs/reka_config.py +0 -0
  88. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/configs/samba_config.py +0 -0
  89. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/configs/sglang_config.py +0 -0
  90. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/configs/siliconflow_config.py +0 -0
  91. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/configs/togetherai_config.py +0 -0
  92. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/configs/vllm_config.py +0 -0
  93. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/configs/watsonx_config.py +0 -0
  94. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/configs/yi_config.py +0 -0
  95. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/configs/zhipuai_config.py +0 -0
  96. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/data_collectors/__init__.py +0 -0
  97. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/data_collectors/alpaca_collector.py +0 -0
  98. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/data_collectors/base.py +0 -0
  99. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/data_collectors/sharegpt_collector.py +0 -0
  100. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/datagen/__init__.py +0 -0
  101. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/datagen/cot_datagen.py +0 -0
  102. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/datagen/evol_instruct/__init__.py +0 -0
  103. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/datagen/evol_instruct/evol_instruct.py +0 -0
  104. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/datagen/evol_instruct/scorer.py +0 -0
  105. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/datagen/evol_instruct/templates.py +0 -0
  106. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/datagen/self_improving_cot.py +0 -0
  107. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/datagen/self_instruct/__init__.py +0 -0
  108. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/datagen/self_instruct/filter/__init__.py +0 -0
  109. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/datagen/self_instruct/filter/filter_function.py +0 -0
  110. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/datagen/self_instruct/filter/filter_registry.py +0 -0
  111. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/datagen/self_instruct/filter/instruction_filter.py +0 -0
  112. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/datagen/self_instruct/self_instruct.py +0 -0
  113. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/datagen/self_instruct/templates.py +0 -0
  114. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/datagen/source2synth/__init__.py +0 -0
  115. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/datagen/source2synth/data_processor.py +0 -0
  116. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/datagen/source2synth/models.py +0 -0
  117. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/datagen/source2synth/user_data_processor_config.py +0 -0
  118. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/datahubs/__init__.py +0 -0
  119. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/datahubs/base.py +0 -0
  120. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/datahubs/huggingface.py +0 -0
  121. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/datahubs/models.py +0 -0
  122. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/datasets/__init__.py +0 -0
  123. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/datasets/base_generator.py +0 -0
  124. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/datasets/few_shot_generator.py +0 -0
  125. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/datasets/models.py +0 -0
  126. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/datasets/self_instruct_generator.py +0 -0
  127. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/datasets/static_dataset.py +0 -0
  128. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/embeddings/__init__.py +0 -0
  129. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/embeddings/azure_embedding.py +0 -0
  130. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/embeddings/base.py +0 -0
  131. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/embeddings/gemini_embedding.py +0 -0
  132. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/embeddings/jina_embedding.py +0 -0
  133. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/embeddings/mistral_embedding.py +0 -0
  134. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/embeddings/openai_compatible_embedding.py +0 -0
  135. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/embeddings/openai_embedding.py +0 -0
  136. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/embeddings/sentence_transformers_embeddings.py +0 -0
  137. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/embeddings/together_embedding.py +0 -0
  138. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/embeddings/vlm_embedding.py +0 -0
  139. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/environments/__init__.py +0 -0
  140. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/environments/models.py +0 -0
  141. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/environments/multi_step.py +0 -0
  142. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/environments/rlcards_env.py +0 -0
  143. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/environments/single_step.py +0 -0
  144. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/environments/tic_tac_toe.py +0 -0
  145. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/extractors/__init__.py +0 -0
  146. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/extractors/base.py +0 -0
  147. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/extractors/python_strategies.py +0 -0
  148. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/generators.py +0 -0
  149. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/human.py +0 -0
  150. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/interpreters/__init__.py +0 -0
  151. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/interpreters/base.py +0 -0
  152. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/interpreters/docker/Dockerfile +0 -0
  153. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/interpreters/docker_interpreter.py +0 -0
  154. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/interpreters/e2b_interpreter.py +0 -0
  155. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/interpreters/internal_python_interpreter.py +0 -0
  156. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/interpreters/interpreter_error.py +0 -0
  157. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/interpreters/ipython_interpreter.py +0 -0
  158. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/interpreters/subprocess_interpreter.py +0 -0
  159. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/loaders/__init__.py +0 -0
  160. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/loaders/apify_reader.py +0 -0
  161. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/loaders/base_io.py +0 -0
  162. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/loaders/base_loader.py +0 -0
  163. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/loaders/chunkr_reader.py +0 -0
  164. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/loaders/crawl4ai_reader.py +0 -0
  165. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/loaders/firecrawl_reader.py +0 -0
  166. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/loaders/jina_url_reader.py +0 -0
  167. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/loaders/markitdown.py +0 -0
  168. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/loaders/mineru_extractor.py +0 -0
  169. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/loaders/mistral_reader.py +0 -0
  170. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/loaders/pandas_reader.py +0 -0
  171. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/loaders/scrapegraph_reader.py +0 -0
  172. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/loaders/unstructured_io.py +0 -0
  173. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/logger.py +0 -0
  174. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/memories/__init__.py +0 -0
  175. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/memories/blocks/__init__.py +0 -0
  176. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/memories/blocks/chat_history_block.py +0 -0
  177. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/memories/blocks/vectordb_block.py +0 -0
  178. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/memories/context_creators/__init__.py +0 -0
  179. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/memories/context_creators/score_based.py +0 -0
  180. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/memories/records.py +0 -0
  181. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/messages/__init__.py +0 -0
  182. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/messages/base.py +0 -0
  183. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/messages/conversion/__init__.py +0 -0
  184. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/messages/conversion/alpaca.py +0 -0
  185. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/messages/conversion/conversation_models.py +0 -0
  186. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/messages/conversion/sharegpt/__init__.py +0 -0
  187. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/messages/conversion/sharegpt/function_call_formatter.py +0 -0
  188. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/messages/conversion/sharegpt/hermes/__init__.py +0 -0
  189. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/messages/conversion/sharegpt/hermes/hermes_function_formatter.py +0 -0
  190. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/messages/func_message.py +0 -0
  191. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/__init__.py +0 -0
  192. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/_utils.py +0 -0
  193. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/aiml_model.py +0 -0
  194. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/anthropic_model.py +0 -0
  195. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/aws_bedrock_model.py +0 -0
  196. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/azure_openai_model.py +0 -0
  197. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/base_audio_model.py +0 -0
  198. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/base_model.py +0 -0
  199. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/cohere_model.py +0 -0
  200. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/crynux_model.py +0 -0
  201. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/deepseek_model.py +0 -0
  202. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/fish_audio_model.py +0 -0
  203. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/groq_model.py +0 -0
  204. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/internlm_model.py +0 -0
  205. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/litellm_model.py +0 -0
  206. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/lmstudio_model.py +0 -0
  207. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/mistral_model.py +0 -0
  208. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/model_factory.py +0 -0
  209. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/model_manager.py +0 -0
  210. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/modelscope_model.py +0 -0
  211. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/moonshot_model.py +0 -0
  212. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/nemotron_model.py +0 -0
  213. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/netmind_model.py +0 -0
  214. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/novita_model.py +0 -0
  215. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/nvidia_model.py +0 -0
  216. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/ollama_model.py +0 -0
  217. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/openai_audio_models.py +0 -0
  218. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/openai_compatible_model.py +0 -0
  219. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/openai_model.py +0 -0
  220. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/openrouter_model.py +0 -0
  221. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/ppio_model.py +0 -0
  222. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/qianfan_model.py +0 -0
  223. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/qwen_model.py +0 -0
  224. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/reka_model.py +0 -0
  225. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/reward/__init__.py +0 -0
  226. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/reward/base_reward_model.py +0 -0
  227. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/reward/evaluator.py +0 -0
  228. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/reward/nemotron_model.py +0 -0
  229. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/reward/skywork_model.py +0 -0
  230. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/samba_model.py +0 -0
  231. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/sglang_model.py +0 -0
  232. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/siliconflow_model.py +0 -0
  233. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/stub_model.py +0 -0
  234. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/togetherai_model.py +0 -0
  235. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/vllm_model.py +0 -0
  236. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/volcano_model.py +0 -0
  237. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/watsonx_model.py +0 -0
  238. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/yi_model.py +0 -0
  239. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/models/zhipuai_model.py +0 -0
  240. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/personas/__init__.py +0 -0
  241. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/personas/persona.py +0 -0
  242. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/personas/persona_hub.py +0 -0
  243. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/prompts/__init__.py +0 -0
  244. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/prompts/ai_society.py +0 -0
  245. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/prompts/base.py +0 -0
  246. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/prompts/code.py +0 -0
  247. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/prompts/evaluation.py +0 -0
  248. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/prompts/generate_text_embedding_data.py +0 -0
  249. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/prompts/image_craft.py +0 -0
  250. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/prompts/misalignment.py +0 -0
  251. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/prompts/multi_condition_image_craft.py +0 -0
  252. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/prompts/object_recognition.py +0 -0
  253. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/prompts/persona_hub.py +0 -0
  254. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/prompts/prompt_templates.py +0 -0
  255. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/prompts/role_description_prompt_template.py +0 -0
  256. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/prompts/solution_extraction.py +0 -0
  257. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/prompts/task_prompt_template.py +0 -0
  258. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/prompts/translation.py +0 -0
  259. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/prompts/video_description_prompt.py +0 -0
  260. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/py.typed +0 -0
  261. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/responses/__init__.py +0 -0
  262. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/responses/agent_responses.py +0 -0
  263. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/retrievers/__init__.py +0 -0
  264. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/retrievers/auto_retriever.py +0 -0
  265. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/retrievers/base.py +0 -0
  266. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/retrievers/bm25_retriever.py +0 -0
  267. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/retrievers/cohere_rerank_retriever.py +0 -0
  268. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/retrievers/hybrid_retrival.py +0 -0
  269. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/retrievers/vector_retriever.py +0 -0
  270. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/runtimes/__init__.py +0 -0
  271. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/runtimes/api.py +0 -0
  272. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/runtimes/base.py +0 -0
  273. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/runtimes/configs.py +0 -0
  274. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/runtimes/daytona_runtime.py +0 -0
  275. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/runtimes/docker_runtime.py +0 -0
  276. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/runtimes/llm_guard_runtime.py +0 -0
  277. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/runtimes/remote_http_runtime.py +0 -0
  278. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/runtimes/ubuntu_docker_runtime.py +0 -0
  279. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/runtimes/utils/__init__.py +0 -0
  280. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/runtimes/utils/function_risk_toolkit.py +0 -0
  281. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/runtimes/utils/ignore_risk_toolkit.py +0 -0
  282. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/schemas/__init__.py +0 -0
  283. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/schemas/base.py +0 -0
  284. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/schemas/openai_converter.py +0 -0
  285. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/schemas/outlines_converter.py +0 -0
  286. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/services/agent_openapi_server.py +0 -0
  287. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/societies/__init__.py +0 -0
  288. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/societies/babyagi_playing.py +0 -0
  289. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/societies/role_playing.py +0 -0
  290. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/societies/workforce/__init__.py +0 -0
  291. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/societies/workforce/base.py +0 -0
  292. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/societies/workforce/prompts.py +0 -0
  293. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/societies/workforce/role_playing_worker.py +0 -0
  294. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/societies/workforce/single_agent_worker.py +0 -0
  295. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/societies/workforce/structured_output_handler.py +0 -0
  296. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/societies/workforce/task_channel.py +0 -0
  297. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/societies/workforce/utils.py +0 -0
  298. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/societies/workforce/worker.py +0 -0
  299. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/societies/workforce/workforce.py +0 -0
  300. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/societies/workforce/workforce_logger.py +0 -0
  301. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/storages/__init__.py +0 -0
  302. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/storages/graph_storages/__init__.py +0 -0
  303. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/storages/graph_storages/base.py +0 -0
  304. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/storages/graph_storages/graph_element.py +0 -0
  305. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/storages/graph_storages/nebula_graph.py +0 -0
  306. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/storages/graph_storages/neo4j_graph.py +0 -0
  307. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/storages/key_value_storages/__init__.py +0 -0
  308. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/storages/key_value_storages/base.py +0 -0
  309. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/storages/key_value_storages/in_memory.py +0 -0
  310. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/storages/key_value_storages/json.py +0 -0
  311. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/storages/key_value_storages/mem0_cloud.py +0 -0
  312. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/storages/key_value_storages/redis.py +0 -0
  313. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/storages/object_storages/__init__.py +0 -0
  314. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/storages/object_storages/amazon_s3.py +0 -0
  315. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/storages/object_storages/azure_blob.py +0 -0
  316. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/storages/object_storages/base.py +0 -0
  317. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/storages/object_storages/google_cloud.py +0 -0
  318. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/storages/vectordb_storages/base.py +0 -0
  319. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/storages/vectordb_storages/chroma.py +0 -0
  320. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/storages/vectordb_storages/faiss.py +0 -0
  321. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/storages/vectordb_storages/milvus.py +0 -0
  322. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/storages/vectordb_storages/oceanbase.py +0 -0
  323. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/storages/vectordb_storages/pgvector.py +0 -0
  324. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/storages/vectordb_storages/qdrant.py +0 -0
  325. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/storages/vectordb_storages/tidb.py +0 -0
  326. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/storages/vectordb_storages/weaviate.py +0 -0
  327. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/tasks/__init__.py +0 -0
  328. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/tasks/task.py +0 -0
  329. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/tasks/task_prompt.py +0 -0
  330. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/terminators/__init__.py +0 -0
  331. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/terminators/base.py +0 -0
  332. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/terminators/response_terminator.py +0 -0
  333. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/terminators/token_limit_terminator.py +0 -0
  334. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/aci_toolkit.py +0 -0
  335. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/arxiv_toolkit.py +0 -0
  336. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/ask_news_toolkit.py +0 -0
  337. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/async_browser_toolkit.py +0 -0
  338. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/audio_analysis_toolkit.py +0 -0
  339. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/base.py +0 -0
  340. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/bohrium_toolkit.py +0 -0
  341. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/browser_toolkit.py +0 -0
  342. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/browser_toolkit_commons.py +0 -0
  343. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/code_execution.py +0 -0
  344. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/craw4ai_toolkit.py +0 -0
  345. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/dappier_toolkit.py +0 -0
  346. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/data_commons_toolkit.py +0 -0
  347. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/edgeone_pages_mcp_toolkit.py +0 -0
  348. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/excel_toolkit.py +0 -0
  349. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/file_write_toolkit.py +0 -0
  350. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/function_tool.py +0 -0
  351. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/github_toolkit.py +0 -0
  352. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/google_calendar_toolkit.py +0 -0
  353. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/google_drive_mcp_toolkit.py +0 -0
  354. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/google_maps_toolkit.py +0 -0
  355. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/google_scholar_toolkit.py +0 -0
  356. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/hybrid_browser_toolkit/__init__.py +0 -0
  357. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/hybrid_browser_toolkit/actions.py +0 -0
  358. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/hybrid_browser_toolkit/agent.py +0 -0
  359. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/hybrid_browser_toolkit/browser_session.py +0 -0
  360. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/hybrid_browser_toolkit/config_loader.py +0 -0
  361. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit.py +0 -0
  362. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/hybrid_browser_toolkit/snapshot.py +0 -0
  363. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/hybrid_browser_toolkit/stealth_script.js +0 -0
  364. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/hybrid_browser_toolkit/unified_analyzer.js +0 -0
  365. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/image_analysis_toolkit.py +0 -0
  366. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/jina_reranker_toolkit.py +0 -0
  367. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/klavis_toolkit.py +0 -0
  368. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/linkedin_toolkit.py +0 -0
  369. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/math_toolkit.py +0 -0
  370. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/mcp_toolkit.py +0 -0
  371. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/memory_toolkit.py +0 -0
  372. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/meshy_toolkit.py +0 -0
  373. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/message_agent_toolkit.py +0 -0
  374. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/mineru_toolkit.py +0 -0
  375. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/networkx_toolkit.py +0 -0
  376. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/notion_toolkit.py +0 -0
  377. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/open_api_specs/biztoc/__init__.py +0 -0
  378. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/open_api_specs/biztoc/ai-plugin.json +0 -0
  379. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/open_api_specs/biztoc/openapi.yaml +0 -0
  380. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/open_api_specs/coursera/__init__.py +0 -0
  381. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/open_api_specs/coursera/openapi.yaml +0 -0
  382. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/open_api_specs/create_qr_code/__init__.py +0 -0
  383. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/open_api_specs/create_qr_code/openapi.yaml +0 -0
  384. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/open_api_specs/klarna/__init__.py +0 -0
  385. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/open_api_specs/klarna/openapi.yaml +0 -0
  386. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/open_api_specs/nasa_apod/__init__.py +0 -0
  387. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/open_api_specs/nasa_apod/openapi.yaml +0 -0
  388. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/open_api_specs/outschool/__init__.py +0 -0
  389. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/open_api_specs/outschool/ai-plugin.json +0 -0
  390. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/open_api_specs/outschool/openapi.yaml +0 -0
  391. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/open_api_specs/outschool/paths/__init__.py +0 -0
  392. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/open_api_specs/outschool/paths/get_classes.py +0 -0
  393. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/open_api_specs/outschool/paths/search_teachers.py +0 -0
  394. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/open_api_specs/security_config.py +0 -0
  395. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/open_api_specs/speak/__init__.py +0 -0
  396. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/open_api_specs/speak/openapi.yaml +0 -0
  397. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/open_api_specs/web_scraper/__init__.py +0 -0
  398. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/open_api_specs/web_scraper/ai-plugin.json +0 -0
  399. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/open_api_specs/web_scraper/openapi.yaml +0 -0
  400. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/open_api_specs/web_scraper/paths/__init__.py +0 -0
  401. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/open_api_specs/web_scraper/paths/scraper.py +0 -0
  402. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/open_api_toolkit.py +0 -0
  403. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/openai_agent_toolkit.py +0 -0
  404. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/openbb_toolkit.py +0 -0
  405. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/page_script.js +0 -0
  406. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/playwright_mcp_toolkit.py +0 -0
  407. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/pptx_toolkit.py +0 -0
  408. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/pubmed_toolkit.py +0 -0
  409. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/pulse_mcp_search_toolkit.py +0 -0
  410. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/pyautogui_toolkit.py +0 -0
  411. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/reddit_toolkit.py +0 -0
  412. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/retrieval_toolkit.py +0 -0
  413. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/search_toolkit.py +0 -0
  414. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/searxng_toolkit.py +0 -0
  415. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/semantic_scholar_toolkit.py +0 -0
  416. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/slack_toolkit.py +0 -0
  417. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/stripe_toolkit.py +0 -0
  418. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/sympy_toolkit.py +0 -0
  419. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/task_planning_toolkit.py +0 -0
  420. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/terminal_toolkit.py +0 -0
  421. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/thinking_toolkit.py +0 -0
  422. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/twitter_toolkit.py +0 -0
  423. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/video_analysis_toolkit.py +0 -0
  424. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/video_download_toolkit.py +0 -0
  425. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/weather_toolkit.py +0 -0
  426. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/whatsapp_toolkit.py +0 -0
  427. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/wolfram_alpha_toolkit.py +0 -0
  428. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/toolkits/zapier_toolkit.py +0 -0
  429. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/types/__init__.py +0 -0
  430. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/types/agents/__init__.py +0 -0
  431. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/types/agents/tool_calling_record.py +0 -0
  432. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/types/enums.py +0 -0
  433. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/types/mcp_registries.py +0 -0
  434. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/types/openai_types.py +0 -0
  435. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/types/unified_model_type.py +0 -0
  436. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/utils/__init__.py +0 -0
  437. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/utils/async_func.py +0 -0
  438. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/utils/chunker/__init__.py +0 -0
  439. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/utils/chunker/base.py +0 -0
  440. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/utils/chunker/code_chunker.py +0 -0
  441. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/utils/chunker/uio_chunker.py +0 -0
  442. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/utils/commons.py +0 -0
  443. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/utils/constants.py +0 -0
  444. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/utils/deduplication.py +0 -0
  445. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/utils/filename.py +0 -0
  446. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/utils/langfuse.py +0 -0
  447. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/utils/mcp.py +0 -0
  448. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/utils/mcp_client.py +0 -0
  449. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/utils/message_summarizer.py +0 -0
  450. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/utils/response_format.py +0 -0
  451. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/utils/token_counting.py +0 -0
  452. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/utils/tool_result.py +0 -0
  453. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/verifiers/__init__.py +0 -0
  454. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/verifiers/base.py +0 -0
  455. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/verifiers/math_verifier.py +0 -0
  456. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/verifiers/models.py +0 -0
  457. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/verifiers/physics_verifier.py +0 -0
  458. {camel_ai-0.2.72a5 → camel_ai-0.2.72a8}/camel/verifiers/python_verifier.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: camel-ai
3
- Version: 0.2.72a5
3
+ Version: 0.2.72a8
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
@@ -127,7 +127,7 @@ Requires-Dist: sympy<2,>=1.13.3; extra == 'all'
127
127
  Requires-Dist: tabulate>=0.9.0; extra == 'all'
128
128
  Requires-Dist: tavily-python<0.6,>=0.5.0; extra == 'all'
129
129
  Requires-Dist: textblob<0.18,>=0.17.1; extra == 'all'
130
- Requires-Dist: traceroot==0.0.4a2; extra == 'all'
130
+ Requires-Dist: traceroot==0.0.4a4; extra == 'all'
131
131
  Requires-Dist: transformers<5,>=4; extra == 'all'
132
132
  Requires-Dist: tree-sitter-python<0.24,>=0.23.6; extra == 'all'
133
133
  Requires-Dist: tree-sitter<0.24,>=0.23.2; extra == 'all'
@@ -191,7 +191,7 @@ Requires-Dist: ipykernel<7,>=6.0.0; extra == 'dev-tools'
191
191
  Requires-Dist: jupyter-client<9,>=8.6.2; extra == 'dev-tools'
192
192
  Requires-Dist: langfuse>=2.60.5; extra == 'dev-tools'
193
193
  Requires-Dist: mcp>=1.3.0; extra == 'dev-tools'
194
- Requires-Dist: traceroot==0.0.4a2; extra == 'dev-tools'
194
+ Requires-Dist: traceroot==0.0.4a4; extra == 'dev-tools'
195
195
  Requires-Dist: tree-sitter-python<0.24,>=0.23.6; extra == 'dev-tools'
196
196
  Requires-Dist: tree-sitter<0.24,>=0.23.2; extra == 'dev-tools'
197
197
  Requires-Dist: typer>=0.15.2; extra == 'dev-tools'
@@ -14,7 +14,7 @@
14
14
 
15
15
  from camel.logger import disable_logging, enable_logging, set_log_level
16
16
 
17
- __version__ = '0.2.72a5'
17
+ __version__ = '0.2.72a8'
18
18
 
19
19
  __all__ = [
20
20
  '__version__',
@@ -375,6 +375,11 @@ class ChatAgent(BaseAgent):
375
375
  pause_event (Optional[asyncio.Event]): Event to signal pause of the
376
376
  agent's operation. When clear, the agent will pause its execution.
377
377
  (default: :obj:`None`)
378
+ prune_tool_calls_from_memory (bool): Whether to clean tool
379
+ call messages from memory after response generation to save token
380
+ usage. When enabled, removes FUNCTION/TOOL role messages and
381
+ ASSISTANT messages with tool_calls after each step.
382
+ (default: :obj:`False`)
378
383
  """
379
384
 
380
385
  def __init__(
@@ -411,6 +416,7 @@ class ChatAgent(BaseAgent):
411
416
  tool_execution_timeout: Optional[float] = None,
412
417
  mask_tool_output: bool = False,
413
418
  pause_event: Optional[asyncio.Event] = None,
419
+ prune_tool_calls_from_memory: bool = False,
414
420
  ) -> None:
415
421
  if isinstance(model, ModelManager):
416
422
  self.model_backend = model
@@ -492,6 +498,7 @@ class ChatAgent(BaseAgent):
492
498
  self._image_retry_count: Dict[str, int] = {}
493
499
  # Store images to attach to next user message
494
500
  self.pause_event = pause_event
501
+ self.prune_tool_calls_from_memory = prune_tool_calls_from_memory
495
502
 
496
503
  def reset(self):
497
504
  r"""Resets the :obj:`ChatAgent` to its initial state."""
@@ -1472,6 +1479,10 @@ class ChatAgent(BaseAgent):
1472
1479
 
1473
1480
  self._record_final_output(response.output_messages)
1474
1481
 
1482
+ # Clean tool call messages from memory after response generation
1483
+ if self.prune_tool_calls_from_memory and tool_call_records:
1484
+ self.memory.clean_tool_calls()
1485
+
1475
1486
  return self._convert_to_chatagent_response(
1476
1487
  response,
1477
1488
  tool_call_records,
@@ -1730,6 +1741,10 @@ class ChatAgent(BaseAgent):
1730
1741
 
1731
1742
  self._record_final_output(response.output_messages)
1732
1743
 
1744
+ # Clean tool call messages from memory after response generation
1745
+ if self.prune_tool_calls_from_memory and tool_call_records:
1746
+ self.memory.clean_tool_calls()
1747
+
1733
1748
  return self._convert_to_chatagent_response(
1734
1749
  response,
1735
1750
  tool_call_records,
@@ -2896,21 +2911,13 @@ class ChatAgent(BaseAgent):
2896
2911
  status_response
2897
2912
  ) in self._execute_tools_sync_with_status_accumulator(
2898
2913
  accumulated_tool_calls,
2899
- content_accumulator,
2900
- step_token_usage,
2901
2914
  tool_call_records,
2902
2915
  ):
2903
2916
  yield status_response
2904
2917
 
2905
- # Yield "Sending back result to model" status
2918
+ # Log sending status instead of adding to content
2906
2919
  if tool_call_records:
2907
- sending_status = self._create_tool_status_response_with_accumulator( # noqa: E501
2908
- content_accumulator,
2909
- "\n------\n\nSending back result to model\n\n",
2910
- "tool_sending",
2911
- step_token_usage,
2912
- )
2913
- yield sending_status
2920
+ logger.info("Sending back result to model")
2914
2921
 
2915
2922
  # Record final message only if we have content AND no tool
2916
2923
  # calls. If there are tool calls, _record_tool_calling
@@ -3008,15 +3015,13 @@ class ChatAgent(BaseAgent):
3008
3015
  def _execute_tools_sync_with_status_accumulator(
3009
3016
  self,
3010
3017
  accumulated_tool_calls: Dict[str, Any],
3011
- content_accumulator: StreamContentAccumulator,
3012
- step_token_usage: Dict[str, int],
3013
3018
  tool_call_records: List[ToolCallingRecord],
3014
3019
  ) -> Generator[ChatAgentResponse, None, None]:
3015
3020
  r"""Execute multiple tools synchronously with
3016
3021
  proper content accumulation, using threads+queue for
3017
3022
  non-blocking status streaming."""
3018
3023
 
3019
- def tool_worker(tool_func, args, result_queue, tool_call_data):
3024
+ def tool_worker(result_queue, tool_call_data):
3020
3025
  try:
3021
3026
  tool_call_record = self._execute_tool_from_stream_data(
3022
3027
  tool_call_data
@@ -3052,36 +3057,22 @@ class ChatAgent(BaseAgent):
3052
3057
  )
3053
3058
  thread.start()
3054
3059
 
3055
- status_message = (
3056
- f"\nCalling function: {function_name} "
3057
- f"with arguments:\n{args}\n"
3060
+ # Log debug info instead of adding to content
3061
+ logger.info(
3062
+ f"Calling function: {function_name} with arguments: {args}"
3058
3063
  )
3059
- status_status = self._create_tool_status_response_with_accumulator(
3060
- content_accumulator,
3061
- status_message,
3062
- "tool_calling",
3063
- step_token_usage,
3064
- )
3065
- yield status_status
3064
+
3066
3065
  # wait for tool thread to finish with optional timeout
3067
3066
  thread.join(self.tool_execution_timeout)
3068
3067
 
3069
3068
  # If timeout occurred, mark as error and continue
3070
3069
  if thread.is_alive():
3071
- timeout_msg = (
3072
- f"\nFunction '{function_name}' timed out after "
3073
- f"{self.tool_execution_timeout} seconds.\n---------\n"
3074
- )
3075
- timeout_status = (
3076
- self._create_tool_status_response_with_accumulator(
3077
- content_accumulator,
3078
- timeout_msg,
3079
- "tool_timeout",
3080
- step_token_usage,
3081
- )
3070
+ # Log timeout info instead of adding to content
3071
+ logger.warning(
3072
+ f"Function '{function_name}' timed out after "
3073
+ f"{self.tool_execution_timeout} seconds"
3082
3074
  )
3083
- yield timeout_status
3084
- logger.error(timeout_msg.strip())
3075
+
3085
3076
  # Detach thread (it may still finish later). Skip recording.
3086
3077
  continue
3087
3078
 
@@ -3091,23 +3082,17 @@ class ChatAgent(BaseAgent):
3091
3082
  tool_call_records.append(tool_call_record)
3092
3083
  raw_result = tool_call_record.result
3093
3084
  result_str = str(raw_result)
3094
- status_message = (
3095
- f"\nFunction output: {result_str}\n---------\n"
3096
- )
3097
- output_status = (
3098
- self._create_tool_status_response_with_accumulator(
3099
- content_accumulator,
3100
- status_message,
3101
- "tool_output",
3102
- step_token_usage,
3103
- [tool_call_record],
3104
- )
3105
- )
3106
- yield output_status
3085
+
3086
+ # Log debug info instead of adding to content
3087
+ logger.info(f"Function output: {result_str}")
3107
3088
  else:
3108
3089
  # Error already logged
3109
3090
  continue
3110
3091
 
3092
+ # Ensure this function remains a generator (required by type signature)
3093
+ return
3094
+ yield # This line is never reached but makes this a generator function
3095
+
3111
3096
  def _execute_tool_from_stream_data(
3112
3097
  self, tool_call_data: Dict[str, Any]
3113
3098
  ) -> Optional[ToolCallingRecord]:
@@ -3300,11 +3285,20 @@ class ChatAgent(BaseAgent):
3300
3285
  return
3301
3286
 
3302
3287
  # Start async streaming response
3288
+ last_response = None
3303
3289
  async for response in self._astream_response(
3304
3290
  openai_messages, num_tokens, response_format
3305
3291
  ):
3292
+ last_response = response
3306
3293
  yield response
3307
3294
 
3295
+ # Clean tool call messages from memory after response generation
3296
+ if self.prune_tool_calls_from_memory and last_response:
3297
+ # Extract tool_calls from the last response info
3298
+ tool_calls = last_response.info.get("tool_calls", [])
3299
+ if tool_calls:
3300
+ self.memory.clean_tool_calls()
3301
+
3308
3302
  async def _astream_response(
3309
3303
  self,
3310
3304
  openai_messages: List[OpenAIMessage],
@@ -3614,15 +3608,9 @@ class ChatAgent(BaseAgent):
3614
3608
  ):
3615
3609
  yield status_response
3616
3610
 
3617
- # Yield "Sending back result to model" status
3611
+ # Log sending status instead of adding to content
3618
3612
  if tool_call_records:
3619
- sending_status = self._create_tool_status_response_with_accumulator( # noqa: E501
3620
- content_accumulator,
3621
- "\n------\n\nSending back result to model\n\n",
3622
- "tool_sending",
3623
- step_token_usage,
3624
- )
3625
- yield sending_status
3613
+ logger.info("Sending back result to model")
3626
3614
 
3627
3615
  # Record final message only if we have content AND no tool
3628
3616
  # calls. If there are tool calls, _record_tool_calling
@@ -3669,21 +3657,10 @@ class ChatAgent(BaseAgent):
3669
3657
  except json.JSONDecodeError:
3670
3658
  args = tool_call_data['function']['arguments']
3671
3659
 
3672
- status_message = (
3673
- f"\nCalling function: {function_name} "
3674
- f"with arguments:\n{args}\n"
3675
- )
3676
-
3677
- # Immediately yield "Calling function" status
3678
- calling_status = (
3679
- self._create_tool_status_response_with_accumulator(
3680
- content_accumulator,
3681
- status_message,
3682
- "tool_calling",
3683
- step_token_usage,
3684
- )
3660
+ # Log debug info instead of adding to content
3661
+ logger.info(
3662
+ f"Calling function: {function_name} with arguments: {args}"
3685
3663
  )
3686
- yield calling_status
3687
3664
 
3688
3665
  # Start tool execution asynchronously (non-blocking)
3689
3666
  if self.tool_execution_timeout is not None:
@@ -3716,80 +3693,25 @@ class ChatAgent(BaseAgent):
3716
3693
  # Create output status message
3717
3694
  raw_result = tool_call_record.result
3718
3695
  result_str = str(raw_result)
3719
- status_message = (
3720
- f"\nFunction output: {result_str}\n---------\n"
3721
- )
3722
3696
 
3723
- # Yield "Function output" status as soon as this
3724
- # tool completes
3725
- output_status = (
3726
- self._create_tool_status_response_with_accumulator(
3727
- content_accumulator,
3728
- status_message,
3729
- "tool_output",
3730
- step_token_usage,
3731
- [tool_call_record],
3732
- )
3733
- )
3734
- yield output_status
3697
+ # Log debug info instead of adding to content
3698
+ logger.info(f"Function output: {result_str}")
3735
3699
 
3736
3700
  except Exception as e:
3737
3701
  if isinstance(e, asyncio.TimeoutError):
3738
- timeout_msg = (
3739
- f"\nFunction timed out after "
3740
- f"{self.tool_execution_timeout} seconds.\n"
3741
- f"---------\n"
3742
- )
3743
- timeout_status = (
3744
- self._create_tool_status_response_with_accumulator(
3745
- content_accumulator,
3746
- timeout_msg,
3747
- "tool_timeout",
3748
- step_token_usage,
3749
- )
3702
+ # Log timeout info instead of adding to content
3703
+ logger.warning(
3704
+ f"Function timed out after "
3705
+ f"{self.tool_execution_timeout} seconds"
3750
3706
  )
3751
- yield timeout_status
3752
- logger.error("Async tool execution timeout")
3753
3707
  else:
3754
3708
  logger.error(f"Error in async tool execution: {e}")
3755
3709
  continue
3756
3710
 
3757
- def _create_tool_status_response_with_accumulator(
3758
- self,
3759
- accumulator: StreamContentAccumulator,
3760
- status_message: str,
3761
- status_type: str,
3762
- step_token_usage: Dict[str, int],
3763
- tool_calls: Optional[List[ToolCallingRecord]] = None,
3764
- ) -> ChatAgentResponse:
3765
- r"""Create a tool status response using content accumulator."""
3766
-
3767
- # Add this status message to accumulator and get full content
3768
- accumulator.add_tool_status(status_message)
3769
- full_content = accumulator.get_full_content()
3770
-
3771
- message = BaseMessage(
3772
- role_name=self.role_name,
3773
- role_type=self.role_type,
3774
- meta_dict={},
3775
- content=full_content,
3776
- )
3777
-
3778
- return ChatAgentResponse(
3779
- msgs=[message],
3780
- terminated=False,
3781
- info={
3782
- "id": "",
3783
- "usage": step_token_usage.copy(),
3784
- "finish_reasons": [status_type],
3785
- "num_tokens": self._get_token_count(full_content),
3786
- "tool_calls": tool_calls or [],
3787
- "external_tool_requests": None,
3788
- "streaming": True,
3789
- "tool_status": status_type,
3790
- "partial": True,
3791
- },
3792
- )
3711
+ # Ensure this function remains an async generator
3712
+ return
3713
+ # This line is never reached but makes this an async generator function
3714
+ yield
3793
3715
 
3794
3716
  def _create_streaming_response_with_accumulator(
3795
3717
  self,
@@ -3901,6 +3823,7 @@ class ChatAgent(BaseAgent):
3901
3823
  stop_event=self.stop_event,
3902
3824
  tool_execution_timeout=self.tool_execution_timeout,
3903
3825
  pause_event=self.pause_event,
3826
+ prune_tool_calls_from_memory=self.prune_tool_calls_from_memory,
3904
3827
  )
3905
3828
 
3906
3829
  # Copy memory if requested
@@ -88,6 +88,44 @@ class ChatHistoryMemory(AgentMemory):
88
88
  def clear(self) -> None:
89
89
  self._chat_history_block.clear()
90
90
 
91
+ def clean_tool_calls(self) -> None:
92
+ r"""Removes tool call messages from memory.
93
+ This method removes all FUNCTION/TOOL role messages and any ASSISTANT
94
+ messages that contain tool_calls in their meta_dict to save token
95
+ usage.
96
+ """
97
+ from camel.types import OpenAIBackendRole
98
+
99
+ # Get all messages from storage
100
+ record_dicts = self._chat_history_block.storage.load()
101
+ if not record_dicts:
102
+ return
103
+
104
+ # Filter out tool-related messages
105
+ cleaned_records = []
106
+ for record in record_dicts:
107
+ role = record.get('role_at_backend')
108
+
109
+ # Skip FUNCTION messages
110
+ if role == OpenAIBackendRole.FUNCTION.value:
111
+ continue
112
+
113
+ # Skip TOOL messages
114
+ if role == OpenAIBackendRole.TOOL.value:
115
+ continue
116
+
117
+ # Skip ASSISTANT messages with tool_calls
118
+ if role == OpenAIBackendRole.ASSISTANT.value:
119
+ meta_dict = record.get('meta_dict', {})
120
+ if meta_dict and 'tool_calls' in meta_dict:
121
+ continue
122
+
123
+ # Keep all other messages
124
+ cleaned_records.append(record)
125
+
126
+ # Save the cleaned records back to storage
127
+ self._chat_history_block.storage.save(cleaned_records)
128
+
91
129
 
92
130
  class VectorDBMemory(AgentMemory):
93
131
  r"""An agent memory wrapper of :obj:`VectorDBBlock`. This memory queries
@@ -149,6 +149,14 @@ class AgentMemory(MemoryBlock, ABC):
149
149
  """
150
150
  return self.get_context_creator().create_context(self.retrieve())
151
151
 
152
+ def clean_tool_calls(self) -> None:
153
+ r"""Removes tool call messages from memory.
154
+ This is an optional method that can be overridden by subclasses
155
+ to implement cleaning of tool-related messages. By default, it
156
+ does nothing, maintaining backward compatibility.
157
+ """
158
+ pass
159
+
152
160
  def __repr__(self) -> str:
153
161
  r"""Returns a string representation of the AgentMemory.
154
162
 
@@ -243,7 +243,7 @@ class GeminiModel(OpenAICompatibleModel):
243
243
  function_dict = tool.get('function', {})
244
244
  function_dict.pop("strict", None)
245
245
 
246
- # Process parameters to remove anyOf
246
+ # Process parameters to remove anyOf and handle enum/format
247
247
  if 'parameters' in function_dict:
248
248
  params = function_dict['parameters']
249
249
  if 'properties' in params:
@@ -260,6 +260,20 @@ class GeminiModel(OpenAICompatibleModel):
260
260
  'description'
261
261
  ] = prop_value['description']
262
262
 
263
+ # Handle enum and format restrictions for Gemini
264
+ # API enum: only allowed for string type
265
+ if prop_value.get('type') != 'string':
266
+ prop_value.pop('enum', None)
267
+
268
+ # format: only allowed for string, integer, and
269
+ # number types
270
+ if prop_value.get('type') not in [
271
+ 'string',
272
+ 'integer',
273
+ 'number',
274
+ ]:
275
+ prop_value.pop('format', None)
276
+
263
277
  request_config["tools"] = tools
264
278
 
265
279
  return self._client.chat.completions.create(
@@ -283,7 +297,7 @@ class GeminiModel(OpenAICompatibleModel):
283
297
  function_dict = tool.get('function', {})
284
298
  function_dict.pop("strict", None)
285
299
 
286
- # Process parameters to remove anyOf
300
+ # Process parameters to remove anyOf and handle enum/format
287
301
  if 'parameters' in function_dict:
288
302
  params = function_dict['parameters']
289
303
  if 'properties' in params:
@@ -300,6 +314,20 @@ class GeminiModel(OpenAICompatibleModel):
300
314
  'description'
301
315
  ] = prop_value['description']
302
316
 
317
+ # Handle enum and format restrictions for Gemini
318
+ # API enum: only allowed for string type
319
+ if prop_value.get('type') != 'string':
320
+ prop_value.pop('enum', None)
321
+
322
+ # format: only allowed for string, integer, and
323
+ # number types
324
+ if prop_value.get('type') not in [
325
+ 'string',
326
+ 'integer',
327
+ 'number',
328
+ ]:
329
+ prop_value.pop('format', None)
330
+
303
331
  request_config["tools"] = tools
304
332
 
305
333
  return await self._async_client.chat.completions.create(
@@ -42,4 +42,5 @@ __all__ = [
42
42
  'VectorRecord',
43
43
  'VectorDBStatus',
44
44
  'PgVectorStorage',
45
+ 'SurrealStorage',
45
46
  ]