camel-ai 0.2.75a6__tar.gz → 0.2.76a0__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 (483) hide show
  1. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/PKG-INFO +5 -3
  2. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/__init__.py +1 -1
  3. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/agents/chat_agent.py +151 -37
  4. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/configs/__init__.py +3 -0
  5. camel_ai-0.2.76a0/camel/configs/amd_config.py +70 -0
  6. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/interpreters/__init__.py +2 -0
  7. camel_ai-0.2.76a0/camel/interpreters/microsandbox_interpreter.py +395 -0
  8. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/__init__.py +2 -0
  9. camel_ai-0.2.76a0/camel/models/amd_model.py +101 -0
  10. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/model_factory.py +2 -0
  11. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/openai_model.py +0 -6
  12. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/runtimes/daytona_runtime.py +11 -12
  13. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/__init__.py +5 -3
  14. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/code_execution.py +28 -1
  15. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/function_tool.py +6 -1
  16. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/hybrid_browser_toolkit/config_loader.py +8 -0
  17. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit.py +12 -0
  18. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit_ts.py +33 -14
  19. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/hybrid_browser_toolkit/ts/src/browser-session.ts +135 -40
  20. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/hybrid_browser_toolkit/ts/src/config-loader.ts +2 -0
  21. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/hybrid_browser_toolkit/ts/src/hybrid-browser-toolkit.ts +43 -207
  22. camel_ai-0.2.76a0/camel/toolkits/hybrid_browser_toolkit/ts/src/parent-child-filter.ts +226 -0
  23. camel_ai-0.2.76a0/camel/toolkits/hybrid_browser_toolkit/ts/src/snapshot-parser.ts +231 -0
  24. camel_ai-0.2.76a0/camel/toolkits/hybrid_browser_toolkit/ts/src/som-screenshot-injected.ts +543 -0
  25. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/hybrid_browser_toolkit/ts/websocket-server.js +39 -6
  26. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/hybrid_browser_toolkit/ws_wrapper.py +241 -56
  27. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/hybrid_browser_toolkit_py/hybrid_browser_toolkit.py +5 -1
  28. camel_ai-0.2.75a6/camel/toolkits/openai_image_toolkit.py → camel_ai-0.2.76a0/camel/toolkits/image_generation_toolkit.py +98 -31
  29. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/mcp_toolkit.py +39 -14
  30. camel_ai-0.2.76a0/camel/toolkits/minimax_mcp_toolkit.py +195 -0
  31. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/terminal_toolkit.py +12 -2
  32. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/video_analysis_toolkit.py +16 -10
  33. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/types/enums.py +11 -0
  34. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/utils/commons.py +2 -0
  35. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/utils/mcp.py +136 -2
  36. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/pyproject.toml +6 -3
  37. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/.gitignore +0 -0
  38. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/LICENSE +0 -0
  39. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/README.md +0 -0
  40. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/agents/__init__.py +0 -0
  41. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/agents/_types.py +0 -0
  42. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/agents/_utils.py +0 -0
  43. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/agents/base.py +0 -0
  44. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/agents/critic_agent.py +0 -0
  45. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/agents/deductive_reasoner_agent.py +0 -0
  46. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/agents/embodied_agent.py +0 -0
  47. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/agents/knowledge_graph_agent.py +0 -0
  48. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/agents/mcp_agent.py +0 -0
  49. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/agents/multi_hop_generator_agent.py +0 -0
  50. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/agents/programmed_agent_instruction.py +0 -0
  51. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/agents/repo_agent.py +0 -0
  52. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/agents/role_assignment_agent.py +0 -0
  53. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/agents/search_agent.py +0 -0
  54. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/agents/task_agent.py +0 -0
  55. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/agents/tool_agents/__init__.py +0 -0
  56. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/agents/tool_agents/base.py +0 -0
  57. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/agents/tool_agents/hugging_face_tool_agent.py +0 -0
  58. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/benchmarks/__init__.py +0 -0
  59. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/benchmarks/apibank.py +0 -0
  60. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/benchmarks/apibench.py +0 -0
  61. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/benchmarks/base.py +0 -0
  62. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/benchmarks/browsecomp.py +0 -0
  63. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/benchmarks/gaia.py +0 -0
  64. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/benchmarks/mock_website/README.md +0 -0
  65. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/benchmarks/mock_website/mock_web.py +0 -0
  66. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/benchmarks/mock_website/requirements.txt +0 -0
  67. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/benchmarks/mock_website/shopping_mall/app.py +0 -0
  68. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/benchmarks/mock_website/task.json +0 -0
  69. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/benchmarks/nexus.py +0 -0
  70. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/benchmarks/ragbench.py +0 -0
  71. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/bots/__init__.py +0 -0
  72. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/bots/discord/__init__.py +0 -0
  73. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/bots/discord/discord_app.py +0 -0
  74. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/bots/discord/discord_installation.py +0 -0
  75. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/bots/discord/discord_store.py +0 -0
  76. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/bots/slack/__init__.py +0 -0
  77. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/bots/slack/models.py +0 -0
  78. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/bots/slack/slack_app.py +0 -0
  79. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/bots/telegram_bot.py +0 -0
  80. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/configs/aiml_config.py +0 -0
  81. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/configs/anthropic_config.py +0 -0
  82. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/configs/base_config.py +0 -0
  83. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/configs/bedrock_config.py +0 -0
  84. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/configs/cohere_config.py +0 -0
  85. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/configs/crynux_config.py +0 -0
  86. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/configs/deepseek_config.py +0 -0
  87. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/configs/gemini_config.py +0 -0
  88. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/configs/groq_config.py +0 -0
  89. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/configs/internlm_config.py +0 -0
  90. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/configs/litellm_config.py +0 -0
  91. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/configs/lmstudio_config.py +0 -0
  92. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/configs/mistral_config.py +0 -0
  93. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/configs/modelscope_config.py +0 -0
  94. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/configs/moonshot_config.py +0 -0
  95. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/configs/nebius_config.py +0 -0
  96. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/configs/netmind_config.py +0 -0
  97. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/configs/novita_config.py +0 -0
  98. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/configs/nvidia_config.py +0 -0
  99. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/configs/ollama_config.py +0 -0
  100. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/configs/openai_config.py +0 -0
  101. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/configs/openrouter_config.py +0 -0
  102. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/configs/ppio_config.py +0 -0
  103. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/configs/qianfan_config.py +0 -0
  104. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/configs/qwen_config.py +0 -0
  105. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/configs/reka_config.py +0 -0
  106. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/configs/samba_config.py +0 -0
  107. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/configs/sglang_config.py +0 -0
  108. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/configs/siliconflow_config.py +0 -0
  109. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/configs/togetherai_config.py +0 -0
  110. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/configs/vllm_config.py +0 -0
  111. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/configs/watsonx_config.py +0 -0
  112. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/configs/yi_config.py +0 -0
  113. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/configs/zhipuai_config.py +0 -0
  114. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/data_collectors/__init__.py +0 -0
  115. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/data_collectors/alpaca_collector.py +0 -0
  116. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/data_collectors/base.py +0 -0
  117. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/data_collectors/sharegpt_collector.py +0 -0
  118. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/datagen/__init__.py +0 -0
  119. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/datagen/cot_datagen.py +0 -0
  120. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/datagen/evol_instruct/__init__.py +0 -0
  121. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/datagen/evol_instruct/evol_instruct.py +0 -0
  122. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/datagen/evol_instruct/scorer.py +0 -0
  123. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/datagen/evol_instruct/templates.py +0 -0
  124. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/datagen/self_improving_cot.py +0 -0
  125. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/datagen/self_instruct/__init__.py +0 -0
  126. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/datagen/self_instruct/filter/__init__.py +0 -0
  127. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/datagen/self_instruct/filter/filter_function.py +0 -0
  128. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/datagen/self_instruct/filter/filter_registry.py +0 -0
  129. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/datagen/self_instruct/filter/instruction_filter.py +0 -0
  130. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/datagen/self_instruct/self_instruct.py +0 -0
  131. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/datagen/self_instruct/templates.py +0 -0
  132. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/datagen/source2synth/__init__.py +0 -0
  133. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/datagen/source2synth/data_processor.py +0 -0
  134. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/datagen/source2synth/models.py +0 -0
  135. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/datagen/source2synth/user_data_processor_config.py +0 -0
  136. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/datahubs/__init__.py +0 -0
  137. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/datahubs/base.py +0 -0
  138. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/datahubs/huggingface.py +0 -0
  139. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/datahubs/models.py +0 -0
  140. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/datasets/__init__.py +0 -0
  141. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/datasets/base_generator.py +0 -0
  142. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/datasets/few_shot_generator.py +0 -0
  143. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/datasets/models.py +0 -0
  144. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/datasets/self_instruct_generator.py +0 -0
  145. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/datasets/static_dataset.py +0 -0
  146. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/embeddings/__init__.py +0 -0
  147. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/embeddings/azure_embedding.py +0 -0
  148. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/embeddings/base.py +0 -0
  149. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/embeddings/gemini_embedding.py +0 -0
  150. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/embeddings/jina_embedding.py +0 -0
  151. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/embeddings/mistral_embedding.py +0 -0
  152. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/embeddings/openai_compatible_embedding.py +0 -0
  153. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/embeddings/openai_embedding.py +0 -0
  154. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/embeddings/sentence_transformers_embeddings.py +0 -0
  155. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/embeddings/together_embedding.py +0 -0
  156. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/embeddings/vlm_embedding.py +0 -0
  157. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/environments/__init__.py +0 -0
  158. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/environments/models.py +0 -0
  159. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/environments/multi_step.py +0 -0
  160. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/environments/rlcards_env.py +0 -0
  161. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/environments/single_step.py +0 -0
  162. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/environments/tic_tac_toe.py +0 -0
  163. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/extractors/__init__.py +0 -0
  164. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/extractors/base.py +0 -0
  165. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/extractors/python_strategies.py +0 -0
  166. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/generators.py +0 -0
  167. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/human.py +0 -0
  168. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/interpreters/base.py +0 -0
  169. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/interpreters/docker/Dockerfile +0 -0
  170. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/interpreters/docker_interpreter.py +0 -0
  171. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/interpreters/e2b_interpreter.py +0 -0
  172. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/interpreters/internal_python_interpreter.py +0 -0
  173. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/interpreters/interpreter_error.py +0 -0
  174. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/interpreters/ipython_interpreter.py +0 -0
  175. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/interpreters/subprocess_interpreter.py +0 -0
  176. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/loaders/__init__.py +0 -0
  177. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/loaders/apify_reader.py +0 -0
  178. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/loaders/base_io.py +0 -0
  179. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/loaders/base_loader.py +0 -0
  180. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/loaders/chunkr_reader.py +0 -0
  181. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/loaders/crawl4ai_reader.py +0 -0
  182. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/loaders/firecrawl_reader.py +0 -0
  183. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/loaders/jina_url_reader.py +0 -0
  184. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/loaders/markitdown.py +0 -0
  185. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/loaders/mineru_extractor.py +0 -0
  186. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/loaders/mistral_reader.py +0 -0
  187. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/loaders/pandas_reader.py +0 -0
  188. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/loaders/scrapegraph_reader.py +0 -0
  189. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/loaders/unstructured_io.py +0 -0
  190. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/logger.py +0 -0
  191. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/memories/__init__.py +0 -0
  192. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/memories/agent_memories.py +0 -0
  193. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/memories/base.py +0 -0
  194. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/memories/blocks/__init__.py +0 -0
  195. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/memories/blocks/chat_history_block.py +0 -0
  196. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/memories/blocks/vectordb_block.py +0 -0
  197. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/memories/context_creators/__init__.py +0 -0
  198. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/memories/context_creators/score_based.py +0 -0
  199. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/memories/records.py +0 -0
  200. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/messages/__init__.py +0 -0
  201. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/messages/base.py +0 -0
  202. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/messages/conversion/__init__.py +0 -0
  203. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/messages/conversion/alpaca.py +0 -0
  204. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/messages/conversion/conversation_models.py +0 -0
  205. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/messages/conversion/sharegpt/__init__.py +0 -0
  206. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/messages/conversion/sharegpt/function_call_formatter.py +0 -0
  207. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/messages/conversion/sharegpt/hermes/__init__.py +0 -0
  208. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/messages/conversion/sharegpt/hermes/hermes_function_formatter.py +0 -0
  209. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/messages/func_message.py +0 -0
  210. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/_utils.py +0 -0
  211. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/aiml_model.py +0 -0
  212. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/anthropic_model.py +0 -0
  213. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/aws_bedrock_model.py +0 -0
  214. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/azure_openai_model.py +0 -0
  215. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/base_audio_model.py +0 -0
  216. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/base_model.py +0 -0
  217. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/cohere_model.py +0 -0
  218. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/crynux_model.py +0 -0
  219. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/deepseek_model.py +0 -0
  220. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/fish_audio_model.py +0 -0
  221. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/gemini_model.py +0 -0
  222. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/groq_model.py +0 -0
  223. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/internlm_model.py +0 -0
  224. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/litellm_model.py +0 -0
  225. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/lmstudio_model.py +0 -0
  226. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/mistral_model.py +0 -0
  227. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/model_manager.py +0 -0
  228. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/modelscope_model.py +0 -0
  229. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/moonshot_model.py +0 -0
  230. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/nebius_model.py +0 -0
  231. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/nemotron_model.py +0 -0
  232. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/netmind_model.py +0 -0
  233. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/novita_model.py +0 -0
  234. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/nvidia_model.py +0 -0
  235. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/ollama_model.py +0 -0
  236. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/openai_audio_models.py +0 -0
  237. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/openai_compatible_model.py +0 -0
  238. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/openrouter_model.py +0 -0
  239. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/ppio_model.py +0 -0
  240. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/qianfan_model.py +0 -0
  241. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/qwen_model.py +0 -0
  242. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/reka_model.py +0 -0
  243. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/reward/__init__.py +0 -0
  244. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/reward/base_reward_model.py +0 -0
  245. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/reward/evaluator.py +0 -0
  246. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/reward/nemotron_model.py +0 -0
  247. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/reward/skywork_model.py +0 -0
  248. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/samba_model.py +0 -0
  249. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/sglang_model.py +0 -0
  250. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/siliconflow_model.py +0 -0
  251. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/stub_model.py +0 -0
  252. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/togetherai_model.py +0 -0
  253. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/vllm_model.py +0 -0
  254. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/volcano_model.py +0 -0
  255. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/watsonx_model.py +0 -0
  256. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/yi_model.py +0 -0
  257. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/models/zhipuai_model.py +0 -0
  258. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/personas/__init__.py +0 -0
  259. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/personas/persona.py +0 -0
  260. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/personas/persona_hub.py +0 -0
  261. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/prompts/__init__.py +0 -0
  262. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/prompts/ai_society.py +0 -0
  263. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/prompts/base.py +0 -0
  264. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/prompts/code.py +0 -0
  265. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/prompts/evaluation.py +0 -0
  266. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/prompts/generate_text_embedding_data.py +0 -0
  267. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/prompts/image_craft.py +0 -0
  268. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/prompts/misalignment.py +0 -0
  269. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/prompts/multi_condition_image_craft.py +0 -0
  270. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/prompts/object_recognition.py +0 -0
  271. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/prompts/persona_hub.py +0 -0
  272. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/prompts/prompt_templates.py +0 -0
  273. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/prompts/role_description_prompt_template.py +0 -0
  274. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/prompts/solution_extraction.py +0 -0
  275. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/prompts/task_prompt_template.py +0 -0
  276. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/prompts/translation.py +0 -0
  277. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/prompts/video_description_prompt.py +0 -0
  278. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/py.typed +0 -0
  279. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/responses/__init__.py +0 -0
  280. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/responses/agent_responses.py +0 -0
  281. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/retrievers/__init__.py +0 -0
  282. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/retrievers/auto_retriever.py +0 -0
  283. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/retrievers/base.py +0 -0
  284. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/retrievers/bm25_retriever.py +0 -0
  285. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/retrievers/cohere_rerank_retriever.py +0 -0
  286. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/retrievers/hybrid_retrival.py +0 -0
  287. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/retrievers/vector_retriever.py +0 -0
  288. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/runtimes/__init__.py +0 -0
  289. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/runtimes/api.py +0 -0
  290. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/runtimes/base.py +0 -0
  291. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/runtimes/configs.py +0 -0
  292. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/runtimes/docker_runtime.py +0 -0
  293. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/runtimes/llm_guard_runtime.py +0 -0
  294. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/runtimes/remote_http_runtime.py +0 -0
  295. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/runtimes/ubuntu_docker_runtime.py +0 -0
  296. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/runtimes/utils/__init__.py +0 -0
  297. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/runtimes/utils/function_risk_toolkit.py +0 -0
  298. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/runtimes/utils/ignore_risk_toolkit.py +0 -0
  299. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/schemas/__init__.py +0 -0
  300. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/schemas/base.py +0 -0
  301. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/schemas/openai_converter.py +0 -0
  302. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/schemas/outlines_converter.py +0 -0
  303. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/services/agent_openapi_server.py +0 -0
  304. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/societies/__init__.py +0 -0
  305. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/societies/babyagi_playing.py +0 -0
  306. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/societies/role_playing.py +0 -0
  307. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/societies/workforce/__init__.py +0 -0
  308. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/societies/workforce/base.py +0 -0
  309. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/societies/workforce/prompts.py +0 -0
  310. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/societies/workforce/role_playing_worker.py +0 -0
  311. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/societies/workforce/single_agent_worker.py +0 -0
  312. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/societies/workforce/structured_output_handler.py +0 -0
  313. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/societies/workforce/task_channel.py +0 -0
  314. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/societies/workforce/utils.py +0 -0
  315. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/societies/workforce/worker.py +0 -0
  316. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/societies/workforce/workforce.py +0 -0
  317. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/societies/workforce/workforce_logger.py +0 -0
  318. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/storages/__init__.py +0 -0
  319. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/storages/graph_storages/__init__.py +0 -0
  320. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/storages/graph_storages/base.py +0 -0
  321. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/storages/graph_storages/graph_element.py +0 -0
  322. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/storages/graph_storages/nebula_graph.py +0 -0
  323. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/storages/graph_storages/neo4j_graph.py +0 -0
  324. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/storages/key_value_storages/__init__.py +0 -0
  325. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/storages/key_value_storages/base.py +0 -0
  326. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/storages/key_value_storages/in_memory.py +0 -0
  327. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/storages/key_value_storages/json.py +0 -0
  328. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/storages/key_value_storages/mem0_cloud.py +0 -0
  329. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/storages/key_value_storages/redis.py +0 -0
  330. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/storages/object_storages/__init__.py +0 -0
  331. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/storages/object_storages/amazon_s3.py +0 -0
  332. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/storages/object_storages/azure_blob.py +0 -0
  333. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/storages/object_storages/base.py +0 -0
  334. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/storages/object_storages/google_cloud.py +0 -0
  335. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/storages/vectordb_storages/__init__.py +0 -0
  336. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/storages/vectordb_storages/base.py +0 -0
  337. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/storages/vectordb_storages/chroma.py +0 -0
  338. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/storages/vectordb_storages/faiss.py +0 -0
  339. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/storages/vectordb_storages/milvus.py +0 -0
  340. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/storages/vectordb_storages/oceanbase.py +0 -0
  341. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/storages/vectordb_storages/pgvector.py +0 -0
  342. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/storages/vectordb_storages/qdrant.py +0 -0
  343. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/storages/vectordb_storages/surreal.py +0 -0
  344. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/storages/vectordb_storages/tidb.py +0 -0
  345. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/storages/vectordb_storages/weaviate.py +0 -0
  346. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/tasks/__init__.py +0 -0
  347. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/tasks/task.py +0 -0
  348. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/tasks/task_prompt.py +0 -0
  349. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/terminators/__init__.py +0 -0
  350. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/terminators/base.py +0 -0
  351. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/terminators/response_terminator.py +0 -0
  352. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/terminators/token_limit_terminator.py +0 -0
  353. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/aci_toolkit.py +0 -0
  354. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/arxiv_toolkit.py +0 -0
  355. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/ask_news_toolkit.py +0 -0
  356. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/async_browser_toolkit.py +0 -0
  357. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/audio_analysis_toolkit.py +0 -0
  358. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/base.py +0 -0
  359. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/bohrium_toolkit.py +0 -0
  360. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/browser_toolkit.py +0 -0
  361. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/browser_toolkit_commons.py +0 -0
  362. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/craw4ai_toolkit.py +0 -0
  363. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/dappier_toolkit.py +0 -0
  364. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/data_commons_toolkit.py +0 -0
  365. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/edgeone_pages_mcp_toolkit.py +0 -0
  366. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/excel_toolkit.py +0 -0
  367. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/file_write_toolkit.py +0 -0
  368. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/github_toolkit.py +0 -0
  369. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/google_calendar_toolkit.py +0 -0
  370. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/google_drive_mcp_toolkit.py +0 -0
  371. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/google_maps_toolkit.py +0 -0
  372. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/google_scholar_toolkit.py +0 -0
  373. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/human_toolkit.py +0 -0
  374. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/hybrid_browser_toolkit/__init__.py +0 -0
  375. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/hybrid_browser_toolkit/ts/package-lock.json +0 -0
  376. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/hybrid_browser_toolkit/ts/package.json +0 -0
  377. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/hybrid_browser_toolkit/ts/src/browser-scripts.js +0 -0
  378. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/hybrid_browser_toolkit/ts/src/index.ts +0 -0
  379. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/hybrid_browser_toolkit/ts/src/types.ts +0 -0
  380. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/hybrid_browser_toolkit/ts/tsconfig.json +0 -0
  381. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/hybrid_browser_toolkit_py/__init__.py +0 -0
  382. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/hybrid_browser_toolkit_py/actions.py +0 -0
  383. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/hybrid_browser_toolkit_py/agent.py +0 -0
  384. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/hybrid_browser_toolkit_py/browser_session.py +0 -0
  385. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/hybrid_browser_toolkit_py/config_loader.py +0 -0
  386. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/hybrid_browser_toolkit_py/snapshot.py +0 -0
  387. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/hybrid_browser_toolkit_py/stealth_script.js +0 -0
  388. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/hybrid_browser_toolkit_py/unified_analyzer.js +0 -0
  389. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/image_analysis_toolkit.py +0 -0
  390. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/jina_reranker_toolkit.py +0 -0
  391. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/klavis_toolkit.py +0 -0
  392. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/linkedin_toolkit.py +0 -0
  393. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/markitdown_toolkit.py +0 -0
  394. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/math_toolkit.py +0 -0
  395. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/memory_toolkit.py +0 -0
  396. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/meshy_toolkit.py +0 -0
  397. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/message_agent_toolkit.py +0 -0
  398. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/message_integration.py +0 -0
  399. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/mineru_toolkit.py +0 -0
  400. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/networkx_toolkit.py +0 -0
  401. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/note_taking_toolkit.py +0 -0
  402. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/notion_mcp_toolkit.py +0 -0
  403. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/notion_toolkit.py +0 -0
  404. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/open_api_specs/biztoc/__init__.py +0 -0
  405. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/open_api_specs/biztoc/ai-plugin.json +0 -0
  406. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/open_api_specs/biztoc/openapi.yaml +0 -0
  407. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/open_api_specs/coursera/__init__.py +0 -0
  408. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/open_api_specs/coursera/openapi.yaml +0 -0
  409. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/open_api_specs/create_qr_code/__init__.py +0 -0
  410. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/open_api_specs/create_qr_code/openapi.yaml +0 -0
  411. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/open_api_specs/klarna/__init__.py +0 -0
  412. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/open_api_specs/klarna/openapi.yaml +0 -0
  413. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/open_api_specs/nasa_apod/__init__.py +0 -0
  414. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/open_api_specs/nasa_apod/openapi.yaml +0 -0
  415. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/open_api_specs/outschool/__init__.py +0 -0
  416. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/open_api_specs/outschool/ai-plugin.json +0 -0
  417. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/open_api_specs/outschool/openapi.yaml +0 -0
  418. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/open_api_specs/outschool/paths/__init__.py +0 -0
  419. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/open_api_specs/outschool/paths/get_classes.py +0 -0
  420. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/open_api_specs/outschool/paths/search_teachers.py +0 -0
  421. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/open_api_specs/security_config.py +0 -0
  422. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/open_api_specs/speak/__init__.py +0 -0
  423. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/open_api_specs/speak/openapi.yaml +0 -0
  424. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/open_api_specs/web_scraper/__init__.py +0 -0
  425. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/open_api_specs/web_scraper/ai-plugin.json +0 -0
  426. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/open_api_specs/web_scraper/openapi.yaml +0 -0
  427. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/open_api_specs/web_scraper/paths/__init__.py +0 -0
  428. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/open_api_specs/web_scraper/paths/scraper.py +0 -0
  429. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/open_api_toolkit.py +0 -0
  430. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/openbb_toolkit.py +0 -0
  431. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/origene_mcp_toolkit.py +0 -0
  432. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/page_script.js +0 -0
  433. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/playwright_mcp_toolkit.py +0 -0
  434. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/pptx_toolkit.py +0 -0
  435. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/pubmed_toolkit.py +0 -0
  436. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/pulse_mcp_search_toolkit.py +0 -0
  437. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/pyautogui_toolkit.py +0 -0
  438. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/reddit_toolkit.py +0 -0
  439. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/retrieval_toolkit.py +0 -0
  440. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/screenshot_toolkit.py +0 -0
  441. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/search_toolkit.py +0 -0
  442. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/searxng_toolkit.py +0 -0
  443. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/semantic_scholar_toolkit.py +0 -0
  444. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/slack_toolkit.py +0 -0
  445. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/stripe_toolkit.py +0 -0
  446. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/sympy_toolkit.py +0 -0
  447. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/task_planning_toolkit.py +0 -0
  448. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/thinking_toolkit.py +0 -0
  449. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/twitter_toolkit.py +0 -0
  450. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/video_download_toolkit.py +0 -0
  451. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/weather_toolkit.py +0 -0
  452. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/web_deploy_toolkit.py +0 -0
  453. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/whatsapp_toolkit.py +0 -0
  454. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/wolfram_alpha_toolkit.py +0 -0
  455. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/toolkits/zapier_toolkit.py +0 -0
  456. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/types/__init__.py +0 -0
  457. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/types/agents/__init__.py +0 -0
  458. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/types/agents/tool_calling_record.py +0 -0
  459. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/types/mcp_registries.py +0 -0
  460. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/types/openai_types.py +0 -0
  461. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/types/unified_model_type.py +0 -0
  462. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/utils/__init__.py +0 -0
  463. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/utils/async_func.py +0 -0
  464. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/utils/chunker/__init__.py +0 -0
  465. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/utils/chunker/base.py +0 -0
  466. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/utils/chunker/code_chunker.py +0 -0
  467. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/utils/chunker/uio_chunker.py +0 -0
  468. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/utils/constants.py +0 -0
  469. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/utils/deduplication.py +0 -0
  470. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/utils/filename.py +0 -0
  471. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/utils/langfuse.py +0 -0
  472. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/utils/mcp_client.py +0 -0
  473. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/utils/message_summarizer.py +0 -0
  474. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/utils/response_format.py +0 -0
  475. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/utils/token_counting.py +0 -0
  476. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/utils/tool_result.py +0 -0
  477. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/verifiers/__init__.py +0 -0
  478. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/verifiers/base.py +0 -0
  479. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/verifiers/math_verifier.py +0 -0
  480. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/verifiers/models.py +0 -0
  481. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/verifiers/physics_verifier.py +0 -0
  482. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/camel/verifiers/python_verifier.py +0 -0
  483. {camel_ai-0.2.75a6 → camel_ai-0.2.76a0}/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.75a6
