camel-ai 0.2.74a5__tar.gz → 0.2.75__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 (477) hide show
  1. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/PKG-INFO +9 -15
  2. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/__init__.py +1 -1
  3. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/agents/chat_agent.py +149 -95
  4. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/configs/__init__.py +3 -0
  5. camel_ai-0.2.75/camel/configs/nebius_config.py +103 -0
  6. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/interpreters/e2b_interpreter.py +34 -1
  7. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/__init__.py +2 -0
  8. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/aiml_model.py +1 -16
  9. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/anthropic_model.py +6 -22
  10. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/aws_bedrock_model.py +1 -16
  11. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/azure_openai_model.py +1 -16
  12. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/base_model.py +0 -12
  13. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/cohere_model.py +1 -16
  14. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/crynux_model.py +1 -16
  15. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/deepseek_model.py +1 -16
  16. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/gemini_model.py +1 -16
  17. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/groq_model.py +1 -17
  18. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/internlm_model.py +1 -16
  19. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/litellm_model.py +1 -16
  20. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/lmstudio_model.py +1 -17
  21. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/mistral_model.py +1 -16
  22. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/model_factory.py +2 -0
  23. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/modelscope_model.py +1 -16
  24. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/moonshot_model.py +6 -22
  25. camel_ai-0.2.75/camel/models/nebius_model.py +83 -0
  26. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/nemotron_model.py +0 -5
  27. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/netmind_model.py +1 -16
  28. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/novita_model.py +1 -16
  29. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/nvidia_model.py +1 -16
  30. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/ollama_model.py +4 -19
  31. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/openai_compatible_model.py +0 -3
  32. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/openai_model.py +1 -22
  33. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/openrouter_model.py +1 -17
  34. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/ppio_model.py +1 -16
  35. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/qianfan_model.py +1 -16
  36. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/qwen_model.py +1 -16
  37. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/reka_model.py +1 -16
  38. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/samba_model.py +0 -32
  39. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/sglang_model.py +1 -16
  40. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/siliconflow_model.py +1 -16
  41. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/stub_model.py +0 -4
  42. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/togetherai_model.py +1 -16
  43. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/vllm_model.py +1 -16
  44. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/volcano_model.py +0 -17
  45. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/watsonx_model.py +1 -16
  46. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/yi_model.py +1 -16
  47. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/zhipuai_model.py +1 -16
  48. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/societies/workforce/prompts.py +1 -8
  49. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/societies/workforce/task_channel.py +120 -27
  50. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/societies/workforce/workforce.py +35 -3
  51. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/__init__.py +0 -2
  52. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/github_toolkit.py +104 -17
  53. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/hybrid_browser_toolkit/config_loader.py +3 -0
  54. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit_ts.py +260 -5
  55. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/hybrid_browser_toolkit/ts/src/browser-session.ts +288 -37
  56. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/hybrid_browser_toolkit/ts/src/config-loader.ts +3 -1
  57. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/hybrid_browser_toolkit/ts/src/hybrid-browser-toolkit.ts +209 -41
  58. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/hybrid_browser_toolkit/ts/src/types.ts +22 -3
  59. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/hybrid_browser_toolkit/ts/websocket-server.js +28 -1
  60. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/hybrid_browser_toolkit/ws_wrapper.py +101 -0
  61. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/hybrid_browser_toolkit_py/actions.py +158 -0
  62. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/hybrid_browser_toolkit_py/browser_session.py +55 -8
  63. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/hybrid_browser_toolkit_py/config_loader.py +43 -0
  64. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/hybrid_browser_toolkit_py/hybrid_browser_toolkit.py +312 -3
  65. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/hybrid_browser_toolkit_py/snapshot.py +10 -4
  66. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/hybrid_browser_toolkit_py/unified_analyzer.js +45 -4
  67. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/math_toolkit.py +64 -10
  68. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/mcp_toolkit.py +39 -14
  69. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/openai_image_toolkit.py +55 -24
  70. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/search_toolkit.py +153 -29
  71. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/types/__init__.py +2 -2
  72. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/types/enums.py +54 -10
  73. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/types/openai_types.py +2 -2
  74. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/types/unified_model_type.py +5 -0
  75. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/utils/mcp.py +2 -2
  76. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/utils/token_counting.py +18 -3
  77. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/pyproject.toml +9 -15
  78. camel_ai-0.2.74a5/camel/toolkits/openai_agent_toolkit.py +0 -135
  79. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/.gitignore +0 -0
  80. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/LICENSE +0 -0
  81. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/README.md +0 -0
  82. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/agents/__init__.py +0 -0
  83. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/agents/_types.py +0 -0
  84. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/agents/_utils.py +0 -0
  85. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/agents/base.py +0 -0
  86. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/agents/critic_agent.py +0 -0
  87. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/agents/deductive_reasoner_agent.py +0 -0
  88. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/agents/embodied_agent.py +0 -0
  89. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/agents/knowledge_graph_agent.py +0 -0
  90. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/agents/mcp_agent.py +0 -0
  91. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/agents/multi_hop_generator_agent.py +0 -0
  92. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/agents/programmed_agent_instruction.py +0 -0
  93. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/agents/repo_agent.py +0 -0
  94. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/agents/role_assignment_agent.py +0 -0
  95. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/agents/search_agent.py +0 -0
  96. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/agents/task_agent.py +0 -0
  97. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/agents/tool_agents/__init__.py +0 -0
  98. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/agents/tool_agents/base.py +0 -0
  99. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/agents/tool_agents/hugging_face_tool_agent.py +0 -0
  100. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/benchmarks/__init__.py +0 -0
  101. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/benchmarks/apibank.py +0 -0
  102. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/benchmarks/apibench.py +0 -0
  103. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/benchmarks/base.py +0 -0
  104. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/benchmarks/browsecomp.py +0 -0
  105. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/benchmarks/gaia.py +0 -0
  106. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/benchmarks/mock_website/README.md +0 -0
  107. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/benchmarks/mock_website/mock_web.py +0 -0
  108. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/benchmarks/mock_website/requirements.txt +0 -0
  109. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/benchmarks/mock_website/shopping_mall/app.py +0 -0
  110. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/benchmarks/mock_website/task.json +0 -0
  111. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/benchmarks/nexus.py +0 -0
  112. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/benchmarks/ragbench.py +0 -0
  113. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/bots/__init__.py +0 -0
  114. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/bots/discord/__init__.py +0 -0
  115. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/bots/discord/discord_app.py +0 -0
  116. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/bots/discord/discord_installation.py +0 -0
  117. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/bots/discord/discord_store.py +0 -0
  118. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/bots/slack/__init__.py +0 -0
  119. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/bots/slack/models.py +0 -0
  120. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/bots/slack/slack_app.py +0 -0
  121. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/bots/telegram_bot.py +0 -0
  122. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/configs/aiml_config.py +0 -0
  123. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/configs/anthropic_config.py +0 -0
  124. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/configs/base_config.py +0 -0
  125. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/configs/bedrock_config.py +0 -0
  126. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/configs/cohere_config.py +0 -0
  127. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/configs/crynux_config.py +0 -0
  128. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/configs/deepseek_config.py +0 -0
  129. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/configs/gemini_config.py +0 -0
  130. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/configs/groq_config.py +0 -0
  131. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/configs/internlm_config.py +0 -0
  132. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/configs/litellm_config.py +0 -0
  133. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/configs/lmstudio_config.py +0 -0
  134. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/configs/mistral_config.py +0 -0
  135. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/configs/modelscope_config.py +0 -0
  136. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/configs/moonshot_config.py +0 -0
  137. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/configs/netmind_config.py +0 -0
  138. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/configs/novita_config.py +0 -0
  139. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/configs/nvidia_config.py +0 -0
  140. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/configs/ollama_config.py +0 -0
  141. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/configs/openai_config.py +0 -0
  142. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/configs/openrouter_config.py +0 -0
  143. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/configs/ppio_config.py +0 -0
  144. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/configs/qianfan_config.py +0 -0
  145. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/configs/qwen_config.py +0 -0
  146. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/configs/reka_config.py +0 -0
  147. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/configs/samba_config.py +0 -0
  148. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/configs/sglang_config.py +0 -0
  149. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/configs/siliconflow_config.py +0 -0
  150. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/configs/togetherai_config.py +0 -0
  151. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/configs/vllm_config.py +0 -0
  152. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/configs/watsonx_config.py +0 -0
  153. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/configs/yi_config.py +0 -0
  154. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/configs/zhipuai_config.py +0 -0
  155. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/data_collectors/__init__.py +0 -0
  156. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/data_collectors/alpaca_collector.py +0 -0
  157. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/data_collectors/base.py +0 -0
  158. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/data_collectors/sharegpt_collector.py +0 -0
  159. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/datagen/__init__.py +0 -0
  160. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/datagen/cot_datagen.py +0 -0
  161. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/datagen/evol_instruct/__init__.py +0 -0
  162. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/datagen/evol_instruct/evol_instruct.py +0 -0
  163. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/datagen/evol_instruct/scorer.py +0 -0
  164. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/datagen/evol_instruct/templates.py +0 -0
  165. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/datagen/self_improving_cot.py +0 -0
  166. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/datagen/self_instruct/__init__.py +0 -0
  167. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/datagen/self_instruct/filter/__init__.py +0 -0
  168. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/datagen/self_instruct/filter/filter_function.py +0 -0
  169. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/datagen/self_instruct/filter/filter_registry.py +0 -0
  170. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/datagen/self_instruct/filter/instruction_filter.py +0 -0
  171. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/datagen/self_instruct/self_instruct.py +0 -0
  172. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/datagen/self_instruct/templates.py +0 -0
  173. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/datagen/source2synth/__init__.py +0 -0
  174. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/datagen/source2synth/data_processor.py +0 -0
  175. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/datagen/source2synth/models.py +0 -0
  176. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/datagen/source2synth/user_data_processor_config.py +0 -0
  177. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/datahubs/__init__.py +0 -0
  178. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/datahubs/base.py +0 -0
  179. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/datahubs/huggingface.py +0 -0
  180. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/datahubs/models.py +0 -0
  181. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/datasets/__init__.py +0 -0
  182. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/datasets/base_generator.py +0 -0
  183. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/datasets/few_shot_generator.py +0 -0
  184. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/datasets/models.py +0 -0
  185. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/datasets/self_instruct_generator.py +0 -0
  186. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/datasets/static_dataset.py +0 -0
  187. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/embeddings/__init__.py +0 -0
  188. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/embeddings/azure_embedding.py +0 -0
  189. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/embeddings/base.py +0 -0
  190. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/embeddings/gemini_embedding.py +0 -0
  191. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/embeddings/jina_embedding.py +0 -0
  192. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/embeddings/mistral_embedding.py +0 -0
  193. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/embeddings/openai_compatible_embedding.py +0 -0
  194. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/embeddings/openai_embedding.py +0 -0
  195. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/embeddings/sentence_transformers_embeddings.py +0 -0
  196. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/embeddings/together_embedding.py +0 -0
  197. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/embeddings/vlm_embedding.py +0 -0
  198. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/environments/__init__.py +0 -0
  199. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/environments/models.py +0 -0
  200. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/environments/multi_step.py +0 -0
  201. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/environments/rlcards_env.py +0 -0
  202. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/environments/single_step.py +0 -0
  203. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/environments/tic_tac_toe.py +0 -0
  204. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/extractors/__init__.py +0 -0
  205. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/extractors/base.py +0 -0
  206. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/extractors/python_strategies.py +0 -0
  207. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/generators.py +0 -0
  208. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/human.py +0 -0
  209. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/interpreters/__init__.py +0 -0
  210. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/interpreters/base.py +0 -0
  211. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/interpreters/docker/Dockerfile +0 -0
  212. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/interpreters/docker_interpreter.py +0 -0
  213. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/interpreters/internal_python_interpreter.py +0 -0
  214. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/interpreters/interpreter_error.py +0 -0
  215. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/interpreters/ipython_interpreter.py +0 -0
  216. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/interpreters/subprocess_interpreter.py +0 -0
  217. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/loaders/__init__.py +0 -0
  218. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/loaders/apify_reader.py +0 -0
  219. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/loaders/base_io.py +0 -0
  220. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/loaders/base_loader.py +0 -0
  221. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/loaders/chunkr_reader.py +0 -0
  222. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/loaders/crawl4ai_reader.py +0 -0
  223. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/loaders/firecrawl_reader.py +0 -0
  224. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/loaders/jina_url_reader.py +0 -0
  225. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/loaders/markitdown.py +0 -0
  226. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/loaders/mineru_extractor.py +0 -0
  227. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/loaders/mistral_reader.py +0 -0
  228. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/loaders/pandas_reader.py +0 -0
  229. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/loaders/scrapegraph_reader.py +0 -0
  230. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/loaders/unstructured_io.py +0 -0
  231. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/logger.py +0 -0
  232. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/memories/__init__.py +0 -0
  233. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/memories/agent_memories.py +0 -0
  234. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/memories/base.py +0 -0
  235. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/memories/blocks/__init__.py +0 -0
  236. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/memories/blocks/chat_history_block.py +0 -0
  237. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/memories/blocks/vectordb_block.py +0 -0
  238. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/memories/context_creators/__init__.py +0 -0
  239. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/memories/context_creators/score_based.py +0 -0
  240. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/memories/records.py +0 -0
  241. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/messages/__init__.py +0 -0
  242. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/messages/base.py +0 -0
  243. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/messages/conversion/__init__.py +0 -0
  244. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/messages/conversion/alpaca.py +0 -0
  245. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/messages/conversion/conversation_models.py +0 -0
  246. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/messages/conversion/sharegpt/__init__.py +0 -0
  247. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/messages/conversion/sharegpt/function_call_formatter.py +0 -0
  248. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/messages/conversion/sharegpt/hermes/__init__.py +0 -0
  249. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/messages/conversion/sharegpt/hermes/hermes_function_formatter.py +0 -0
  250. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/messages/func_message.py +0 -0
  251. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/_utils.py +0 -0
  252. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/base_audio_model.py +0 -0
  253. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/fish_audio_model.py +0 -0
  254. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/model_manager.py +0 -0
  255. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/openai_audio_models.py +0 -0
  256. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/reward/__init__.py +0 -0
  257. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/reward/base_reward_model.py +0 -0
  258. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/reward/evaluator.py +0 -0
  259. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/reward/nemotron_model.py +0 -0
  260. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/models/reward/skywork_model.py +0 -0
  261. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/personas/__init__.py +0 -0
  262. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/personas/persona.py +0 -0
  263. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/personas/persona_hub.py +0 -0
  264. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/prompts/__init__.py +0 -0
  265. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/prompts/ai_society.py +0 -0
  266. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/prompts/base.py +0 -0
  267. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/prompts/code.py +0 -0
  268. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/prompts/evaluation.py +0 -0
  269. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/prompts/generate_text_embedding_data.py +0 -0
  270. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/prompts/image_craft.py +0 -0
  271. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/prompts/misalignment.py +0 -0
  272. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/prompts/multi_condition_image_craft.py +0 -0
  273. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/prompts/object_recognition.py +0 -0
  274. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/prompts/persona_hub.py +0 -0
  275. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/prompts/prompt_templates.py +0 -0
  276. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/prompts/role_description_prompt_template.py +0 -0
  277. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/prompts/solution_extraction.py +0 -0
  278. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/prompts/task_prompt_template.py +0 -0
  279. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/prompts/translation.py +0 -0
  280. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/prompts/video_description_prompt.py +0 -0
  281. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/py.typed +0 -0
  282. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/responses/__init__.py +0 -0
  283. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/responses/agent_responses.py +0 -0
  284. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/retrievers/__init__.py +0 -0
  285. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/retrievers/auto_retriever.py +0 -0
  286. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/retrievers/base.py +0 -0
  287. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/retrievers/bm25_retriever.py +0 -0
  288. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/retrievers/cohere_rerank_retriever.py +0 -0
  289. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/retrievers/hybrid_retrival.py +0 -0
  290. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/retrievers/vector_retriever.py +0 -0
  291. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/runtimes/__init__.py +0 -0
  292. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/runtimes/api.py +0 -0
  293. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/runtimes/base.py +0 -0
  294. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/runtimes/configs.py +0 -0
  295. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/runtimes/daytona_runtime.py +0 -0
  296. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/runtimes/docker_runtime.py +0 -0
  297. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/runtimes/llm_guard_runtime.py +0 -0
  298. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/runtimes/remote_http_runtime.py +0 -0
  299. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/runtimes/ubuntu_docker_runtime.py +0 -0
  300. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/runtimes/utils/__init__.py +0 -0
  301. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/runtimes/utils/function_risk_toolkit.py +0 -0
  302. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/runtimes/utils/ignore_risk_toolkit.py +0 -0
  303. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/schemas/__init__.py +0 -0
  304. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/schemas/base.py +0 -0
  305. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/schemas/openai_converter.py +0 -0
  306. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/schemas/outlines_converter.py +0 -0
  307. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/services/agent_openapi_server.py +0 -0
  308. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/societies/__init__.py +0 -0
  309. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/societies/babyagi_playing.py +0 -0
  310. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/societies/role_playing.py +0 -0
  311. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/societies/workforce/__init__.py +0 -0
  312. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/societies/workforce/base.py +0 -0
  313. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/societies/workforce/role_playing_worker.py +0 -0
  314. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/societies/workforce/single_agent_worker.py +0 -0
  315. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/societies/workforce/structured_output_handler.py +0 -0
  316. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/societies/workforce/utils.py +0 -0
  317. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/societies/workforce/worker.py +0 -0
  318. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/societies/workforce/workforce_logger.py +0 -0
  319. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/storages/__init__.py +0 -0
  320. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/storages/graph_storages/__init__.py +0 -0
  321. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/storages/graph_storages/base.py +0 -0
  322. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/storages/graph_storages/graph_element.py +0 -0
  323. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/storages/graph_storages/nebula_graph.py +0 -0
  324. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/storages/graph_storages/neo4j_graph.py +0 -0
  325. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/storages/key_value_storages/__init__.py +0 -0
  326. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/storages/key_value_storages/base.py +0 -0
  327. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/storages/key_value_storages/in_memory.py +0 -0
  328. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/storages/key_value_storages/json.py +0 -0
  329. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/storages/key_value_storages/mem0_cloud.py +0 -0
  330. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/storages/key_value_storages/redis.py +0 -0
  331. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/storages/object_storages/__init__.py +0 -0
  332. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/storages/object_storages/amazon_s3.py +0 -0
  333. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/storages/object_storages/azure_blob.py +0 -0
  334. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/storages/object_storages/base.py +0 -0
  335. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/storages/object_storages/google_cloud.py +0 -0
  336. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/storages/vectordb_storages/__init__.py +0 -0
  337. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/storages/vectordb_storages/base.py +0 -0
  338. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/storages/vectordb_storages/chroma.py +0 -0
  339. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/storages/vectordb_storages/faiss.py +0 -0
  340. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/storages/vectordb_storages/milvus.py +0 -0
  341. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/storages/vectordb_storages/oceanbase.py +0 -0
  342. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/storages/vectordb_storages/pgvector.py +0 -0
  343. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/storages/vectordb_storages/qdrant.py +0 -0
  344. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/storages/vectordb_storages/surreal.py +0 -0
  345. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/storages/vectordb_storages/tidb.py +0 -0
  346. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/storages/vectordb_storages/weaviate.py +0 -0
  347. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/tasks/__init__.py +0 -0
  348. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/tasks/task.py +0 -0
  349. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/tasks/task_prompt.py +0 -0
  350. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/terminators/__init__.py +0 -0
  351. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/terminators/base.py +0 -0
  352. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/terminators/response_terminator.py +0 -0
  353. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/terminators/token_limit_terminator.py +0 -0
  354. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/aci_toolkit.py +0 -0
  355. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/arxiv_toolkit.py +0 -0
  356. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/ask_news_toolkit.py +0 -0
  357. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/async_browser_toolkit.py +0 -0
  358. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/audio_analysis_toolkit.py +0 -0
  359. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/base.py +0 -0
  360. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/bohrium_toolkit.py +0 -0
  361. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/browser_toolkit.py +0 -0
  362. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/browser_toolkit_commons.py +0 -0
  363. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/code_execution.py +0 -0
  364. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/craw4ai_toolkit.py +0 -0
  365. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/dappier_toolkit.py +0 -0
  366. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/data_commons_toolkit.py +0 -0
  367. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/edgeone_pages_mcp_toolkit.py +0 -0
  368. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/excel_toolkit.py +0 -0
  369. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/file_write_toolkit.py +0 -0
  370. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/function_tool.py +0 -0
  371. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/google_calendar_toolkit.py +0 -0
  372. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/google_drive_mcp_toolkit.py +0 -0
  373. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/google_maps_toolkit.py +0 -0
  374. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/google_scholar_toolkit.py +0 -0
  375. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/human_toolkit.py +0 -0
  376. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/hybrid_browser_toolkit/__init__.py +0 -0
  377. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit.py +0 -0
  378. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/hybrid_browser_toolkit/ts/package-lock.json +0 -0
  379. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/hybrid_browser_toolkit/ts/package.json +0 -0
  380. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/hybrid_browser_toolkit/ts/src/browser-scripts.js +0 -0
  381. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/hybrid_browser_toolkit/ts/src/index.ts +0 -0
  382. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/hybrid_browser_toolkit/ts/tsconfig.json +0 -0
  383. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/hybrid_browser_toolkit_py/__init__.py +0 -0
  384. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/hybrid_browser_toolkit_py/agent.py +0 -0
  385. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/hybrid_browser_toolkit_py/stealth_script.js +0 -0
  386. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/image_analysis_toolkit.py +0 -0
  387. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/jina_reranker_toolkit.py +0 -0
  388. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/klavis_toolkit.py +0 -0
  389. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/linkedin_toolkit.py +0 -0
  390. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/markitdown_toolkit.py +0 -0
  391. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/memory_toolkit.py +0 -0
  392. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/meshy_toolkit.py +0 -0
  393. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/message_agent_toolkit.py +0 -0
  394. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/message_integration.py +0 -0
  395. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/mineru_toolkit.py +0 -0
  396. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/networkx_toolkit.py +0 -0
  397. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/note_taking_toolkit.py +0 -0
  398. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/notion_mcp_toolkit.py +0 -0
  399. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/notion_toolkit.py +0 -0
  400. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/open_api_specs/biztoc/__init__.py +0 -0
  401. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/open_api_specs/biztoc/ai-plugin.json +0 -0
  402. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/open_api_specs/biztoc/openapi.yaml +0 -0
  403. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/open_api_specs/coursera/__init__.py +0 -0
  404. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/open_api_specs/coursera/openapi.yaml +0 -0
  405. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/open_api_specs/create_qr_code/__init__.py +0 -0
  406. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/open_api_specs/create_qr_code/openapi.yaml +0 -0
  407. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/open_api_specs/klarna/__init__.py +0 -0
  408. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/open_api_specs/klarna/openapi.yaml +0 -0
  409. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/open_api_specs/nasa_apod/__init__.py +0 -0
  410. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/open_api_specs/nasa_apod/openapi.yaml +0 -0
  411. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/open_api_specs/outschool/__init__.py +0 -0
  412. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/open_api_specs/outschool/ai-plugin.json +0 -0
  413. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/open_api_specs/outschool/openapi.yaml +0 -0
  414. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/open_api_specs/outschool/paths/__init__.py +0 -0
  415. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/open_api_specs/outschool/paths/get_classes.py +0 -0
  416. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/open_api_specs/outschool/paths/search_teachers.py +0 -0
  417. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/open_api_specs/security_config.py +0 -0
  418. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/open_api_specs/speak/__init__.py +0 -0
  419. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/open_api_specs/speak/openapi.yaml +0 -0
  420. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/open_api_specs/web_scraper/__init__.py +0 -0
  421. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/open_api_specs/web_scraper/ai-plugin.json +0 -0
  422. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/open_api_specs/web_scraper/openapi.yaml +0 -0
  423. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/open_api_specs/web_scraper/paths/__init__.py +0 -0
  424. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/open_api_specs/web_scraper/paths/scraper.py +0 -0
  425. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/open_api_toolkit.py +0 -0
  426. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/openbb_toolkit.py +0 -0
  427. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/origene_mcp_toolkit.py +0 -0
  428. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/page_script.js +0 -0
  429. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/playwright_mcp_toolkit.py +0 -0
  430. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/pptx_toolkit.py +0 -0
  431. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/pubmed_toolkit.py +0 -0
  432. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/pulse_mcp_search_toolkit.py +0 -0
  433. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/pyautogui_toolkit.py +0 -0
  434. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/reddit_toolkit.py +0 -0
  435. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/retrieval_toolkit.py +0 -0
  436. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/screenshot_toolkit.py +0 -0
  437. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/searxng_toolkit.py +0 -0
  438. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/semantic_scholar_toolkit.py +0 -0
  439. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/slack_toolkit.py +0 -0
  440. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/stripe_toolkit.py +0 -0
  441. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/sympy_toolkit.py +0 -0
  442. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/task_planning_toolkit.py +0 -0
  443. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/terminal_toolkit.py +0 -0
  444. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/thinking_toolkit.py +0 -0
  445. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/twitter_toolkit.py +0 -0
  446. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/video_analysis_toolkit.py +0 -0
  447. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/video_download_toolkit.py +0 -0
  448. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/weather_toolkit.py +0 -0
  449. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/web_deploy_toolkit.py +0 -0
  450. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/whatsapp_toolkit.py +0 -0
  451. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/wolfram_alpha_toolkit.py +0 -0
  452. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/toolkits/zapier_toolkit.py +0 -0
  453. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/types/agents/__init__.py +0 -0
  454. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/types/agents/tool_calling_record.py +0 -0
  455. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/types/mcp_registries.py +0 -0
  456. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/utils/__init__.py +0 -0
  457. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/utils/async_func.py +0 -0
  458. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/utils/chunker/__init__.py +0 -0
  459. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/utils/chunker/base.py +0 -0
  460. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/utils/chunker/code_chunker.py +0 -0
  461. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/utils/chunker/uio_chunker.py +0 -0
  462. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/utils/commons.py +0 -0
  463. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/utils/constants.py +0 -0
  464. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/utils/deduplication.py +0 -0
  465. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/utils/filename.py +0 -0
  466. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/utils/langfuse.py +0 -0
  467. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/utils/mcp_client.py +0 -0
  468. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/utils/message_summarizer.py +0 -0
  469. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/utils/response_format.py +0 -0
  470. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/utils/tool_result.py +0 -0
  471. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/verifiers/__init__.py +0 -0
  472. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/verifiers/base.py +0 -0
  473. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/verifiers/math_verifier.py +0 -0
  474. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/verifiers/models.py +0 -0
  475. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/verifiers/physics_verifier.py +0 -0
  476. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/camel/verifiers/python_verifier.py +0 -0
  477. {camel_ai-0.2.74a5 → camel_ai-0.2.75}/hatch_build_npm.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: camel-ai
