camel-ai 0.2.35__tar.gz → 0.2.36__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 (361) hide show
  1. {camel_ai-0.2.35 → camel_ai-0.2.36}/PKG-INFO +3 -1
  2. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/__init__.py +1 -1
  3. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/configs/__init__.py +3 -0
  4. camel_ai-0.2.36/camel/configs/openrouter_config.py +106 -0
  5. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/datasets/few_shot_generator.py +2 -5
  6. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/environments/single_step.py +1 -7
  7. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/memories/agent_memories.py +2 -1
  8. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/memories/blocks/chat_history_block.py +2 -1
  9. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/__init__.py +2 -0
  10. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/gemini_model.py +36 -0
  11. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/groq_model.py +6 -3
  12. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/model_factory.py +3 -0
  13. camel_ai-0.2.36/camel/models/openrouter_model.py +204 -0
  14. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/storages/__init__.py +2 -0
  15. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/storages/key_value_storages/__init__.py +2 -0
  16. camel_ai-0.2.36/camel/storages/key_value_storages/mem0_cloud.py +224 -0
  17. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/storages/vectordb_storages/qdrant.py +3 -3
  18. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/browser_toolkit.py +43 -0
  19. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/code_execution.py +2 -1
  20. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/mcp_toolkit.py +30 -1
  21. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/types/enums.py +24 -0
  22. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/types/unified_model_type.py +5 -0
  23. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/verifiers/__init__.py +1 -2
  24. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/verifiers/base.py +133 -96
  25. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/verifiers/models.py +0 -12
  26. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/verifiers/python_verifier.py +25 -14
  27. {camel_ai-0.2.35 → camel_ai-0.2.36}/pyproject.toml +4 -1
  28. {camel_ai-0.2.35 → camel_ai-0.2.36}/.gitignore +0 -0
  29. {camel_ai-0.2.35 → camel_ai-0.2.36}/LICENSE +0 -0
  30. {camel_ai-0.2.35 → camel_ai-0.2.36}/README.md +0 -0
  31. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/agents/__init__.py +0 -0
  32. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/agents/_types.py +0 -0
  33. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/agents/_utils.py +0 -0
  34. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/agents/base.py +0 -0
  35. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/agents/chat_agent.py +0 -0
  36. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/agents/critic_agent.py +0 -0
  37. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/agents/deductive_reasoner_agent.py +0 -0
  38. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/agents/embodied_agent.py +0 -0
  39. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/agents/knowledge_graph_agent.py +0 -0
  40. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/agents/multi_hop_generator_agent.py +0 -0
  41. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/agents/programmed_agent_instruction.py +0 -0
  42. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/agents/role_assignment_agent.py +0 -0
  43. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/agents/search_agent.py +0 -0
  44. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/agents/task_agent.py +0 -0
  45. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/agents/tool_agents/__init__.py +0 -0
  46. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/agents/tool_agents/base.py +0 -0
  47. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/agents/tool_agents/hugging_face_tool_agent.py +0 -0
  48. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/benchmarks/__init__.py +0 -0
  49. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/benchmarks/apibank.py +0 -0
  50. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/benchmarks/apibench.py +0 -0
  51. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/benchmarks/base.py +0 -0
  52. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/benchmarks/gaia.py +0 -0
  53. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/benchmarks/nexus.py +0 -0
  54. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/benchmarks/ragbench.py +0 -0
  55. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/bots/__init__.py +0 -0
  56. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/bots/discord/__init__.py +0 -0
  57. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/bots/discord/discord_app.py +0 -0
  58. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/bots/discord/discord_installation.py +0 -0
  59. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/bots/discord/discord_store.py +0 -0
  60. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/bots/slack/__init__.py +0 -0
  61. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/bots/slack/models.py +0 -0
  62. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/bots/slack/slack_app.py +0 -0
  63. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/bots/telegram_bot.py +0 -0
  64. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/configs/aiml_config.py +0 -0
  65. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/configs/anthropic_config.py +0 -0
  66. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/configs/base_config.py +0 -0
  67. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/configs/cohere_config.py +0 -0
  68. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/configs/deepseek_config.py +0 -0
  69. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/configs/gemini_config.py +0 -0
  70. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/configs/groq_config.py +0 -0
  71. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/configs/internlm_config.py +0 -0
  72. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/configs/litellm_config.py +0 -0
  73. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/configs/mistral_config.py +0 -0
  74. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/configs/moonshot_config.py +0 -0
  75. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/configs/nvidia_config.py +0 -0
  76. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/configs/ollama_config.py +0 -0
  77. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/configs/openai_config.py +0 -0
  78. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/configs/qwen_config.py +0 -0
  79. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/configs/reka_config.py +0 -0
  80. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/configs/samba_config.py +0 -0
  81. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/configs/sglang_config.py +0 -0
  82. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/configs/siliconflow_config.py +0 -0
  83. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/configs/togetherai_config.py +0 -0
  84. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/configs/vllm_config.py +0 -0
  85. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/configs/yi_config.py +0 -0
  86. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/configs/zhipuai_config.py +0 -0
  87. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/data_collector/__init__.py +0 -0
  88. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/data_collector/alpaca_collector.py +0 -0
  89. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/data_collector/base.py +0 -0
  90. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/data_collector/sharegpt_collector.py +0 -0
  91. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/datagen/__init__.py +0 -0
  92. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/datagen/cot_datagen.py +0 -0
  93. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/datagen/self_improving_cot.py +0 -0
  94. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/datagen/self_instruct/__init__.py +0 -0
  95. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/datagen/self_instruct/filter/__init__.py +0 -0
  96. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/datagen/self_instruct/filter/filter_function.py +0 -0
  97. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/datagen/self_instruct/filter/filter_registry.py +0 -0
  98. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/datagen/self_instruct/filter/instruction_filter.py +0 -0
  99. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/datagen/self_instruct/self_instruct.py +0 -0
  100. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/datagen/self_instruct/templates.py +0 -0
  101. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/datagen/source2synth/__init__.py +0 -0
  102. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/datagen/source2synth/data_processor.py +0 -0
  103. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/datagen/source2synth/models.py +0 -0
  104. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/datagen/source2synth/user_data_processor_config.py +0 -0
  105. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/datahubs/__init__.py +0 -0
  106. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/datahubs/base.py +0 -0
  107. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/datahubs/huggingface.py +0 -0
  108. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/datahubs/models.py +0 -0
  109. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/datasets/__init__.py +0 -0
  110. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/datasets/base_generator.py +0 -0
  111. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/datasets/models.py +0 -0
  112. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/datasets/static_dataset.py +0 -0
  113. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/embeddings/__init__.py +0 -0
  114. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/embeddings/base.py +0 -0
  115. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/embeddings/jina_embedding.py +0 -0
  116. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/embeddings/mistral_embedding.py +0 -0
  117. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/embeddings/openai_compatible_embedding.py +0 -0
  118. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/embeddings/openai_embedding.py +0 -0
  119. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/embeddings/sentence_transformers_embeddings.py +0 -0
  120. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/embeddings/vlm_embedding.py +0 -0
  121. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/environments/__init__.py +0 -0
  122. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/environments/models.py +0 -0
  123. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/environments/multi_step.py +0 -0
  124. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/extractors/__init__.py +0 -0
  125. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/extractors/base.py +0 -0
  126. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/extractors/python_strategies.py +0 -0
  127. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/generators.py +0 -0
  128. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/human.py +0 -0
  129. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/interpreters/__init__.py +0 -0
  130. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/interpreters/base.py +0 -0
  131. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/interpreters/docker/Dockerfile +0 -0
  132. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/interpreters/docker_interpreter.py +0 -0
  133. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/interpreters/e2b_interpreter.py +0 -0
  134. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/interpreters/internal_python_interpreter.py +0 -0
  135. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/interpreters/interpreter_error.py +0 -0
  136. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/interpreters/ipython_interpreter.py +0 -0
  137. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/interpreters/subprocess_interpreter.py +0 -0
  138. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/loaders/__init__.py +0 -0
  139. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/loaders/apify_reader.py +0 -0
  140. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/loaders/base_io.py +0 -0
  141. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/loaders/chunkr_reader.py +0 -0
  142. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/loaders/firecrawl_reader.py +0 -0
  143. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/loaders/jina_url_reader.py +0 -0
  144. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/loaders/mineru_extractor.py +0 -0
  145. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/loaders/panda_reader.py +0 -0
  146. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/loaders/unstructured_io.py +0 -0
  147. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/logger.py +0 -0
  148. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/memories/__init__.py +0 -0
  149. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/memories/base.py +0 -0
  150. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/memories/blocks/__init__.py +0 -0
  151. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/memories/blocks/vectordb_block.py +0 -0
  152. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/memories/context_creators/__init__.py +0 -0
  153. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/memories/context_creators/score_based.py +0 -0
  154. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/memories/records.py +0 -0
  155. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/messages/__init__.py +0 -0
  156. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/messages/base.py +0 -0
  157. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/messages/conversion/__init__.py +0 -0
  158. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/messages/conversion/alpaca.py +0 -0
  159. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/messages/conversion/conversation_models.py +0 -0
  160. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/messages/conversion/sharegpt/__init__.py +0 -0
  161. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/messages/conversion/sharegpt/function_call_formatter.py +0 -0
  162. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/messages/conversion/sharegpt/hermes/__init__.py +0 -0
  163. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/messages/conversion/sharegpt/hermes/hermes_function_formatter.py +0 -0
  164. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/messages/func_message.py +0 -0
  165. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/_utils.py +0 -0
  166. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/aiml_model.py +0 -0
  167. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/anthropic_model.py +0 -0
  168. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/azure_openai_model.py +0 -0
  169. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/base_audio_model.py +0 -0
  170. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/base_model.py +0 -0
  171. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/cohere_model.py +0 -0
  172. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/deepseek_model.py +0 -0
  173. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/fish_audio_model.py +0 -0
  174. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/internlm_model.py +0 -0
  175. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/litellm_model.py +0 -0
  176. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/mistral_model.py +0 -0
  177. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/model_manager.py +0 -0
  178. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/moonshot_model.py +0 -0
  179. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/nemotron_model.py +0 -0
  180. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/nvidia_model.py +0 -0
  181. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/ollama_model.py +0 -0
  182. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/openai_audio_models.py +0 -0
  183. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/openai_compatible_model.py +0 -0
  184. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/openai_model.py +0 -0
  185. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/qwen_model.py +0 -0
  186. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/reka_model.py +0 -0
  187. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/reward/__init__.py +0 -0
  188. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/reward/base_reward_model.py +0 -0
  189. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/reward/evaluator.py +0 -0
  190. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/reward/nemotron_model.py +0 -0
  191. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/reward/skywork_model.py +0 -0
  192. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/samba_model.py +0 -0
  193. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/sglang_model.py +0 -0
  194. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/siliconflow_model.py +0 -0
  195. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/stub_model.py +0 -0
  196. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/togetherai_model.py +0 -0
  197. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/vllm_model.py +0 -0
  198. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/volcano_model.py +0 -0
  199. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/yi_model.py +0 -0
  200. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/models/zhipuai_model.py +0 -0
  201. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/personas/__init__.py +0 -0
  202. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/personas/persona.py +0 -0
  203. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/personas/persona_hub.py +0 -0
  204. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/prompts/__init__.py +0 -0
  205. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/prompts/ai_society.py +0 -0
  206. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/prompts/base.py +0 -0
  207. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/prompts/code.py +0 -0
  208. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/prompts/evaluation.py +0 -0
  209. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/prompts/generate_text_embedding_data.py +0 -0
  210. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/prompts/image_craft.py +0 -0
  211. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/prompts/misalignment.py +0 -0
  212. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/prompts/multi_condition_image_craft.py +0 -0
  213. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/prompts/object_recognition.py +0 -0
  214. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/prompts/persona_hub.py +0 -0
  215. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/prompts/prompt_templates.py +0 -0
  216. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/prompts/role_description_prompt_template.py +0 -0
  217. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/prompts/solution_extraction.py +0 -0
  218. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/prompts/task_prompt_template.py +0 -0
  219. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/prompts/translation.py +0 -0
  220. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/prompts/video_description_prompt.py +0 -0
  221. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/py.typed +0 -0
  222. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/responses/__init__.py +0 -0
  223. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/responses/agent_responses.py +0 -0
  224. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/retrievers/__init__.py +0 -0
  225. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/retrievers/auto_retriever.py +0 -0
  226. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/retrievers/base.py +0 -0
  227. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/retrievers/bm25_retriever.py +0 -0
  228. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/retrievers/cohere_rerank_retriever.py +0 -0
  229. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/retrievers/hybrid_retrival.py +0 -0
  230. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/retrievers/vector_retriever.py +0 -0
  231. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/runtime/__init__.py +0 -0
  232. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/runtime/api.py +0 -0
  233. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/runtime/base.py +0 -0
  234. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/runtime/configs.py +0 -0
  235. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/runtime/docker_runtime.py +0 -0
  236. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/runtime/llm_guard_runtime.py +0 -0
  237. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/runtime/remote_http_runtime.py +0 -0
  238. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/runtime/utils/__init__.py +0 -0
  239. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/runtime/utils/function_risk_toolkit.py +0 -0
  240. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/runtime/utils/ignore_risk_toolkit.py +0 -0
  241. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/schemas/__init__.py +0 -0
  242. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/schemas/base.py +0 -0
  243. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/schemas/openai_converter.py +0 -0
  244. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/schemas/outlines_converter.py +0 -0
  245. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/societies/__init__.py +0 -0
  246. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/societies/babyagi_playing.py +0 -0
  247. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/societies/role_playing.py +0 -0
  248. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/societies/workforce/__init__.py +0 -0
  249. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/societies/workforce/base.py +0 -0
  250. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/societies/workforce/prompts.py +0 -0
  251. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/societies/workforce/role_playing_worker.py +0 -0
  252. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/societies/workforce/single_agent_worker.py +0 -0
  253. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/societies/workforce/task_channel.py +0 -0
  254. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/societies/workforce/utils.py +0 -0
  255. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/societies/workforce/worker.py +0 -0
  256. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/societies/workforce/workforce.py +0 -0
  257. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/storages/graph_storages/__init__.py +0 -0
  258. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/storages/graph_storages/base.py +0 -0
  259. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/storages/graph_storages/graph_element.py +0 -0
  260. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/storages/graph_storages/nebula_graph.py +0 -0
  261. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/storages/graph_storages/neo4j_graph.py +0 -0
  262. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/storages/key_value_storages/base.py +0 -0
  263. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/storages/key_value_storages/in_memory.py +0 -0
  264. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/storages/key_value_storages/json.py +0 -0
  265. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/storages/key_value_storages/redis.py +0 -0
  266. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/storages/object_storages/__init__.py +0 -0
  267. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/storages/object_storages/amazon_s3.py +0 -0
  268. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/storages/object_storages/azure_blob.py +0 -0
  269. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/storages/object_storages/base.py +0 -0
  270. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/storages/object_storages/google_cloud.py +0 -0
  271. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/storages/vectordb_storages/__init__.py +0 -0
  272. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/storages/vectordb_storages/base.py +0 -0
  273. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/storages/vectordb_storages/milvus.py +0 -0
  274. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/tasks/__init__.py +0 -0
  275. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/tasks/task.py +0 -0
  276. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/tasks/task_prompt.py +0 -0
  277. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/terminators/__init__.py +0 -0
  278. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/terminators/base.py +0 -0
  279. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/terminators/response_terminator.py +0 -0
  280. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/terminators/token_limit_terminator.py +0 -0
  281. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/__init__.py +0 -0
  282. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/arxiv_toolkit.py +0 -0
  283. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/ask_news_toolkit.py +0 -0
  284. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/audio_analysis_toolkit.py +0 -0
  285. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/base.py +0 -0
  286. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/dalle_toolkit.py +0 -0
  287. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/dappier_toolkit.py +0 -0
  288. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/data_commons_toolkit.py +0 -0
  289. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/excel_toolkit.py +0 -0
  290. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/file_write_toolkit.py +0 -0
  291. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/function_tool.py +0 -0
  292. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/github_toolkit.py +0 -0
  293. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/google_maps_toolkit.py +0 -0
  294. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/google_scholar_toolkit.py +0 -0
  295. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/human_toolkit.py +0 -0
  296. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/image_analysis_toolkit.py +0 -0
  297. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/linkedin_toolkit.py +0 -0
  298. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/math_toolkit.py +0 -0
  299. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/memory_toolkit.py +0 -0
  300. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/meshy_toolkit.py +0 -0
  301. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/mineru_toolkit.py +0 -0
  302. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/networkx_toolkit.py +0 -0
  303. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/notion_toolkit.py +0 -0
  304. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/open_api_specs/biztoc/__init__.py +0 -0
  305. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/open_api_specs/biztoc/ai-plugin.json +0 -0
  306. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/open_api_specs/biztoc/openapi.yaml +0 -0
  307. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/open_api_specs/coursera/__init__.py +0 -0
  308. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/open_api_specs/coursera/openapi.yaml +0 -0
  309. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/open_api_specs/create_qr_code/__init__.py +0 -0
  310. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/open_api_specs/create_qr_code/openapi.yaml +0 -0
  311. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/open_api_specs/klarna/__init__.py +0 -0
  312. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/open_api_specs/klarna/openapi.yaml +0 -0
  313. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/open_api_specs/nasa_apod/__init__.py +0 -0
  314. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/open_api_specs/nasa_apod/openapi.yaml +0 -0
  315. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/open_api_specs/outschool/__init__.py +0 -0
  316. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/open_api_specs/outschool/ai-plugin.json +0 -0
  317. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/open_api_specs/outschool/openapi.yaml +0 -0
  318. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/open_api_specs/outschool/paths/__init__.py +0 -0
  319. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/open_api_specs/outschool/paths/get_classes.py +0 -0
  320. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/open_api_specs/outschool/paths/search_teachers.py +0 -0
  321. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/open_api_specs/security_config.py +0 -0
  322. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/open_api_specs/speak/__init__.py +0 -0
  323. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/open_api_specs/speak/openapi.yaml +0 -0
  324. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/open_api_specs/web_scraper/__init__.py +0 -0
  325. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/open_api_specs/web_scraper/ai-plugin.json +0 -0
  326. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/open_api_specs/web_scraper/openapi.yaml +0 -0
  327. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/open_api_specs/web_scraper/paths/__init__.py +0 -0
  328. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/open_api_specs/web_scraper/paths/scraper.py +0 -0
  329. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/open_api_toolkit.py +0 -0
  330. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/openbb_toolkit.py +0 -0
  331. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/page_script.js +0 -0
  332. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/pubmed_toolkit.py +0 -0
  333. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/reddit_toolkit.py +0 -0
  334. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/retrieval_toolkit.py +0 -0
  335. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/search_toolkit.py +0 -0
  336. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/semantic_scholar_toolkit.py +0 -0
  337. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/slack_toolkit.py +0 -0
  338. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/stripe_toolkit.py +0 -0
  339. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/sympy_toolkit.py +0 -0
  340. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/terminal_toolkit.py +0 -0
  341. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/twitter_toolkit.py +0 -0
  342. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/video_analysis_toolkit.py +0 -0
  343. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/video_download_toolkit.py +0 -0
  344. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/weather_toolkit.py +0 -0
  345. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/whatsapp_toolkit.py +0 -0
  346. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/toolkits/zapier_toolkit.py +0 -0
  347. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/types/__init__.py +0 -0
  348. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/types/agents/__init__.py +0 -0
  349. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/types/agents/tool_calling_record.py +0 -0
  350. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/types/openai_types.py +0 -0
  351. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/utils/__init__.py +0 -0
  352. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/utils/async_func.py +0 -0
  353. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/utils/chunker/__init__.py +0 -0
  354. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/utils/chunker/base.py +0 -0
  355. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/utils/chunker/code_chunker.py +0 -0
  356. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/utils/chunker/uio_chunker.py +0 -0
  357. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/utils/commons.py +0 -0
  358. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/utils/constants.py +0 -0
  359. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/utils/deduplication.py +0 -0
  360. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/utils/response_format.py +0 -0
  361. {camel_ai-0.2.35 → camel_ai-0.2.36}/camel/utils/token_counting.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: camel-ai
