camel-ai 0.2.40__tar.gz → 0.2.42__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 (376) hide show
  1. {camel_ai-0.2.40 → camel_ai-0.2.42}/PKG-INFO +2 -1
  2. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/__init__.py +1 -1
  3. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/agents/chat_agent.py +30 -10
  4. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/datasets/few_shot_generator.py +14 -6
  5. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/environments/single_step.py +28 -11
  6. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/memories/blocks/chat_history_block.py +46 -3
  7. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/vllm_model.py +16 -0
  8. camel_ai-0.2.42/camel/toolkits/terminal_toolkit.py +1037 -0
  9. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/types/enums.py +1 -0
  10. {camel_ai-0.2.40 → camel_ai-0.2.42}/pyproject.toml +2 -1
  11. camel_ai-0.2.40/camel/toolkits/terminal_toolkit.py +0 -423
  12. {camel_ai-0.2.40 → camel_ai-0.2.42}/.gitignore +0 -0
  13. {camel_ai-0.2.40 → camel_ai-0.2.42}/LICENSE +0 -0
  14. {camel_ai-0.2.40 → camel_ai-0.2.42}/README.md +0 -0
  15. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/agents/__init__.py +0 -0
  16. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/agents/_types.py +0 -0
  17. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/agents/_utils.py +0 -0
  18. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/agents/base.py +0 -0
  19. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/agents/critic_agent.py +0 -0
  20. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/agents/deductive_reasoner_agent.py +0 -0
  21. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/agents/embodied_agent.py +0 -0
  22. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/agents/knowledge_graph_agent.py +0 -0
  23. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/agents/multi_hop_generator_agent.py +0 -0
  24. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/agents/programmed_agent_instruction.py +0 -0
  25. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/agents/repo_agent.py +0 -0
  26. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/agents/role_assignment_agent.py +0 -0
  27. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/agents/search_agent.py +0 -0
  28. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/agents/task_agent.py +0 -0
  29. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/agents/tool_agents/__init__.py +0 -0
  30. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/agents/tool_agents/base.py +0 -0
  31. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/agents/tool_agents/hugging_face_tool_agent.py +0 -0
  32. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/benchmarks/__init__.py +0 -0
  33. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/benchmarks/apibank.py +0 -0
  34. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/benchmarks/apibench.py +0 -0
  35. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/benchmarks/base.py +0 -0
  36. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/benchmarks/gaia.py +0 -0
  37. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/benchmarks/nexus.py +0 -0
  38. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/benchmarks/ragbench.py +0 -0
  39. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/bots/__init__.py +0 -0
  40. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/bots/discord/__init__.py +0 -0
  41. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/bots/discord/discord_app.py +0 -0
  42. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/bots/discord/discord_installation.py +0 -0
  43. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/bots/discord/discord_store.py +0 -0
  44. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/bots/slack/__init__.py +0 -0
  45. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/bots/slack/models.py +0 -0
  46. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/bots/slack/slack_app.py +0 -0
  47. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/bots/telegram_bot.py +0 -0
  48. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/configs/__init__.py +0 -0
  49. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/configs/aiml_config.py +0 -0
  50. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/configs/anthropic_config.py +0 -0
  51. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/configs/base_config.py +0 -0
  52. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/configs/cohere_config.py +0 -0
  53. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/configs/deepseek_config.py +0 -0
  54. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/configs/gemini_config.py +0 -0
  55. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/configs/groq_config.py +0 -0
  56. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/configs/internlm_config.py +0 -0
  57. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/configs/litellm_config.py +0 -0
  58. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/configs/mistral_config.py +0 -0
  59. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/configs/modelscope_config.py +0 -0
  60. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/configs/moonshot_config.py +0 -0
  61. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/configs/nvidia_config.py +0 -0
  62. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/configs/ollama_config.py +0 -0
  63. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/configs/openai_config.py +0 -0
  64. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/configs/openrouter_config.py +0 -0
  65. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/configs/qwen_config.py +0 -0
  66. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/configs/reka_config.py +0 -0
  67. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/configs/samba_config.py +0 -0
  68. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/configs/sglang_config.py +0 -0
  69. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/configs/siliconflow_config.py +0 -0
  70. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/configs/togetherai_config.py +0 -0
  71. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/configs/vllm_config.py +0 -0
  72. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/configs/yi_config.py +0 -0
  73. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/configs/zhipuai_config.py +0 -0
  74. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/data_collector/__init__.py +0 -0
  75. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/data_collector/alpaca_collector.py +0 -0
  76. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/data_collector/base.py +0 -0
  77. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/data_collector/sharegpt_collector.py +0 -0
  78. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/datagen/__init__.py +0 -0
  79. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/datagen/cot_datagen.py +0 -0
  80. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/datagen/evol_instruct/__init__.py +0 -0
  81. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/datagen/evol_instruct/evol_instruct.py +0 -0
  82. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/datagen/evol_instruct/scorer.py +0 -0
  83. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/datagen/evol_instruct/templates.py +0 -0
  84. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/datagen/self_improving_cot.py +0 -0
  85. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/datagen/self_instruct/__init__.py +0 -0
  86. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/datagen/self_instruct/filter/__init__.py +0 -0
  87. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/datagen/self_instruct/filter/filter_function.py +0 -0
  88. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/datagen/self_instruct/filter/filter_registry.py +0 -0
  89. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/datagen/self_instruct/filter/instruction_filter.py +0 -0
  90. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/datagen/self_instruct/self_instruct.py +0 -0
  91. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/datagen/self_instruct/templates.py +0 -0
  92. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/datagen/source2synth/__init__.py +0 -0
  93. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/datagen/source2synth/data_processor.py +0 -0
  94. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/datagen/source2synth/models.py +0 -0
  95. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/datagen/source2synth/user_data_processor_config.py +0 -0
  96. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/datahubs/__init__.py +0 -0
  97. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/datahubs/base.py +0 -0
  98. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/datahubs/huggingface.py +0 -0
  99. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/datahubs/models.py +0 -0
  100. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/datasets/__init__.py +0 -0
  101. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/datasets/base_generator.py +0 -0
  102. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/datasets/models.py +0 -0
  103. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/datasets/self_instruct_generator.py +0 -0
  104. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/datasets/static_dataset.py +0 -0
  105. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/embeddings/__init__.py +0 -0
  106. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/embeddings/base.py +0 -0
  107. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/embeddings/jina_embedding.py +0 -0
  108. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/embeddings/mistral_embedding.py +0 -0
  109. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/embeddings/openai_compatible_embedding.py +0 -0
  110. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/embeddings/openai_embedding.py +0 -0
  111. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/embeddings/sentence_transformers_embeddings.py +0 -0
  112. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/embeddings/vlm_embedding.py +0 -0
  113. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/environments/__init__.py +0 -0
  114. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/environments/models.py +0 -0
  115. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/environments/multi_step.py +0 -0
  116. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/extractors/__init__.py +0 -0
  117. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/extractors/base.py +0 -0
  118. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/extractors/python_strategies.py +0 -0
  119. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/generators.py +0 -0
  120. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/human.py +0 -0
  121. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/interpreters/__init__.py +0 -0
  122. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/interpreters/base.py +0 -0
  123. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/interpreters/docker/Dockerfile +0 -0
  124. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/interpreters/docker_interpreter.py +0 -0
  125. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/interpreters/e2b_interpreter.py +0 -0
  126. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/interpreters/internal_python_interpreter.py +0 -0
  127. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/interpreters/interpreter_error.py +0 -0
  128. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/interpreters/ipython_interpreter.py +0 -0
  129. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/interpreters/subprocess_interpreter.py +0 -0
  130. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/loaders/__init__.py +0 -0
  131. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/loaders/apify_reader.py +0 -0
  132. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/loaders/base_io.py +0 -0
  133. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/loaders/chunkr_reader.py +0 -0
  134. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/loaders/firecrawl_reader.py +0 -0
  135. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/loaders/jina_url_reader.py +0 -0
  136. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/loaders/mineru_extractor.py +0 -0
  137. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/loaders/pandas_reader.py +0 -0
  138. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/loaders/unstructured_io.py +0 -0
  139. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/logger.py +0 -0
  140. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/memories/__init__.py +0 -0
  141. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/memories/agent_memories.py +0 -0
  142. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/memories/base.py +0 -0
  143. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/memories/blocks/__init__.py +0 -0
  144. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/memories/blocks/vectordb_block.py +0 -0
  145. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/memories/context_creators/__init__.py +0 -0
  146. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/memories/context_creators/score_based.py +0 -0
  147. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/memories/records.py +0 -0
  148. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/messages/__init__.py +0 -0
  149. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/messages/base.py +0 -0
  150. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/messages/conversion/__init__.py +0 -0
  151. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/messages/conversion/alpaca.py +0 -0
  152. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/messages/conversion/conversation_models.py +0 -0
  153. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/messages/conversion/sharegpt/__init__.py +0 -0
  154. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/messages/conversion/sharegpt/function_call_formatter.py +0 -0
  155. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/messages/conversion/sharegpt/hermes/__init__.py +0 -0
  156. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/messages/conversion/sharegpt/hermes/hermes_function_formatter.py +0 -0
  157. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/messages/func_message.py +0 -0
  158. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/__init__.py +0 -0
  159. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/_utils.py +0 -0
  160. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/aiml_model.py +0 -0
  161. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/anthropic_model.py +0 -0
  162. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/azure_openai_model.py +0 -0
  163. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/base_audio_model.py +0 -0
  164. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/base_model.py +0 -0
  165. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/cohere_model.py +0 -0
  166. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/deepseek_model.py +0 -0
  167. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/fish_audio_model.py +0 -0
  168. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/gemini_model.py +0 -0
  169. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/groq_model.py +0 -0
  170. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/internlm_model.py +0 -0
  171. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/litellm_model.py +0 -0
  172. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/mistral_model.py +0 -0
  173. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/model_factory.py +0 -0
  174. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/model_manager.py +0 -0
  175. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/modelscope_model.py +0 -0
  176. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/moonshot_model.py +0 -0
  177. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/nemotron_model.py +0 -0
  178. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/nvidia_model.py +0 -0
  179. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/ollama_model.py +0 -0
  180. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/openai_audio_models.py +0 -0
  181. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/openai_compatible_model.py +0 -0
  182. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/openai_model.py +0 -0
  183. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/openrouter_model.py +0 -0
  184. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/qwen_model.py +0 -0
  185. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/reka_model.py +0 -0
  186. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/reward/__init__.py +0 -0
  187. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/reward/base_reward_model.py +0 -0
  188. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/reward/evaluator.py +0 -0
  189. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/reward/nemotron_model.py +0 -0
  190. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/reward/skywork_model.py +0 -0
  191. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/samba_model.py +0 -0
  192. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/sglang_model.py +0 -0
  193. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/siliconflow_model.py +0 -0
  194. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/stub_model.py +0 -0
  195. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/togetherai_model.py +0 -0
  196. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/volcano_model.py +0 -0
  197. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/yi_model.py +0 -0
  198. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/models/zhipuai_model.py +0 -0
  199. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/personas/__init__.py +0 -0
  200. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/personas/persona.py +0 -0
  201. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/personas/persona_hub.py +0 -0
  202. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/prompts/__init__.py +0 -0
  203. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/prompts/ai_society.py +0 -0
  204. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/prompts/base.py +0 -0
  205. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/prompts/code.py +0 -0
  206. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/prompts/evaluation.py +0 -0
  207. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/prompts/generate_text_embedding_data.py +0 -0
  208. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/prompts/image_craft.py +0 -0
  209. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/prompts/misalignment.py +0 -0
  210. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/prompts/multi_condition_image_craft.py +0 -0
  211. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/prompts/object_recognition.py +0 -0
  212. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/prompts/persona_hub.py +0 -0
  213. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/prompts/prompt_templates.py +0 -0
  214. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/prompts/role_description_prompt_template.py +0 -0
  215. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/prompts/solution_extraction.py +0 -0
  216. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/prompts/task_prompt_template.py +0 -0
  217. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/prompts/translation.py +0 -0
  218. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/prompts/video_description_prompt.py +0 -0
  219. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/py.typed +0 -0
  220. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/responses/__init__.py +0 -0
  221. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/responses/agent_responses.py +0 -0
  222. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/retrievers/__init__.py +0 -0
  223. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/retrievers/auto_retriever.py +0 -0
  224. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/retrievers/base.py +0 -0
  225. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/retrievers/bm25_retriever.py +0 -0
  226. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/retrievers/cohere_rerank_retriever.py +0 -0
  227. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/retrievers/hybrid_retrival.py +0 -0
  228. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/retrievers/vector_retriever.py +0 -0
  229. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/runtime/__init__.py +0 -0
  230. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/runtime/api.py +0 -0
  231. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/runtime/base.py +0 -0
  232. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/runtime/configs.py +0 -0
  233. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/runtime/docker_runtime.py +0 -0
  234. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/runtime/llm_guard_runtime.py +0 -0
  235. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/runtime/remote_http_runtime.py +0 -0
  236. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/runtime/utils/__init__.py +0 -0
  237. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/runtime/utils/function_risk_toolkit.py +0 -0
  238. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/runtime/utils/ignore_risk_toolkit.py +0 -0
  239. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/schemas/__init__.py +0 -0
  240. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/schemas/base.py +0 -0
  241. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/schemas/openai_converter.py +0 -0
  242. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/schemas/outlines_converter.py +0 -0
  243. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/societies/__init__.py +0 -0
  244. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/societies/babyagi_playing.py +0 -0
  245. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/societies/role_playing.py +0 -0
  246. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/societies/workforce/__init__.py +0 -0
  247. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/societies/workforce/base.py +0 -0
  248. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/societies/workforce/prompts.py +0 -0
  249. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/societies/workforce/role_playing_worker.py +0 -0
  250. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/societies/workforce/single_agent_worker.py +0 -0
  251. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/societies/workforce/task_channel.py +0 -0
  252. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/societies/workforce/utils.py +0 -0
  253. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/societies/workforce/worker.py +0 -0
  254. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/societies/workforce/workforce.py +0 -0
  255. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/storages/__init__.py +0 -0
  256. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/storages/graph_storages/__init__.py +0 -0
  257. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/storages/graph_storages/base.py +0 -0
  258. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/storages/graph_storages/graph_element.py +0 -0
  259. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/storages/graph_storages/nebula_graph.py +0 -0
  260. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/storages/graph_storages/neo4j_graph.py +0 -0
  261. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/storages/key_value_storages/__init__.py +0 -0
  262. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/storages/key_value_storages/base.py +0 -0
  263. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/storages/key_value_storages/in_memory.py +0 -0
  264. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/storages/key_value_storages/json.py +0 -0
  265. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/storages/key_value_storages/mem0_cloud.py +0 -0
  266. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/storages/key_value_storages/redis.py +0 -0
  267. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/storages/object_storages/__init__.py +0 -0
  268. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/storages/object_storages/amazon_s3.py +0 -0
  269. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/storages/object_storages/azure_blob.py +0 -0
  270. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/storages/object_storages/base.py +0 -0
  271. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/storages/object_storages/google_cloud.py +0 -0
  272. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/storages/vectordb_storages/__init__.py +0 -0
  273. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/storages/vectordb_storages/base.py +0 -0
  274. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/storages/vectordb_storages/milvus.py +0 -0
  275. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/storages/vectordb_storages/qdrant.py +0 -0
  276. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/storages/vectordb_storages/tidb.py +0 -0
  277. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/tasks/__init__.py +0 -0
  278. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/tasks/task.py +0 -0
  279. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/tasks/task_prompt.py +0 -0
  280. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/terminators/__init__.py +0 -0
  281. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/terminators/base.py +0 -0
  282. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/terminators/response_terminator.py +0 -0
  283. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/terminators/token_limit_terminator.py +0 -0
  284. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/__init__.py +0 -0
  285. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/arxiv_toolkit.py +0 -0
  286. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/ask_news_toolkit.py +0 -0
  287. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/audio_analysis_toolkit.py +0 -0
  288. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/base.py +0 -0
  289. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/browser_toolkit.py +0 -0
  290. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/code_execution.py +0 -0
  291. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/dalle_toolkit.py +0 -0
  292. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/dappier_toolkit.py +0 -0
  293. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/data_commons_toolkit.py +0 -0
  294. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/excel_toolkit.py +0 -0
  295. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/file_write_toolkit.py +0 -0
  296. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/function_tool.py +0 -0
  297. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/github_toolkit.py +0 -0
  298. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/google_maps_toolkit.py +0 -0
  299. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/google_scholar_toolkit.py +0 -0
  300. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/human_toolkit.py +0 -0
  301. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/image_analysis_toolkit.py +0 -0
  302. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/linkedin_toolkit.py +0 -0
  303. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/math_toolkit.py +0 -0
  304. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/mcp_toolkit.py +0 -0
  305. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/memory_toolkit.py +0 -0
  306. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/meshy_toolkit.py +0 -0
  307. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/mineru_toolkit.py +0 -0
  308. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/networkx_toolkit.py +0 -0
  309. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/notion_toolkit.py +0 -0
  310. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/open_api_specs/biztoc/__init__.py +0 -0
  311. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/open_api_specs/biztoc/ai-plugin.json +0 -0
  312. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/open_api_specs/biztoc/openapi.yaml +0 -0
  313. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/open_api_specs/coursera/__init__.py +0 -0
  314. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/open_api_specs/coursera/openapi.yaml +0 -0
  315. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/open_api_specs/create_qr_code/__init__.py +0 -0
  316. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/open_api_specs/create_qr_code/openapi.yaml +0 -0
  317. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/open_api_specs/klarna/__init__.py +0 -0
  318. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/open_api_specs/klarna/openapi.yaml +0 -0
  319. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/open_api_specs/nasa_apod/__init__.py +0 -0
  320. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/open_api_specs/nasa_apod/openapi.yaml +0 -0
  321. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/open_api_specs/outschool/__init__.py +0 -0
  322. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/open_api_specs/outschool/ai-plugin.json +0 -0
  323. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/open_api_specs/outschool/openapi.yaml +0 -0
  324. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/open_api_specs/outschool/paths/__init__.py +0 -0
  325. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/open_api_specs/outschool/paths/get_classes.py +0 -0
  326. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/open_api_specs/outschool/paths/search_teachers.py +0 -0
  327. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/open_api_specs/security_config.py +0 -0
  328. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/open_api_specs/speak/__init__.py +0 -0
  329. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/open_api_specs/speak/openapi.yaml +0 -0
  330. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/open_api_specs/web_scraper/__init__.py +0 -0
  331. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/open_api_specs/web_scraper/ai-plugin.json +0 -0
  332. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/open_api_specs/web_scraper/openapi.yaml +0 -0
  333. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/open_api_specs/web_scraper/paths/__init__.py +0 -0
  334. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/open_api_specs/web_scraper/paths/scraper.py +0 -0
  335. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/open_api_toolkit.py +0 -0
  336. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/openai_agent_toolkit.py +0 -0
  337. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/openbb_toolkit.py +0 -0
  338. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/page_script.js +0 -0
  339. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/pubmed_toolkit.py +0 -0
  340. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/reddit_toolkit.py +0 -0
  341. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/retrieval_toolkit.py +0 -0
  342. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/search_toolkit.py +0 -0
  343. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/searxng_toolkit.py +0 -0
  344. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/semantic_scholar_toolkit.py +0 -0
  345. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/slack_toolkit.py +0 -0
  346. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/stripe_toolkit.py +0 -0
  347. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/sympy_toolkit.py +0 -0
  348. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/thinking_toolkit.py +0 -0
  349. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/twitter_toolkit.py +0 -0
  350. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/video_analysis_toolkit.py +0 -0
  351. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/video_download_toolkit.py +0 -0
  352. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/weather_toolkit.py +0 -0
  353. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/whatsapp_toolkit.py +0 -0
  354. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/toolkits/zapier_toolkit.py +0 -0
  355. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/types/__init__.py +0 -0
  356. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/types/agents/__init__.py +0 -0
  357. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/types/agents/tool_calling_record.py +0 -0
  358. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/types/openai_types.py +0 -0
  359. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/types/unified_model_type.py +0 -0
  360. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/utils/__init__.py +0 -0
  361. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/utils/async_func.py +0 -0
  362. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/utils/chunker/__init__.py +0 -0
  363. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/utils/chunker/base.py +0 -0
  364. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/utils/chunker/code_chunker.py +0 -0
  365. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/utils/chunker/uio_chunker.py +0 -0
  366. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/utils/commons.py +0 -0
  367. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/utils/constants.py +0 -0
  368. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/utils/deduplication.py +0 -0
  369. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/utils/mcp.py +0 -0
  370. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/utils/response_format.py +0 -0
  371. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/utils/token_counting.py +0 -0
  372. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/verifiers/__init__.py +0 -0
  373. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/verifiers/base.py +0 -0
  374. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/verifiers/math_verifier.py +0 -0
  375. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/verifiers/models.py +0 -0
  376. {camel_ai-0.2.40 → camel_ai-0.2.42}/camel/verifiers/python_verifier.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: camel-ai
