camel-ai 0.2.65__py3-none-any.whl → 0.2.83a6__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 +5107 -995
- 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 +29 -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/function_gemma_config.py +59 -0
- 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 +109 -230
- 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 +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 +214 -115
- camel/models/base_audio_model.py +5 -3
- camel/models/base_model.py +378 -31
- camel/models/cerebras_model.py +83 -0
- camel/models/cohere_model.py +18 -49
- camel/models/cometapi_model.py +83 -0
- camel/models/crynux_model.py +11 -18
- camel/models/deepseek_model.py +20 -84
- camel/models/fish_audio_model.py +8 -2
- camel/models/function_gemma_model.py +889 -0
- camel/models/gemini_model.py +391 -52
- camel/models/groq_model.py +11 -19
- camel/models/internlm_model.py +11 -18
- camel/models/litellm_model.py +57 -49
- camel/models/lmstudio_model.py +17 -20
- camel/models/minimax_model.py +83 -0
- camel/models/mistral_model.py +20 -47
- camel/models/model_factory.py +39 -3
- camel/models/model_manager.py +26 -8
- camel/models/modelscope_model.py +13 -193
- camel/models/moonshot_model.py +183 -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 +190 -71
- camel/models/openai_model.py +192 -86
- 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 +23 -49
- 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 +50 -75
- camel/models/sglang_model.py +90 -68
- 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 +158 -19
- camel/models/watsonx_model.py +9 -47
- 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 +145 -0
- camel/societies/workforce/prompts.py +259 -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 +5354 -372
- 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 +57 -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 +106 -6
- 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 +205 -27
- 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 +1958 -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 +1940 -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 +325 -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 +728 -0
- camel/toolkits/microsoft_outlook_mail_toolkit.py +1885 -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 +606 -156
- 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 +1281 -0
- camel/toolkits/terminal_toolkit/utils.py +659 -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 +381 -41
- camel/types/mcp_registries.py +2 -2
- camel/types/openai_types.py +4 -4
- camel/types/unified_model_type.py +46 -10
- camel/utils/__init__.py +5 -2
- camel/utils/agent_context.py +41 -0
- 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 +18 -10
- 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.83a6.dist-info}/METADATA +355 -117
- camel_ai-0.2.83a6.dist-info/RECORD +511 -0
- {camel_ai-0.2.65.dist-info → camel_ai-0.2.83a6.dist-info}/WHEEL +1 -1
- {camel_ai-0.2.65.dist-info → camel_ai-0.2.83a6.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/models/sglang_model.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# ========= Copyright 2023-
|
|
1
|
+
# ========= Copyright 2023-2026 @ 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-2026 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
14
14
|
import logging
|
|
15
15
|
import os
|
|
16
16
|
import subprocess
|
|
@@ -21,7 +21,7 @@ from typing import Any, Dict, List, Optional, Type, Union
|
|
|
21
21
|
from openai import AsyncOpenAI, AsyncStream, OpenAI, Stream
|
|
22
22
|
from pydantic import BaseModel
|
|
23
23
|
|
|
24
|
-
from camel.configs import
|
|
24
|
+
from camel.configs import SGLangConfig
|
|
25
25
|
from camel.messages import OpenAIMessage
|
|
26
26
|
from camel.models import BaseModelBackend
|
|
27
27
|
from camel.types import (
|
|
@@ -32,9 +32,7 @@ from camel.types import (
|
|
|
32
32
|
from camel.utils import (
|
|
33
33
|
BaseTokenCounter,
|
|
34
34
|
OpenAITokenCounter,
|
|
35
|
-
get_current_agent_session_id,
|
|
36
35
|
update_current_observation,
|
|
37
|
-
update_langfuse_trace,
|
|
38
36
|
)
|
|
39
37
|
|
|
40
38
|
if os.environ.get("LANGFUSE_ENABLED", "False").lower() == "true":
|
|
@@ -70,8 +68,21 @@ class SGLangModel(BaseModelBackend):
|
|
|
70
68
|
API calls. If not provided, will fall back to the MODEL_TIMEOUT
|
|
71
69
|
environment variable or default to 180 seconds.
|
|
72
70
|
(default: :obj:`None`)
|
|
73
|
-
|
|
74
|
-
|
|
71
|
+
max_retries (int, optional): Maximum number of retries for API calls.
|
|
72
|
+
(default: :obj:`3`)
|
|
73
|
+
client (Optional[Any], optional): A custom synchronous
|
|
74
|
+
OpenAI-compatible client instance. If provided, this client will
|
|
75
|
+
be used instead of creating a new one. Note: When using custom
|
|
76
|
+
clients with SGLang, server auto-start features will be disabled.
|
|
77
|
+
(default: :obj:`None`)
|
|
78
|
+
async_client (Optional[Any], optional): A custom asynchronous
|
|
79
|
+
OpenAI-compatible client instance. If provided, this client will
|
|
80
|
+
be used instead of creating a new one. (default: :obj:`None`)
|
|
81
|
+
**kwargs (Any): Additional arguments to pass to the client
|
|
82
|
+
initialization. Ignored if custom clients are provided.
|
|
83
|
+
|
|
84
|
+
Reference: https://sgl-project.github.io/backend/openai_api_completions.
|
|
85
|
+
html
|
|
75
86
|
"""
|
|
76
87
|
|
|
77
88
|
def __init__(
|
|
@@ -82,6 +93,10 @@ class SGLangModel(BaseModelBackend):
|
|
|
82
93
|
url: Optional[str] = None,
|
|
83
94
|
token_counter: Optional[BaseTokenCounter] = None,
|
|
84
95
|
timeout: Optional[float] = None,
|
|
96
|
+
max_retries: int = 3,
|
|
97
|
+
client: Optional[Any] = None,
|
|
98
|
+
async_client: Optional[Any] = None,
|
|
99
|
+
**kwargs: Any,
|
|
85
100
|
) -> None:
|
|
86
101
|
if model_config_dict is None:
|
|
87
102
|
model_config_dict = SGLangConfig().as_dict()
|
|
@@ -95,25 +110,42 @@ class SGLangModel(BaseModelBackend):
|
|
|
95
110
|
|
|
96
111
|
timeout = timeout or float(os.environ.get("MODEL_TIMEOUT", 180))
|
|
97
112
|
super().__init__(
|
|
98
|
-
model_type,
|
|
113
|
+
model_type,
|
|
114
|
+
model_config_dict,
|
|
115
|
+
api_key,
|
|
116
|
+
url,
|
|
117
|
+
token_counter,
|
|
118
|
+
timeout,
|
|
119
|
+
max_retries,
|
|
99
120
|
)
|
|
100
121
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
122
|
+
# Use custom clients if provided, otherwise create new ones
|
|
123
|
+
if client is not None:
|
|
124
|
+
self._client = client
|
|
125
|
+
elif self._url:
|
|
104
126
|
# Initialize the client if an existing URL is provided
|
|
105
127
|
self._client = OpenAI(
|
|
106
128
|
timeout=self._timeout,
|
|
107
|
-
max_retries=
|
|
129
|
+
max_retries=self._max_retries,
|
|
108
130
|
api_key="Set-but-ignored", # required but ignored
|
|
109
131
|
base_url=self._url,
|
|
132
|
+
**kwargs,
|
|
110
133
|
)
|
|
134
|
+
else:
|
|
135
|
+
self._client = None
|
|
136
|
+
|
|
137
|
+
if async_client is not None:
|
|
138
|
+
self._async_client = async_client
|
|
139
|
+
elif self._url:
|
|
111
140
|
self._async_client = AsyncOpenAI(
|
|
112
141
|
timeout=self._timeout,
|
|
113
|
-
max_retries=
|
|
142
|
+
max_retries=self._max_retries,
|
|
114
143
|
api_key="Set-but-ignored", # required but ignored
|
|
115
144
|
base_url=self._url,
|
|
145
|
+
**kwargs,
|
|
116
146
|
)
|
|
147
|
+
else:
|
|
148
|
+
self._async_client = None
|
|
117
149
|
|
|
118
150
|
def _start_server(self) -> None:
|
|
119
151
|
try:
|
|
@@ -144,13 +176,24 @@ class SGLangModel(BaseModelBackend):
|
|
|
144
176
|
)
|
|
145
177
|
self._inactivity_thread.start()
|
|
146
178
|
self.last_run_time = time.time()
|
|
147
|
-
# Initialize
|
|
148
|
-
self._client
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
179
|
+
# Initialize client after server starts if not already set
|
|
180
|
+
if self._client is None:
|
|
181
|
+
self._client = OpenAI(
|
|
182
|
+
timeout=self._timeout,
|
|
183
|
+
max_retries=self._max_retries,
|
|
184
|
+
api_key="Set-but-ignored", # required but ignored
|
|
185
|
+
base_url=self._url,
|
|
186
|
+
)
|
|
187
|
+
if (
|
|
188
|
+
not hasattr(self, '_async_client')
|
|
189
|
+
or self._async_client is None
|
|
190
|
+
):
|
|
191
|
+
self._async_client = AsyncOpenAI(
|
|
192
|
+
timeout=self._timeout,
|
|
193
|
+
max_retries=self._max_retries,
|
|
194
|
+
api_key="Set-but-ignored", # required but ignored
|
|
195
|
+
base_url=self._url,
|
|
196
|
+
)
|
|
154
197
|
except Exception as e:
|
|
155
198
|
raise RuntimeError(f"Failed to start SGLang server: {e}") from e
|
|
156
199
|
|
|
@@ -194,21 +237,6 @@ class SGLangModel(BaseModelBackend):
|
|
|
194
237
|
self._token_counter = OpenAITokenCounter(ModelType.GPT_4O_MINI)
|
|
195
238
|
return self._token_counter
|
|
196
239
|
|
|
197
|
-
def check_model_config(self):
|
|
198
|
-
r"""Check whether the model configuration contains any
|
|
199
|
-
unexpected arguments to SGLang API.
|
|
200
|
-
|
|
201
|
-
Raises:
|
|
202
|
-
ValueError: If the model configuration dictionary contains any
|
|
203
|
-
unexpected arguments to OpenAI API.
|
|
204
|
-
"""
|
|
205
|
-
for param in self.model_config_dict:
|
|
206
|
-
if param not in SGLANG_API_PARAMS:
|
|
207
|
-
raise ValueError(
|
|
208
|
-
f"Unexpected argument `{param}` is "
|
|
209
|
-
"input into SGLang model backend."
|
|
210
|
-
)
|
|
211
|
-
|
|
212
240
|
@observe(as_type='generation')
|
|
213
241
|
async def _arun(
|
|
214
242
|
self,
|
|
@@ -236,19 +264,7 @@ class SGLangModel(BaseModelBackend):
|
|
|
236
264
|
model=str(self.model_type),
|
|
237
265
|
model_parameters=self.model_config_dict,
|
|
238
266
|
)
|
|
239
|
-
|
|
240
|
-
agent_session_id = get_current_agent_session_id()
|
|
241
|
-
if agent_session_id:
|
|
242
|
-
update_langfuse_trace(
|
|
243
|
-
session_id=agent_session_id,
|
|
244
|
-
metadata={
|
|
245
|
-
"source": "camel",
|
|
246
|
-
"agent_id": agent_session_id,
|
|
247
|
-
"agent_type": "camel_chat_agent",
|
|
248
|
-
"model_type": str(self.model_type),
|
|
249
|
-
},
|
|
250
|
-
tags=["CAMEL-AI", str(self.model_type)],
|
|
251
|
-
)
|
|
267
|
+
self._log_and_trace()
|
|
252
268
|
|
|
253
269
|
# Ensure server is running
|
|
254
270
|
self._ensure_server_running()
|
|
@@ -256,15 +272,24 @@ class SGLangModel(BaseModelBackend):
|
|
|
256
272
|
with self._lock:
|
|
257
273
|
# Update last run time
|
|
258
274
|
self.last_run_time = time.time()
|
|
275
|
+
async_client = self._async_client
|
|
259
276
|
|
|
260
|
-
if
|
|
277
|
+
if async_client is None:
|
|
261
278
|
raise RuntimeError(
|
|
262
279
|
"Client is not initialized. Ensure the server is running."
|
|
263
280
|
)
|
|
264
281
|
|
|
265
|
-
|
|
282
|
+
# Prepare additional parameters
|
|
283
|
+
extra_params: Dict[str, Any] = {}
|
|
284
|
+
if response_format is not None:
|
|
285
|
+
extra_params["response_format"] = response_format
|
|
286
|
+
if tools is not None:
|
|
287
|
+
extra_params["tools"] = tools
|
|
288
|
+
|
|
289
|
+
response = await async_client.chat.completions.create(
|
|
266
290
|
messages=messages,
|
|
267
291
|
model=self.model_type,
|
|
292
|
+
**extra_params,
|
|
268
293
|
**self.model_config_dict,
|
|
269
294
|
)
|
|
270
295
|
update_current_observation(
|
|
@@ -302,19 +327,7 @@ class SGLangModel(BaseModelBackend):
|
|
|
302
327
|
model=str(self.model_type),
|
|
303
328
|
model_parameters=self.model_config_dict,
|
|
304
329
|
)
|
|
305
|
-
|
|
306
|
-
agent_session_id = get_current_agent_session_id()
|
|
307
|
-
if agent_session_id:
|
|
308
|
-
update_langfuse_trace(
|
|
309
|
-
session_id=agent_session_id,
|
|
310
|
-
metadata={
|
|
311
|
-
"source": "camel",
|
|
312
|
-
"agent_id": agent_session_id,
|
|
313
|
-
"agent_type": "camel_chat_agent",
|
|
314
|
-
"model_type": str(self.model_type),
|
|
315
|
-
},
|
|
316
|
-
tags=["CAMEL-AI", str(self.model_type)],
|
|
317
|
-
)
|
|
330
|
+
self._log_and_trace()
|
|
318
331
|
|
|
319
332
|
# Ensure server is running
|
|
320
333
|
self._ensure_server_running()
|
|
@@ -322,15 +335,24 @@ class SGLangModel(BaseModelBackend):
|
|
|
322
335
|
with self._lock:
|
|
323
336
|
# Update last run time
|
|
324
337
|
self.last_run_time = time.time()
|
|
338
|
+
client = self._client
|
|
325
339
|
|
|
326
|
-
if
|
|
340
|
+
if client is None:
|
|
327
341
|
raise RuntimeError(
|
|
328
342
|
"Client is not initialized. Ensure the server is running."
|
|
329
343
|
)
|
|
330
344
|
|
|
331
|
-
|
|
345
|
+
# Prepare additional parameters
|
|
346
|
+
extra_params: Dict[str, Any] = {}
|
|
347
|
+
if response_format is not None:
|
|
348
|
+
extra_params["response_format"] = response_format
|
|
349
|
+
if tools is not None:
|
|
350
|
+
extra_params["tools"] = tools
|
|
351
|
+
|
|
352
|
+
response = client.chat.completions.create(
|
|
332
353
|
messages=messages,
|
|
333
354
|
model=self.model_type,
|
|
355
|
+
**extra_params,
|
|
334
356
|
**self.model_config_dict,
|
|
335
357
|
)
|
|
336
358
|
update_current_observation(
|
|
@@ -456,10 +478,10 @@ def _wait_for_server(base_url: str, timeout: Optional[float] = 30) -> None:
|
|
|
456
478
|
print(
|
|
457
479
|
"""\n
|
|
458
480
|
NOTE: Typically, the server runs in a separate terminal.
|
|
459
|
-
In this notebook, we run the server and notebook code
|
|
481
|
+
In this notebook, we run the server and notebook code
|
|
460
482
|
together, so their outputs are combined.
|
|
461
|
-
To improve clarity, the server logs are displayed in the
|
|
462
|
-
original black color, while the notebook outputs are
|
|
483
|
+
To improve clarity, the server logs are displayed in the
|
|
484
|
+
original black color, while the notebook outputs are
|
|
463
485
|
highlighted in blue.
|
|
464
486
|
"""
|
|
465
487
|
)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# ========= Copyright 2023-
|
|
1
|
+
# ========= Copyright 2023-2026 @ 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,19 +10,13 @@
|
|
|
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-2026 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
14
14
|
import os
|
|
15
|
-
from typing import Any, Dict,
|
|
15
|
+
from typing import Any, Dict, Optional, Union
|
|
16
16
|
|
|
17
|
-
from
|
|
18
|
-
from pydantic import BaseModel
|
|
19
|
-
|
|
20
|
-
from camel.configs import SILICONFLOW_API_PARAMS, SiliconFlowConfig
|
|
21
|
-
from camel.messages import OpenAIMessage
|
|
17
|
+
from camel.configs import SiliconFlowConfig
|
|
22
18
|
from camel.models.openai_compatible_model import OpenAICompatibleModel
|
|
23
19
|
from camel.types import (
|
|
24
|
-
ChatCompletion,
|
|
25
|
-
ChatCompletionChunk,
|
|
26
20
|
ModelType,
|
|
27
21
|
)
|
|
28
22
|
from camel.utils import (
|
|
@@ -54,6 +48,10 @@ class SiliconFlowModel(OpenAICompatibleModel):
|
|
|
54
48
|
API calls. If not provided, will fall back to the MODEL_TIMEOUT
|
|
55
49
|
environment variable or default to 180 seconds.
|
|
56
50
|
(default: :obj:`None`)
|
|
51
|
+
max_retries (int, optional): Maximum number of retries for API calls.
|
|
52
|
+
(default: :obj:`3`)
|
|
53
|
+
**kwargs (Any): Additional arguments to pass to the client
|
|
54
|
+
initialization.
|
|
57
55
|
"""
|
|
58
56
|
|
|
59
57
|
@api_keys_required(
|
|
@@ -69,6 +67,8 @@ class SiliconFlowModel(OpenAICompatibleModel):
|
|
|
69
67
|
url: Optional[str] = None,
|
|
70
68
|
token_counter: Optional[BaseTokenCounter] = None,
|
|
71
69
|
timeout: Optional[float] = None,
|
|
70
|
+
max_retries: int = 3,
|
|
71
|
+
**kwargs: Any,
|
|
72
72
|
) -> None:
|
|
73
73
|
if model_config_dict is None:
|
|
74
74
|
model_config_dict = SiliconFlowConfig().as_dict()
|
|
@@ -85,29 +85,6 @@ class SiliconFlowModel(OpenAICompatibleModel):
|
|
|
85
85
|
url=url,
|
|
86
86
|
token_counter=token_counter,
|
|
87
87
|
timeout=timeout,
|
|
88
|
+
max_retries=max_retries,
|
|
89
|
+
**kwargs,
|
|
88
90
|
)
|
|
89
|
-
|
|
90
|
-
async def _arun(
|
|
91
|
-
self,
|
|
92
|
-
messages: List[OpenAIMessage],
|
|
93
|
-
response_format: Optional[Type[BaseModel]] = None,
|
|
94
|
-
tools: Optional[List[Dict[str, Any]]] = None,
|
|
95
|
-
) -> Union[ChatCompletion, AsyncStream[ChatCompletionChunk]]:
|
|
96
|
-
raise NotImplementedError(
|
|
97
|
-
"SiliconFlow does not support async inference."
|
|
98
|
-
)
|
|
99
|
-
|
|
100
|
-
def check_model_config(self):
|
|
101
|
-
r"""Check whether the model configuration contains any
|
|
102
|
-
unexpected arguments to SiliconFlow API.
|
|
103
|
-
|
|
104
|
-
Raises:
|
|
105
|
-
ValueError: If the model configuration dictionary contains any
|
|
106
|
-
unexpected arguments to SiliconFlow API.
|
|
107
|
-
"""
|
|
108
|
-
for param in self.model_config_dict:
|
|
109
|
-
if param not in SILICONFLOW_API_PARAMS:
|
|
110
|
-
raise ValueError(
|
|
111
|
-
f"Unexpected argument `{param}` is "
|
|
112
|
-
"input into SiliconFlow model backend."
|
|
113
|
-
)
|
camel/models/stub_model.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# ========= Copyright 2023-
|
|
1
|
+
# ========= Copyright 2023-2026 @ 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-2026 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
14
14
|
import time
|
|
15
15
|
from typing import Any, Dict, List, Optional, Type, Union
|
|
16
16
|
|
|
@@ -83,10 +83,17 @@ class StubModel(BaseModelBackend):
|
|
|
83
83
|
url: Optional[str] = None,
|
|
84
84
|
token_counter: Optional[BaseTokenCounter] = None,
|
|
85
85
|
timeout: Optional[float] = None,
|
|
86
|
+
max_retries: int = 3,
|
|
86
87
|
) -> None:
|
|
87
88
|
r"""All arguments are unused for the dummy model."""
|
|
88
89
|
super().__init__(
|
|
89
|
-
model_type,
|
|
90
|
+
model_type,
|
|
91
|
+
model_config_dict,
|
|
92
|
+
api_key,
|
|
93
|
+
url,
|
|
94
|
+
token_counter,
|
|
95
|
+
timeout,
|
|
96
|
+
max_retries,
|
|
90
97
|
)
|
|
91
98
|
|
|
92
99
|
@property
|
|
@@ -175,7 +182,3 @@ class StubModel(BaseModelBackend):
|
|
|
175
182
|
),
|
|
176
183
|
)
|
|
177
184
|
return response
|
|
178
|
-
|
|
179
|
-
def check_model_config(self):
|
|
180
|
-
r"""Directly pass the check on arguments to STUB model."""
|
|
181
|
-
pass
|
camel/models/togetherai_model.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# ========= Copyright 2023-
|
|
1
|
+
# ========= Copyright 2023-2026 @ 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,12 @@
|
|
|
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-2026 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
14
14
|
|
|
15
15
|
import os
|
|
16
16
|
from typing import Any, Dict, Optional, Union
|
|
17
17
|
|
|
18
|
-
from camel.configs import
|
|
18
|
+
from camel.configs import TogetherAIConfig
|
|
19
19
|
from camel.models.openai_compatible_model import OpenAICompatibleModel
|
|
20
20
|
from camel.types import ModelType
|
|
21
21
|
from camel.utils import (
|
|
@@ -47,6 +47,10 @@ class TogetherAIModel(OpenAICompatibleModel):
|
|
|
47
47
|
API calls. If not provided, will fall back to the MODEL_TIMEOUT
|
|
48
48
|
environment variable or default to 180 seconds.
|
|
49
49
|
(default: :obj:`None`)
|
|
50
|
+
max_retries (int, optional): Maximum number of retries for API calls.
|
|
51
|
+
(default: :obj:`3`)
|
|
52
|
+
**kwargs (Any): Additional arguments to pass to the client
|
|
53
|
+
initialization.
|
|
50
54
|
"""
|
|
51
55
|
|
|
52
56
|
@api_keys_required(
|
|
@@ -62,6 +66,8 @@ class TogetherAIModel(OpenAICompatibleModel):
|
|
|
62
66
|
url: Optional[str] = None,
|
|
63
67
|
token_counter: Optional[BaseTokenCounter] = None,
|
|
64
68
|
timeout: Optional[float] = None,
|
|
69
|
+
max_retries: int = 3,
|
|
70
|
+
**kwargs: Any,
|
|
65
71
|
) -> None:
|
|
66
72
|
if model_config_dict is None:
|
|
67
73
|
model_config_dict = TogetherAIConfig().as_dict()
|
|
@@ -77,19 +83,6 @@ class TogetherAIModel(OpenAICompatibleModel):
|
|
|
77
83
|
url=url,
|
|
78
84
|
token_counter=token_counter,
|
|
79
85
|
timeout=timeout,
|
|
86
|
+
max_retries=max_retries,
|
|
87
|
+
**kwargs,
|
|
80
88
|
)
|
|
81
|
-
|
|
82
|
-
def check_model_config(self):
|
|
83
|
-
r"""Check whether the model configuration contains any
|
|
84
|
-
unexpected arguments to TogetherAI API.
|
|
85
|
-
|
|
86
|
-
Raises:
|
|
87
|
-
ValueError: If the model configuration dictionary contains any
|
|
88
|
-
unexpected arguments to TogetherAI API.
|
|
89
|
-
"""
|
|
90
|
-
for param in self.model_config_dict:
|
|
91
|
-
if param not in TOGETHERAI_API_PARAMS:
|
|
92
|
-
raise ValueError(
|
|
93
|
-
f"Unexpected argument `{param}` is "
|
|
94
|
-
"input into TogetherAI model backend."
|
|
95
|
-
)
|
camel/models/vllm_model.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# ========= Copyright 2023-
|
|
1
|
+
# ========= Copyright 2023-2026 @ 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,12 @@
|
|
|
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-2026 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
14
14
|
import os
|
|
15
15
|
import subprocess
|
|
16
16
|
from typing import Any, Dict, Optional, Union
|
|
17
17
|
|
|
18
|
-
from camel.configs import
|
|
18
|
+
from camel.configs import VLLMConfig
|
|
19
19
|
from camel.logger import get_logger
|
|
20
20
|
from camel.models.openai_compatible_model import OpenAICompatibleModel
|
|
21
21
|
from camel.types import ModelType
|
|
@@ -49,6 +49,9 @@ class VLLMModel(OpenAICompatibleModel):
|
|
|
49
49
|
API calls. If not provided, will fall back to the MODEL_TIMEOUT
|
|
50
50
|
environment variable or default to 180 seconds.
|
|
51
51
|
(default: :obj:`None`)
|
|
52
|
+
max_retries (int, optional): Maximum number of retries for API calls.
|
|
53
|
+
(default: :obj:`3`)
|
|
54
|
+
**kwargs (Any): Additional arguments to pass to the client initialization.
|
|
52
55
|
|
|
53
56
|
References:
|
|
54
57
|
https://docs.vllm.ai/en/latest/serving/openai_compatible_server.html
|
|
@@ -62,6 +65,8 @@ class VLLMModel(OpenAICompatibleModel):
|
|
|
62
65
|
url: Optional[str] = None,
|
|
63
66
|
token_counter: Optional[BaseTokenCounter] = None,
|
|
64
67
|
timeout: Optional[float] = None,
|
|
68
|
+
max_retries: int = 3,
|
|
69
|
+
**kwargs: Any,
|
|
65
70
|
) -> None:
|
|
66
71
|
if model_config_dict is None:
|
|
67
72
|
model_config_dict = VLLMConfig().as_dict()
|
|
@@ -79,6 +84,8 @@ class VLLMModel(OpenAICompatibleModel):
|
|
|
79
84
|
url=self._url,
|
|
80
85
|
token_counter=token_counter,
|
|
81
86
|
timeout=timeout,
|
|
87
|
+
max_retries=max_retries,
|
|
88
|
+
**kwargs,
|
|
82
89
|
)
|
|
83
90
|
|
|
84
91
|
def _start_server(self) -> None:
|
|
@@ -96,18 +103,3 @@ class VLLMModel(OpenAICompatibleModel):
|
|
|
96
103
|
)
|
|
97
104
|
except Exception as e:
|
|
98
105
|
logger.error(f"Failed to start vllm server: {e}.")
|
|
99
|
-
|
|
100
|
-
def check_model_config(self):
|
|
101
|
-
r"""Check whether the model configuration contains any
|
|
102
|
-
unexpected arguments to vLLM API.
|
|
103
|
-
|
|
104
|
-
Raises:
|
|
105
|
-
ValueError: If the model configuration dictionary contains any
|
|
106
|
-
unexpected arguments to OpenAI API.
|
|
107
|
-
"""
|
|
108
|
-
for param in self.model_config_dict:
|
|
109
|
-
if param not in VLLM_API_PARAMS:
|
|
110
|
-
raise ValueError(
|
|
111
|
-
f"Unexpected argument `{param}` is "
|
|
112
|
-
"input into vLLM model backend."
|
|
113
|
-
)
|