3
- Version: 0.2.35
3
+ Version: 0.2.36
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
@@ -58,6 +58,7 @@ Requires-Dist: jupyter-client<9,>=8.6.2; extra == 'all'
58
58
  Requires-Dist: linkup-sdk<0.3,>=0.2.1; extra == 'all'
59
59
  Requires-Dist: litellm<2,>=1.38.1; extra == 'all'
60
60
  Requires-Dist: mcp>=1.3.0; extra == 'all'
61
+ Requires-Dist: mem0ai>=0.1.67; extra == 'all'
61
62
  Requires-Dist: mistralai<2,>=1.1.0; extra == 'all'
62
63
  Requires-Dist: mock<6,>=5; extra == 'all'
63
64
  Requires-Dist: mypy<2,>=1.5.1; extra == 'all'
@@ -225,6 +226,7 @@ Provides-Extra: storage
225
226
  Requires-Dist: azure-storage-blob<13,>=12.21.0; extra == 'storage'
226
227
  Requires-Dist: botocore<2,>=1.35.3; extra == 'storage'
227
228
  Requires-Dist: google-cloud-storage<3,>=2.18.0; extra == 'storage'
229
+ Requires-Dist: mem0ai>=0.1.73; extra == 'storage'
228
230
  Requires-Dist: nebula3-python==3.8.2; extra == 'storage'
