camel-ai 0.2.71a11__tar.gz → 0.2.71a12__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 (453) hide show
  1. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/PKG-INFO +1 -1
  2. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/__init__.py +1 -1
  3. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/agents/chat_agent.py +1 -1
  4. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/societies/workforce/prompts.py +1 -1
  5. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/societies/workforce/role_playing_worker.py +1 -1
  6. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/societies/workforce/worker.py +1 -1
  7. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/societies/workforce/workforce.py +53 -18
  8. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/tasks/task.py +9 -5
  9. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/search_toolkit.py +49 -46
  10. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/utils/tool_result.py +1 -1
  11. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/pyproject.toml +1 -1
  12. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/.gitignore +0 -0
  13. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/LICENSE +0 -0
  14. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/README.md +0 -0
  15. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/agents/__init__.py +0 -0
  16. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/agents/_types.py +0 -0
  17. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/agents/_utils.py +0 -0
  18. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/agents/base.py +0 -0
  19. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/agents/critic_agent.py +0 -0
  20. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/agents/deductive_reasoner_agent.py +0 -0
  21. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/agents/embodied_agent.py +0 -0
  22. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/agents/knowledge_graph_agent.py +0 -0
  23. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/agents/mcp_agent.py +0 -0
  24. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/agents/multi_hop_generator_agent.py +0 -0
  25. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/agents/programmed_agent_instruction.py +0 -0
  26. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/agents/repo_agent.py +0 -0
  27. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/agents/role_assignment_agent.py +0 -0
  28. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/agents/search_agent.py +0 -0
  29. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/agents/task_agent.py +0 -0
  30. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/agents/tool_agents/__init__.py +0 -0
  31. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/agents/tool_agents/base.py +0 -0
  32. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/agents/tool_agents/hugging_face_tool_agent.py +0 -0
  33. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/benchmarks/__init__.py +0 -0
  34. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/benchmarks/apibank.py +0 -0
  35. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/benchmarks/apibench.py +0 -0
  36. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/benchmarks/base.py +0 -0
  37. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/benchmarks/browsecomp.py +0 -0
  38. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/benchmarks/gaia.py +0 -0
  39. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/benchmarks/mock_website/README.md +0 -0
  40. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/benchmarks/mock_website/mock_web.py +0 -0
  41. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/benchmarks/mock_website/requirements.txt +0 -0
  42. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/benchmarks/mock_website/shopping_mall/app.py +0 -0
  43. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/benchmarks/mock_website/task.json +0 -0
  44. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/benchmarks/nexus.py +0 -0
  45. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/benchmarks/ragbench.py +0 -0
  46. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/bots/__init__.py +0 -0
  47. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/bots/discord/__init__.py +0 -0
  48. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/bots/discord/discord_app.py +0 -0
  49. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/bots/discord/discord_installation.py +0 -0
  50. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/bots/discord/discord_store.py +0 -0
  51. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/bots/slack/__init__.py +0 -0
  52. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/bots/slack/models.py +0 -0
  53. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/bots/slack/slack_app.py +0 -0
  54. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/bots/telegram_bot.py +0 -0
  55. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/configs/__init__.py +0 -0
  56. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/configs/aiml_config.py +0 -0
  57. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/configs/anthropic_config.py +0 -0
  58. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/configs/base_config.py +0 -0
  59. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/configs/bedrock_config.py +0 -0
  60. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/configs/cohere_config.py +0 -0
  61. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/configs/crynux_config.py +0 -0
  62. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/configs/deepseek_config.py +0 -0
  63. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/configs/gemini_config.py +0 -0
  64. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/configs/groq_config.py +0 -0
  65. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/configs/internlm_config.py +0 -0
  66. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/configs/litellm_config.py +0 -0
  67. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/configs/lmstudio_config.py +0 -0
  68. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/configs/mistral_config.py +0 -0
  69. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/configs/modelscope_config.py +0 -0
  70. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/configs/moonshot_config.py +0 -0
  71. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/configs/netmind_config.py +0 -0
  72. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/configs/novita_config.py +0 -0
  73. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/configs/nvidia_config.py +0 -0
  74. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/configs/ollama_config.py +0 -0
  75. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/configs/openai_config.py +0 -0
  76. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/configs/openrouter_config.py +0 -0
  77. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/configs/ppio_config.py +0 -0
  78. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/configs/qianfan_config.py +0 -0
  79. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/configs/qwen_config.py +0 -0
  80. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/configs/reka_config.py +0 -0
  81. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/configs/samba_config.py +0 -0
  82. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/configs/sglang_config.py +0 -0
  83. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/configs/siliconflow_config.py +0 -0
  84. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/configs/togetherai_config.py +0 -0
  85. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/configs/vllm_config.py +0 -0
  86. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/configs/watsonx_config.py +0 -0
  87. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/configs/yi_config.py +0 -0
  88. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/configs/zhipuai_config.py +0 -0
  89. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/data_collectors/__init__.py +0 -0
  90. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/data_collectors/alpaca_collector.py +0 -0
  91. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/data_collectors/base.py +0 -0
  92. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/data_collectors/sharegpt_collector.py +0 -0
  93. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/datagen/__init__.py +0 -0
  94. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/datagen/cot_datagen.py +0 -0
  95. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/datagen/evol_instruct/__init__.py +0 -0
  96. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/datagen/evol_instruct/evol_instruct.py +0 -0
  97. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/datagen/evol_instruct/scorer.py +0 -0
  98. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/datagen/evol_instruct/templates.py +0 -0
  99. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/datagen/self_improving_cot.py +0 -0
  100. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/datagen/self_instruct/__init__.py +0 -0
  101. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/datagen/self_instruct/filter/__init__.py +0 -0
  102. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/datagen/self_instruct/filter/filter_function.py +0 -0
  103. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/datagen/self_instruct/filter/filter_registry.py +0 -0
  104. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/datagen/self_instruct/filter/instruction_filter.py +0 -0
  105. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/datagen/self_instruct/self_instruct.py +0 -0
  106. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/datagen/self_instruct/templates.py +0 -0
  107. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/datagen/source2synth/__init__.py +0 -0
  108. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/datagen/source2synth/data_processor.py +0 -0
  109. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/datagen/source2synth/models.py +0 -0
  110. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/datagen/source2synth/user_data_processor_config.py +0 -0
  111. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/datahubs/__init__.py +0 -0
  112. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/datahubs/base.py +0 -0
  113. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/datahubs/huggingface.py +0 -0
  114. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/datahubs/models.py +0 -0
  115. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/datasets/__init__.py +0 -0
  116. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/datasets/base_generator.py +0 -0
  117. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/datasets/few_shot_generator.py +0 -0
  118. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/datasets/models.py +0 -0
  119. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/datasets/self_instruct_generator.py +0 -0
  120. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/datasets/static_dataset.py +0 -0
  121. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/embeddings/__init__.py +0 -0
  122. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/embeddings/azure_embedding.py +0 -0
  123. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/embeddings/base.py +0 -0
  124. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/embeddings/gemini_embedding.py +0 -0
  125. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/embeddings/jina_embedding.py +0 -0
  126. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/embeddings/mistral_embedding.py +0 -0
  127. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/embeddings/openai_compatible_embedding.py +0 -0
  128. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/embeddings/openai_embedding.py +0 -0
  129. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/embeddings/sentence_transformers_embeddings.py +0 -0
  130. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/embeddings/together_embedding.py +0 -0
  131. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/embeddings/vlm_embedding.py +0 -0
  132. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/environments/__init__.py +0 -0
  133. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/environments/models.py +0 -0
  134. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/environments/multi_step.py +0 -0
  135. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/environments/rlcards_env.py +0 -0
  136. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/environments/single_step.py +0 -0
  137. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/environments/tic_tac_toe.py +0 -0
  138. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/extractors/__init__.py +0 -0
  139. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/extractors/base.py +0 -0
  140. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/extractors/python_strategies.py +0 -0
  141. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/generators.py +0 -0
  142. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/human.py +0 -0
  143. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/interpreters/__init__.py +0 -0
  144. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/interpreters/base.py +0 -0
  145. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/interpreters/docker/Dockerfile +0 -0
  146. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/interpreters/docker_interpreter.py +0 -0
  147. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/interpreters/e2b_interpreter.py +0 -0
  148. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/interpreters/internal_python_interpreter.py +0 -0
  149. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/interpreters/interpreter_error.py +0 -0
  150. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/interpreters/ipython_interpreter.py +0 -0
  151. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/interpreters/subprocess_interpreter.py +0 -0
  152. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/loaders/__init__.py +0 -0
  153. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/loaders/apify_reader.py +0 -0
  154. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/loaders/base_io.py +0 -0
  155. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/loaders/base_loader.py +0 -0
  156. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/loaders/chunkr_reader.py +0 -0
  157. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/loaders/crawl4ai_reader.py +0 -0
  158. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/loaders/firecrawl_reader.py +0 -0
  159. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/loaders/jina_url_reader.py +0 -0
  160. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/loaders/markitdown.py +0 -0
  161. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/loaders/mineru_extractor.py +0 -0
  162. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/loaders/mistral_reader.py +0 -0
  163. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/loaders/pandas_reader.py +0 -0
  164. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/loaders/scrapegraph_reader.py +0 -0
  165. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/loaders/unstructured_io.py +0 -0
  166. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/logger.py +0 -0
  167. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/memories/__init__.py +0 -0
  168. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/memories/agent_memories.py +0 -0
  169. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/memories/base.py +0 -0
  170. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/memories/blocks/__init__.py +0 -0
  171. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/memories/blocks/chat_history_block.py +0 -0
  172. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/memories/blocks/vectordb_block.py +0 -0
  173. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/memories/context_creators/__init__.py +0 -0
  174. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/memories/context_creators/score_based.py +0 -0
  175. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/memories/records.py +0 -0
  176. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/messages/__init__.py +0 -0
  177. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/messages/base.py +0 -0
  178. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/messages/conversion/__init__.py +0 -0
  179. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/messages/conversion/alpaca.py +0 -0
  180. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/messages/conversion/conversation_models.py +0 -0
  181. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/messages/conversion/sharegpt/__init__.py +0 -0
  182. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/messages/conversion/sharegpt/function_call_formatter.py +0 -0
  183. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/messages/conversion/sharegpt/hermes/__init__.py +0 -0
  184. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/messages/conversion/sharegpt/hermes/hermes_function_formatter.py +0 -0
  185. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/messages/func_message.py +0 -0
  186. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/__init__.py +0 -0
  187. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/_utils.py +0 -0
  188. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/aiml_model.py +0 -0
  189. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/anthropic_model.py +0 -0
  190. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/aws_bedrock_model.py +0 -0
  191. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/azure_openai_model.py +0 -0
  192. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/base_audio_model.py +0 -0
  193. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/base_model.py +0 -0
  194. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/cohere_model.py +0 -0
  195. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/crynux_model.py +0 -0
  196. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/deepseek_model.py +0 -0
  197. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/fish_audio_model.py +0 -0
  198. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/gemini_model.py +0 -0
  199. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/groq_model.py +0 -0
  200. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/internlm_model.py +0 -0
  201. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/litellm_model.py +0 -0
  202. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/lmstudio_model.py +0 -0
  203. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/mistral_model.py +0 -0
  204. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/model_factory.py +0 -0
  205. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/model_manager.py +0 -0
  206. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/modelscope_model.py +0 -0
  207. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/moonshot_model.py +0 -0
  208. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/nemotron_model.py +0 -0
  209. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/netmind_model.py +0 -0
  210. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/novita_model.py +0 -0
  211. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/nvidia_model.py +0 -0
  212. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/ollama_model.py +0 -0
  213. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/openai_audio_models.py +0 -0
  214. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/openai_compatible_model.py +0 -0
  215. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/openai_model.py +0 -0
  216. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/openrouter_model.py +0 -0
  217. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/ppio_model.py +0 -0
  218. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/qianfan_model.py +0 -0
  219. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/qwen_model.py +0 -0
  220. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/reka_model.py +0 -0
  221. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/reward/__init__.py +0 -0
  222. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/reward/base_reward_model.py +0 -0
  223. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/reward/evaluator.py +0 -0
  224. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/reward/nemotron_model.py +0 -0
  225. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/reward/skywork_model.py +0 -0
  226. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/samba_model.py +0 -0
  227. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/sglang_model.py +0 -0
  228. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/siliconflow_model.py +0 -0
  229. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/stub_model.py +0 -0
  230. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/togetherai_model.py +0 -0
  231. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/vllm_model.py +0 -0
  232. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/volcano_model.py +0 -0
  233. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/watsonx_model.py +0 -0
  234. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/yi_model.py +0 -0
  235. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/models/zhipuai_model.py +0 -0
  236. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/personas/__init__.py +0 -0
  237. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/personas/persona.py +0 -0
  238. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/personas/persona_hub.py +0 -0
  239. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/prompts/__init__.py +0 -0
  240. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/prompts/ai_society.py +0 -0
  241. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/prompts/base.py +0 -0
  242. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/prompts/code.py +0 -0
  243. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/prompts/evaluation.py +0 -0
  244. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/prompts/generate_text_embedding_data.py +0 -0
  245. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/prompts/image_craft.py +0 -0
  246. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/prompts/misalignment.py +0 -0
  247. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/prompts/multi_condition_image_craft.py +0 -0
  248. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/prompts/object_recognition.py +0 -0
  249. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/prompts/persona_hub.py +0 -0
  250. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/prompts/prompt_templates.py +0 -0
  251. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/prompts/role_description_prompt_template.py +0 -0
  252. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/prompts/solution_extraction.py +0 -0
  253. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/prompts/task_prompt_template.py +0 -0
  254. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/prompts/translation.py +0 -0
  255. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/prompts/video_description_prompt.py +0 -0
  256. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/py.typed +0 -0
  257. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/responses/__init__.py +0 -0
  258. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/responses/agent_responses.py +0 -0
  259. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/retrievers/__init__.py +0 -0
  260. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/retrievers/auto_retriever.py +0 -0
  261. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/retrievers/base.py +0 -0
  262. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/retrievers/bm25_retriever.py +0 -0
  263. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/retrievers/cohere_rerank_retriever.py +0 -0
  264. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/retrievers/hybrid_retrival.py +0 -0
  265. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/retrievers/vector_retriever.py +0 -0
  266. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/runtimes/__init__.py +0 -0
  267. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/runtimes/api.py +0 -0
  268. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/runtimes/base.py +0 -0
  269. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/runtimes/configs.py +0 -0
  270. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/runtimes/daytona_runtime.py +0 -0
  271. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/runtimes/docker_runtime.py +0 -0
  272. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/runtimes/llm_guard_runtime.py +0 -0
  273. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/runtimes/remote_http_runtime.py +0 -0
  274. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/runtimes/ubuntu_docker_runtime.py +0 -0
  275. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/runtimes/utils/__init__.py +0 -0
  276. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/runtimes/utils/function_risk_toolkit.py +0 -0
  277. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/runtimes/utils/ignore_risk_toolkit.py +0 -0
  278. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/schemas/__init__.py +0 -0
  279. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/schemas/base.py +0 -0
  280. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/schemas/openai_converter.py +0 -0
  281. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/schemas/outlines_converter.py +0 -0
  282. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/services/agent_openapi_server.py +0 -0
  283. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/societies/__init__.py +0 -0
  284. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/societies/babyagi_playing.py +0 -0
  285. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/societies/role_playing.py +0 -0
  286. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/societies/workforce/__init__.py +0 -0
  287. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/societies/workforce/base.py +0 -0
  288. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/societies/workforce/single_agent_worker.py +0 -0
  289. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/societies/workforce/structured_output_handler.py +0 -0
  290. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/societies/workforce/task_channel.py +0 -0
  291. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/societies/workforce/utils.py +0 -0
  292. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/societies/workforce/workforce_logger.py +0 -0
  293. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/storages/__init__.py +0 -0
  294. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/storages/graph_storages/__init__.py +0 -0
  295. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/storages/graph_storages/base.py +0 -0
  296. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/storages/graph_storages/graph_element.py +0 -0
  297. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/storages/graph_storages/nebula_graph.py +0 -0
  298. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/storages/graph_storages/neo4j_graph.py +0 -0
  299. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/storages/key_value_storages/__init__.py +0 -0
  300. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/storages/key_value_storages/base.py +0 -0
  301. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/storages/key_value_storages/in_memory.py +0 -0
  302. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/storages/key_value_storages/json.py +0 -0
  303. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/storages/key_value_storages/mem0_cloud.py +0 -0
  304. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/storages/key_value_storages/redis.py +0 -0
  305. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/storages/object_storages/__init__.py +0 -0
  306. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/storages/object_storages/amazon_s3.py +0 -0
  307. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/storages/object_storages/azure_blob.py +0 -0
  308. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/storages/object_storages/base.py +0 -0
  309. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/storages/object_storages/google_cloud.py +0 -0
  310. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/storages/vectordb_storages/__init__.py +0 -0
  311. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/storages/vectordb_storages/base.py +0 -0
  312. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/storages/vectordb_storages/chroma.py +0 -0
  313. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/storages/vectordb_storages/faiss.py +0 -0
  314. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/storages/vectordb_storages/milvus.py +0 -0
  315. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/storages/vectordb_storages/oceanbase.py +0 -0
  316. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/storages/vectordb_storages/pgvector.py +0 -0
  317. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/storages/vectordb_storages/qdrant.py +0 -0
  318. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/storages/vectordb_storages/tidb.py +0 -0
  319. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/storages/vectordb_storages/weaviate.py +0 -0
  320. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/tasks/__init__.py +0 -0
  321. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/tasks/task_prompt.py +0 -0
  322. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/terminators/__init__.py +0 -0
  323. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/terminators/base.py +0 -0
  324. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/terminators/response_terminator.py +0 -0
  325. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/terminators/token_limit_terminator.py +0 -0
  326. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/__init__.py +0 -0
  327. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/aci_toolkit.py +0 -0
  328. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/arxiv_toolkit.py +0 -0
  329. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/ask_news_toolkit.py +0 -0
  330. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/async_browser_toolkit.py +0 -0
  331. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/audio_analysis_toolkit.py +0 -0
  332. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/base.py +0 -0
  333. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/bohrium_toolkit.py +0 -0
  334. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/browser_toolkit.py +0 -0
  335. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/browser_toolkit_commons.py +0 -0
  336. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/code_execution.py +0 -0
  337. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/craw4ai_toolkit.py +0 -0
  338. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/dappier_toolkit.py +0 -0
  339. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/data_commons_toolkit.py +0 -0
  340. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/edgeone_pages_mcp_toolkit.py +0 -0
  341. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/excel_toolkit.py +0 -0
  342. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/file_write_toolkit.py +0 -0
  343. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/function_tool.py +0 -0
  344. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/github_toolkit.py +0 -0
  345. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/google_calendar_toolkit.py +0 -0
  346. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/google_drive_mcp_toolkit.py +0 -0
  347. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/google_maps_toolkit.py +0 -0
  348. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/google_scholar_toolkit.py +0 -0
  349. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/human_toolkit.py +0 -0
  350. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/hybrid_browser_toolkit/__init__.py +0 -0
  351. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/hybrid_browser_toolkit/actions.py +0 -0
  352. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/hybrid_browser_toolkit/agent.py +0 -0
  353. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/hybrid_browser_toolkit/browser_session.py +0 -0
  354. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/hybrid_browser_toolkit/config_loader.py +0 -0
  355. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit.py +0 -0
  356. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/hybrid_browser_toolkit/snapshot.py +0 -0
  357. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/hybrid_browser_toolkit/stealth_script.js +0 -0
  358. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/hybrid_browser_toolkit/unified_analyzer.js +0 -0
  359. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/image_analysis_toolkit.py +0 -0
  360. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/jina_reranker_toolkit.py +0 -0
  361. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/klavis_toolkit.py +0 -0
  362. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/linkedin_toolkit.py +0 -0
  363. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/markitdown_toolkit.py +0 -0
  364. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/math_toolkit.py +0 -0
  365. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/mcp_toolkit.py +0 -0
  366. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/memory_toolkit.py +0 -0
  367. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/meshy_toolkit.py +0 -0
  368. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/message_agent_toolkit.py +0 -0
  369. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/mineru_toolkit.py +0 -0
  370. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/networkx_toolkit.py +0 -0
  371. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/note_taking_toolkit.py +0 -0
  372. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/notion_toolkit.py +0 -0
  373. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/open_api_specs/biztoc/__init__.py +0 -0
  374. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/open_api_specs/biztoc/ai-plugin.json +0 -0
  375. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/open_api_specs/biztoc/openapi.yaml +0 -0
  376. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/open_api_specs/coursera/__init__.py +0 -0
  377. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/open_api_specs/coursera/openapi.yaml +0 -0
  378. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/open_api_specs/create_qr_code/__init__.py +0 -0
  379. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/open_api_specs/create_qr_code/openapi.yaml +0 -0
  380. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/open_api_specs/klarna/__init__.py +0 -0
  381. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/open_api_specs/klarna/openapi.yaml +0 -0
  382. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/open_api_specs/nasa_apod/__init__.py +0 -0
  383. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/open_api_specs/nasa_apod/openapi.yaml +0 -0
  384. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/open_api_specs/outschool/__init__.py +0 -0
  385. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/open_api_specs/outschool/ai-plugin.json +0 -0
  386. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/open_api_specs/outschool/openapi.yaml +0 -0
  387. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/open_api_specs/outschool/paths/__init__.py +0 -0
  388. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/open_api_specs/outschool/paths/get_classes.py +0 -0
  389. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/open_api_specs/outschool/paths/search_teachers.py +0 -0
  390. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/open_api_specs/security_config.py +0 -0
  391. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/open_api_specs/speak/__init__.py +0 -0
  392. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/open_api_specs/speak/openapi.yaml +0 -0
  393. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/open_api_specs/web_scraper/__init__.py +0 -0
  394. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/open_api_specs/web_scraper/ai-plugin.json +0 -0
  395. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/open_api_specs/web_scraper/openapi.yaml +0 -0
  396. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/open_api_specs/web_scraper/paths/__init__.py +0 -0
  397. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/open_api_specs/web_scraper/paths/scraper.py +0 -0
  398. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/open_api_toolkit.py +0 -0
  399. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/openai_agent_toolkit.py +0 -0
  400. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/openai_image_toolkit.py +0 -0
  401. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/openbb_toolkit.py +0 -0
  402. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/page_script.js +0 -0
  403. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/playwright_mcp_toolkit.py +0 -0
  404. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/pptx_toolkit.py +0 -0
  405. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/pubmed_toolkit.py +0 -0
  406. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/pulse_mcp_search_toolkit.py +0 -0
  407. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/pyautogui_toolkit.py +0 -0
  408. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/reddit_toolkit.py +0 -0
  409. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/retrieval_toolkit.py +0 -0
  410. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/searxng_toolkit.py +0 -0
  411. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/semantic_scholar_toolkit.py +0 -0
  412. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/slack_toolkit.py +0 -0
  413. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/stripe_toolkit.py +0 -0
  414. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/sympy_toolkit.py +0 -0
  415. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/task_planning_toolkit.py +0 -0
  416. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/terminal_toolkit.py +0 -0
  417. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/thinking_toolkit.py +0 -0
  418. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/twitter_toolkit.py +0 -0
  419. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/video_analysis_toolkit.py +0 -0
  420. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/video_download_toolkit.py +0 -0
  421. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/weather_toolkit.py +0 -0
  422. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/whatsapp_toolkit.py +0 -0
  423. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/wolfram_alpha_toolkit.py +0 -0
  424. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/toolkits/zapier_toolkit.py +0 -0
  425. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/types/__init__.py +0 -0
  426. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/types/agents/__init__.py +0 -0
  427. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/types/agents/tool_calling_record.py +0 -0
  428. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/types/enums.py +0 -0
  429. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/types/mcp_registries.py +0 -0
  430. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/types/openai_types.py +0 -0
  431. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/types/unified_model_type.py +0 -0
  432. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/utils/__init__.py +0 -0
  433. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/utils/async_func.py +0 -0
  434. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/utils/chunker/__init__.py +0 -0
  435. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/utils/chunker/base.py +0 -0
  436. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/utils/chunker/code_chunker.py +0 -0
  437. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/utils/chunker/uio_chunker.py +0 -0
  438. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/utils/commons.py +0 -0
  439. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/utils/constants.py +0 -0
  440. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/utils/deduplication.py +0 -0
  441. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/utils/filename.py +0 -0
  442. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/utils/langfuse.py +0 -0
  443. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/utils/mcp.py +0 -0
  444. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/utils/mcp_client.py +0 -0
  445. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/utils/message_summarizer.py +0 -0
  446. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/utils/response_format.py +0 -0
  447. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/utils/token_counting.py +0 -0
  448. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/verifiers/__init__.py +0 -0
  449. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/verifiers/base.py +0 -0
  450. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/verifiers/math_verifier.py +0 -0
  451. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/verifiers/models.py +0 -0
  452. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/camel/verifiers/physics_verifier.py +0 -0
  453. {camel_ai-0.2.71a11 → camel_ai-0.2.71a12}/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.71a11
