mirror of
https://github.com/AstrBotDevs/AstrBot
synced 2026-07-19 10:22:04 +08:00
fix(core.provider): 修复循环调用和错误assert
This commit is contained in:
@@ -2,7 +2,7 @@ import base64
|
||||
import enum
|
||||
import json
|
||||
from dataclasses import dataclass, field
|
||||
from typing import Any
|
||||
from typing import TYPE_CHECKING, Any
|
||||
|
||||
from anthropic.types import Message as AnthropicMessage
|
||||
from google.genai.types import GenerateContentResponse
|
||||
@@ -18,7 +18,9 @@ from astrbot.core.agent.message import (
|
||||
from astrbot.core.agent.tool import ToolSet
|
||||
from astrbot.core.db.po import Conversation
|
||||
from astrbot.core.message.message_event_result import MessageChain
|
||||
from astrbot.core.provider.provider import Providers
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from astrbot.core.provider.provider import Providers
|
||||
from astrbot.core.utils.io import download_image_by_url
|
||||
|
||||
|
||||
|
||||
@@ -374,7 +374,7 @@ class ProviderManager:
|
||||
|
||||
if provider_metadata.provider_type == ProviderType.SPEECH_TO_TEXT:
|
||||
# STT 任务
|
||||
assert cls_type is type[STTProvider]
|
||||
assert issubclass(cls_type, STTProvider)
|
||||
inst = cls_type(provider_config, self.provider_settings)
|
||||
|
||||
if getattr(inst, "initialize", None):
|
||||
@@ -394,7 +394,7 @@ class ProviderManager:
|
||||
|
||||
elif provider_metadata.provider_type == ProviderType.TEXT_TO_SPEECH:
|
||||
# TTS 任务
|
||||
assert cls_type is type[TTSProvider]
|
||||
assert issubclass(cls_type, TTSProvider)
|
||||
inst = cls_type(provider_config, self.provider_settings)
|
||||
|
||||
if getattr(inst, "initialize", None):
|
||||
@@ -411,7 +411,7 @@ class ProviderManager:
|
||||
|
||||
elif provider_metadata.provider_type == ProviderType.CHAT_COMPLETION:
|
||||
# 文本生成任务
|
||||
assert cls_type is type[Provider]
|
||||
assert issubclass(cls_type, Provider)
|
||||
inst = cls_type(
|
||||
provider_config,
|
||||
self.provider_settings,
|
||||
@@ -434,13 +434,13 @@ class ProviderManager:
|
||||
self.curr_provider_inst = inst
|
||||
|
||||
elif provider_metadata.provider_type == ProviderType.EMBEDDING:
|
||||
assert cls_type is type[EmbeddingProvider]
|
||||
assert issubclass(cls_type, EmbeddingProvider)
|
||||
inst = cls_type(provider_config, self.provider_settings)
|
||||
if getattr(inst, "initialize", None):
|
||||
await cast(HasInitialize, inst).initialize()
|
||||
self.embedding_provider_insts.append(inst)
|
||||
elif provider_metadata.provider_type == ProviderType.RERANK:
|
||||
assert cls_type is type[RerankProvider]
|
||||
assert issubclass(cls_type, RerankProvider)
|
||||
inst = cls_type(provider_config, self.provider_settings)
|
||||
if getattr(inst, "initialize", None):
|
||||
await cast(HasInitialize, inst).initialize()
|
||||
|
||||
Reference in New Issue
Block a user