3
- Version: 0.2.40
3
+ Version: 0.2.42
4
4
  Summary: Communicative Agents for AI Society Study
5
5
  Project-URL: Homepage, https://www.camel-ai.org/
6
6
  Project-URL: Repository, https://github.com/camel-ai/camel
@@ -14,6 +14,7 @@ Requires-Dist: colorama<0.5,>=0.4.6
14
14
  Requires-Dist: docstring-parser<0.16,>=0.15
15
15
  Requires-Dist: httpx<1.0.0dev,>=0.28.0
16
16
  Requires-Dist: jsonschema<5,>=4
17
+ Requires-Dist: mcp>=1.3.0
17
18
  Requires-Dist: openai<2,>=1.68.0
18
19
  Requires-Dist: psutil<6,>=5.9.8
19
20
  Requires-Dist: pydantic<2.10,>=1.9
@@ -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.40'
17
+ __version__ = '0.2.42'
18
18
 
19
19
  __all__ = [
20
20
  '__version__',
@@ -327,7 +327,10 @@ class ChatAgent(BaseAgent):
327
327
  return False
328
328
 
329
329
  def update_memory(
330
- self, message: BaseMessage, role: OpenAIBackendRole
330
+ self,
331
+ message: BaseMessage,
332
+ role: OpenAIBackendRole,
333
+ timestamp: Optional[float] = None,
331
334
  ) -> None:
332
335
  r"""Updates the agent memory with a new message.
333
336
 
@@ -335,12 +338,19 @@ class ChatAgent(BaseAgent):
335
338
  message (BaseMessage): The new message to add to the stored
336
339
  messages.
337
340
  role (OpenAIBackendRole): The backend role type.
341
+ timestamp (Optional[float], optional): Custom timestamp for the
342
+ memory record. If None, current timestamp will be used.
343
+ (default: :obj:`None`)
338
344
  """
345
+ from datetime import timezone
346
+
339
347
  self.memory.write_record(
340
348
  MemoryRecord(
341
349
  message=message,
342
350
  role_at_backend=role,
343
- timestamp=datetime.now().timestamp(),
351
+ timestamp=timestamp
352
+ if timestamp is not None
353
+ else datetime.now(timezone.utc).timestamp(),
344
354
  agent_id=self.agent_id,
345
355
  )
346
356
  )
@@ -603,9 +613,6 @@ class ChatAgent(BaseAgent):
603
613
  self._get_full_tool_schemas(),
604
614
  )
