camel-ai 0.2.76a4__tar.gz → 0.2.76a6__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.76a4 → camel_ai-0.2.76a6}/.gitignore +4 -3
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/PKG-INFO +25 -6
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/README.md +18 -1
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/__init__.py +1 -1
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/agents/chat_agent.py +276 -21
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/__init__.py +3 -0
- camel_ai-0.2.76a6/camel/configs/cometapi_config.py +104 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/interpreters/docker/Dockerfile +3 -12
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/memories/blocks/chat_history_block.py +4 -1
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/memories/records.py +52 -8
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/messages/base.py +1 -1
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/__init__.py +2 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/azure_openai_model.py +0 -6
- camel_ai-0.2.76a6/camel/models/cometapi_model.py +83 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/model_factory.py +2 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/openai_compatible_model.py +0 -6
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/zhipuai_model.py +61 -2
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/retrievers/auto_retriever.py +1 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/societies/workforce/workforce.py +9 -7
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/storages/key_value_storages/json.py +15 -2
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/storages/vectordb_storages/tidb.py +8 -6
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/__init__.py +4 -0
- camel_ai-0.2.76a6/camel/toolkits/dingtalk.py +1135 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/edgeone_pages_mcp_toolkit.py +11 -31
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/google_drive_mcp_toolkit.py +12 -31
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/message_integration.py +3 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/notion_mcp_toolkit.py +16 -26
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/origene_mcp_toolkit.py +8 -49
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/playwright_mcp_toolkit.py +12 -31
- camel_ai-0.2.76a6/camel/toolkits/resend_toolkit.py +168 -0
- camel_ai-0.2.76a6/camel/toolkits/terminal_toolkit/__init__.py +18 -0
- camel_ai-0.2.76a6/camel/toolkits/terminal_toolkit/terminal_toolkit.py +924 -0
- camel_ai-0.2.76a6/camel/toolkits/terminal_toolkit/utils.py +580 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/types/enums.py +109 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/types/unified_model_type.py +5 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/utils/commons.py +2 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/pyproject.toml +8 -5
- camel_ai-0.2.76a4/camel/toolkits/terminal_toolkit.py +0 -1798
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/LICENSE +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/agents/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/agents/_types.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/agents/_utils.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/agents/base.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/agents/critic_agent.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/agents/deductive_reasoner_agent.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/agents/embodied_agent.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/agents/knowledge_graph_agent.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/agents/mcp_agent.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/agents/multi_hop_generator_agent.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/agents/programmed_agent_instruction.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/agents/repo_agent.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/agents/role_assignment_agent.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/agents/search_agent.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/agents/task_agent.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/agents/tool_agents/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/agents/tool_agents/base.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/agents/tool_agents/hugging_face_tool_agent.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/benchmarks/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/benchmarks/apibank.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/benchmarks/apibench.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/benchmarks/base.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/benchmarks/browsecomp.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/benchmarks/gaia.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/benchmarks/mock_website/README.md +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/benchmarks/mock_website/mock_web.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/benchmarks/mock_website/requirements.txt +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/benchmarks/mock_website/shopping_mall/app.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/benchmarks/mock_website/task.json +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/benchmarks/nexus.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/benchmarks/ragbench.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/bots/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/bots/discord/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/bots/discord/discord_app.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/bots/discord/discord_installation.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/bots/discord/discord_store.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/bots/slack/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/bots/slack/models.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/bots/slack/slack_app.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/bots/telegram_bot.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/aiml_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/amd_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/anthropic_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/base_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/bedrock_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/cohere_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/crynux_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/deepseek_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/gemini_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/groq_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/internlm_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/litellm_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/lmstudio_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/mistral_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/modelscope_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/moonshot_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/nebius_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/netmind_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/novita_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/nvidia_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/ollama_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/openai_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/openrouter_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/ppio_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/qianfan_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/qwen_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/reka_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/samba_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/sglang_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/siliconflow_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/togetherai_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/vllm_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/watsonx_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/yi_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/configs/zhipuai_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/data_collectors/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/data_collectors/alpaca_collector.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/data_collectors/base.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/data_collectors/sharegpt_collector.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/datagen/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/datagen/cot_datagen.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/datagen/evol_instruct/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/datagen/evol_instruct/evol_instruct.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/datagen/evol_instruct/scorer.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/datagen/evol_instruct/templates.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/datagen/self_improving_cot.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/datagen/self_instruct/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/datagen/self_instruct/filter/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/datagen/self_instruct/filter/filter_function.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/datagen/self_instruct/filter/filter_registry.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/datagen/self_instruct/filter/instruction_filter.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/datagen/self_instruct/self_instruct.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/datagen/self_instruct/templates.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/datagen/source2synth/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/datagen/source2synth/data_processor.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/datagen/source2synth/models.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/datagen/source2synth/user_data_processor_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/datahubs/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/datahubs/base.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/datahubs/huggingface.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/datahubs/models.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/datasets/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/datasets/base_generator.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/datasets/few_shot_generator.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/datasets/models.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/datasets/self_instruct_generator.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/datasets/static_dataset.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/embeddings/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/embeddings/azure_embedding.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/embeddings/base.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/embeddings/gemini_embedding.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/embeddings/jina_embedding.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/embeddings/mistral_embedding.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/embeddings/openai_compatible_embedding.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/embeddings/openai_embedding.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/embeddings/sentence_transformers_embeddings.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/embeddings/together_embedding.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/embeddings/vlm_embedding.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/environments/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/environments/models.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/environments/multi_step.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/environments/rlcards_env.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/environments/single_step.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/environments/tic_tac_toe.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/extractors/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/extractors/base.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/extractors/python_strategies.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/generators.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/human.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/interpreters/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/interpreters/base.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/interpreters/docker_interpreter.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/interpreters/e2b_interpreter.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/interpreters/internal_python_interpreter.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/interpreters/interpreter_error.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/interpreters/ipython_interpreter.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/interpreters/microsandbox_interpreter.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/interpreters/subprocess_interpreter.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/loaders/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/loaders/apify_reader.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/loaders/base_io.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/loaders/base_loader.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/loaders/chunkr_reader.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/loaders/crawl4ai_reader.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/loaders/firecrawl_reader.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/loaders/jina_url_reader.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/loaders/markitdown.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/loaders/mineru_extractor.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/loaders/mistral_reader.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/loaders/pandas_reader.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/loaders/scrapegraph_reader.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/loaders/unstructured_io.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/logger.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/memories/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/memories/agent_memories.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/memories/base.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/memories/blocks/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/memories/blocks/vectordb_block.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/memories/context_creators/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/memories/context_creators/score_based.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/messages/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/messages/conversion/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/messages/conversion/alpaca.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/messages/conversion/conversation_models.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/messages/conversion/sharegpt/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/messages/conversion/sharegpt/function_call_formatter.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/messages/conversion/sharegpt/hermes/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/messages/conversion/sharegpt/hermes/hermes_function_formatter.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/messages/func_message.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/_utils.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/aiml_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/amd_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/anthropic_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/aws_bedrock_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/base_audio_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/base_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/cohere_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/crynux_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/deepseek_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/fish_audio_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/gemini_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/groq_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/internlm_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/litellm_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/lmstudio_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/mistral_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/model_manager.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/modelscope_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/moonshot_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/nebius_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/nemotron_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/netmind_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/novita_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/nvidia_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/ollama_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/openai_audio_models.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/openai_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/openrouter_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/ppio_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/qianfan_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/qwen_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/reka_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/reward/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/reward/base_reward_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/reward/evaluator.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/reward/nemotron_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/reward/skywork_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/samba_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/sglang_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/siliconflow_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/stub_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/togetherai_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/vllm_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/volcano_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/watsonx_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/models/yi_model.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/personas/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/personas/persona.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/personas/persona_hub.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/prompts/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/prompts/ai_society.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/prompts/base.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/prompts/code.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/prompts/evaluation.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/prompts/generate_text_embedding_data.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/prompts/image_craft.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/prompts/misalignment.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/prompts/multi_condition_image_craft.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/prompts/object_recognition.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/prompts/persona_hub.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/prompts/prompt_templates.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/prompts/role_description_prompt_template.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/prompts/solution_extraction.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/prompts/task_prompt_template.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/prompts/translation.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/prompts/video_description_prompt.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/py.typed +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/responses/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/responses/agent_responses.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/retrievers/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/retrievers/base.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/retrievers/bm25_retriever.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/retrievers/cohere_rerank_retriever.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/retrievers/hybrid_retrival.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/retrievers/vector_retriever.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/runtimes/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/runtimes/api.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/runtimes/base.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/runtimes/configs.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/runtimes/daytona_runtime.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/runtimes/docker_runtime.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/runtimes/llm_guard_runtime.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/runtimes/remote_http_runtime.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/runtimes/ubuntu_docker_runtime.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/runtimes/utils/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/runtimes/utils/function_risk_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/runtimes/utils/ignore_risk_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/schemas/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/schemas/base.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/schemas/openai_converter.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/schemas/outlines_converter.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/services/agent_openapi_server.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/societies/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/societies/babyagi_playing.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/societies/role_playing.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/societies/workforce/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/societies/workforce/base.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/societies/workforce/prompts.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/societies/workforce/role_playing_worker.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/societies/workforce/single_agent_worker.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/societies/workforce/structured_output_handler.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/societies/workforce/task_channel.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/societies/workforce/utils.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/societies/workforce/worker.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/societies/workforce/workforce_logger.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/storages/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/storages/graph_storages/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/storages/graph_storages/base.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/storages/graph_storages/graph_element.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/storages/graph_storages/nebula_graph.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/storages/graph_storages/neo4j_graph.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/storages/key_value_storages/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/storages/key_value_storages/base.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/storages/key_value_storages/in_memory.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/storages/key_value_storages/mem0_cloud.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/storages/key_value_storages/redis.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/storages/object_storages/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/storages/object_storages/amazon_s3.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/storages/object_storages/azure_blob.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/storages/object_storages/base.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/storages/object_storages/google_cloud.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/storages/vectordb_storages/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/storages/vectordb_storages/base.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/storages/vectordb_storages/chroma.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/storages/vectordb_storages/faiss.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/storages/vectordb_storages/milvus.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/storages/vectordb_storages/oceanbase.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/storages/vectordb_storages/pgvector.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/storages/vectordb_storages/qdrant.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/storages/vectordb_storages/surreal.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/storages/vectordb_storages/weaviate.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/tasks/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/tasks/task.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/tasks/task_prompt.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/terminators/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/terminators/base.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/terminators/response_terminator.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/terminators/token_limit_terminator.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/aci_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/arxiv_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/ask_news_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/async_browser_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/audio_analysis_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/base.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/bohrium_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/browser_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/browser_toolkit_commons.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/code_execution.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/context_summarizer_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/craw4ai_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/dappier_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/data_commons_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/excel_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/file_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/function_tool.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/github_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/google_calendar_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/google_maps_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/google_scholar_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/human_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/hybrid_browser_toolkit/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/hybrid_browser_toolkit/config_loader.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit_ts.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/hybrid_browser_toolkit/ts/package-lock.json +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/hybrid_browser_toolkit/ts/package.json +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/hybrid_browser_toolkit/ts/src/browser-scripts.js +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/hybrid_browser_toolkit/ts/src/browser-session.ts +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/hybrid_browser_toolkit/ts/src/config-loader.ts +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/hybrid_browser_toolkit/ts/src/hybrid-browser-toolkit.ts +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/hybrid_browser_toolkit/ts/src/index.ts +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/hybrid_browser_toolkit/ts/src/parent-child-filter.ts +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/hybrid_browser_toolkit/ts/src/snapshot-parser.ts +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/hybrid_browser_toolkit/ts/src/som-screenshot-injected.ts +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/hybrid_browser_toolkit/ts/src/types.ts +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/hybrid_browser_toolkit/ts/tsconfig.json +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/hybrid_browser_toolkit/ts/websocket-server.js +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/hybrid_browser_toolkit/ws_wrapper.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/hybrid_browser_toolkit_py/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/hybrid_browser_toolkit_py/actions.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/hybrid_browser_toolkit_py/agent.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/hybrid_browser_toolkit_py/browser_session.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/hybrid_browser_toolkit_py/config_loader.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/hybrid_browser_toolkit_py/hybrid_browser_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/hybrid_browser_toolkit_py/snapshot.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/hybrid_browser_toolkit_py/stealth_script.js +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/hybrid_browser_toolkit_py/unified_analyzer.js +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/image_analysis_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/image_generation_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/jina_reranker_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/klavis_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/linkedin_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/markitdown_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/math_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/mcp_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/memory_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/meshy_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/message_agent_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/mineru_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/minimax_mcp_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/networkx_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/note_taking_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/notion_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/open_api_specs/biztoc/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/open_api_specs/biztoc/ai-plugin.json +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/open_api_specs/biztoc/openapi.yaml +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/open_api_specs/coursera/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/open_api_specs/coursera/openapi.yaml +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/open_api_specs/create_qr_code/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/open_api_specs/create_qr_code/openapi.yaml +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/open_api_specs/klarna/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/open_api_specs/klarna/openapi.yaml +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/open_api_specs/nasa_apod/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/open_api_specs/nasa_apod/openapi.yaml +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/open_api_specs/outschool/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/open_api_specs/outschool/ai-plugin.json +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/open_api_specs/outschool/openapi.yaml +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/open_api_specs/outschool/paths/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/open_api_specs/outschool/paths/get_classes.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/open_api_specs/outschool/paths/search_teachers.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/open_api_specs/security_config.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/open_api_specs/speak/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/open_api_specs/speak/openapi.yaml +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/open_api_specs/web_scraper/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/open_api_specs/web_scraper/ai-plugin.json +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/open_api_specs/web_scraper/openapi.yaml +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/open_api_specs/web_scraper/paths/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/open_api_specs/web_scraper/paths/scraper.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/open_api_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/openbb_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/page_script.js +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/pptx_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/pubmed_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/pulse_mcp_search_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/pyautogui_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/reddit_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/retrieval_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/screenshot_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/search_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/searxng_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/semantic_scholar_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/slack_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/stripe_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/sympy_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/task_planning_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/thinking_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/twitter_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/vertex_ai_veo_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/video_analysis_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/video_download_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/weather_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/web_deploy_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/wechat_official_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/whatsapp_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/wolfram_alpha_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/toolkits/zapier_toolkit.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/types/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/types/agents/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/types/agents/tool_calling_record.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/types/mcp_registries.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/types/openai_types.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/utils/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/utils/async_func.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/utils/chunker/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/utils/chunker/base.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/utils/chunker/code_chunker.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/utils/chunker/uio_chunker.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/utils/constants.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/utils/context_utils.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/utils/deduplication.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/utils/filename.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/utils/langfuse.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/utils/mcp.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/utils/mcp_client.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/utils/message_summarizer.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/utils/response_format.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/utils/token_counting.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/utils/tool_result.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/verifiers/__init__.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/verifiers/base.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/verifiers/math_verifier.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/verifiers/models.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/verifiers/physics_verifier.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/camel/verifiers/python_verifier.py +0 -0
- {camel_ai-0.2.76a4 → camel_ai-0.2.76a6}/hatch_build_npm.py +0 -0
|
@@ -432,8 +432,9 @@ benchmark/gaia/results.jsonl
|
|
|
432
432
|
# Secret files for docker
|
|
433
433
|
.container/.env
|
|
434
434
|
|
|
435
|
-
# Environment variables
|
|
436
|
-
|
|
435
|
+
# Environment variables files (ignore real envs, keep examples)
|
|
436
|
+
/.env*
|
|
437
|
+
!/.env*.example
|
|
437
438
|
|
|
438
439
|
##### Node.js/TypeScript.gitignore #####
|
|
439
440
|
# Hybrid Browser Toolkit TypeScript
|
|
@@ -462,4 +463,4 @@ yarn-error.log*
|
|
|
462
463
|
*.tgz
|
|
463
464
|
|
|
464
465
|
# Yarn Integrity file
|
|
465
|
-
.yarn-integrity
|
|
466
|
+
.yarn-integrity
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: camel-ai
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.76a6
|
|
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
|
|
@@ -11,7 +11,7 @@ License-File: LICENSE
|
|
|
11
11
|
Keywords: ai-societies,artificial-intelligence,communicative-ai,cooperative-ai,deep-learning,large-language-models,multi-agent-systems,natural-language-processing
|
|
12
12
|
Requires-Python: <3.13,>=3.10
|
|
13
13
|
Requires-Dist: colorama<0.5,>=0.4.6
|
|
14
|
-
Requires-Dist: docstring-parser<0.
|
|
14
|
+
Requires-Dist: docstring-parser<0.18,>=0.17.0
|
|
15
15
|
Requires-Dist: httpx<1.0.0dev,>=0.28.0
|
|
16
16
|
Requires-Dist: jsonschema<5,>=4
|
|
17
17
|
Requires-Dist: mcp>=1.3.0
|
|
@@ -109,13 +109,14 @@ Requires-Dist: pytest-asyncio<0.24,>=0.23.0; extra == 'all'
|
|
|
109
109
|
Requires-Dist: pytest-cov<5,>=4; extra == 'all'
|
|
110
110
|
Requires-Dist: pytest<8,>=7; extra == 'all'
|
|
111
111
|
Requires-Dist: python-pptx>=1.0.2; extra == 'all'
|
|
112
|
-
Requires-Dist: pytidb
|
|
112
|
+
Requires-Dist: pytidb>=0.0.13; extra == 'all'
|
|
113
113
|
Requires-Dist: qdrant-client<2,>=1.9.0; extra == 'all'
|
|
114
114
|
Requires-Dist: rank-bm25<0.3,>=0.2.2; extra == 'all'
|
|
115
115
|
Requires-Dist: redis<6,>=5.0.6; extra == 'all'
|
|
116
116
|
Requires-Dist: reka-api<4,>=3.0.8; extra == 'all'
|
|
117
117
|
Requires-Dist: reportlab>=4.4.2; extra == 'all'
|
|
118
118
|
Requires-Dist: requests-oauthlib<2,>=1.3.1; extra == 'all'
|
|
119
|
+
Requires-Dist: resend<3,>=2.0.0; extra == 'all'
|
|
119
120
|
Requires-Dist: rlcard<1.3.0,>=1.0.0; extra == 'all'
|
|
120
121
|
Requires-Dist: rouge<2,>=1.0.1; extra == 'all'
|
|
121
122
|
Requires-Dist: scenedetect>=0.6.5.2; extra == 'all'
|
|
@@ -154,6 +155,7 @@ Requires-Dist: notion-client<3,>=2.2.1; extra == 'communication-tools'
|
|
|
154
155
|
Requires-Dist: praw<8,>=7.7.1; extra == 'communication-tools'
|
|
155
156
|
Requires-Dist: pygithub<3,>=2.6.0; extra == 'communication-tools'
|
|
156
157
|
Requires-Dist: pytelegrambotapi<5,>=4.18.0; extra == 'communication-tools'
|
|
158
|
+
Requires-Dist: resend<3,>=2.0.0; extra == 'communication-tools'
|
|
157
159
|
Requires-Dist: slack-bolt<2,>=1.20.1; extra == 'communication-tools'
|
|
158
160
|
Requires-Dist: slack-sdk<4,>=3.27.2; extra == 'communication-tools'
|
|
159
161
|
Provides-Extra: data-tools
|
|
@@ -342,7 +344,7 @@ Requires-Dist: pandasai<3,>=2.3.0; extra == 'rag'
|
|
|
342
344
|
Requires-Dist: protobuf>=6.0.0; extra == 'rag'
|
|
343
345
|
Requires-Dist: pymilvus<3,>=2.4.0; extra == 'rag'
|
|
344
346
|
Requires-Dist: pyobvector>=0.1.18; extra == 'rag'
|
|
345
|
-
Requires-Dist: pytidb
|
|
347
|
+
Requires-Dist: pytidb>=0.0.13; extra == 'rag'
|
|
346
348
|
Requires-Dist: qdrant-client<2,>=1.9.0; extra == 'rag'
|
|
347
349
|
Requires-Dist: rank-bm25<0.3,>=0.2.2; extra == 'rag'
|
|
348
350
|
Requires-Dist: unstructured==0.16.20; extra == 'rag'
|
|
@@ -365,7 +367,7 @@ Requires-Dist: protobuf>=6.0.0; extra == 'storage'
|
|
|
365
367
|
Requires-Dist: psycopg[binary]<4,>=3.1.18; extra == 'storage'
|
|
366
368
|
Requires-Dist: pymilvus<3,>=2.4.0; extra == 'storage'
|
|
367
369
|
Requires-Dist: pyobvector>=0.1.18; extra == 'storage'
|
|
368
|
-
Requires-Dist: pytidb
|
|
370
|
+
Requires-Dist: pytidb>=0.0.13; extra == 'storage'
|
|
369
371
|
Requires-Dist: qdrant-client<2,>=1.9.0; extra == 'storage'
|
|
370
372
|
Requires-Dist: redis<6,>=5.0.6; extra == 'storage'
|
|
371
373
|
Requires-Dist: surrealdb>=1.0.6; extra == 'storage'
|
|
@@ -414,9 +416,14 @@ Description-Content-Type: text/markdown
|
|
|
414
416
|
[![Star][star-image]][star-url]
|
|
415
417
|
[![Package License][package-license-image]][package-license-url]
|
|
416
418
|
[![PyPI Download][package-download-image]][package-download-url]
|
|
419
|
+
[![][join-us-image]][join-us]
|
|
417
420
|
|
|
418
421
|
<a href="https://trendshift.io/repositories/649" target="_blank"><img src="https://trendshift.io/api/badge/repositories/649" alt="camel-ai/camel | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
|
|
419
422
|
|
|
423
|
+
[English](README.md) |
|
|
424
|
+
[简体中文](README.zh.md) |
|
|
425
|
+
[日本語](README.ja.md)
|
|
426
|
+
|
|
420
427
|
</div>
|
|
421
428
|
|
|
422
429
|
|
|
@@ -454,6 +461,8 @@ Join us ([*Discord*](https://discord.camel-ai.org/) or [*WeChat*](https://ghli.o
|
|
|
454
461
|
|
|
455
462
|
<br>
|
|
456
463
|
|
|
464
|
+
[![][image-join-us]][join-us]
|
|
465
|
+
|
|
457
466
|
<details>
|
|
458
467
|
<summary><kbd>Table of contents</kbd></summary>
|
|
459
468
|
|
|
@@ -643,6 +652,13 @@ This example demonstrates how to create a `ChatAgent` using the CAMEL framework
|
|
|
643
652
|
export OPENAI_API_KEY='your_openai_api_key'
|
|
644
653
|
```
|
|
645
654
|
|
|
655
|
+
Alternatively, use a `.env` file:
|
|
656
|
+
|
|
657
|
+
```bash
|
|
658
|
+
cp .env.example .env
|
|
659
|
+
# then edit .env and add your keys
|
|
660
|
+
```
|
|
661
|
+
|
|
646
662
|
3. **Run the following Python code:**
|
|
647
663
|
|
|
648
664
|
```python
|
|
@@ -1005,4 +1021,7 @@ The source code is licensed under Apache 2.0.
|
|
|
1005
1021
|
[reddit-url]: https://www.reddit.com/r/CamelAI/
|
|
1006
1022
|
[reddit-image]: https://img.shields.io/reddit/subreddit-subscribers/CamelAI?style=plastic&logo=reddit&label=r%2FCAMEL&labelColor=white
|
|
1007
1023
|
[ambassador-url]: https://www.camel-ai.org/community
|
|
1008
|
-
[package-download-url]: https://pypi.org/project/camel-ai
|
|
1024
|
+
[package-download-url]: https://pypi.org/project/camel-ai
|
|
1025
|
+
[join-us]:https://eigent-ai.notion.site/eigent-ai-careers
|
|
1026
|
+
[join-us-image]:https://img.shields.io/badge/Join%20Us-yellow?style=plastic
|
|
1027
|
+
[image-join-us]: https://camel-ai.github.io/camel_asset/graphics/join_us.png
|
|
@@ -17,9 +17,14 @@
|
|
|
17
17
|
[![Star][star-image]][star-url]
|
|
18
18
|
[![Package License][package-license-image]][package-license-url]
|
|
19
19
|
[![PyPI Download][package-download-image]][package-download-url]
|
|
20
|
+
[![][join-us-image]][join-us]
|
|
20
21
|
|
|
21
22
|
<a href="https://trendshift.io/repositories/649" target="_blank"><img src="https://trendshift.io/api/badge/repositories/649" alt="camel-ai/camel | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
|
|
22
23
|
|
|
24
|
+
[English](README.md) |
|
|
25
|
+
[简体中文](README.zh.md) |
|
|
26
|
+
[日本語](README.ja.md)
|
|
27
|
+
|
|
23
28
|
</div>
|
|
24
29
|
|
|
25
30
|
|
|
@@ -57,6 +62,8 @@ Join us ([*Discord*](https://discord.camel-ai.org/) or [*WeChat*](https://ghli.o
|
|
|
57
62
|
|
|
58
63
|
<br>
|
|
59
64
|
|
|
65
|
+
[![][image-join-us]][join-us]
|
|
66
|
+
|
|
60
67
|
<details>
|
|
61
68
|
<summary><kbd>Table of contents</kbd></summary>
|
|
62
69
|
|
|
@@ -246,6 +253,13 @@ This example demonstrates how to create a `ChatAgent` using the CAMEL framework
|
|
|
246
253
|
export OPENAI_API_KEY='your_openai_api_key'
|
|
247
254
|
```
|
|
248
255
|
|
|
256
|
+
Alternatively, use a `.env` file:
|
|
257
|
+
|
|
258
|
+
```bash
|
|
259
|
+
cp .env.example .env
|
|
260
|
+
# then edit .env and add your keys
|
|
261
|
+
```
|
|
262
|
+
|
|
249
263
|
3. **Run the following Python code:**
|
|
250
264
|
|
|
251
265
|
```python
|
|
@@ -608,4 +622,7 @@ The source code is licensed under Apache 2.0.
|
|
|
608
622
|
[reddit-url]: https://www.reddit.com/r/CamelAI/
|
|
609
623
|
[reddit-image]: https://img.shields.io/reddit/subreddit-subscribers/CamelAI?style=plastic&logo=reddit&label=r%2FCAMEL&labelColor=white
|
|
610
624
|
[ambassador-url]: https://www.camel-ai.org/community
|
|
611
|
-
[package-download-url]: https://pypi.org/project/camel-ai
|
|
625
|
+
[package-download-url]: https://pypi.org/project/camel-ai
|
|
626
|
+
[join-us]:https://eigent-ai.notion.site/eigent-ai-careers
|
|
627
|
+
[join-us-image]:https://img.shields.io/badge/Join%20Us-yellow?style=plastic
|
|
628
|
+
[image-join-us]: https://camel-ai.github.io/camel_asset/graphics/join_us.png
|
|
@@ -23,6 +23,7 @@ import textwrap
|
|
|
23
23
|
import threading
|
|
24
24
|
import time
|
|
25
25
|
import uuid
|
|
26
|
+
from datetime import datetime
|
|
26
27
|
from pathlib import Path
|
|
27
28
|
from typing import (
|
|
28
29
|
TYPE_CHECKING,
|
|
@@ -93,6 +94,7 @@ from camel.utils import (
|
|
|
93
94
|
model_from_json_schema,
|
|
94
95
|
)
|
|
95
96
|
from camel.utils.commons import dependencies_required
|
|
97
|
+
from camel.utils.context_utils import ContextUtility
|
|
96
98
|
|
|
97
99
|
if TYPE_CHECKING:
|
|
98
100
|
from camel.terminators import ResponseTerminator
|
|
@@ -142,7 +144,7 @@ class StreamContentAccumulator:
|
|
|
142
144
|
|
|
143
145
|
def __init__(self):
|
|
144
146
|
self.base_content = "" # Content before tool calls
|
|
145
|
-
self.current_content =
|
|
147
|
+
self.current_content = [] # Accumulated streaming fragments
|
|
146
148
|
self.tool_status_messages = [] # Accumulated tool status messages
|
|
147
149
|
|
|
148
150
|
def set_base_content(self, content: str):
|
|
@@ -151,7 +153,7 @@ class StreamContentAccumulator:
|
|
|
151
153
|
|
|
152
154
|
def add_streaming_content(self, new_content: str):
|
|
153
155
|
r"""Add new streaming content."""
|
|
154
|
-
self.current_content
|
|
156
|
+
self.current_content.append(new_content)
|
|
155
157
|
|
|
156
158
|
def add_tool_status(self, status_message: str):
|
|
157
159
|
r"""Add a tool status message."""
|
|
@@ -160,16 +162,18 @@ class StreamContentAccumulator:
|
|
|
160
162
|
def get_full_content(self) -> str:
|
|
161
163
|
r"""Get the complete accumulated content."""
|
|
162
164
|
tool_messages = "".join(self.tool_status_messages)
|
|
163
|
-
|
|
165
|
+
current = "".join(self.current_content)
|
|
166
|
+
return self.base_content + tool_messages + current
|
|
164
167
|
|
|
165
168
|
def get_content_with_new_status(self, status_message: str) -> str:
|
|
166
169
|
r"""Get content with a new status message appended."""
|
|
167
170
|
tool_messages = "".join([*self.tool_status_messages, status_message])
|
|
168
|
-
|
|
171
|
+
current = "".join(self.current_content)
|
|
172
|
+
return self.base_content + tool_messages + current
|
|
169
173
|
|
|
170
174
|
def reset_streaming_content(self):
|
|
171
175
|
r"""Reset only the streaming content, keep base and tool status."""
|
|
172
|
-
self.current_content =
|
|
176
|
+
self.current_content = []
|
|
173
177
|
|
|
174
178
|
|
|
175
179
|
class StreamingChatAgentResponse:
|
|
@@ -397,6 +401,10 @@ class ChatAgent(BaseAgent):
|
|
|
397
401
|
step_timeout (Optional[float], optional): Timeout in seconds for the
|
|
398
402
|
entire step operation. If None, no timeout is applied.
|
|
399
403
|
(default: :obj:`None`)
|
|
404
|
+
stream_accumulate (bool, optional): When True, partial streaming
|
|
405
|
+
updates return accumulated content (current behavior). When False,
|
|
406
|
+
partial updates return only the incremental delta. (default:
|
|
407
|
+
:obj:`True`)
|
|
400
408
|
"""
|
|
401
409
|
|
|
402
410
|
def __init__(
|
|
@@ -440,6 +448,7 @@ class ChatAgent(BaseAgent):
|
|
|
440
448
|
retry_attempts: int = 3,
|
|
441
449
|
retry_delay: float = 1.0,
|
|
442
450
|
step_timeout: Optional[float] = None,
|
|
451
|
+
stream_accumulate: bool = True,
|
|
443
452
|
) -> None:
|
|
444
453
|
if isinstance(model, ModelManager):
|
|
445
454
|
self.model_backend = model
|
|
@@ -528,6 +537,9 @@ class ChatAgent(BaseAgent):
|
|
|
528
537
|
self.retry_attempts = max(1, retry_attempts)
|
|
529
538
|
self.retry_delay = max(0.0, retry_delay)
|
|
530
539
|
self.step_timeout = step_timeout
|
|
540
|
+
self._context_utility: Optional[ContextUtility] = None
|
|
541
|
+
self._context_summary_agent: Optional["ChatAgent"] = None
|
|
542
|
+
self.stream_accumulate = stream_accumulate
|
|
531
543
|
|
|
532
544
|
def reset(self):
|
|
533
545
|
r"""Resets the :obj:`ChatAgent` to its initial state."""
|
|
@@ -1034,6 +1046,163 @@ class ChatAgent(BaseAgent):
|
|
|
1034
1046
|
json_store.save(to_save)
|
|
1035
1047
|
logger.info(f"Memory saved to {path}")
|
|
1036
1048
|
|
|
1049
|
+
def summarize(
|
|
1050
|
+
self,
|
|
1051
|
+
filename: Optional[str] = None,
|
|
1052
|
+
summary_prompt: Optional[str] = None,
|
|
1053
|
+
working_directory: Optional[Union[str, Path]] = None,
|
|
1054
|
+
) -> Dict[str, Any]:
|
|
1055
|
+
r"""Summarize the agent's current conversation context and persist it
|
|
1056
|
+
to a markdown file.
|
|
1057
|
+
|
|
1058
|
+
Args:
|
|
1059
|
+
filename (Optional[str]): The base filename (without extension) to
|
|
1060
|
+
use for the markdown file. Defaults to a timestamped name when
|
|
1061
|
+
not provided.
|
|
1062
|
+
summary_prompt (Optional[str]): Custom prompt for the summarizer.
|
|
1063
|
+
When omitted, a default prompt highlighting key decisions,
|
|
1064
|
+
action items, and open questions is used.
|
|
1065
|
+
working_directory (Optional[str|Path]): Optional directory to save
|
|
1066
|
+
the markdown summary file. If provided, overrides the default
|
|
1067
|
+
directory used by ContextUtility.
|
|
1068
|
+
|
|
1069
|
+
Returns:
|
|
1070
|
+
Dict[str, Any]: A dictionary containing the summary text, file
|
|
1071
|
+
path, and status message.
|
|
1072
|
+
"""
|
|
1073
|
+
|
|
1074
|
+
result: Dict[str, Any] = {
|
|
1075
|
+
"summary": "",
|
|
1076
|
+
"file_path": None,
|
|
1077
|
+
"status": "",
|
|
1078
|
+
}
|
|
1079
|
+
|
|
1080
|
+
try:
|
|
1081
|
+
if self._context_utility is None:
|
|
1082
|
+
if working_directory is not None:
|
|
1083
|
+
self._context_utility = ContextUtility(
|
|
1084
|
+
working_directory=str(working_directory)
|
|
1085
|
+
)
|
|
1086
|
+
else:
|
|
1087
|
+
self._context_utility = ContextUtility()
|
|
1088
|
+
|
|
1089
|
+
# Get conversation directly from agent's memory
|
|
1090
|
+
messages, _ = self.memory.get_context()
|
|
1091
|
+
|
|
1092
|
+
if not messages:
|
|
1093
|
+
status_message = (
|
|
1094
|
+
"No conversation context available to summarize."
|
|
1095
|
+
)
|
|
1096
|
+
result["status"] = status_message
|
|
1097
|
+
return result
|
|
1098
|
+
|
|
1099
|
+
# Convert messages to conversation text
|
|
1100
|
+
conversation_lines = []
|
|
1101
|
+
for message in messages:
|
|
1102
|
+
role = message.get('role', 'unknown')
|
|
1103
|
+
content = message.get('content', '')
|
|
1104
|
+
if content:
|
|
1105
|
+
conversation_lines.append(f"{role}: {content}")
|
|
1106
|
+
|
|
1107
|
+
conversation_text = "\n".join(conversation_lines).strip()
|
|
1108
|
+
|
|
1109
|
+
if not conversation_text:
|
|
1110
|
+
status_message = (
|
|
1111
|
+
"Conversation context is empty; skipping summary."
|
|
1112
|
+
)
|
|
1113
|
+
result["status"] = status_message
|
|
1114
|
+
return result
|
|
1115
|
+
|
|
1116
|
+
if self._context_summary_agent is None:
|
|
1117
|
+
self._context_summary_agent = ChatAgent(
|
|
1118
|
+
system_message=(
|
|
1119
|
+
"You are a helpful assistant that summarizes "
|
|
1120
|
+
"conversations into concise markdown bullet lists."
|
|
1121
|
+
),
|
|
1122
|
+
model=self.model_backend,
|
|
1123
|
+
agent_id=f"{self.agent_id}_context_summarizer",
|
|
1124
|
+
)
|
|
1125
|
+
else:
|
|
1126
|
+
self._context_summary_agent.reset()
|
|
1127
|
+
|
|
1128
|
+
if summary_prompt:
|
|
1129
|
+
prompt_text = (
|
|
1130
|
+
f"{summary_prompt.rstrip()}\n\n"
|
|
1131
|
+
f"Context information:\n{conversation_text}"
|
|
1132
|
+
)
|
|
1133
|
+
else:
|
|
1134
|
+
prompt_text = (
|
|
1135
|
+
"Summarize the context information in concise markdown "
|
|
1136
|
+
"bullet points highlighting key decisions, action items.\n"
|
|
1137
|
+
f"Context information:\n{conversation_text}"
|
|
1138
|
+
)
|
|
1139
|
+
|
|
1140
|
+
try:
|
|
1141
|
+
response = self._context_summary_agent.step(prompt_text)
|
|
1142
|
+
except Exception as step_exc:
|
|
1143
|
+
error_message = (
|
|
1144
|
+
f"Failed to generate summary using model: {step_exc}"
|
|
1145
|
+
)
|
|
1146
|
+
logger.error(error_message)
|
|
1147
|
+
result["status"] = error_message
|
|
1148
|
+
return result
|
|
1149
|
+
|
|
1150
|
+
if not response.msgs:
|
|
1151
|
+
status_message = (
|
|
1152
|
+
"Failed to generate summary from model response."
|
|
1153
|
+
)
|
|
1154
|
+
result["status"] = status_message
|
|
1155
|
+
return result
|
|
1156
|
+
|
|
1157
|
+
summary_content = response.msgs[-1].content.strip()
|
|
1158
|
+
if not summary_content:
|
|
1159
|
+
status_message = "Generated summary is empty."
|
|
1160
|
+
result["status"] = status_message
|
|
1161
|
+
return result
|
|
1162
|
+
|
|
1163
|
+
base_filename = (
|
|
1164
|
+
filename
|
|
1165
|
+
if filename
|
|
1166
|
+
else f"context_summary_{datetime.now().strftime('%Y%m%d_%H%M%S')}" # noqa: E501
|
|
1167
|
+
)
|
|
1168
|
+
base_filename = Path(base_filename).with_suffix("").name
|
|
1169
|
+
|
|
1170
|
+
metadata = self._context_utility.get_session_metadata()
|
|
1171
|
+
metadata.update(
|
|
1172
|
+
{
|
|
1173
|
+
"agent_id": self.agent_id,
|
|
1174
|
+
"message_count": len(messages),
|
|
1175
|
+
}
|
|
1176
|
+
)
|
|
1177
|
+
|
|
1178
|
+
save_status = self._context_utility.save_markdown_file(
|
|
1179
|
+
base_filename,
|
|
1180
|
+
summary_content,
|
|
1181
|
+
title="Conversation Summary",
|
|
1182
|
+
metadata=metadata,
|
|
1183
|
+
)
|
|
1184
|
+
|
|
1185
|
+
file_path = (
|
|
1186
|
+
self._context_utility.get_working_directory()
|
|
1187
|
+
/ f"{base_filename}.md"
|
|
1188
|
+
)
|
|
1189
|
+
|
|
1190
|
+
result.update(
|
|
1191
|
+
{
|
|
1192
|
+
"summary": summary_content,
|
|
1193
|
+
"file_path": str(file_path),
|
|
1194
|
+
"status": save_status,
|
|
1195
|
+
}
|
|
1196
|
+
)
|
|
1197
|
+
logger.info("Conversation summary saved to %s", file_path)
|
|
1198
|
+
return result
|
|
1199
|
+
|
|
1200
|
+
except Exception as exc:
|
|
1201
|
+
error_message = f"Failed to summarize conversation context: {exc}"
|
|
1202
|
+
logger.error(error_message)
|
|
1203
|
+
result["status"] = error_message
|
|
1204
|
+
return result
|
|
1205
|
+
|
|
1037
1206
|
def clear_memory(self) -> None:
|
|
1038
1207
|
r"""Clear the agent's memory and reset to initial state.
|
|
1039
1208
|
|
|
@@ -1239,6 +1408,35 @@ class ChatAgent(BaseAgent):
|
|
|
1239
1408
|
# and True to indicate we used prompt formatting
|
|
1240
1409
|
return modified_message, None, True
|
|
1241
1410
|
|
|
1411
|
+
def _is_called_from_registered_toolkit(self) -> bool:
|
|
1412
|
+
r"""Check if current step/astep call originates from a
|
|
1413
|
+
RegisteredAgentToolkit.
|
|
1414
|
+
|
|
1415
|
+
This method uses stack inspection to detect if the current call
|
|
1416
|
+
is originating from a toolkit that inherits from
|
|
1417
|
+
RegisteredAgentToolkit. When detected, tools should be disabled to
|
|
1418
|
+
prevent recursive calls.
|
|
1419
|
+
|
|
1420
|
+
Returns:
|
|
1421
|
+
bool: True if called from a RegisteredAgentToolkit, False otherwise
|
|
1422
|
+
"""
|
|
1423
|
+
import inspect
|
|
1424
|
+
|
|
1425
|
+
from camel.toolkits.base import RegisteredAgentToolkit
|
|
1426
|
+
|
|
1427
|
+
try:
|
|
1428
|
+
for frame_info in inspect.stack():
|
|
1429
|
+
frame_locals = frame_info.frame.f_locals
|
|
1430
|
+
if 'self' in frame_locals:
|
|
1431
|
+
caller_self = frame_locals['self']
|
|
1432
|
+
if isinstance(caller_self, RegisteredAgentToolkit):
|
|
1433
|
+
return True
|
|
1434
|
+
|
|
1435
|
+
except Exception:
|
|
1436
|
+
return False
|
|
1437
|
+
|
|
1438
|
+
return False
|
|
1439
|
+
|
|
1242
1440
|
def _apply_prompt_based_parsing(
|
|
1243
1441
|
self,
|
|
1244
1442
|
response: ModelResponse,
|
|
@@ -1432,6 +1630,10 @@ class ChatAgent(BaseAgent):
|
|
|
1432
1630
|
except ImportError:
|
|
1433
1631
|
pass # Langfuse not available
|
|
1434
1632
|
|
|
1633
|
+
# Check if this call is from a RegisteredAgentToolkit to prevent tool
|
|
1634
|
+
# use
|
|
1635
|
+
disable_tools = self._is_called_from_registered_toolkit()
|
|
1636
|
+
|
|
1435
1637
|
# Handle response format compatibility with non-strict tools
|
|
1436
1638
|
original_response_format = response_format
|
|
1437
1639
|
input_message, response_format, used_prompt_formatting = (
|
|
@@ -1479,7 +1681,9 @@ class ChatAgent(BaseAgent):
|
|
|
1479
1681
|
num_tokens=num_tokens,
|
|
1480
1682
|
current_iteration=iteration_count,
|
|
1481
1683
|
response_format=response_format,
|
|
1482
|
-
tool_schemas=
|
|
1684
|
+
tool_schemas=[]
|
|
1685
|
+
if disable_tools
|
|
1686
|
+
else self._get_full_tool_schemas(),
|
|
1483
1687
|
prev_num_openai_messages=prev_num_openai_messages,
|
|
1484
1688
|
)
|
|
1485
1689
|
prev_num_openai_messages = len(openai_messages)
|
|
@@ -1644,6 +1848,10 @@ class ChatAgent(BaseAgent):
|
|
|
1644
1848
|
except ImportError:
|
|
1645
1849
|
pass # Langfuse not available
|
|
1646
1850
|
|
|
1851
|
+
# Check if this call is from a RegisteredAgentToolkit to prevent tool
|
|
1852
|
+
# use
|
|
1853
|
+
disable_tools = self._is_called_from_registered_toolkit()
|
|
1854
|
+
|
|
1647
1855
|
# Handle response format compatibility with non-strict tools
|
|
1648
1856
|
original_response_format = response_format
|
|
1649
1857
|
input_message, response_format, used_prompt_formatting = (
|
|
@@ -1679,13 +1887,14 @@ class ChatAgent(BaseAgent):
|
|
|
1679
1887
|
return self._step_terminate(
|
|
1680
1888
|
e.args[1], tool_call_records, "max_tokens_exceeded"
|
|
1681
1889
|
)
|
|
1682
|
-
|
|
1683
1890
|
response = await self._aget_model_response(
|
|
1684
1891
|
openai_messages,
|
|
1685
1892
|
num_tokens=num_tokens,
|
|
1686
1893
|
current_iteration=iteration_count,
|
|
1687
1894
|
response_format=response_format,
|
|
1688
|
-
tool_schemas=
|
|
1895
|
+
tool_schemas=[]
|
|
1896
|
+
if disable_tools
|
|
1897
|
+
else self._get_full_tool_schemas(),
|
|
1689
1898
|
prev_num_openai_messages=prev_num_openai_messages,
|
|
1690
1899
|
)
|
|
1691
1900
|
prev_num_openai_messages = len(openai_messages)
|
|
@@ -3668,15 +3877,18 @@ class ChatAgent(BaseAgent):
|
|
|
3668
3877
|
) -> ChatAgentResponse:
|
|
3669
3878
|
r"""Create a streaming response using content accumulator."""
|
|
3670
3879
|
|
|
3671
|
-
# Add new content
|
|
3880
|
+
# Add new content; only build full content when needed
|
|
3672
3881
|
accumulator.add_streaming_content(new_content)
|
|
3673
|
-
|
|
3882
|
+
if self.stream_accumulate:
|
|
3883
|
+
message_content = accumulator.get_full_content()
|
|
3884
|
+
else:
|
|
3885
|
+
message_content = new_content
|
|
3674
3886
|
|
|
3675
3887
|
message = BaseMessage(
|
|
3676
3888
|
role_name=self.role_name,
|
|
3677
3889
|
role_type=self.role_type,
|
|
3678
3890
|
meta_dict={},
|
|
3679
|
-
content=
|
|
3891
|
+
content=message_content,
|
|
3680
3892
|
)
|
|
3681
3893
|
|
|
3682
3894
|
return ChatAgentResponse(
|
|
@@ -3686,7 +3898,7 @@ class ChatAgent(BaseAgent):
|
|
|
3686
3898
|
"id": response_id,
|
|
3687
3899
|
"usage": step_token_usage.copy(),
|
|
3688
3900
|
"finish_reasons": ["streaming"],
|
|
3689
|
-
"num_tokens": self._get_token_count(
|
|
3901
|
+
"num_tokens": self._get_token_count(message_content),
|
|
3690
3902
|
"tool_calls": tool_call_records or [],
|
|
3691
3903
|
"external_tool_requests": None,
|
|
3692
3904
|
"streaming": True,
|
|
@@ -3759,7 +3971,7 @@ class ChatAgent(BaseAgent):
|
|
|
3759
3971
|
self.memory.get_context_creator(), "token_limit", None
|
|
3760
3972
|
),
|
|
3761
3973
|
output_language=self._output_language,
|
|
3762
|
-
tools=cloned_tools,
|
|
3974
|
+
tools=cast(List[Union[FunctionTool, Callable]], cloned_tools),
|
|
3763
3975
|
toolkits_to_register_agent=toolkits_to_register,
|
|
3764
3976
|
external_tools=[
|
|
3765
3977
|
schema for schema in self._external_tool_schemas.values()
|
|
@@ -3773,6 +3985,7 @@ class ChatAgent(BaseAgent):
|
|
|
3773
3985
|
tool_execution_timeout=self.tool_execution_timeout,
|
|
3774
3986
|
pause_event=self.pause_event,
|
|
3775
3987
|
prune_tool_calls_from_memory=self.prune_tool_calls_from_memory,
|
|
3988
|
+
stream_accumulate=self.stream_accumulate,
|
|
3776
3989
|
)
|
|
3777
3990
|
|
|
3778
3991
|
# Copy memory if requested
|
|
@@ -3787,9 +4000,7 @@ class ChatAgent(BaseAgent):
|
|
|
3787
4000
|
|
|
3788
4001
|
def _clone_tools(
|
|
3789
4002
|
self,
|
|
3790
|
-
) -> Tuple[
|
|
3791
|
-
List[Union[FunctionTool, Callable]], List[RegisteredAgentToolkit]
|
|
3792
|
-
]:
|
|
4003
|
+
) -> Tuple[List[FunctionTool], List[RegisteredAgentToolkit]]:
|
|
3793
4004
|
r"""Clone tools and return toolkits that need agent registration.
|
|
3794
4005
|
|
|
3795
4006
|
This method handles stateful toolkits by cloning them if they have
|
|
@@ -3841,18 +4052,62 @@ class ChatAgent(BaseAgent):
|
|
|
3841
4052
|
# Toolkit doesn't support cloning, use original
|
|
3842
4053
|
cloned_toolkits[toolkit_id] = toolkit_instance
|
|
3843
4054
|
|
|
4055
|
+
if getattr(
|
|
4056
|
+
tool.func, "__message_integration_enhanced__", False
|
|
4057
|
+
):
|
|
4058
|
+
cloned_tools.append(
|
|
4059
|
+
FunctionTool(
|
|
4060
|
+
func=tool.func,
|
|
4061
|
+
openai_tool_schema=tool.get_openai_tool_schema(),
|
|
4062
|
+
)
|
|
4063
|
+
)
|
|
4064
|
+
continue
|
|
4065
|
+
|
|
3844
4066
|
# Get the method from the cloned (or original) toolkit
|
|
3845
4067
|
toolkit = cloned_toolkits[toolkit_id]
|
|
3846
4068
|
method_name = tool.func.__name__
|
|
4069
|
+
|
|
3847
4070
|
if hasattr(toolkit, method_name):
|
|
3848
4071
|
new_method = getattr(toolkit, method_name)
|
|
3849
|
-
|
|
4072
|
+
# Wrap cloned method into a new FunctionTool,
|
|
4073
|
+
# preserving schema
|
|
4074
|
+
try:
|
|
4075
|
+
new_tool = FunctionTool(
|
|
4076
|
+
func=new_method,
|
|
4077
|
+
openai_tool_schema=tool.get_openai_tool_schema(),
|
|
4078
|
+
)
|
|
4079
|
+
cloned_tools.append(new_tool)
|
|
4080
|
+
except Exception as e:
|
|
4081
|
+
# If wrapping fails, fallback to wrapping the original
|
|
4082
|
+
# function with its schema to maintain consistency
|
|
4083
|
+
logger.warning(
|
|
4084
|
+
f"Failed to wrap cloned toolkit "
|
|
4085
|
+
f"method '{method_name}' "
|
|
4086
|
+
f"with FunctionTool: {e}. Using original "
|
|
4087
|
+
f"function with preserved schema instead."
|
|
4088
|
+
)
|
|
4089
|
+
cloned_tools.append(
|
|
4090
|
+
FunctionTool(
|
|
4091
|
+
func=tool.func,
|
|
4092
|
+
openai_tool_schema=tool.get_openai_tool_schema(),
|
|
4093
|
+
)
|
|
4094
|
+
)
|
|
3850
4095
|
else:
|
|
3851
|
-
# Fallback to original function
|
|
3852
|
-
cloned_tools.append(
|
|
4096
|
+
# Fallback to original function wrapped in FunctionTool
|
|
4097
|
+
cloned_tools.append(
|
|
4098
|
+
FunctionTool(
|
|
4099
|
+
func=tool.func,
|
|
4100
|
+
openai_tool_schema=tool.get_openai_tool_schema(),
|
|
4101
|
+
)
|
|
4102
|
+
)
|
|
3853
4103
|
else:
|
|
3854
|
-
# Not a toolkit method,
|
|
3855
|
-
cloned_tools.append(
|
|
4104
|
+
# Not a toolkit method, preserve FunctionTool schema directly
|
|
4105
|
+
cloned_tools.append(
|
|
4106
|
+
FunctionTool(
|
|
4107
|
+
func=tool.func,
|
|
4108
|
+
openai_tool_schema=tool.get_openai_tool_schema(),
|
|
4109
|
+
)
|
|
4110
|
+
)
|
|
3856
4111
|
|
|
3857
4112
|
return cloned_tools, toolkits_to_register
|
|
3858
4113
|
|
|
@@ -17,6 +17,7 @@ from .anthropic_config import ANTHROPIC_API_PARAMS, AnthropicConfig
|
|
|
17
17
|
from .base_config import BaseConfig
|
|
18
18
|
from .bedrock_config import BEDROCK_API_PARAMS, BedrockConfig
|
|
19
19
|
from .cohere_config import COHERE_API_PARAMS, CohereConfig
|
|
20
|
+
from .cometapi_config import COMETAPI_API_PARAMS, CometAPIConfig
|
|
20
21
|
from .crynux_config import CRYNUX_API_PARAMS, CrynuxConfig
|
|
21
22
|
from .deepseek_config import DEEPSEEK_API_PARAMS, DeepSeekConfig
|
|
22
23
|
from .gemini_config import Gemini_API_PARAMS, GeminiConfig
|
|
@@ -90,6 +91,8 @@ __all__ = [
|
|
|
90
91
|
'TOGETHERAI_API_PARAMS',
|
|
91
92
|
'CohereConfig',
|
|
92
93
|
'COHERE_API_PARAMS',
|
|
94
|
+
'CometAPIConfig',
|
|
95
|
+
'COMETAPI_API_PARAMS',
|
|
93
96
|
'YiConfig',
|
|
94
97
|
'YI_API_PARAMS',
|
|
95
98
|
'QwenConfig',
|