3
+ Version: 0.2.76a0
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
@@ -39,7 +39,7 @@ Requires-Dist: dappier<0.4,>=0.3.3; extra == 'all'
39
39
  Requires-Dist: datacommons-pandas<0.0.4,>=0.0.3; extra == 'all'
40
40
  Requires-Dist: datacommons<2,>=1.4.3; extra == 'all'
41
41
  Requires-Dist: datasets<4,>=3; extra == 'all'
42
- Requires-Dist: daytona-sdk==0.20.0; extra == 'all'
42
+ Requires-Dist: daytona-sdk>=0.20.0; extra == 'all'
43
43
  Requires-Dist: diffusers<0.26,>=0.25.0; extra == 'all'
44
44
  Requires-Dist: discord-py<3,>=2.3.2; extra == 'all'
45
45
  Requires-Dist: docker<8,>=7.1.0; extra == 'all'
@@ -73,6 +73,7 @@ Requires-Dist: markitdown>=0.1.1; extra == 'all'
73
73
  Requires-Dist: math-verify<0.8,>=0.7.0; extra == 'all'
74
74
  Requires-Dist: mcp>=1.3.0; extra == 'all'
75
75
  Requires-Dist: mem0ai>=0.1.67; extra == 'all'
76
+ Requires-Dist: microsandbox>=0.1.8; extra == 'all'
76
77
  Requires-Dist: mistralai<2,>=1.1.0; extra == 'all'