605
615
 
606
- if self.single_iteration:
607
- break
608
-
609
616
  if tool_call_requests := response.tool_call_requests:
610
617
  # Process all tool calls
611
618
  for tool_call_request in tool_call_requests:
@@ -625,6 +632,9 @@ class ChatAgent(BaseAgent):
625
632
  if external_tool_call_requests:
626
633
  break
627
634
 
635
+ if self.single_iteration:
636
+ break
637
+
628
638
  # If we're still here, continue the loop
629
639
  continue
630
640
 
@@ -695,9 +705,6 @@ class ChatAgent(BaseAgent):
695
705
  self._get_full_tool_schemas(),
696
706
  )
697
707
 
698
- if self.single_iteration:
699
- break
700
-
701
708
  if tool_call_requests := response.tool_call_requests:
702
709
  # Process all tool calls
703
710
  for tool_call_request in tool_call_requests:
@@ -718,6 +725,9 @@ class ChatAgent(BaseAgent):
718
725
  if external_tool_call_requests:
719
726
  break
720
727
 
728
+ if self.single_iteration:
729
+ break
730
+
721
731
  # If we're still here, continue the loop
722
732
  continue
723
733
 
@@ -1331,8 +1341,18 @@ class ChatAgent(BaseAgent):
1331
1341
  tool_call_id=tool_call_id,
