camel-ai 0.2.59__tar.gz → 0.2.61__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.
- {camel_ai-0.2.59 → camel_ai-0.2.61}/PKG-INFO +17 -9
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/__init__.py +1 -1
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/agents/chat_agent.py +158 -7
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/configs/anthropic_config.py +6 -5
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/configs/cohere_config.py +1 -1
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/configs/mistral_config.py +1 -1
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/configs/openai_config.py +3 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/configs/reka_config.py +1 -1
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/configs/samba_config.py +2 -2
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/datagen/cot_datagen.py +29 -34
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/datagen/evol_instruct/scorer.py +22 -23
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/datagen/evol_instruct/templates.py +46 -46
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/datasets/static_dataset.py +144 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/embeddings/jina_embedding.py +8 -1
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/embeddings/sentence_transformers_embeddings.py +2 -2
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/embeddings/vlm_embedding.py +9 -2
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/loaders/__init__.py +5 -2
- camel_ai-0.2.61/camel/loaders/chunkr_reader.py +193 -0
- camel_ai-0.2.61/camel/loaders/mistral_reader.py +148 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/memories/blocks/chat_history_block.py +1 -2
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/memories/records.py +3 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/messages/base.py +15 -3
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/azure_openai_model.py +1 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/model_factory.py +2 -2
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/model_manager.py +7 -3
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/retrievers/bm25_retriever.py +1 -2
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/retrievers/hybrid_retrival.py +2 -2
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/societies/workforce/workforce.py +65 -24
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/storages/__init__.py +2 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/storages/vectordb_storages/__init__.py +2 -0
- camel_ai-0.2.61/camel/storages/vectordb_storages/faiss.py +712 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/storages/vectordb_storages/oceanbase.py +1 -2
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/__init__.py +2 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/async_browser_toolkit.py +80 -524
- camel_ai-0.2.61/camel/toolkits/bohrium_toolkit.py +318 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/browser_toolkit.py +221 -541
- camel_ai-0.2.61/camel/toolkits/browser_toolkit_commons.py +568 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/dalle_toolkit.py +4 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/excel_toolkit.py +8 -2
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/file_write_toolkit.py +76 -29
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/github_toolkit.py +43 -25
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/image_analysis_toolkit.py +3 -0
- camel_ai-0.2.61/camel/toolkits/jina_reranker_toolkit.py +348 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/mcp_toolkit.py +134 -16
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/page_script.js +40 -28
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/twitter_toolkit.py +6 -1
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/video_analysis_toolkit.py +3 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/video_download_toolkit.py +3 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/wolfram_alpha_toolkit.py +51 -23
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/types/enums.py +27 -6
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/utils/__init__.py +2 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/utils/commons.py +27 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/pyproject.toml +25 -11
- camel_ai-0.2.59/camel/loaders/chunkr_reader.py +0 -167
- camel_ai-0.2.59/camel/toolkits/jina_reranker_toolkit.py +0 -231
- {camel_ai-0.2.59 → camel_ai-0.2.61}/.gitignore +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/LICENSE +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/README.md +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/agents/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/agents/_types.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/agents/_utils.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/agents/base.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/agents/critic_agent.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/agents/deductive_reasoner_agent.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/agents/embodied_agent.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/agents/knowledge_graph_agent.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/agents/mcp_agent.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/agents/multi_hop_generator_agent.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/agents/programmed_agent_instruction.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/agents/repo_agent.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/agents/role_assignment_agent.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/agents/search_agent.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/agents/task_agent.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/agents/tool_agents/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/agents/tool_agents/base.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/agents/tool_agents/hugging_face_tool_agent.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/benchmarks/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/benchmarks/apibank.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/benchmarks/apibench.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/benchmarks/base.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/benchmarks/browsecomp.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/benchmarks/gaia.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/benchmarks/nexus.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/benchmarks/ragbench.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/bots/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/bots/discord/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/bots/discord/discord_app.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/bots/discord/discord_installation.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/bots/discord/discord_store.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/bots/slack/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/bots/slack/models.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/bots/slack/slack_app.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/bots/telegram_bot.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/configs/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/configs/aiml_config.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/configs/base_config.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/configs/bedrock_config.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/configs/deepseek_config.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/configs/gemini_config.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/configs/groq_config.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/configs/internlm_config.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/configs/litellm_config.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/configs/lmstudio_config.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/configs/modelscope_config.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/configs/moonshot_config.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/configs/netmind_config.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/configs/novita_config.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/configs/nvidia_config.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/configs/ollama_config.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/configs/openrouter_config.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/configs/ppio_config.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/configs/qwen_config.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/configs/sglang_config.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/configs/siliconflow_config.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/configs/togetherai_config.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/configs/vllm_config.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/configs/watsonx_config.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/configs/yi_config.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/configs/zhipuai_config.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/data_collector/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/data_collector/alpaca_collector.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/data_collector/base.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/data_collector/sharegpt_collector.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/datagen/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/datagen/evol_instruct/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/datagen/evol_instruct/evol_instruct.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/datagen/self_improving_cot.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/datagen/self_instruct/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/datagen/self_instruct/filter/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/datagen/self_instruct/filter/filter_function.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/datagen/self_instruct/filter/filter_registry.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/datagen/self_instruct/filter/instruction_filter.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/datagen/self_instruct/self_instruct.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/datagen/self_instruct/templates.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/datagen/source2synth/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/datagen/source2synth/data_processor.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/datagen/source2synth/models.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/datagen/source2synth/user_data_processor_config.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/datahubs/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/datahubs/base.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/datahubs/huggingface.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/datahubs/models.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/datasets/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/datasets/base_generator.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/datasets/few_shot_generator.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/datasets/models.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/datasets/self_instruct_generator.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/embeddings/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/embeddings/azure_embedding.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/embeddings/base.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/embeddings/gemini_embedding.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/embeddings/mistral_embedding.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/embeddings/openai_compatible_embedding.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/embeddings/openai_embedding.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/embeddings/together_embedding.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/environments/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/environments/models.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/environments/multi_step.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/environments/single_step.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/environments/tic_tac_toe.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/extractors/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/extractors/base.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/extractors/python_strategies.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/generators.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/human.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/interpreters/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/interpreters/base.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/interpreters/docker/Dockerfile +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/interpreters/docker_interpreter.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/interpreters/e2b_interpreter.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/interpreters/internal_python_interpreter.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/interpreters/interpreter_error.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/interpreters/ipython_interpreter.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/interpreters/subprocess_interpreter.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/loaders/apify_reader.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/loaders/base_io.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/loaders/crawl4ai_reader.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/loaders/firecrawl_reader.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/loaders/jina_url_reader.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/loaders/markitdown.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/loaders/mineru_extractor.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/loaders/pandas_reader.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/loaders/scrapegraph_reader.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/loaders/unstructured_io.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/logger.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/memories/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/memories/agent_memories.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/memories/base.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/memories/blocks/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/memories/blocks/vectordb_block.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/memories/context_creators/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/memories/context_creators/score_based.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/messages/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/messages/conversion/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/messages/conversion/alpaca.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/messages/conversion/conversation_models.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/messages/conversion/sharegpt/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/messages/conversion/sharegpt/function_call_formatter.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/messages/conversion/sharegpt/hermes/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/messages/conversion/sharegpt/hermes/hermes_function_formatter.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/messages/func_message.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/_utils.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/aiml_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/anthropic_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/aws_bedrock_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/base_audio_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/base_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/cohere_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/deepseek_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/fish_audio_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/gemini_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/groq_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/internlm_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/litellm_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/lmstudio_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/mistral_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/modelscope_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/moonshot_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/nemotron_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/netmind_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/novita_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/nvidia_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/ollama_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/openai_audio_models.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/openai_compatible_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/openai_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/openrouter_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/ppio_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/qwen_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/reka_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/reward/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/reward/base_reward_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/reward/evaluator.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/reward/nemotron_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/reward/skywork_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/samba_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/sglang_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/siliconflow_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/stub_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/togetherai_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/vllm_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/volcano_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/watsonx_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/yi_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/models/zhipuai_model.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/personas/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/personas/persona.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/personas/persona_hub.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/prompts/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/prompts/ai_society.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/prompts/base.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/prompts/code.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/prompts/evaluation.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/prompts/generate_text_embedding_data.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/prompts/image_craft.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/prompts/misalignment.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/prompts/multi_condition_image_craft.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/prompts/object_recognition.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/prompts/persona_hub.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/prompts/prompt_templates.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/prompts/role_description_prompt_template.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/prompts/solution_extraction.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/prompts/task_prompt_template.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/prompts/translation.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/prompts/video_description_prompt.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/py.typed +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/responses/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/responses/agent_responses.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/retrievers/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/retrievers/auto_retriever.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/retrievers/base.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/retrievers/cohere_rerank_retriever.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/retrievers/vector_retriever.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/runtime/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/runtime/api.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/runtime/base.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/runtime/configs.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/runtime/daytona_runtime.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/runtime/docker_runtime.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/runtime/llm_guard_runtime.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/runtime/remote_http_runtime.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/runtime/ubuntu_docker_runtime.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/runtime/utils/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/runtime/utils/function_risk_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/runtime/utils/ignore_risk_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/schemas/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/schemas/base.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/schemas/openai_converter.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/schemas/outlines_converter.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/societies/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/societies/babyagi_playing.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/societies/role_playing.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/societies/workforce/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/societies/workforce/base.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/societies/workforce/prompts.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/societies/workforce/role_playing_worker.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/societies/workforce/single_agent_worker.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/societies/workforce/task_channel.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/societies/workforce/utils.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/societies/workforce/worker.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/storages/graph_storages/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/storages/graph_storages/base.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/storages/graph_storages/graph_element.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/storages/graph_storages/nebula_graph.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/storages/graph_storages/neo4j_graph.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/storages/key_value_storages/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/storages/key_value_storages/base.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/storages/key_value_storages/in_memory.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/storages/key_value_storages/json.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/storages/key_value_storages/mem0_cloud.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/storages/key_value_storages/redis.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/storages/object_storages/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/storages/object_storages/amazon_s3.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/storages/object_storages/azure_blob.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/storages/object_storages/base.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/storages/object_storages/google_cloud.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/storages/vectordb_storages/base.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/storages/vectordb_storages/milvus.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/storages/vectordb_storages/qdrant.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/storages/vectordb_storages/tidb.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/tasks/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/tasks/task.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/tasks/task_prompt.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/terminators/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/terminators/base.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/terminators/response_terminator.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/terminators/token_limit_terminator.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/aci_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/arxiv_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/ask_news_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/audio_analysis_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/base.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/code_execution.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/dappier_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/data_commons_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/function_tool.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/google_calendar_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/google_maps_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/google_scholar_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/human_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/klavis_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/linkedin_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/math_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/memory_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/meshy_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/mineru_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/networkx_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/notion_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/open_api_specs/biztoc/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/open_api_specs/biztoc/ai-plugin.json +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/open_api_specs/biztoc/openapi.yaml +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/open_api_specs/coursera/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/open_api_specs/coursera/openapi.yaml +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/open_api_specs/create_qr_code/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/open_api_specs/create_qr_code/openapi.yaml +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/open_api_specs/klarna/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/open_api_specs/klarna/openapi.yaml +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/open_api_specs/nasa_apod/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/open_api_specs/nasa_apod/openapi.yaml +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/open_api_specs/outschool/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/open_api_specs/outschool/ai-plugin.json +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/open_api_specs/outschool/openapi.yaml +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/open_api_specs/outschool/paths/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/open_api_specs/outschool/paths/get_classes.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/open_api_specs/outschool/paths/search_teachers.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/open_api_specs/security_config.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/open_api_specs/speak/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/open_api_specs/speak/openapi.yaml +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/open_api_specs/web_scraper/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/open_api_specs/web_scraper/ai-plugin.json +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/open_api_specs/web_scraper/openapi.yaml +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/open_api_specs/web_scraper/paths/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/open_api_specs/web_scraper/paths/scraper.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/open_api_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/openai_agent_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/openbb_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/playwright_mcp_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/pubmed_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/pulse_mcp_search_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/pyautogui_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/reddit_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/retrieval_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/search_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/searxng_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/semantic_scholar_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/slack_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/stripe_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/sympy_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/terminal_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/thinking_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/weather_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/whatsapp_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/toolkits/zapier_toolkit.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/types/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/types/agents/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/types/agents/tool_calling_record.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/types/mcp_registries.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/types/openai_types.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/types/unified_model_type.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/utils/async_func.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/utils/chunker/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/utils/chunker/base.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/utils/chunker/code_chunker.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/utils/chunker/uio_chunker.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/utils/constants.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/utils/deduplication.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/utils/filename.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/utils/mcp.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/utils/response_format.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/utils/token_counting.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/verifiers/__init__.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/verifiers/base.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/verifiers/math_verifier.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/verifiers/models.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/camel/verifiers/physics_verifier.py +0 -0
- {camel_ai-0.2.59 → camel_ai-0.2.61}/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.
|
|
3
|
+
Version: 0.2.61
|
|
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
|
|
@@ -16,6 +16,7 @@ Requires-Dist: httpx<1.0.0dev,>=0.28.0
|
|
|
16
16
|
Requires-Dist: jsonschema<5,>=4
|
|
17
17
|
Requires-Dist: mcp>=1.3.0
|
|
18
18
|
Requires-Dist: openai<2,>=1.68.0
|
|
19
|
+
Requires-Dist: pillow<11.0.0,>=10.1.0
|
|
19
20
|
Requires-Dist: psutil<6,>=5.9.8
|
|
20
21
|
Requires-Dist: pydantic>=2.10.6
|
|
21
22
|
Requires-Dist: tiktoken<0.8,>=0.7.0
|
|
@@ -31,6 +32,7 @@ Requires-Dist: arxiv<3,>=2.1.3; extra == 'all'
|
|
|
31
32
|
Requires-Dist: azure-storage-blob<13,>=12.21.0; extra == 'all'
|
|
32
33
|
Requires-Dist: beautifulsoup4<5,>=4; extra == 'all'
|
|
33
34
|
Requires-Dist: botocore<2,>=1.35.3; extra == 'all'
|
|
35
|
+
Requires-Dist: chunkr-ai>=0.0.50; extra == 'all'
|
|
34
36
|
Requires-Dist: cohere<6,>=5.11.0; extra == 'all'
|
|
35
37
|
Requires-Dist: crawl4ai>=0.3.745; extra == 'all'
|
|
36
38
|
Requires-Dist: dappier<0.4,>=0.3.3; extra == 'all'
|
|
@@ -46,6 +48,7 @@ Requires-Dist: docx>=0.2.4; extra == 'all'
|
|
|
46
48
|
Requires-Dist: duckduckgo-search<7,>=6.3.5; extra == 'all'
|
|
47
49
|
Requires-Dist: e2b-code-interpreter<2,>=1.0.3; extra == 'all'
|
|
48
50
|
Requires-Dist: exa-py<2,>=1.10.0; extra == 'all'
|
|
51
|
+
Requires-Dist: faiss-cpu<2,>=1.7.2; extra == 'all'
|
|
49
52
|
Requires-Dist: fastapi>=0.115.11; extra == 'all'
|
|
50
53
|
Requires-Dist: ffmpeg-python<0.3,>=0.2.0; extra == 'all'
|
|
51
54
|
Requires-Dist: firecrawl-py<2,>=1.0.0; extra == 'all'
|
|
@@ -77,14 +80,13 @@ Requires-Dist: neo4j<6,>=5.18.0; extra == 'all'
|
|
|
77
80
|
Requires-Dist: networkx<4,>=3.4.2; extra == 'all'
|
|
78
81
|
Requires-Dist: newspaper3k<0.3,>=0.2.8; extra == 'all'
|
|
79
82
|
Requires-Dist: notion-client<3,>=2.2.1; extra == 'all'
|
|
80
|
-
Requires-Dist: numpy
|
|
83
|
+
Requires-Dist: numpy<=2.2,>=1.2; extra == 'all'
|
|
81
84
|
Requires-Dist: openapi-spec-validator<0.8,>=0.7.1; extra == 'all'
|
|
82
85
|
Requires-Dist: opencv-python<5,>=4; extra == 'all'
|
|
83
86
|
Requires-Dist: openpyxl>=3.1.5; extra == 'all'
|
|
84
87
|
Requires-Dist: outlines<0.2,>=0.1.7; extra == 'all'
|
|
85
88
|
Requires-Dist: pandas<2,>=1.5.3; extra == 'all'
|
|
86
89
|
Requires-Dist: pandasai<3,>=2.3.0; extra == 'all'
|
|
87
|
-
Requires-Dist: pillow<11.0.0,>=10.1.0; extra == 'all'
|
|
88
90
|
Requires-Dist: playwright>=1.50.0; extra == 'all'
|
|
89
91
|
Requires-Dist: prance<24,>=23.6.21.0; extra == 'all'
|
|
90
92
|
Requires-Dist: praw<8,>=7.7.1; extra == 'all'
|
|
@@ -92,6 +94,7 @@ Requires-Dist: pre-commit<4,>=3; extra == 'all'
|
|
|
92
94
|
Requires-Dist: pyautogui<0.10,>=0.9.54; extra == 'all'
|
|
93
95
|
Requires-Dist: pydub<0.26,>=0.25.1; extra == 'all'
|
|
94
96
|
Requires-Dist: pygithub<3,>=2.6.0; extra == 'all'
|
|
97
|
+
Requires-Dist: pylatex>=1.4.2; extra == 'all'
|
|
95
98
|
Requires-Dist: pymilvus<3,>=2.4.0; extra == 'all'
|
|
96
99
|
Requires-Dist: pymupdf<2,>=1.22.5; extra == 'all'
|
|
97
100
|
Requires-Dist: pyobvector>=0.1.18; extra == 'all'
|
|
@@ -150,7 +153,7 @@ Requires-Dist: datacommons-pandas<0.0.4,>=0.0.3; extra == 'data-tools'
|
|
|
150
153
|
Requires-Dist: datacommons<2,>=1.4.3; extra == 'data-tools'
|
|
151
154
|
Requires-Dist: math-verify<0.8,>=0.7.0; extra == 'data-tools'
|
|
152
155
|
Requires-Dist: networkx<4,>=3.4.2; extra == 'data-tools'
|
|
153
|
-
Requires-Dist: numpy
|
|
156
|
+
Requires-Dist: numpy<=2.2,>=1.2; extra == 'data-tools'
|
|
154
157
|
Requires-Dist: pandas<2,>=1.5.3; extra == 'data-tools'
|
|
155
158
|
Requires-Dist: rouge<2,>=1.0.1; extra == 'data-tools'
|
|
156
159
|
Requires-Dist: stripe<12,>=11.3.0; extra == 'data-tools'
|
|
@@ -193,16 +196,18 @@ Requires-Dist: sphinx<8,>=7; extra == 'docs'
|
|
|
193
196
|
Requires-Dist: sphinxext-rediraffe<0.3,>=0.2.7; extra == 'docs'
|
|
194
197
|
Provides-Extra: document-tools
|
|
195
198
|
Requires-Dist: beautifulsoup4<5,>=4; extra == 'document-tools'
|
|
199
|
+
Requires-Dist: chunkr-ai>=0.0.50; extra == 'document-tools'
|
|
196
200
|
Requires-Dist: crawl4ai>=0.3.745; extra == 'document-tools'
|
|
197
201
|
Requires-Dist: docx2txt<0.9,>=0.8; extra == 'document-tools'
|
|
198
202
|
Requires-Dist: docx>=0.2.4; extra == 'document-tools'
|
|
199
203
|
Requires-Dist: fpdf>=1.7.2; extra == 'document-tools'
|
|
200
204
|
Requires-Dist: markitdown==0.1.1; extra == 'document-tools'
|
|
201
|
-
Requires-Dist: numpy
|
|
205
|
+
Requires-Dist: numpy<=2.2,>=1.2; extra == 'document-tools'
|
|
202
206
|
Requires-Dist: openapi-spec-validator<0.8,>=0.7.1; extra == 'document-tools'
|
|
203
207
|
Requires-Dist: openpyxl>=3.1.5; extra == 'document-tools'
|
|
204
208
|
Requires-Dist: pandasai<3,>=2.3.0; extra == 'document-tools'
|
|
205
209
|
Requires-Dist: prance<24,>=23.6.21.0; extra == 'document-tools'
|
|
210
|
+
Requires-Dist: pylatex>=1.4.2; extra == 'document-tools'
|
|
206
211
|
Requires-Dist: pymupdf<2,>=1.22.5; extra == 'document-tools'
|
|
207
212
|
Requires-Dist: tabulate>=0.9.0; extra == 'document-tools'
|
|
208
213
|
Requires-Dist: unstructured==0.16.20; extra == 'document-tools'
|
|
@@ -219,7 +224,6 @@ Requires-Dist: transformers<5,>=4; extra == 'huggingface'
|
|
|
219
224
|
Provides-Extra: media-tools
|
|
220
225
|
Requires-Dist: ffmpeg-python<0.3,>=0.2.0; extra == 'media-tools'
|
|
221
226
|
Requires-Dist: imageio[pyav]<3,>=2.34.2; extra == 'media-tools'
|
|
222
|
-
Requires-Dist: pillow<11.0.0,>=10.1.0; extra == 'media-tools'
|
|
223
227
|
Requires-Dist: pydub<0.26,>=0.25.1; extra == 'media-tools'
|
|
224
228
|
Requires-Dist: scenedetect>=0.6.5.2; extra == 'media-tools'
|
|
225
229
|
Requires-Dist: yt-dlp<2025,>=2024.11.4; extra == 'media-tools'
|
|
@@ -236,6 +240,7 @@ Requires-Dist: aci-sdk>=1.0.0b1; extra == 'owl'
|
|
|
236
240
|
Requires-Dist: anthropic<0.50.0,>=0.47.0; extra == 'owl'
|
|
237
241
|
Requires-Dist: beautifulsoup4<5,>=4; extra == 'owl'
|
|
238
242
|
Requires-Dist: chunkr-ai>=0.0.41; extra == 'owl'
|
|
243
|
+
Requires-Dist: chunkr-ai>=0.0.50; extra == 'owl'
|
|
239
244
|
Requires-Dist: crawl4ai>=0.3.745; extra == 'owl'
|
|
240
245
|
Requires-Dist: datasets<4,>=3; extra == 'owl'
|
|
241
246
|
Requires-Dist: docx2txt<0.9,>=0.8; extra == 'owl'
|
|
@@ -249,18 +254,18 @@ Requires-Dist: imageio[pyav]<3,>=2.34.2; extra == 'owl'
|
|
|
249
254
|
Requires-Dist: mcp-server-fetch==2025.1.17; extra == 'owl'
|
|
250
255
|
Requires-Dist: mcp-simple-arxiv==0.2.2; extra == 'owl'
|
|
251
256
|
Requires-Dist: newspaper3k<0.3,>=0.2.8; extra == 'owl'
|
|
252
|
-
Requires-Dist: numpy
|
|
257
|
+
Requires-Dist: numpy<=2.2,>=1.2; extra == 'owl'
|
|
253
258
|
Requires-Dist: openapi-spec-validator<0.8,>=0.7.1; extra == 'owl'
|
|
254
259
|
Requires-Dist: opencv-python<5,>=4; extra == 'owl'
|
|
255
260
|
Requires-Dist: openpyxl>=3.1.5; extra == 'owl'
|
|
256
261
|
Requires-Dist: outlines<0.2,>=0.1.7; extra == 'owl'
|
|
257
262
|
Requires-Dist: pandas<2,>=1.5.3; extra == 'owl'
|
|
258
263
|
Requires-Dist: pandasai<3,>=2.3.0; extra == 'owl'
|
|
259
|
-
Requires-Dist: pillow<11.0.0,>=10.1.0; extra == 'owl'
|
|
260
264
|
Requires-Dist: playwright>=1.50.0; extra == 'owl'
|
|
261
265
|
Requires-Dist: prance<24,>=23.6.21.0; extra == 'owl'
|
|
262
266
|
Requires-Dist: pyautogui<0.10,>=0.9.54; extra == 'owl'
|
|
263
267
|
Requires-Dist: pydub<0.26,>=0.25.1; extra == 'owl'
|
|
268
|
+
Requires-Dist: pylatex>=1.4.2; extra == 'owl'
|
|
264
269
|
Requires-Dist: pymupdf<2,>=1.22.5; extra == 'owl'
|
|
265
270
|
Requires-Dist: python-dotenv<2,>=1.0.0; extra == 'owl'
|
|
266
271
|
Requires-Dist: requests-oauthlib<2,>=1.3.1; extra == 'owl'
|
|
@@ -279,12 +284,14 @@ Requires-Dist: wikipedia<2,>=1; extra == 'owl'
|
|
|
279
284
|
Requires-Dist: xls2xlsx>=0.2.0; extra == 'owl'
|
|
280
285
|
Requires-Dist: yt-dlp<2025,>=2024.11.4; extra == 'owl'
|
|
281
286
|
Provides-Extra: rag
|
|
287
|
+
Requires-Dist: chunkr-ai>=0.0.50; extra == 'rag'
|
|
282
288
|
Requires-Dist: cohere<6,>=5.11.0; extra == 'rag'
|
|
283
289
|
Requires-Dist: crawl4ai>=0.3.745; extra == 'rag'
|
|
290
|
+
Requires-Dist: faiss-cpu<2,>=1.7.2; extra == 'rag'
|
|
284
291
|
Requires-Dist: google-genai>=1.13.0; extra == 'rag'
|
|
285
292
|
Requires-Dist: nebula3-python==3.8.2; extra == 'rag'
|
|
286
293
|
Requires-Dist: neo4j<6,>=5.18.0; extra == 'rag'
|
|
287
|
-
Requires-Dist: numpy
|
|
294
|
+
Requires-Dist: numpy<=2.2,>=1.2; extra == 'rag'
|
|
288
295
|
Requires-Dist: pandasai<3,>=2.3.0; extra == 'rag'
|
|
289
296
|
Requires-Dist: pymilvus<3,>=2.4.0; extra == 'rag'
|
|
290
297
|
Requires-Dist: pyobvector>=0.1.18; extra == 'rag'
|
|
@@ -300,6 +307,7 @@ Requires-Dist: scholarly[tor]==1.7.11; extra == 'research-tools'
|
|
|
300
307
|
Provides-Extra: storage
|
|
301
308
|
Requires-Dist: azure-storage-blob<13,>=12.21.0; extra == 'storage'
|
|
302
309
|
Requires-Dist: botocore<2,>=1.35.3; extra == 'storage'
|
|
310
|
+
Requires-Dist: faiss-cpu<2,>=1.7.2; extra == 'storage'
|
|
303
311
|
Requires-Dist: google-cloud-storage<3,>=2.18.0; extra == 'storage'
|
|
304
312
|
Requires-Dist: mem0ai>=0.1.73; extra == 'storage'
|
|
305
313
|
Requires-Dist: nebula3-python==3.8.2; extra == 'storage'
|
|
@@ -75,7 +75,10 @@ from camel.types import (
|
|
|
75
75
|
RoleType,
|
|
76
76
|
)
|
|
77
77
|
from camel.types.agents import ToolCallingRecord
|
|
78
|
-
from camel.utils import
|
|
78
|
+
from camel.utils import (
|
|
79
|
+
get_model_encoding,
|
|
80
|
+
model_from_json_schema,
|
|
81
|
+
)
|
|
79
82
|
|
|
80
83
|
if TYPE_CHECKING:
|
|
81
84
|
from camel.terminators import ResponseTerminator
|
|
@@ -163,6 +166,7 @@ class ChatAgent(BaseAgent):
|
|
|
163
166
|
model: Optional[
|
|
164
167
|
Union[
|
|
165
168
|
BaseModelBackend,
|
|
169
|
+
ModelManager,
|
|
166
170
|
Tuple[str, str],
|
|
167
171
|
str,
|
|
168
172
|
ModelType,
|
|
@@ -188,12 +192,15 @@ class ChatAgent(BaseAgent):
|
|
|
188
192
|
agent_id: Optional[str] = None,
|
|
189
193
|
stop_event: Optional[threading.Event] = None,
|
|
190
194
|
) -> None:
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
195
|
+
if isinstance(model, ModelManager):
|
|
196
|
+
self.model_backend = model
|
|
197
|
+
else:
|
|
198
|
+
# Resolve model backends and set up model manager
|
|
199
|
+
resolved_models = self._resolve_models(model)
|
|
200
|
+
self.model_backend = ModelManager(
|
|
201
|
+
resolved_models,
|
|
202
|
+
scheduling_strategy=scheduling_strategy,
|
|
203
|
+
)
|
|
197
204
|
self.model_type = self.model_backend.model_type
|
|
198
205
|
|
|
199
206
|
# Assign unique ID
|
|
@@ -1706,3 +1713,147 @@ class ChatAgent(BaseAgent):
|
|
|
1706
1713
|
return (
|
|
1707
1714
|
f"ChatAgent({self.role_name}, {self.role_type}, {self.model_type})"
|
|
1708
1715
|
)
|
|
1716
|
+
|
|
1717
|
+
def to_mcp(
|
|
1718
|
+
self,
|
|
1719
|
+
name: str = "CAMEL-ChatAgent",
|
|
1720
|
+
description: str = "A helpful assistant using the CAMEL AI framework.",
|
|
1721
|
+
dependencies: Optional[List[str]] = None,
|
|
1722
|
+
host: str = "localhost",
|
|
1723
|
+
port: int = 8000,
|
|
1724
|
+
):
|
|
1725
|
+
r"""Expose this ChatAgent as an MCP server.
|
|
1726
|
+
|
|
1727
|
+
Args:
|
|
1728
|
+
name (str): Name of the MCP server.
|
|
1729
|
+
(default: :obj:`CAMEL-ChatAgent`)
|
|
1730
|
+
description (Optional[List[str]]): Description of the agent. If
|
|
1731
|
+
None, a generic description is used. (default: :obj:`A helpful
|
|
1732
|
+
assistant using the CAMEL AI framework.`)
|
|
1733
|
+
dependencies (Optional[List[str]]): Additional
|
|
1734
|
+
dependencies for the MCP server. (default: :obj:`None`)
|
|
1735
|
+
host (str): Host to bind to for HTTP transport.
|
|
1736
|
+
(default: :obj:`localhost`)
|
|
1737
|
+
port (int): Port to bind to for HTTP transport.
|
|
1738
|
+
(default: :obj:`8000`)
|
|
1739
|
+
|
|
1740
|
+
Returns:
|
|
1741
|
+
FastMCP: An MCP server instance that can be run.
|
|
1742
|
+
"""
|
|
1743
|
+
try:
|
|
1744
|
+
from mcp.server.fastmcp import FastMCP
|
|
1745
|
+
except ImportError:
|
|
1746
|
+
raise ImportError(
|
|
1747
|
+
"The 'mcp' package is required to use the to_mcp method. "
|
|
1748
|
+
"Install it with 'pip install mcp'."
|
|
1749
|
+
)
|
|
1750
|
+
|
|
1751
|
+
# Combine dependencies
|
|
1752
|
+
all_dependencies = ["camel-ai[all]"]
|
|
1753
|
+
if dependencies:
|
|
1754
|
+
all_dependencies.extend(dependencies)
|
|
1755
|
+
|
|
1756
|
+
mcp_server = FastMCP(
|
|
1757
|
+
name,
|
|
1758
|
+
dependencies=all_dependencies,
|
|
1759
|
+
host=host,
|
|
1760
|
+
port=port,
|
|
1761
|
+
)
|
|
1762
|
+
|
|
1763
|
+
# Store agent reference
|
|
1764
|
+
agent_instance = self
|
|
1765
|
+
|
|
1766
|
+
# Define functions first
|
|
1767
|
+
async def step(message, response_format=None):
|
|
1768
|
+
r"""Execute a single step in the chat session with the agent."""
|
|
1769
|
+
format_cls = None
|
|
1770
|
+
if response_format:
|
|
1771
|
+
format_cls = model_from_json_schema(
|
|
1772
|
+
"DynamicResponseFormat", response_format
|
|
1773
|
+
)
|
|
1774
|
+
response = await agent_instance.astep(message, format_cls)
|
|
1775
|
+
return {
|
|
1776
|
+
"status": "success",
|
|
1777
|
+
"messages": [msg.to_dict() for msg in response.msgs],
|
|
1778
|
+
"terminated": response.terminated,
|
|
1779
|
+
"info": response.info,
|
|
1780
|
+
}
|
|
1781
|
+
|
|
1782
|
+
# Reset tool
|
|
1783
|
+
def reset():
|
|
1784
|
+
r"""Reset the chat agent to its initial state."""
|
|
1785
|
+
agent_instance.reset()
|
|
1786
|
+
return {"status": "success", "message": "Agent reset successfully"}
|
|
1787
|
+
|
|
1788
|
+
# Set language tool
|
|
1789
|
+
def set_output_language(language):
|
|
1790
|
+
r"""Set the output language for the chat agent."""
|
|
1791
|
+
agent_instance.output_language = language
|
|
1792
|
+
return {
|
|
1793
|
+
"status": "success",
|
|
1794
|
+
"message": f"Output language set to '{language}'",
|
|
1795
|
+
}
|
|
1796
|
+
|
|
1797
|
+
# Agent info resource and tool
|
|
1798
|
+
def get_agent_info():
|
|
1799
|
+
r"""Get information about the agent."""
|
|
1800
|
+
info = {
|
|
1801
|
+
"agent_id": agent_instance.agent_id,
|
|
1802
|
+
"model_type": str(agent_instance.model_type),
|
|
1803
|
+
"role_name": agent_instance.role_name,
|
|
1804
|
+
"role_type": str(agent_instance.role_type),
|
|
1805
|
+
"output_language": agent_instance.output_language or "None",
|
|
1806
|
+
"description": description,
|
|
1807
|
+
}
|
|
1808
|
+
return info
|
|
1809
|
+
|
|
1810
|
+
# Chat history resource and tool
|
|
1811
|
+
def get_chat_history():
|
|
1812
|
+
r"""Get the chat history for the agent."""
|
|
1813
|
+
# Convert messages to simple serializable format
|
|
1814
|
+
messages = []
|
|
1815
|
+
for msg in agent_instance.chat_history:
|
|
1816
|
+
# Create a simplified version of each message
|
|
1817
|
+
msg_dict = {
|
|
1818
|
+
"role": msg.get("role", ""),
|
|
1819
|
+
"content": msg.get("content", ""),
|
|
1820
|
+
}
|
|
1821
|
+
# Include function calls if present
|
|
1822
|
+
if "function_call" in msg:
|
|
1823
|
+
msg_dict["function_call"] = {
|
|
1824
|
+
"name": msg["function_call"].get("name", ""),
|
|
1825
|
+
"arguments": msg["function_call"].get("arguments", ""),
|
|
1826
|
+
}
|
|
1827
|
+
messages.append(msg_dict)
|
|
1828
|
+
return messages
|
|
1829
|
+
|
|
1830
|
+
# Available tools resource and tool
|
|
1831
|
+
def get_available_tools():
|
|
1832
|
+
r"""Get a list of available internal tools."""
|
|
1833
|
+
tool_info = {}
|
|
1834
|
+
for name, tool in agent_instance.tool_dict.items():
|
|
1835
|
+
tool_info[name] = {
|
|
1836
|
+
"name": name,
|
|
1837
|
+
"description": tool.get_function_description() or "",
|
|
1838
|
+
"parameters": [
|
|
1839
|
+
{"name": param_name, "type": str(param_type)}
|
|
1840
|
+
for param_name, param_type in tool.get_parameters().items() # noqa: E501
|
|
1841
|
+
],
|
|
1842
|
+
}
|
|
1843
|
+
return tool_info
|
|
1844
|
+
|
|
1845
|
+
# Now register everything using decorators
|
|
1846
|
+
mcp_server.tool()(step)
|
|
1847
|
+
mcp_server.tool()(reset)
|
|
1848
|
+
mcp_server.tool()(set_output_language)
|
|
1849
|
+
|
|
1850
|
+
mcp_server.resource("agent://")(get_agent_info)
|
|
1851
|
+
mcp_server.tool()(get_agent_info)
|
|
1852
|
+
|
|
1853
|
+
mcp_server.resource("history://")(get_chat_history)
|
|
1854
|
+
mcp_server.tool()(get_chat_history)
|
|
1855
|
+
|
|
1856
|
+
mcp_server.resource("tools://")(get_available_tools)
|
|
1857
|
+
mcp_server.tool()(get_available_tools)
|
|
1858
|
+
|
|
1859
|
+
return mcp_server
|
|
@@ -56,14 +56,14 @@ class AnthropicConfig(BaseConfig):
|
|
|
56
56
|
metadata about the request. Can include user_id as an external
|
|
57
57
|
identifier for the user associated with the request.
|
|
58
58
|
(default: :obj:`None`)
|
|
59
|
-
thinking (dict, optional): Configuration for enabling
|
|
60
|
-
Claude's extended thinking. When enabled, responses include
|
|
61
|
-
thinking content blocks showing Claude's thinking process.
|
|
62
|
-
(default: :obj:`None`)
|
|
63
59
|
tool_choice (dict, optional): How the model should
|
|
64
60
|
use the provided tools. The model can use a specific tool, any
|
|
65
61
|
available tool, decide by itself, or not use tools at all.
|
|
66
62
|
(default: :obj:`None`)
|
|
63
|
+
extra_headers (Optional[dict], optional): Additional headers for the
|
|
64
|
+
request. (default: :obj:`None`)
|
|
65
|
+
extra_body (dict, optional): Extra body parameters to be passed to
|
|
66
|
+
the Anthropic API.
|
|
67
67
|
"""
|
|
68
68
|
|
|
69
69
|
max_tokens: Optional[int] = None
|
|
@@ -73,8 +73,9 @@ class AnthropicConfig(BaseConfig):
|
|
|
73
73
|
top_k: Optional[int] = None
|
|
74
74
|
stream: Optional[bool] = None
|
|
75
75
|
metadata: Optional[dict] = None
|
|
76
|
-
thinking: Optional[dict] = None
|
|
77
76
|
tool_choice: Optional[dict] = None
|
|
77
|
+
extra_headers: Optional[dict] = None
|
|
78
|
+
extra_body: Optional[dict] = None
|
|
78
79
|
|
|
79
80
|
|
|
80
81
|
ANTHROPIC_API_PARAMS = {param for param in AnthropicConfig.model_fields.keys()}
|
|
@@ -104,6 +104,8 @@ class ChatGPTConfig(BaseConfig):
|
|
|
104
104
|
parallel_tool_calls (bool, optional): A parameter specifying whether
|
|
105
105
|
the model should call tools in parallel or not.
|
|
106
106
|
(default: :obj:`None`)
|
|
107
|
+
extra_headers: Optional[Dict[str, str]]: Extra headers to use for the
|
|
108
|
+
model. (default: :obj:`None`)
|
|
107
109
|
"""
|
|
108
110
|
|
|
109
111
|
temperature: Optional[float] = None
|
|
@@ -120,6 +122,7 @@ class ChatGPTConfig(BaseConfig):
|
|
|
120
122
|
tool_choice: Optional[Union[Dict[str, str], str]] = None
|
|
121
123
|
reasoning_effort: Optional[str] = None
|
|
122
124
|
parallel_tool_calls: Optional[bool] = None
|
|
125
|
+
extra_headers: Optional[Dict[str, str]] = None
|
|
123
126
|
|
|
124
127
|
|
|
125
128
|
OPENAI_API_PARAMS = {param for param in ChatGPTConfig.model_fields.keys()}
|
|
@@ -65,7 +65,7 @@ class SambaVerseAPIConfig(BaseConfig):
|
|
|
65
65
|
|
|
66
66
|
|
|
67
67
|
SAMBA_VERSE_API_PARAMS = {
|
|
68
|
-
param for param in SambaVerseAPIConfig
|
|
68
|
+
param for param in SambaVerseAPIConfig.model_fields.keys()
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
|
|
@@ -160,5 +160,5 @@ class SambaCloudAPIConfig(BaseConfig):
|
|
|
160
160
|
|
|
161
161
|
|
|
162
162
|
SAMBA_CLOUD_API_PARAMS = {
|
|
163
|
-
param for param in SambaCloudAPIConfig
|
|
163
|
+
param for param in SambaCloudAPIConfig.model_fields.keys()
|
|
164
164
|
}
|
|
@@ -204,26 +204,23 @@ class CoTDataGenerator:
|
|
|
204
204
|
logger.info("Answer verification result: %s", is_correct)
|
|
205
205
|
return is_correct
|
|
206
206
|
|
|
207
|
-
def
|
|
207
|
+
def evaluate_partial_solution(
|
|
208
208
|
self, question: str, partial_solution: str = ""
|
|
209
209
|
) -> float:
|
|
210
|
-
r"""
|
|
210
|
+
r"""Evaluate the quality of a partial solution against the
|
|
211
|
+
golden answer.
|
|
211
212
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
scores
|
|
215
|
-
b. Expansion: Generate new solution steps using the generator agent
|
|
216
|
-
c. Simulation: Evaluate solution quality using similarity scores
|
|
217
|
-
d. Backpropagation: Update solution tree with new findings
|
|
213
|
+
This function generates a similarity score between the given partial
|
|
214
|
+
solution and the correct answer (golden answer).
|
|
218
215
|
|
|
219
216
|
Args:
|
|
220
|
-
question (str): The question
|
|
221
|
-
partial_solution (str): The
|
|
217
|
+
question (str): The question being solved.
|
|
218
|
+
partial_solution (str): The partial solution generated so far.
|
|
222
219
|
(default::obj:`""`)
|
|
223
220
|
|
|
224
221
|
Returns:
|
|
225
|
-
float:
|
|
226
|
-
solution
|
|
222
|
+
float: A similarity score between 0 and 1, indicating how close the
|
|
223
|
+
partial solution is to the golden answer.
|
|
227
224
|
"""
|
|
228
225
|
if question not in self.golden_answers:
|
|
229
226
|
raise ValueError(
|
|
@@ -293,10 +290,21 @@ class CoTDataGenerator:
|
|
|
293
290
|
r"""Solve a question using a multi-step approach.
|
|
294
291
|
|
|
295
292
|
The solution process follows these steps:
|
|
296
|
-
1. Try to solve directly - if correct, return the solution
|
|
297
|
-
2. If not correct,
|
|
298
|
-
|
|
299
|
-
|
|
293
|
+
1. Try to solve directly - if correct, return the solution.
|
|
294
|
+
2. If not correct, perform a search by iteratively generating
|
|
295
|
+
new solutions and evaluating their similarity scores to
|
|
296
|
+
find a good solution. The search process involves:
|
|
297
|
+
a. Generation: Generate new solution candidates using
|
|
298
|
+
the generator agent.
|
|
299
|
+
b. Evaluation: Score each solution candidate for similarity
|
|
300
|
+
to the golden answer.
|
|
301
|
+
c. Selection: Keep the best-scoring candidate found so far.
|
|
302
|
+
d. Early stopping: If a sufficiently high-scoring solution
|
|
303
|
+
is found (score > 0.9), stop early.
|
|
304
|
+
3. If the solution isn't perfect, use binary search to locate
|
|
305
|
+
errors.
|
|
306
|
+
4. Generate a new solution based on the correct part of the
|
|
307
|
+
initial solution.
|
|
300
308
|
|
|
301
309
|
Args:
|
|
302
310
|
question (str): The question to solve.
|
|
@@ -304,14 +312,14 @@ class CoTDataGenerator:
|
|
|
304
312
|
Returns:
|
|
305
313
|
str: The best solution found.
|
|
306
314
|
"""
|
|
315
|
+
|
|
307
316
|
# 1. Try direct solution first
|
|
308
317
|
solution = self.get_answer(question)
|
|
309
318
|
if self.verify_answer(question, solution):
|
|
310
319
|
logger.info("Initial solution is correct")
|
|
311
320
|
return solution
|
|
312
321
|
|
|
313
|
-
# 2. If direct solution fails,
|
|
314
|
-
# to find a solution with high similarity score
|
|
322
|
+
# 2. If direct solution fails, iteratively search for a better solution
|
|
315
323
|
best_solution = ""
|
|
316
324
|
best_score: float = 0.0
|
|
317
325
|
for i in range(self.search_limit):
|
|
@@ -319,23 +327,10 @@ class CoTDataGenerator:
|
|
|
319
327
|
current_solution = self.get_answer(question, best_solution)
|
|
320
328
|
|
|
321
329
|
# Evaluate solution similarity score
|
|
322
|
-
prompt = (
|
|
323
|
-
f"Please evaluate this solution and "
|
|
324
|
-
f"give a score between 0-1:\n"
|
|
325
|
-
f"Question: {question}\n"
|
|
326
|
-
f"Solution: {current_solution}\n"
|
|
327
|
-
f"Correct answer: {self.golden_answers.get(question, '')}\n"
|
|
328
|
-
f"Return a JSON object with a single field 'score' containing "
|
|
329
|
-
f"a float between 0 and 1, like this: {{'score': 0.85}}\n"
|
|
330
|
-
)
|
|
331
|
-
self.generator_agent.reset()
|
|
332
|
-
response = self.generator_agent.step(prompt)
|
|
333
330
|
try:
|
|
334
|
-
|
|
335
|
-
|
|
331
|
+
score = self.evaluate_partial_solution(
|
|
332
|
+
question, current_solution
|
|
336
333
|
)
|
|
337
|
-
agent_response = response.msgs[0].parsed.score # type: ignore [union-attr]
|
|
338
|
-
score = agent_response
|
|
339
334
|
|
|
340
335
|
# Exit early if we find a very good solution (score > 0.9)
|
|
341
336
|
if score > 0.9:
|
|
@@ -357,7 +352,7 @@ class CoTDataGenerator:
|
|
|
357
352
|
best_score,
|
|
358
353
|
)
|
|
359
354
|
except Exception as e:
|
|
360
|
-
logger.error("Error
|
|
355
|
+
logger.error("Error evaluating partial solution: %s", str(e))
|
|
361
356
|
continue
|
|
362
357
|
|
|
363
358
|
# 3. If the answer is not completely correct,
|
|
@@ -38,24 +38,27 @@ class BaseScorer(ABC):
|
|
|
38
38
|
|
|
39
39
|
class MathScorer(BaseScorer):
|
|
40
40
|
def __init__(self, agent: Optional[ChatAgent] = None):
|
|
41
|
-
self.system_msg =
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
41
|
+
self.system_msg = """
|
|
42
|
+
You are an evaluator for math problems. Your task is to compare a new math
|
|
43
|
+
problem against a reference math problem by trying to solve it, and rate it
|
|
44
|
+
in **three dimensions**.
|
|
45
|
+
|
|
46
|
+
1. Diversity (1-5): How novel is the new problem compared to the
|
|
47
|
+
reference? 1 = almost the same, 5 = completely different.
|
|
48
|
+
|
|
49
|
+
2. Difficulty (1-10): Rate the relative difficulty compared to the reference
|
|
50
|
+
problem. 1 = much less difficult, 5 = similar difficulty, 10 = much more
|
|
51
|
+
difficult. The difficulty should be based on the complexity of reasoning—i.e.,
|
|
52
|
+
problems that require multi-step reasoning or clever methods to solve.
|
|
53
|
+
|
|
54
|
+
3. Solvability (1-10): How likely is the problem solvable using standard math
|
|
55
|
+
techniques and only contain one question that could be answered by a number or
|
|
56
|
+
a formula? 1 = very unsolvable or ambiguous, 10 = solvable and could be
|
|
57
|
+
answered by a number or a formula.
|
|
58
|
+
|
|
59
|
+
Respond with a JSON object like:
|
|
60
|
+
{ "solution": ..., "diversity": ..., "difficulty": ..., "solvability": ... }
|
|
61
|
+
"""
|
|
59
62
|
self.agent = agent or ChatAgent(self.system_msg)
|
|
60
63
|
|
|
61
64
|
class MathScoreSchema(BaseModel):
|
|
@@ -69,10 +72,6 @@ class MathScorer(BaseScorer):
|
|
|
69
72
|
difficulty: int = Field(
|
|
70
73
|
..., description="Score for the relative difficulty"
|
|
71
74
|
)
|
|
72
|
-
validity: int = Field(
|
|
73
|
-
...,
|
|
74
|
-
description="Score for how well-defined and sound the problem is",
|
|
75
|
-
)
|
|
76
75
|
solvability: int = Field(
|
|
77
76
|
...,
|
|
78
77
|
description="Score for the solvability of the problem",
|
|
@@ -95,7 +94,7 @@ class MathScorer(BaseScorer):
|
|
|
95
94
|
query = (
|
|
96
95
|
f"Reference problem:\n{reference_problem}\n\n"
|
|
97
96
|
f"New problem:\n{new_problem}\n\n"
|
|
98
|
-
"
|
|
97
|
+
"Try to solve the new problem. Then provide scores in JSON format."
|
|
99
98
|
)
|
|
100
99
|
response = self.agent.step(query, response_format=self.MathScoreSchema)
|
|
101
100
|
score_data = json.loads(response.msg.content)
|