77
78
  Requires-Dist: mock<6,>=5; extra == 'all'
78
79
  Requires-Dist: mypy<2,>=1.5.1; extra == 'all'
@@ -186,13 +187,14 @@ Requires-Dist: uv<0.8,>=0.7.0; extra == 'dev'
186
187
  Provides-Extra: dev-tools
187
188
  Requires-Dist: aci-sdk>=1.0.0b1; extra == 'dev-tools'
188
189
  Requires-Dist: agentops<0.4,>=0.3.21; extra == 'dev-tools'
189
- Requires-Dist: daytona-sdk==0.20.0; extra == 'dev-tools'
190
+ Requires-Dist: daytona-sdk>=0.20.0; extra == 'dev-tools'
190
191
  Requires-Dist: docker<8,>=7.1.0; extra == 'dev-tools'
191
192
  Requires-Dist: e2b-code-interpreter<2,>=1.0.3; extra == 'dev-tools'
192
193
  Requires-Dist: ipykernel<7,>=6.0.0; extra == 'dev-tools'
193
194
  Requires-Dist: jupyter-client<9,>=8.6.2; extra == 'dev-tools'
194
195
  Requires-Dist: langfuse>=2.60.5; extra == 'dev-tools'
195
196
  Requires-Dist: mcp>=1.3.0; extra == 'dev-tools'