3
- Version: 0.2.74a5
3
+ Version: 0.2.75
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
@@ -32,7 +32,7 @@ Requires-Dist: azure-storage-blob<13,>=12.21.0; extra == 'all'
32
32
  Requires-Dist: beautifulsoup4<5,>=4; extra == 'all'
33
33
  Requires-Dist: botocore<2,>=1.35.3; extra == 'all'
34
34
  Requires-Dist: chromadb<1.0.0,>=0.6.0; extra == 'all'
35
- Requires-Dist: chunkr-ai>=0.0.50; extra == 'all'
35
+ Requires-Dist: chunkr-ai<0.1.0,>=0.0.50; extra == 'all'
36
36
  Requires-Dist: cohere<6,>=5.11.0; extra == 'all'
37
37
  Requires-Dist: crawl4ai>=0.4.0; extra == 'all'
38
38
  Requires-Dist: dappier<0.4,>=0.3.3; extra == 'all'
@@ -91,6 +91,7 @@ Requires-Dist: playwright>=1.50.0; extra == 'all'
91
91
  Requires-Dist: prance<24,>=23.6.21.0; extra == 'all'
92
92
  Requires-Dist: praw<8,>=7.7.1; extra == 'all'
93
93
  Requires-Dist: pre-commit<4,>=3; extra == 'all'