3
+ Version: 0.2.71a12
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
@@ -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.71a11'
17
+ __version__ = '0.2.71a12'
18
18
 
19
19
  __all__ = [
20
20
  '__version__',
@@ -1236,7 +1236,7 @@ class ChatAgent(BaseAgent):
1236
1236
  if not message.parsed:
1237
1237
  logger.warning(
1238
1238
  f"Failed to parse JSON from response: "
1239
- f"{content[:100]}..."
1239
+ f"{content}"
1240
1240
  )
1241
1241
 
1242
1242
  except Exception as e:
@@ -147,7 +147,7 @@ Here is the content of the parent task for you to refer to:
147
147
  Here are results of some prerequisite tasks that you can refer to:
148
148
 
149
149
  ==============================
150
- {dependency_task_info}
150
+ {dependency_tasks_info}
151
151
  ==============================
152
152
 
153
153
  Here are some additional information about the task:
@@ -122,7 +122,7 @@ class RolePlayingWorker(Worker):
122
122
  prompt = ROLEPLAY_PROCESS_TASK_PROMPT.format(
123
123
  content=task.content,
124
124
  parent_task_content=task.parent.content if task.parent else "",
125
- dependency_task_info=dependency_tasks_info,
125
+ dependency_tasks_info=dependency_tasks_info,
126
126
  additional_info=task.additional_info,
127
127
  )
128
128
  role_play_session = RolePlaying(
@@ -89,7 +89,7 @@ class Worker(BaseNode, ABC):
89
89
  )
90
90
 
91
91
  # Process the task
92
- task_state = await self._process_task(task, [])
92
+ task_state = await self._process_task(task, task.dependencies)
93
93
 
94
94
  # Update the result and status of the task
95
95
  task.set_state(task_state)
@@ -1008,7 +1008,7 @@ class Workforce(BaseNode):
1008
1008
  if not validate_task_content(new_content, task_id):
1009
1009
  logger.warning(
1010
1010
  f"Task {task_id} content modification rejected: "
1011
- f"Invalid content. Content preview: '{new_content[:50]}...'"
1011
+ f"Invalid content. Content preview: '{new_content}'"
1012
1012
  )
1013
1013
  return False
1014
1014
 
@@ -1194,7 +1194,7 @@ class Workforce(BaseNode):
1194
1194
  task.result = "Task failed: Invalid or empty content provided"
1195
1195
  logger.warning(
1196
1196
  f"Task {task.id} rejected: Invalid or empty content. "
1197
- f"Content preview: '{task.content[:50]}...'"
1197
+ f"Content preview: '{task.content}'"
1198
1198
  )
1199
1199
  return task
1200
1200
 
@@ -1327,7 +1327,7 @@ class Workforce(BaseNode):
1327
1327
  task.result = "Task failed: Invalid or empty content provided"
1328
1328
  logger.warning(
1329
1329
  f"Task {task.id} rejected: Invalid or empty content. "
1330
- f"Content preview: '{task.content[:50]}...'"
1330
+ f"Content preview: '{task.content}'"
1331
1331
  )
1332
1332
  return task
1333
1333
 
@@ -1853,7 +1853,7 @@ class Workforce(BaseNode):
1853
1853
  logger.error(
1854
1854
  f"JSON parsing error in task assignment: Invalid response "
1855
1855
  f"format - {e}. Response content: "
1856
- f"{response.msg.content[:50]}..."
1856
+ f"{response.msg.content}"
1857
1857
  )
1858
1858
  return TaskAssignResult(assignments=[])
1859
1859
 
@@ -1985,6 +1985,37 @@ class Workforce(BaseNode):
1985
1985
 
1986
1986
  return final_assignments
1987
1987
 
1988
+ def _update_task_dependencies_from_assignments(
1989
+ self, assignments: List[TaskAssignment], tasks: List[Task]
1990
+ ) -> None:
1991
+ r"""Update Task.dependencies with actual Task objects based on
1992
+ assignments.
1993
+
1994
+ Args:
1995
+ assignments (List[TaskAssignment]): The task assignments
1996
+ containing dependency IDs.
1997
+ tasks (List[Task]): The tasks that were assigned.
1998
+ """
1999
+ # Create a lookup map for all available tasks
2000
+ all_tasks = {}
2001
+ for task_list in [self._completed_tasks, self._pending_tasks, tasks]:
2002
+ for task in task_list:
2003
+ all_tasks[task.id] = task
2004
+
2005
+ # Update dependencies for each assigned task
2006
+ for assignment in assignments:
2007
+ if not assignment.dependencies:
2008
+ continue
2009
+
2010
+ matching_tasks = [t for t in tasks if t.id == assignment.task_id]
2011
+ if matching_tasks:
2012
+ task = matching_tasks[0]
2013
+ task.dependencies = [
2014
+ all_tasks[dep_id]
2015
+ for dep_id in assignment.dependencies
2016
+ if dep_id in all_tasks
2017
+ ]
2018
+
1988
2019
  async def _find_assignee(
1989
2020
  self,
1990
2021
  tasks: List[Task],
@@ -2021,19 +2052,24 @@ class Workforce(BaseNode):
2021
2052
 
2022
2053
  # if all assignments are valid and all tasks are assigned, return early
2023
2054
  if not invalid_assignments and not unassigned_tasks:
2055
+ self._update_task_dependencies_from_assignments(
2056
+ valid_assignments, tasks
2057
+ )
2024
2058
  return TaskAssignResult(assignments=valid_assignments)
2025
2059
 
2026
- # handle retry and fallback for
2027
- # invalid assignments and unassigned tasks
2028
- all_problem_assignments = invalid_assignments
2060
+ # handle retry and fallback for invalid assignments and unassigned
2061
+ # tasks
2029
2062
  retry_and_fallback_assignments = (
2030
2063
  await self._handle_assignment_retry_and_fallback(
2031
- all_problem_assignments, tasks, valid_worker_ids
2064
+ invalid_assignments, tasks, valid_worker_ids
2032
2065
  )
2033
2066
  )
2034
- valid_assignments.extend(retry_and_fallback_assignments)
2067
+ all_assignments = valid_assignments + retry_and_fallback_assignments
2068
+
2069
+ # Update Task.dependencies for all final assignments
2070
+ self._update_task_dependencies_from_assignments(all_assignments, tasks)
2035
2071
 
2036
- return TaskAssignResult(assignments=valid_assignments)
2072
+ return TaskAssignResult(assignments=all_assignments)
2037
2073
 
2038
2074
  async def _post_task(self, task: Task, assignee_id: str) -> None:
2039
2075
  # Record the start time when a task is posted
@@ -2107,7 +2143,7 @@ class Workforce(BaseNode):
2107
2143
  )
2108
2144
  new_node_conf = WorkerConf(
2109
2145
  description=f"Fallback worker for task: "
2110
- f"{task.content[:50]}...",
2146
+ f"{task.content}",
2111
2147
  role="General Assistant",
2112
2148
  sys_msg="You are a general assistant that can help "
2113
2149
  "with various tasks.",
@@ -2117,8 +2153,7 @@ class Workforce(BaseNode):
2117
2153
  response.msg.content,
2118
2154
  schema=WorkerConf,
2119
2155
  fallback_values={
2120
- "description": f"Worker for task: "
2121
- f"{task.content[:50]}...",
2156
+ "description": f"Worker for task: " f"{task.content}",
2122
2157
  "role": "Task Specialist",
2123
2158
  "sys_msg": f"You are a specialist for: {task.content}",
2124
2159
  },
@@ -2130,7 +2165,7 @@ class Workforce(BaseNode):
2130
2165
  new_node_conf = WorkerConf(**result)
2131
2166
  else:
2132
2167
  new_node_conf = WorkerConf(
2133
- description=f"Worker for task: {task.content[:50]}...",
2168
+ description=f"Worker for task: {task.content}",
2134
2169
  role="Task Specialist",
2135
2170
  sys_msg=f"You are a specialist for: {task.content}",
2136
2171
  )
@@ -2147,7 +2182,7 @@ class Workforce(BaseNode):
2147
2182
  # Create a fallback worker configuration
2148
2183
  new_node_conf = WorkerConf(
2149
2184
  description=f"Fallback worker for "
2150
- f"task: {task.content[:50]}...",
2185
+ f"task: {task.content}",
2151
2186
  role="General Assistant",
2152
2187
  sys_msg="You are a general assistant that can help "
2153
2188
  "with various tasks.",
@@ -2160,7 +2195,7 @@ class Workforce(BaseNode):
2160
2195
  logger.error(
2161
2196
  f"JSON parsing error in worker creation: Invalid "
2162
2197
  f"response format - {e}. Response content: "
2163
- f"{response.msg.content[:100]}..."
2198
+ f"{response.msg.content}"
2164
2199
  )
2165
2200
  raise RuntimeError(
2166
2201
  f"Failed to create worker for task {task.id}: "
@@ -2364,7 +2399,7 @@ class Workforce(BaseNode):
2364
2399
  f"Task {task.id} has exceeded maximum retry attempts "
2365
2400
  f"({MAX_TASK_RETRIES}). Final failure "
2366
2401
  f"reason: {detailed_error}. "
2367
- f"Task content: '{task.content[:100]}...'"
2402
+ f"Task content: '{task.content}'"
2368
2403
  )
2369
2404
  self._cleanup_task_tracking(task.id)
2370
2405
  # Mark task as completed for dependency tracking before halting
@@ -2793,7 +2828,7 @@ class Workforce(BaseNode):
2793
2828
  # useful results
2794
2829
  if is_task_result_insufficient(returned_task):
2795
2830
  result_preview = (
2796
- returned_task.result[:100] + "..."
2831
+ returned_task.result
2797
2832
  if returned_task.result
2798
2833
  else "No result"
2799
2834
  )
@@ -99,7 +99,7 @@ def validate_task_content(
99
99
  logger.warning(
100
100
  f"Task {task_id}: Content too short ({len(stripped_content)} "
101
101
  f"chars < {min_length} minimum). Content preview: "
102
- f"'{stripped_content[:50]}...'"
102
+ f"'{stripped_content}'"
103
103
  )
104
104
  return False
105
105
 
@@ -124,7 +124,7 @@ def validate_task_content(
124
124
  if any(indicator in content_lower for indicator in failure_indicators):
125
125
  logger.warning(
126
126
  f"Task {task_id}: Failure indicator detected in result. "
127
- f"Content preview: '{stripped_content[:100]}...'"
127
+ f"Content preview: '{stripped_content}'"
128
128
  )
129
129
  return False
130
130
 
@@ -132,7 +132,7 @@ def validate_task_content(
132
132
  if content_lower.startswith(("error", "failed", "cannot", "unable")):
133
133
  logger.warning(
134
134
  f"Task {task_id}: Error/refusal pattern detected at start. "
135
- f"Content preview: '{stripped_content[:100]}...'"
135
+ f"Content preview: '{stripped_content}'"
136
136
  )
137
137
  return False
138
138
 
@@ -195,7 +195,7 @@ def parse_response(
195
195
  logger.warning(
196
196
  f"Skipping invalid subtask {task_id}.{i} "
197
197
  f"during decomposition: "
198
- f"Content '{stripped_content[:50]}...' failed validation"
198
+ f"Content '{stripped_content}' failed validation"
199
199
  )
200
200
  return tasks
201
201
 
@@ -233,6 +233,8 @@ class Task(BaseModel):
233
233
  (default: :obj:`0`)
234
234
  assigned_worker_id (Optional[str]): The ID of the worker assigned to
235
235
  this task. (default: :obj:`None`)
236
+ dependencies (List[Task]): The dependencies for the task.
237
+ (default: :obj:`[]`)
236
238
  additional_info (Optional[Dict[str, Any]]): Additional information for
237
239
  the task. (default: :obj:`None`)
238
240
  image_list (Optional[List[Image.Image]]): Optional list of PIL Image
@@ -265,6 +267,8 @@ class Task(BaseModel):
265
267
 
266
268
  assigned_worker_id: Optional[str] = None
267
269
 
270
+ dependencies: List["Task"] = []
271
+
268
272
  additional_info: Optional[Dict[str, Any]] = None
269
273
 
270
274
  image_list: Optional[List[Image.Image]] = None
@@ -530,7 +534,7 @@ class Task(BaseModel):
530
534
  logger.warning(
531
535
  f"Skipping invalid subtask {task_id}.{i} "
532
536
  f"during streaming decomposition: "
533
- f"Content '{stripped_content[:50]}...' failed validation"
537
+ f"Content '{stripped_content}' failed validation"
534
538
  )
535
539
  return tasks
536
540
 
@@ -32,6 +32,23 @@ class SearchToolkit(BaseToolkit):
32
32
  search engines like Google, DuckDuckGo, Wikipedia and Wolfram Alpha, Brave.
33
33
  """
34
34
 
35
+ def __init__(
36
+ self,
37
+ timeout: Optional[float] = None,
38
+ number_of_result_pages: int = 10,
39
+ ):
40
+ r"""Initializes the RedditToolkit with the specified number of retries
41
+ and delay.
42
+
43
+ Args:
44
+ timeout (float): Timeout for API requests in seconds.
45
+ (default: :obj:`None`)
46
+ number_of_result_pages (int): The number of result pages to
47
+ retrieve. (default: :obj:`10`)
48
+ """
49
+ super().__init__(timeout=timeout)
50
+ self.number_of_result_pages = number_of_result_pages
51
+
35
52
  @dependencies_required("wikipedia")
36
53
  def search_wiki(self, entity: str) -> str:
37
54
  r"""Search the entity in WikiPedia and return the summary of the
@@ -144,7 +161,7 @@ class SearchToolkit(BaseToolkit):
144
161
 
145
162
  @dependencies_required("duckduckgo_search")
146
163
  def search_duckduckgo(
147
- self, query: str, source: str = "text", max_results: int = 5
164
+ self, query: str, source: str = "text"
148
165
  ) -> List[Dict[str, Any]]:
149
166
  r"""Use DuckDuckGo search engine to search information for
150
167
  the given query.
@@ -157,7 +174,6 @@ class SearchToolkit(BaseToolkit):
157
174
  query (str): The query to be searched.
158
175
  source (str): The type of information to query (e.g., "text",
159
176
  "images", "videos"). Defaults to "text".
160
- max_results (int): Max number of results, defaults to `5`.
161
177
 
162
178
  Returns:
163
179
  List[Dict[str, Any]]: A list of dictionaries where each dictionary
@@ -171,7 +187,9 @@ class SearchToolkit(BaseToolkit):
171
187
 
172
188
  if source == "text":
173
189
  try:
174
- results = ddgs.text(keywords=query, max_results=max_results)
190
+ results = ddgs.text(
191
+ keywords=query, max_results=self.number_of_result_pages
192
+ )
175
193
  except RequestException as e:
176
194
  # Handle specific exceptions or general request exceptions
177
195
  responses.append({"error": f"duckduckgo search failed.{e}"})
@@ -189,7 +207,9 @@ class SearchToolkit(BaseToolkit):
189
207
 
190
208
  elif source == "images":
191
209
  try:
192
- results = ddgs.images(keywords=query, max_results=max_results)
210
+ results = ddgs.images(
211
+ keywords=query, max_results=self.number_of_result_pages
212
+ )
193
213
  except RequestException as e:
194
214
  # Handle specific exceptions or general request exceptions
195
215
  responses.append({"error": f"duckduckgo search failed.{e}"})
@@ -208,7 +228,9 @@ class SearchToolkit(BaseToolkit):
208
228
 
209
229
  elif source == "videos":
210
230
  try:
211
- results = ddgs.videos(keywords=query, max_results=max_results)
231
+ results = ddgs.videos(
232
+ keywords=query, max_results=self.number_of_result_pages
233
+ )
212
234
  except RequestException as e:
213
235
  # Handle specific exceptions or general request exceptions
214
236
  responses.append({"error": f"duckduckgo search failed.{e}"})
@@ -241,7 +263,6 @@ class SearchToolkit(BaseToolkit):
241
263
  country: str = "US",
242
264
  search_lang: str = "en",
243
265
  ui_lang: str = "en-US",
244
- count: int = 20,
245
266
  offset: int = 0,
246
267
  safesearch: str = "moderate",
247
268
  freshness: Optional[str] = None,
@@ -277,10 +298,6 @@ class SearchToolkit(BaseToolkit):
277
298
  Format: '<language_code>-<country_code>'. Common examples:
278
299
  'en-US', 'en-GB', 'jp-JP', 'zh-hans-CN', 'zh-hant-TW',
279
300
  'de-DE', 'fr-FR', 'es-ES', 'pt-BR', 'ru-RU', 'ko-KR'.
280
- count (int): The number of search results returned in response.
281
- The maximum is 20. The actual number delivered may be less than
282
- requested. Combine this parameter with offset to paginate
283
- search results.
284
301
  offset (int): The zero based offset that indicates number of search
285
302
  results per page (count) to skip before returning the result.
286
303
  The maximum is 9. The actual number delivered may be less than
@@ -368,7 +385,7 @@ class SearchToolkit(BaseToolkit):
368
385
  "country": country,
369
386
  "search_lang": search_lang,
370
387
  "ui_lang": ui_lang,
371
- "count": count,
388
+ "count": self.number_of_result_pages,
372
389
  "offset": offset,
373
390
  "safesearch": safesearch,
374
391
  "freshness": freshness,
@@ -417,14 +434,11 @@ class SearchToolkit(BaseToolkit):
417
434
  (None, 'SEARCH_ENGINE_ID'),
418
435
  ]
419
436
  )
420
- def search_google(
421
- self, query: str, num_result_pages: int = 5
422
- ) -> List[Dict[str, Any]]:
437
+ def search_google(self, query: str) -> List[Dict[str, Any]]:
423
438
  r"""Use Google search engine to search information for the given query.
424
439
 
425
440
  Args:
426
441
  query (str): The query to be searched.
427
- num_result_pages (int): The number of result pages to retrieve.
428
442
 
429
443
  Returns:
430
444
  List[Dict[str, Any]]: A list of dictionaries where each dictionary
@@ -461,14 +475,12 @@ class SearchToolkit(BaseToolkit):
461
475
  start_page_idx = 1
462
476
  # Different language may get different result
463
477
  search_language = "en"
464
- # How many pages to return
465
- num_result_pages = num_result_pages
466
478
  # Constructing the URL
467
479
  # Doc: https://developers.google.com/custom-search/v1/using_rest
468
480
  url = (
469
481
  f"https://www.googleapis.com/customsearch/v1?"
470
482
  f"key={GOOGLE_API_KEY}&cx={SEARCH_ENGINE_ID}&q={query}&start="
471
- f"{start_page_idx}&lr={search_language}&num={num_result_pages}"
483
+ f"{start_page_idx}&lr={search_language}&num={self.number_of_result_pages}"
472
484
  )
473
485
 
474
486
  responses = []
@@ -529,15 +541,11 @@ class SearchToolkit(BaseToolkit):
529
541
  responses.append({"error": f"google search failed: {e!s}"})
530
542
  return responses
531
543
 
532
- def tavily_search(
533
- self, query: str, num_results: int = 5, **kwargs
534
- ) -> List[Dict[str, Any]]:
544
+ def tavily_search(self, query: str, **kwargs) -> List[Dict[str, Any]]:
535
545
  r"""Use Tavily Search API to search information for the given query.
536
546
 
537
547
  Args:
538
548
  query (str): The query to be searched.
539
- num_results (int): The number of search results to retrieve
540
- (default is `5`).
541
549
  **kwargs: Additional optional parameters supported by Tavily's API:
542
550
  - search_depth (str): "basic" or "advanced" search depth.
543
551
  - topic (str): The search category, e.g., "general" or "news."
@@ -573,7 +581,9 @@ class SearchToolkit(BaseToolkit):
573
581
  client = TavilyClient(Tavily_API_KEY)
574
582
 
575
583
  try:
576
- results = client.search(query, max_results=num_results, **kwargs)
584
+ results = client.search(
585
+ query, max_results=self.number_of_result_pages, **kwargs
586
+ )
577
587
  return results
578
588
  except Exception as e:
579
589
  return [{"error": f"An unexpected error occurred: {e!s}"}]
@@ -584,7 +594,6 @@ class SearchToolkit(BaseToolkit):
584
594
  query: str,
585
595
  freshness: str = "noLimit",
586
596
  summary: bool = False,
587
- count: int = 10,
588
597
  page: int = 1,
589
598
  ) -> Dict[str, Any]:
590
599
  r"""Query the Bocha AI search API and return search results.
@@ -600,7 +609,6 @@ class SearchToolkit(BaseToolkit):
600
609
  - 'oneYear': past year.
601
610
  summary (bool): Whether to include text summaries in results.
602
611
  Default is False.
603
- count (int): Number of results to return (1-50). Default is 10.
604
612
  page (int): Page number of results. Default is 1.
605
613
 
606
614
  Returns:
@@ -623,7 +631,7 @@ class SearchToolkit(BaseToolkit):
623
631
  "query": query,
624
632
  "freshness": freshness,
625
633
  "summary": summary,
626
- "count": count,
634
+ "count": self.number_of_result_pages,
627
635
  "page": page,
628
636
  },
629
637
  ensure_ascii=False,
@@ -641,15 +649,13 @@ class SearchToolkit(BaseToolkit):
641
649
  except requests.exceptions.RequestException as e:
642
650
  return {"error": f"Bocha AI search failed: {e!s}"}
643
651
 
644
- def search_baidu(self, query: str, max_results: int = 5) -> Dict[str, Any]:
652
+ def search_baidu(self, query: str) -> Dict[str, Any]:
645
653
  r"""Search Baidu using web scraping to retrieve relevant search
646
654
  results. This method queries Baidu's search engine and extracts search
647
655
  results including titles, descriptions, and URLs.
648
656
 
649
657
  Args:
650
658
  query (str): Search query string to submit to Baidu.
651
- max_results (int): Maximum number of results to return.
652
- (default: :obj:`5`)
653
659
 
654
660
  Returns:
655
661
  Dict[str, Any]: A dictionary containing search results or error
@@ -667,7 +673,7 @@ class SearchToolkit(BaseToolkit):
667
673
  ),
668
674
  "Referer": "https://www.baidu.com",
669
675
  }
670
- params = {"wd": query, "rn": str(max_results)}
676
+ params = {"wd": query, "rn": str(self.number_of_result_pages)}
671
677
 
672
678
  response = requests.get(url, headers=headers, params=params)
673
679
  response.encoding = "utf-8"
@@ -696,7 +702,7 @@ class SearchToolkit(BaseToolkit):
696
702
  "url": link,
697
703
  }
698
704
  )
699
- if len(results) >= max_results:
705
+ if len(results) >= self.number_of_result_pages:
700
706
  break
701
707
 
702
708
  if not results:
@@ -710,7 +716,7 @@ class SearchToolkit(BaseToolkit):
710
716
  except Exception as e:
711
717
  return {"error": f"Baidu scraping error: {e!s}"}
712
718
 
713
- def search_bing(self, query: str, max_results: int = 5) -> Dict[str, Any]:
719
+ def search_bing(self, query: str) -> Dict[str, Any]:
714
720
  r"""Use Bing search engine to search information for the given query.
715
721
 
716
722
  This function queries the Chinese version of Bing search engine (cn.
@@ -722,8 +728,6 @@ class SearchToolkit(BaseToolkit):
722
728
  Args:
723
729
  query (str): The search query string to submit to Bing. Works best
724
730
  with Chinese queries or when Chinese results are preferred.
725
- max_results (int): Maximum number of results to return.
726
- (default: :obj:`5`)
727
731
 
728
732
  Returns:
729
733
  Dict ([str, Any]): A dictionary containing either:
@@ -773,7 +777,9 @@ class SearchToolkit(BaseToolkit):
773
777
  result_items = b_results_tag.find_all("li")
774
778
 
775
779
  results: List[Dict[str, Any]] = []
776
- for i in range(min(len(result_items), max_results)):
780
+ for i in range(
781
+ min(len(result_items), self.number_of_result_pages)
782
+ ):
777
783
  row = result_items[i]
778
784
  if not isinstance(row, Tag):
779
785
  continue
@@ -838,7 +844,6 @@ class SearchToolkit(BaseToolkit):
838
844
  "financial report",
839
845
  ]
840
846
  ] = None,
841
- num_results: int = 10,
842
847
  include_text: Optional[List[str]] = None,
843
848
  exclude_text: Optional[List[str]] = None,
844
849
  use_autoprompt: bool = True,
@@ -854,8 +859,6 @@ class SearchToolkit(BaseToolkit):
854
859
  and neural search. (default: :obj:`"auto"`)
855
860
  category (Optional[Literal]): Category to focus the search on, such
856
861
  as "research paper" or "news". (default: :obj:`None`)
857
- num_results (int): Number of results to return (max 100).
858
- (default: :obj:`10`)
859
862
  include_text (Optional[List[str]]): Strings that must be present in
860
863
  webpage text. Limited to 1 string of up to 5 words.
861
864
  (default: :obj:`None`)
@@ -884,7 +887,10 @@ class SearchToolkit(BaseToolkit):
884
887
  try:
885
888
  exa = Exa(EXA_API_KEY)
886
889
 
887
- if num_results is not None and not 0 < num_results <= 100:
890
+ if (
891
+ self.number_of_result_pages is not None
892
+ and not 0 < self.number_of_result_pages <= 100
893
+ ):
888
894
  raise ValueError("num_results must be between 1 and 100")
889
895
 
890
896
  if include_text is not None:
@@ -911,7 +917,7 @@ class SearchToolkit(BaseToolkit):
911
917
  query=query,
912
918
  type=search_type,
913
919
  category=category,
914
- num_results=num_results,
920
+ num_results=self.number_of_result_pages,
915
921
  include_text=include_text,
916
922
  exclude_text=exclude_text,
917
923
  use_autoprompt=use_autoprompt,
@@ -925,7 +931,7 @@ class SearchToolkit(BaseToolkit):
925
931
  query=query,
926
932
  type=search_type,
927
933
  category=category,
928
- num_results=num_results,
934
+ num_results=self.number_of_result_pages,
929
935
  include_text=include_text,
930
936
  exclude_text=exclude_text,
931
937
  use_autoprompt=use_autoprompt,
@@ -955,7 +961,6 @@ class SearchToolkit(BaseToolkit):
955
961
  "news_center",
956
962
  ]
957
963
  ] = None,
958
- page: int = 1,
959
964
  return_main_text: bool = False,
960
965
  return_markdown_text: bool = True,
961
966
  enable_rerank: bool = True,
@@ -980,8 +985,6 @@ class SearchToolkit(BaseToolkit):
980
985
  results from sites in the specified industries. Multiple
981
986
  industries can be comma-separated.
982
987
  (default: :obj:`None`)
983
- page (int): Page number for results pagination.
984
- (default: :obj:`1`)
985
988
  return_main_text (bool): Whether to include the main text of the
986
989
  webpage in results. (default: :obj:`True`)
987
990
  return_markdown_text (bool): Whether to include markdown formatted
@@ -1014,7 +1017,7 @@ class SearchToolkit(BaseToolkit):
1014
1017
  params: Dict[str, Union[str, int]] = {
1015
1018
  "query": query,
1016
1019
  "timeRange": time_range,
1017
- "page": page,
1020
+ "page": self.number_of_result_pages,
1018
1021
  "returnMainText": str(return_main_text).lower(),
1019
1022
  "returnMarkdownText": str(return_markdown_text).lower(),
1020
1023
  "enableRerank": str(enable_rerank).lower(),
@@ -41,4 +41,4 @@ class ToolResult:
41
41
  def __repr__(self) -> str:
42
42
  r"""Return a detailed representation of the result."""
43
43
  img_count = len(self.images) if self.images else 0
44
- return f"ToolResult(text='{self.text[:50]}...', images={img_count})"
44
+ return f"ToolResult(text='{self.text}', images={img_count})"
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "camel-ai"
7
- version = "0.2.71a11"
7
+ version = "0.2.71a12"
8
8
  description = "Communicative Agents for AI Society Study"
9
9
  authors = [{ name = "CAMEL-AI.org" }]
10
10
  requires-python = ">=3.10,<3.13"
File without changes
File without changes
File without changes