camel-ai 0.2.73a11__tar.gz → 0.2.74__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.73a11 → camel_ai-0.2.74}/PKG-INFO +37 -4
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/__init__.py +1 -1
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/interpreters/e2b_interpreter.py +34 -1
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/anthropic_model.py +5 -3
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/societies/workforce/prompts.py +3 -19
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/societies/workforce/workforce.py +13 -8
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit/config_loader.py +3 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit_ts.py +225 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit/ts/src/browser-session.ts +164 -8
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit/ts/src/config-loader.ts +2 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit/ts/src/hybrid-browser-toolkit.ts +106 -1
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit/ts/src/types.ts +19 -1
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit/ts/websocket-server.js +20 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit/ws_wrapper.py +41 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit_py/actions.py +158 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit_py/browser_session.py +55 -8
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit_py/config_loader.py +43 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit_py/hybrid_browser_toolkit.py +312 -3
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit_py/snapshot.py +10 -4
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit_py/unified_analyzer.js +45 -4
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/note_taking_toolkit.py +3 -4
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/search_toolkit.py +192 -59
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/terminal_toolkit.py +12 -2
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/types/enums.py +3 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/utils/token_counting.py +13 -2
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/pyproject.toml +38 -4
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/.gitignore +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/LICENSE +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/README.md +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/agents/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/agents/_types.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/agents/_utils.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/agents/base.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/agents/chat_agent.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/agents/critic_agent.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/agents/deductive_reasoner_agent.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/agents/embodied_agent.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/agents/knowledge_graph_agent.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/agents/mcp_agent.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/agents/multi_hop_generator_agent.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/agents/programmed_agent_instruction.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/agents/repo_agent.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/agents/role_assignment_agent.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/agents/search_agent.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/agents/task_agent.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/agents/tool_agents/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/agents/tool_agents/base.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/agents/tool_agents/hugging_face_tool_agent.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/benchmarks/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/benchmarks/apibank.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/benchmarks/apibench.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/benchmarks/base.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/benchmarks/browsecomp.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/benchmarks/gaia.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/benchmarks/mock_website/README.md +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/benchmarks/mock_website/mock_web.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/benchmarks/mock_website/requirements.txt +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/benchmarks/mock_website/shopping_mall/app.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/benchmarks/mock_website/task.json +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/benchmarks/nexus.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/benchmarks/ragbench.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/bots/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/bots/discord/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/bots/discord/discord_app.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/bots/discord/discord_installation.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/bots/discord/discord_store.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/bots/slack/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/bots/slack/models.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/bots/slack/slack_app.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/bots/telegram_bot.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/configs/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/configs/aiml_config.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/configs/anthropic_config.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/configs/base_config.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/configs/bedrock_config.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/configs/cohere_config.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/configs/crynux_config.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/configs/deepseek_config.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/configs/gemini_config.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/configs/groq_config.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/configs/internlm_config.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/configs/litellm_config.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/configs/lmstudio_config.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/configs/mistral_config.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/configs/modelscope_config.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/configs/moonshot_config.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/configs/netmind_config.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/configs/novita_config.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/configs/nvidia_config.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/configs/ollama_config.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/configs/openai_config.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/configs/openrouter_config.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/configs/ppio_config.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/configs/qianfan_config.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/configs/qwen_config.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/configs/reka_config.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/configs/samba_config.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/configs/sglang_config.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/configs/siliconflow_config.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/configs/togetherai_config.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/configs/vllm_config.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/configs/watsonx_config.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/configs/yi_config.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/configs/zhipuai_config.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/data_collectors/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/data_collectors/alpaca_collector.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/data_collectors/base.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/data_collectors/sharegpt_collector.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/datagen/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/datagen/cot_datagen.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/datagen/evol_instruct/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/datagen/evol_instruct/evol_instruct.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/datagen/evol_instruct/scorer.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/datagen/evol_instruct/templates.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/datagen/self_improving_cot.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/datagen/self_instruct/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/datagen/self_instruct/filter/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/datagen/self_instruct/filter/filter_function.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/datagen/self_instruct/filter/filter_registry.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/datagen/self_instruct/filter/instruction_filter.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/datagen/self_instruct/self_instruct.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/datagen/self_instruct/templates.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/datagen/source2synth/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/datagen/source2synth/data_processor.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/datagen/source2synth/models.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/datagen/source2synth/user_data_processor_config.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/datahubs/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/datahubs/base.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/datahubs/huggingface.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/datahubs/models.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/datasets/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/datasets/base_generator.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/datasets/few_shot_generator.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/datasets/models.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/datasets/self_instruct_generator.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/datasets/static_dataset.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/embeddings/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/embeddings/azure_embedding.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/embeddings/base.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/embeddings/gemini_embedding.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/embeddings/jina_embedding.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/embeddings/mistral_embedding.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/embeddings/openai_compatible_embedding.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/embeddings/openai_embedding.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/embeddings/sentence_transformers_embeddings.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/embeddings/together_embedding.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/embeddings/vlm_embedding.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/environments/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/environments/models.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/environments/multi_step.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/environments/rlcards_env.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/environments/single_step.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/environments/tic_tac_toe.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/extractors/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/extractors/base.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/extractors/python_strategies.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/generators.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/human.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/interpreters/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/interpreters/base.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/interpreters/docker/Dockerfile +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/interpreters/docker_interpreter.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/interpreters/internal_python_interpreter.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/interpreters/interpreter_error.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/interpreters/ipython_interpreter.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/interpreters/subprocess_interpreter.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/loaders/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/loaders/apify_reader.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/loaders/base_io.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/loaders/base_loader.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/loaders/chunkr_reader.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/loaders/crawl4ai_reader.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/loaders/firecrawl_reader.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/loaders/jina_url_reader.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/loaders/markitdown.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/loaders/mineru_extractor.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/loaders/mistral_reader.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/loaders/pandas_reader.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/loaders/scrapegraph_reader.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/loaders/unstructured_io.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/logger.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/memories/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/memories/agent_memories.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/memories/base.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/memories/blocks/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/memories/blocks/chat_history_block.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/memories/blocks/vectordb_block.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/memories/context_creators/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/memories/context_creators/score_based.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/memories/records.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/messages/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/messages/base.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/messages/conversion/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/messages/conversion/alpaca.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/messages/conversion/conversation_models.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/messages/conversion/sharegpt/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/messages/conversion/sharegpt/function_call_formatter.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/messages/conversion/sharegpt/hermes/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/messages/conversion/sharegpt/hermes/hermes_function_formatter.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/messages/func_message.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/_utils.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/aiml_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/aws_bedrock_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/azure_openai_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/base_audio_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/base_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/cohere_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/crynux_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/deepseek_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/fish_audio_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/gemini_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/groq_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/internlm_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/litellm_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/lmstudio_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/mistral_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/model_factory.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/model_manager.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/modelscope_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/moonshot_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/nemotron_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/netmind_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/novita_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/nvidia_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/ollama_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/openai_audio_models.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/openai_compatible_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/openai_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/openrouter_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/ppio_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/qianfan_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/qwen_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/reka_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/reward/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/reward/base_reward_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/reward/evaluator.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/reward/nemotron_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/reward/skywork_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/samba_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/sglang_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/siliconflow_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/stub_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/togetherai_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/vllm_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/volcano_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/watsonx_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/yi_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/models/zhipuai_model.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/personas/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/personas/persona.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/personas/persona_hub.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/prompts/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/prompts/ai_society.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/prompts/base.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/prompts/code.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/prompts/evaluation.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/prompts/generate_text_embedding_data.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/prompts/image_craft.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/prompts/misalignment.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/prompts/multi_condition_image_craft.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/prompts/object_recognition.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/prompts/persona_hub.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/prompts/prompt_templates.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/prompts/role_description_prompt_template.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/prompts/solution_extraction.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/prompts/task_prompt_template.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/prompts/translation.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/prompts/video_description_prompt.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/py.typed +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/responses/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/responses/agent_responses.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/retrievers/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/retrievers/auto_retriever.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/retrievers/base.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/retrievers/bm25_retriever.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/retrievers/cohere_rerank_retriever.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/retrievers/hybrid_retrival.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/retrievers/vector_retriever.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/runtimes/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/runtimes/api.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/runtimes/base.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/runtimes/configs.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/runtimes/daytona_runtime.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/runtimes/docker_runtime.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/runtimes/llm_guard_runtime.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/runtimes/remote_http_runtime.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/runtimes/ubuntu_docker_runtime.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/runtimes/utils/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/runtimes/utils/function_risk_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/runtimes/utils/ignore_risk_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/schemas/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/schemas/base.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/schemas/openai_converter.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/schemas/outlines_converter.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/services/agent_openapi_server.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/societies/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/societies/babyagi_playing.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/societies/role_playing.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/societies/workforce/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/societies/workforce/base.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/societies/workforce/role_playing_worker.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/societies/workforce/single_agent_worker.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/societies/workforce/structured_output_handler.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/societies/workforce/task_channel.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/societies/workforce/utils.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/societies/workforce/worker.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/societies/workforce/workforce_logger.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/storages/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/storages/graph_storages/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/storages/graph_storages/base.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/storages/graph_storages/graph_element.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/storages/graph_storages/nebula_graph.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/storages/graph_storages/neo4j_graph.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/storages/key_value_storages/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/storages/key_value_storages/base.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/storages/key_value_storages/in_memory.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/storages/key_value_storages/json.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/storages/key_value_storages/mem0_cloud.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/storages/key_value_storages/redis.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/storages/object_storages/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/storages/object_storages/amazon_s3.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/storages/object_storages/azure_blob.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/storages/object_storages/base.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/storages/object_storages/google_cloud.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/storages/vectordb_storages/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/storages/vectordb_storages/base.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/storages/vectordb_storages/chroma.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/storages/vectordb_storages/faiss.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/storages/vectordb_storages/milvus.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/storages/vectordb_storages/oceanbase.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/storages/vectordb_storages/pgvector.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/storages/vectordb_storages/qdrant.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/storages/vectordb_storages/surreal.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/storages/vectordb_storages/tidb.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/storages/vectordb_storages/weaviate.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/tasks/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/tasks/task.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/tasks/task_prompt.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/terminators/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/terminators/base.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/terminators/response_terminator.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/terminators/token_limit_terminator.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/aci_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/arxiv_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/ask_news_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/async_browser_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/audio_analysis_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/base.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/bohrium_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/browser_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/browser_toolkit_commons.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/code_execution.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/craw4ai_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/dappier_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/data_commons_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/edgeone_pages_mcp_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/excel_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/file_write_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/function_tool.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/github_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/google_calendar_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/google_drive_mcp_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/google_maps_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/google_scholar_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/human_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit/ts/package-lock.json +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit/ts/package.json +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit/ts/src/browser-scripts.js +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit/ts/src/index.ts +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit/ts/tsconfig.json +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit_py/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit_py/agent.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit_py/stealth_script.js +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/image_analysis_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/jina_reranker_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/klavis_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/linkedin_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/markitdown_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/math_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/mcp_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/memory_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/meshy_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/message_agent_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/message_integration.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/mineru_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/networkx_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/notion_mcp_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/notion_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/biztoc/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/biztoc/ai-plugin.json +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/biztoc/openapi.yaml +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/coursera/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/coursera/openapi.yaml +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/create_qr_code/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/create_qr_code/openapi.yaml +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/klarna/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/klarna/openapi.yaml +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/nasa_apod/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/nasa_apod/openapi.yaml +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/outschool/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/outschool/ai-plugin.json +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/outschool/openapi.yaml +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/outschool/paths/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/outschool/paths/get_classes.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/outschool/paths/search_teachers.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/security_config.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/speak/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/speak/openapi.yaml +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/web_scraper/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/web_scraper/ai-plugin.json +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/web_scraper/openapi.yaml +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/web_scraper/paths/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/web_scraper/paths/scraper.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/open_api_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/openai_agent_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/openai_image_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/openbb_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/origene_mcp_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/page_script.js +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/playwright_mcp_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/pptx_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/pubmed_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/pulse_mcp_search_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/pyautogui_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/reddit_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/retrieval_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/screenshot_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/searxng_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/semantic_scholar_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/slack_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/stripe_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/sympy_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/task_planning_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/thinking_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/twitter_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/video_analysis_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/video_download_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/weather_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/web_deploy_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/whatsapp_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/wolfram_alpha_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/zapier_toolkit.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/types/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/types/agents/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/types/agents/tool_calling_record.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/types/mcp_registries.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/types/openai_types.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/types/unified_model_type.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/utils/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/utils/async_func.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/utils/chunker/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/utils/chunker/base.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/utils/chunker/code_chunker.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/utils/chunker/uio_chunker.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/utils/commons.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/utils/constants.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/utils/deduplication.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/utils/filename.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/utils/langfuse.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/utils/mcp.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/utils/mcp_client.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/utils/message_summarizer.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/utils/response_format.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/utils/tool_result.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/verifiers/__init__.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/verifiers/base.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/verifiers/math_verifier.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/verifiers/models.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/verifiers/physics_verifier.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/verifiers/python_verifier.py +0 -0
- {camel_ai-0.2.73a11 → camel_ai-0.2.74}/hatch_build_npm.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: camel-ai
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.74
|
|
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
|
|
@@ -79,7 +79,6 @@ Requires-Dist: mypy<2,>=1.5.1; extra == 'all'
|
|
|
79
79
|
Requires-Dist: nebula3-python==3.8.2; extra == 'all'
|
|
80
80
|
Requires-Dist: neo4j<6,>=5.18.0; extra == 'all'
|
|
81
81
|
Requires-Dist: networkx<4,>=3.4.2; extra == 'all'
|
|
82
|
-
Requires-Dist: newspaper3k<0.3,>=0.2.8; extra == 'all'
|
|
83
82
|
Requires-Dist: notion-client<3,>=2.2.1; extra == 'all'
|
|
84
83
|
Requires-Dist: numpy<=2.2,>=1.2; extra == 'all'
|
|
85
84
|
Requires-Dist: onnxruntime<=1.19.2; extra == 'all'
|
|
@@ -225,6 +224,42 @@ Requires-Dist: reportlab>=4.4.2; extra == 'document-tools'
|
|
|
225
224
|
Requires-Dist: tabulate>=0.9.0; extra == 'document-tools'
|
|
226
225
|
Requires-Dist: unstructured==0.16.20; extra == 'document-tools'
|
|
227
226
|
Requires-Dist: xls2xlsx>=0.2.0; extra == 'document-tools'
|
|
227
|
+
Provides-Extra: eigent
|
|
228
|
+
Requires-Dist: aci-sdk>=1.0.0b1; extra == 'eigent'
|
|
229
|
+
Requires-Dist: anthropic<0.50.0,>=0.47.0; extra == 'eigent'
|
|
230
|
+
Requires-Dist: chunkr-ai>=0.0.41; extra == 'eigent'
|
|
231
|
+
Requires-Dist: chunkr-ai>=0.0.50; extra == 'eigent'
|
|
232
|
+
Requires-Dist: crawl4ai>=0.3.745; extra == 'eigent'
|
|
233
|
+
Requires-Dist: datasets<4,>=3; extra == 'eigent'
|
|
234
|
+
Requires-Dist: docx>=0.2.4; extra == 'eigent'
|
|
235
|
+
Requires-Dist: duckduckgo-search<7,>=6.3.5; extra == 'eigent'
|
|
236
|
+
Requires-Dist: exa-py<2,>=1.10.0; extra == 'eigent'
|
|
237
|
+
Requires-Dist: ffmpeg-python<0.3,>=0.2.0; extra == 'eigent'
|
|
238
|
+
Requires-Dist: html2text>=2024.2.26; extra == 'eigent'
|
|
239
|
+
Requires-Dist: imageio[pyav]<3,>=2.34.2; extra == 'eigent'
|
|
240
|
+
Requires-Dist: markitdown[all]>=0.1.1; extra == 'eigent'
|
|
241
|
+
Requires-Dist: mcp-server-fetch==2025.1.17; extra == 'eigent'
|
|
242
|
+
Requires-Dist: mcp-simple-arxiv==0.2.2; extra == 'eigent'
|
|
243
|
+
Requires-Dist: numpy<=2.2,>=1.2; extra == 'eigent'
|
|
244
|
+
Requires-Dist: onnxruntime<=1.19.2; extra == 'eigent'
|
|
245
|
+
Requires-Dist: openpyxl>=3.1.5; extra == 'eigent'
|
|
246
|
+
Requires-Dist: pandas<2,>=1.5.3; extra == 'eigent'
|
|
247
|
+
Requires-Dist: playwright>=1.50.0; extra == 'eigent'
|
|
248
|
+
Requires-Dist: pyautogui<0.10,>=0.9.54; extra == 'eigent'
|
|
249
|
+
Requires-Dist: pydub<0.26,>=0.25.1; extra == 'eigent'
|
|
250
|
+
Requires-Dist: pylatex>=1.4.2; extra == 'eigent'
|
|
251
|
+
Requires-Dist: pytesseract>=0.3.13; extra == 'eigent'
|
|
252
|
+
Requires-Dist: python-dotenv<2,>=1.0.0; extra == 'eigent'
|
|
253
|
+
Requires-Dist: python-pptx>=1.0.2; extra == 'eigent'
|
|
254
|
+
Requires-Dist: reportlab>=4.4.2; extra == 'eigent'
|
|
255
|
+
Requires-Dist: requests-oauthlib<2,>=1.3.1; extra == 'eigent'
|
|
256
|
+
Requires-Dist: scenedetect>=0.6.5.2; extra == 'eigent'
|
|
257
|
+
Requires-Dist: slack-sdk<4,>=3.27.2; extra == 'eigent'
|
|
258
|
+
Requires-Dist: tabulate>=0.9.0; extra == 'eigent'
|
|
259
|
+
Requires-Dist: websockets<15.1,>=13.0; extra == 'eigent'
|
|
260
|
+
Requires-Dist: wikipedia<2,>=1; extra == 'eigent'
|
|
261
|
+
Requires-Dist: xls2xlsx>=0.2.0; extra == 'eigent'
|
|
262
|
+
Requires-Dist: yt-dlp<2025,>=2024.11.4; extra == 'eigent'
|
|
228
263
|
Provides-Extra: huggingface
|
|
229
264
|
Requires-Dist: datasets<4,>=3; extra == 'huggingface'
|
|
230
265
|
Requires-Dist: diffusers<0.26,>=0.25.0; extra == 'huggingface'
|
|
@@ -266,7 +301,6 @@ Requires-Dist: imageio[pyav]<3,>=2.34.2; extra == 'owl'
|
|
|
266
301
|
Requires-Dist: markitdown>=0.1.1; extra == 'owl'
|
|
267
302
|
Requires-Dist: mcp-server-fetch==2025.1.17; extra == 'owl'
|
|
268
303
|
Requires-Dist: mcp-simple-arxiv==0.2.2; extra == 'owl'
|
|
269
|
-
Requires-Dist: newspaper3k<0.3,>=0.2.8; extra == 'owl'
|
|
270
304
|
Requires-Dist: numpy<=2.2,>=1.2; extra == 'owl'
|
|
271
305
|
Requires-Dist: onnxruntime<=1.19.2; extra == 'owl'
|
|
272
306
|
Requires-Dist: openapi-spec-validator<0.8,>=0.7.1; extra == 'owl'
|
|
@@ -353,7 +387,6 @@ Requires-Dist: google-auth-oauthlib==1.2.1; extra == 'web-tools'
|
|
|
353
387
|
Requires-Dist: googlemaps<5,>=4.10.0; extra == 'web-tools'
|
|
354
388
|
Requires-Dist: html2text>=2024.2.26; extra == 'web-tools'
|
|
355
389
|
Requires-Dist: linkup-sdk<0.3,>=0.2.1; extra == 'web-tools'
|
|
356
|
-
Requires-Dist: newspaper3k<0.3,>=0.2.8; extra == 'web-tools'
|
|
357
390
|
Requires-Dist: playwright>=1.50.0; extra == 'web-tools'
|
|
358
391
|
Requires-Dist: pyowm<4,>=3.3.0; extra == 'web-tools'
|
|
359
392
|
Requires-Dist: requests-oauthlib<2,>=1.3.1; extra == 'web-tools'
|
|
@@ -28,6 +28,11 @@ class E2BInterpreter(BaseInterpreter):
|
|
|
28
28
|
Args:
|
|
29
29
|
require_confirm (bool, optional): If True, prompt user before running
|
|
30
30
|
code strings for security. (default: :obj:`True`)
|
|
31
|
+
|
|
32
|
+
Environment Variables:
|
|
33
|
+
E2B_API_KEY: The API key for authenticating with the E2B service.
|
|
34
|
+
E2B_DOMAIN: The base URL for the E2B API. If not provided,
|
|
35
|
+
will use the default E2B endpoint.
|
|
31
36
|
"""
|
|
32
37
|
|
|
33
38
|
_CODE_TYPE_MAPPING: ClassVar[Dict[str, Optional[str]]] = {
|
|
@@ -55,7 +60,35 @@ class E2BInterpreter(BaseInterpreter):
|
|
|
55
60
|
from e2b_code_interpreter import Sandbox
|
|
56
61
|
|
|
57
62
|
self.require_confirm = require_confirm
|
|
58
|
-
|
|
63
|
+
|
|
64
|
+
# Get API key from environment variable
|
|
65
|
+
api_key = os.environ.get("E2B_API_KEY")
|
|
66
|
+
|
|
67
|
+
# Get domain from environment variable
|
|
68
|
+
domain = os.environ.get("E2B_DOMAIN")
|
|
69
|
+
|
|
70
|
+
# Create sandbox with appropriate parameters
|
|
71
|
+
sandbox_kwargs = {"api_key": api_key}
|
|
72
|
+
|
|
73
|
+
# Only add domain if it's provided
|
|
74
|
+
# (to maintain compatibility with standard E2B)
|
|
75
|
+
if domain:
|
|
76
|
+
sandbox_kwargs["domain"] = domain
|
|
77
|
+
logger.info(f"Using custom E2B endpoint: {domain}")
|
|
78
|
+
|
|
79
|
+
try:
|
|
80
|
+
self._sandbox = Sandbox(**sandbox_kwargs)
|
|
81
|
+
except TypeError as e:
|
|
82
|
+
if domain and "domain" in str(e):
|
|
83
|
+
logger.warning(
|
|
84
|
+
f"The e2b_code_interpreter library doesn't support "
|
|
85
|
+
f"custom domain. "
|
|
86
|
+
f"Using default E2B endpoint. Error: {e}"
|
|
87
|
+
)
|
|
88
|
+
# Fallback to default configuration without domain
|
|
89
|
+
self._sandbox = Sandbox(api_key=api_key)
|
|
90
|
+
else:
|
|
91
|
+
raise e
|
|
59
92
|
|
|
60
93
|
def __del__(self) -> None:
|
|
61
94
|
r"""Destructor for the E2BInterpreter class.
|
|
@@ -21,8 +21,8 @@ from camel.messages import OpenAIMessage
|
|
|
21
21
|
from camel.models.openai_compatible_model import OpenAICompatibleModel
|
|
22
22
|
from camel.types import ChatCompletion, ChatCompletionChunk, ModelType
|
|
23
23
|
from camel.utils import (
|
|
24
|
-
AnthropicTokenCounter,
|
|
25
24
|
BaseTokenCounter,
|
|
25
|
+
OpenAITokenCounter,
|
|
26
26
|
api_keys_required,
|
|
27
27
|
dependencies_required,
|
|
28
28
|
)
|
|
@@ -141,11 +141,13 @@ class AnthropicModel(OpenAICompatibleModel):
|
|
|
141
141
|
r"""Initialize the token counter for the model backend.
|
|
142
142
|
|
|
143
143
|
Returns:
|
|
144
|
-
|
|
144
|
+
OpenAITokenCounter: The token counter following the model's
|
|
145
145
|
tokenization style.
|
|
146
146
|
"""
|
|
147
|
+
# TODO: use anthropic token counter
|
|
148
|
+
|
|
147
149
|
if not self._token_counter:
|
|
148
|
-
self._token_counter =
|
|
150
|
+
self._token_counter = OpenAITokenCounter(ModelType.GPT_4O_MINI)
|
|
149
151
|
return self._token_counter
|
|
150
152
|
|
|
151
153
|
def check_model_config(self):
|
|
@@ -198,10 +198,9 @@ Now you should summarize the scenario and return the result of the task.
|
|
|
198
198
|
|
|
199
199
|
TASK_DECOMPOSE_PROMPT = r"""You need to either decompose a complex task or enhance a simple one, following these important principles to maximize efficiency and clarity for the executing agents:
|
|
200
200
|
|
|
201
|
-
0. **
|
|
202
|
-
* **If the task is
|
|
203
|
-
*
|
|
204
|
-
* **Only decompose if a task is truly complex**: A task is complex if it involves multiple distinct steps, requires different worker skills, or can be significantly sped up by running parts in parallel.
|
|
201
|
+
0. **Analyze Task Complexity**: First, evaluate if the task is a single, straightforward action or a complex one.
|
|
202
|
+
* **If the task is complex or could be decomposed into multiple subtasks run in parallel, decompose it.** A task is considered complex if it involves multiple distinct steps, requires different skills, or can be significantly sped up by running parts in parallel.
|
|
203
|
+
* **If the task is simple, do not decompose it.** Instead, **rewrite and enhance** it to produce a high-quality task with a clear, specific deliverable.
|
|
205
204
|
|
|
206
205
|
1. **Self-Contained Subtasks** (if decomposing): This is critical principle. Each subtask's description **must be fully self-sufficient and independently understandable**. The agent executing the subtask has **no knowledge** of the parent task, other subtasks, or the overall workflow.
|
|
207
206
|
* **DO NOT** use relative references like "the first task," "the paper mentioned above," or "the result from the previous step."
|
|
@@ -230,21 +229,6 @@ These principles aim to reduce overall completion time by maximizing concurrent
|
|
|
230
229
|
|
|
231
230
|
**EXAMPLE FORMAT ONLY** (DO NOT use this example content for actual task decomposition):
|
|
232
231
|
|
|
233
|
-
***
|
|
234
|
-
**Example 0: Simple Task (Enhance, Don't Decompose)**
|
|
235
|
-
|
|
236
|
-
* **Overall Task**: "Generate a report about camel-ai"
|
|
237
|
-
* **Available Workers**:
|
|
238
|
-
* `DocumentAgent`: A worker that can read documents and write summaries.
|
|
239
|
-
* **Correct Output**:
|
|
240
|
-
```xml
|
|
241
|
-
<tasks>
|
|
242
|
-
<task>Generate a comprehensive, well-structured report about camel-ai as one HTML file</task>
|
|
243
|
-
</tasks>
|
|
244
|
-
```
|
|
245
|
-
* **Reasoning**: The original task is simple but its details are vague. It is **enhanced** by consolidating all given details (output format, content focus) into a single, precise, and self-contained instruction. This follows the "Enhance Simple Tasks" principle and does not invent new information.
|
|
246
|
-
***
|
|
247
|
-
|
|
248
232
|
***
|
|
249
233
|
**Example 1: Sequential Task for a Single Worker**
|
|
250
234
|
|
|
@@ -84,7 +84,7 @@ logger = get_logger(__name__)
|
|
|
84
84
|
# Constants for configuration values
|
|
85
85
|
MAX_TASK_RETRIES = 3
|
|
86
86
|
MAX_PENDING_TASKS_LIMIT = 20
|
|
87
|
-
TASK_TIMEOUT_SECONDS =
|
|
87
|
+
TASK_TIMEOUT_SECONDS = 480.0
|
|
88
88
|
DEFAULT_WORKER_POOL_SIZE = 10
|
|
89
89
|
|
|
90
90
|
|
|
@@ -163,6 +163,11 @@ class Workforce(BaseNode):
|
|
|
163
163
|
for graceful shutdown when a task fails 3 times. During this
|
|
164
164
|
period, the workforce remains active for debugging.
|
|
165
165
|
Set to 0 for immediate shutdown. (default: :obj:`15.0`)
|
|
166
|
+
task_timeout_seconds (Optional[float], optional): The timeout in
|
|
167
|
+
seconds for waiting for tasks to be returned by workers. If None,
|
|
168
|
+
uses the global TASK_TIMEOUT_SECONDS value (600.0 seconds).
|
|
169
|
+
Increase this value for tasks that require more processing time.
|
|
170
|
+
(default: :obj:`None`)
|
|
166
171
|
share_memory (bool, optional): Whether to enable shared memory across
|
|
167
172
|
SingleAgentWorker instances in the workforce. When enabled, all
|
|
168
173
|
SingleAgentWorker instances, coordinator agent, and task planning
|
|
@@ -231,6 +236,7 @@ class Workforce(BaseNode):
|
|
|
231
236
|
graceful_shutdown_timeout: float = 15.0,
|
|
232
237
|
share_memory: bool = False,
|
|
233
238
|
use_structured_output_handler: bool = True,
|
|
239
|
+
task_timeout_seconds: Optional[float] = None,
|
|
234
240
|
) -> None:
|
|
235
241
|
super().__init__(description)
|
|
236
242
|
self._child_listening_tasks: Deque[
|
|
@@ -241,6 +247,9 @@ class Workforce(BaseNode):
|
|
|
241
247
|
self.graceful_shutdown_timeout = graceful_shutdown_timeout
|
|
242
248
|
self.share_memory = share_memory
|
|
243
249
|
self.use_structured_output_handler = use_structured_output_handler
|
|
250
|
+
self.task_timeout_seconds = (
|
|
251
|
+
task_timeout_seconds or TASK_TIMEOUT_SECONDS
|
|
252
|
+
)
|
|
244
253
|
if self.use_structured_output_handler:
|
|
245
254
|
self.structured_handler = StructuredOutputHandler()
|
|
246
255
|
self.metrics_logger = WorkforceLogger(workforce_id=self.node_id)
|
|
@@ -343,12 +352,7 @@ class Workforce(BaseNode):
|
|
|
343
352
|
# Set up task agent with default system message and required tools
|
|
344
353
|
task_sys_msg = BaseMessage.make_assistant_message(
|
|
345
354
|
role_name="Task Planner",
|
|
346
|
-
content="You are going to
|
|
347
|
-
"tasks that are sequential and require the same type of "
|
|
348
|
-
"agent together in one agent process. Only decompose tasks "
|
|
349
|
-
"that can be handled in parallel and require different types "
|
|
350
|
-
"of agents. This ensures efficient execution by minimizing "
|
|
351
|
-
"context switching between agents.",
|
|
355
|
+
content="You are going to handle tasks.",
|
|
352
356
|
)
|
|
353
357
|
task_planning_tools = TaskPlanningToolkit().get_tools()
|
|
354
358
|
|
|
@@ -2311,7 +2315,7 @@ class Workforce(BaseNode):
|
|
|
2311
2315
|
# Add timeout to prevent indefinite waiting
|
|
2312
2316
|
return await asyncio.wait_for(
|
|
2313
2317
|
self._channel.get_returned_task_by_publisher(self.node_id),
|
|
2314
|
-
timeout=
|
|
2318
|
+
timeout=self.task_timeout_seconds,
|
|
2315
2319
|
)
|
|
2316
2320
|
except Exception as e:
|
|
2317
2321
|
error_msg = (
|
|
@@ -3066,6 +3070,7 @@ class Workforce(BaseNode):
|
|
|
3066
3070
|
graceful_shutdown_timeout=self.graceful_shutdown_timeout,
|
|
3067
3071
|
share_memory=self.share_memory,
|
|
3068
3072
|
use_structured_output_handler=self.use_structured_output_handler,
|
|
3073
|
+
task_timeout_seconds=self.task_timeout_seconds,
|
|
3069
3074
|
)
|
|
3070
3075
|
|
|
3071
3076
|
for child in self._children:
|
{camel_ai-0.2.73a11 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit/config_loader.py
RENAMED
|
@@ -23,6 +23,7 @@ class BrowserConfig:
|
|
|
23
23
|
headless: bool = True
|
|
24
24
|
user_data_dir: Optional[str] = None
|
|
25
25
|
stealth: bool = False
|
|
26
|
+
console_log_limit: int = 1000
|
|
26
27
|
|
|
27
28
|
# Default settings
|
|
28
29
|
default_start_url: str = "https://google.com/"
|
|
@@ -105,6 +106,8 @@ class ConfigLoader:
|
|
|
105
106
|
browser_kwargs["connect_over_cdp"] = value
|
|
106
107
|
elif key == "cdpUrl":
|
|
107
108
|
browser_kwargs["cdp_url"] = value
|
|
109
|
+
elif key == "consoleLogLimit":
|
|
110
|
+
browser_kwargs["console_log_limit"] = value
|
|
108
111
|
elif key == "cacheDir":
|
|
109
112
|
toolkit_kwargs["cache_dir"] = value
|
|
110
113
|
elif key == "browserLogToFile":
|
|
@@ -64,11 +64,16 @@ class HybridBrowserToolkit(BaseToolkit, RegisteredAgentToolkit):
|
|
|
64
64
|
"browser_select",
|
|
65
65
|
"browser_scroll",
|
|
66
66
|
"browser_enter",
|
|
67
|
+
"browser_mouse_control",
|
|
68
|
+
"browser_mouse_drag",
|
|
69
|
+
"browser_press_key",
|
|
67
70
|
"browser_wait_user",
|
|
68
71
|
"browser_solve_task",
|
|
69
72
|
"browser_switch_tab",
|
|
70
73
|
"browser_close_tab",
|
|
71
74
|
"browser_get_tab_info",
|
|
75
|
+
"browser_console_view",
|
|
76
|
+
"browser_console_exec",
|
|
72
77
|
]
|
|
73
78
|
|
|
74
79
|
def __init__(
|
|
@@ -863,6 +868,156 @@ class HybridBrowserToolkit(BaseToolkit, RegisteredAgentToolkit):
|
|
|
863
868
|
"total_tabs": 0,
|
|
864
869
|
}
|
|
865
870
|
|
|
871
|
+
async def browser_mouse_control(
|
|
872
|
+
self, *, control: str, x: float, y: float
|
|
873
|
+
) -> Dict[str, Any]:
|
|
874
|
+
r"""Control the mouse to interact with browser with x, y coordinates
|
|
875
|
+
|
|
876
|
+
Args:
|
|
877
|
+
control ([str]): The action to perform: 'click', 'right_click'
|
|
878
|
+
or 'dblclick'.
|
|
879
|
+
x (float): x-coordinate for the control action.
|
|
880
|
+
y (float): y-coordinate for the control action.
|
|
881
|
+
|
|
882
|
+
Returns:
|
|
883
|
+
Dict[str, Any]: A dictionary with the result of the action:
|
|
884
|
+
- "result" (str): Confirmation of the action.
|
|
885
|
+
- "snapshot" (str): A snapshot of the page after mouse
|
|
886
|
+
control action.
|
|
887
|
+
- "tabs" (List[Dict]): Information about all open tabs.
|
|
888
|
+
- "current_tab" (int): Index of the active tab.
|
|
889
|
+
- "total_tabs" (int): Total number of open tabs.
|
|
890
|
+
"""
|
|
891
|
+
try:
|
|
892
|
+
ws_wrapper = await self._get_ws_wrapper()
|
|
893
|
+
result = await ws_wrapper.mouse_control(control, x, y)
|
|
894
|
+
|
|
895
|
+
# Add tab information
|
|
896
|
+
tab_info = await ws_wrapper.get_tab_info()
|
|
897
|
+
result.update(
|
|
898
|
+
{
|
|
899
|
+
"tabs": tab_info,
|
|
900
|
+
"current_tab": next(
|
|
901
|
+
(
|
|
902
|
+
i
|
|
903
|
+
for i, tab in enumerate(tab_info)
|
|
904
|
+
if tab.get("is_current")
|
|
905
|
+
),
|
|
906
|
+
0,
|
|
907
|
+
),
|
|
908
|
+
"total_tabs": len(tab_info),
|
|
909
|
+
}
|
|
910
|
+
)
|
|
911
|
+
|
|
912
|
+
return result
|
|
913
|
+
except Exception as e:
|
|
914
|
+
logger.error(f"Failed to control mouse: {e}")
|
|
915
|
+
return {
|
|
916
|
+
"result": f"Error with mouse control: {e}",
|
|
917
|
+
"snapshot": "",
|
|
918
|
+
"tabs": [],
|
|
919
|
+
"current_tab": 0,
|
|
920
|
+
"total_tabs": 0,
|
|
921
|
+
}
|
|
922
|
+
|
|
923
|
+
async def browser_mouse_drag(
|
|
924
|
+
self, *, from_ref: str, to_ref: str
|
|
925
|
+
) -> Dict[str, Any]:
|
|
926
|
+
r"""Control the mouse to drag and drop in the browser using ref IDs.
|
|
927
|
+
|
|
928
|
+
Args:
|
|
929
|
+
from_ref (str): The `ref` ID of the source element to drag from.
|
|
930
|
+
to_ref (str): The `ref` ID of the target element to drag to.
|
|
931
|
+
|
|
932
|
+
Returns:
|
|
933
|
+
Dict[str, Any]: A dictionary with the result of the action:
|
|
934
|
+
- "result" (str): Confirmation of the action.
|
|
935
|
+
- "snapshot" (str): A new page snapshot.
|
|
936
|
+
- "tabs" (List[Dict]): Information about all open tabs.
|
|
937
|
+
- "current_tab" (int): Index of the active tab.
|
|
938
|
+
- "total_tabs" (int): Total number of open tabs.
|
|
939
|
+
"""
|
|
940
|
+
try:
|
|
941
|
+
ws_wrapper = await self._get_ws_wrapper()
|
|
942
|
+
result = await ws_wrapper.mouse_drag(from_ref, to_ref)
|
|
943
|
+
|
|
944
|
+
# Add tab information
|
|
945
|
+
tab_info = await ws_wrapper.get_tab_info()
|
|
946
|
+
result.update(
|
|
947
|
+
{
|
|
948
|
+
"tabs": tab_info,
|
|
949
|
+
"current_tab": next(
|
|
950
|
+
(
|
|
951
|
+
i
|
|
952
|
+
for i, tab in enumerate(tab_info)
|
|
953
|
+
if tab.get("is_current")
|
|
954
|
+
),
|
|
955
|
+
0,
|
|
956
|
+
),
|
|
957
|
+
"total_tabs": len(tab_info),
|
|
958
|
+
}
|
|
959
|
+
)
|
|
960
|
+
|
|
961
|
+
return result
|
|
962
|
+
except Exception as e:
|
|
963
|
+
logger.error(f"Error with mouse drag and drop: {e}")
|
|
964
|
+
return {
|
|
965
|
+
"result": f"Error with mouse drag and drop: {e}",
|
|
966
|
+
"snapshot": "",
|
|
967
|
+
"tabs": [],
|
|
968
|
+
"current_tab": 0,
|
|
969
|
+
"total_tabs": 0,
|
|
970
|
+
}
|
|
971
|
+
|
|
972
|
+
async def browser_press_key(self, *, keys: List[str]) -> Dict[str, Any]:
|
|
973
|
+
r"""Press key and key combinations.
|
|
974
|
+
Supports single key press or combination of keys by concatenating
|
|
975
|
+
them with '+' separator.
|
|
976
|
+
|
|
977
|
+
Args:
|
|
978
|
+
keys (List[str]): key or list of keys.
|
|
979
|
+
|
|
980
|
+
Returns:
|
|
981
|
+
Dict[str, Any]: A dictionary with the result of the action:
|
|
982
|
+
- "result" (str): Confirmation of the action.
|
|
983
|
+
- "snapshot" (str): A snapshot of the page after
|
|
984
|
+
press key action.
|
|
985
|
+
- "tabs" (List[Dict]): Information about all open tabs.
|
|
986
|
+
- "current_tab" (int): Index of the active tab.
|
|
987
|
+
- "total_tabs" (int): Total number of open tabs.
|
|
988
|
+
"""
|
|
989
|
+
try:
|
|
990
|
+
ws_wrapper = await self._get_ws_wrapper()
|
|
991
|
+
result = await ws_wrapper.press_key(keys)
|
|
992
|
+
|
|
993
|
+
# Add tab information
|
|
994
|
+
tab_info = await ws_wrapper.get_tab_info()
|
|
995
|
+
result.update(
|
|
996
|
+
{
|
|
997
|
+
"tabs": tab_info,
|
|
998
|
+
"current_tab": next(
|
|
999
|
+
(
|
|
1000
|
+
i
|
|
1001
|
+
for i, tab in enumerate(tab_info)
|
|
1002
|
+
if tab.get("is_current")
|
|
1003
|
+
),
|
|
1004
|
+
0,
|
|
1005
|
+
),
|
|
1006
|
+
"total_tabs": len(tab_info),
|
|
1007
|
+
}
|
|
1008
|
+
)
|
|
1009
|
+
|
|
1010
|
+
return result
|
|
1011
|
+
except Exception as e:
|
|
1012
|
+
logger.error(f"Failed to press key: {e}")
|
|
1013
|
+
return {
|
|
1014
|
+
"result": f"Error with press key: {e}",
|
|
1015
|
+
"snapshot": "",
|
|
1016
|
+
"tabs": [],
|
|
1017
|
+
"current_tab": 0,
|
|
1018
|
+
"total_tabs": 0,
|
|
1019
|
+
}
|
|
1020
|
+
|
|
866
1021
|
async def browser_switch_tab(self, *, tab_id: str) -> Dict[str, Any]:
|
|
867
1022
|
r"""Switches to a different browser tab using its ID.
|
|
868
1023
|
|
|
@@ -1002,6 +1157,71 @@ class HybridBrowserToolkit(BaseToolkit, RegisteredAgentToolkit):
|
|
|
1002
1157
|
"total_tabs": 0,
|
|
1003
1158
|
}
|
|
1004
1159
|
|
|
1160
|
+
async def browser_console_view(self) -> Dict[str, Any]:
|
|
1161
|
+
r"""View current page console logs.
|
|
1162
|
+
|
|
1163
|
+
Returns:
|
|
1164
|
+
Dict[str, Any]: A dictionary with tab information:
|
|
1165
|
+
- "console_messages" (List[Dict]) : List of messages logged
|
|
1166
|
+
in the current page
|
|
1167
|
+
|
|
1168
|
+
"""
|
|
1169
|
+
try:
|
|
1170
|
+
ws_wrapper = await self._get_ws_wrapper()
|
|
1171
|
+
console_logs = await ws_wrapper.console_view()
|
|
1172
|
+
|
|
1173
|
+
return {"console_messages": console_logs}
|
|
1174
|
+
except Exception as e:
|
|
1175
|
+
logger.error(f"Failed to get console view: {e}")
|
|
1176
|
+
return {"console_messages": []}
|
|
1177
|
+
|
|
1178
|
+
async def browser_console_exec(self, code: str) -> Dict[str, Any]:
|
|
1179
|
+
r"""Execute javascript code in the console of the current page and get
|
|
1180
|
+
results.
|
|
1181
|
+
|
|
1182
|
+
Args:
|
|
1183
|
+
code (str): JavaScript code to execute in the browser console.
|
|
1184
|
+
|
|
1185
|
+
Returns:
|
|
1186
|
+
Dict[str, Any]: A dictionary with the result of the action:
|
|
1187
|
+
- "result" (str): Confirmation of the action.
|
|
1188
|
+
- "snapshot" (str): A snapshot of the active tab after
|
|
1189
|
+
console execute action.
|
|
1190
|
+
- "tabs" (List[Dict]): Information about remaining tabs.
|
|
1191
|
+
- "current_tab" (int): Index of the new active tab.
|
|
1192
|
+
- "total_tabs" (int): Total number of remaining tabs.
|
|
1193
|
+
"""
|
|
1194
|
+
try:
|
|
1195
|
+
ws_wrapper = await self._get_ws_wrapper()
|
|
1196
|
+
result = await ws_wrapper.console_exec(code)
|
|
1197
|
+
|
|
1198
|
+
tab_info = await ws_wrapper.get_tab_info()
|
|
1199
|
+
result.update(
|
|
1200
|
+
{
|
|
1201
|
+
"tabs": tab_info,
|
|
1202
|
+
"current_tab": next(
|
|
1203
|
+
(
|
|
1204
|
+
i
|
|
1205
|
+
for i, tab in enumerate(tab_info)
|
|
1206
|
+
if tab.get("is_current")
|
|
1207
|
+
),
|
|
1208
|
+
0,
|
|
1209
|
+
),
|
|
1210
|
+
"total_tabs": len(tab_info),
|
|
1211
|
+
}
|
|
1212
|
+
)
|
|
1213
|
+
|
|
1214
|
+
return result
|
|
1215
|
+
except Exception as e:
|
|
1216
|
+
logger.error(f"Failed to execute javascript in console: {e}")
|
|
1217
|
+
return {
|
|
1218
|
+
"result": f"Error in code execution: {e}",
|
|
1219
|
+
"snapshot": "",
|
|
1220
|
+
"tabs": [],
|
|
1221
|
+
"current_tab": 0,
|
|
1222
|
+
"total_tabs": 0,
|
|
1223
|
+
}
|
|
1224
|
+
|
|
1005
1225
|
# Additional methods for backward compatibility
|
|
1006
1226
|
async def browser_wait_user(
|
|
1007
1227
|
self, timeout_sec: Optional[float] = None
|
|
@@ -1146,10 +1366,15 @@ class HybridBrowserToolkit(BaseToolkit, RegisteredAgentToolkit):
|
|
|
1146
1366
|
"browser_select": self.browser_select,
|
|
1147
1367
|
"browser_scroll": self.browser_scroll,
|
|
1148
1368
|
"browser_enter": self.browser_enter,
|
|
1369
|
+
"browser_mouse_click": self.browser_mouse_control,
|
|
1370
|
+
"browser_mouse_drag": self.browser_mouse_drag,
|
|
1371
|
+
"browser_press_key": self.browser_press_key,
|
|
1149
1372
|
"browser_wait_user": self.browser_wait_user,
|
|
1150
1373
|
"browser_switch_tab": self.browser_switch_tab,
|
|
1151
1374
|
"browser_close_tab": self.browser_close_tab,
|
|
1152
1375
|
"browser_get_tab_info": self.browser_get_tab_info,
|
|
1376
|
+
"browser_console_view": self.browser_console_view,
|
|
1377
|
+
"browser_console_exec": self.browser_console_exec,
|
|
1153
1378
|
}
|
|
1154
1379
|
|
|
1155
1380
|
enabled_tools = []
|