94
+ Requires-Dist: protobuf>=6.0.0; extra == 'all'
94
95
  Requires-Dist: psycopg[binary]<4,>=3.1.18; extra == 'all'
95
96
  Requires-Dist: pyautogui<0.10,>=0.9.54; extra == 'all'
96
97
  Requires-Dist: pydub<0.26,>=0.25.1; extra == 'all'
@@ -128,7 +129,6 @@ Requires-Dist: sympy<2,>=1.13.3; extra == 'all'
128
129
  Requires-Dist: tabulate>=0.9.0; extra == 'all'
129
130
  Requires-Dist: tavily-python<0.6,>=0.5.0; extra == 'all'
130
131
  Requires-Dist: textblob<0.18,>=0.17.1; extra == 'all'
131
- Requires-Dist: traceroot==0.0.4a5; extra == 'all'
132
132
  Requires-Dist: transformers<5,>=4; extra == 'all'
133
133
  Requires-Dist: tree-sitter-python<0.24,>=0.23.6; extra == 'all'
134
134
  Requires-Dist: tree-sitter<0.24,>=0.23.2; extra == 'all'
@@ -193,7 +193,6 @@ Requires-Dist: ipykernel<7,>=6.0.0; extra == 'dev-tools'
193
193
  Requires-Dist: jupyter-client<9,>=8.6.2; extra == 'dev-tools'
