Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 18 additions & 1 deletion api/core/plugin/impl/model_runtime.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import logging
from collections.abc import Generator, Iterable, Sequence
from threading import Lock
from typing import IO, Any, Literal, cast, overload
from typing import IO, Any, Literal, cast, overload, override

from pydantic import ValidationError
from redis import RedisError
Expand Down Expand Up @@ -118,6 +118,7 @@ def __init__(self, tenant_id: str, user_id: str | None, client: PluginModelClien
self._provider_entities = None
self._provider_entities_lock = Lock()

@override
def fetch_model_providers(self) -> Sequence[ProviderEntity]:
if self._provider_entities is not None:
return self._provider_entities
Expand All @@ -130,6 +131,7 @@ def fetch_model_providers(self) -> Sequence[ProviderEntity]:

return self._provider_entities

@override
def get_provider_icon(self, *, provider: str, icon_type: str, lang: str) -> tuple[bytes, str]:
provider_schema = self._get_provider_schema(provider)

Expand Down Expand Up @@ -172,6 +174,7 @@ def get_provider_icon(self, *, provider: str, icon_type: str, lang: str) -> tupl
mime_type = image_mime_types.get(extension, "image/png")
return PluginAssetManager().fetch_asset(tenant_id=self.tenant_id, id=file_name), mime_type

@override
def validate_provider_credentials(self, *, provider: str, credentials: dict[str, Any]) -> None:
plugin_id, provider_name = self._split_provider(provider)
self.client.validate_provider_credentials(
Expand All @@ -182,6 +185,7 @@ def validate_provider_credentials(self, *, provider: str, credentials: dict[str,
credentials=credentials,
)

@override
def validate_model_credentials(
self,
*,
Expand All @@ -201,6 +205,7 @@ def validate_model_credentials(
credentials=credentials,
)

@override
def get_model_schema(
self,
*,
Expand Down Expand Up @@ -294,6 +299,7 @@ def invoke_llm(
stream: Literal[True],
) -> Generator[LLMResultChunk, None, None]: ...

@override
def invoke_llm(
self,
*,
Expand Down Expand Up @@ -357,6 +363,7 @@ def invoke_llm_with_structured_output(
stream: Literal[True],
) -> Generator[LLMResultChunkWithStructuredOutput, None, None]: ...

@override
def invoke_llm_with_structured_output(
self,
*,
Expand Down Expand Up @@ -396,6 +403,7 @@ def invoke_llm_with_structured_output(
stream=stream,
)

@override
def get_llm_num_tokens(
self,
*,
Expand All @@ -422,6 +430,7 @@ def get_llm_num_tokens(
tools=list(tools) if tools else None,
)

@override
def invoke_text_embedding(
self,
*,
Expand All @@ -443,6 +452,7 @@ def invoke_text_embedding(
input_type=input_type,
)

@override
def invoke_multimodal_embedding(
self,
*,
Expand All @@ -464,6 +474,7 @@ def invoke_multimodal_embedding(
input_type=input_type,
)

@override
def get_text_embedding_num_tokens(
self,
*,
Expand All @@ -483,6 +494,7 @@ def get_text_embedding_num_tokens(
texts=texts,
)

@override
def invoke_rerank(
self,
*,
Expand All @@ -508,6 +520,7 @@ def invoke_rerank(
top_n=top_n,
)

@override
def invoke_multimodal_rerank(
self,
*,
Expand All @@ -533,6 +546,7 @@ def invoke_multimodal_rerank(
top_n=top_n,
)

@override
def invoke_tts(
self,
*,
Expand All @@ -554,6 +568,7 @@ def invoke_tts(
voice=voice,
)

@override
def get_tts_model_voices(
self,
*,
Expand All @@ -573,6 +588,7 @@ def get_tts_model_voices(
language=language,
)

@override
def invoke_speech_to_text(
self,
*,
Expand All @@ -592,6 +608,7 @@ def invoke_speech_to_text(
file=file,
)

@override
def invoke_moderation(
self,
*,
Expand Down
Loading