mirror of
https://github.com/AstrBotDevs/AstrBot
synced 2026-07-15 17:30:13 +08:00
* feat: add one-line deploy script (deploy-cli.sh) and update cli.md - Add docs/scripts/deploy-cli.sh for one-command deployment (Linux/macOS/WSL) - Update docs/zh/deploy/astrbot/cli.md to reference local script - Replace non-existent https://astrbot.app/deploy.sh with raw.githubusercontent.com URL - Add local run tip and WSL-based Windows support * fix: address PR review feedback for deploy-cli.sh - Replace sort -V with Python-native version check (macOS BSD compat) - Bump Python requirement from >=3.10 to >=3.12 (match pyproject.toml) - Detect current directory as project root (avoid nested clone) - Handle existing non-git directory explicitly - Add curl dependency check - Support ASTRBOT_REPO and ASTRBOT_DIR env vars for forks/mirrors - Update cli.md version description to match * feat: add Windows PowerShell deploy script and update docs - Add deploy-cli.ps1 for Windows native environment (PowerShell 7+) - Update cli.md to document Windows one-liner deployment - Add local script execution instructions for both bash and ps1 * refactor: standardize log messages and improve clarity in various modules Co-authored-by: Copilot <copilot@github.com> * docs: 移除一行命令快速部署部分,简化安装说明 * feat: 添加脚本以复制部署 CLI 文件并更新构建命令 * refactor: 更新日志消息以提高可读性,统一英文提示信息 --------- Co-authored-by: Soulter <905617992@qq.com> Co-authored-by: Copilot <copilot@github.com> Co-authored-by: Weilong Liao <37870767+Soulter@users.noreply.github.com>
54 lines
1.9 KiB
Python
54 lines
1.9 KiB
Python
from astrbot.core import logger
|
|
|
|
from .entities import ProviderMetaData, ProviderType
|
|
from .func_tool_manager import FuncCall
|
|
|
|
provider_registry: list[ProviderMetaData] = []
|
|
"""维护了通过装饰器注册的 Provider"""
|
|
provider_cls_map: dict[str, ProviderMetaData] = {}
|
|
"""维护了 Provider 类型名称和 ProviderMetadata 的映射"""
|
|
|
|
llm_tools = FuncCall()
|
|
|
|
|
|
def register_provider_adapter(
|
|
provider_type_name: str,
|
|
desc: str,
|
|
provider_type: ProviderType = ProviderType.CHAT_COMPLETION,
|
|
default_config_tmpl: dict | None = None,
|
|
provider_display_name: str | None = None,
|
|
):
|
|
"""用于注册平台适配器的带参装饰器"""
|
|
|
|
def decorator(cls):
|
|
if provider_type_name in provider_cls_map:
|
|
raise ValueError(
|
|
f"检测到大模型提供商适配器 {provider_type_name} 已经注册,可能发生了大模型提供商适配器类型命名冲突。",
|
|
)
|
|
|
|
# 添加必备选项
|
|
if default_config_tmpl:
|
|
if "type" not in default_config_tmpl:
|
|
default_config_tmpl["type"] = provider_type_name
|
|
if "enable" not in default_config_tmpl:
|
|
default_config_tmpl["enable"] = False
|
|
if "id" not in default_config_tmpl:
|
|
default_config_tmpl["id"] = provider_type_name
|
|
|
|
pm = ProviderMetaData(
|
|
id="default", # will be replaced when instantiated
|
|
model=None,
|
|
type=provider_type_name,
|
|
desc=desc,
|
|
provider_type=provider_type,
|
|
cls_type=cls,
|
|
default_config_tmpl=default_config_tmpl,
|
|
provider_display_name=provider_display_name,
|
|
)
|
|
provider_registry.append(pm)
|
|
provider_cls_map[provider_type_name] = pm
|
|
logger.debug("Model provider registered: %s", provider_type_name)
|
|
return cls
|
|
|
|
return decorator
|