194
194
  Requires-Dist: langfuse>=2.60.5; extra == 'dev-tools'
195
195
  Requires-Dist: mcp>=1.3.0; extra == 'dev-tools'
196
- Requires-Dist: traceroot==0.0.4a5; extra == 'dev-tools'
197
196
  Requires-Dist: tree-sitter-python<0.24,>=0.23.6; extra == 'dev-tools'
198
197
  Requires-Dist: tree-sitter<0.24,>=0.23.2; extra == 'dev-tools'
199
198
  Requires-Dist: typer>=0.15.2; extra == 'dev-tools'
@@ -206,7 +205,7 @@ Requires-Dist: sphinx<8,>=7; extra == 'docs'
206
205
  Requires-Dist: sphinxext-rediraffe<0.3,>=0.2.7; extra == 'docs'
207
206
  Provides-Extra: document-tools
208
207
  Requires-Dist: beautifulsoup4<5,>=4; extra == 'document-tools'
209
- Requires-Dist: chunkr-ai>=0.0.50; extra == 'document-tools'
208
+ Requires-Dist: chunkr-ai<0.1.0,>=0.0.50; extra == 'document-tools'
210
209
  Requires-Dist: crawl4ai>=0.3.745; extra == 'document-tools'
211
210
  Requires-Dist: docx2txt<0.9,>=0.8; extra == 'document-tools'
