web2api / core /protocol /base.py
ohmyapi's picture
feat: align hosted Space deployment with latest upstream
77169b4
"""协议适配器抽象。内部统一以 OpenAI 语义事件流为中间态。"""
from __future__ import annotations
from abc import ABC, abstractmethod
from collections.abc import AsyncIterator
from typing import Any
from core.hub.schemas import OpenAIStreamEvent
from core.protocol.schemas import CanonicalChatRequest
class ProtocolAdapter(ABC):
protocol_name: str
@abstractmethod
def parse_request(
self,
provider: str,
raw_body: dict[str, Any],
) -> CanonicalChatRequest: ...
@abstractmethod
def render_non_stream(
self,
req: CanonicalChatRequest,
raw_events: list[OpenAIStreamEvent],
) -> dict[str, Any]: ...
@abstractmethod
def render_stream(
self,
req: CanonicalChatRequest,
raw_stream: AsyncIterator[OpenAIStreamEvent],
) -> AsyncIterator[str]: ...
@abstractmethod
def render_error(self, exc: Exception) -> tuple[int, dict[str, Any]]: ...