@@ -30,21 +30,31 @@ class ProviderType(enum.Enum):
|
|||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class ProviderMetaData:
|
class ProviderMeta:
|
||||||
|
"""The basic metadata of a provider instance."""
|
||||||
|
|
||||||
id: str
|
id: str
|
||||||
"""提供商适配器 ID"""
|
"""the unique id of the provider instance that user configured"""
|
||||||
|
model: str | None
|
||||||
|
"""the model name of the provider instance currently used"""
|
||||||
type: str
|
type: str
|
||||||
"""提供商适配器名称,如 openai, ollama"""
|
"""the name of the provider adapter, such as openai, ollama"""
|
||||||
desc: str = ""
|
|
||||||
"""提供商适配器描述"""
|
|
||||||
provider_type: ProviderType = ProviderType.CHAT_COMPLETION
|
provider_type: ProviderType = ProviderType.CHAT_COMPLETION
|
||||||
"""提供商类型"""
|
"""the capability type of the provider adapter"""
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class ProviderMetaData(ProviderMeta):
|
||||||
|
"""The metadata of a provider adapter for registration."""
|
||||||
|
|
||||||
|
desc: str = ""
|
||||||
|
"""the short description of the provider adapter"""
|
||||||
cls_type: Any = None
|
cls_type: Any = None
|
||||||
"""提供商适配器类类型"""
|
"""the class type of the provider adapter"""
|
||||||
default_config_tmpl: dict | None = None
|
default_config_tmpl: dict | None = None
|
||||||
"""平台的默认配置模板"""
|
"""the default configuration template of the provider adapter"""
|
||||||
provider_display_name: str | None = None
|
provider_display_name: str | None = None
|
||||||
"""显示在 WebUI 配置页中的提供商名称,如空则是 type"""
|
"""the display name of the provider shown in the WebUI configuration page; if empty, the type is used"""
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ from astrbot.core.agent.tool import ToolSet
|
|||||||
from astrbot.core.db.po import Personality
|
from astrbot.core.db.po import Personality
|
||||||
from astrbot.core.provider.entities import (
|
from astrbot.core.provider.entities import (
|
||||||
LLMResponse,
|
LLMResponse,
|
||||||
ProviderMetaData,
|
ProviderMeta,
|
||||||
RerankResult,
|
RerankResult,
|
||||||
ToolCallsResult,
|
ToolCallsResult,
|
||||||
)
|
)
|
||||||
@@ -30,13 +30,19 @@ class AbstractProvider(abc.ABC):
|
|||||||
"""Get the current model name"""
|
"""Get the current model name"""
|
||||||
return self.model_name
|
return self.model_name
|
||||||
|
|
||||||
def meta(self) -> ProviderMetaData:
|
def meta(self) -> ProviderMeta:
|
||||||
"""Get the provider metadata"""
|
"""Get the provider metadata"""
|
||||||
provider_type_name = self.provider_config["type"]
|
provider_type_name = self.provider_config["type"]
|
||||||
meta_data = provider_cls_map.get(provider_type_name)
|
meta_data = provider_cls_map.get(provider_type_name)
|
||||||
if not meta_data:
|
if not meta_data:
|
||||||
raise ValueError(f"Provider type {provider_type_name} not registered")
|
raise ValueError(f"Provider type {provider_type_name} not registered")
|
||||||
return meta_data
|
meta = ProviderMeta(
|
||||||
|
id=self.provider_config.get("id", "default"),
|
||||||
|
model=self.get_model(),
|
||||||
|
type=provider_type_name,
|
||||||
|
provider_type=meta_data.provider_type,
|
||||||
|
)
|
||||||
|
return meta
|
||||||
|
|
||||||
|
|
||||||
class Provider(AbstractProvider):
|
class Provider(AbstractProvider):
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ def register_provider_adapter(
|
|||||||
|
|
||||||
pm = ProviderMetaData(
|
pm = ProviderMetaData(
|
||||||
id="default", # will be replaced when instantiated
|
id="default", # will be replaced when instantiated
|
||||||
|
model=None,
|
||||||
type=provider_type_name,
|
type=provider_type_name,
|
||||||
desc=desc,
|
desc=desc,
|
||||||
provider_type=provider_type,
|
provider_type=provider_type,
|
||||||
|
|||||||
Reference in New Issue
Block a user