camel-ai 0.2.65__py3-none-any.whl → 0.2.82__py3-none-any.whl
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/__init__.py +3 -3
- camel/agents/__init__.py +2 -2
- camel/agents/_types.py +9 -4
- camel/agents/_utils.py +40 -2
- camel/agents/base.py +2 -2
- camel/agents/chat_agent.py +4835 -947
- camel/agents/critic_agent.py +2 -2
- camel/agents/deductive_reasoner_agent.py +56 -56
- camel/agents/embodied_agent.py +2 -2
- camel/agents/knowledge_graph_agent.py +20 -20
- camel/agents/mcp_agent.py +35 -36
- camel/agents/multi_hop_generator_agent.py +3 -3
- camel/agents/programmed_agent_instruction.py +2 -2
- camel/agents/repo_agent.py +4 -3
- camel/agents/role_assignment_agent.py +2 -2
- camel/agents/search_agent.py +2 -2
- camel/agents/task_agent.py +2 -2
- camel/agents/tool_agents/__init__.py +2 -2
- camel/agents/tool_agents/base.py +2 -2
- camel/agents/tool_agents/hugging_face_tool_agent.py +3 -3
- camel/benchmarks/__init__.py +2 -2
- camel/benchmarks/apibank.py +5 -5
- camel/benchmarks/apibench.py +2 -2
- camel/benchmarks/base.py +2 -2
- camel/benchmarks/browsecomp.py +44 -33
- camel/benchmarks/gaia.py +17 -13
- camel/benchmarks/mock_website/README.md +1 -3
- camel/benchmarks/mock_website/mock_web.py +2 -2
- camel/benchmarks/mock_website/requirements.txt +1 -1
- camel/benchmarks/mock_website/shopping_mall/app.py +2 -2
- camel/benchmarks/mock_website/task.json +1 -1
- camel/benchmarks/nexus.py +3 -3
- camel/benchmarks/ragbench.py +2 -2
- camel/bots/__init__.py +2 -2
- camel/bots/discord/__init__.py +2 -2
- camel/bots/discord/discord_app.py +2 -2
- camel/bots/discord/discord_installation.py +2 -2
- camel/bots/discord/discord_store.py +3 -3
- camel/bots/slack/__init__.py +2 -2
- camel/bots/slack/models.py +4 -4
- camel/bots/slack/slack_app.py +2 -2
- camel/bots/telegram_bot.py +2 -2
- camel/configs/__init__.py +23 -2
- camel/configs/aihubmix_config.py +90 -0
- camel/configs/aiml_config.py +2 -2
- camel/configs/amd_config.py +70 -0
- camel/configs/anthropic_config.py +2 -2
- camel/configs/base_config.py +2 -2
- camel/configs/bedrock_config.py +5 -3
- camel/configs/cerebras_config.py +98 -0
- camel/configs/cohere_config.py +2 -2
- camel/configs/cometapi_config.py +106 -0
- camel/configs/crynux_config.py +2 -2
- camel/configs/deepseek_config.py +9 -8
- camel/configs/gemini_config.py +6 -4
- camel/configs/groq_config.py +6 -4
- camel/configs/internlm_config.py +6 -4
- camel/configs/litellm_config.py +2 -2
- camel/configs/lmstudio_config.py +6 -4
- camel/configs/minimax_config.py +95 -0
- camel/configs/mistral_config.py +2 -2
- camel/configs/modelscope_config.py +5 -3
- camel/configs/moonshot_config.py +2 -2
- camel/configs/nebius_config.py +105 -0
- camel/configs/netmind_config.py +2 -2
- camel/configs/novita_config.py +2 -2
- camel/configs/nvidia_config.py +2 -2
- camel/configs/ollama_config.py +2 -2
- camel/configs/openai_config.py +5 -3
- camel/configs/openrouter_config.py +6 -4
- camel/configs/ppio_config.py +2 -2
- camel/configs/qianfan_config.py +85 -0
- camel/configs/qwen_config.py +2 -2
- camel/configs/reka_config.py +2 -2
- camel/configs/samba_config.py +6 -4
- camel/configs/sglang_config.py +2 -2
- camel/configs/siliconflow_config.py +2 -2
- camel/configs/togetherai_config.py +2 -2
- camel/configs/vllm_config.py +4 -2
- camel/configs/watsonx_config.py +2 -2
- camel/configs/yi_config.py +6 -4
- camel/configs/zhipuai_config.py +6 -4
- camel/data_collectors/__init__.py +2 -2
- camel/data_collectors/alpaca_collector.py +18 -9
- camel/data_collectors/base.py +2 -2
- camel/data_collectors/sharegpt_collector.py +2 -2
- camel/datagen/__init__.py +2 -2
- camel/datagen/cot_datagen.py +3 -3
- camel/datagen/evol_instruct/__init__.py +2 -2
- camel/datagen/evol_instruct/evol_instruct.py +2 -2
- camel/datagen/evol_instruct/scorer.py +12 -12
- camel/datagen/evol_instruct/templates.py +16 -16
- camel/datagen/self_improving_cot.py +5 -5
- camel/datagen/self_instruct/__init__.py +2 -2
- camel/datagen/self_instruct/filter/__init__.py +2 -2
- camel/datagen/self_instruct/filter/filter_function.py +2 -2
- camel/datagen/self_instruct/filter/filter_registry.py +2 -2
- camel/datagen/self_instruct/filter/instruction_filter.py +2 -2
- camel/datagen/self_instruct/self_instruct.py +2 -2
- camel/datagen/self_instruct/templates.py +47 -47
- camel/datagen/source2synth/__init__.py +2 -2
- camel/datagen/source2synth/data_processor.py +2 -2
- camel/datagen/source2synth/models.py +2 -2
- camel/datagen/source2synth/user_data_processor_config.py +2 -2
- camel/datahubs/__init__.py +2 -2
- camel/datahubs/base.py +2 -2
- camel/datahubs/huggingface.py +2 -2
- camel/datahubs/models.py +2 -2
- camel/datasets/__init__.py +2 -2
- camel/datasets/base_generator.py +41 -12
- camel/datasets/few_shot_generator.py +18 -18
- camel/datasets/models.py +2 -2
- camel/datasets/self_instruct_generator.py +2 -2
- camel/datasets/static_dataset.py +2 -2
- camel/embeddings/__init__.py +2 -2
- camel/embeddings/azure_embedding.py +2 -2
- camel/embeddings/base.py +2 -2
- camel/embeddings/gemini_embedding.py +2 -2
- camel/embeddings/jina_embedding.py +2 -2
- camel/embeddings/mistral_embedding.py +2 -2
- camel/embeddings/openai_compatible_embedding.py +2 -2
- camel/embeddings/openai_embedding.py +2 -2
- camel/embeddings/sentence_transformers_embeddings.py +2 -2
- camel/embeddings/together_embedding.py +2 -2
- camel/embeddings/vlm_embedding.py +2 -2
- camel/environments/__init__.py +14 -2
- camel/environments/models.py +2 -2
- camel/environments/multi_step.py +2 -2
- camel/environments/rlcards_env.py +860 -0
- camel/environments/single_step.py +30 -5
- camel/environments/tic_tac_toe.py +3 -3
- camel/extractors/__init__.py +2 -2
- camel/extractors/base.py +2 -2
- camel/extractors/python_strategies.py +2 -2
- camel/generators.py +2 -2
- camel/human.py +2 -2
- camel/interpreters/__init__.py +4 -2
- camel/interpreters/base.py +2 -2
- camel/interpreters/docker/Dockerfile +14 -24
- camel/interpreters/docker_interpreter.py +5 -4
- camel/interpreters/e2b_interpreter.py +36 -3
- camel/interpreters/internal_python_interpreter.py +53 -4
- camel/interpreters/interpreter_error.py +2 -2
- camel/interpreters/ipython_interpreter.py +2 -2
- camel/interpreters/microsandbox_interpreter.py +395 -0
- camel/interpreters/subprocess_interpreter.py +2 -2
- camel/loaders/__init__.py +13 -4
- camel/loaders/apify_reader.py +2 -2
- camel/loaders/base_io.py +2 -2
- camel/loaders/base_loader.py +85 -0
- camel/loaders/chunkr_reader.py +11 -2
- camel/loaders/crawl4ai_reader.py +2 -2
- camel/loaders/firecrawl_reader.py +6 -6
- camel/loaders/jina_url_reader.py +2 -2
- camel/loaders/markitdown.py +2 -2
- camel/loaders/mineru_extractor.py +2 -2
- camel/loaders/mistral_reader.py +2 -2
- camel/loaders/scrapegraph_reader.py +2 -2
- camel/loaders/unstructured_io.py +2 -2
- camel/logger.py +5 -5
- camel/memories/__init__.py +2 -2
- camel/memories/agent_memories.py +86 -3
- camel/memories/base.py +36 -2
- camel/memories/blocks/__init__.py +2 -2
- camel/memories/blocks/chat_history_block.py +125 -7
- camel/memories/blocks/vectordb_block.py +10 -3
- camel/memories/context_creators/__init__.py +2 -2
- camel/memories/context_creators/score_based.py +31 -239
- camel/memories/records.py +90 -10
- camel/messages/__init__.py +2 -2
- camel/messages/base.py +178 -43
- camel/messages/conversion/__init__.py +2 -2
- camel/messages/conversion/alpaca.py +2 -2
- camel/messages/conversion/conversation_models.py +2 -2
- camel/messages/conversion/sharegpt/__init__.py +2 -2
- camel/messages/conversion/sharegpt/function_call_formatter.py +2 -2
- camel/messages/conversion/sharegpt/hermes/__init__.py +2 -2
- camel/messages/conversion/sharegpt/hermes/hermes_function_formatter.py +2 -2
- camel/messages/func_message.py +54 -17
- camel/models/__init__.py +16 -2
- camel/models/_utils.py +3 -3
- camel/models/aihubmix_model.py +83 -0
- camel/models/aiml_model.py +11 -18
- camel/models/amd_model.py +101 -0
- camel/models/anthropic_model.py +127 -20
- camel/models/aws_bedrock_model.py +12 -35
- camel/models/azure_openai_model.py +212 -89
- camel/models/base_audio_model.py +5 -3
- camel/models/base_model.py +195 -26
- camel/models/cerebras_model.py +83 -0
- camel/models/cohere_model.py +16 -21
- camel/models/cometapi_model.py +83 -0
- camel/models/crynux_model.py +11 -18
- camel/models/deepseek_model.py +18 -58
- camel/models/fish_audio_model.py +8 -2
- camel/models/gemini_model.py +389 -26
- camel/models/groq_model.py +11 -19
- camel/models/internlm_model.py +11 -18
- camel/models/litellm_model.py +56 -34
- camel/models/lmstudio_model.py +17 -20
- camel/models/minimax_model.py +83 -0
- camel/models/mistral_model.py +18 -19
- camel/models/model_factory.py +37 -3
- camel/models/model_manager.py +26 -8
- camel/models/modelscope_model.py +13 -193
- camel/models/moonshot_model.py +195 -21
- camel/models/nebius_model.py +83 -0
- camel/models/nemotron_model.py +19 -9
- camel/models/netmind_model.py +11 -18
- camel/models/novita_model.py +11 -18
- camel/models/nvidia_model.py +11 -18
- camel/models/ollama_model.py +14 -21
- camel/models/openai_audio_models.py +2 -2
- camel/models/openai_compatible_model.py +188 -45
- camel/models/openai_model.py +216 -71
- camel/models/openrouter_model.py +11 -19
- camel/models/ppio_model.py +11 -18
- camel/models/qianfan_model.py +89 -0
- camel/models/qwen_model.py +13 -193
- camel/models/reka_model.py +21 -21
- camel/models/reward/__init__.py +2 -2
- camel/models/reward/base_reward_model.py +2 -2
- camel/models/reward/evaluator.py +2 -2
- camel/models/reward/nemotron_model.py +2 -2
- camel/models/reward/skywork_model.py +2 -2
- camel/models/samba_model.py +48 -47
- camel/models/sglang_model.py +88 -40
- camel/models/siliconflow_model.py +12 -35
- camel/models/stub_model.py +10 -7
- camel/models/togetherai_model.py +11 -18
- camel/models/vllm_model.py +10 -18
- camel/models/volcano_model.py +16 -20
- camel/models/watsonx_model.py +7 -19
- camel/models/yi_model.py +11 -18
- camel/models/zhipuai_model.py +70 -18
- camel/parsers/__init__.py +18 -0
- camel/parsers/mcp_tool_call_parser.py +176 -0
- camel/personas/__init__.py +2 -2
- camel/personas/persona.py +2 -2
- camel/personas/persona_hub.py +2 -2
- camel/prompts/__init__.py +2 -2
- camel/prompts/ai_society.py +2 -2
- camel/prompts/base.py +2 -2
- camel/prompts/code.py +2 -2
- camel/prompts/evaluation.py +2 -2
- camel/prompts/generate_text_embedding_data.py +2 -2
- camel/prompts/image_craft.py +2 -2
- camel/prompts/misalignment.py +2 -2
- camel/prompts/multi_condition_image_craft.py +2 -2
- camel/prompts/object_recognition.py +2 -2
- camel/prompts/persona_hub.py +3 -3
- camel/prompts/prompt_templates.py +2 -2
- camel/prompts/role_description_prompt_template.py +2 -2
- camel/prompts/solution_extraction.py +8 -8
- camel/prompts/task_prompt_template.py +2 -2
- camel/prompts/translation.py +2 -2
- camel/prompts/video_description_prompt.py +3 -3
- camel/responses/__init__.py +2 -2
- camel/responses/agent_responses.py +2 -2
- camel/retrievers/__init__.py +2 -2
- camel/retrievers/auto_retriever.py +3 -2
- camel/retrievers/base.py +2 -2
- camel/retrievers/bm25_retriever.py +2 -2
- camel/retrievers/cohere_rerank_retriever.py +2 -2
- camel/retrievers/hybrid_retrival.py +2 -2
- camel/retrievers/vector_retriever.py +2 -2
- camel/runtimes/Dockerfile.multi-toolkit +90 -0
- camel/runtimes/__init__.py +2 -2
- camel/runtimes/api.py +79 -23
- camel/runtimes/base.py +2 -2
- camel/runtimes/configs.py +13 -13
- camel/runtimes/daytona_runtime.py +17 -18
- camel/runtimes/docker_runtime.py +12 -12
- camel/runtimes/llm_guard_runtime.py +26 -26
- camel/runtimes/remote_http_runtime.py +11 -11
- camel/runtimes/ubuntu_docker_runtime.py +2 -2
- camel/runtimes/utils/__init__.py +2 -2
- camel/runtimes/utils/function_risk_toolkit.py +2 -2
- camel/runtimes/utils/ignore_risk_toolkit.py +2 -2
- camel/schemas/__init__.py +2 -2
- camel/schemas/base.py +2 -2
- camel/schemas/openai_converter.py +3 -3
- camel/schemas/outlines_converter.py +2 -2
- camel/services/agent_openapi_server.py +380 -0
- camel/societies/__init__.py +4 -2
- camel/societies/babyagi_playing.py +2 -2
- camel/societies/role_playing.py +201 -80
- camel/societies/workforce/__init__.py +10 -3
- camel/societies/workforce/base.py +2 -2
- camel/societies/workforce/events.py +143 -0
- camel/societies/workforce/prompts.py +258 -33
- camel/societies/workforce/role_playing_worker.py +88 -31
- camel/societies/workforce/single_agent_worker.py +638 -40
- camel/societies/workforce/structured_output_handler.py +512 -0
- camel/societies/workforce/task_channel.py +182 -38
- camel/societies/workforce/utils.py +780 -65
- camel/societies/workforce/worker.py +92 -26
- camel/societies/workforce/workflow_memory_manager.py +1746 -0
- camel/societies/workforce/workforce.py +5276 -355
- camel/societies/workforce/workforce_callback.py +103 -0
- camel/societies/workforce/workforce_logger.py +647 -0
- camel/societies/workforce/workforce_metrics.py +33 -0
- camel/storages/__init__.py +6 -2
- camel/storages/graph_storages/__init__.py +2 -2
- camel/storages/graph_storages/base.py +2 -2
- camel/storages/graph_storages/graph_element.py +2 -2
- camel/storages/graph_storages/nebula_graph.py +4 -4
- camel/storages/graph_storages/neo4j_graph.py +7 -7
- camel/storages/key_value_storages/__init__.py +2 -2
- camel/storages/key_value_storages/base.py +2 -2
- camel/storages/key_value_storages/in_memory.py +2 -2
- camel/storages/key_value_storages/json.py +17 -4
- camel/storages/key_value_storages/mem0_cloud.py +50 -49
- camel/storages/key_value_storages/redis.py +2 -2
- camel/storages/object_storages/__init__.py +2 -2
- camel/storages/object_storages/amazon_s3.py +2 -2
- camel/storages/object_storages/azure_blob.py +2 -2
- camel/storages/object_storages/base.py +2 -2
- camel/storages/object_storages/google_cloud.py +3 -3
- camel/storages/vectordb_storages/__init__.py +8 -2
- camel/storages/vectordb_storages/base.py +2 -2
- camel/storages/vectordb_storages/chroma.py +731 -0
- camel/storages/vectordb_storages/faiss.py +2 -2
- camel/storages/vectordb_storages/milvus.py +2 -2
- camel/storages/vectordb_storages/oceanbase.py +15 -15
- camel/storages/vectordb_storages/pgvector.py +349 -0
- camel/storages/vectordb_storages/qdrant.py +6 -6
- camel/storages/vectordb_storages/surreal.py +372 -0
- camel/storages/vectordb_storages/tidb.py +11 -8
- camel/storages/vectordb_storages/weaviate.py +2 -2
- camel/tasks/__init__.py +2 -2
- camel/tasks/task.py +348 -26
- camel/tasks/task_prompt.py +3 -3
- camel/terminators/__init__.py +2 -2
- camel/terminators/base.py +2 -2
- camel/terminators/response_terminator.py +2 -2
- camel/terminators/token_limit_terminator.py +2 -2
- camel/toolkits/__init__.py +54 -10
- camel/toolkits/aci_toolkit.py +66 -21
- camel/toolkits/arxiv_toolkit.py +8 -8
- camel/toolkits/ask_news_toolkit.py +2 -2
- camel/toolkits/async_browser_toolkit.py +4 -4
- camel/toolkits/audio_analysis_toolkit.py +3 -3
- camel/toolkits/base.py +65 -7
- camel/toolkits/bohrium_toolkit.py +2 -2
- camel/toolkits/browser_toolkit.py +34 -21
- camel/toolkits/browser_toolkit_commons.py +4 -4
- camel/toolkits/code_execution.py +31 -4
- camel/toolkits/context_summarizer_toolkit.py +684 -0
- camel/toolkits/craw4ai_toolkit.py +93 -0
- camel/toolkits/dappier_toolkit.py +12 -8
- camel/toolkits/data_commons_toolkit.py +2 -2
- camel/toolkits/dingtalk.py +1135 -0
- camel/toolkits/earth_science_toolkit.py +5367 -0
- camel/toolkits/edgeone_pages_mcp_toolkit.py +49 -0
- camel/toolkits/excel_toolkit.py +905 -71
- camel/toolkits/file_toolkit.py +1402 -0
- camel/toolkits/function_tool.py +126 -18
- camel/toolkits/github_toolkit.py +109 -22
- camel/toolkits/gmail_toolkit.py +1839 -0
- camel/toolkits/google_calendar_toolkit.py +40 -6
- camel/toolkits/google_drive_mcp_toolkit.py +54 -0
- camel/toolkits/google_maps_toolkit.py +2 -2
- camel/toolkits/google_scholar_toolkit.py +2 -2
- camel/toolkits/human_toolkit.py +36 -12
- camel/toolkits/hybrid_browser_toolkit/__init__.py +18 -0
- camel/toolkits/hybrid_browser_toolkit/config_loader.py +185 -0
- camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit.py +246 -0
- camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit_ts.py +1973 -0
- camel/toolkits/hybrid_browser_toolkit/installer.py +203 -0
- camel/toolkits/hybrid_browser_toolkit/ts/package-lock.json +4589 -0
- camel/toolkits/hybrid_browser_toolkit/ts/package.json +33 -0
- camel/toolkits/hybrid_browser_toolkit/ts/src/browser-scripts.js +125 -0
- camel/toolkits/hybrid_browser_toolkit/ts/src/browser-session.ts +1929 -0
- camel/toolkits/hybrid_browser_toolkit/ts/src/config-loader.ts +233 -0
- camel/toolkits/hybrid_browser_toolkit/ts/src/hybrid-browser-toolkit.ts +589 -0
- camel/toolkits/hybrid_browser_toolkit/ts/src/index.ts +7 -0
- camel/toolkits/hybrid_browser_toolkit/ts/src/parent-child-filter.ts +226 -0
- camel/toolkits/hybrid_browser_toolkit/ts/src/snapshot-parser.ts +219 -0
- camel/toolkits/hybrid_browser_toolkit/ts/src/som-screenshot-injected.ts +543 -0
- camel/toolkits/hybrid_browser_toolkit/ts/src/types.ts +129 -0
- camel/toolkits/hybrid_browser_toolkit/ts/tsconfig.json +27 -0
- camel/toolkits/hybrid_browser_toolkit/ts/websocket-server.js +319 -0
- camel/toolkits/hybrid_browser_toolkit/ws_wrapper.py +1037 -0
- camel/toolkits/hybrid_browser_toolkit_py/__init__.py +17 -0
- camel/toolkits/hybrid_browser_toolkit_py/actions.py +575 -0
- camel/toolkits/hybrid_browser_toolkit_py/agent.py +311 -0
- camel/toolkits/hybrid_browser_toolkit_py/browser_session.py +787 -0
- camel/toolkits/hybrid_browser_toolkit_py/config_loader.py +490 -0
- camel/toolkits/hybrid_browser_toolkit_py/hybrid_browser_toolkit.py +2390 -0
- camel/toolkits/hybrid_browser_toolkit_py/snapshot.py +233 -0
- camel/toolkits/hybrid_browser_toolkit_py/stealth_script.js +0 -0
- camel/toolkits/hybrid_browser_toolkit_py/unified_analyzer.js +1043 -0
- camel/toolkits/image_analysis_toolkit.py +3 -6
- camel/toolkits/image_generation_toolkit.py +390 -0
- camel/toolkits/jina_reranker_toolkit.py +5 -6
- camel/toolkits/klavis_toolkit.py +7 -3
- camel/toolkits/linkedin_toolkit.py +2 -2
- camel/toolkits/markitdown_toolkit.py +104 -0
- camel/toolkits/math_toolkit.py +66 -12
- camel/toolkits/mcp_toolkit.py +412 -36
- camel/toolkits/memory_toolkit.py +7 -3
- camel/toolkits/meshy_toolkit.py +2 -2
- camel/toolkits/message_agent_toolkit.py +608 -0
- camel/toolkits/message_integration.py +724 -0
- camel/toolkits/mineru_toolkit.py +2 -2
- camel/toolkits/minimax_mcp_toolkit.py +195 -0
- camel/toolkits/networkx_toolkit.py +2 -2
- camel/toolkits/note_taking_toolkit.py +277 -0
- camel/toolkits/notion_mcp_toolkit.py +224 -0
- camel/toolkits/notion_toolkit.py +2 -2
- camel/toolkits/open_api_specs/biztoc/__init__.py +2 -2
- camel/toolkits/open_api_specs/biztoc/ai-plugin.json +1 -1
- camel/toolkits/open_api_specs/coursera/__init__.py +2 -2
- camel/toolkits/open_api_specs/create_qr_code/__init__.py +2 -2
- camel/toolkits/open_api_specs/klarna/__init__.py +2 -2
- camel/toolkits/open_api_specs/nasa_apod/__init__.py +2 -2
- camel/toolkits/open_api_specs/outschool/__init__.py +2 -2
- camel/toolkits/open_api_specs/outschool/ai-plugin.json +1 -1
- camel/toolkits/open_api_specs/outschool/openapi.yaml +1 -1
- camel/toolkits/open_api_specs/outschool/paths/__init__.py +2 -2
- camel/toolkits/open_api_specs/outschool/paths/get_classes.py +2 -2
- camel/toolkits/open_api_specs/outschool/paths/search_teachers.py +2 -2
- camel/toolkits/open_api_specs/security_config.py +2 -2
- camel/toolkits/open_api_specs/speak/__init__.py +2 -2
- camel/toolkits/open_api_specs/web_scraper/__init__.py +2 -2
- camel/toolkits/open_api_specs/web_scraper/ai-plugin.json +1 -1
- camel/toolkits/open_api_specs/web_scraper/paths/__init__.py +2 -2
- camel/toolkits/open_api_specs/web_scraper/paths/scraper.py +2 -2
- camel/toolkits/open_api_toolkit.py +2 -2
- camel/toolkits/openbb_toolkit.py +7 -3
- camel/toolkits/origene_mcp_toolkit.py +56 -0
- camel/toolkits/page_script.js +53 -53
- camel/toolkits/playwright_mcp_toolkit.py +13 -31
- camel/toolkits/pptx_toolkit.py +36 -23
- camel/toolkits/pubmed_toolkit.py +2 -2
- camel/toolkits/pulse_mcp_search_toolkit.py +2 -2
- camel/toolkits/pyautogui_toolkit.py +2 -2
- camel/toolkits/reddit_toolkit.py +2 -2
- camel/toolkits/resend_toolkit.py +168 -0
- camel/toolkits/retrieval_toolkit.py +2 -2
- camel/toolkits/screenshot_toolkit.py +213 -0
- camel/toolkits/search_toolkit.py +539 -146
- camel/toolkits/searxng_toolkit.py +2 -2
- camel/toolkits/semantic_scholar_toolkit.py +2 -2
- camel/toolkits/slack_toolkit.py +108 -58
- camel/toolkits/sql_toolkit.py +712 -0
- camel/toolkits/stripe_toolkit.py +2 -2
- camel/toolkits/sympy_toolkit.py +3 -3
- camel/toolkits/task_planning_toolkit.py +5 -5
- camel/toolkits/terminal_toolkit/__init__.py +18 -0
- camel/toolkits/terminal_toolkit/terminal_toolkit.py +1070 -0
- camel/toolkits/terminal_toolkit/utils.py +532 -0
- camel/toolkits/thinking_toolkit.py +3 -3
- camel/toolkits/twitter_toolkit.py +2 -2
- camel/toolkits/vertex_ai_veo_toolkit.py +590 -0
- camel/toolkits/video_analysis_toolkit.py +109 -29
- camel/toolkits/video_download_toolkit.py +19 -16
- camel/toolkits/weather_toolkit.py +2 -2
- camel/toolkits/web_deploy_toolkit.py +1219 -0
- camel/toolkits/wechat_official_toolkit.py +483 -0
- camel/toolkits/whatsapp_toolkit.py +2 -2
- camel/toolkits/wolfram_alpha_toolkit.py +2 -2
- camel/toolkits/zapier_toolkit.py +7 -3
- camel/types/__init__.py +4 -4
- camel/types/agents/__init__.py +2 -2
- camel/types/agents/tool_calling_record.py +6 -3
- camel/types/enums.py +378 -39
- camel/types/mcp_registries.py +2 -2
- camel/types/openai_types.py +4 -4
- camel/types/unified_model_type.py +38 -6
- camel/utils/__init__.py +2 -2
- camel/utils/async_func.py +2 -2
- camel/utils/chunker/__init__.py +2 -2
- camel/utils/chunker/base.py +2 -2
- camel/utils/chunker/code_chunker.py +2 -2
- camel/utils/chunker/uio_chunker.py +2 -2
- camel/utils/commons.py +38 -7
- camel/utils/constants.py +5 -2
- camel/utils/context_utils.py +1134 -0
- camel/utils/deduplication.py +2 -2
- camel/utils/filename.py +2 -2
- camel/utils/langfuse.py +2 -2
- camel/utils/mcp.py +140 -6
- camel/utils/mcp_client.py +48 -38
- camel/utils/message_summarizer.py +148 -0
- camel/utils/response_format.py +2 -2
- camel/utils/token_counting.py +45 -22
- camel/utils/tool_result.py +44 -0
- camel/verifiers/__init__.py +2 -2
- camel/verifiers/base.py +2 -2
- camel/verifiers/math_verifier.py +2 -2
- camel/verifiers/models.py +2 -2
- camel/verifiers/physics_verifier.py +2 -2
- camel/verifiers/python_verifier.py +2 -2
- {camel_ai-0.2.65.dist-info → camel_ai-0.2.82.dist-info}/METADATA +327 -94
- camel_ai-0.2.82.dist-info/RECORD +507 -0
- {camel_ai-0.2.65.dist-info → camel_ai-0.2.82.dist-info}/WHEEL +1 -1
- {camel_ai-0.2.65.dist-info → camel_ai-0.2.82.dist-info}/licenses/LICENSE +1 -1
- camel/loaders/pandas_reader.py +0 -368
- camel/toolkits/dalle_toolkit.py +0 -175
- camel/toolkits/file_write_toolkit.py +0 -444
- camel/toolkits/openai_agent_toolkit.py +0 -135
- camel/toolkits/terminal_toolkit.py +0 -1037
- camel_ai-0.2.65.dist-info/RECORD +0 -426
camel/toolkits/__init__.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# ========= Copyright 2023-
|
|
1
|
+
# ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
2
2
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
3
|
# you may not use this file except in compliance with the License.
|
|
4
4
|
# You may obtain a copy of the License at
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
11
11
|
# See the License for the specific language governing permissions and
|
|
12
12
|
# limitations under the License.
|
|
13
|
-
# ========= Copyright 2023-
|
|
13
|
+
# ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
14
14
|
# ruff: noqa: I001
|
|
15
15
|
from .function_tool import (
|
|
16
16
|
FunctionTool,
|
|
@@ -23,7 +23,7 @@ from .open_api_specs.security_config import openapi_security_config
|
|
|
23
23
|
from .math_toolkit import MathToolkit
|
|
24
24
|
from .search_toolkit import SearchToolkit
|
|
25
25
|
from .weather_toolkit import WeatherToolkit
|
|
26
|
-
from .
|
|
26
|
+
from .image_generation_toolkit import ImageGenToolkit, OpenAIImageToolkit
|
|
27
27
|
from .ask_news_toolkit import AskNewsToolkit, AsyncAskNewsToolkit
|
|
28
28
|
from .linkedin_toolkit import LinkedInToolkit
|
|
29
29
|
from .reddit_toolkit import RedditToolkit
|
|
@@ -31,15 +31,18 @@ from .meshy_toolkit import MeshyToolkit
|
|
|
31
31
|
from .openbb_toolkit import OpenBBToolkit
|
|
32
32
|
from .bohrium_toolkit import BohriumToolkit
|
|
33
33
|
|
|
34
|
-
from .base import BaseToolkit
|
|
34
|
+
from .base import BaseToolkit, RegisteredAgentToolkit
|
|
35
35
|
from .google_maps_toolkit import GoogleMapsToolkit
|
|
36
36
|
from .code_execution import CodeExecutionToolkit
|
|
37
37
|
from .github_toolkit import GithubToolkit
|
|
38
38
|
from .google_scholar_toolkit import GoogleScholarToolkit
|
|
39
39
|
from .google_calendar_toolkit import GoogleCalendarToolkit
|
|
40
|
+
from .gmail_toolkit import GmailToolkit
|
|
40
41
|
from .arxiv_toolkit import ArxivToolkit
|
|
41
42
|
from .slack_toolkit import SlackToolkit
|
|
42
43
|
from .whatsapp_toolkit import WhatsAppToolkit
|
|
44
|
+
from .wechat_official_toolkit import WeChatOfficialToolkit
|
|
45
|
+
from .dingtalk import DingtalkToolkit
|
|
43
46
|
from .twitter_toolkit import TwitterToolkit
|
|
44
47
|
from .open_api_toolkit import OpenAPIToolkit
|
|
45
48
|
from .retrieval_toolkit import RetrievalToolkit
|
|
@@ -61,22 +64,39 @@ from .image_analysis_toolkit import ImageAnalysisToolkit
|
|
|
61
64
|
from .mcp_toolkit import MCPToolkit
|
|
62
65
|
from .browser_toolkit import BrowserToolkit
|
|
63
66
|
from .async_browser_toolkit import AsyncBrowserToolkit
|
|
64
|
-
from .
|
|
67
|
+
from .file_toolkit import FileToolkit, FileWriteToolkit
|
|
65
68
|
from .pptx_toolkit import PPTXToolkit
|
|
66
69
|
from .terminal_toolkit import TerminalToolkit
|
|
67
70
|
from .pubmed_toolkit import PubMedToolkit
|
|
68
71
|
from .data_commons_toolkit import DataCommonsToolkit
|
|
69
72
|
from .thinking_toolkit import ThinkingToolkit
|
|
70
73
|
from .pyautogui_toolkit import PyAutoGUIToolkit
|
|
71
|
-
from .openai_agent_toolkit import OpenAIAgentToolkit
|
|
72
74
|
from .searxng_toolkit import SearxNGToolkit
|
|
75
|
+
from .sql_toolkit import SQLToolkit
|
|
73
76
|
from .jina_reranker_toolkit import JinaRerankerToolkit
|
|
74
77
|
from .pulse_mcp_search_toolkit import PulseMCPSearchToolkit
|
|
75
78
|
from .klavis_toolkit import KlavisToolkit
|
|
76
79
|
from .aci_toolkit import ACIToolkit
|
|
80
|
+
from .origene_mcp_toolkit import OrigeneToolkit
|
|
77
81
|
from .playwright_mcp_toolkit import PlaywrightMCPToolkit
|
|
82
|
+
from .resend_toolkit import ResendToolkit
|
|
78
83
|
from .wolfram_alpha_toolkit import WolframAlphaToolkit
|
|
79
|
-
|
|
84
|
+
from .task_planning_toolkit import TaskPlanningToolkit
|
|
85
|
+
from .hybrid_browser_toolkit import HybridBrowserToolkit
|
|
86
|
+
from .edgeone_pages_mcp_toolkit import EdgeOnePagesMCPToolkit
|
|
87
|
+
from .google_drive_mcp_toolkit import GoogleDriveMCPToolkit
|
|
88
|
+
from .craw4ai_toolkit import Crawl4AIToolkit
|
|
89
|
+
from .markitdown_toolkit import MarkItDownToolkit
|
|
90
|
+
from .note_taking_toolkit import NoteTakingToolkit
|
|
91
|
+
from .message_agent_toolkit import AgentCommunicationToolkit
|
|
92
|
+
from .web_deploy_toolkit import WebDeployToolkit
|
|
93
|
+
from .screenshot_toolkit import ScreenshotToolkit
|
|
94
|
+
from .message_integration import ToolkitMessageIntegration
|
|
95
|
+
from .context_summarizer_toolkit import ContextSummarizerToolkit
|
|
96
|
+
from .notion_mcp_toolkit import NotionMCPToolkit
|
|
97
|
+
from .vertex_ai_veo_toolkit import VertexAIVeoToolkit
|
|
98
|
+
from .minimax_mcp_toolkit import MinimaxMCPToolkit
|
|
99
|
+
from .earth_science_toolkit import EarthScienceToolkit
|
|
80
100
|
|
|
81
101
|
__all__ = [
|
|
82
102
|
'BaseToolkit',
|
|
@@ -91,7 +111,9 @@ __all__ = [
|
|
|
91
111
|
'SearchToolkit',
|
|
92
112
|
'SlackToolkit',
|
|
93
113
|
'WhatsAppToolkit',
|
|
94
|
-
'
|
|
114
|
+
'WeChatOfficialToolkit',
|
|
115
|
+
'DingtalkToolkit',
|
|
116
|
+
'ImageGenToolkit',
|
|
95
117
|
'TwitterToolkit',
|
|
96
118
|
'WeatherToolkit',
|
|
97
119
|
'RetrievalToolkit',
|
|
@@ -103,6 +125,7 @@ __all__ = [
|
|
|
103
125
|
'AsyncAskNewsToolkit',
|
|
104
126
|
'GoogleScholarToolkit',
|
|
105
127
|
'GoogleCalendarToolkit',
|
|
128
|
+
'GmailToolkit',
|
|
106
129
|
'NotionToolkit',
|
|
107
130
|
'ArxivToolkit',
|
|
108
131
|
'HumanToolkit',
|
|
@@ -124,20 +147,41 @@ __all__ = [
|
|
|
124
147
|
'ImageAnalysisToolkit',
|
|
125
148
|
'BrowserToolkit',
|
|
126
149
|
'AsyncBrowserToolkit',
|
|
127
|
-
'
|
|
150
|
+
'FileToolkit',
|
|
151
|
+
'FileWriteToolkit', # Deprecated, use FileToolkit instead
|
|
128
152
|
'PPTXToolkit',
|
|
129
153
|
'TerminalToolkit',
|
|
130
154
|
'PubMedToolkit',
|
|
131
155
|
'DataCommonsToolkit',
|
|
132
156
|
'ThinkingToolkit',
|
|
133
157
|
'PyAutoGUIToolkit',
|
|
134
|
-
'OpenAIAgentToolkit',
|
|
135
158
|
'SearxNGToolkit',
|
|
159
|
+
'SQLToolkit',
|
|
136
160
|
'JinaRerankerToolkit',
|
|
161
|
+
'OrigeneToolkit',
|
|
137
162
|
'PulseMCPSearchToolkit',
|
|
138
163
|
'KlavisToolkit',
|
|
139
164
|
'ACIToolkit',
|
|
140
165
|
'PlaywrightMCPToolkit',
|
|
166
|
+
'ResendToolkit',
|
|
141
167
|
'WolframAlphaToolkit',
|
|
142
168
|
'BohriumToolkit',
|
|
169
|
+
'OpenAIImageToolkit', # Backward compatibility
|
|
170
|
+
'TaskPlanningToolkit',
|
|
171
|
+
'HybridBrowserToolkit',
|
|
172
|
+
'EdgeOnePagesMCPToolkit',
|
|
173
|
+
'GoogleDriveMCPToolkit',
|
|
174
|
+
'Crawl4AIToolkit',
|
|
175
|
+
'MarkItDownToolkit',
|
|
176
|
+
'NoteTakingToolkit',
|
|
177
|
+
'AgentCommunicationToolkit',
|
|
178
|
+
'WebDeployToolkit',
|
|
179
|
+
'ScreenshotToolkit',
|
|
180
|
+
'RegisteredAgentToolkit',
|
|
181
|
+
'ToolkitMessageIntegration',
|
|
182
|
+
'ContextSummarizerToolkit',
|
|
183
|
+
'NotionMCPToolkit',
|
|
184
|
+
'VertexAIVeoToolkit',
|
|
185
|
+
'MinimaxMCPToolkit',
|
|
186
|
+
'EarthScienceToolkit',
|
|
143
187
|
]
|
camel/toolkits/aci_toolkit.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# ========= Copyright 2023-
|
|
1
|
+
# ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
2
2
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
3
|
# you may not use this file except in compliance with the License.
|
|
4
4
|
# You may obtain a copy of the License at
|
|
@@ -10,8 +10,9 @@
|
|
|
10
10
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
11
11
|
# See the License for the specific language governing permissions and
|
|
12
12
|
# limitations under the License.
|
|
13
|
-
# ========= Copyright 2023-
|
|
13
|
+
# ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
14
14
|
|
|
15
|
+
import asyncio
|
|
15
16
|
import os
|
|
16
17
|
from typing import TYPE_CHECKING, Dict, List, Optional, Union
|
|
17
18
|
|
|
@@ -48,14 +49,14 @@ class ACIToolkit(BaseToolkit):
|
|
|
48
49
|
|
|
49
50
|
Args:
|
|
50
51
|
api_key (Optional[str]): The API key for authentication.
|
|
51
|
-
(default: :obj
|
|
52
|
+
(default: :obj:`None`)
|
|
52
53
|
base_url (Optional[str]): The base URL for the ACI API.
|
|
53
|
-
(default: :obj
|
|
54
|
+
(default: :obj:`None`)
|
|
54
55
|
linked_account_owner_id (Optional[str]): ID of the owner of the
|
|
55
56
|
linked account, e.g., "johndoe"
|
|
56
|
-
(default: :obj
|
|
57
|
+
(default: :obj:`None`)
|
|
57
58
|
timeout (Optional[float]): Request timeout.
|
|
58
|
-
(default: :obj
|
|
59
|
+
(default: :obj:`None`)
|
|
59
60
|
"""
|
|
60
61
|
from aci import ACI
|
|
61
62
|
|
|
@@ -80,20 +81,20 @@ class ACIToolkit(BaseToolkit):
|
|
|
80
81
|
Args:
|
|
81
82
|
intent (Optional[str]): Search results will be sorted by relevance
|
|
82
83
|
to this intent.
|
|
83
|
-
(default: :obj
|
|
84
|
+
(default: :obj:`None`)
|
|
84
85
|
allowed_app_only (bool): If true, only return apps that
|
|
85
86
|
are allowed by the agent/accessor, identified by the api key.
|
|
86
|
-
(default: :obj
|
|
87
|
+
(default: :obj:`True`)
|
|
87
88
|
include_functions (bool): If true, include functions
|
|
88
89
|
(name and description) in the search results.
|
|
89
|
-
(default: :obj
|
|
90
|
+
(default: :obj:`False`)
|
|
90
91
|
categories (Optional[List[str]]): List of categories to filter the
|
|
91
92
|
search results. Defaults to an empty list.
|
|
92
|
-
(default: :obj
|
|
93
|
+
(default: :obj:`None`)
|
|
93
94
|
limit (Optional[int]): Maximum number of results to return.
|
|
94
|
-
(default: :obj
|
|
95
|
+
(default: :obj:`10`)
|
|
95
96
|
offset (Optional[int]): Offset for pagination.
|
|
96
|
-
(default: :obj
|
|
97
|
+
(default: :obj:`0`)
|
|
97
98
|
|
|
98
99
|
Returns:
|
|
99
100
|
Optional[List[AppBasic]]: List of matching apps if successful,
|
|
@@ -123,10 +124,10 @@ class ACIToolkit(BaseToolkit):
|
|
|
123
124
|
|
|
124
125
|
Args:
|
|
125
126
|
app_names (Optional[List[str]]): List of app names to filter the
|
|
126
|
-
results. (default: :obj
|
|
127
|
+
results. (default: :obj:`None`)
|
|
127
128
|
limit (Optional[int]): Maximum number of results to return.
|
|
128
|
-
(default: :obj
|
|
129
|
-
offset (Optional[int]): Offset for pagination. (default: :obj
|
|
129
|
+
(default: :obj:`10`)
|
|
130
|
+
offset (Optional[int]): Offset for pagination. (default: :obj:`0`)
|
|
130
131
|
|
|
131
132
|
Returns:
|
|
132
133
|
Union[List[AppConfiguration], str]: List of configured apps if
|
|
@@ -356,15 +357,15 @@ class ACIToolkit(BaseToolkit):
|
|
|
356
357
|
|
|
357
358
|
Args:
|
|
358
359
|
app_names (Optional[List[str]]): List of app names to filter the
|
|
359
|
-
search results. (default: :obj
|
|
360
|
+
search results. (default: :obj:`None`)
|
|
360
361
|
intent (Optional[str]): The search query/intent.
|
|
361
|
-
(default: :obj
|
|
362
|
+
(default: :obj:`None`)
|
|
362
363
|
allowed_apps_only (bool): If true, only return
|
|
363
|
-
functions from allowed apps. (default: :obj
|
|
364
|
+
functions from allowed apps. (default: :obj:`True`)
|
|
364
365
|
limit (Optional[int]): Maximum number of results to return.
|
|
365
|
-
(default: :obj
|
|
366
|
+
(default: :obj:`10`)
|
|
366
367
|
offset (Optional[int]): Offset for pagination.
|
|
367
|
-
(default: :obj
|
|
368
|
+
(default: :obj:`0`)
|
|
368
369
|
|
|
369
370
|
Returns:
|
|
370
371
|
List[Dict]: List of matching functions
|
|
@@ -395,7 +396,7 @@ class ACIToolkit(BaseToolkit):
|
|
|
395
396
|
owner id in the ACI dashboard (https://platform.aci.dev).
|
|
396
397
|
allowed_apps_only (bool): If true, only returns functions/apps
|
|
397
398
|
that are allowed to be used by the agent/accessor, identified
|
|
398
|
-
by the api key. (default: :obj
|
|
399
|
+
by the api key. (default: :obj:`False`)
|
|
399
400
|
|
|
400
401
|
Returns:
|
|
401
402
|
Dict: Result of the function execution
|
|
@@ -408,6 +409,38 @@ class ACIToolkit(BaseToolkit):
|
|
|
408
409
|
)
|
|
409
410
|
return result
|
|
410
411
|
|
|
412
|
+
async def aexecute_function(
|
|
413
|
+
self,
|
|
414
|
+
function_name: str,
|
|
415
|
+
function_arguments: Dict,
|
|
416
|
+
linked_account_owner_id: str,
|
|
417
|
+
allowed_apps_only: bool = False,
|
|
418
|
+
) -> Dict:
|
|
419
|
+
r"""Execute a function call asynchronously.
|
|
420
|
+
|
|
421
|
+
Args:
|
|
422
|
+
function_name (str): Name of the function to execute.
|
|
423
|
+
function_arguments (Dict): Arguments to pass to the function.
|
|
424
|
+
linked_account_owner_id (str): To specify the end-user (account
|
|
425
|
+
owner) on behalf of whom you want to execute functions
|
|
426
|
+
You need to first link corresponding account with the same
|
|
427
|
+
owner id in the ACI dashboard (https://platform.aci.dev).
|
|
428
|
+
allowed_apps_only (bool): If true, only returns functions/apps
|
|
429
|
+
that are allowed to be used by the agent/accessor, identified
|
|
430
|
+
by the api key. (default: :obj:`False`)
|
|
431
|
+
|
|
432
|
+
Returns:
|
|
433
|
+
Dict: Result of the function execution
|
|
434
|
+
"""
|
|
435
|
+
result = await asyncio.to_thread(
|
|
436
|
+
self.client.handle_function_call,
|
|
437
|
+
function_name,
|
|
438
|
+
function_arguments,
|
|
439
|
+
linked_account_owner_id,
|
|
440
|
+
allowed_apps_only,
|
|
441
|
+
)
|
|
442
|
+
return result
|
|
443
|
+
|
|
411
444
|
def get_tools(self) -> List[FunctionTool]:
|
|
412
445
|
r"""Get a list of tools (functions) available in the configured apps.
|
|
413
446
|
|
|
@@ -434,6 +467,8 @@ class ACIToolkit(BaseToolkit):
|
|
|
434
467
|
FunctionTool(self.delete_linked_account),
|
|
435
468
|
FunctionTool(self.function_definition),
|
|
436
469
|
FunctionTool(self.search_function),
|
|
470
|
+
FunctionTool(self.execute_function),
|
|
471
|
+
FunctionTool(self.aexecute_function),
|
|
437
472
|
]
|
|
438
473
|
|
|
439
474
|
for function in _all_function:
|
|
@@ -448,6 +483,16 @@ class ACIToolkit(BaseToolkit):
|
|
|
448
483
|
linked_account_owner_id=self.linked_account_owner_id,
|
|
449
484
|
)
|
|
450
485
|
|
|
486
|
+
async def async_dummy_func(*, schema=schema, **kwargs):
|
|
487
|
+
return await self.aexecute_function(
|
|
488
|
+
function_name=schema['function']['name'],
|
|
489
|
+
function_arguments=kwargs,
|
|
490
|
+
linked_account_owner_id=self.linked_account_owner_id,
|
|
491
|
+
)
|
|
492
|
+
|
|
493
|
+
# Add async_call method to the sync function for compatibility
|
|
494
|
+
dummy_func.async_call = async_dummy_func # type: ignore[attr-defined]
|
|
495
|
+
|
|
451
496
|
tool = FunctionTool(
|
|
452
497
|
func=dummy_func,
|
|
453
498
|
openai_tool_schema=schema,
|
camel/toolkits/arxiv_toolkit.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# ========= Copyright 2023-
|
|
1
|
+
# ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
2
2
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
3
|
# you may not use this file except in compliance with the License.
|
|
4
4
|
# You may obtain a copy of the License at
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
11
11
|
# See the License for the specific language governing permissions and
|
|
12
12
|
# limitations under the License.
|
|
13
|
-
# ========= Copyright 2023-
|
|
13
|
+
# ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
14
14
|
|
|
15
15
|
from typing import Dict, Generator, List, Optional
|
|
16
16
|
|
|
@@ -49,9 +49,9 @@ class ArxivToolkit(BaseToolkit):
|
|
|
49
49
|
query (str): The search query string used to search for papers on
|
|
50
50
|
arXiv.
|
|
51
51
|
paper_ids (List[str], optional): A list of specific arXiv paper
|
|
52
|
-
IDs to search for. (default: :obj
|
|
52
|
+
IDs to search for. (default: :obj:`None`)
|
|
53
53
|
max_results (int, optional): The maximum number of search results
|
|
54
|
-
to retrieve. (default: :obj
|
|
54
|
+
to retrieve. (default: :obj:`5`)
|
|
55
55
|
|
|
56
56
|
Returns:
|
|
57
57
|
Generator: A generator that yields results from the arXiv search
|
|
@@ -80,9 +80,9 @@ class ArxivToolkit(BaseToolkit):
|
|
|
80
80
|
Args:
|
|
81
81
|
query (str): The search query string.
|
|
82
82
|
paper_ids (List[str], optional): A list of specific arXiv paper
|
|
83
|
-
IDs to search for. (default: :obj
|
|
83
|
+
IDs to search for. (default: :obj:`None`)
|
|
84
84
|
max_results (int, optional): The maximum number of search results
|
|
85
|
-
to return. (default: :obj
|
|
85
|
+
to return. (default: :obj:`5`)
|
|
86
86
|
|
|
87
87
|
Returns:
|
|
88
88
|
List[Dict[str, str]]: A list of dictionaries, each containing
|
|
@@ -138,9 +138,9 @@ class ArxivToolkit(BaseToolkit):
|
|
|
138
138
|
Args:
|
|
139
139
|
query (str): The search query string.
|
|
140
140
|
paper_ids (List[str], optional): A list of specific arXiv paper
|
|
141
|
-
IDs to download. (default: :obj
|
|
141
|
+
IDs to download. (default: :obj:`None`)
|
|
142
142
|
max_results (int, optional): The maximum number of search results
|
|
143
|
-
to download. (default: :obj
|
|
143
|
+
to download. (default: :obj:`5`)
|
|
144
144
|
output_dir (str, optional): The directory to save the downloaded
|
|
145
145
|
PDFs. Defaults to the current directory.
|
|
146
146
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# ========= Copyright 2023-
|
|
1
|
+
# ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
2
2
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
3
|
# you may not use this file except in compliance with the License.
|
|
4
4
|
# You may obtain a copy of the License at
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
11
11
|
# See the License for the specific language governing permissions and
|
|
12
12
|
# limitations under the License.
|
|
13
|
-
# ========= Copyright 2023-
|
|
13
|
+
# ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
14
14
|
import os
|
|
15
15
|
from datetime import datetime
|
|
16
16
|
from typing import List, Literal, Optional, Tuple, Union
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# ========= Copyright 2023-
|
|
1
|
+
# ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
2
2
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
3
|
# you may not use this file except in compliance with the License.
|
|
4
4
|
# You may obtain a copy of the License at
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
11
11
|
# See the License for the specific language governing permissions and
|
|
12
12
|
# limitations under the License.
|
|
13
|
-
# ========= Copyright 2023-
|
|
13
|
+
# ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
14
14
|
|
|
15
15
|
# Enables postponed evaluation of annotations (for string-based type hints)
|
|
16
16
|
from __future__ import annotations
|
|
@@ -1383,8 +1383,8 @@ Here is a plan about how to solve the task step-by-step which you must follow:
|
|
|
1383
1383
|
|
|
1384
1384
|
if not task_completed:
|
|
1385
1385
|
simulation_result = f"""
|
|
1386
|
-
The task is not completed within the round limit. Please check
|
|
1387
|
-
the last round {self.history_window} information to see if
|
|
1386
|
+
The task is not completed within the round limit. Please check
|
|
1387
|
+
the last round {self.history_window} information to see if
|
|
1388
1388
|
there is any useful information:
|
|
1389
1389
|
<history>{self.history[-self.history_window:]}</history>
|
|
1390
1390
|
"""
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# ========= Copyright 2023-
|
|
1
|
+
# ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
2
2
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
3
|
# you may not use this file except in compliance with the License.
|
|
4
4
|
# You may obtain a copy of the License at
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
11
11
|
# See the License for the specific language governing permissions and
|
|
12
12
|
# limitations under the License.
|
|
13
|
-
# ========= Copyright 2023-
|
|
13
|
+
# ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
14
14
|
import os
|
|
15
15
|
import uuid
|
|
16
16
|
from typing import List, Optional
|
|
@@ -208,7 +208,7 @@ class AudioAnalysisToolkit(BaseToolkit):
|
|
|
208
208
|
<speech_transcription_result>{transcript}</
|
|
209
209
|
speech_transcription_result>
|
|
210
210
|
|
|
211
|
-
Please answer the following question based on the speech
|
|
211
|
+
Please answer the following question based on the speech
|
|
212
212
|
transcription result above:
|
|
213
213
|
<question>{question}</question>
|
|
214
214
|
"""
|
camel/toolkits/base.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# ========= Copyright 2023-
|
|
1
|
+
# ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
2
2
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
3
|
# you may not use this file except in compliance with the License.
|
|
4
4
|
# You may obtain a copy of the License at
|
|
@@ -10,12 +10,19 @@
|
|
|
10
10
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
11
11
|
# See the License for the specific language governing permissions and
|
|
12
12
|
# limitations under the License.
|
|
13
|
-
# ========= Copyright 2023-
|
|
13
|
+
# ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
14
14
|
|
|
15
|
-
from typing import List, Literal, Optional
|
|
15
|
+
from typing import TYPE_CHECKING, List, Literal, Optional
|
|
16
16
|
|
|
17
|
+
from camel.logger import get_logger
|
|
17
18
|
from camel.toolkits import FunctionTool
|
|
18
|
-
from camel.utils import AgentOpsMeta, with_timeout
|
|
19
|
+
from camel.utils import AgentOpsMeta, Constants, with_timeout
|
|
20
|
+
|
|
21
|
+
if TYPE_CHECKING:
|
|
22
|
+
from camel.agents import ChatAgent
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
logger = get_logger(__name__)
|
|
19
26
|
|
|
20
27
|
|
|
21
28
|
class BaseToolkit(metaclass=AgentOpsMeta):
|
|
@@ -28,9 +35,9 @@ class BaseToolkit(metaclass=AgentOpsMeta):
|
|
|
28
35
|
from mcp.server import FastMCP
|
|
29
36
|
|
|
30
37
|
mcp: FastMCP
|
|
31
|
-
timeout: Optional[float] =
|
|
38
|
+
timeout: Optional[float] = Constants.TIMEOUT_THRESHOLD
|
|
32
39
|
|
|
33
|
-
def __init__(self, timeout: Optional[float] =
|
|
40
|
+
def __init__(self, timeout: Optional[float] = Constants.TIMEOUT_THRESHOLD):
|
|
34
41
|
# check if timeout is a positive number
|
|
35
42
|
if timeout is not None and timeout <= 0:
|
|
36
43
|
raise ValueError("Timeout must be a positive number.")
|
|
@@ -41,7 +48,9 @@ class BaseToolkit(metaclass=AgentOpsMeta):
|
|
|
41
48
|
super().__init_subclass__(**kwargs)
|
|
42
49
|
for attr_name, attr_value in cls.__dict__.items():
|
|
43
50
|
if callable(attr_value) and not attr_name.startswith("__"):
|
|
44
|
-
|
|
51
|
+
# Skip methods that have manual timeout management
|
|
52
|
+
if not getattr(attr_value, '_manual_timeout', False):
|
|
53
|
+
setattr(cls, attr_name, with_timeout(attr_value))
|
|
45
54
|
|
|
46
55
|
def get_tools(self) -> List[FunctionTool]:
|
|
47
56
|
r"""Returns a list of FunctionTool objects representing the
|
|
@@ -63,3 +72,52 @@ class BaseToolkit(metaclass=AgentOpsMeta):
|
|
|
63
72
|
the MCP server in.
|
|
64
73
|
"""
|
|
65
74
|
self.mcp.run(mode)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
class RegisteredAgentToolkit:
|
|
78
|
+
r"""Mixin class for toolkits that need to register a ChatAgent.
|
|
79
|
+
|
|
80
|
+
This mixin provides a standard interface for toolkits that require
|
|
81
|
+
a reference to a ChatAgent instance. The ChatAgent will check if a
|
|
82
|
+
toolkit has this mixin and automatically register itself.
|
|
83
|
+
"""
|
|
84
|
+
|
|
85
|
+
def __init__(self):
|
|
86
|
+
self._agent: Optional["ChatAgent"] = None
|
|
87
|
+
|
|
88
|
+
@property
|
|
89
|
+
def agent(self) -> Optional["ChatAgent"]:
|
|
90
|
+
r"""Get the registered ChatAgent instance.
|
|
91
|
+
|
|
92
|
+
Returns:
|
|
93
|
+
Optional[ChatAgent]: The registered agent, or None if not
|
|
94
|
+
registered.
|
|
95
|
+
|
|
96
|
+
Note:
|
|
97
|
+
If None is returned, it means the toolkit has not been registered
|
|
98
|
+
with a ChatAgent yet. Make sure to pass this toolkit to a ChatAgent
|
|
99
|
+
via the toolkits parameter during initialization.
|
|
100
|
+
"""
|
|
101
|
+
if self._agent is None:
|
|
102
|
+
logger.warning(
|
|
103
|
+
f"{self.__class__.__name__} does not have a "
|
|
104
|
+
f"registered ChatAgent. "
|
|
105
|
+
f"Please ensure this toolkit is passed to a ChatAgent via the "
|
|
106
|
+
f"'toolkits_to_register_agent' parameter during ChatAgent "
|
|
107
|
+
f"initialization if you want to use the tools that require a "
|
|
108
|
+
f"registered agent."
|
|
109
|
+
)
|
|
110
|
+
return self._agent
|
|
111
|
+
|
|
112
|
+
def register_agent(self, agent: "ChatAgent") -> None:
|
|
113
|
+
r"""Register a ChatAgent with this toolkit.
|
|
114
|
+
|
|
115
|
+
This method allows registering an agent after initialization. The
|
|
116
|
+
ChatAgent will automatically call this method if the toolkit to
|
|
117
|
+
register inherits from RegisteredAgentToolkit.
|
|
118
|
+
|
|
119
|
+
Args:
|
|
120
|
+
agent (ChatAgent): The ChatAgent instance to register.
|
|
121
|
+
"""
|
|
122
|
+
self._agent = agent
|
|
123
|
+
logger.info(f"Agent registered with {self.__class__.__name__}")
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# ========= Copyright 2023-
|
|
1
|
+
# ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
2
2
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
3
|
# you may not use this file except in compliance with the License.
|
|
4
4
|
# You may obtain a copy of the License at
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
11
11
|
# See the License for the specific language governing permissions and
|
|
12
12
|
# limitations under the License.
|
|
13
|
-
# ========= Copyright 2023-
|
|
13
|
+
# ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
14
14
|
import os
|
|
15
15
|
from typing import Any, Dict, List, Optional
|
|
16
16
|
|