212
211
  Requires-Dist: docx>=0.2.4; extra == 'document-tools'
@@ -225,17 +224,12 @@ Requires-Dist: tabulate>=0.9.0; extra == 'document-tools'
225
224
  Requires-Dist: unstructured==0.16.20; extra == 'document-tools'
226
225
  Requires-Dist: xls2xlsx>=0.2.0; extra == 'document-tools'
227
226
  Provides-Extra: eigent
228
- Requires-Dist: aci-sdk>=1.0.0b1; extra == 'eigent'
229
227
  Requires-Dist: anthropic<0.50.0,>=0.47.0; extra == 'eigent'
230
- Requires-Dist: chunkr-ai>=0.0.41; extra == 'eigent'
231
- Requires-Dist: chunkr-ai>=0.0.50; extra == 'eigent'
232
- Requires-Dist: crawl4ai>=0.3.745; extra == 'eigent'
233
228
  Requires-Dist: datasets<4,>=3; extra == 'eigent'
234
229
  Requires-Dist: docx>=0.2.4; extra == 'eigent'
235
- Requires-Dist: duckduckgo-search<7,>=6.3.5; extra == 'eigent'
236
230
  Requires-Dist: exa-py<2,>=1.10.0; extra == 'eigent'
237
231
  Requires-Dist: ffmpeg-python<0.3,>=0.2.0; extra == 'eigent'
238
- Requires-Dist: html2text>=2024.2.26; extra == 'eigent'
232
+ Requires-Dist: google-api-python-client==2.166.0; extra == 'eigent'
239
233
  Requires-Dist: imageio[pyav]<3,>=2.34.2; extra == 'eigent'
240
234
  Requires-Dist: markitdown[all]>=0.1.1; extra == 'eigent'
241
235
  Requires-Dist: mcp-server-fetch==2025.1.17; extra == 'eigent'
@@ -244,8 +238,6 @@ Requires-Dist: numpy<=2.2,>=1.2; extra == 'eigent'
244
238
  Requires-Dist: onnxruntime<=1.19.2; extra == 'eigent'
245
239
  Requires-Dist: openpyxl>=3.1.5; extra == 'eigent'
246
240
  Requires-Dist: pandas<2,>=1.5.3; extra == 'eigent'
247
- Requires-Dist: playwright>=1.50.0; extra == 'eigent'
248
- Requires-Dist: pyautogui<0.10,>=0.9.54; extra == 'eigent'
249
241
  Requires-Dist: pydub<0.26,>=0.25.1; extra == 'eigent'
250
242
  Requires-Dist: pylatex>=1.4.2; extra == 'eigent'
251
243
  Requires-Dist: pytesseract>=0.3.13; extra == 'eigent'
@@ -286,8 +278,8 @@ Provides-Extra: owl
286
278
  Requires-Dist: aci-sdk>=1.0.0b1; extra == 'owl'
287
279
  Requires-Dist: anthropic<0.50.0,>=0.47.0; extra == 'owl'
288
280
  Requires-Dist: beautifulsoup4<5,>=4; extra == 'owl'
281
+ Requires-Dist: chunkr-ai<0.1.0,>=0.0.50; extra == 'owl'
289
282
  Requires-Dist: chunkr-ai>=0.0.41; extra == 'owl'
290
- Requires-Dist: chunkr-ai>=0.0.50; extra == 'owl'
291
283
  Requires-Dist: crawl4ai>=0.3.745; extra == 'owl'
292
284
  Requires-Dist: datasets<4,>=3; extra == 'owl'
293
285
  Requires-Dist: docx2txt<0.9,>=0.8; extra == 'owl'
@@ -335,7 +327,7 @@ Requires-Dist: xls2xlsx>=0.2.0; extra == 'owl'
335
327
  Requires-Dist: yt-dlp<2025,>=2024.11.4; extra == 'owl'
336
328
  Provides-Extra: rag
337
329
  Requires-Dist: chromadb<1.0.0,>=0.6.0; extra == 'rag'
338
- Requires-Dist: chunkr-ai>=0.0.50; extra == 'rag'
330
+ Requires-Dist: chunkr-ai<0.1.0,>=0.0.50; extra == 'rag'
339
331
  Requires-Dist: cohere<6,>=5.11.0; extra == 'rag'
340
332
  Requires-Dist: crawl4ai>=0.3.745; extra == 'rag'
341
333
  Requires-Dist: faiss-cpu<2,>=1.7.2; extra == 'rag'
@@ -344,6 +336,7 @@ Requires-Dist: nebula3-python==3.8.2; extra == 'rag'
344
336
  Requires-Dist: neo4j<6,>=5.18.0; extra == 'rag'
345
337
  Requires-Dist: numpy<=2.2,>=1.2; extra == 'rag'
346
338
  Requires-Dist: pandasai<3,>=2.3.0; extra == 'rag'
339
+ Requires-Dist: protobuf>=6.0.0; extra == 'rag'
347
340
  Requires-Dist: pymilvus<3,>=2.4.0; extra == 'rag'
348
341
  Requires-Dist: pyobvector>=0.1.18; extra == 'rag'
349
342
  Requires-Dist: pytidb-experimental==0.0.1.dev4; extra == 'rag'
@@ -365,6 +358,7 @@ Requires-Dist: mem0ai>=0.1.73; extra == 'storage'
365
358
  Requires-Dist: nebula3-python==3.8.2; extra == 'storage'
366
359
  Requires-Dist: neo4j<6,>=5.18.0; extra == 'storage'
367
360
  Requires-Dist: pgvector<0.3,>=0.2.4; extra == 'storage'
361
+ Requires-Dist: protobuf>=6.0.0; extra == 'storage'
368
362
  Requires-Dist: psycopg[binary]<4,>=3.1.18; extra == 'storage'
369
363
  Requires-Dist: pymilvus<3,>=2.4.0; extra == 'storage'
370
364
  Requires-Dist: pyobvector>=0.1.18; extra == 'storage'
@@ -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.74a5'
17
+ __version__ = '0.2.75'
18
18
 
