camel-ai 0.2.59__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 +5012 -902
- 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 +39 -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 +94 -0
- camel/benchmarks/mock_website/mock_web.py +299 -0
- camel/benchmarks/mock_website/requirements.txt +3 -0
- camel/benchmarks/mock_website/shopping_mall/app.py +465 -0
- camel/benchmarks/mock_website/task.json +104 -0
- 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 +26 -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 +8 -7
- 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 +3 -3
- camel/configs/cometapi_config.py +106 -0
- camel/configs/crynux_config.py +94 -0
- 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 +3 -3
- 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 +8 -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 +3 -3
- camel/configs/samba_config.py +8 -6
- 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_collector → data_collectors}/__init__.py +2 -2
- camel/{data_collector → data_collectors}/alpaca_collector.py +19 -10
- camel/{data_collector → data_collectors}/base.py +2 -2
- camel/{data_collector → data_collectors}/sharegpt_collector.py +3 -3
- camel/datagen/__init__.py +2 -2
- camel/datagen/cot_datagen.py +32 -37
- camel/datagen/evol_instruct/__init__.py +2 -2
- camel/datagen/evol_instruct/evol_instruct.py +2 -2
- camel/datagen/evol_instruct/scorer.py +24 -25
- camel/datagen/evol_instruct/templates.py +48 -48
- 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 +3 -3
- camel/datasets/self_instruct_generator.py +2 -2
- camel/datasets/static_dataset.py +152 -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 +10 -3
- 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 +4 -4
- camel/embeddings/together_embedding.py +2 -2
- camel/embeddings/vlm_embedding.py +11 -4
- 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 +16 -3
- camel/interpreters/docker/Dockerfile +53 -7
- camel/interpreters/docker_interpreter.py +70 -11
- camel/interpreters/e2b_interpreter.py +59 -11
- camel/interpreters/internal_python_interpreter.py +81 -4
- camel/interpreters/interpreter_error.py +2 -2
- camel/interpreters/ipython_interpreter.py +23 -5
- camel/interpreters/microsandbox_interpreter.py +395 -0
- camel/interpreters/subprocess_interpreter.py +36 -4
- camel/loaders/__init__.py +17 -5
- 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 +128 -93
- 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 +148 -0
- 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 +126 -9
- 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 +98 -13
- camel/messages/__init__.py +2 -2
- camel/messages/base.py +193 -46
- 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 +18 -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 +263 -63
- 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 +81 -21
- camel/models/cometapi_model.py +83 -0
- camel/models/crynux_model.py +87 -0
- camel/models/deepseek_model.py +61 -59
- camel/models/fish_audio_model.py +8 -2
- camel/models/gemini_model.py +439 -30
- camel/models/groq_model.py +11 -19
- camel/models/internlm_model.py +11 -18
- camel/models/litellm_model.py +94 -34
- camel/models/lmstudio_model.py +17 -20
- camel/models/minimax_model.py +83 -0
- camel/models/mistral_model.py +84 -19
- camel/models/model_factory.py +49 -6
- camel/models/model_manager.py +33 -11
- 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 +234 -27
- camel/models/openai_model.py +255 -39
- 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 +90 -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 +117 -49
- camel/models/sglang_model.py +162 -42
- 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 +69 -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 +23 -3
- camel/retrievers/base.py +2 -2
- camel/retrievers/bm25_retriever.py +3 -4
- camel/retrievers/cohere_rerank_retriever.py +2 -2
- camel/retrievers/hybrid_retrival.py +4 -4
- camel/retrievers/vector_retriever.py +2 -2
- camel/runtimes/Dockerfile.multi-toolkit +90 -0
- camel/{runtime → runtimes}/__init__.py +2 -2
- camel/runtimes/api.py +153 -0
- camel/{runtime → runtimes}/base.py +2 -2
- camel/{runtime → runtimes}/configs.py +13 -13
- camel/{runtime → runtimes}/daytona_runtime.py +18 -19
- camel/{runtime → runtimes}/docker_runtime.py +13 -13
- camel/{runtime → runtimes}/llm_guard_runtime.py +28 -28
- camel/{runtime → runtimes}/remote_http_runtime.py +12 -12
- camel/{runtime → runtimes}/ubuntu_docker_runtime.py +3 -3
- camel/{runtime → runtimes}/utils/__init__.py +2 -2
- camel/{runtime → runtimes}/utils/function_risk_toolkit.py +2 -2
- camel/{runtime → 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 +9 -5
- camel/societies/workforce/events.py +143 -0
- camel/societies/workforce/prompts.py +258 -33
- camel/societies/workforce/role_playing_worker.py +95 -30
- camel/societies/workforce/single_agent_worker.py +659 -30
- camel/societies/workforce/structured_output_handler.py +512 -0
- camel/societies/workforce/task_channel.py +182 -38
- camel/societies/workforce/utils.py +784 -18
- camel/societies/workforce/worker.py +96 -28
- camel/societies/workforce/workflow_memory_manager.py +1746 -0
- camel/societies/workforce/workforce.py +5730 -366
- 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 +10 -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 +12 -2
- camel/storages/vectordb_storages/base.py +2 -2
- camel/storages/vectordb_storages/chroma.py +731 -0
- camel/storages/vectordb_storages/faiss.py +712 -0
- camel/storages/vectordb_storages/milvus.py +2 -2
- camel/storages/vectordb_storages/oceanbase.py +16 -17
- 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 +714 -0
- camel/tasks/__init__.py +2 -2
- camel/tasks/task.py +366 -27
- 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 +58 -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 +174 -575
- camel/toolkits/audio_analysis_toolkit.py +3 -3
- camel/toolkits/base.py +65 -7
- camel/toolkits/bohrium_toolkit.py +318 -0
- camel/toolkits/browser_toolkit.py +306 -566
- camel/toolkits/browser_toolkit_commons.py +568 -0
- camel/toolkits/code_execution.py +67 -11
- 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 +910 -70
- camel/toolkits/file_toolkit.py +1402 -0
- camel/toolkits/function_tool.py +128 -20
- camel/toolkits/github_toolkit.py +148 -43
- 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 -3
- camel/toolkits/image_generation_toolkit.py +390 -0
- camel/toolkits/jina_reranker_toolkit.py +195 -79
- 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 +841 -600
- 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 +86 -74
- camel/toolkits/playwright_mcp_toolkit.py +27 -32
- camel/toolkits/pptx_toolkit.py +790 -0
- 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 +134 -0
- 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 +8 -3
- camel/toolkits/vertex_ai_veo_toolkit.py +590 -0
- camel/toolkits/video_analysis_toolkit.py +112 -29
- camel/toolkits/video_download_toolkit.py +22 -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 +53 -25
- 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 +454 -35
- camel/types/mcp_registries.py +2 -2
- camel/types/openai_types.py +4 -4
- camel/types/unified_model_type.py +43 -6
- camel/utils/__init__.py +20 -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 +65 -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 +258 -0
- camel/utils/mcp.py +140 -6
- camel/utils/mcp_client.py +1056 -0
- 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.59.dist-info → camel_ai-0.2.82.dist-info}/METADATA +349 -108
- camel_ai-0.2.82.dist-info/RECORD +507 -0
- {camel_ai-0.2.59.dist-info → camel_ai-0.2.82.dist-info}/WHEEL +1 -1
- {camel_ai-0.2.59.dist-info → camel_ai-0.2.82.dist-info}/licenses/LICENSE +1 -1
- camel/loaders/pandas_reader.py +0 -368
- camel/runtime/api.py +0 -97
- camel/toolkits/dalle_toolkit.py +0 -171
- camel/toolkits/file_write_toolkit.py +0 -395
- camel/toolkits/openai_agent_toolkit.py +0 -135
- camel/toolkits/terminal_toolkit.py +0 -1037
- camel_ai-0.2.59.dist-info/RECORD +0 -410
camel/agents/critic_agent.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
|
import random
|
|
15
15
|
import warnings
|
|
16
16
|
from typing import Any, Dict, List, Optional, Sequence, 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
|
import re
|
|
15
15
|
from typing import Dict, List, Optional, Union
|
|
16
16
|
|
|
@@ -103,105 +103,105 @@ class DeductiveReasonerAgent(ChatAgent):
|
|
|
103
103
|
"""
|
|
104
104
|
self.reset()
|
|
105
105
|
|
|
106
|
-
deduce_prompt = """You are a deductive reasoner. You are tasked to
|
|
107
|
-
complete the TASK based on the THOUGHT OF DEDUCTIVE REASONING, the
|
|
108
|
-
STARTING STATE A and the TARGET STATE B. You are given the CONTEXT
|
|
106
|
+
deduce_prompt = """You are a deductive reasoner. You are tasked to
|
|
107
|
+
complete the TASK based on the THOUGHT OF DEDUCTIVE REASONING, the
|
|
108
|
+
STARTING STATE A and the TARGET STATE B. You are given the CONTEXT
|
|
109
109
|
CONTENT to help you complete the TASK.
|
|
110
|
-
Your answer MUST strictly adhere to the structure of ANSWER TEMPLATE, ONLY
|
|
110
|
+
Your answer MUST strictly adhere to the structure of ANSWER TEMPLATE, ONLY
|
|
111
111
|
fill in the BLANKs, and DO NOT alter or modify any other part of the template
|
|
112
112
|
|
|
113
113
|
===== MODELING OF DEDUCTIVE REASONING =====
|
|
114
|
-
You are tasked with understanding a mathematical model based on the components
|
|
114
|
+
You are tasked with understanding a mathematical model based on the components
|
|
115
115
|
${A, B, C, Q, L}$. In this model: ``L: A ⊕ C -> q * B``.
|
|
116
116
|
- $A$ represents the known starting state.
|
|
117
117
|
- $B$ represents the known target state.
|
|
118
118
|
- $C$ represents the conditions required to transition from $A$ to $B$.
|
|
119
|
-
- $Q$ represents the quality or effectiveness of the transition from $A$ to
|
|
119
|
+
- $Q$ represents the quality or effectiveness of the transition from $A$ to
|
|
120
120
|
$B$.
|
|
121
121
|
- $L$ represents the path or process from $A$ to $B$.
|
|
122
122
|
|
|
123
123
|
===== THOUGHT OF DEDUCTIVE REASONING =====
|
|
124
124
|
1. Define the Parameters of A and B:
|
|
125
|
-
- Characterization: Before delving into transitions, thoroughly understand
|
|
126
|
-
the nature and boundaries of both $A$ and $B$. This includes the type,
|
|
125
|
+
- Characterization: Before delving into transitions, thoroughly understand
|
|
126
|
+
the nature and boundaries of both $A$ and $B$. This includes the type,
|
|
127
127
|
properties, constraints, and possible interactions between the two.
|
|
128
|
-
- Contrast and Compare: Highlight the similarities and differences between
|
|
129
|
-
$A$ and $B$. This comparative analysis will give an insight into what
|
|
128
|
+
- Contrast and Compare: Highlight the similarities and differences between
|
|
129
|
+
$A$ and $B$. This comparative analysis will give an insight into what
|
|
130
130
|
needs changing and what remains constant.
|
|
131
131
|
2. Historical & Empirical Analysis:
|
|
132
|
-
- Previous Transitions according to the Knowledge Base of GPT: (if
|
|
133
|
-
applicable) Extract conditions and patterns from the historical instances
|
|
134
|
-
where a similar transition from a state comparable to $A$ moved towards
|
|
132
|
+
- Previous Transitions according to the Knowledge Base of GPT: (if
|
|
133
|
+
applicable) Extract conditions and patterns from the historical instances
|
|
134
|
+
where a similar transition from a state comparable to $A$ moved towards
|
|
135
135
|
$B$.
|
|
136
|
-
- Scientific Principles: (if applicable) Consider the underlying
|
|
137
|
-
scientific principles governing or related to the states and their
|
|
138
|
-
transition. For example, if $A$ and $B$ are physical states, laws of
|
|
136
|
+
- Scientific Principles: (if applicable) Consider the underlying
|
|
137
|
+
scientific principles governing or related to the states and their
|
|
138
|
+
transition. For example, if $A$ and $B$ are physical states, laws of
|
|
139
139
|
physics might apply.
|
|
140
140
|
3. Logical Deduction of Conditions ($C$):
|
|
141
|
-
- Direct Path Analysis: What are the immediate and direct conditions
|
|
141
|
+
- Direct Path Analysis: What are the immediate and direct conditions
|
|
142
142
|
required to move from $A$ to $B$?
|
|
143
|
-
- Intermediate States: Are there states between $A$ and $B$ that must be
|
|
144
|
-
traversed or can be used to make the transition smoother or more
|
|
143
|
+
- Intermediate States: Are there states between $A$ and $B$ that must be
|
|
144
|
+
traversed or can be used to make the transition smoother or more
|
|
145
145
|
efficient? If yes, what is the content?
|
|
146
|
-
- Constraints & Limitations: Identify potential barriers or restrictions
|
|
147
|
-
in moving from $A$ to $B$. These can be external (e.g., environmental
|
|
146
|
+
- Constraints & Limitations: Identify potential barriers or restrictions
|
|
147
|
+
in moving from $A$ to $B$. These can be external (e.g., environmental
|
|
148
148
|
factors) or internal (properties of $A$ or $B$).
|
|
149
|
-
- Resource and Information Analysis: What resources and information are
|
|
150
|
-
required for the transition? This could be time, entity, factor, code
|
|
149
|
+
- Resource and Information Analysis: What resources and information are
|
|
150
|
+
required for the transition? This could be time, entity, factor, code
|
|
151
151
|
language, software platform, unknowns, etc.
|
|
152
|
-
- External Influences: Consider socio-economic, political, or
|
|
153
|
-
environmental factors (if applicable) that could influence the transition
|
|
152
|
+
- External Influences: Consider socio-economic, political, or
|
|
153
|
+
environmental factors (if applicable) that could influence the transition
|
|
154
154
|
conditions.
|
|
155
|
-
- Creative/Heuristic Reasoning: Open your mind to multiple possible $C$'s,
|
|
156
|
-
no matter how unconventional they might seem. Utilize analogies,
|
|
157
|
-
metaphors, or brainstorming techniques to envision possible conditions or
|
|
155
|
+
- Creative/Heuristic Reasoning: Open your mind to multiple possible $C$'s,
|
|
156
|
+
no matter how unconventional they might seem. Utilize analogies,
|
|
157
|
+
metaphors, or brainstorming techniques to envision possible conditions or
|
|
158
158
|
paths from $A$ to $B$.
|
|
159
|
-
- The conditions $C$ should be multiple but in one sentence. And each
|
|
159
|
+
- The conditions $C$ should be multiple but in one sentence. And each
|
|
160
160
|
condition should be concerned with one aspect/entity.
|
|
161
161
|
4. Entity/Label Recognition of Conditions ($C$):
|
|
162
|
-
- Identify and categorize entities of Conditions ($C$) such as the names,
|
|
163
|
-
locations, dates, specific technical terms or contextual parameters that
|
|
162
|
+
- Identify and categorize entities of Conditions ($C$) such as the names,
|
|
163
|
+
locations, dates, specific technical terms or contextual parameters that
|
|
164
164
|
might be associated with events, innovations post-2022.
|
|
165
|
-
- The output of the entities/labels will be used as tags or labels for
|
|
166
|
-
semantic similarity searches. The entities/labels may be the words, or
|
|
167
|
-
phrases, each of them should contain valuable, high information entropy
|
|
165
|
+
- The output of the entities/labels will be used as tags or labels for
|
|
166
|
+
semantic similarity searches. The entities/labels may be the words, or
|
|
167
|
+
phrases, each of them should contain valuable, high information entropy
|
|
168
168
|
information, and should be independent.
|
|
169
|
-
- Ensure that the identified entities are formatted in a manner suitable
|
|
170
|
-
for database indexing and retrieval. Organize the entities into
|
|
171
|
-
categories, and combine the category with its instance into a continuous
|
|
169
|
+
- Ensure that the identified entities are formatted in a manner suitable
|
|
170
|
+
for database indexing and retrieval. Organize the entities into
|
|
171
|
+
categories, and combine the category with its instance into a continuous
|
|
172
172
|
phrase, without using colons or other separators.
|
|
173
|
-
- Format these entities for database indexing: output the category rather
|
|
174
|
-
than its instance/content into a continuous phrase. For example, instead
|
|
173
|
+
- Format these entities for database indexing: output the category rather
|
|
174
|
+
than its instance/content into a continuous phrase. For example, instead
|
|
175
175
|
of "Jan. 02", identify it as "Event time".
|
|
176
176
|
5. Quality Assessment ($Q$):
|
|
177
|
-
- Efficiency: How efficient is the transition from $A$ to $B$, which
|
|
177
|
+
- Efficiency: How efficient is the transition from $A$ to $B$, which
|
|
178
178
|
measures the resources used versus the desired outcome?
|
|
179
|
-
- Effectiveness: Did the transition achieve the desired outcome or was the
|
|
179
|
+
- Effectiveness: Did the transition achieve the desired outcome or was the
|
|
180
180
|
target state achieved as intended?
|
|
181
|
-
- Safety & Risks: Assess any risks associated with the transition and the
|
|
181
|
+
- Safety & Risks: Assess any risks associated with the transition and the
|
|
182
182
|
measures to mitigate them.
|
|
183
|
-
- Feedback Mechanisms: Incorporate feedback loops to continuously monitor
|
|
183
|
+
- Feedback Mechanisms: Incorporate feedback loops to continuously monitor
|
|
184
184
|
and adjust the quality of transition, making it more adaptive.
|
|
185
185
|
6. Iterative Evaluation:
|
|
186
|
-
- Test & Refine: Based on the initially deduced conditions and assessed
|
|
187
|
-
quality, iterate the process to refine and optimize the transition. This
|
|
188
|
-
might involve tweaking conditions, employing different paths, or changing
|
|
186
|
+
- Test & Refine: Based on the initially deduced conditions and assessed
|
|
187
|
+
quality, iterate the process to refine and optimize the transition. This
|
|
188
|
+
might involve tweaking conditions, employing different paths, or changing
|
|
189
189
|
resources.
|
|
190
|
-
- Feedback Integration: Use feedback to make improvements and increase the
|
|
190
|
+
- Feedback Integration: Use feedback to make improvements and increase the
|
|
191
191
|
quality of the transition.
|
|
192
|
-
7. Real-world scenarios often present challenges that may not be captured by
|
|
192
|
+
7. Real-world scenarios often present challenges that may not be captured by
|
|
193
193
|
models and frameworks. While using the model, maintain an adaptive mindset:
|
|
194
|
-
- Scenario Exploration: Continuously imagine various possible scenarios,
|
|
194
|
+
- Scenario Exploration: Continuously imagine various possible scenarios,
|
|
195
195
|
both positive and negative, to prepare for unexpected events.
|
|
196
196
|
- Flexibility: Be prepared to modify conditions ($C$) or alter the path/
|
|
197
197
|
process ($L$) if unforeseen challenges arise.
|
|
198
|
-
- Feedback Integration: Rapidly integrate feedback from actual
|
|
199
|
-
implementations to adjust the model's application, ensuring relevancy and
|
|
198
|
+
- Feedback Integration: Rapidly integrate feedback from actual
|
|
199
|
+
implementations to adjust the model's application, ensuring relevancy and
|
|
200
200
|
effectiveness.
|
|
201
201
|
|
|
202
202
|
===== TASK =====
|
|
203
|
-
Given the starting state $A$ and the target state $B$, assuming that a path
|
|
204
|
-
$L$ always exists between $A$ and $B$, how can one deduce or identify the
|
|
203
|
+
Given the starting state $A$ and the target state $B$, assuming that a path
|
|
204
|
+
$L$ always exists between $A$ and $B$, how can one deduce or identify the
|
|
205
205
|
necessary conditions $C$ and the quality $Q$ of the transition?
|
|
206
206
|
|
|
207
207
|
===== STARTING STATE $A$ =====
|
|
@@ -217,7 +217,7 @@ necessary conditions $C$ and the quality $Q$ of the transition?
|
|
|
217
217
|
- Logical Deduction of Conditions ($C$) (multiple conditions can be deduced):
|
|
218
218
|
condition <NUM>:
|
|
219
219
|
<BLANK>.
|
|
220
|
-
- Entity/Label Recognition of Conditions:\n[<BLANK>, <BLANK>, ...] (include
|
|
220
|
+
- Entity/Label Recognition of Conditions:\n[<BLANK>, <BLANK>, ...] (include
|
|
221
221
|
square brackets)
|
|
222
222
|
- Quality Assessment ($Q$) (do not use symbols):
|
|
223
223
|
<BLANK>.
|
camel/agents/embodied_agent.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
|
from typing import Any, List, Optional
|
|
15
15
|
|
|
16
16
|
from colorama import Fore
|
|
@@ -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
|
from typing import TYPE_CHECKING, Optional, Union
|
|
15
15
|
|
|
16
16
|
if TYPE_CHECKING:
|
|
@@ -40,53 +40,53 @@ except (ImportError, AttributeError):
|
|
|
40
40
|
|
|
41
41
|
|
|
42
42
|
text_prompt = """
|
|
43
|
-
You are tasked with extracting nodes and relationships from given content and
|
|
44
|
-
structures them into Node and Relationship objects. Here's the outline of what
|
|
43
|
+
You are tasked with extracting nodes and relationships from given content and
|
|
44
|
+
structures them into Node and Relationship objects. Here's the outline of what
|
|
45
45
|
you needs to do:
|
|
46
46
|
|
|
47
47
|
Content Extraction:
|
|
48
|
-
You should be able to process input content and identify entities mentioned
|
|
48
|
+
You should be able to process input content and identify entities mentioned
|
|
49
49
|
within it.
|
|
50
|
-
Entities can be any noun phrases or concepts that represent distinct entities
|
|
50
|
+
Entities can be any noun phrases or concepts that represent distinct entities
|
|
51
51
|
in the context of the given content.
|
|
52
52
|
|
|
53
53
|
Node Extraction:
|
|
54
54
|
For each identified entity, you should create a Node object.
|
|
55
55
|
Each Node object should have a unique identifier (id) and a type (type).
|
|
56
|
-
Additional properties associated with the node can also be extracted and
|
|
56
|
+
Additional properties associated with the node can also be extracted and
|
|
57
57
|
stored.
|
|
58
58
|
|
|
59
59
|
Relationship Extraction:
|
|
60
60
|
You should identify relationships between entities mentioned in the content.
|
|
61
61
|
For each relationship, create a Relationship object.
|
|
62
|
-
A Relationship object should have a subject (subj) and an object (obj) which
|
|
62
|
+
A Relationship object should have a subject (subj) and an object (obj) which
|
|
63
63
|
are Node objects representing the entities involved in the relationship.
|
|
64
|
-
Each relationship should also have a type (type), and additional properties if
|
|
64
|
+
Each relationship should also have a type (type), and additional properties if
|
|
65
65
|
applicable.
|
|
66
66
|
|
|
67
67
|
Output Formatting:
|
|
68
|
-
The extracted nodes and relationships should be formatted as instances of the
|
|
68
|
+
The extracted nodes and relationships should be formatted as instances of the
|
|
69
69
|
provided Node and Relationship classes.
|
|
70
70
|
Ensure that the extracted data adheres to the structure defined by the classes.
|
|
71
|
-
Output the structured data in a format that can be easily validated against
|
|
71
|
+
Output the structured data in a format that can be easily validated against
|
|
72
72
|
the provided code.
|
|
73
|
-
Do not wrap the output in lists or dictionaries, provide the Node and
|
|
73
|
+
Do not wrap the output in lists or dictionaries, provide the Node and
|
|
74
74
|
Relationship with unique identifiers.
|
|
75
|
-
Strictly follow the format provided in the example output, do not add any
|
|
75
|
+
Strictly follow the format provided in the example output, do not add any
|
|
76
76
|
additional information.
|
|
77
77
|
|
|
78
78
|
|
|
79
79
|
Instructions for you:
|
|
80
80
|
Read the provided content thoroughly.
|
|
81
|
-
Identify distinct entities mentioned in the content and categorize them as
|
|
81
|
+
Identify distinct entities mentioned in the content and categorize them as
|
|
82
82
|
nodes.
|
|
83
|
-
Determine relationships between these entities and represent them as directed
|
|
83
|
+
Determine relationships between these entities and represent them as directed
|
|
84
84
|
relationships.
|
|
85
85
|
Provide the extracted nodes and relationships in the specified format below.
|
|
86
86
|
Example for you:
|
|
87
87
|
|
|
88
88
|
Example Content:
|
|
89
|
-
"John works at XYZ Corporation. He is a software engineer. The company is
|
|
89
|
+
"John works at XYZ Corporation. He is a software engineer. The company is
|
|
90
90
|
located in New York City."
|
|
91
91
|
|
|
92
92
|
Expected Output:
|
|
@@ -99,14 +99,14 @@ Node(id='New York City', type='Location')
|
|
|
99
99
|
|
|
100
100
|
Relationships:
|
|
101
101
|
|
|
102
|
-
Relationship(subj=Node(id='John', type='Person'), obj=Node(id='XYZ
|
|
102
|
+
Relationship(subj=Node(id='John', type='Person'), obj=Node(id='XYZ
|
|
103
103
|
Corporation', type='Organization'), type='WorksAt')
|
|
104
|
-
Relationship(subj=Node(id='John', type='Person'), obj=Node(id='New York City',
|
|
104
|
+
Relationship(subj=Node(id='John', type='Person'), obj=Node(id='New York City',
|
|
105
105
|
type='Location'), type='ResidesIn')
|
|
106
106
|
|
|
107
107
|
===== TASK =====
|
|
108
|
-
Please extracts nodes and relationships from given content and structures them
|
|
109
|
-
into Node and Relationship objects.
|
|
108
|
+
Please extracts nodes and relationships from given content and structures them
|
|
109
|
+
into Node and Relationship objects.
|
|
110
110
|
|
|
111
111
|
{task}
|
|
112
112
|
"""
|
camel/agents/mcp_agent.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,21 +10,30 @@
|
|
|
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
|
import asyncio
|
|
16
16
|
import json
|
|
17
17
|
import platform
|
|
18
|
-
import
|
|
19
|
-
|
|
18
|
+
from typing import (
|
|
19
|
+
TYPE_CHECKING,
|
|
20
|
+
Any,
|
|
21
|
+
Callable,
|
|
22
|
+
Dict,
|
|
23
|
+
List,
|
|
24
|
+
Optional,
|
|
25
|
+
Union,
|
|
26
|
+
cast,
|
|
27
|
+
)
|
|
20
28
|
|
|
21
|
-
from camel.agents import ChatAgent
|
|
29
|
+
from camel.agents.chat_agent import ChatAgent
|
|
22
30
|
from camel.logger import get_logger
|
|
23
31
|
from camel.messages import BaseMessage
|
|
24
|
-
from camel.models import BaseModelBackend
|
|
32
|
+
from camel.models.base_model import BaseModelBackend
|
|
33
|
+
from camel.models.model_factory import ModelFactory
|
|
25
34
|
from camel.prompts import TextPrompt
|
|
26
35
|
from camel.responses import ChatAgentResponse
|
|
27
|
-
from camel.toolkits import FunctionTool
|
|
36
|
+
from camel.toolkits.function_tool import FunctionTool
|
|
28
37
|
from camel.types import (
|
|
29
38
|
BaseMCPRegistryConfig,
|
|
30
39
|
MCPRegistryType,
|
|
@@ -33,6 +42,9 @@ from camel.types import (
|
|
|
33
42
|
RoleType,
|
|
34
43
|
)
|
|
35
44
|
|
|
45
|
+
if TYPE_CHECKING:
|
|
46
|
+
from camel.toolkits.mcp_toolkit import MCPToolkit
|
|
47
|
+
|
|
36
48
|
# AgentOps decorator setting
|
|
37
49
|
try:
|
|
38
50
|
import os
|
|
@@ -44,13 +56,15 @@ try:
|
|
|
44
56
|
except (ImportError, AttributeError):
|
|
45
57
|
from camel.utils import track_agent
|
|
46
58
|
|
|
59
|
+
from camel.parsers.mcp_tool_call_parser import extract_tool_calls_from_text
|
|
60
|
+
|
|
47
61
|
logger = get_logger(__name__)
|
|
48
62
|
|
|
49
63
|
|
|
50
64
|
SYS_MSG_CONTENT = """
|
|
51
|
-
You are a helpful assistant, and you prefer to use tools provided by the user
|
|
65
|
+
You are a helpful assistant, and you prefer to use tools provided by the user
|
|
52
66
|
to solve problems.
|
|
53
|
-
Using a tool, you will tell the user `server_idx`, `tool_name` and
|
|
67
|
+
Using a tool, you will tell the user `server_idx`, `tool_name` and
|
|
54
68
|
`tool_args` formatted in JSON as following:
|
|
55
69
|
```json
|
|
56
70
|
{
|
|
@@ -168,8 +182,10 @@ class MCPAgent(ChatAgent):
|
|
|
168
182
|
**kwargs,
|
|
169
183
|
)
|
|
170
184
|
|
|
171
|
-
def _initialize_mcp_toolkit(self) -> MCPToolkit:
|
|
185
|
+
def _initialize_mcp_toolkit(self) -> "MCPToolkit":
|
|
172
186
|
r"""Initialize the MCP toolkit from the provided configuration."""
|
|
187
|
+
from camel.toolkits.mcp_toolkit import MCPToolkit
|
|
188
|
+
|
|
173
189
|
config_dict = {}
|
|
174
190
|
for registry_config in self.registry_configs:
|
|
175
191
|
config_dict.update(registry_config.get_config())
|
|
@@ -191,7 +207,7 @@ class MCPAgent(ChatAgent):
|
|
|
191
207
|
self.mcp_toolkit = self._initialize_mcp_toolkit()
|
|
192
208
|
|
|
193
209
|
# If already connected, reconnect to apply changes
|
|
194
|
-
if self.mcp_toolkit and self.mcp_toolkit.is_connected
|
|
210
|
+
if self.mcp_toolkit and self.mcp_toolkit.is_connected:
|
|
195
211
|
try:
|
|
196
212
|
asyncio.run(self.disconnect())
|
|
197
213
|
asyncio.run(self.connect())
|
|
@@ -325,7 +341,7 @@ class MCPAgent(ChatAgent):
|
|
|
325
341
|
Returns:
|
|
326
342
|
ChatAgentResponse: The response from the agent.
|
|
327
343
|
"""
|
|
328
|
-
if self.mcp_toolkit and not self.mcp_toolkit.is_connected
|
|
344
|
+
if self.mcp_toolkit and not self.mcp_toolkit.is_connected:
|
|
329
345
|
await self.connect()
|
|
330
346
|
|
|
331
347
|
if self.function_calling_available:
|
|
@@ -334,27 +350,14 @@ class MCPAgent(ChatAgent):
|
|
|
334
350
|
task = f"## Task:\n {input_message}"
|
|
335
351
|
input_message = str(self._text_tools) + task
|
|
336
352
|
response = await super().astep(input_message, *args, **kwargs)
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
end_match = re.search(r'```', content[json_start:])
|
|
347
|
-
if not end_match:
|
|
348
|
-
break
|
|
349
|
-
json_end = end_match.span()[0] + json_start
|
|
350
|
-
|
|
351
|
-
tool_json = content[json_start:json_end].strip('\n')
|
|
352
|
-
try:
|
|
353
|
-
tool_calls.append(json.loads(tool_json))
|
|
354
|
-
except json.JSONDecodeError:
|
|
355
|
-
logger.warning(f"Failed to parse JSON: {tool_json}")
|
|
356
|
-
continue
|
|
357
|
-
content = content[json_end:]
|
|
353
|
+
raw_content = response.msgs[0].content if response.msgs else ""
|
|
354
|
+
content = (
|
|
355
|
+
raw_content
|
|
356
|
+
if isinstance(raw_content, str)
|
|
357
|
+
else str(raw_content)
|
|
358
|
+
)
|
|
359
|
+
|
|
360
|
+
tool_calls = extract_tool_calls_from_text(content)
|
|
358
361
|
|
|
359
362
|
if not tool_calls:
|
|
360
363
|
return response
|
|
@@ -378,14 +381,14 @@ class MCPAgent(ChatAgent):
|
|
|
378
381
|
if (
|
|
379
382
|
not isinstance(server_idx, int)
|
|
380
383
|
or server_idx < 0
|
|
381
|
-
or server_idx >= len(self.mcp_toolkit.
|
|
384
|
+
or server_idx >= len(self.mcp_toolkit.clients)
|
|
382
385
|
):
|
|
383
386
|
logger.warning(
|
|
384
387
|
f"Invalid server index: {server_idx}"
|
|
385
388
|
)
|
|
386
389
|
continue
|
|
387
390
|
|
|
388
|
-
server = self.mcp_toolkit.
|
|
391
|
+
server = self.mcp_toolkit.clients[server_idx]
|
|
389
392
|
result = await server.call_tool(tool_name, tool_args)
|
|
390
393
|
|
|
391
394
|
# Safely access content
|
|
@@ -431,7 +434,7 @@ class MCPAgent(ChatAgent):
|
|
|
431
434
|
# Use create_task and run with a future
|
|
432
435
|
coro = self.astep(input_message, *args, **kwargs)
|
|
433
436
|
future = asyncio.ensure_future(coro)
|
|
434
|
-
return asyncio.run_coroutine_threadsafe(future, loop).result()
|
|
437
|
+
return asyncio.run_coroutine_threadsafe(future, loop).result() # type: ignore [arg-type]
|
|
435
438
|
else:
|
|
436
439
|
# Safe to run normally
|
|
437
440
|
return asyncio.run(self.astep(input_message, *args, **kwargs))
|
|
@@ -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
|
import textwrap
|
|
16
16
|
from typing import Any
|
|
@@ -56,7 +56,7 @@ class MultiHopGeneratorAgent(ProgrammableChatAgent):
|
|
|
56
56
|
|
|
57
57
|
system_text: str = textwrap.dedent(
|
|
58
58
|
"""\
|
|
59
|
-
You are an expert at generating
|
|
59
|
+
You are an expert at generating
|
|
60
60
|
multi-hop question-answer pairs.
|
|
61
61
|
For each context, you should:
|
|
62
62
|
1. Identify multiple related facts or pieces of information
|
|
@@ -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 abc
|
|
15
15
|
import threading
|
|
16
16
|
from enum import Enum
|
camel/agents/repo_agent.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
|
import time
|
|
15
15
|
from enum import Enum, auto
|
|
16
16
|
from string import Template
|
|
@@ -21,6 +21,7 @@ if TYPE_CHECKING:
|
|
|
21
21
|
from pydantic import BaseModel
|
|
22
22
|
|
|
23
23
|
from camel.agents import ChatAgent
|
|
24
|
+
from camel.agents.chat_agent import StreamingChatAgentResponse
|
|
24
25
|
from camel.logger import get_logger
|
|
25
26
|
from camel.messages import BaseMessage
|
|
26
27
|
from camel.models import BaseModelBackend, ModelFactory
|
|
@@ -442,7 +443,7 @@ class RepoAgent(ChatAgent):
|
|
|
442
443
|
|
|
443
444
|
def step(
|
|
444
445
|
self, input_message: Union[BaseMessage, str], *args, **kwargs
|
|
445
|
-
) -> ChatAgentResponse:
|
|
446
|
+
) -> Union[ChatAgentResponse, StreamingChatAgentResponse]:
|
|
446
447
|
r"""Overrides `ChatAgent.step()` to first retrieve relevant context
|
|
447
448
|
from the vector store before passing the input to the language model.
|
|
448
449
|
"""
|
|
@@ -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 re
|
|
15
15
|
from typing import Dict, Optional, Union
|
|
16
16
|
|
camel/agents/search_agent.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
|
from typing import Optional
|
|
15
15
|
|
|
16
16
|
from camel.agents.chat_agent import ChatAgent
|
camel/agents/task_agent.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
|
from typing import Any, Dict, List, Optional, Union
|
|
15
15
|
|
|
16
16
|
from camel.agents.chat_agent import ChatAgent
|
|
@@ -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
|
from .base import BaseToolAgent
|
|
15
15
|
from .hugging_face_tool_agent import HuggingFaceToolAgent
|
|
16
16
|
|
camel/agents/tool_agents/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,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
|
from camel.agents import BaseAgent
|
|
15
15
|
|
|
16
16
|
|
|
@@ -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
|
from typing import Any, Optional
|
|
15
15
|
|
|
16
16
|
from camel.agents.tool_agents.base import BaseToolAgent
|
|
@@ -90,7 +90,7 @@ rivers_and_lakes_image.save("./rivers_and_lakes_image.png")
|
|
|
90
90
|
sea_add_island_image = {name}.step("Draw me a picture of the sea then transform the picture to add an island")
|
|
91
91
|
sea_add_island_image.save("./sea_add_island_image.png")
|
|
92
92
|
|
|
93
|
-
# If you'd like to keep a state across executions or to pass non-text objects to the agent,
|
|
93
|
+
# If you'd like to keep a state across executions or to pass non-text objects to the agent,
|
|
94
94
|
# you can do so by specifying variables that you would like the agent to use. For example,
|
|
95
95
|
# you could generate the first image of rivers and lakes, and ask the model to update that picture to add an island by doing the following:
|
|
96
96
|
picture = {name}.step("Generate a picture of rivers and lakes.")
|