1332
1342
  )
1333
1343
 
1334
- self.update_memory(assist_msg, OpenAIBackendRole.ASSISTANT)
1335
- self.update_memory(func_msg, OpenAIBackendRole.FUNCTION)
1344
+ # Use slightly different timestamps to ensure correct ordering
1345
+ # This ensures the assistant message (tool call) always appears before
1346
+ # the function message (tool result) in the conversation context
1347
+ current_time = datetime.now().timestamp()
1348
+ self.update_memory(
1349
+ assist_msg, OpenAIBackendRole.ASSISTANT, timestamp=current_time
1350
+ )
1351
+ self.update_memory(
1352
+ func_msg,
1353
+ OpenAIBackendRole.FUNCTION,
1354
+ timestamp=current_time + 0.001,
1355
+ )
1336
1356
 
1337
1357
  # Record information about this tool call
1338
1358
  tool_record = ToolCallingRecord(
@@ -201,19 +201,27 @@ class FewShotGenerator(BaseGenerator):
201
201
  raise TypeError(f"Rationale {rationale} is not a string.")
202
202
 
203
203
  try:
204
- verifier_response = await self.verifier.verify(
205
- solution=rationale,
206
- reference_answer=None,
204
+ verifier_response = await asyncio.wait_for(
205
+ self.verifier.verify(
206
+ solution=rationale,
207
+ reference_answer=None,
208
+ ),
209
+ timeout=180,
207
210
  )
208
211
  if not verifier_response or not verifier_response.result:
209
212
  raise ValueError(
210
213
  "Verifier unsuccessful, response: "
211
214
  f"{verifier_response}"
212
215
  )
213
- except (ValueError, AttributeError) as e:
216
+ except (ValueError, AttributeError, asyncio.TimeoutError) as e:
217
+ error_msg = (
218
+ "Verifier timeout"
219
+ if isinstance(e, asyncio.TimeoutError)
220
+ else f"Verifier issue: {e}"
221
+ )
214
222
  logger.warning(
215
- f"Verifier issue: {e}, "
216
- f"retrying... ({retries + 1}/{max_retries})"
223
+ f"{error_msg}, retrying... "
224
+ f"({retries + 1}/{max_retries})"
217
225
  )
218
226
  retries += 1
219
227
  continue
@@ -224,7 +224,7 @@ class SingleStepEnv:
224
224
  raise TypeError(f"Unsupported dataset type: {type(self.dataset)}")
225
225
 
226
226
  async def step(
227
- self, action: Union[Action, List[Action], str]
227
+ self, action: Union[Action, List[Action], str, Dict[int, str]]
228
228
  ) -> Union[
229
229
  Tuple[Observation, float, bool, Dict[str, Any]],
230
230
  List[Tuple[Observation, float, bool, Dict[str, Any]]],
@@ -242,13 +242,15 @@ class SingleStepEnv:
242
242
  the observation will not change.
243
243
 
244
244
  Args:
245
- action (Union[Action, List[Action], str]):
245
+ action (Union[Action, List[Action], str, Dict[int, str]]):
246
246
  The action(s) taken by the agent,
247
247
  which should contain the response(s)
248
248
  to the observation(s). Can be:
249
249
  - A single `Action` object (for batch size 1),
250
250
  - A list of `Action` objects (for batched evaluation),
251
251
  - A raw string (only allowed when batch size is 1).
252
+ - A dict that maps indices to their `llm_response`
253
+ (for batched evaluation)
252
254
 
253
255
  Returns:
254
256
  Union[Tuple[Observation, float, bool, Dict[str, Any]], List[...]]:
@@ -293,6 +295,7 @@ class SingleStepEnv:
293
295
  f"total batch size ({self.current_batch_size})"
294
296
  )
295
297
 
298
+ indices = [act.index for act in actions]
296
299
  proposed_solutions = [act.llm_response for act in actions]
297
300
  ground_truths: List[str] = []
298
301
  for idx in indices:
@@ -334,21 +337,22 @@ class SingleStepEnv:
334
337
  ).as_tuple()
335
338
  for i in range(len(actions))
336
339
  ]