19
19
  __all__ = [
20
20
  '__version__',
@@ -14,9 +14,11 @@
14
14
  from __future__ import annotations
15
15
 
16
16
  import asyncio
17
+ import concurrent.futures
17
18
  import json
18
19
  import logging
19
20
  import queue
21
+ import random
20
22
  import textwrap
21
23
  import threading
22
24
  import time
@@ -40,6 +42,7 @@ from typing import (
40
42
 
41
43
  from openai import (
42
44
  AsyncStream,
45
+ RateLimitError,
43
46
  Stream,
44
47
  )
45
48
  from pydantic import BaseModel, ValidationError
@@ -386,6 +389,13 @@ class ChatAgent(BaseAgent):
386
389
  usage. When enabled, removes FUNCTION/TOOL role messages and
387
390
  ASSISTANT messages with tool_calls after each step.
388
391
  (default: :obj:`False`)
392
+ retry_attempts (int, optional): Maximum number of retry attempts for
393
+ rate limit errors. (default: :obj:`3`)
394
+ retry_delay (float, optional): Initial delay in seconds between
395
+ retries. Uses exponential backoff. (default: :obj:`1.0`)
396
+ step_timeout (Optional[float], optional): Timeout in seconds for the
397
+ entire step operation. If None, no timeout is applied.
398
+ (default: :obj:`None`)
389
399
  """
390
400
 
391
401
  def __init__(
@@ -426,6 +436,9 @@ class ChatAgent(BaseAgent):
426
436
  mask_tool_output: bool = False,
427
437
  pause_event: Optional[asyncio.Event] = None,
428
438
  prune_tool_calls_from_memory: bool = False,
439
+ retry_attempts: int = 3,
440
+ retry_delay: float = 1.0,
441
+ step_timeout: Optional[float] = None,
429
442
  ) -> None:
430
443
  if isinstance(model, ModelManager):
431
444
  self.model_backend = model
@@ -511,6 +524,9 @@ class ChatAgent(BaseAgent):
511
524
  self._secure_result_store: Dict[str, Any] = {}
512
525
  self.pause_event = pause_event
513
526
  self.prune_tool_calls_from_memory = prune_tool_calls_from_memory
527
+ self.retry_attempts = max(1, retry_attempts)
528
+ self.retry_delay = max(0.0, retry_delay)
529
+ self.step_timeout = step_timeout
514
530
 
515
531
  def reset(self):
516
532
  r"""Resets the :obj:`ChatAgent` to its initial state."""
@@ -1365,6 +1381,9 @@ class ChatAgent(BaseAgent):
1365
1381
  a StreamingChatAgentResponse that behaves like
1366
1382
  ChatAgentResponse but can also be iterated for
1367
1383
  streaming updates.
1384
+
1385
+ Raises:
1386
+ TimeoutError: If the step operation exceeds the configured timeout.
1368
1387
  """
1369
1388
 
1370
1389
  stream = self.model_backend.model_config_dict.get("stream", False)
@@ -1374,6 +1393,30 @@ class ChatAgent(BaseAgent):
1374
1393
  generator = self._stream(input_message, response_format)
1375
1394
  return StreamingChatAgentResponse(generator)
1376
1395
 
1396
+ # Execute with timeout if configured
1397
+ if self.step_timeout is not None:
1398
+ with concurrent.futures.ThreadPoolExecutor(
1399
+ max_workers=1
1400
+ ) as executor:
1401
+ future = executor.submit(
1402
+ self._step_impl, input_message, response_format
1403
+ )
1404
+ try:
1405
+ return future.result(timeout=self.step_timeout)
1406
+ except concurrent.futures.TimeoutError:
1407
+ future.cancel()
1408
+ raise TimeoutError(
1409
+ f"Step timed out after {self.step_timeout}s"
1410
+ )
1411
+ else:
1412
+ return self._step_impl(input_message, response_format)
1413
+
1414
+ def _step_impl(
1415
+ self,
1416
+ input_message: Union[BaseMessage, str],
1417
+ response_format: Optional[Type[BaseModel]] = None,
1418
+ ) -> ChatAgentResponse:
1419
+ r"""Implementation of non-streaming step logic."""
1377
1420
  # Set Langfuse session_id using agent_id for trace grouping
1378
1421
  try:
1379
1422
  from camel.utils.langfuse import set_current_agent_session_id
@@ -1544,6 +1587,10 @@ class ChatAgent(BaseAgent):
1544
1587
  True, returns an AsyncStreamingChatAgentResponse that can be
1545
1588
  awaited for the final result or async iterated for streaming
1546
1589
  updates.
1590
+
1591
+ Raises:
1592
+ asyncio.TimeoutError: If the step operation exceeds the configured
1593
+ timeout.
1547
1594
  """
1548
1595
 
1549
1596
  try:
@@ -1559,9 +1606,22 @@ class ChatAgent(BaseAgent):
1559
1606
  async_generator = self._astream(input_message, response_format)
1560
1607
  return AsyncStreamingChatAgentResponse(async_generator)
1561
1608
  else:
1562
- return await self._astep_non_streaming_task(
1563
- input_message, response_format
1564
- )
1609
+ if self.step_timeout is not None:
1610
+ try:
1611
+ return await asyncio.wait_for(
1612
+ self._astep_non_streaming_task(
1613
+ input_message, response_format
1614
+ ),
1615
+ timeout=self.step_timeout,
1616
+ )
1617
+ except asyncio.TimeoutError:
1618
+ raise asyncio.TimeoutError(
1619
+ f"Async step timed out after {self.step_timeout}s"
1620
+ )
1621
+ else:
1622
+ return await self._astep_non_streaming_task(
1623
+ input_message, response_format
1624
+ )
1565
1625
 
1566
1626
  async def _astep_non_streaming_task(
1567
1627
  self,
@@ -1776,64 +1836,61 @@ class ChatAgent(BaseAgent):
1776
1836
  tool_schemas: Optional[List[Dict[str, Any]]] = None,
1777
1837
  prev_num_openai_messages: int = 0,
1778
1838
  ) -> ModelResponse:
1779
- r"""Internal function for agent step model response.
1780
- Args:
1781
- openai_messages (List[OpenAIMessage]): The OpenAI
1782
- messages to process.
1783
- num_tokens (int): The number of tokens in the context.
1784
- current_iteration (int): The current iteration of the step.
1785
- response_format (Optional[Type[BaseModel]]): The response
1786
- format to use.
1787
- tool_schemas (Optional[List[Dict[str, Any]]]): The tool
1788
- schemas to use.
1789
- prev_num_openai_messages (int): The number of openai messages
1790
- logged in the previous iteration.
1791
-
1792
- Returns:
1793
- ModelResponse: The model response.
1794
- """
1839
+ r"""Internal function for agent step model response."""
1840
+ last_error = None
1795
1841
 
1796
- response = None
1797
- try:
1798
- response = self.model_backend.run(
1799
- openai_messages, response_format, tool_schemas or None
1800
- )
1801
- except Exception as exc:
1802
- logger.error(
1803
- f"An error occurred while running model "
1804
- f"{self.model_backend.model_type}, "
1805
- f"index: {self.model_backend.current_model_index}",
1806
- exc_info=exc,
1807
- )
1808
- error_info = str(exc)
1809
-
1810
- if not response and self.model_backend.num_models > 1:
1811
- raise ModelProcessingError(
1812
- "Unable to process messages: none of the provided models "
1813
- "run successfully."
1814
- )
1815
- elif not response:
1842
+ for attempt in range(self.retry_attempts):
1843
+ try:
1844
+ response = self.model_backend.run(
1845
+ openai_messages, response_format, tool_schemas or None
1846
+ )
1847
+ if response:
1848
+ break
1849
+ except RateLimitError as e:
1850
+ last_error = e
1851
+ if attempt < self.retry_attempts - 1:
1852
+ delay = min(self.retry_delay * (2**attempt), 60.0)
1853
+ delay = random.uniform(0, delay) # Add jitter
1854
+ logger.warning(
1855
+ f"Rate limit hit (attempt {attempt + 1}"
1856
+ f"/{self.retry_attempts}). Retrying in {delay:.1f}s"
1857
+ )
1858
+ time.sleep(delay)
1859
+ else:
1860
+ logger.error(
1861
+ f"Rate limit exhausted after "
1862
+ f"{self.retry_attempts} attempts"
1863
+ )
1864
+ except Exception:
1865
+ logger.error(
1866
+ f"Model error: {self.model_backend.model_type}",
1867
+ exc_info=True,
1868
+ )
1869
+ raise
1870
+ else:
1871
+ # Loop completed without success
1816
1872
  raise ModelProcessingError(
1817
- f"Unable to process messages: the only provided model "
1818
- f"did not run successfully. Error: {error_info}"
1873
+ f"Unable to process messages: "
1874
+ f"{str(last_error) if last_error else 'Unknown error'}"
1819
1875
  )
1820
1876
 
1821
- sanitized_messages = self._sanitize_messages_for_logging(
1877
+ # Log success
1878
+ sanitized = self._sanitize_messages_for_logging(
1822
1879
  openai_messages, prev_num_openai_messages
1823
1880
  )
1824
1881
  logger.info(
1825
- f"Model {self.model_backend.model_type}, "
1826
- f"index {self.model_backend.current_model_index}, "
1827
- f"iteration {current_iteration}, "
1828
- f"processed these messages: {sanitized_messages}"
1882
+ f"Model {self.model_backend.model_type} "
1883
+ f"[{current_iteration}]: {sanitized}"
1829
1884
  )
1885
+
1830
1886
  if not isinstance(response, ChatCompletion):
1831
1887
  raise TypeError(
1832
- f"Expected response to be a `ChatCompletion` object, but "
1833
- f"got {type(response).__name__} instead."
1888
+ f"Expected ChatCompletion, got {type(response).__name__}"
1834
1889
  )
1890
+
1835
1891
  return self._handle_batch_response(response)
1836
1892
 
1893
+ @observe()
1837
1894
  async def _aget_model_response(
1838
1895
  self,
1839
1896
  openai_messages: List[OpenAIMessage],
@@ -1843,62 +1900,59 @@ class ChatAgent(BaseAgent):
1843
1900
  tool_schemas: Optional[List[Dict[str, Any]]] = None,
1844
1901
  prev_num_openai_messages: int = 0,
1845
1902
  ) -> ModelResponse:
1846
- r"""Internal function for agent async step model response.
1847
- Args:
1848
- openai_messages (List[OpenAIMessage]): The OpenAI messages
1849
- to process.
1850
- num_tokens (int): The number of tokens in the context.
1851
- current_iteration (int): The current iteration of the step.
1852
- response_format (Optional[Type[BaseModel]]): The response
1853
- format to use.
1854
- tool_schemas (Optional[List[Dict[str, Any]]]): The tool schemas
1855
- to use.
1856
- prev_num_openai_messages (int): The number of openai messages
1857
- logged in the previous iteration.
1903
+ r"""Internal function for agent async step model response."""
1904
+ last_error = None
1858
1905
 
1859
- Returns:
1860
- ModelResponse: The model response.
1861
- """
1862
-
1863
- response = None
1864
- try:
1865
- response = await self.model_backend.arun(
1866
- openai_messages, response_format, tool_schemas or None
1867
- )
1868
- except Exception as exc:
1869
- logger.error(
1870
- f"An error occurred while running model "
1871
- f"{self.model_backend.model_type}, "
1872
- f"index: {self.model_backend.current_model_index}",
1873
- exc_info=exc,
1874
- )
1875
- error_info = str(exc)
1876
-
1877
- if not response and self.model_backend.num_models > 1:
1878
- raise ModelProcessingError(
1879
- "Unable to process messages: none of the provided models "
1880
- "run successfully."
1881
- )
1882
- elif not response:
1906
+ for attempt in range(self.retry_attempts):
1907
+ try:
1908
+ response = await self.model_backend.arun(
1909
+ openai_messages, response_format, tool_schemas or None
1910
+ )
1911
+ if response:
1912
+ break
1913
+ except RateLimitError as e:
1914
+ last_error = e
1915
+ if attempt < self.retry_attempts - 1:
1916
+ delay = min(self.retry_delay * (2**attempt), 60.0)
1917
+ delay = random.uniform(0, delay) # Add jitter
1918
+ logger.warning(
1919
+ f"Rate limit hit (attempt {attempt + 1}"
1920
+ f"/{self.retry_attempts}). "
1921
+ f"Retrying in {delay:.1f}s"
1922
+ )
1923
+ await asyncio.sleep(delay)
1924
+ else:
1925
+ logger.error(
1926
+ f"Rate limit exhausted after "
1927
+ f"{self.retry_attempts} attempts"
1928
+ )
1929
+ except Exception:
1930
+ logger.error(
1931
+ f"Model error: {self.model_backend.model_type}",
1932
+ exc_info=True,
1933
+ )
1934
+ raise
1935
+ else:
1936
+ # Loop completed without success
1883
1937
  raise ModelProcessingError(
1884
- f"Unable to process messages: the only provided model "
1885
- f"did not run successfully. Error: {error_info}"
1938
+ f"Unable to process messages: "
1939
+ f"{str(last_error) if last_error else 'Unknown error'}"
1886
1940
  )
1887
1941
 
1888
- sanitized_messages = self._sanitize_messages_for_logging(
1942
+ # Log success
1943
+ sanitized = self._sanitize_messages_for_logging(
1889
1944
  openai_messages, prev_num_openai_messages
1890
1945
  )
1891
1946
  logger.info(
1892
- f"Model {self.model_backend.model_type}, "
1893
- f"index {self.model_backend.current_model_index}, "
1894
- f"iteration {current_iteration}, "
1895
- f"processed these messages: {sanitized_messages}"
1947
+ f"Model {self.model_backend.model_type} "
1948
+ f"[{current_iteration}]: {sanitized}"
1896
1949
  )
1950
+
1897
1951
  if not isinstance(response, ChatCompletion):
1898
1952
  raise TypeError(
1899
- f"Expected response to be a `ChatCompletion` object, but "
1900
- f"got {type(response).__name__} instead."
1953
+ f"Expected ChatCompletion, got {type(response).__name__}"
1901
1954
  )
1955
+
1902
1956
  return self._handle_batch_response(response)
1903
1957
 
1904
1958
  def _sanitize_messages_for_logging(
@@ -2148,9 +2202,9 @@ class ChatAgent(BaseAgent):
2148
2202
  if tool_calls := response.choices[0].message.tool_calls:
2149
2203
  tool_call_requests = []
2150
2204
  for tool_call in tool_calls:
2151
- tool_name = tool_call.function.name
2205
+ tool_name = tool_call.function.name # type: ignore[union-attr]
2152
2206
  tool_call_id = tool_call.id
2153
- args = json.loads(tool_call.function.arguments)
2207
+ args = json.loads(tool_call.function.arguments) # type: ignore[union-attr]
2154
2208
  tool_call_request = ToolCallRequest(
2155
2209
  tool_name=tool_name, args=args, tool_call_id=tool_call_id
2156
2210
  )
@@ -26,6 +26,7 @@ from .lmstudio_config import LMSTUDIO_API_PARAMS, LMStudioConfig
26
26
  from .mistral_config import MISTRAL_API_PARAMS, MistralConfig
27
27
  from .modelscope_config import MODELSCOPE_API_PARAMS, ModelScopeConfig
28
28
  from .moonshot_config import MOONSHOT_API_PARAMS, MoonshotConfig
29
+ from .nebius_config import NEBIUS_API_PARAMS, NebiusConfig
29
30
  from .netmind_config import NETMIND_API_PARAMS, NetmindConfig
30
31
  from .novita_config import NOVITA_API_PARAMS, NovitaConfig
31
32
  from .nvidia_config import NVIDIA_API_PARAMS, NvidiaConfig
@@ -58,6 +59,8 @@ __all__ = [
58
59
  'ANTHROPIC_API_PARAMS',
59
60
  'GROQ_API_PARAMS',
60
61
  'GroqConfig',
62
+ 'NEBIUS_API_PARAMS',
63
+ 'NebiusConfig',
61
64
  'LiteLLMConfig',
62
65
  'LITELLM_API_PARAMS',
63
66
  'NetmindConfig',
@@ -0,0 +1,103 @@
1
+ # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
2
+ # Licensed under the Apache License, Version 2.0 (the "License");
3
+ # you may not use this file except in compliance with the License.
4
+ # You may obtain a copy of the License at
5
+ #
6
+ # http://www.apache.org/licenses/LICENSE-2.0
7
+ #
8
+ # Unless required by applicable law or agreed to in writing, software
9
+ # distributed under the License is distributed on an "AS IS" BASIS,
10
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ # See the License for the specific language governing permissions and
12
+ # limitations under the License.
13
+ # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
14
+ from __future__ import annotations
15
+
16
+ from typing import Optional, Sequence, Union
17
+
18
+ from camel.configs.base_config import BaseConfig
19
+
20
+
21
+ class NebiusConfig(BaseConfig):
22
+ r"""Defines the parameters for generating chat completions using OpenAI
23
+ compatibility with Nebius AI Studio.
24
+
25
+ Reference: https://nebius.com/docs/ai-studio/api
26
+
27
+ Args:
28
+ temperature (float, optional): Sampling temperature to use, between
29
+ :obj:`0` and :obj:`2`. Higher values make the output more random,
30
+ while lower values make it more focused and deterministic.
31
+ (default: :obj:`None`)
32
+ top_p (float, optional): An alternative to sampling with temperature,
33
+ called nucleus sampling, where the model considers the results of
34
+ the tokens with top_p probability mass. So :obj:`0.1` means only
35
+ the tokens comprising the top 10% probability mass are considered.
36
+ (default: :obj:`None`)
37
+ n (int, optional): How many chat completion choices to generate for
38
+ each input message. (default: :obj:`None`)
39
+ response_format (object, optional): An object specifying the format
40
+ that the model must output. Compatible with GPT-4 Turbo and all
41
+ GPT-3.5 Turbo models newer than gpt-3.5-turbo-1106. Setting to
42
+ {"type": "json_object"} enables JSON mode, which guarantees the
43
+ message the model generates is valid JSON. Important: when using
44
+ JSON mode, you must also instruct the model to produce JSON
45
+ yourself via a system or user message. Without this, the model
46
+ may generate an unending stream of whitespace until the generation
47
+ reaches the token limit, resulting in a long-running and seemingly
48
+ "stuck" request. Also note that the message content may be
49
+ partially cut off if finish_reason="length", which indicates the
50
+ generation exceeded max_tokens or the conversation exceeded the
51
+ max context length.
52
+ stream (bool, optional): If True, partial message deltas will be sent
53
+ as data-only server-sent events as they become available.
54
+ (default: :obj:`None`)
55
+ stop (str or list, optional): Up to :obj:`4` sequences where the API
56
+ will stop generating further tokens. (default: :obj:`None`)
57
+ max_tokens (int, optional): The maximum number of tokens to generate
58
+ in the chat completion. The total length of input tokens and
59
+ generated tokens is limited by the model's context length.
60
+ (default: :obj:`None`)
61
+ presence_penalty (float, optional): Number between :obj:`-2.0` and
62
+ :obj:`2.0`. Positive values penalize new tokens based on whether
63
+ they appear in the text so far, increasing the model's likelihood
64
+ to talk about new topics. See more information about frequency and
65
+ presence penalties. (default: :obj:`None`)
66
+ frequency_penalty (float, optional): Number between :obj:`-2.0` and
67
+ :obj:`2.0`. Positive values penalize new tokens based on their
68
+ existing frequency in the text so far, decreasing the model's
69
+ likelihood to repeat the same line verbatim. See more information
70
+ about frequency and presence penalties. (default: :obj:`None`)
71
+ user (str, optional): A unique identifier representing your end-user,
72
+ which can help OpenAI to monitor and detect abuse.
73
+ (default: :obj:`None`)
74
+ tools (list[FunctionTool], optional): A list of tools the model may
75
+ call. Currently, only functions are supported as a tool. Use this
76
+ to provide a list of functions the model may generate JSON inputs
77
+ for. A max of 128 functions are supported.
78
+ tool_choice (Union[dict[str, str], str], optional): Controls which (if
79
+ any) tool is called by the model. :obj:`"none"` means the model
80
+ will not call any tool and instead generates a message.
81
+ :obj:`"auto"` means the model can pick between generating a
82
+ message or calling one or more tools. :obj:`"required"` means the
83
+ model must call one or more tools. Specifying a particular tool
84
+ via {"type": "function", "function": {"name": "my_function"}}
85
+ forces the model to call that tool. :obj:`"none"` is the default
86
+ when no tools are present. :obj:`"auto"` is the default if tools
87
+ are present.
88
+ """
89
+
90
+ temperature: Optional[float] = None
91
+ top_p: Optional[float] = None
92
+ n: Optional[int] = None
93
+ stream: Optional[bool] = None
94
+ stop: Optional[Union[str, Sequence[str]]] = None
95
+ max_tokens: Optional[int] = None
96
+ presence_penalty: Optional[float] = None
97
+ response_format: Optional[dict] = None
98
+ frequency_penalty: Optional[float] = None
99
+ user: Optional[str] = None
100
+ tool_choice: Optional[Union[dict[str, str], str]] = None
101
+
102
+
103
+ NEBIUS_API_PARAMS = {param for param in NebiusConfig.model_fields.keys()}
@@ -28,6 +28,11 @@ class E2BInterpreter(BaseInterpreter):
28
28
  Args:
29
29
  require_confirm (bool, optional): If True, prompt user before running
30
30
  code strings for security. (default: :obj:`True`)
31
+
32
+ Environment Variables:
33
+ E2B_API_KEY: The API key for authenticating with the E2B service.
34
+ E2B_DOMAIN: The base URL for the E2B API. If not provided,
35
+ will use the default E2B endpoint.
31
36
  """
32
37
 
33
38
  _CODE_TYPE_MAPPING: ClassVar[Dict[str, Optional[str]]] = {
@@ -55,7 +60,35 @@ class E2BInterpreter(BaseInterpreter):
55
60
  from e2b_code_interpreter import Sandbox
56
61
 
57
62
  self.require_confirm = require_confirm
58
- self._sandbox = Sandbox(api_key=os.environ.get("E2B_API_KEY"))
63
+
64
+ # Get API key from environment variable
65
+ api_key = os.environ.get("E2B_API_KEY")
66
+
67
+ # Get domain from environment variable
68
+ domain = os.environ.get("E2B_DOMAIN")
69
+
70
+ # Create sandbox with appropriate parameters
71
+ sandbox_kwargs = {"api_key": api_key}
72
+
73
+ # Only add domain if it's provided
74
+ # (to maintain compatibility with standard E2B)
75
+ if domain:
76
+ sandbox_kwargs["domain"] = domain
77
+ logger.info(f"Using custom E2B endpoint: {domain}")
78
+
79
+ try:
80
+ self._sandbox = Sandbox(**sandbox_kwargs)
81
+ except TypeError as e:
82
+ if domain and "domain" in str(e):
83
+ logger.warning(
84
+ f"The e2b_code_interpreter library doesn't support "
85
+ f"custom domain. "
86
+ f"Using default E2B endpoint. Error: {e}"
87
+ )
88
+ # Fallback to default configuration without domain
89
+ self._sandbox = Sandbox(api_key=api_key)
90
+ else:
91
+ raise e
59
92
 
60
93
  def __del__(self) -> None:
61
94
  r"""Destructor for the E2BInterpreter class.
@@ -31,6 +31,7 @@ from .model_factory import ModelFactory
31
31
  from .model_manager import ModelManager, ModelProcessingError
32
32
  from .modelscope_model import ModelScopeModel
33
33
  from .moonshot_model import MoonshotModel
34
+ from .nebius_model import NebiusModel
34
35
  from .nemotron_model import NemotronModel
35
36
  from .netmind_model import NetmindModel
36
37
  from .novita_model import NovitaModel
@@ -87,6 +88,7 @@ __all__ = [
87
88
  'QwenModel',
88
89
  'AWSBedrockModel',
89
90
  'ModelProcessingError',
91
+ 'NebiusModel',
90
92
  'DeepSeekModel',
91
93
  'FishAudioModel',
92
94
  'InternLMModel',