197
+ Requires-Dist: microsandbox>=0.1.8; extra == 'dev-tools'
196
198
  Requires-Dist: tree-sitter-python<0.24,>=0.23.6; extra == 'dev-tools'
197
199
  Requires-Dist: tree-sitter<0.24,>=0.23.2; extra == 'dev-tools'
198
200
  Requires-Dist: typer>=0.15.2; extra == 'dev-tools'
@@ -14,7 +14,7 @@
14
14
 
15
15
  from camel.logger import disable_logging, enable_logging, set_log_level
16
16
 
17
- __version__ = '0.2.75a6'
17
+ __version__ = '0.2.76a0'
18
18
 
19
19
  __all__ = [
20
20
  '__version__',
@@ -233,7 +233,7 @@ class StreamingChatAgentResponse:
233
233
  r"""Make this object iterable."""
234
234
  if self._consumed:
235
235
  # If already consumed, iterate over stored responses
236
- return iter(self._responses)
236
+ yield from self._responses
237
237
  else:
238
238
  # If not consumed, consume and yield
239
239
  try:
@@ -2665,12 +2665,6 @@ class ChatAgent(BaseAgent):
2665
2665
  stream_completed = False
2666
2666
 
2667
2667
  for chunk in stream:
2668
- # Update token usage if available
2669
- if chunk.usage:
2670
- self._update_token_usage_tracker(
2671
- step_token_usage, safe_model_dump(chunk.usage)
2672
- )
2673
-
2674
2668
  # Process chunk delta
2675
2669
  if chunk.choices and len(chunk.choices) > 0:
2676
2670
  choice = chunk.choices[0]
@@ -2703,12 +2697,6 @@ class ChatAgent(BaseAgent):
2703
2697
  # If we have complete tool calls, execute them with
2704
2698
  # sync status updates
2705
2699
  if accumulated_tool_calls:
2706
- # Record assistant message with tool calls first
2707
- self._record_assistant_tool_calls_message(
2708
- accumulated_tool_calls,
2709
- content_accumulator.get_full_content(),
2710
- )
2711
-
2712
2700
  # Execute tools synchronously with
2713
2701
  # optimized status updates
2714
2702
  for (
@@ -2741,7 +2729,49 @@ class ChatAgent(BaseAgent):
2741
2729
  )
2742
2730
 
2743
2731
  self.record_message(final_message)
2744
- break
2732
+ elif chunk.usage and not chunk.choices:
2733
+ # Handle final chunk with usage but empty choices
2734
+ # This happens when stream_options={"include_usage": True}
2735
+ # Update the final usage from this chunk
2736
+ self._update_token_usage_tracker(
2737
+ step_token_usage, safe_model_dump(chunk.usage)
2738
+ )
2739
+
2740
+ # Create final response with final usage
2741
+ final_content = content_accumulator.get_full_content()
2742
+ if final_content.strip():
2743
+ final_message = BaseMessage(
2744
+ role_name=self.role_name,
2745
+ role_type=self.role_type,
2746
+ meta_dict={},
2747
+ content=final_content,
2748
+ )
2749
+
2750
+ if response_format:
2751
+ self._try_format_message(
2752
+ final_message, response_format
2753
+ )
2754
+
2755
+ # Create final response with final usage (not partial)
2756
+ final_response = ChatAgentResponse(
2757
+ msgs=[final_message],
2758
+ terminated=False,
2759
+ info={
2760
+ "id": getattr(chunk, 'id', ''),
2761
+ "usage": step_token_usage.copy(),
2762
+ "finish_reasons": ["stop"],
2763
+ "num_tokens": self._get_token_count(final_content),
2764
+ "tool_calls": tool_call_records or [],
2765
+ "external_tool_requests": None,
2766
+ "streaming": False,
2767
+ "partial": False,
2768
+ },
2769
+ )
2770
+ yield final_response
2771
+ break
2772
+ elif stream_completed:
2773
+ # If we've already seen finish_reason but no usage chunk, exit
2774
+ break
2745
2775
 
2746
2776
  return stream_completed, tool_calls_complete
2747
2777
 
@@ -2906,10 +2936,19 @@ class ChatAgent(BaseAgent):
2906
2936
  tool = self._internal_tools[function_name]
2907
2937
  try:
2908
2938
  result = tool(**args)
2939
+ # First, create and record the assistant message with tool
2940
+ # call
2941
+ assist_msg = FunctionCallingMessage(
2942
+ role_name=self.role_name,
2943
+ role_type=self.role_type,
2944
+ meta_dict=None,
2945
+ content="",
2946
+ func_name=function_name,
2947
+ args=args,
2948
+ tool_call_id=tool_call_id,
2949
+ )
2909
2950
 
2910
- # Only record the tool response message, not the assistant
2911
- # message assistant message with tool_calls was already
2912
- # recorded in _record_assistant_tool_calls_message
2951
+ # Then create the tool response message
2913
2952
  func_msg = FunctionCallingMessage(
2914
2953
  role_name=self.role_name,
2915
2954
  role_type=self.role_type,
@@ -2920,7 +2959,25 @@ class ChatAgent(BaseAgent):
2920
2959
  tool_call_id=tool_call_id,
2921
2960
  )
2922
2961
 
2923
- self.update_memory(func_msg, OpenAIBackendRole.FUNCTION)
2962
+ # Record both messages with precise timestamps to ensure
2963
+ # correct ordering
2964
+ import time
2965
+
2966
+ current_time_ns = time.time_ns()
2967
+ base_timestamp = (
2968
+ current_time_ns / 1_000_000_000
2969
+ ) # Convert to seconds
2970
+
2971
+ self.update_memory(
2972
+ assist_msg,
2973
+ OpenAIBackendRole.ASSISTANT,
2974
+ timestamp=base_timestamp,
2975
+ )
2976
+ self.update_memory(
2977
+ func_msg,
2978
+ OpenAIBackendRole.FUNCTION,
2979
+ timestamp=base_timestamp + 1e-6,
2980
+ )
2924
2981
 
2925
2982
  return ToolCallingRecord(
2926
2983
  tool_name=function_name,
@@ -3004,10 +3061,19 @@ class ChatAgent(BaseAgent):
3004
3061
  else:
3005
3062
  # Fallback: synchronous call
3006
3063
  result = tool(**args)
3064
+ # First, create and record the assistant message with tool
3065
+ # call
3066
+ assist_msg = FunctionCallingMessage(
3067
+ role_name=self.role_name,
3068
+ role_type=self.role_type,
3069
+ meta_dict=None,
3070
+ content="",
3071
+ func_name=function_name,
3072
+ args=args,
3073
+ tool_call_id=tool_call_id,
3074
+ )
3007
3075
 
3008
- # Only record the tool response message, not the assistant
3009
- # message assistant message with tool_calls was already
3010
- # recorded in _record_assistant_tool_calls_message
3076
+ # Then create the tool response message
3011
3077
  func_msg = FunctionCallingMessage(
3012
3078
  role_name=self.role_name,
3013
3079
  role_type=self.role_type,
@@ -3018,7 +3084,25 @@ class ChatAgent(BaseAgent):
3018
3084
  tool_call_id=tool_call_id,
3019
3085
  )
3020
3086
 
3021
- self.update_memory(func_msg, OpenAIBackendRole.FUNCTION)
3087
+ # Record both messages with precise timestamps to ensure
3088
+ # correct ordering
3089
+ import time
3090
+
3091
+ current_time_ns = time.time_ns()
3092
+ base_timestamp = (
3093
+ current_time_ns / 1_000_000_000
3094
+ ) # Convert to seconds
3095
+
3096
+ self.update_memory(
3097
+ assist_msg,
3098
+ OpenAIBackendRole.ASSISTANT,
3099
+ timestamp=base_timestamp,
3100
+ )
3101
+ self.update_memory(
3102
+ func_msg,
3103
+ OpenAIBackendRole.FUNCTION,
3104
+ timestamp=base_timestamp + 1e-6,
3105
+ )
3022
3106
 
3023
3107
  return ToolCallingRecord(
3024
3108
  tool_name=function_name,
@@ -3369,18 +3453,13 @@ class ChatAgent(BaseAgent):
3369
3453
  response_format: Optional[Type[BaseModel]] = None,
3370
3454
  ) -> AsyncGenerator[Union[ChatAgentResponse, Tuple[bool, bool]], None]:
3371
3455
  r"""Async version of process streaming chunks with
3372
- content accumulator."""
3456
+ content accumulator.
3457
+ """
3373
3458
 
3374
3459
  tool_calls_complete = False
3375
3460
  stream_completed = False
3376
3461
 
3377
3462
  async for chunk in stream:
3378
- # Update token usage if available
3379
- if chunk.usage:
3380
- self._update_token_usage_tracker(
3381
- step_token_usage, safe_model_dump(chunk.usage)
3382
- )
3383
-
3384
3463
  # Process chunk delta
3385
3464
  if chunk.choices and len(chunk.choices) > 0:
3386
3465
  choice = chunk.choices[0]
@@ -3413,13 +3492,6 @@ class ChatAgent(BaseAgent):
3413
3492
  # If we have complete tool calls, execute them with
3414
3493
  # async status updates
3415
3494
  if accumulated_tool_calls:
3416
- # Record assistant message with
3417
- # tool calls first
3418
- self._record_assistant_tool_calls_message(
3419
- accumulated_tool_calls,
3420
- content_accumulator.get_full_content(),
3421
- )
3422
-
3423
3495
  # Execute tools asynchronously with real-time
3424
3496
  # status updates
3425
3497
  async for (
@@ -3454,7 +3526,49 @@ class ChatAgent(BaseAgent):
3454
3526
  )
3455
3527
 
3456
3528
  self.record_message(final_message)
3457
- break
3529
+ elif chunk.usage and not chunk.choices:
3530
+ # Handle final chunk with usage but empty choices
3531
+ # This happens when stream_options={"include_usage": True}
3532
+ # Update the final usage from this chunk
3533
+ self._update_token_usage_tracker(
3534
+ step_token_usage, safe_model_dump(chunk.usage)
3535
+ )
3536
+
3537
+ # Create final response with final usage
3538
+ final_content = content_accumulator.get_full_content()
3539
+ if final_content.strip():
3540
+ final_message = BaseMessage(
3541
+ role_name=self.role_name,
3542
+ role_type=self.role_type,
3543
+ meta_dict={},
3544
+ content=final_content,
3545
+ )
3546
+
3547
+ if response_format:
3548
+ self._try_format_message(
3549
+ final_message, response_format
3550
+ )
3551
+
3552
+ # Create final response with final usage (not partial)
3553
+ final_response = ChatAgentResponse(
3554
+ msgs=[final_message],
3555
+ terminated=False,
3556
+ info={
3557
+ "id": getattr(chunk, 'id', ''),
3558
+ "usage": step_token_usage.copy(),
3559
+ "finish_reasons": ["stop"],
3560
+ "num_tokens": self._get_token_count(final_content),
3561
+ "tool_calls": tool_call_records or [],
3562
+ "external_tool_requests": None,
3563
+ "streaming": False,
3564
+ "partial": False,
3565
+ },
3566
+ )
3567
+ yield final_response
3568
+ break
3569
+ elif stream_completed:
3570
+ # If we've already seen finish_reason but no usage chunk, exit
3571
+ break
3458
3572
 
3459
3573
  # Yield the final status as a tuple
3460
3574
  yield (stream_completed, tool_calls_complete)
@@ -12,6 +12,7 @@
12
12
  # limitations under the License.
13
13
  # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
14
14
  from .aiml_config import AIML_API_PARAMS, AIMLConfig
15
+ from .amd_config import AMD_API_PARAMS, AMDConfig
15
16
  from .anthropic_config import ANTHROPIC_API_PARAMS, AnthropicConfig
16
17
  from .base_config import BaseConfig
17
18
  from .bedrock_config import BEDROCK_API_PARAMS, BedrockConfig
@@ -111,6 +112,8 @@ __all__ = [
111
112
  'SILICONFLOW_API_PARAMS',
112
113
  'AIMLConfig',
113
114
  'AIML_API_PARAMS',
115
+ 'AMDConfig',
116
+ 'AMD_API_PARAMS',
114
117
  'OpenRouterConfig',
115
118
  'OPENROUTER_API_PARAMS',
116
119
  'LMSTUDIO_API_PARAMS',
@@ -0,0 +1,70 @@
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 List, Optional, Union
17
+
18
+ from pydantic import Field
19
+
20
+ from camel.configs.base_config import BaseConfig
21
+ from camel.types import NotGiven
22
+
23
+
24
+ class AMDConfig(BaseConfig):
25
+ r"""Configuration class for AMD API models.
26
+
27
+ This class defines the configuration parameters for AMD's language
28
+ models, including temperature, sampling parameters, and response format
29
+ settings.
30
+
31
+ Args:
32
+ stream (bool, optional): Whether to stream the response.
33
+ (default: :obj:`None`)
34
+ temperature (float, optional): Controls randomness in the response.
35
+ Higher values make output more random, lower values make it more
36
+ deterministic. Range: [0.0, 2.0]. (default: :obj:`None`)
37
+ top_p (float, optional): Controls diversity via nucleus sampling.
38
+ Range: [0.0, 1.0]. (default: :obj:`None`)
39
+ presence_penalty (float, optional): Penalizes new tokens based on
40
+ whether they appear in the text so far. Range: [-2.0, 2.0].
41
+ (default: :obj:`None`)
42
+ frequency_penalty (float, optional): Penalizes new tokens based on
43
+ their frequency in the text so far. Range: [-2.0, 2.0].
44
+ (default: :obj:`None`)
45
+ max_tokens (Union[int, NotGiven], optional): Maximum number of tokens
46
+ to generate. If not provided, model will use its default maximum.
47
+ (default: :obj:`None`)
48
+ seed (Optional[int], optional): Random seed for deterministic sampling.
49
+ (default: :obj:`None`)
50
+ tools (Optional[List[Dict]], optional): List of tools available to the
51
+ model. This includes tools such as a text editor, a calculator, or
52
+ a search engine. (default: :obj:`None`)
53
+ tool_choice (Optional[str], optional): Tool choice configuration.
54
+ (default: :obj:`None`)
55
+ stop (Optional[List[str]], optional): List of stop sequences.
56
+ (default: :obj:`None`)
57
+ """
58
+
59
+ stream: Optional[bool] = Field(default=None)
60
+ temperature: Optional[float] = Field(default=None)
61
+ top_p: Optional[float] = Field(default=None)
62
+ presence_penalty: Optional[float] = Field(default=None)
63
+ frequency_penalty: Optional[float] = Field(default=None)
64
+ max_tokens: Optional[Union[int, NotGiven]] = Field(default=None)
65
+ seed: Optional[int] = Field(default=None)
66
+ tool_choice: Optional[str] = Field(default=None)
67
+ stop: Optional[List[str]] = Field(default=None)
68
+
69
+
70
+ AMD_API_PARAMS = {param for param in AMDConfig.model_fields.keys()}
@@ -18,6 +18,7 @@ from .e2b_interpreter import E2BInterpreter
18
18
  from .internal_python_interpreter import InternalPythonInterpreter
19
19
  from .interpreter_error import InterpreterError
20
20
  from .ipython_interpreter import JupyterKernelInterpreter
21
+ from .microsandbox_interpreter import MicrosandboxInterpreter
21
22
  from .subprocess_interpreter import SubprocessInterpreter
22
23
 
23
24
  __all__ = [
@@ -28,4 +29,5 @@ __all__ = [
28
29
  'DockerInterpreter',
29
30
  'JupyterKernelInterpreter',
30
31
  'E2BInterpreter',
32
+ 'MicrosandboxInterpreter',
31
33
  ]