340
+
337
341
  for _, idx in enumerate(indices):
338
342
  self._states_done[idx] = True
339
343
 
340
344
  return step_results[0] if len(step_results) == 1 else step_results
341
345
 
342
346
  def _normalize_actions(
343
- self, action: Union[Action, List[Action], str]
347
+ self, action: Union[Action, List[Action], str, Dict[int, str]]
344
348
  ) -> List[Action]:
345
349
  r"""Normalize the user-provided action(s) into a validated list
346
350
  of `Action` objects.
347
351
 
348
352
  This method handles flexibility in input format by converting
349
- raw strings (only allowed when batch size is 1) and ensuring
350
- all necessary structure and integrity checks on actions
351
- (e.g., index bounds, duplicates).
353
+ raw strings (only allowed when batch size is 1) and dictionaries,
354
+ ensuring all necessary structure and integrity checks on
355
+ actions (e.g., index bounds, duplicates).
352
356
 
353
357
  Args:
354
358
  action (Union[Action, List[Action], str]):
@@ -357,6 +361,7 @@ class SingleStepEnv:
357
361
  - A list of `Action` objects.
358
362
  - A raw string (if `batch_size == 1`), auto-wrapped
359
363
  in an `Action`.
364
+ - A dict mapping int indices to str responses
360
365
 
361
366
  Returns:
362
367
  List[Action]: A list of validated `Action` instances
@@ -368,8 +373,9 @@ class SingleStepEnv:
368
373
  - Action list is empty,
369
374
  - Index mismatches expected values
370
375
  (e.g., 0 for batch size 1),
371
- - Wrong structure is used
372
- (e.g., string used with batch size > 1).
376
+ - Wrong structure is used (e.g.,
377
+ string used with batch size > 1,
378
+ dict used with batch size == 1).
373
379
  TypeError: If the action is of an unsupported type.
374
380
  """