229
231
  Requires-Dist: neo4j<6,>=5.18.0; extra == 'storage'
230
232
  Requires-Dist: pymilvus<3,>=2.4.0; extra == 'storage'
@@ -14,7 +14,7 @@
14
14
 
15
15
  from camel.logger import disable_logging, enable_logging, set_log_level
16
16
 
17
- __version__ = '0.2.35'
17
+ __version__ = '0.2.36'
18
18
 
19
19
  __all__ = [
20
20
  '__version__',
@@ -25,6 +25,7 @@ from .moonshot_config import MOONSHOT_API_PARAMS, MoonshotConfig
25
25
  from .nvidia_config import NVIDIA_API_PARAMS, NvidiaConfig
26
26
  from .ollama_config import OLLAMA_API_PARAMS, OllamaConfig
27
27
  from .openai_config import OPENAI_API_PARAMS, ChatGPTConfig
28
+ from .openrouter_config import OPENROUTER_API_PARAMS, OpenRouterConfig
28
29
  from .qwen_config import QWEN_API_PARAMS, QwenConfig
29
30
  from .reka_config import REKA_API_PARAMS, RekaConfig
30
31
  from .samba_config import (
@@ -88,4 +89,6 @@ __all__ = [
88
89
  'SILICONFLOW_API_PARAMS',
89
90
  'AIMLConfig',
90
91
  'AIML_API_PARAMS',
92
+ 'OpenRouterConfig',
93
+ 'OPENROUTER_API_PARAMS',
91
94
  ]
@@ -0,0 +1,106 @@
1
+ # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
2
+ # Licensed under the Apache License, Version 2.0 (the "License");
3
+ # you may not use this file except in compliance with the License.
4
+ # You may obtain a copy of the License at
5
+ #
6
+ # http://www.apache.org/licenses/LICENSE-2.0
7
+ #
8
+ # Unless required by applicable law or agreed to in writing, software
9
+ # distributed under the License is distributed on an "AS IS" BASIS,
10
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ # See the License for the specific language governing permissions and
12
+ # limitations under the License.
13
+ # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
14
+ from __future__ import annotations
15
+
16
+ from typing import Optional, Sequence, Union
17
+
18
+ from camel.configs.base_config import BaseConfig
19
+ from camel.types import NotGiven
20
+
21
+
22
+ class OpenRouterConfig(BaseConfig):
23
+ r"""Defines the parameters for generating chat completions using OpenAI
24
+ compatibility.
25
+
26
+ Reference: https://openrouter.ai/docs/api-reference/parameters
27
+
28
+ Args:
29
+ temperature (float, optional): Sampling temperature to use, between
30
+ :obj:`0` and :obj:`2`. Higher values make the output more random,
31
+ while lower values make it more focused and deterministic.
32
+ (default: :obj: `None`)
33
+ top_p (float, optional): An alternative to sampling with temperature,
34
+ called nucleus sampling, where the model considers the results of
35
+ the tokens with top_p probability mass. So :obj:`0.1` means only
36
+ the tokens comprising the top 10% probability mass are considered.
37
+ (default: :obj: `None`)
38
+ n (int, optional): How many chat completion choices to generate for
39
+ each input message. (default: :obj: `None`)
40
+ response_format (object, optional): An object specifying the format
41
+ that the model must output. Compatible with GPT-4 Turbo and all
42
+ GPT-3.5 Turbo models newer than gpt-3.5-turbo-1106. Setting to
43
+ {"type": "json_object"} enables JSON mode, which guarantees the
44
+ message the model generates is valid JSON. Important: when using
45
+ JSON mode, you must also instruct the model to produce JSON
46
+ yourself via a system or user message. Without this, the model
47
+ may generate an unending stream of whitespace until the generation
48
+ reaches the token limit, resulting in a long-running and seemingly
49
+ "stuck" request. Also note that the message content may be
50
+ partially cut off if finish_reason="length", which indicates the
51
+ generation exceeded max_tokens or the conversation exceeded the
52
+ max context length.
53
+ stream (bool, optional): If True, partial message deltas will be sent
54
+ as data-only server-sent events as they become available.
55
+ (default: :obj: `None`)
56
+ stop (str or list, optional): Up to :obj:`4` sequences where the API
57
+ will stop generating further tokens. (default: :obj:`None`)
58
+ max_tokens (int, optional): The maximum number of tokens to generate
59
+ in the chat completion. The total length of input tokens and
60
+ generated tokens is limited by the model's context length.
61
+ (default: :obj:`None`)
62
+ presence_penalty (float, optional): Number between :obj:`-2.0` and
63
+ :obj:`2.0`. Positive values penalize new tokens based on whether
64
+ they appear in the text so far, increasing the model's likelihood
65
+ to talk about new topics. See more information about frequency and
66
+ presence penalties. (default: :obj: `None`)
67
+ frequency_penalty (float, optional): Number between :obj:`-2.0` and
68
+ :obj:`2.0`. Positive values penalize new tokens based on their
69
+ existing frequency in the text so far, decreasing the model's
70
+ likelihood to repeat the same line verbatim. See more information
71
+ about frequency and presence penalties. (default: :obj: `None`)
72
+ user (str, optional): A unique identifier representing your end-user,
73
+ which can help OpenAI to monitor and detect abuse.
74
+ (default: :obj: `None`)
75
+ tools (list[FunctionTool], optional): A list of tools the model may
76
+ call. Currently, only functions are supported as a tool. Use this
77
+ to provide a list of functions the model may generate JSON inputs
78
+ for. A max of 128 functions are supported. (default: :obj: `None`)
79
+ tool_choice (Union[dict[str, str], str], optional): Controls which (if
80
+ any) tool is called by the model. :obj:`"none"` means the model
81
+ will not call any tool and instead generates a message.
82
+ :obj:`"auto"` means the model can pick between generating a
83
+ message or calling one or more tools. :obj:`"required"` means the
84
+ model must call one or more tools. Specifying a particular tool
85
+ via {"type": "function", "function": {"name": "my_function"}}
86
+ forces the model to call that tool. :obj:`"none"` is the default
87
+ when no tools are present. :obj:`"auto"` is the default if tools
88
+ are present. (default: :obj: `None`)
89
+ """
90
+
91
+ temperature: Optional[float] = None
92
+ top_p: Optional[float] = None
93
+ n: Optional[int] = None
94
+ stream: Optional[bool] = None
95
+ stop: Optional[Union[str, Sequence[str], NotGiven]] = None
96
+ max_tokens: Optional[Union[int, NotGiven]] = None
97
+ presence_penalty: Optional[float] = None
98
+ response_format: Optional[Union[dict, NotGiven]] = None
99
+ frequency_penalty: Optional[float] = None
100
+ user: Optional[str] = None
101
+ tool_choice: Optional[Union[dict[str, str], str]] = None
102
+
103
+
104
+ OPENROUTER_API_PARAMS = {
105
+ param for param in OpenRouterConfig.model_fields.keys()
106
+ }
@@ -22,7 +22,6 @@ from camel.agents import ChatAgent
22
22
  from camel.logger import get_logger
23
23
  from camel.models.base_model import BaseModelBackend
24
24
  from camel.verifiers import BaseVerifier
25
- from camel.verifiers.models import VerifierInput
26
25
 
27
26
  from .base_generator import BaseGenerator
28
27
  from .models import DataPoint
@@ -203,10 +202,8 @@ class FewShotGenerator(BaseGenerator):
203
202
 
204
203
  try:
205
204
  verifier_response = await self.verifier.verify(
206
- VerifierInput(
207
- llm_response=rationale,
208
- ground_truth=None,
209
- )
205
+ solution=rationale,
206
+ ground_truth=None,
210
207
  )
211
208
  if not verifier_response or not verifier_response.result:
212
209
  raise ValueError(
@@ -23,9 +23,6 @@ from camel.verifiers.base import (
23
23
  BaseVerifier,
24
24
  VerificationResult,
25
25
  )
26
- from camel.verifiers.models import (
27
- VerifierInput,
28
- )
29
26
 
30
27
  from .models import Action, Observation, StepResult
31
28
 
@@ -189,10 +186,7 @@ class SingleStepEnv:
189
186
 
190
187
  # verify the extracted
191
188
  verification_result = await self.verifier.verify(
192
- VerifierInput(
193
- llm_response=extraction_result,
194
- ground_truth=self._state.final_answer,
195
- )
189
+ solution=extraction_result, ground_truth=self._state.final_answer
196
190
  )
197
191
 
198
192
  # compute rewards
@@ -18,7 +18,8 @@ from typing import List, Optional
18
18
  from camel.memories.base import AgentMemory, BaseContextCreator
19
19
  from camel.memories.blocks import ChatHistoryBlock, VectorDBBlock
20
20
  from camel.memories.records import ContextRecord, MemoryRecord
21
- from camel.storages import BaseKeyValueStorage, BaseVectorStorage
21
+ from camel.storages.key_value_storages.base import BaseKeyValueStorage
22
+ from camel.storages.vectordb_storages.base import BaseVectorStorage
22
23
  from camel.types import OpenAIBackendRole
23
24
 
24
25
 
@@ -16,7 +16,8 @@ from typing import List, Optional
16
16
 
17
17
  from camel.memories.base import MemoryBlock
18
18
  from camel.memories.records import ContextRecord, MemoryRecord
19
- from camel.storages import BaseKeyValueStorage, InMemoryKeyValueStorage
19
+ from camel.storages.key_value_storages.base import BaseKeyValueStorage
20
+ from camel.storages.key_value_storages.in_memory import InMemoryKeyValueStorage
20
21
  from camel.types import OpenAIBackendRole
21
22
 
22
23
 
@@ -33,6 +33,7 @@ from .ollama_model import OllamaModel
33
33
  from .openai_audio_models import OpenAIAudioModels
34
34
  from .openai_compatible_model import OpenAICompatibleModel
35
35
  from .openai_model import OpenAIModel
36
+ from .openrouter_model import OpenRouterModel
36
37
  from .qwen_model import QwenModel
37
38
  from .reka_model import RekaModel
38
39
  from .samba_model import SambaModel
@@ -48,6 +49,7 @@ from .zhipuai_model import ZhipuAIModel
48
49
  __all__ = [
49
50
  'BaseModelBackend',
50
51
  'OpenAIModel',
52
+ 'OpenRouterModel',
51
53
  'AzureOpenAIModel',
52
54
  'AnthropicModel',
53
55
  'MistralModel',
@@ -172,6 +172,24 @@ class GeminiModel(BaseModelBackend):
172
172
  for tool in tools:
173
173
  function_dict = tool.get('function', {})
174
174
  function_dict.pop("strict", None)
175
+
176
+ # Process parameters to remove anyOf
177
+ if 'parameters' in function_dict:
178
+ params = function_dict['parameters']
179
+ if 'properties' in params:
180
+ for prop_name, prop_value in params[
181
+ 'properties'
182
+ ].items():
183
+ if 'anyOf' in prop_value:
184
+ # Replace anyOf with the first type in the list
185
+ first_type = prop_value['anyOf'][0]
186
+ params['properties'][prop_name] = first_type
187
+ # Preserve description if it exists
188
+ if 'description' in prop_value:
189
+ params['properties'][prop_name][
190
+ 'description'
191
+ ] = prop_value['description']
192
+
175
193
  request_config["tools"] = tools
176
194
 
177
195
  return self._client.chat.completions.create(
@@ -191,6 +209,24 @@ class GeminiModel(BaseModelBackend):
191
209
  for tool in tools:
192
210
  function_dict = tool.get('function', {})
193
211
  function_dict.pop("strict", None)
212
+
213
+ # Process parameters to remove anyOf
214
+ if 'parameters' in function_dict:
215
+ params = function_dict['parameters']
216
+ if 'properties' in params:
217
+ for prop_name, prop_value in params[
218
+ 'properties'
219
+ ].items():
220
+ if 'anyOf' in prop_value:
221
+ # Replace anyOf with the first type in the list
222
+ first_type = prop_value['anyOf'][0]
223
+ params['properties'][prop_name] = first_type
224
+ # Preserve description if it exists
225
+ if 'description' in prop_value:
226
+ params['properties'][prop_name][
227
+ 'description'
228
+ ] = prop_value['description']
229
+
194
230
  request_config["tools"] = tools
195
231
 
196
232
  return await self._async_client.chat.completions.create(
@@ -195,7 +195,10 @@ class GroqModel(BaseModelBackend):
195
195
 
196
196
  @property
197
197
  def stream(self) -> bool:
198
- r"""Returns whether the model supports streaming. But Groq API does
199
- not support streaming.
198
+ r"""Returns whether the model is in stream mode, which sends partial
199
+ results each time.
200
+
201
+ Returns:
202
+ bool: Whether the model is in stream mode.
200
203
  """
201
- return False
204
+ return self.model_config_dict.get("stream", False)
@@ -29,6 +29,7 @@ from camel.models.nvidia_model import NvidiaModel
29
29
  from camel.models.ollama_model import OllamaModel
30
30
  from camel.models.openai_compatible_model import OpenAICompatibleModel
31
31
  from camel.models.openai_model import OpenAIModel
32
+ from camel.models.openrouter_model import OpenRouterModel
32
33
  from camel.models.qwen_model import QwenModel
33
34
  from camel.models.reka_model import RekaModel
34
35
  from camel.models.samba_model import SambaModel
@@ -119,6 +120,8 @@ class ModelFactory:
119
120
  model_class = AnthropicModel
120
121
  elif model_platform.is_groq and model_type.is_groq:
121
122
  model_class = GroqModel
123
+ elif model_platform.is_openrouter and model_type.is_openrouter:
124
+ model_class = OpenRouterModel
122
125
  elif model_platform.is_zhipuai and model_type.is_zhipuai:
123
126
  model_class = ZhipuAIModel
124
127
  elif model_platform.is_gemini and model_type.is_gemini:
@@ -0,0 +1,204 @@
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
+ import os
15
+ from typing import Any, Dict, List, Optional, Type, Union
16
+
17
+ from openai import AsyncOpenAI, AsyncStream, OpenAI, Stream
18
+ from pydantic import BaseModel
19
+
20
+ from camel.configs import OPENROUTER_API_PARAMS, OpenRouterConfig
21
+ from camel.messages import OpenAIMessage
22
+ from camel.models import BaseModelBackend
23
+ from camel.models._utils import try_modify_message_with_format
24
+ from camel.types import (
25
+ ChatCompletion,
26
+ ChatCompletionChunk,
27
+ ModelType,
28
+ )
29
+ from camel.utils import (
30
+ BaseTokenCounter,
31
+ OpenAITokenCounter,
32
+ api_keys_required,
33
+ )
34
+
35
+
36
+ class OpenRouterModel(BaseModelBackend):
37
+ r"""LLM API served by OpenRouter in a unified BaseModelBackend interface.
38
+
39
+ Args:
40
+ model_type (Union[ModelType, str]): Model for which a backend is
41
+ created.
42
+ model_config_dict (Optional[Dict[str, Any]], optional): A dictionary
43
+ that will be fed into:obj:`openai.ChatCompletion.create()`.
44
+ If:obj:`None`, :obj:`GroqConfig().as_dict()` will be used.
45
+ (default: :obj:`None`)
46
+ api_key (Optional[str], optional): The API key for authenticating
47
+ with the OpenRouter service. (default: :obj:`None`).
48
+ url (Optional[str], optional): The url to the OpenRouter service.
49
+ (default: :obj:`None`)
50
+ token_counter (Optional[BaseTokenCounter], optional): Token counter to
51
+ use for the model. If not provided, :obj:`OpenAITokenCounter(
52
+ ModelType.GPT_4O_MINI)` will be used.
53
+ (default: :obj:`None`)
54
+ """
55
+
56
+ @api_keys_required([("api_key", "OPENROUTER_API_KEY")])
57
+ def __init__(
58
+ self,
59
+ model_type: Union[ModelType, str],
60
+ model_config_dict: Optional[Dict[str, Any]] = None,
61
+ api_key: Optional[str] = None,
62
+ url: Optional[str] = None,
63
+ token_counter: Optional[BaseTokenCounter] = None,
64
+ ) -> None:
65
+ if model_config_dict is None:
66
+ model_config_dict = OpenRouterConfig().as_dict()
67
+ api_key = api_key or os.environ.get("OPENROUTER_API_KEY")
68
+ url = url or os.environ.get(
69
+ "OPENROUTER_API_BASE_URL", "https://openrouter.ai/api/v1"
70
+ )
71
+ super().__init__(
72
+ model_type, model_config_dict, api_key, url, token_counter
73
+ )
74
+ self._client = OpenAI(
75
+ timeout=180,
76
+ max_retries=3,
77
+ api_key=self._api_key,
78
+ base_url=self._url,
79
+ )
80
+ self._async_client = AsyncOpenAI(
81
+ timeout=180,
82
+ max_retries=3,
83
+ api_key=self._api_key,
84
+ base_url=self._url,
85
+ )
86
+
87
+ @property
88
+ def token_counter(self) -> BaseTokenCounter:
89
+ r"""Initialize the token counter for the model backend.
90
+
91
+ Returns:
92
+ BaseTokenCounter: The token counter following the model's
93
+ tokenization style.
94
+ """
95
+ if not self._token_counter:
96
+ self._token_counter = OpenAITokenCounter(ModelType.GPT_4O_MINI)
97
+ return self._token_counter
98
+
99
+ def _prepare_request(
100
+ self,
101
+ messages: List[OpenAIMessage],
102
+ response_format: Optional[Type[BaseModel]] = None,
103
+ tools: Optional[List[Dict[str, Any]]] = None,
104
+ ) -> Dict[str, Any]:
105
+ request_config = self.model_config_dict.copy()
106
+ if tools:
107
+ request_config["tools"] = tools
108
+ elif response_format:
109
+ try_modify_message_with_format(messages[-1], response_format)
110
+ request_config["response_format"] = {"type": "json_object"}
111
+
112
+ return request_config
113
+
114
+ def _run(
115
+ self,
116
+ messages: List[OpenAIMessage],
117
+ response_format: Optional[type[BaseModel]] = None,
118
+ tools: Optional[List[Dict[str, Any]]] = None,
119
+ ) -> Union[ChatCompletion, Stream[ChatCompletionChunk]]:
120
+ r"""Runs inference of OpenAI chat completion.
121
+
122
+ Args:
123
+ messages (List[OpenAIMessage]): Message list with the chat history
124
+ in OpenAI API format.
125
+ response_format (Optional[Type[BaseModel]]): The format of the
126
+ response.
127
+ tools (Optional[List[Dict[str, Any]]]): The schema of the tools to
128
+ use for the request.
129
+
130
+ Returns:
131
+ Union[ChatCompletion, Stream[ChatCompletionChunk]]:
132
+ `ChatCompletion` in the non-stream mode, or
133
+ `Stream[ChatCompletionChunk]` in the stream mode.
134
+ """
135
+ request_config = self._prepare_request(
136
+ messages, response_format, tools
137
+ )
138
+
139
+ response = self._client.chat.completions.create(
140
+ messages=messages,
141
+ model=self.model_type,
142
+ **request_config,
143
+ )
144
+
145
+ return response
146
+
147
+ async def _arun(
148
+ self,
149
+ messages: List[OpenAIMessage],
150
+ response_format: Optional[type[BaseModel]] = None,
151
+ tools: Optional[List[Dict[str, Any]]] = None,
152
+ ) -> Union[ChatCompletion, AsyncStream[ChatCompletionChunk]]:
153
+ r"""Runs inference of OpenRouter chat completion asynchronously.
154
+
155
+ Args:
156
+ messages (List[OpenAIMessage]): Message list with the chat history
157
+ in OpenAI API format.
158
+ response_format (Optional[Type[BaseModel]]): The format of the
159
+ response.
160
+ tools (Optional[List[Dict[str, Any]]]): The schema of the tools to
161
+ use for the request.
162
+
163
+ Returns:
164
+ Union[ChatCompletion, AsyncStream[ChatCompletionChunk]]:
165
+ `ChatCompletion` in the non-stream mode, or
166
+ `AsyncStream[ChatCompletionChunk]` in the stream mode.
167
+ """
168
+ request_config = self._prepare_request(
169
+ messages, response_format, tools
170
+ )
171
+
172
+ response = await self._async_client.chat.completions.create(
173
+ messages=messages,
174
+ model=self.model_type,
175
+ **request_config,
176
+ )
177
+
178
+ return response
179
+
180
+ def check_model_config(self):
181
+ r"""Check whether the model configuration contains any unexpected
182
+ arguments to OpenRouter API. But OpenRouter API does not have any
183
+ additional arguments to check.
184
+
185
+ Raises:
186
+ ValueError: If the model configuration dictionary contains any
187
+ unexpected arguments to OpenRouter API.
188
+ """
189
+ for param in self.model_config_dict:
190
+ if param not in OPENROUTER_API_PARAMS:
191
+ raise ValueError(
192
+ f"Unexpected argument `{param}` is "
193
+ "input into OpenRouter model backend."
194
+ )
195
+
196
+ @property
197
+ def stream(self) -> bool:
198
+ r"""Returns whether the model is in stream mode, which sends partial
199
+ results each time.
200
+
201
+ Returns:
202
+ bool: Whether the model is in stream mode.
203
+ """
204
+ return self.model_config_dict.get("stream", False)
@@ -18,6 +18,7 @@ from .graph_storages.neo4j_graph import Neo4jGraph
18
18
  from .key_value_storages.base import BaseKeyValueStorage
19
19
  from .key_value_storages.in_memory import InMemoryKeyValueStorage
20
20
  from .key_value_storages.json import JsonStorage
21
+ from .key_value_storages.mem0_cloud import Mem0Storage
21
22
  from .key_value_storages.redis import RedisStorage
22
23
  from .vectordb_storages.base import (
23
24
  BaseVectorStorage,
@@ -42,4 +43,5 @@ __all__ = [
42
43
  'BaseGraphStorage',
43
44
  'Neo4jGraph',
44
45
  'NebulaGraph',
46
+ 'Mem0Storage',
45
47
  ]
@@ -15,6 +15,7 @@
15
15
  from .base import BaseKeyValueStorage
16
16
  from .in_memory import InMemoryKeyValueStorage
17
17
  from .json import CamelJSONEncoder, JsonStorage
18
+ from .mem0_cloud import Mem0Storage
18
19
  from .redis import RedisStorage
19
20
 
20
21
  __all__ = [
@@ -23,4 +24,5 @@ __all__ = [
23
24
  'JsonStorage',
24
25
  'RedisStorage',
25
26
  'CamelJSONEncoder',
27
+ 'Mem0Storage',
26
28
  ]