375
381
 
@@ -380,9 +386,20 @@ class SingleStepEnv:
380
386
  " when batch_size == 1"
381
387
  )
382
388
  logger.warning("Auto-converting from str to Action", stacklevel=2)
383
- action = Action(index=0, llm_response=action)
389
+ actions = [Action(index=0, llm_response=action)]
390
+
391
+ elif isinstance(action, dict):
392
+ if not all(isinstance(k, int) for k in action.keys()):
393
+ raise ValueError("All dictionary keys must be integers")
384
394
 
385
- if isinstance(action, Action):
395
+ if self.current_batch_size == 1 and list(action.keys()) != [0]:
396
+ raise ValueError(
397
+ "For batch_size=1, dict input must have exactly one key: 0"
398
+ )
399
+ actions = [
400
+ Action(index=k, llm_response=v) for k, v in action.items()
401
+ ]
402
+ elif isinstance(action, Action):
386
403
  actions = [action]
387
404
  elif isinstance(action, list):
388
405
  if not action:
@@ -397,7 +414,7 @@ class SingleStepEnv:
397
414
 
398
415
  if self.current_batch_size == 1 and len(actions) != 1:
399
416
  raise ValueError(
400
- "For batch_size=1, expect a single Action or a "
417
+ "For batch_size=1, expect a single Action, a dictionary or a "
401
418
  "list containing exactly one Action"
402
419
  )
403
420
 
@@ -74,9 +74,52 @@ class ChatHistoryBlock(MemoryBlock):
74
74
  return list()
75
75
 
76
76
  chat_records: List[MemoryRecord] = []
77
- truncate_idx = -window_size if window_size is not None else 0
78
- for record_dict in record_dicts[truncate_idx:]:
79
- chat_records.append(MemoryRecord.from_dict(record_dict))
77
+ if window_size is not None and window_size >= 0:
78
+ # Initial preserved index: Keep first message
79
+ # if it's SYSTEM/DEVELOPER (index 0)
80
+ start_index = (
81
+ 1
82
+ if (
83
+ record_dicts
84
+ and record_dicts[0]['role_at_backend']
85
+ in {OpenAIBackendRole.SYSTEM, OpenAIBackendRole.DEVELOPER}
86
+ )
87
+ else 0
88
+ )
89
+
90
+ """
91
+ Message Processing Logic:
92
+ 1. Preserve first system/developer message (if needed)
93
+ 2. Keep latest window_size messages from the rest
94
+
95
+ Examples:
96
+ - Case 1: First message is SYSTEM, total 5 messages, window_size=2
97
+ Input: [system_msg, user_msg1, user_msg2, user_msg3, user_msg4]
98
+ Result: [system_msg] + [user_msg3, user_msg4]
99
+
100
+ - Case 2: First message is USER, total 5 messages, window_size=3
101
+ Input: [user_msg1, user_msg2, user_msg3, user_msg4, , user_msg5]
102
+ Result: [user_msg3, user_msg4, , user_msg5]
103
+ """
104
+ preserved_messages = record_dicts[
105
+ :start_index
106
+ ] # Preserve system message (if exists)
107
+ sliding_messages = record_dicts[
108
+ start_index:
109
+ ] # Messages to be truncated
110
+
111
+ # Take last window_size messages (if exceeds limit)
112
+ truncated_messages = sliding_messages[-window_size:]
113
+
114
+ # Combine preserved messages with truncated window messages
115
+ final_records = preserved_messages + truncated_messages
116
+ else:
117
+ # Return full records when no window restriction
118
+ final_records = record_dicts
119
+
120
+ chat_records = [
121
+ MemoryRecord.from_dict(record) for record in final_records
122
+ ]
80
123
 
81
124
  # We assume that, in the chat history memory, the closer the record is
82
125
  # to the current message, the more score it will be.
@@ -162,6 +162,14 @@ class VLLMModel(BaseModelBackend):
162
162
  if response_format:
163
163
  kwargs["response_format"] = {"type": "json_object"}
164
164
 
165
+ # Remove additionalProperties from each tool's function parameters
166
+ if tools and "tools" in kwargs:
167
+ for tool in kwargs["tools"]:
168
+ if "function" in tool and "parameters" in tool["function"]:
169
+ tool["function"]["parameters"].pop(
170
+ "additionalProperties", None
171
+ )
172
+
165
173
  response = await self._async_client.chat.completions.create(
166
174
  messages=messages,
167
175
  model=self.model_type,
@@ -197,6 +205,14 @@ class VLLMModel(BaseModelBackend):
197
205
  if response_format:
198
206
  kwargs["response_format"] = {"type": "json_object"}
199
207
 
208
+ # Remove additionalProperties from each tool's function parameters
209
+ if tools and "tools" in kwargs:
210
+ for tool in kwargs["tools"]:
211
+ if "function" in tool and "parameters" in tool["function"]:
212
+ tool["function"]["parameters"].pop(
213
+ "additionalProperties", None
214
+ )
215
+
200
216
  response = self._client.chat.completions.create(
201
217
  messages=messages,
202
218
  model=self.model_type,