diff --git a/frontend/src/database/models/user.ts b/frontend/src/database/models/user.ts
index 6de2e6af..f9ed94d1 100644
--- a/frontend/src/database/models/user.ts
+++ b/frontend/src/database/models/user.ts
@@ -18,7 +18,7 @@ class _UserModel extends BaseModel {
const list = (await this.table.toArray()) as (DB_User & { id: number })[];
- return list[0];
+ returnList[0];
};
create = async (user: DB_User) => {
diff --git a/model-providers/model_providers.yaml b/model-providers/model_providers.yaml
index d88736b3..908883c7 100644
--- a/model-providers/model_providers.yaml
+++ b/model-providers/model_providers.yaml
@@ -27,3 +27,7 @@ xinference:
model_uid: 'chatglm3-6b'
+zhipuai:
+
+ provider_credential:
+ api_key: 'd4fa0690b6dfa205204cae2e12aa6fb6.1'
\ No newline at end of file
diff --git a/model-providers/model_providers/__main__.py b/model-providers/model_providers/__main__.py
index ecde3e4a..3f9918fe 100644
--- a/model-providers/model_providers/__main__.py
+++ b/model-providers/model_providers/__main__.py
@@ -16,7 +16,7 @@ if __name__ == "__main__":
parser.add_argument(
"--model-providers",
type=str,
- default="D:\\project\\Langchain-Chatchat\\model-providers\\model_providers.yaml",
+ default="/mnt/d/project/Langchain-Chatchat/model-providers/model_providers.yaml",
help="run model_providers servers",
dest="model_providers",
)
diff --git a/model-providers/model_providers/bootstrap_web/entities/model_provider_entities.py b/model-providers/model_providers/bootstrap_web/entities/model_provider_entities.py
index e7899a0c..77819c8a 100644
--- a/model-providers/model_providers/bootstrap_web/entities/model_provider_entities.py
+++ b/model-providers/model_providers/bootstrap_web/entities/model_provider_entities.py
@@ -50,7 +50,7 @@ class SystemConfigurationResponse(BaseModel):
enabled: bool
current_quota_type: Optional[ProviderQuotaType] = None
- quota_configurations: list[QuotaConfiguration] = []
+ quota_configurations: List[QuotaConfiguration] = []
class ProviderResponse(BaseModel):
@@ -65,8 +65,8 @@ class ProviderResponse(BaseModel):
icon_large: Optional[I18nObject] = None
background: Optional[str] = None
help: Optional[ProviderHelpEntity] = None
- supported_model_types: list[ModelType]
- configurate_methods: list[ConfigurateMethod]
+ supported_model_types: List[ModelType]
+ configurate_methods: List[ConfigurateMethod]
provider_credential_schema: Optional[ProviderCredentialSchema] = None
model_credential_schema: Optional[ModelCredentialSchema] = None
preferred_provider_type: ProviderType
@@ -114,7 +114,7 @@ class ProviderWithModelsResponse(BaseModel):
icon_small: Optional[I18nObject] = None
icon_large: Optional[I18nObject] = None
status: CustomConfigurationStatus
- models: list[ModelResponse]
+ models: List[ModelResponse]
def __init__(self, **data) -> None:
super().__init__(**data)
diff --git a/model-providers/model_providers/bootstrap_web/openai_bootstrap_web.py b/model-providers/model_providers/bootstrap_web/openai_bootstrap_web.py
index 3c3e91af..e7784a83 100644
--- a/model-providers/model_providers/bootstrap_web/openai_bootstrap_web.py
+++ b/model-providers/model_providers/bootstrap_web/openai_bootstrap_web.py
@@ -159,7 +159,7 @@ class RESTFulOpenAIBootstrapBaseWeb(OpenAIBootstrapBaseWeb):
async def list_models(self, provider: str, request: Request):
logger.info(f"Received list_models request for provider: {provider}")
# 返回ModelType所有的枚举
- llm_models: list[AIModelEntity] = []
+ llm_models: List[AIModelEntity] = []
for model_type in ModelType.__members__.values():
try:
provider_model_bundle = (
@@ -176,7 +176,7 @@ class RESTFulOpenAIBootstrapBaseWeb(OpenAIBootstrapBaseWeb):
)
logger.error(e)
- # models list[AIModelEntity]转换称List[ModelCard]
+ # modelsList[AIModelEntity]转换称List[ModelCard]
models_list = [
ModelCard(id=model.model, object=model.model_type.to_origin_model_type())
diff --git a/model-providers/model_providers/core/bootstrap/openai_protocol.py b/model-providers/model_providers/core/bootstrap/openai_protocol.py
index 2945c0ba..2bd364f3 100644
--- a/model-providers/model_providers/core/bootstrap/openai_protocol.py
+++ b/model-providers/model_providers/core/bootstrap/openai_protocol.py
@@ -145,7 +145,7 @@ class ChatCompletionRequest(BaseModel):
top_k: Optional[float] = None
n: int = 1
max_tokens: Optional[int] = 256
- stop: Optional[list[str]] = None
+ stop: Optional[List[str]] = None
stream: Optional[bool] = False
def to_model_parameters_dict(self, *args, **kwargs):
diff --git a/model-providers/model_providers/core/bootstrap/providers_wapper.py b/model-providers/model_providers/core/bootstrap/providers_wapper.py
index d958a999..9d1858ed 100644
--- a/model-providers/model_providers/core/bootstrap/providers_wapper.py
+++ b/model-providers/model_providers/core/bootstrap/providers_wapper.py
@@ -112,7 +112,7 @@ class ProvidersWrapper:
provider_models[model.provider.provider].append(model)
# convert to ProviderWithModelsResponse list
- providers_with_models: list[ProviderWithModelsResponse] = []
+ providers_with_models: List[ProviderWithModelsResponse] = []
for provider, models in provider_models.items():
if not models:
continue
diff --git a/model-providers/model_providers/core/entities/application_entities.py b/model-providers/model_providers/core/entities/application_entities.py
index 9a5e0ff4..263693cc 100644
--- a/model-providers/model_providers/core/entities/application_entities.py
+++ b/model-providers/model_providers/core/entities/application_entities.py
@@ -21,9 +21,9 @@ class ModelConfigEntity(BaseModel):
model_schema: AIModelEntity
mode: str
provider_model_bundle: ProviderModelBundle
- credentials: dict[str, Any] = {}
- parameters: dict[str, Any] = {}
- stop: list[str] = []
+ credentials: Dict[str, Any] = {}
+ parameters: Dict[str, Any] = {}
+ stop: List[str] = []
class AdvancedChatMessageEntity(BaseModel):
@@ -40,7 +40,7 @@ class AdvancedChatPromptTemplateEntity(BaseModel):
Advanced Chat Prompt Template Entity.
"""
- messages: list[AdvancedChatMessageEntity]
+ messages: List[AdvancedChatMessageEntity]
class AdvancedCompletionPromptTemplateEntity(BaseModel):
@@ -102,7 +102,7 @@ class ExternalDataVariableEntity(BaseModel):
variable: str
type: str
- config: dict[str, Any] = {}
+ config: Dict[str, Any] = {}
class DatasetRetrieveConfigEntity(BaseModel):
@@ -146,7 +146,7 @@ class DatasetEntity(BaseModel):
Dataset Config Entity.
"""
- dataset_ids: list[str]
+ dataset_ids: List[str]
retrieve_config: DatasetRetrieveConfigEntity
@@ -156,7 +156,7 @@ class SensitiveWordAvoidanceEntity(BaseModel):
"""
type: str
- config: dict[str, Any] = {}
+ config: Dict[str, Any] = {}
class TextToSpeechEntity(BaseModel):
@@ -185,7 +185,7 @@ class AgentToolEntity(BaseModel):
provider_type: Literal["builtin", "api"]
provider_id: str
tool_name: str
- tool_parameters: dict[str, Any] = {}
+ tool_parameters: Dict[str, Any] = {}
class AgentPromptEntity(BaseModel):
@@ -234,7 +234,7 @@ class AgentEntity(BaseModel):
model: str
strategy: Strategy
prompt: Optional[AgentPromptEntity] = None
- tools: list[AgentToolEntity] = None
+ tools: List[AgentToolEntity] = None
max_iteration: int = 5
@@ -245,7 +245,7 @@ class AppOrchestrationConfigEntity(BaseModel):
model_config: ModelConfigEntity
prompt_template: PromptTemplateEntity
- external_data_variables: list[ExternalDataVariableEntity] = []
+ external_data_variables: List[ExternalDataVariableEntity] = []
agent: Optional[AgentEntity] = None
# features
@@ -319,13 +319,13 @@ class ApplicationGenerateEntity(BaseModel):
app_orchestration_config_entity: AppOrchestrationConfigEntity
conversation_id: Optional[str] = None
- inputs: dict[str, str]
+ inputs: Dict[str, str]
query: Optional[str] = None
- files: list[FileObj] = []
+ files: List[FileObj] = []
user_id: str
# extras
stream: bool
invoke_from: InvokeFrom
# extra parameters, like: auto_generate_conversation_name
- extras: dict[str, Any] = {}
+ extras: Dict[str, Any] = {}
diff --git a/model-providers/model_providers/core/entities/message_entities.py b/model-providers/model_providers/core/entities/message_entities.py
index b7ad8172..52aa3fa0 100644
--- a/model-providers/model_providers/core/entities/message_entities.py
+++ b/model-providers/model_providers/core/entities/message_entities.py
@@ -47,12 +47,12 @@ class ImagePromptMessageFile(PromptMessageFile):
class LCHumanMessageWithFiles(HumanMessage):
- # content: Union[str, list[Union[str, Dict]]]
+ # content: Union[str,List[Union[str, Dict]]]
content: str
- files: list[PromptMessageFile]
+ files: List[PromptMessageFile]
-def lc_messages_to_prompt_messages(messages: list[BaseMessage]) -> list[PromptMessage]:
+def lc_messages_to_prompt_messages(messages: List[BaseMessage]) -> List[PromptMessage]:
prompt_messages = []
for message in messages:
if isinstance(message, HumanMessage):
@@ -109,8 +109,8 @@ def lc_messages_to_prompt_messages(messages: list[BaseMessage]) -> list[PromptMe
def prompt_messages_to_lc_messages(
- prompt_messages: list[PromptMessage],
-) -> list[BaseMessage]:
+ prompt_messages: List[PromptMessage],
+) -> List[BaseMessage]:
messages = []
for prompt_message in prompt_messages:
if isinstance(prompt_message, UserPromptMessage):
diff --git a/model-providers/model_providers/core/entities/model_entities.py b/model-providers/model_providers/core/entities/model_entities.py
index 20e5dbc9..cfaf6b82 100644
--- a/model-providers/model_providers/core/entities/model_entities.py
+++ b/model-providers/model_providers/core/entities/model_entities.py
@@ -1,5 +1,5 @@
from enum import Enum
-from typing import Optional
+from typing import List, Optional
from pydantic import BaseModel
@@ -31,7 +31,7 @@ class SimpleModelProviderEntity(BaseModel):
label: I18nObject
icon_small: Optional[I18nObject] = None
icon_large: Optional[I18nObject] = None
- supported_model_types: list[ModelType]
+ supported_model_types: List[ModelType]
def __init__(self, provider_entity: ProviderEntity) -> None:
"""
@@ -66,7 +66,7 @@ class DefaultModelProviderEntity(BaseModel):
label: I18nObject
icon_small: Optional[I18nObject] = None
icon_large: Optional[I18nObject] = None
- supported_model_types: list[ModelType]
+ supported_model_types: List[ModelType]
class DefaultModelEntity(BaseModel):
diff --git a/model-providers/model_providers/core/entities/provider_configuration.py b/model-providers/model_providers/core/entities/provider_configuration.py
index 22d42587..a068bd9e 100644
--- a/model-providers/model_providers/core/entities/provider_configuration.py
+++ b/model-providers/model_providers/core/entities/provider_configuration.py
@@ -1,9 +1,8 @@
import datetime
import json
import logging
-from collections.abc import Iterator
from json import JSONDecodeError
-from typing import Optional
+from typing import Dict, Iterator, List, Optional
from pydantic import BaseModel
@@ -162,7 +161,7 @@ class ProviderConfiguration(BaseModel):
def get_provider_models(
self, model_type: Optional[ModelType] = None, only_active: bool = False
- ) -> list[ModelWithProviderEntity]:
+ ) -> List[ModelWithProviderEntity]:
"""
Get provider models.
:param model_type: model type
@@ -189,8 +188,8 @@ class ProviderConfiguration(BaseModel):
return sorted(provider_models, key=lambda x: x.model_type.value)
def _get_custom_provider_models(
- self, model_types: list[ModelType], provider_instance: ModelProvider
- ) -> list[ModelWithProviderEntity]:
+ self, model_types: List[ModelType], provider_instance: ModelProvider
+ ) -> List[ModelWithProviderEntity]:
"""
Get custom provider models.
@@ -266,7 +265,7 @@ class ProviderConfigurations(BaseModel):
Model class for provider configuration dict.
"""
- configurations: dict[str, ProviderConfiguration] = {}
+ configurations: Dict[str, ProviderConfiguration] = {}
def __init__(self):
super().__init__()
@@ -276,7 +275,7 @@ class ProviderConfigurations(BaseModel):
provider: Optional[str] = None,
model_type: Optional[ModelType] = None,
only_active: bool = False,
- ) -> list[ModelWithProviderEntity]:
+ ) -> List[ModelWithProviderEntity]:
"""
Get available models.
@@ -317,7 +316,7 @@ class ProviderConfigurations(BaseModel):
return all_models
- def to_list(self) -> list[ProviderConfiguration]:
+ def to_list(self) -> List[ProviderConfiguration]:
"""
Convert to list.
diff --git a/model-providers/model_providers/core/entities/provider_entities.py b/model-providers/model_providers/core/entities/provider_entities.py
index ba4a3fb1..7b0705db 100644
--- a/model-providers/model_providers/core/entities/provider_entities.py
+++ b/model-providers/model_providers/core/entities/provider_entities.py
@@ -1,5 +1,5 @@
from enum import Enum
-from typing import Optional
+from typing import List, Optional
from pydantic import BaseModel
@@ -68,7 +68,7 @@ class QuotaConfiguration(BaseModel):
quota_limit: int
quota_used: int
is_valid: bool
- restrict_models: list[RestrictModel] = []
+ restrict_models: List[RestrictModel] = []
class SystemConfiguration(BaseModel):
@@ -78,7 +78,7 @@ class SystemConfiguration(BaseModel):
enabled: bool
current_quota_type: Optional[ProviderQuotaType] = None
- quota_configurations: list[QuotaConfiguration] = []
+ quota_configurations: List[QuotaConfiguration] = []
credentials: Optional[dict] = None
@@ -106,4 +106,4 @@ class CustomConfiguration(BaseModel):
"""
provider: Optional[CustomProviderConfiguration] = None
- models: list[CustomModelConfiguration] = []
+ models: List[CustomModelConfiguration] = []
diff --git a/model-providers/model_providers/core/entities/queue_entities.py b/model-providers/model_providers/core/entities/queue_entities.py
index 7ba21aa6..f72080cb 100644
--- a/model-providers/model_providers/core/entities/queue_entities.py
+++ b/model-providers/model_providers/core/entities/queue_entities.py
@@ -68,7 +68,7 @@ class QueueRetrieverResourcesEvent(AppQueueEvent):
"""
event = QueueEvent.RETRIEVER_RESOURCES
- retriever_resources: list[dict]
+ retriever_resources: List[dict]
class AnnotationReplyEvent(AppQueueEvent):
diff --git a/model-providers/model_providers/core/model_manager.py b/model-providers/model_providers/core/model_manager.py
index af896423..fc045509 100644
--- a/model-providers/model_providers/core/model_manager.py
+++ b/model-providers/model_providers/core/model_manager.py
@@ -1,5 +1,4 @@
-from collections.abc import Generator
-from typing import IO, Optional, Union, cast
+from typing import IO, Generator, List, Optional, Union, cast
from model_providers.core.entities.provider_configuration import ProviderModelBundle
from model_providers.core.model_runtime.callbacks.base_callback import Callback
@@ -68,13 +67,13 @@ class ModelInstance:
def invoke_llm(
self,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: Optional[dict] = None,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
- callbacks: list[Callback] = None,
+ callbacks: List[Callback] = None,
) -> Union[LLMResult, Generator]:
"""
Invoke large language model
@@ -105,7 +104,7 @@ class ModelInstance:
)
def invoke_text_embedding(
- self, texts: list[str], user: Optional[str] = None
+ self, texts: List[str], user: Optional[str] = None
) -> TextEmbeddingResult:
"""
Invoke large language model
@@ -125,7 +124,7 @@ class ModelInstance:
def invoke_rerank(
self,
query: str,
- docs: list[str],
+ docs: List[str],
score_threshold: Optional[float] = None,
top_n: Optional[int] = None,
user: Optional[str] = None,
diff --git a/model-providers/model_providers/core/model_runtime/README_CN.md b/model-providers/model_providers/core/model_runtime/README_CN.md
index 3664fa2c..de984853 100644
--- a/model-providers/model_providers/core/model_runtime/README_CN.md
+++ b/model-providers/model_providers/core/model_runtime/README_CN.md
@@ -69,9 +69,9 @@ Model Runtime 分三层:
在这里我们需要先区分模型参数与模型凭据。
- - 模型参数(**在本层定义**):这是一类经常需要变动,随时调整的参数,如 LLM 的 **max_tokens**、**temperature** 等,这些参数是由用户在前端页面上进行调整的,因此需要在后端定义参数的规则,以便前端页面进行展示和调整。在DifyRuntime中,他们的参数名一般为**model_parameters: dict[str, any]**。
+ - 模型参数(**在本层定义**):这是一类经常需要变动,随时调整的参数,如 LLM 的 **max_tokens**、**temperature** 等,这些参数是由用户在前端页面上进行调整的,因此需要在后端定义参数的规则,以便前端页面进行展示和调整。在DifyRuntime中,他们的参数名一般为**model_parameters: Dict[str, any]**。
- - 模型凭据(**在供应商层定义**):这是一类不经常变动,一般在配置好后就不会再变动的参数,如 **api_key**、**server_url** 等。在DifyRuntime中,他们的参数名一般为**credentials: dict[str, any]**,Provider层的credentials会直接被传递到这一层,不需要再单独定义。
+ - 模型凭据(**在供应商层定义**):这是一类不经常变动,一般在配置好后就不会再变动的参数,如 **api_key**、**server_url** 等。在DifyRuntime中,他们的参数名一般为**credentials: Dict[str, any]**,Provider层的credentials会直接被传递到这一层,不需要再单独定义。
## 下一步
diff --git a/model-providers/model_providers/core/model_runtime/callbacks/base_callback.py b/model-providers/model_providers/core/model_runtime/callbacks/base_callback.py
index f7b8c3e5..c7a51cd1 100644
--- a/model-providers/model_providers/core/model_runtime/callbacks/base_callback.py
+++ b/model-providers/model_providers/core/model_runtime/callbacks/base_callback.py
@@ -1,5 +1,5 @@
from abc import ABC
-from typing import Optional
+from typing import List, Optional
from model_providers.core.model_runtime.entities.llm_entities import (
LLMResult,
@@ -33,10 +33,10 @@ class Callback(ABC):
llm_instance: AIModel,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> None:
@@ -61,10 +61,10 @@ class Callback(ABC):
chunk: LLMResultChunk,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
):
@@ -90,10 +90,10 @@ class Callback(ABC):
result: LLMResult,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> None:
@@ -119,10 +119,10 @@ class Callback(ABC):
ex: Exception,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> None:
diff --git a/model-providers/model_providers/core/model_runtime/callbacks/logging_callback.py b/model-providers/model_providers/core/model_runtime/callbacks/logging_callback.py
index be78e354..287a9f67 100644
--- a/model-providers/model_providers/core/model_runtime/callbacks/logging_callback.py
+++ b/model-providers/model_providers/core/model_runtime/callbacks/logging_callback.py
@@ -1,7 +1,7 @@
import json
import logging
import sys
-from typing import Optional
+from typing import List, Optional
from model_providers.core.model_runtime.callbacks.base_callback import Callback
from model_providers.core.model_runtime.entities.llm_entities import (
@@ -23,10 +23,10 @@ class LoggingCallback(Callback):
llm_instance: AIModel,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> None:
@@ -79,10 +79,10 @@ class LoggingCallback(Callback):
chunk: LLMResultChunk,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
):
@@ -109,10 +109,10 @@ class LoggingCallback(Callback):
result: LLMResult,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> None:
@@ -154,10 +154,10 @@ class LoggingCallback(Callback):
ex: Exception,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> None:
diff --git a/model-providers/model_providers/core/model_runtime/docs/en_US/interfaces.md b/model-providers/model_providers/core/model_runtime/docs/en_US/interfaces.md
index dc70bfad..0f3cfdd0 100644
--- a/model-providers/model_providers/core/model_runtime/docs/en_US/interfaces.md
+++ b/model-providers/model_providers/core/model_runtime/docs/en_US/interfaces.md
@@ -71,7 +71,7 @@ All models need to uniformly implement the following 2 methods:
```python
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[type[InvokeError],List[type[Exception]]]:
"""
Map model invoke error to unified error
The key is the error type thrown to the caller
@@ -95,8 +95,8 @@ Inherit the `__base.large_language_model.LargeLanguageModel` base class and impl
```python
def _invoke(self, model: str, credentials: dict,
- prompt_messages: list[PromptMessage], model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None, stop: Optional[List[str]] = None,
+ prompt_messages:List[PromptMessage], model_parameters: dict,
+ tools: Optional[List[PromptMessageTool]] = None, stop: Optional[List[str]] = None,
stream: bool = True, user: Optional[str] = None) \
-> Union[LLMResult, Generator]:
"""
@@ -157,8 +157,8 @@ Inherit the `__base.large_language_model.LargeLanguageModel` base class and impl
If the model does not provide a pre-calculated tokens interface, you can directly return 0.
```python
- def get_num_tokens(self, model: str, credentials: dict, prompt_messages: list[PromptMessage],
- tools: Optional[list[PromptMessageTool]] = None) -> int:
+ def get_num_tokens(self, model: str, credentials: dict, prompt_messages:List[PromptMessage],
+ tools: Optional[List[PromptMessageTool]] = None) -> int:
"""
Get number of tokens for given prompt messages
@@ -196,7 +196,7 @@ Inherit the `__base.text_embedding_model.TextEmbeddingModel` base class and impl
```python
def _invoke(self, model: str, credentials: dict,
- texts: list[str], user: Optional[str] = None) \
+ texts:List[str], user: Optional[str] = None) \
-> TextEmbeddingResult:
"""
Invoke large language model
@@ -230,7 +230,7 @@ Inherit the `__base.text_embedding_model.TextEmbeddingModel` base class and impl
- Pre-calculating Tokens
```python
- def get_num_tokens(self, model: str, credentials: dict, texts: list[str]) -> int:
+ def get_num_tokens(self, model: str, credentials: dict, texts:List[str]) -> int:
"""
Get number of tokens for given prompt messages
@@ -251,7 +251,7 @@ Inherit the `__base.rerank_model.RerankModel` base class and implement the follo
```python
def _invoke(self, model: str, credentials: dict,
- query: str, docs: list[str], score_threshold: Optional[float] = None, top_n: Optional[int] = None,
+ query: str, docs:List[str], score_threshold: Optional[float] = None, top_n: Optional[int] = None,
user: Optional[str] = None) \
-> RerankResult:
"""
@@ -498,7 +498,7 @@ class PromptMessage(ABC, BaseModel):
Model class for prompt message.
"""
role: PromptMessageRole
- content: Optional[str | list[PromptMessageContent]] = None # Supports two types: string and content list. The content list is designed to meet the needs of multimodal inputs. For more details, see the PromptMessageContent explanation.
+ content: Optional[str |List[PromptMessageContent]] = None # Supports two types: string and content list. The content list is designed to meet the needs of multimodal inputs. For more details, see the PromptMessageContent explanation.
name: Optional[str] = None
```
@@ -539,7 +539,7 @@ class AssistantPromptMessage(PromptMessage):
function: ToolCallFunction # tool call information
role: PromptMessageRole = PromptMessageRole.ASSISTANT
- tool_calls: list[ToolCall] = [] # The result of tool invocation in response from the model (returned only when tools are input and the model deems it necessary to invoke a tool).
+ tool_calls:List[ToolCall] = [] # The result of tool invocation in response from the model (returned only when tools are input and the model deems it necessary to invoke a tool).
```
Where `tool_calls` are the list of `tool calls` returned by the model after invoking the model with the `tools` input.
@@ -593,7 +593,7 @@ class LLMResult(BaseModel):
Model class for llm result.
"""
model: str # Actual used modele
- prompt_messages: list[PromptMessage] # prompt messages
+ prompt_messages:List[PromptMessage] # prompt messages
message: AssistantPromptMessage # response message
usage: LLMUsage # usage info
system_fingerprint: Optional[str] = None # request fingerprint, refer to OpenAI definition
@@ -624,7 +624,7 @@ class LLMResultChunk(BaseModel):
Model class for llm result chunk.
"""
model: str # Actual used modele
- prompt_messages: list[PromptMessage] # prompt messages
+ prompt_messages:List[PromptMessage] # prompt messages
system_fingerprint: Optional[str] = None # request fingerprint, refer to OpenAI definition
delta: LLMResultChunkDelta
```
@@ -660,7 +660,7 @@ class TextEmbeddingResult(BaseModel):
Model class for text embedding result.
"""
model: str # Actual model used
- embeddings: list[list[float]] # List of embedding vectors, corresponding to the input texts list
+ embeddings:List[List[float]] # List of embedding vectors, corresponding to the input texts list
usage: EmbeddingUsage # Usage information
```
@@ -690,7 +690,7 @@ class RerankResult(BaseModel):
Model class for rerank result.
"""
model: str # Actual model used
- docs: list[RerankDocument] # Reranked document list
+ docs:List[RerankDocument] # Reranked document list
```
### RerankDocument
diff --git a/model-providers/model_providers/core/model_runtime/docs/en_US/provider_scale_out.md b/model-providers/model_providers/core/model_runtime/docs/en_US/provider_scale_out.md
index ba356c5c..9a1ba736 100644
--- a/model-providers/model_providers/core/model_runtime/docs/en_US/provider_scale_out.md
+++ b/model-providers/model_providers/core/model_runtime/docs/en_US/provider_scale_out.md
@@ -160,8 +160,8 @@ In `llm.py`, create an Anthropic LLM class, which we name `AnthropicLargeLanguag
```python
def _invoke(self, model: str, credentials: dict,
- prompt_messages: list[PromptMessage], model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None, stop: Optional[list[str]] = None,
+ prompt_messages:List[PromptMessage], model_parameters: dict,
+ tools: Optional[List[PromptMessageTool]] = None, stop: Optional[List[str]] = None,
stream: bool = True, user: Optional[str] = None) \
-> Union[LLMResult, Generator]:
"""
@@ -184,8 +184,8 @@ In `llm.py`, create an Anthropic LLM class, which we name `AnthropicLargeLanguag
If the model does not provide a pre-calculated tokens interface, you can directly return 0.
```python
- def get_num_tokens(self, model: str, credentials: dict, prompt_messages: list[PromptMessage],
- tools: Optional[list[PromptMessageTool]] = None) -> int:
+ def get_num_tokens(self, model: str, credentials: dict, prompt_messages:List[PromptMessage],
+ tools: Optional[List[PromptMessageTool]] = None) -> int:
"""
Get number of tokens for given prompt messages
@@ -226,7 +226,7 @@ In `llm.py`, create an Anthropic LLM class, which we name `AnthropicLargeLanguag
```python
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[type[InvokeError],List[type[Exception]]]:
"""
Map model invoke error to unified error
The key is the error type thrown to the caller
diff --git a/model-providers/model_providers/core/model_runtime/docs/zh_Hans/customizable_model_scale_out.md b/model-providers/model_providers/core/model_runtime/docs/zh_Hans/customizable_model_scale_out.md
index 7b3a8edb..8945d0f0 100644
--- a/model-providers/model_providers/core/model_runtime/docs/zh_Hans/customizable_model_scale_out.md
+++ b/model-providers/model_providers/core/model_runtime/docs/zh_Hans/customizable_model_scale_out.md
@@ -126,8 +126,8 @@ provider_credential_schema:
```python
def _invoke(self, model: str, credentials: dict,
- prompt_messages: list[PromptMessage], model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None, stop: Optional[list[str]] = None,
+ prompt_messages:List[PromptMessage], model_parameters: dict,
+ tools: Optional[List[PromptMessageTool]] = None, stop: Optional[List[str]] = None,
stream: bool = True, user: Optional[str] = None) \
-> Union[LLMResult, Generator]:
"""
@@ -166,8 +166,8 @@ provider_credential_schema:
若模型未提供预计算 tokens 接口,可直接返回 0。
```python
- def get_num_tokens(self, model: str, credentials: dict, prompt_messages: list[PromptMessage],
- tools: Optional[list[PromptMessageTool]] = None) -> int:
+ def get_num_tokens(self, model: str, credentials: dict, prompt_messages:List[PromptMessage],
+ tools: Optional[List[PromptMessageTool]] = None) -> int:
"""
Get number of tokens for given prompt messages
@@ -283,7 +283,7 @@ provider_credential_schema:
```python
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[type[InvokeError],List[type[Exception]]]:
"""
Map model invoke error to unified error
The key is the error type thrown to the caller
diff --git a/model-providers/model_providers/core/model_runtime/docs/zh_Hans/interfaces.md b/model-providers/model_providers/core/model_runtime/docs/zh_Hans/interfaces.md
index 743e575d..da921012 100644
--- a/model-providers/model_providers/core/model_runtime/docs/zh_Hans/interfaces.md
+++ b/model-providers/model_providers/core/model_runtime/docs/zh_Hans/interfaces.md
@@ -80,7 +80,7 @@ class XinferenceProvider(Provider):
```python
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[type[InvokeError],List[type[Exception]]]:
"""
Map model invoke error to unified error
The key is the error type thrown to the caller
@@ -95,7 +95,7 @@ class XinferenceProvider(Provider):
```python
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[type[InvokeError],List[type[Exception]]]:
return {
InvokeConnectionError: [
InvokeConnectionError
@@ -127,8 +127,8 @@ class XinferenceProvider(Provider):
```python
def _invoke(self, model: str, credentials: dict,
- prompt_messages: list[PromptMessage], model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None, stop: Optional[list[str]] = None,
+ prompt_messages:List[PromptMessage], model_parameters: dict,
+ tools: Optional[List[PromptMessageTool]] = None, stop: Optional[List[str]] = None,
stream: bool = True, user: Optional[str] = None) \
-> Union[LLMResult, Generator]:
"""
@@ -189,8 +189,8 @@ class XinferenceProvider(Provider):
若模型未提供预计算 tokens 接口,可直接返回 0。
```python
- def get_num_tokens(self, model: str, credentials: dict, prompt_messages: list[PromptMessage],
- tools: Optional[list[PromptMessageTool]] = None) -> int:
+ def get_num_tokens(self, model: str, credentials: dict, prompt_messages:List[PromptMessage],
+ tools: Optional[List[PromptMessageTool]] = None) -> int:
"""
Get number of tokens for given prompt messages
@@ -232,7 +232,7 @@ class XinferenceProvider(Provider):
```python
def _invoke(self, model: str, credentials: dict,
- texts: list[str], user: Optional[str] = None) \
+ texts:List[str], user: Optional[str] = None) \
-> TextEmbeddingResult:
"""
Invoke large language model
@@ -266,7 +266,7 @@ class XinferenceProvider(Provider):
- 预计算 tokens
```python
- def get_num_tokens(self, model: str, credentials: dict, texts: list[str]) -> int:
+ def get_num_tokens(self, model: str, credentials: dict, texts:List[str]) -> int:
"""
Get number of tokens for given prompt messages
@@ -289,7 +289,7 @@ class XinferenceProvider(Provider):
```python
def _invoke(self, model: str, credentials: dict,
- query: str, docs: list[str], score_threshold: Optional[float] = None, top_n: Optional[int] = None,
+ query: str, docs:List[str], score_threshold: Optional[float] = None, top_n: Optional[int] = None,
user: Optional[str] = None) \
-> RerankResult:
"""
@@ -538,7 +538,7 @@ class PromptMessage(ABC, BaseModel):
Model class for prompt message.
"""
role: PromptMessageRole # 消息角色
- content: Optional[str | list[PromptMessageContent]] = None # 支持两种类型,字符串和内容列表,内容列表是为了满足多模态的需要,可详见 PromptMessageContent 说明。
+ content: Optional[str |List[PromptMessageContent]] = None # 支持两种类型,字符串和内容列表,内容列表是为了满足多模态的需要,可详见 PromptMessageContent 说明。
name: Optional[str] = None # 名称,可选。
```
@@ -579,7 +579,7 @@ class AssistantPromptMessage(PromptMessage):
function: ToolCallFunction # 工具调用信息
role: PromptMessageRole = PromptMessageRole.ASSISTANT
- tool_calls: list[ToolCall] = [] # 模型回复的工具调用结果(仅当传入 tools,并且模型认为需要调用工具时返回)
+ tool_calls:List[ToolCall] = [] # 模型回复的工具调用结果(仅当传入 tools,并且模型认为需要调用工具时返回)
```
其中 `tool_calls` 为调用模型传入 `tools` 后,由模型返回的 `tool call` 列表。
@@ -633,7 +633,7 @@ class LLMResult(BaseModel):
Model class for llm result.
"""
model: str # 实际使用模型
- prompt_messages: list[PromptMessage] # prompt 消息列表
+ prompt_messages:List[PromptMessage] # prompt 消息列表
message: AssistantPromptMessage # 回复消息
usage: LLMUsage # 使用的 tokens 及费用信息
system_fingerprint: Optional[str] = None # 请求指纹,可参考 OpenAI 该参数定义
@@ -664,7 +664,7 @@ class LLMResultChunk(BaseModel):
Model class for llm result chunk.
"""
model: str # 实际使用模型
- prompt_messages: list[PromptMessage] # prompt 消息列表
+ prompt_messages:List[PromptMessage] # prompt 消息列表
system_fingerprint: Optional[str] = None # 请求指纹,可参考 OpenAI 该参数定义
delta: LLMResultChunkDelta # 每个迭代存在变化的内容
```
@@ -700,7 +700,7 @@ class TextEmbeddingResult(BaseModel):
Model class for text embedding result.
"""
model: str # 实际使用模型
- embeddings: list[list[float]] # embedding 向量列表,对应传入的 texts 列表
+ embeddings:List[List[float]] # embedding 向量列表,对应传入的 texts 列表
usage: EmbeddingUsage # 使用信息
```
@@ -730,7 +730,7 @@ class RerankResult(BaseModel):
Model class for rerank result.
"""
model: str # 实际使用模型
- docs: list[RerankDocument] # 重排后的分段列表
+ docs:List[RerankDocument] # 重排后的分段列表
```
### RerankDocument
diff --git a/model-providers/model_providers/core/model_runtime/docs/zh_Hans/predefined_model_scale_out.md b/model-providers/model_providers/core/model_runtime/docs/zh_Hans/predefined_model_scale_out.md
index 56f379a9..ed569340 100644
--- a/model-providers/model_providers/core/model_runtime/docs/zh_Hans/predefined_model_scale_out.md
+++ b/model-providers/model_providers/core/model_runtime/docs/zh_Hans/predefined_model_scale_out.md
@@ -76,8 +76,8 @@ pricing: # 价格信息
```python
def _invoke(self, model: str, credentials: dict,
- prompt_messages: list[PromptMessage], model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None, stop: Optional[list[str]] = None,
+ prompt_messages:List[PromptMessage], model_parameters: dict,
+ tools: Optional[List[PromptMessageTool]] = None, stop: Optional[List[str]] = None,
stream: bool = True, user: Optional[str] = None) \
-> Union[LLMResult, Generator]:
"""
@@ -116,8 +116,8 @@ pricing: # 价格信息
若模型未提供预计算 tokens 接口,可直接返回 0。
```python
- def get_num_tokens(self, model: str, credentials: dict, prompt_messages: list[PromptMessage],
- tools: Optional[list[PromptMessageTool]] = None) -> int:
+ def get_num_tokens(self, model: str, credentials: dict, prompt_messages:List[PromptMessage],
+ tools: Optional[List[PromptMessageTool]] = None) -> int:
"""
Get number of tokens for given prompt messages
@@ -158,7 +158,7 @@ pricing: # 价格信息
```python
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[type[InvokeError],List[type[Exception]]]:
"""
Map model invoke error to unified error
The key is the error type thrown to the caller
diff --git a/model-providers/model_providers/core/model_runtime/entities/defaults.py b/model-providers/model_providers/core/model_runtime/entities/defaults.py
index 98719aac..a9092830 100644
--- a/model-providers/model_providers/core/model_runtime/entities/defaults.py
+++ b/model-providers/model_providers/core/model_runtime/entities/defaults.py
@@ -1,8 +1,10 @@
+from typing import Dict
+
from model_providers.core.model_runtime.entities.model_entities import (
DefaultParameterName,
)
-PARAMETER_RULE_TEMPLATE: dict[DefaultParameterName, dict] = {
+PARAMETER_RULE_TEMPLATE: Dict[DefaultParameterName, dict] = {
DefaultParameterName.TEMPERATURE: {
"label": {
"en_US": "Temperature",
diff --git a/model-providers/model_providers/core/model_runtime/entities/llm_entities.py b/model-providers/model_providers/core/model_runtime/entities/llm_entities.py
index eafdfb2b..8976ff8c 100644
--- a/model-providers/model_providers/core/model_runtime/entities/llm_entities.py
+++ b/model-providers/model_providers/core/model_runtime/entities/llm_entities.py
@@ -1,6 +1,6 @@
from decimal import Decimal
from enum import Enum
-from typing import Optional
+from typing import List, Optional
from pydantic import BaseModel
@@ -78,7 +78,7 @@ class LLMResult(BaseModel):
"""
model: str
- prompt_messages: list[PromptMessage]
+ prompt_messages: List[PromptMessage]
message: AssistantPromptMessage
usage: LLMUsage
system_fingerprint: Optional[str] = None
@@ -101,7 +101,7 @@ class LLMResultChunk(BaseModel):
"""
model: str
- prompt_messages: list[PromptMessage]
+ prompt_messages: List[PromptMessage]
system_fingerprint: Optional[str] = None
delta: LLMResultChunkDelta
diff --git a/model-providers/model_providers/core/model_runtime/entities/message_entities.py b/model-providers/model_providers/core/model_runtime/entities/message_entities.py
index a66294ad..0fd0ed17 100644
--- a/model-providers/model_providers/core/model_runtime/entities/message_entities.py
+++ b/model-providers/model_providers/core/model_runtime/entities/message_entities.py
@@ -1,6 +1,6 @@
from abc import ABC
from enum import Enum
-from typing import Optional
+from typing import List, Optional, Union
from pydantic import BaseModel
@@ -110,7 +110,7 @@ class PromptMessage(ABC, BaseModel):
"""
role: PromptMessageRole
- content: Optional[str | list[PromptMessageContent]] = None
+ content: Optional[Union[str, List[PromptMessageContent]]] = None
name: Optional[str] = None
@@ -145,7 +145,7 @@ class AssistantPromptMessage(PromptMessage):
function: ToolCallFunction
role: PromptMessageRole = PromptMessageRole.ASSISTANT
- tool_calls: list[ToolCall] = []
+ tool_calls: List[ToolCall] = []
class SystemPromptMessage(PromptMessage):
diff --git a/model-providers/model_providers/core/model_runtime/entities/model_entities.py b/model-providers/model_providers/core/model_runtime/entities/model_entities.py
index 0fea8c1d..5cc6e80b 100644
--- a/model-providers/model_providers/core/model_runtime/entities/model_entities.py
+++ b/model-providers/model_providers/core/model_runtime/entities/model_entities.py
@@ -1,6 +1,6 @@
from decimal import Decimal
from enum import Enum
-from typing import Any, List, Optional
+from typing import Any, Dict, List, Optional
from pydantic import BaseModel
@@ -158,9 +158,9 @@ class ProviderModel(BaseModel):
model: str
label: I18nObject
model_type: ModelType
- features: Optional[list[ModelFeature]] = None
+ features: Optional[List[ModelFeature]] = None
fetch_from: FetchFrom
- model_properties: dict[ModelPropertyKey, Any]
+ model_properties: Dict[ModelPropertyKey, Any]
deprecated: bool = False
class Config:
@@ -182,7 +182,7 @@ class ParameterRule(BaseModel):
min: Optional[float] = None
max: Optional[float] = None
precision: Optional[int] = None
- options: list[str] = []
+ options: List[str] = []
class PriceConfig(BaseModel):
@@ -201,7 +201,7 @@ class AIModelEntity(ProviderModel):
Model class for AI model.
"""
- parameter_rules: list[ParameterRule] = []
+ parameter_rules: List[ParameterRule] = []
pricing: Optional[PriceConfig] = None
diff --git a/model-providers/model_providers/core/model_runtime/entities/provider_entities.py b/model-providers/model_providers/core/model_runtime/entities/provider_entities.py
index 21b610ad..2bfee500 100644
--- a/model-providers/model_providers/core/model_runtime/entities/provider_entities.py
+++ b/model-providers/model_providers/core/model_runtime/entities/provider_entities.py
@@ -1,5 +1,5 @@
from enum import Enum
-from typing import Optional
+from typing import List, Optional
from pydantic import BaseModel
@@ -48,7 +48,7 @@ class FormOption(BaseModel):
label: I18nObject
value: str
- show_on: list[FormShowOnObject] = []
+ show_on: List[FormShowOnObject] = []
def __init__(self, **data):
super().__init__(**data)
@@ -66,10 +66,10 @@ class CredentialFormSchema(BaseModel):
type: FormType
required: bool = True
default: Optional[str] = None
- options: Optional[list[FormOption]] = None
+ options: Optional[List[FormOption]] = None
placeholder: Optional[I18nObject] = None
max_length: int = 0
- show_on: list[FormShowOnObject] = []
+ show_on: List[FormShowOnObject] = []
class ProviderCredentialSchema(BaseModel):
@@ -77,7 +77,7 @@ class ProviderCredentialSchema(BaseModel):
Model class for provider credential schema.
"""
- credential_form_schemas: list[CredentialFormSchema]
+ credential_form_schemas: List[CredentialFormSchema]
class FieldModelSchema(BaseModel):
@@ -91,7 +91,7 @@ class ModelCredentialSchema(BaseModel):
"""
model: FieldModelSchema
- credential_form_schemas: list[CredentialFormSchema]
+ credential_form_schemas: List[CredentialFormSchema]
class SimpleProviderEntity(BaseModel):
@@ -103,8 +103,8 @@ class SimpleProviderEntity(BaseModel):
label: I18nObject
icon_small: Optional[I18nObject] = None
icon_large: Optional[I18nObject] = None
- supported_model_types: list[ModelType]
- models: list[AIModelEntity] = []
+ supported_model_types: List[ModelType]
+ models: List[AIModelEntity] = []
class ProviderHelpEntity(BaseModel):
@@ -128,9 +128,9 @@ class ProviderEntity(BaseModel):
icon_large: Optional[I18nObject] = None
background: Optional[str] = None
help: Optional[ProviderHelpEntity] = None
- supported_model_types: list[ModelType]
- configurate_methods: list[ConfigurateMethod]
- models: list[ProviderModel] = []
+ supported_model_types: List[ModelType]
+ configurate_methods: List[ConfigurateMethod]
+ models: List[ProviderModel] = []
provider_credential_schema: Optional[ProviderCredentialSchema] = None
model_credential_schema: Optional[ModelCredentialSchema] = None
diff --git a/model-providers/model_providers/core/model_runtime/entities/rerank_entities.py b/model-providers/model_providers/core/model_runtime/entities/rerank_entities.py
index 99709e1b..034a7286 100644
--- a/model-providers/model_providers/core/model_runtime/entities/rerank_entities.py
+++ b/model-providers/model_providers/core/model_runtime/entities/rerank_entities.py
@@ -1,3 +1,5 @@
+from typing import List
+
from pydantic import BaseModel
@@ -17,4 +19,4 @@ class RerankResult(BaseModel):
"""
model: str
- docs: list[RerankDocument]
+ docs: List[RerankDocument]
diff --git a/model-providers/model_providers/core/model_runtime/entities/text_embedding_entities.py b/model-providers/model_providers/core/model_runtime/entities/text_embedding_entities.py
index fa2172a0..454e41ee 100644
--- a/model-providers/model_providers/core/model_runtime/entities/text_embedding_entities.py
+++ b/model-providers/model_providers/core/model_runtime/entities/text_embedding_entities.py
@@ -1,4 +1,5 @@
from decimal import Decimal
+from typing import List
from pydantic import BaseModel
@@ -25,5 +26,5 @@ class TextEmbeddingResult(BaseModel):
"""
model: str
- embeddings: list[list[float]]
+ embeddings: List[List[float]]
usage: EmbeddingUsage
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/__base/ai_model.py b/model-providers/model_providers/core/model_runtime/model_providers/__base/ai_model.py
index 2c3233d4..6d34f88a 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/__base/ai_model.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/__base/ai_model.py
@@ -1,7 +1,7 @@
import decimal
import os
from abc import ABC, abstractmethod
-from typing import Optional
+from typing import Dict, List, Optional, Type
import yaml
@@ -35,7 +35,7 @@ class AIModel(ABC):
"""
model_type: ModelType
- model_schemas: list[AIModelEntity] = None
+ model_schemas: List[AIModelEntity] = None
started_at: float = 0
@abstractmethod
@@ -51,7 +51,7 @@ class AIModel(ABC):
@property
@abstractmethod
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[Type[InvokeError], List[Type[Exception]]]:
"""
Map model invoke error to unified error
The key is the error type thrown to the caller
@@ -133,7 +133,7 @@ class AIModel(ABC):
currency=price_config.currency,
)
- def predefined_models(self) -> list[AIModelEntity]:
+ def predefined_models(self) -> List[AIModelEntity]:
"""
Get all predefined models for given provider.
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/__base/large_language_model.py b/model-providers/model_providers/core/model_runtime/model_providers/__base/large_language_model.py
index 2b0a1e20..2b09bfdb 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/__base/large_language_model.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/__base/large_language_model.py
@@ -3,8 +3,7 @@ import os
import re
import time
from abc import abstractmethod
-from collections.abc import Generator
-from typing import Optional, Union
+from typing import Generator, List, Optional, Union
from model_providers.core.model_runtime.callbacks.base_callback import Callback
from model_providers.core.model_runtime.callbacks.logging_callback import (
@@ -47,13 +46,13 @@ class LargeLanguageModel(AIModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: Optional[dict] = None,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
- callbacks: list[Callback] = None,
+ callbacks: List[Callback] = None,
) -> Union[LLMResult, Generator]:
"""
Invoke large language model
@@ -170,13 +169,13 @@ class LargeLanguageModel(AIModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
- callbacks: list[Callback] = None,
+ callbacks: List[Callback] = None,
) -> Union[LLMResult, Generator]:
"""
Code block mode wrapper, ensure the response is a code block with output markdown quote
@@ -290,7 +289,7 @@ if you are not sure about the structure.
def _code_block_mode_stream_processor(
self,
model: str,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
input_generator: Generator[LLMResultChunk, None, None],
) -> Generator[LLMResultChunk, None, None]:
"""
@@ -428,13 +427,13 @@ if you are not sure about the structure.
model: str,
result: Generator,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
- callbacks: list[Callback] = None,
+ callbacks: List[Callback] = None,
) -> Generator:
"""
Invoke result generator
@@ -498,10 +497,10 @@ if you are not sure about the structure.
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> Union[LLMResult, Generator]:
@@ -525,8 +524,8 @@ if you are not sure about the structure.
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
- tools: Optional[list[PromptMessageTool]] = None,
+ prompt_messages: List[PromptMessage],
+ tools: Optional[List[PromptMessageTool]] = None,
) -> int:
"""
Get number of tokens for given prompt messages
@@ -539,7 +538,7 @@ if you are not sure about the structure.
"""
raise NotImplementedError
- def enforce_stop_tokens(self, text: str, stop: list[str]) -> str:
+ def enforce_stop_tokens(self, text: str, stop: List[str]) -> str:
"""Cut off the text as soon as any stop words occur."""
return re.split("|".join(stop), text, maxsplit=1)[0]
@@ -575,7 +574,7 @@ if you are not sure about the structure.
index += 1
time.sleep(0.01)
- def get_parameter_rules(self, model: str, credentials: dict) -> list[ParameterRule]:
+ def get_parameter_rules(self, model: str, credentials: dict) -> List[ParameterRule]:
"""
Get parameter rules
@@ -658,13 +657,13 @@ if you are not sure about the structure.
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
- callbacks: list[Callback] = None,
+ callbacks: List[Callback] = None,
) -> None:
"""
Trigger before invoke callbacks
@@ -706,13 +705,13 @@ if you are not sure about the structure.
chunk: LLMResultChunk,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
- callbacks: list[Callback] = None,
+ callbacks: List[Callback] = None,
) -> None:
"""
Trigger new chunk callbacks
@@ -755,13 +754,13 @@ if you are not sure about the structure.
model: str,
result: LLMResult,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
- callbacks: list[Callback] = None,
+ callbacks: List[Callback] = None,
) -> None:
"""
Trigger after invoke callbacks
@@ -805,13 +804,13 @@ if you are not sure about the structure.
model: str,
ex: Exception,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
- callbacks: list[Callback] = None,
+ callbacks: List[Callback] = None,
) -> None:
"""
Trigger invoke error callbacks
@@ -911,7 +910,7 @@ if you are not sure about the structure.
f"Model Parameter {parameter_name} should be less than or equal to {parameter_rule.max}."
)
elif parameter_rule.type == ParameterType.FLOAT:
- if not isinstance(parameter_value, float | int):
+ if not isinstance(parameter_value, (float, int)):
raise ValueError(
f"Model Parameter {parameter_name} should be float."
)
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/__base/model_provider.py b/model-providers/model_providers/core/model_runtime/model_providers/__base/model_provider.py
index 48f4a942..40fea584 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/__base/model_provider.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/__base/model_provider.py
@@ -1,6 +1,7 @@
import importlib
import os
from abc import ABC, abstractmethod
+from typing import Dict, List
import yaml
@@ -14,7 +15,7 @@ from model_providers.core.model_runtime.model_providers.__base.ai_model import A
class ModelProvider(ABC):
provider_schema: ProviderEntity = None
- model_instance_map: dict[str, AIModel] = {}
+ model_instance_map: Dict[str, AIModel] = {}
@abstractmethod
def validate_provider_credentials(self, credentials: dict) -> None:
@@ -65,7 +66,7 @@ class ModelProvider(ABC):
return provider_schema
- def models(self, model_type: ModelType) -> list[AIModelEntity]:
+ def models(self, model_type: ModelType) -> List[AIModelEntity]:
"""
Get all models for given model type
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/__base/rerank_model.py b/model-providers/model_providers/core/model_runtime/model_providers/__base/rerank_model.py
index 6fdafde9..c37cc7d7 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/__base/rerank_model.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/__base/rerank_model.py
@@ -1,6 +1,6 @@
import time
from abc import abstractmethod
-from typing import Optional
+from typing import List, Optional
from model_providers.core.model_runtime.entities.model_entities import ModelType
from model_providers.core.model_runtime.entities.rerank_entities import RerankResult
@@ -19,7 +19,7 @@ class RerankModel(AIModel):
model: str,
credentials: dict,
query: str,
- docs: list[str],
+ docs: List[str],
score_threshold: Optional[float] = None,
top_n: Optional[int] = None,
user: Optional[str] = None,
@@ -51,7 +51,7 @@ class RerankModel(AIModel):
model: str,
credentials: dict,
query: str,
- docs: list[str],
+ docs: List[str],
score_threshold: Optional[float] = None,
top_n: Optional[int] = None,
user: Optional[str] = None,
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/__base/text2img_model.py b/model-providers/model_providers/core/model_runtime/model_providers/__base/text2img_model.py
index 058c910e..c411b547 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/__base/text2img_model.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/__base/text2img_model.py
@@ -1,5 +1,5 @@
from abc import abstractmethod
-from typing import IO, Optional
+from typing import IO, Optional, List
from model_providers.core.model_runtime.entities.model_entities import ModelType
from model_providers.core.model_runtime.model_providers.__base.ai_model import AIModel
@@ -19,7 +19,7 @@ class Text2ImageModel(AIModel):
prompt: str,
model_parameters: dict,
user: Optional[str] = None,
- ) -> list[IO[bytes]]:
+ ) -> List[IO[bytes]]:
"""
Invoke Text2Image model
@@ -44,7 +44,7 @@ class Text2ImageModel(AIModel):
prompt: str,
model_parameters: dict,
user: Optional[str] = None,
- ) -> list[IO[bytes]]:
+ ) -> List[IO[bytes]]:
"""
Invoke Text2Image model
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/__base/text_embedding_model.py b/model-providers/model_providers/core/model_runtime/model_providers/__base/text_embedding_model.py
index d46b412e..101d2460 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/__base/text_embedding_model.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/__base/text_embedding_model.py
@@ -1,6 +1,6 @@
import time
from abc import abstractmethod
-from typing import Optional
+from typing import List, Optional
from model_providers.core.model_runtime.entities.model_entities import (
ModelPropertyKey,
@@ -23,7 +23,7 @@ class TextEmbeddingModel(AIModel):
self,
model: str,
credentials: dict,
- texts: list[str],
+ texts: List[str],
user: Optional[str] = None,
) -> TextEmbeddingResult:
"""
@@ -47,7 +47,7 @@ class TextEmbeddingModel(AIModel):
self,
model: str,
credentials: dict,
- texts: list[str],
+ texts: List[str],
user: Optional[str] = None,
) -> TextEmbeddingResult:
"""
@@ -62,7 +62,7 @@ class TextEmbeddingModel(AIModel):
raise NotImplementedError
@abstractmethod
- def get_num_tokens(self, model: str, credentials: dict, texts: list[str]) -> int:
+ def get_num_tokens(self, model: str, credentials: dict, texts: List[str]) -> int:
"""
Get number of tokens for given prompt messages
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/anthropic/llm/llm.py b/model-providers/model_providers/core/model_runtime/model_providers/anthropic/llm/llm.py
index 032c2757..e13e3b06 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/anthropic/llm/llm.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/anthropic/llm/llm.py
@@ -1,7 +1,6 @@
import base64
import mimetypes
-from collections.abc import Generator
-from typing import Optional, Union, cast
+from typing import Optional, Union, cast, Generator, List, Dict, Type
import anthropic
import requests
@@ -63,10 +62,10 @@ class AnthropicLargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> Union[LLMResult, Generator]:
@@ -92,9 +91,9 @@ class AnthropicLargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- stop: Optional[list[str]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> Union[LLMResult, Generator]:
@@ -158,13 +157,13 @@ class AnthropicLargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
- callbacks: list[Callback] = None,
+ callbacks: List[Callback] = None,
) -> Union[LLMResult, Generator]:
"""
Code block mode wrapper for invoking large language model
@@ -203,12 +202,12 @@ class AnthropicLargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: list[PromptMessageTool] | None = None,
- stop: list[str] | None = None,
+ tools: Union[List[PromptMessageTool], None] = None,
+ stop: Union[List[str], None] = None,
stream: bool = True,
- user: str | None = None,
+ user: Union[str, None] = None,
response_format: str = "JSON",
) -> None:
"""
@@ -251,8 +250,8 @@ class AnthropicLargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
- tools: Optional[list[PromptMessageTool]] = None,
+ prompt_messages: List[PromptMessage],
+ tools: Optional[List[PromptMessageTool]] = None,
) -> int:
"""
Get number of tokens for given prompt messages
@@ -297,7 +296,7 @@ class AnthropicLargeLanguageModel(LargeLanguageModel):
model: str,
credentials: dict,
response: Message,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
) -> LLMResult:
"""
Handle llm chat response
@@ -345,7 +344,7 @@ class AnthropicLargeLanguageModel(LargeLanguageModel):
model: str,
credentials: dict,
response: Stream[MessageStreamEvent],
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
) -> Generator:
"""
Handle llm chat stream response
@@ -424,8 +423,8 @@ class AnthropicLargeLanguageModel(LargeLanguageModel):
return credentials_kwargs
def _convert_prompt_messages(
- self, prompt_messages: list[PromptMessage]
- ) -> tuple[str, list[dict]]:
+ self, prompt_messages: List[PromptMessage]
+ ) -> tuple[str, List[dict]]:
"""
Convert prompt messages to dict list and system
"""
@@ -560,7 +559,7 @@ class AnthropicLargeLanguageModel(LargeLanguageModel):
return message_text
def _convert_messages_to_prompt_anthropic(
- self, messages: list[PromptMessage]
+ self, messages: List[PromptMessage]
) -> str:
"""
Format a list of messages into a full prompt for the Anthropic model
@@ -583,7 +582,7 @@ class AnthropicLargeLanguageModel(LargeLanguageModel):
return text.rstrip()
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[Type[InvokeError], List[Type[Exception]]]:
"""
Map model invoke error to unified error
The key is the error type thrown to the caller
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/azure_openai/_common.py b/model-providers/model_providers/core/model_runtime/model_providers/azure_openai/_common.py
index 6ae57a15..92bf471d 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/azure_openai/_common.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/azure_openai/_common.py
@@ -1,3 +1,5 @@
+from typing import Dict, Type, List
+
import openai
from httpx import Timeout
@@ -29,7 +31,7 @@ class _CommonAzureOpenAI:
return credentials_kwargs
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[Type[InvokeError], List[Type[Exception]]]:
return {
InvokeConnectionError: [openai.APIConnectionError, openai.APITimeoutError],
InvokeServerUnavailableError: [openai.InternalServerError],
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/azure_openai/llm/llm.py b/model-providers/model_providers/core/model_runtime/model_providers/azure_openai/llm/llm.py
index c712fd06..e1b1b6f0 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/azure_openai/llm/llm.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/azure_openai/llm/llm.py
@@ -1,7 +1,6 @@
import copy
import logging
-from collections.abc import Generator
-from typing import Optional, Union, cast
+from typing import Optional, Union, cast, List, Generator
import tiktoken
from openai import AzureOpenAI, Stream
@@ -60,10 +59,10 @@ class AzureOpenAILargeLanguageModel(_CommonAzureOpenAI, LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> Union[LLMResult, Generator]:
@@ -102,8 +101,8 @@ class AzureOpenAILargeLanguageModel(_CommonAzureOpenAI, LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
- tools: Optional[list[PromptMessageTool]] = None,
+ prompt_messages: List[PromptMessage],
+ tools: Optional[List[PromptMessageTool]] = None,
) -> int:
model_mode = self._get_ai_model_entity(
credentials.get("base_model_name"), model
@@ -176,9 +175,9 @@ class AzureOpenAILargeLanguageModel(_CommonAzureOpenAI, LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- stop: Optional[list[str]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> Union[LLMResult, Generator]:
@@ -215,7 +214,7 @@ class AzureOpenAILargeLanguageModel(_CommonAzureOpenAI, LargeLanguageModel):
model: str,
credentials: dict,
response: Completion,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
) -> LLMResult:
assistant_text = response.choices[0].text
@@ -257,7 +256,7 @@ class AzureOpenAILargeLanguageModel(_CommonAzureOpenAI, LargeLanguageModel):
model: str,
credentials: dict,
response: Stream[Completion],
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
) -> Generator:
full_text = ""
for chunk in response:
@@ -321,10 +320,10 @@ class AzureOpenAILargeLanguageModel(_CommonAzureOpenAI, LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> Union[LLMResult, Generator]:
@@ -381,8 +380,8 @@ class AzureOpenAILargeLanguageModel(_CommonAzureOpenAI, LargeLanguageModel):
model: str,
credentials: dict,
response: ChatCompletion,
- prompt_messages: list[PromptMessage],
- tools: Optional[list[PromptMessageTool]] = None,
+ prompt_messages: List[PromptMessage],
+ tools: Optional[List[PromptMessageTool]] = None,
) -> LLMResult:
assistant_message = response.choices[0].message
# assistant_message_tool_calls = assistant_message.tool_calls
@@ -435,8 +434,8 @@ class AzureOpenAILargeLanguageModel(_CommonAzureOpenAI, LargeLanguageModel):
model: str,
credentials: dict,
response: Stream[ChatCompletionChunk],
- prompt_messages: list[PromptMessage],
- tools: Optional[list[PromptMessageTool]] = None,
+ prompt_messages: List[PromptMessage],
+ tools: Optional[List[PromptMessageTool]] = None,
) -> Generator:
index = 0
full_assistant_content = ""
@@ -545,8 +544,8 @@ class AzureOpenAILargeLanguageModel(_CommonAzureOpenAI, LargeLanguageModel):
@staticmethod
def _extract_response_tool_calls(
- response_tool_calls: list[ChatCompletionMessageToolCall | ChoiceDeltaToolCall],
- ) -> list[AssistantPromptMessage.ToolCall]:
+ response_tool_calls: List[Union[ChatCompletionMessageToolCall, ChoiceDeltaToolCall]],
+ ) -> List[AssistantPromptMessage.ToolCall]:
tool_calls = []
if response_tool_calls:
for response_tool_call in response_tool_calls:
@@ -566,7 +565,7 @@ class AzureOpenAILargeLanguageModel(_CommonAzureOpenAI, LargeLanguageModel):
@staticmethod
def _extract_response_function_call(
- response_function_call: FunctionCall | ChoiceDeltaFunctionCall,
+ response_function_call: Union[FunctionCall, ChoiceDeltaFunctionCall],
) -> AssistantPromptMessage.ToolCall:
tool_call = None
if response_function_call:
@@ -651,7 +650,7 @@ class AzureOpenAILargeLanguageModel(_CommonAzureOpenAI, LargeLanguageModel):
self,
credentials: dict,
text: str,
- tools: Optional[list[PromptMessageTool]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
) -> int:
try:
encoding = tiktoken.encoding_for_model(credentials["base_model_name"])
@@ -668,8 +667,8 @@ class AzureOpenAILargeLanguageModel(_CommonAzureOpenAI, LargeLanguageModel):
def _num_tokens_from_messages(
self,
credentials: dict,
- messages: list[PromptMessage],
- tools: Optional[list[PromptMessageTool]] = None,
+ messages: List[PromptMessage],
+ tools: Optional[List[PromptMessageTool]] = None,
) -> int:
"""Calculate num tokens for gpt-3.5-turbo and gpt-4 with tiktoken package.
@@ -743,7 +742,7 @@ class AzureOpenAILargeLanguageModel(_CommonAzureOpenAI, LargeLanguageModel):
@staticmethod
def _num_tokens_for_tools(
- encoding: tiktoken.Encoding, tools: list[PromptMessageTool]
+ encoding: tiktoken.Encoding, tools: List[PromptMessageTool]
) -> int:
num_tokens = 0
for tool in tools:
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/azure_openai/text_embedding/text_embedding.py b/model-providers/model_providers/core/model_runtime/model_providers/azure_openai/text_embedding/text_embedding.py
index 17e442fe..6bd4c0f6 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/azure_openai/text_embedding/text_embedding.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/azure_openai/text_embedding/text_embedding.py
@@ -1,7 +1,7 @@
import base64
import copy
import time
-from typing import Optional, Union
+from typing import Optional, Union, List
import numpy as np
import tiktoken
@@ -35,7 +35,7 @@ class AzureOpenAITextEmbeddingModel(_CommonAzureOpenAI, TextEmbeddingModel):
self,
model: str,
credentials: dict,
- texts: list[str],
+ texts: List[str],
user: Optional[str] = None,
) -> TextEmbeddingResult:
base_model_name = credentials["base_model_name"]
@@ -51,7 +51,7 @@ class AzureOpenAITextEmbeddingModel(_CommonAzureOpenAI, TextEmbeddingModel):
context_size = self._get_context_size(model, credentials)
max_chunks = self._get_max_chunks(model, credentials)
- embeddings: list[list[float]] = [[] for _ in range(len(texts))]
+ embeddings: List[List[float]] = [[] for _ in range(len(texts))]
tokens = []
indices = []
used_tokens = 0
@@ -81,8 +81,8 @@ class AzureOpenAITextEmbeddingModel(_CommonAzureOpenAI, TextEmbeddingModel):
used_tokens += embedding_used_tokens
batched_embeddings += embeddings_batch
- results: list[list[list[float]]] = [[] for _ in range(len(texts))]
- num_tokens_in_batch: list[list[int]] = [[] for _ in range(len(texts))]
+ results: List[List[list[float]]] = [[] for _ in range(len(texts))]
+ num_tokens_in_batch: List[List[int]] = [[] for _ in range(len(texts))]
for i in range(len(indices)):
results[indices[i]].append(batched_embeddings[i])
num_tokens_in_batch[indices[i]].append(len(tokens[i]))
@@ -112,7 +112,7 @@ class AzureOpenAITextEmbeddingModel(_CommonAzureOpenAI, TextEmbeddingModel):
embeddings=embeddings, usage=usage, model=base_model_name
)
- def get_num_tokens(self, model: str, credentials: dict, texts: list[str]) -> int:
+ def get_num_tokens(self, model: str, credentials: dict, texts: List[str]) -> int:
if len(texts) == 0:
return 0
@@ -168,9 +168,9 @@ class AzureOpenAITextEmbeddingModel(_CommonAzureOpenAI, TextEmbeddingModel):
def _embedding_invoke(
model: str,
client: AzureOpenAI,
- texts: Union[list[str], str],
+ texts: Union[List[str], str],
extra_model_kwargs: dict,
- ) -> tuple[list[list[float]], int]:
+ ) -> tuple[List[list[float]], int]:
response = client.embeddings.create(
input=texts,
model=model,
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/baichuan/llm/baichuan_turbo.py b/model-providers/model_providers/core/model_runtime/model_providers/baichuan/llm/baichuan_turbo.py
index 9fcffccc..95c822f4 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/baichuan/llm/baichuan_turbo.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/baichuan/llm/baichuan_turbo.py
@@ -1,8 +1,7 @@
-from collections.abc import Generator
from enum import Enum
from hashlib import md5
from json import dumps, loads
-from typing import Any, Union
+from typing import Any, Union, Dict, List, Generator
from requests import post
@@ -25,10 +24,10 @@ class BaichuanMessage:
role: str = Role.USER.value
content: str
- usage: dict[str, int] = None
+ usage: Dict[str, int] = None
stop_reason: str = ""
- def to_dict(self) -> dict[str, Any]:
+ def to_dict(self) -> Dict[str, Any]:
return {
"role": self.role,
"content": self.content,
@@ -112,9 +111,9 @@ class BaichuanModel:
self,
model: str,
stream: bool,
- messages: list[BaichuanMessage],
- parameters: dict[str, Any],
- ) -> dict[str, Any]:
+ messages: List[BaichuanMessage],
+ parameters: Dict[str, Any],
+ ) -> Dict[str, Any]:
if (
model == "baichuan2-turbo"
or model == "baichuan2-turbo-192k"
@@ -165,7 +164,7 @@ class BaichuanModel:
else:
raise BadRequestError(f"Unknown model: {model}")
- def _build_headers(self, model: str, data: dict[str, Any]) -> dict[str, Any]:
+ def _build_headers(self, model: str, data: Dict[str, Any]) -> Dict[str, Any]:
if (
model == "baichuan2-turbo"
or model == "baichuan2-turbo-192k"
@@ -187,8 +186,8 @@ class BaichuanModel:
self,
model: str,
stream: bool,
- messages: list[BaichuanMessage],
- parameters: dict[str, Any],
+ messages: List[BaichuanMessage],
+ parameters: Dict[str, Any],
timeout: int,
) -> Union[Generator, BaichuanMessage]:
if (
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/baichuan/llm/llm.py b/model-providers/model_providers/core/model_runtime/model_providers/baichuan/llm/llm.py
index b1691b5f..14231d73 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/baichuan/llm/llm.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/baichuan/llm/llm.py
@@ -1,5 +1,4 @@
-from collections.abc import Generator
-from typing import cast
+from typing import cast, Generator, List, Union, Dict, Type
from model_providers.core.model_runtime.entities.llm_entities import (
LLMResult,
@@ -49,13 +48,13 @@ class BaichuanLarguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: list[PromptMessageTool] | None = None,
- stop: list[str] | None = None,
+ tools: Union[List[PromptMessageTool], None] = None,
+ stop: Union[List[str], None] = None,
stream: bool = True,
- user: str | None = None,
- ) -> LLMResult | Generator:
+ user: Union[str, None] = None,
+ ) -> Union[LLMResult, Generator]:
return self._generate(
model=model,
credentials=credentials,
@@ -71,14 +70,14 @@ class BaichuanLarguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
- tools: list[PromptMessageTool] | None = None,
+ prompt_messages: List[PromptMessage],
+ tools: Union[List[PromptMessageTool], None] = None,
) -> int:
return self._num_tokens_from_messages(prompt_messages)
def _num_tokens_from_messages(
self,
- messages: list[PromptMessage],
+ messages: List[PromptMessage],
) -> int:
"""Calculate num tokens for baichuan model"""
@@ -149,13 +148,13 @@ class BaichuanLarguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: list[PromptMessageTool] | None = None,
- stop: list[str] | None = None,
+ tools: Union[List[PromptMessageTool], None] = None,
+ stop: Union[List[str], None] = None,
stream: bool = True,
- user: str | None = None,
- ) -> LLMResult | Generator:
+ user: Union[str, None] = None,
+ ) -> Union[LLMResult, Generator]:
if tools is not None and len(tools) > 0:
raise InvokeBadRequestError("Baichuan model doesn't support tools")
@@ -195,7 +194,7 @@ class BaichuanLarguageModel(LargeLanguageModel):
def _handle_chat_generate_response(
self,
model: str,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
credentials: dict,
response: BaichuanMessage,
) -> LLMResult:
@@ -216,7 +215,7 @@ class BaichuanLarguageModel(LargeLanguageModel):
def _handle_chat_generate_stream_response(
self,
model: str,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
credentials: dict,
response: Generator[BaichuanMessage, None, None],
) -> Generator:
@@ -258,7 +257,7 @@ class BaichuanLarguageModel(LargeLanguageModel):
)
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[Type[InvokeError], List[Type[Exception]]]:
"""
Map model invoke error to unified error
The key is the error type thrown to the caller
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/baichuan/text_embedding/text_embedding.py b/model-providers/model_providers/core/model_runtime/model_providers/baichuan/text_embedding/text_embedding.py
index 0f008858..e2a6d0f9 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/baichuan/text_embedding/text_embedding.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/baichuan/text_embedding/text_embedding.py
@@ -47,7 +47,7 @@ class BaichuanTextEmbeddingModel(TextEmbeddingModel):
self,
model: str,
credentials: dict,
- texts: list[str],
+ texts: List[str],
user: Optional[str] = None,
) -> TextEmbeddingResult:
"""
@@ -93,8 +93,8 @@ class BaichuanTextEmbeddingModel(TextEmbeddingModel):
return result
def embedding(
- self, model: str, api_key, texts: list[str], user: Optional[str] = None
- ) -> tuple[list[list[float]], int]:
+ self, model: str, api_key, texts: List[str], user: Optional[str] = None
+ ) -> tuple[List[list[float]], int]:
"""
Embed given texts
@@ -154,7 +154,7 @@ class BaichuanTextEmbeddingModel(TextEmbeddingModel):
return [data["embedding"] for data in embeddings], usage["total_tokens"]
- def get_num_tokens(self, model: str, credentials: dict, texts: list[str]) -> int:
+ def get_num_tokens(self, model: str, credentials: dict, texts: List[str]) -> int:
"""
Get number of tokens for given prompt messages
@@ -183,7 +183,7 @@ class BaichuanTextEmbeddingModel(TextEmbeddingModel):
raise CredentialsValidateFailedError("Invalid api key")
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[Type[InvokeError], List[Type[Exception]]]:
return {
InvokeConnectionError: [],
InvokeServerUnavailableError: [InternalServerError],
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/bedrock/llm/llm.py b/model-providers/model_providers/core/model_runtime/model_providers/bedrock/llm/llm.py
index 48a9e990..5741efcd 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/bedrock/llm/llm.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/bedrock/llm/llm.py
@@ -1,7 +1,6 @@
import json
import logging
-from collections.abc import Generator
-from typing import Optional, Union
+from typing import Dict, Generator, List, Optional, Type, Union
import boto3
from botocore.config import Config
@@ -48,10 +47,10 @@ class BedrockLargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> Union[LLMResult, Generator]:
@@ -77,8 +76,8 @@ class BedrockLargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- messages: list[PromptMessage] | str,
- tools: Optional[list[PromptMessageTool]] = None,
+ messages: Union[List[PromptMessage], str],
+ tools: Optional[List[PromptMessageTool]] = None,
) -> int:
"""
Get number of tokens for given prompt messages
@@ -99,7 +98,7 @@ class BedrockLargeLanguageModel(LargeLanguageModel):
return self._get_num_tokens_by_gpt2(prompt)
def _convert_messages_to_prompt(
- self, model_prefix: str, messages: list[PromptMessage]
+ self, model_prefix: str, messages: List[PromptMessage]
) -> str:
"""
Format a list of messages into a full prompt for the Google model
@@ -190,7 +189,7 @@ class BedrockLargeLanguageModel(LargeLanguageModel):
return message_text
def _convert_messages_to_prompt(
- self, messages: list[PromptMessage], model_prefix: str
+ self, messages: List[PromptMessage], model_prefix: str
) -> str:
"""
Format a list of messages into a full prompt for the Anthropic, Amazon and Llama models
@@ -216,9 +215,9 @@ class BedrockLargeLanguageModel(LargeLanguageModel):
def _create_payload(
self,
model_prefix: str,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- stop: Optional[list[str]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
):
"""
@@ -282,9 +281,9 @@ class BedrockLargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- stop: Optional[list[str]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> Union[LLMResult, Generator]:
@@ -356,7 +355,7 @@ class BedrockLargeLanguageModel(LargeLanguageModel):
model: str,
credentials: dict,
response: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
) -> LLMResult:
"""
Handle llm response
@@ -436,7 +435,7 @@ class BedrockLargeLanguageModel(LargeLanguageModel):
model: str,
credentials: dict,
response: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
) -> Generator:
"""
Handle llm stream response
@@ -551,7 +550,7 @@ class BedrockLargeLanguageModel(LargeLanguageModel):
)
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[Type[InvokeError], List[Type[Exception]]]:
"""
Map model invoke error to unified error
The key is the ermd = genai.GenerativeModel(model)ror type thrown to the caller
@@ -570,7 +569,7 @@ class BedrockLargeLanguageModel(LargeLanguageModel):
def _map_client_to_invoke_error(
self, error_code: str, error_msg: str
- ) -> type[InvokeError]:
+ ) -> Type[InvokeError]:
"""
Map client error to invoke error
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/chatglm/__init__.py b/model-providers/model_providers/core/model_runtime/model_providers/chatglm/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/chatglm/_assets/icon_l_en.svg b/model-providers/model_providers/core/model_runtime/model_providers/chatglm/_assets/icon_l_en.svg
deleted file mode 100644
index a824d43d..00000000
--- a/model-providers/model_providers/core/model_runtime/model_providers/chatglm/_assets/icon_l_en.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/chatglm/_assets/icon_s_en.svg b/model-providers/model_providers/core/model_runtime/model_providers/chatglm/_assets/icon_s_en.svg
deleted file mode 100644
index 466b4fce..00000000
--- a/model-providers/model_providers/core/model_runtime/model_providers/chatglm/_assets/icon_s_en.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
\ No newline at end of file
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/chatglm/chatglm.py b/model-providers/model_providers/core/model_runtime/model_providers/chatglm/chatglm.py
deleted file mode 100644
index f0bd8825..00000000
--- a/model-providers/model_providers/core/model_runtime/model_providers/chatglm/chatglm.py
+++ /dev/null
@@ -1,36 +0,0 @@
-import logging
-
-from model_providers.core.model_runtime.entities.model_entities import ModelType
-from model_providers.core.model_runtime.errors.validate import (
- CredentialsValidateFailedError,
-)
-from model_providers.core.model_runtime.model_providers.__base.model_provider import (
- ModelProvider,
-)
-
-logger = logging.getLogger(__name__)
-
-
-class ChatGLMProvider(ModelProvider):
- def validate_provider_credentials(self, credentials: dict) -> None:
- """
- Validate provider credentials
-
- if validate failed, raise exception
-
- :param credentials: provider credentials, credentials form defined in `provider_credential_schema`.
- """
- try:
- model_instance = self.get_model_instance(ModelType.LLM)
-
- # Use `chatglm3-6b` model for validate,
- model_instance.validate_credentials(
- model="chatglm3-6b", credentials=credentials
- )
- except CredentialsValidateFailedError as ex:
- raise ex
- except Exception as ex:
- logger.exception(
- f"{self.get_provider_schema().provider} credentials validate failed"
- )
- raise ex
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/chatglm/chatglm.yaml b/model-providers/model_providers/core/model_runtime/model_providers/chatglm/chatglm.yaml
deleted file mode 100644
index 0c1688c3..00000000
--- a/model-providers/model_providers/core/model_runtime/model_providers/chatglm/chatglm.yaml
+++ /dev/null
@@ -1,28 +0,0 @@
-provider: chatglm
-label:
- en_US: ChatGLM
-icon_small:
- en_US: icon_s_en.svg
-icon_large:
- en_US: icon_l_en.svg
-background: "#F4F7FF"
-help:
- title:
- en_US: Deploy ChatGLM to your local
- zh_Hans: 部署您的本地 ChatGLM
- url:
- en_US: https://github.com/THUDM/ChatGLM3
-supported_model_types:
- - llm
-configurate_methods:
- - predefined-model
-provider_credential_schema:
- credential_form_schemas:
- - variable: api_base
- label:
- en_US: API URL
- type: text-input
- required: true
- placeholder:
- zh_Hans: 在此输入您的 API URL
- en_US: Enter your API URL
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/chatglm/llm/__init__.py b/model-providers/model_providers/core/model_runtime/model_providers/chatglm/llm/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/chatglm/llm/chatglm2-6b-32k.yaml b/model-providers/model_providers/core/model_runtime/model_providers/chatglm/llm/chatglm2-6b-32k.yaml
deleted file mode 100644
index d1075d74..00000000
--- a/model-providers/model_providers/core/model_runtime/model_providers/chatglm/llm/chatglm2-6b-32k.yaml
+++ /dev/null
@@ -1,21 +0,0 @@
-model: chatglm2-6b-32k
-label:
- en_US: ChatGLM2-6B-32K
-model_type: llm
-features:
- - agent-thought
-model_properties:
- mode: chat
- context_size: 32000
-parameter_rules:
- - name: temperature
- use_template: temperature
- - name: top_p
- use_template: top_p
- required: false
- - name: max_tokens
- use_template: max_tokens
- required: true
- default: 2000
- min: 1
- max: 32000
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/chatglm/llm/chatglm2-6b.yaml b/model-providers/model_providers/core/model_runtime/model_providers/chatglm/llm/chatglm2-6b.yaml
deleted file mode 100644
index e3cfeb90..00000000
--- a/model-providers/model_providers/core/model_runtime/model_providers/chatglm/llm/chatglm2-6b.yaml
+++ /dev/null
@@ -1,21 +0,0 @@
-model: chatglm2-6b
-label:
- en_US: ChatGLM2-6B
-model_type: llm
-features:
- - agent-thought
-model_properties:
- mode: chat
- context_size: 2000
-parameter_rules:
- - name: temperature
- use_template: temperature
- - name: top_p
- use_template: top_p
- required: false
- - name: max_tokens
- use_template: max_tokens
- required: true
- default: 256
- min: 1
- max: 2000
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/chatglm/llm/chatglm3-6b-32k.yaml b/model-providers/model_providers/core/model_runtime/model_providers/chatglm/llm/chatglm3-6b-32k.yaml
deleted file mode 100644
index 6f347435..00000000
--- a/model-providers/model_providers/core/model_runtime/model_providers/chatglm/llm/chatglm3-6b-32k.yaml
+++ /dev/null
@@ -1,22 +0,0 @@
-model: chatglm3-6b-32k
-label:
- en_US: ChatGLM3-6B-32K
-model_type: llm
-features:
- - tool-call
- - agent-thought
-model_properties:
- mode: chat
- context_size: 32000
-parameter_rules:
- - name: temperature
- use_template: temperature
- - name: top_p
- use_template: top_p
- required: false
- - name: max_tokens
- use_template: max_tokens
- required: true
- default: 8000
- min: 1
- max: 32000
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/chatglm/llm/chatglm3-6b.yaml b/model-providers/model_providers/core/model_runtime/model_providers/chatglm/llm/chatglm3-6b.yaml
deleted file mode 100644
index d6d87e2e..00000000
--- a/model-providers/model_providers/core/model_runtime/model_providers/chatglm/llm/chatglm3-6b.yaml
+++ /dev/null
@@ -1,22 +0,0 @@
-model: chatglm3-6b
-label:
- en_US: ChatGLM3-6B
-model_type: llm
-features:
- - tool-call
- - agent-thought
-model_properties:
- mode: chat
- context_size: 8000
-parameter_rules:
- - name: temperature
- use_template: temperature
- - name: top_p
- use_template: top_p
- required: false
- - name: max_tokens
- use_template: max_tokens
- required: true
- default: 256
- min: 1
- max: 8000
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/chatglm/llm/llm.py b/model-providers/model_providers/core/model_runtime/model_providers/chatglm/llm/llm.py
deleted file mode 100644
index 1f798a26..00000000
--- a/model-providers/model_providers/core/model_runtime/model_providers/chatglm/llm/llm.py
+++ /dev/null
@@ -1,555 +0,0 @@
-import logging
-from collections.abc import Generator
-from os.path import join
-from typing import Optional, cast
-
-from httpx import Timeout
-from openai import (
- APIConnectionError,
- APITimeoutError,
- AuthenticationError,
- ConflictError,
- InternalServerError,
- NotFoundError,
- OpenAI,
- PermissionDeniedError,
- RateLimitError,
- Stream,
- UnprocessableEntityError,
-)
-from openai.types.chat import ChatCompletion, ChatCompletionChunk
-from openai.types.chat.chat_completion_message import FunctionCall
-
-from model_providers.core.model_runtime.entities.llm_entities import (
- LLMResult,
- LLMResultChunk,
- LLMResultChunkDelta,
-)
-from model_providers.core.model_runtime.entities.message_entities import (
- AssistantPromptMessage,
- PromptMessage,
- PromptMessageTool,
- SystemPromptMessage,
- ToolPromptMessage,
- UserPromptMessage,
-)
-from model_providers.core.model_runtime.errors.invoke import (
- InvokeAuthorizationError,
- InvokeBadRequestError,
- InvokeConnectionError,
- InvokeError,
- InvokeRateLimitError,
- InvokeServerUnavailableError,
-)
-from model_providers.core.model_runtime.errors.validate import (
- CredentialsValidateFailedError,
-)
-from model_providers.core.model_runtime.model_providers.__base.large_language_model import (
- LargeLanguageModel,
-)
-from model_providers.core.model_runtime.utils import helper
-
-logger = logging.getLogger(__name__)
-
-
-class ChatGLMLargeLanguageModel(LargeLanguageModel):
- def _invoke(
- self,
- model: str,
- credentials: dict,
- prompt_messages: list[PromptMessage],
- model_parameters: dict,
- tools: list[PromptMessageTool] | None = None,
- stop: list[str] | None = None,
- stream: bool = True,
- user: str | None = None,
- ) -> LLMResult | Generator:
- """
- Invoke large language model
-
- :param model: model name
- :param credentials: model credentials
- :param prompt_messages: prompt messages
- :param model_parameters: model parameters
- :param tools: tools for tool calling
- :param stop: stop words
- :param stream: is stream response
- :param user: unique user id
- :return: full response or stream response chunk generator result
- """
- # invoke model
- return self._generate(
- model=model,
- credentials=credentials,
- prompt_messages=prompt_messages,
- model_parameters=model_parameters,
- tools=tools,
- stop=stop,
- stream=stream,
- user=user,
- )
-
- def get_num_tokens(
- self,
- model: str,
- credentials: dict,
- prompt_messages: list[PromptMessage],
- tools: list[PromptMessageTool] | None = None,
- ) -> int:
- """
- Get number of tokens for given prompt messages
-
- :param model: model name
- :param credentials: model credentials
- :param prompt_messages: prompt messages
- :param tools: tools for tool calling
- :return:
- """
- return self._num_tokens_from_messages(messages=prompt_messages, tools=tools)
-
- def validate_credentials(self, model: str, credentials: dict) -> None:
- """
- Validate model credentials
-
- :param model: model name
- :param credentials: model credentials
- :return:
- """
- try:
- self._invoke(
- model=model,
- credentials=credentials,
- prompt_messages=[
- UserPromptMessage(content="ping"),
- ],
- model_parameters={
- "max_tokens": 16,
- },
- )
- except Exception as e:
- raise CredentialsValidateFailedError(str(e))
-
- @property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
- """
- Map model invoke error to unified error
- The key is the error type thrown to the caller
- The value is the error type thrown by the model,
- which needs to be converted into a unified error type for the caller.
-
- :return: Invoke error mapping
- """
- return {
- InvokeConnectionError: [
- APIConnectionError,
- APITimeoutError,
- ],
- InvokeServerUnavailableError: [
- InternalServerError,
- ConflictError,
- NotFoundError,
- UnprocessableEntityError,
- PermissionDeniedError,
- ],
- InvokeRateLimitError: [RateLimitError],
- InvokeAuthorizationError: [AuthenticationError],
- InvokeBadRequestError: [ValueError],
- }
-
- def _generate(
- self,
- model: str,
- credentials: dict,
- prompt_messages: list[PromptMessage],
- model_parameters: dict,
- tools: list[PromptMessageTool] | None = None,
- stop: list[str] | None = None,
- stream: bool = True,
- user: str | None = None,
- ) -> LLMResult | Generator:
- """
- Invoke large language model
-
- :param model: model name
- :param credentials: credentials kwargs
- :param prompt_messages: prompt messages
- :param model_parameters: model parameters
- :param stop: stop words
- :param stream: is stream response
- :param user: unique user id
- :return: full response or stream response chunk generator result
- """
-
- self._check_chatglm_parameters(
- model=model, model_parameters=model_parameters, tools=tools
- )
-
- kwargs = self._to_client_kwargs(credentials)
- # init model client
- client = OpenAI(**kwargs)
-
- extra_model_kwargs = {}
- if stop:
- extra_model_kwargs["stop"] = stop
-
- if user:
- extra_model_kwargs["user"] = user
-
- if tools and len(tools) > 0:
- extra_model_kwargs["functions"] = [
- helper.dump_model(tool) for tool in tools
- ]
-
- result = client.chat.completions.create(
- messages=[self._convert_prompt_message_to_dict(m) for m in prompt_messages],
- model=model,
- stream=stream,
- **model_parameters,
- **extra_model_kwargs,
- )
-
- if stream:
- return self._handle_chat_generate_stream_response(
- model=model,
- credentials=credentials,
- response=result,
- tools=tools,
- prompt_messages=prompt_messages,
- )
-
- return self._handle_chat_generate_response(
- model=model,
- credentials=credentials,
- response=result,
- tools=tools,
- prompt_messages=prompt_messages,
- )
-
- def _check_chatglm_parameters(
- self, model: str, model_parameters: dict, tools: list[PromptMessageTool]
- ) -> None:
- if model.find("chatglm2") != -1 and tools is not None and len(tools) > 0:
- raise InvokeBadRequestError("ChatGLM2 does not support function calling")
-
- def _convert_prompt_message_to_dict(self, message: PromptMessage) -> dict:
- """
- Convert PromptMessage to dict for OpenAI Compatibility API
- """
- if isinstance(message, UserPromptMessage):
- message = cast(UserPromptMessage, message)
- if isinstance(message.content, str):
- message_dict = {"role": "user", "content": message.content}
- else:
- raise ValueError("User message content must be str")
- elif isinstance(message, AssistantPromptMessage):
- message = cast(AssistantPromptMessage, message)
- message_dict = {"role": "assistant", "content": message.content}
- if message.tool_calls and len(message.tool_calls) > 0:
- message_dict["function_call"] = {
- "name": message.tool_calls[0].function.name,
- "arguments": message.tool_calls[0].function.arguments,
- }
- elif isinstance(message, SystemPromptMessage):
- message = cast(SystemPromptMessage, message)
- message_dict = {"role": "system", "content": message.content}
- elif isinstance(message, ToolPromptMessage):
- # check if last message is user message
- message = cast(ToolPromptMessage, message)
- message_dict = {"role": "function", "content": message.content}
- else:
- raise ValueError(f"Unknown message type {type(message)}")
-
- return message_dict
-
- def _extract_response_tool_calls(
- self, response_function_calls: list[FunctionCall]
- ) -> list[AssistantPromptMessage.ToolCall]:
- """
- Extract tool calls from response
-
- :param response_tool_calls: response tool calls
- :return: list of tool calls
- """
- tool_calls = []
- if response_function_calls:
- for response_tool_call in response_function_calls:
- function = AssistantPromptMessage.ToolCall.ToolCallFunction(
- name=response_tool_call.name, arguments=response_tool_call.arguments
- )
-
- tool_call = AssistantPromptMessage.ToolCall(
- id=0, type="function", function=function
- )
- tool_calls.append(tool_call)
-
- return tool_calls
-
- def _to_client_kwargs(self, credentials: dict) -> dict:
- """
- Convert invoke kwargs to client kwargs
-
- :param stream: is stream response
- :param model_name: model name
- :param credentials: credentials dict
- :param model_parameters: model parameters
- :return: client kwargs
- """
- client_kwargs = {
- "timeout": Timeout(315.0, read=300.0, write=10.0, connect=5.0),
- "api_key": "1",
- "base_url": join(credentials["api_base"], "v1"),
- }
-
- return client_kwargs
-
- def _handle_chat_generate_stream_response(
- self,
- model: str,
- credentials: dict,
- response: Stream[ChatCompletionChunk],
- prompt_messages: list[PromptMessage],
- tools: Optional[list[PromptMessageTool]] = None,
- ) -> Generator:
- full_response = ""
-
- for chunk in response:
- if len(chunk.choices) == 0:
- continue
-
- delta = chunk.choices[0]
-
- if delta.finish_reason is None and (
- delta.delta.content is None or delta.delta.content == ""
- ):
- continue
-
- # check if there is a tool call in the response
- function_calls = None
- if delta.delta.function_call:
- function_calls = [delta.delta.function_call]
-
- assistant_message_tool_calls = self._extract_response_tool_calls(
- function_calls if function_calls else []
- )
-
- # transform assistant message to prompt message
- assistant_prompt_message = AssistantPromptMessage(
- content=delta.delta.content if delta.delta.content else "",
- tool_calls=assistant_message_tool_calls,
- )
-
- if delta.finish_reason is not None:
- # temp_assistant_prompt_message is used to calculate usage
- temp_assistant_prompt_message = AssistantPromptMessage(
- content=full_response, tool_calls=assistant_message_tool_calls
- )
-
- prompt_tokens = self._num_tokens_from_messages(
- messages=prompt_messages, tools=tools
- )
- completion_tokens = self._num_tokens_from_messages(
- messages=[temp_assistant_prompt_message], tools=[]
- )
-
- usage = self._calc_response_usage(
- model=model,
- credentials=credentials,
- prompt_tokens=prompt_tokens,
- completion_tokens=completion_tokens,
- )
-
- yield LLMResultChunk(
- model=model,
- prompt_messages=prompt_messages,
- system_fingerprint=chunk.system_fingerprint,
- delta=LLMResultChunkDelta(
- index=delta.index,
- message=assistant_prompt_message,
- finish_reason=delta.finish_reason,
- usage=usage,
- ),
- )
- else:
- yield LLMResultChunk(
- model=model,
- prompt_messages=prompt_messages,
- system_fingerprint=chunk.system_fingerprint,
- delta=LLMResultChunkDelta(
- index=delta.index,
- message=assistant_prompt_message,
- ),
- )
-
- full_response += delta.delta.content
-
- def _handle_chat_generate_response(
- self,
- model: str,
- credentials: dict,
- response: ChatCompletion,
- prompt_messages: list[PromptMessage],
- tools: Optional[list[PromptMessageTool]] = None,
- ) -> LLMResult:
- """
- Handle llm chat response
-
- :param model: model name
- :param credentials: credentials
- :param response: response
- :param prompt_messages: prompt messages
- :param tools: tools for tool calling
- :return: llm response
- """
- if len(response.choices) == 0:
- raise InvokeServerUnavailableError("Empty response")
- assistant_message = response.choices[0].message
-
- # convert function call to tool call
- function_calls = assistant_message.function_call
- tool_calls = self._extract_response_tool_calls(
- [function_calls] if function_calls else []
- )
-
- # transform assistant message to prompt message
- assistant_prompt_message = AssistantPromptMessage(
- content=assistant_message.content, tool_calls=tool_calls
- )
-
- prompt_tokens = self._num_tokens_from_messages(
- messages=prompt_messages, tools=tools
- )
- completion_tokens = self._num_tokens_from_messages(
- messages=[assistant_prompt_message], tools=tools
- )
-
- usage = self._calc_response_usage(
- model=model,
- credentials=credentials,
- prompt_tokens=prompt_tokens,
- completion_tokens=completion_tokens,
- )
-
- response = LLMResult(
- model=model,
- prompt_messages=prompt_messages,
- system_fingerprint=response.system_fingerprint,
- usage=usage,
- message=assistant_prompt_message,
- )
-
- return response
-
- def _num_tokens_from_string(
- self, text: str, tools: Optional[list[PromptMessageTool]] = None
- ) -> int:
- """
- Calculate num tokens for text completion model with tiktoken package.
-
- :param model: model name
- :param text: prompt text
- :param tools: tools for tool calling
- :return: number of tokens
- """
- num_tokens = self._get_num_tokens_by_gpt2(text)
-
- if tools:
- num_tokens += self._num_tokens_for_tools(tools)
-
- return num_tokens
-
- def _num_tokens_from_messages(
- self,
- messages: list[PromptMessage],
- tools: Optional[list[PromptMessageTool]] = None,
- ) -> int:
- """Calculate num tokens for chatglm2 and chatglm3 with GPT2 tokenizer.
-
- it's too complex to calculate num tokens for chatglm2 and chatglm3 with ChatGLM tokenizer,
- As a temporary solution we use GPT2 tokenizer instead.
-
- """
-
- def tokens(text: str):
- return self._get_num_tokens_by_gpt2(text)
-
- tokens_per_message = 3
- tokens_per_name = 1
- num_tokens = 0
- messages_dict = [self._convert_prompt_message_to_dict(m) for m in messages]
- for message in messages_dict:
- num_tokens += tokens_per_message
- for key, value in message.items():
- if isinstance(value, list):
- text = ""
- for item in value:
- if isinstance(item, dict) and item["type"] == "text":
- text += item["text"]
- value = text
-
- if key == "function_call":
- for t_key, t_value in value.items():
- num_tokens += tokens(t_key)
- if t_key == "function":
- for f_key, f_value in t_value.items():
- num_tokens += tokens(f_key)
- num_tokens += tokens(f_value)
- else:
- num_tokens += tokens(t_key)
- num_tokens += tokens(t_value)
- else:
- num_tokens += tokens(str(value))
-
- if key == "name":
- num_tokens += tokens_per_name
-
- # every reply is primed with assistant
- num_tokens += 3
-
- if tools:
- num_tokens += self._num_tokens_for_tools(tools)
-
- return num_tokens
-
- def _num_tokens_for_tools(self, tools: list[PromptMessageTool]) -> int:
- """
- Calculate num tokens for tool calling
-
- :param encoding: encoding
- :param tools: tools for tool calling
- :return: number of tokens
- """
-
- def tokens(text: str):
- return self._get_num_tokens_by_gpt2(text)
-
- num_tokens = 0
- for tool in tools:
- # calculate num tokens for function object
- num_tokens += tokens("name")
- num_tokens += tokens(tool.name)
- num_tokens += tokens("description")
- num_tokens += tokens(tool.description)
- parameters = tool.parameters
- num_tokens += tokens("parameters")
- num_tokens += tokens("type")
- num_tokens += tokens(parameters.get("type"))
- if "properties" in parameters:
- num_tokens += tokens("properties")
- for key, value in parameters.get("properties").items():
- num_tokens += tokens(key)
- for field_key, field_value in value.items():
- num_tokens += tokens(field_key)
- if field_key == "enum":
- for enum_field in field_value:
- num_tokens += 3
- num_tokens += tokens(enum_field)
- else:
- num_tokens += tokens(field_key)
- num_tokens += tokens(str(field_value))
- if "required" in parameters:
- num_tokens += tokens("required")
- for required_field in parameters["required"]:
- num_tokens += 3
- num_tokens += tokens(required_field)
-
- return num_tokens
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/cohere/llm/llm.py b/model-providers/model_providers/core/model_runtime/model_providers/cohere/llm/llm.py
index 620a5b91..98612345 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/cohere/llm/llm.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/cohere/llm/llm.py
@@ -1,6 +1,6 @@
import logging
from collections.abc import Generator
-from typing import Optional, Union, cast
+from typing import Optional, Union, cast, List, Dict, Type
import cohere
from cohere.responses import Chat, Generations
@@ -55,10 +55,10 @@ class CohereLargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> Union[LLMResult, Generator]:
@@ -103,8 +103,8 @@ class CohereLargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
- tools: Optional[list[PromptMessageTool]] = None,
+ prompt_messages: List[PromptMessage],
+ tools: Optional[List[PromptMessageTool]] = None,
) -> int:
"""
Get number of tokens for given prompt messages
@@ -171,9 +171,9 @@ class CohereLargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- stop: Optional[list[str]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> Union[LLMResult, Generator]:
@@ -216,7 +216,7 @@ class CohereLargeLanguageModel(LargeLanguageModel):
model: str,
credentials: dict,
response: Generations,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
) -> LLMResult:
"""
Handle llm response
@@ -256,7 +256,7 @@ class CohereLargeLanguageModel(LargeLanguageModel):
model: str,
credentials: dict,
response: StreamingGenerations,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
) -> Generator:
"""
Handle llm stream response
@@ -317,9 +317,9 @@ class CohereLargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- stop: Optional[list[str]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> Union[LLMResult, Generator]:
@@ -377,8 +377,8 @@ class CohereLargeLanguageModel(LargeLanguageModel):
model: str,
credentials: dict,
response: Chat,
- prompt_messages: list[PromptMessage],
- stop: Optional[list[str]] = None,
+ prompt_messages: List[PromptMessage],
+ stop: Optional[List[str]] = None,
) -> LLMResult:
"""
Handle llm chat response
@@ -429,8 +429,8 @@ class CohereLargeLanguageModel(LargeLanguageModel):
model: str,
credentials: dict,
response: StreamingChat,
- prompt_messages: list[PromptMessage],
- stop: Optional[list[str]] = None,
+ prompt_messages: List[PromptMessage],
+ stop: Optional[List[str]] = None,
) -> Generator:
"""
Handle llm chat stream response
@@ -517,8 +517,8 @@ class CohereLargeLanguageModel(LargeLanguageModel):
index += 1
def _convert_prompt_messages_to_message_and_chat_histories(
- self, prompt_messages: list[PromptMessage]
- ) -> tuple[str, list[dict]]:
+ self, prompt_messages: List[PromptMessage]
+ ) -> tuple[str, List[dict]]:
"""
Convert prompt messages to message and chat histories
:param prompt_messages: prompt messages
@@ -586,7 +586,7 @@ class CohereLargeLanguageModel(LargeLanguageModel):
return response.length
def _num_tokens_from_messages(
- self, model: str, credentials: dict, messages: list[PromptMessage]
+ self, model: str, credentials: dict, messages: List[PromptMessage]
) -> int:
"""Calculate num tokens Cohere model."""
messages = [self._convert_prompt_message_to_dict(m) for m in messages]
@@ -650,7 +650,7 @@ class CohereLargeLanguageModel(LargeLanguageModel):
return entity
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[Type[InvokeError], List[Type[Exception]]]:
"""
Map model invoke error to unified error
The key is the error type thrown to the caller
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/cohere/rerank/rerank.py b/model-providers/model_providers/core/model_runtime/model_providers/cohere/rerank/rerank.py
index 86d0b22f..d07ffe8e 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/cohere/rerank/rerank.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/cohere/rerank/rerank.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List, Dict, Type
import cohere
@@ -32,7 +32,7 @@ class CohereRerankModel(RerankModel):
model: str,
credentials: dict,
query: str,
- docs: list[str],
+ docs: List[str],
score_threshold: Optional[float] = None,
top_n: Optional[int] = None,
user: Optional[str] = None,
@@ -99,7 +99,7 @@ class CohereRerankModel(RerankModel):
raise CredentialsValidateFailedError(str(ex))
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[Type[InvokeError], List[Type[Exception]]]:
"""
Map model invoke error to unified error
The key is the error type thrown to the caller
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/cohere/text_embedding/text_embedding.py b/model-providers/model_providers/core/model_runtime/model_providers/cohere/text_embedding/text_embedding.py
index bf4821e9..49044053 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/cohere/text_embedding/text_embedding.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/cohere/text_embedding/text_embedding.py
@@ -35,7 +35,7 @@ class CohereTextEmbeddingModel(TextEmbeddingModel):
self,
model: str,
credentials: dict,
- texts: list[str],
+ texts: List[str],
user: Optional[str] = None,
) -> TextEmbeddingResult:
"""
@@ -51,7 +51,7 @@ class CohereTextEmbeddingModel(TextEmbeddingModel):
context_size = self._get_context_size(model, credentials)
max_chunks = self._get_max_chunks(model, credentials)
- embeddings: list[list[float]] = [[] for _ in range(len(texts))]
+ embeddings: List[List[float]] = [[] for _ in range(len(texts))]
tokens = []
indices = []
used_tokens = 0
@@ -79,8 +79,8 @@ class CohereTextEmbeddingModel(TextEmbeddingModel):
used_tokens += embedding_used_tokens
batched_embeddings += embeddings_batch
- results: list[list[list[float]]] = [[] for _ in range(len(texts))]
- num_tokens_in_batch: list[list[int]] = [[] for _ in range(len(texts))]
+ results: List[List[list[float]]] = [[] for _ in range(len(texts))]
+ num_tokens_in_batch: List[List[int]] = [[] for _ in range(len(texts))]
for i in range(len(indices)):
results[indices[i]].append(batched_embeddings[i])
num_tokens_in_batch[indices[i]].append(len(tokens[i]))
@@ -105,7 +105,7 @@ class CohereTextEmbeddingModel(TextEmbeddingModel):
return TextEmbeddingResult(embeddings=embeddings, usage=usage, model=model)
- def get_num_tokens(self, model: str, credentials: dict, texts: list[str]) -> int:
+ def get_num_tokens(self, model: str, credentials: dict, texts: List[str]) -> int:
"""
Get number of tokens for given prompt messages
@@ -161,8 +161,8 @@ class CohereTextEmbeddingModel(TextEmbeddingModel):
raise CredentialsValidateFailedError(str(ex))
def _embedding_invoke(
- self, model: str, credentials: dict, texts: list[str]
- ) -> tuple[list[list[float]], int]:
+ self, model: str, credentials: dict, texts: List[str]
+ ) -> tuple[List[list[float]], int]:
"""
Invoke embedding model
@@ -216,7 +216,7 @@ class CohereTextEmbeddingModel(TextEmbeddingModel):
return usage
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[Type[InvokeError], List[Type[Exception]]]:
"""
Map model invoke error to unified error
The key is the error type thrown to the caller
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/google/llm/llm.py b/model-providers/model_providers/core/model_runtime/model_providers/google/llm/llm.py
index a23df8aa..c8a52ed7 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/google/llm/llm.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/google/llm/llm.py
@@ -1,7 +1,6 @@
import json
import logging
-from collections.abc import Generator
-from typing import Optional, Union
+from typing import Optional, Union, Generator, List, Dict, Type
import google.api_core.exceptions as exceptions
import google.generativeai as genai
@@ -66,10 +65,10 @@ class GoogleLargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> Union[LLMResult, Generator]:
@@ -102,8 +101,8 @@ class GoogleLargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
- tools: Optional[list[PromptMessageTool]] = None,
+ prompt_messages: List[PromptMessage],
+ tools: Optional[List[PromptMessageTool]] = None,
) -> int:
"""
Get number of tokens for given prompt messages
@@ -118,7 +117,7 @@ class GoogleLargeLanguageModel(LargeLanguageModel):
return self._get_num_tokens_by_gpt2(prompt)
- def _convert_messages_to_prompt(self, messages: list[PromptMessage]) -> str:
+ def _convert_messages_to_prompt(self, messages: List[PromptMessage]) -> str:
"""
Format a list of messages into a full prompt for the Google model
@@ -155,10 +154,10 @@ class GoogleLargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> Union[LLMResult, Generator]:
@@ -249,7 +248,7 @@ class GoogleLargeLanguageModel(LargeLanguageModel):
model: str,
credentials: dict,
response: GenerateContentResponse,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
) -> LLMResult:
"""
Handle llm response
@@ -306,7 +305,7 @@ class GoogleLargeLanguageModel(LargeLanguageModel):
model: str,
credentials: dict,
response: GenerateContentResponse,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
) -> Generator:
"""
Handle llm stream response
@@ -416,7 +415,7 @@ class GoogleLargeLanguageModel(LargeLanguageModel):
return glm_content
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[Type[InvokeError], List[Type[Exception]]]:
"""
Map model invoke error to unified error
The key is the ermd = genai.GenerativeModel(model)ror type thrown to the caller
@@ -472,7 +471,6 @@ class GoogleLargeLanguageModel(LargeLanguageModel):
"""
tool_call = None
if response_function_call:
- from google.protobuf import json_format
if isinstance(response_function_call, FunctionCall):
map_composite_dict = dict(response_function_call.args.items())
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/groq/llm/llm.py b/model-providers/model_providers/core/model_runtime/model_providers/groq/llm/llm.py
index 58a76581..0c63d759 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/groq/llm/llm.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/groq/llm/llm.py
@@ -1,5 +1,4 @@
-from collections.abc import Generator
-from typing import Optional, Union
+from typing import Optional, Union, List, Generator
from model_providers.core.model_runtime.entities.llm_entities import LLMResult
from model_providers.core.model_runtime.entities.message_entities import (
@@ -16,10 +15,10 @@ class GroqLargeLanguageModel(OAIAPICompatLargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> Union[LLMResult, Generator]:
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/huggingface_hub/_common.py b/model-providers/model_providers/core/model_runtime/model_providers/huggingface_hub/_common.py
index e14f2653..a11d6c74 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/huggingface_hub/_common.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/huggingface_hub/_common.py
@@ -1,3 +1,5 @@
+from typing import Dict, Type, List
+
from huggingface_hub.utils import BadRequestError, HfHubHTTPError
from model_providers.core.model_runtime.errors.invoke import (
@@ -8,5 +10,5 @@ from model_providers.core.model_runtime.errors.invoke import (
class _CommonHuggingfaceHub:
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[Type[InvokeError], List[Type[Exception]]]:
return {InvokeBadRequestError: [HfHubHTTPError, BadRequestError]}
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/huggingface_hub/llm/llm.py b/model-providers/model_providers/core/model_runtime/model_providers/huggingface_hub/llm/llm.py
index d47f0461..fdfad9ae 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/huggingface_hub/llm/llm.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/huggingface_hub/llm/llm.py
@@ -1,5 +1,4 @@
-from collections.abc import Generator
-from typing import Optional, Union
+from typing import Optional, Union, List, Generator
from huggingface_hub import InferenceClient
from huggingface_hub.hf_api import HfApi
@@ -44,10 +43,10 @@ class HuggingfaceHubLargeLanguageModel(_CommonHuggingfaceHub, LargeLanguageModel
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> Union[LLMResult, Generator]:
@@ -81,8 +80,8 @@ class HuggingfaceHubLargeLanguageModel(_CommonHuggingfaceHub, LargeLanguageModel
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
- tools: Optional[list[PromptMessageTool]] = None,
+ prompt_messages: List[PromptMessage],
+ tools: Optional[List[PromptMessageTool]] = None,
) -> int:
prompt = self._convert_messages_to_prompt(prompt_messages)
return self._get_num_tokens_by_gpt2(prompt)
@@ -161,7 +160,7 @@ class HuggingfaceHubLargeLanguageModel(_CommonHuggingfaceHub, LargeLanguageModel
return entity
@staticmethod
- def _get_customizable_model_parameter_rules() -> list[ParameterRule]:
+ def _get_customizable_model_parameter_rules() -> List[ParameterRule]:
temperature_rule_dict = PARAMETER_RULE_TEMPLATE.get(
DefaultParameterName.TEMPERATURE
).copy()
@@ -253,7 +252,7 @@ class HuggingfaceHubLargeLanguageModel(_CommonHuggingfaceHub, LargeLanguageModel
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
response: Generator,
) -> Generator:
index = -1
@@ -300,7 +299,7 @@ class HuggingfaceHubLargeLanguageModel(_CommonHuggingfaceHub, LargeLanguageModel
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
response: any,
) -> LLMResult:
if isinstance(response, str):
@@ -355,7 +354,7 @@ class HuggingfaceHubLargeLanguageModel(_CommonHuggingfaceHub, LargeLanguageModel
return model_info.pipeline_tag
- def _convert_messages_to_prompt(self, messages: list[PromptMessage]) -> str:
+ def _convert_messages_to_prompt(self, messages: List[PromptMessage]) -> str:
messages = messages.copy() # don't mutate the original list
text = "".join(
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/huggingface_hub/text_embedding/text_embedding.py b/model-providers/model_providers/core/model_runtime/model_providers/huggingface_hub/text_embedding/text_embedding.py
index a0451017..0d85ab57 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/huggingface_hub/text_embedding/text_embedding.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/huggingface_hub/text_embedding/text_embedding.py
@@ -1,6 +1,6 @@
import json
import time
-from typing import Optional
+from typing import Optional, List
import numpy as np
import requests
@@ -35,7 +35,7 @@ class HuggingfaceHubTextEmbeddingModel(_CommonHuggingfaceHub, TextEmbeddingModel
self,
model: str,
credentials: dict,
- texts: list[str],
+ texts: List[str],
user: Optional[str] = None,
) -> TextEmbeddingResult:
client = InferenceClient(token=credentials["huggingfacehub_api_token"])
@@ -62,7 +62,7 @@ class HuggingfaceHubTextEmbeddingModel(_CommonHuggingfaceHub, TextEmbeddingModel
embeddings=self._mean_pooling(embeddings), usage=usage, model=model
)
- def get_num_tokens(self, model: str, credentials: dict, texts: list[str]) -> int:
+ def get_num_tokens(self, model: str, credentials: dict, texts: List[str]) -> int:
num_tokens = 0
for text in texts:
num_tokens += self._get_num_tokens_by_gpt2(text)
@@ -132,12 +132,12 @@ class HuggingfaceHubTextEmbeddingModel(_CommonHuggingfaceHub, TextEmbeddingModel
return entity
# https://huggingface.co/docs/api-inference/detailed_parameters#feature-extraction-task
- # Returned values are a list of floats, or a list[list[floats]]
+ # Returned values are a list of floats, or aList[List[floats]]
# (depending on if you sent a string or a list of string,
# and if the automatic reduction, usually mean_pooling for instance was applied for you or not.
# This should be explained on the model's README.)
@staticmethod
- def _mean_pooling(embeddings: list) -> list[float]:
+ def _mean_pooling(embeddings: list) -> List[float]:
# If automatic reduction by giving model, no need to mean_pooling.
# For example one: List[List[float]]
if not isinstance(embeddings[0][0], list):
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/jina/rerank/rerank.py b/model-providers/model_providers/core/model_runtime/model_providers/jina/rerank/rerank.py
index 09a3b2fa..7af979e8 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/jina/rerank/rerank.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/jina/rerank/rerank.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List, Dict, Type
import httpx
@@ -32,7 +32,7 @@ class JinaRerankModel(RerankModel):
model: str,
credentials: dict,
query: str,
- docs: list[str],
+ docs: List[str],
score_threshold: Optional[float] = None,
top_n: Optional[int] = None,
user: Optional[str] = None,
@@ -108,7 +108,7 @@ class JinaRerankModel(RerankModel):
raise CredentialsValidateFailedError(str(ex))
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[Type[InvokeError], List[Type[Exception]]]:
"""
Map model invoke error to unified error
"""
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/jina/text_embedding/text_embedding.py b/model-providers/model_providers/core/model_runtime/model_providers/jina/text_embedding/text_embedding.py
index 48d8fecb..0cacbf73 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/jina/text_embedding/text_embedding.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/jina/text_embedding/text_embedding.py
@@ -1,6 +1,6 @@
import time
from json import JSONDecodeError, dumps
-from typing import Optional
+from typing import Optional, List, Dict, Type
from requests import post
@@ -34,7 +34,7 @@ class JinaTextEmbeddingModel(TextEmbeddingModel):
"""
api_base: str = "https://api.jina.ai/v1/embeddings"
- models: list[str] = [
+ models: List[str] = [
"jina-embeddings-v2-base-en",
"jina-embeddings-v2-small-en",
"jina-embeddings-v2-base-zh",
@@ -45,7 +45,7 @@ class JinaTextEmbeddingModel(TextEmbeddingModel):
self,
model: str,
credentials: dict,
- texts: list[str],
+ texts: List[str],
user: Optional[str] = None,
) -> TextEmbeddingResult:
"""
@@ -113,7 +113,7 @@ class JinaTextEmbeddingModel(TextEmbeddingModel):
return result
- def get_num_tokens(self, model: str, credentials: dict, texts: list[str]) -> int:
+ def get_num_tokens(self, model: str, credentials: dict, texts: List[str]) -> int:
"""
Get number of tokens for given prompt messages
@@ -142,7 +142,7 @@ class JinaTextEmbeddingModel(TextEmbeddingModel):
raise CredentialsValidateFailedError("Invalid api key")
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[Type[InvokeError], List[Type[Exception]]]:
return {
InvokeConnectionError: [InvokeConnectionError],
InvokeServerUnavailableError: [InvokeServerUnavailableError],
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/localai/llm/llm.py b/model-providers/model_providers/core/model_runtime/model_providers/localai/llm/llm.py
index 0545b52d..6375595f 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/localai/llm/llm.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/localai/llm/llm.py
@@ -1,5 +1,4 @@
-from collections.abc import Generator
-from typing import cast
+from typing import cast, List, Union, Dict, Type, Generator
from httpx import Timeout
from openai import (
@@ -64,13 +63,13 @@ class LocalAILarguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: list[PromptMessageTool] | None = None,
- stop: list[str] | None = None,
+ tools: Union[List[PromptMessageTool], None] = None,
+ stop: Union[List[str], None] = None,
stream: bool = True,
- user: str | None = None,
- ) -> LLMResult | Generator:
+ user: Union[str, None] = None,
+ ) -> Union[LLMResult, Generator]:
return self._generate(
model=model,
credentials=credentials,
@@ -86,14 +85,14 @@ class LocalAILarguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
- tools: list[PromptMessageTool] | None = None,
+ prompt_messages: List[PromptMessage],
+ tools: Union[List[PromptMessageTool], None] = None,
) -> int:
# tools is not supported yet
return self._num_tokens_from_messages(prompt_messages, tools=tools)
def _num_tokens_from_messages(
- self, messages: list[PromptMessage], tools: list[PromptMessageTool]
+ self, messages: List[PromptMessage], tools: List[PromptMessageTool]
) -> int:
"""
Calculate num tokens for baichuan model
@@ -156,7 +155,7 @@ class LocalAILarguageModel(LargeLanguageModel):
return num_tokens
- def _num_tokens_for_tools(self, tools: list[PromptMessageTool]) -> int:
+ def _num_tokens_for_tools(self, tools: List[PromptMessageTool]) -> int:
"""
Calculate num tokens for tool calling
@@ -224,7 +223,7 @@ class LocalAILarguageModel(LargeLanguageModel):
def get_customizable_model_schema(
self, model: str, credentials: dict
- ) -> AIModelEntity | None:
+ ) -> Union[AIModelEntity, None]:
completion_model = None
if credentials["completion_type"] == "chat_completion":
completion_model = LLMMode.CHAT.value
@@ -286,13 +285,13 @@ class LocalAILarguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: list[PromptMessageTool] | None = None,
- stop: list[str] | None = None,
+ tools: Union[List[PromptMessageTool], None] = None,
+ stop: Union[List[str], None] = None,
stream: bool = True,
- user: str | None = None,
- ) -> LLMResult | Generator:
+ user: Union[str, None] = None,
+ ) -> Union[LLMResult, Generator]:
kwargs = self._to_client_kwargs(credentials)
# init model client
client = OpenAI(**kwargs)
@@ -414,7 +413,7 @@ class LocalAILarguageModel(LargeLanguageModel):
return message_dict
def _convert_prompt_message_to_completion_prompts(
- self, messages: list[PromptMessage]
+ self, messages: List[PromptMessage]
) -> str:
"""
Convert PromptMessage to completion prompts
@@ -438,7 +437,7 @@ class LocalAILarguageModel(LargeLanguageModel):
def _handle_completion_generate_response(
self,
model: str,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
credentials: dict,
response: Completion,
) -> LLMResult:
@@ -489,10 +488,10 @@ class LocalAILarguageModel(LargeLanguageModel):
def _handle_chat_generate_response(
self,
model: str,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
credentials: dict,
response: ChatCompletion,
- tools: list[PromptMessageTool],
+ tools: List[PromptMessageTool],
) -> LLMResult:
"""
Handle llm chat response
@@ -547,10 +546,10 @@ class LocalAILarguageModel(LargeLanguageModel):
def _handle_completion_generate_stream_response(
self,
model: str,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
credentials: dict,
response: Stream[Completion],
- tools: list[PromptMessageTool],
+ tools: List[PromptMessageTool],
) -> Generator:
full_response = ""
@@ -613,10 +612,10 @@ class LocalAILarguageModel(LargeLanguageModel):
def _handle_chat_generate_stream_response(
self,
model: str,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
credentials: dict,
response: Stream[ChatCompletionChunk],
- tools: list[PromptMessageTool],
+ tools: List[PromptMessageTool],
) -> Generator:
full_response = ""
@@ -691,8 +690,8 @@ class LocalAILarguageModel(LargeLanguageModel):
full_response += delta.delta.content
def _extract_response_tool_calls(
- self, response_function_calls: list[FunctionCall]
- ) -> list[AssistantPromptMessage.ToolCall]:
+ self, response_function_calls: List[FunctionCall]
+ ) -> List[AssistantPromptMessage.ToolCall]:
"""
Extract tool calls from response
@@ -714,7 +713,7 @@ class LocalAILarguageModel(LargeLanguageModel):
return tool_calls
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[Type[InvokeError], List[Type[Exception]]]:
"""
Map model invoke error to unified error
The key is the error type thrown to the caller
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/localai/text_embedding/text_embedding.py b/model-providers/model_providers/core/model_runtime/model_providers/localai/text_embedding/text_embedding.py
index b42cfb3c..41522010 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/localai/text_embedding/text_embedding.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/localai/text_embedding/text_embedding.py
@@ -1,6 +1,6 @@
import time
from json import JSONDecodeError, dumps
-from typing import Optional
+from typing import Optional, List, Union, Dict, Type
from requests import post
from yarl import URL
@@ -42,7 +42,7 @@ class LocalAITextEmbeddingModel(TextEmbeddingModel):
self,
model: str,
credentials: dict,
- texts: list[str],
+ texts: List[str],
user: Optional[str] = None,
) -> TextEmbeddingResult:
"""
@@ -121,7 +121,7 @@ class LocalAITextEmbeddingModel(TextEmbeddingModel):
return result
- def get_num_tokens(self, model: str, credentials: dict, texts: list[str]) -> int:
+ def get_num_tokens(self, model: str, credentials: dict, texts: List[str]) -> int:
"""
Get number of tokens for given prompt messages
@@ -138,7 +138,7 @@ class LocalAITextEmbeddingModel(TextEmbeddingModel):
def _get_customizable_model_schema(
self, model: str, credentials: dict
- ) -> AIModelEntity | None:
+ ) -> Union[AIModelEntity, None]:
"""
Get customizable model schema
@@ -177,7 +177,7 @@ class LocalAITextEmbeddingModel(TextEmbeddingModel):
raise CredentialsValidateFailedError(f"Invalid credentials: {e}")
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[Type[InvokeError], List[Type[Exception]]]:
return {
InvokeConnectionError: [InvokeConnectionError],
InvokeServerUnavailableError: [InvokeServerUnavailableError],
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/minimax/llm/chat_completion.py b/model-providers/model_providers/core/model_runtime/model_providers/minimax/llm/chat_completion.py
index 7f2edebc..f73876ee 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/minimax/llm/chat_completion.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/minimax/llm/chat_completion.py
@@ -1,6 +1,5 @@
-from collections.abc import Generator
from json import dumps, loads
-from typing import Any, Union
+from typing import Any, Union, Generator, List, Dict
from requests import Response, post
@@ -27,10 +26,10 @@ class MinimaxChatCompletion:
model: str,
api_key: str,
group_id: str,
- prompt_messages: list[MinimaxMessage],
+ prompt_messages: List[MinimaxMessage],
model_parameters: dict,
- tools: list[dict[str, Any]],
- stop: list[str] | None,
+ tools: List[Dict[str, Any]],
+ stop: Union[List[str], None],
stream: bool,
user: str,
) -> Union[MinimaxMessage, Generator[MinimaxMessage, None, None]]:
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/minimax/llm/chat_completion_pro.py b/model-providers/model_providers/core/model_runtime/model_providers/minimax/llm/chat_completion_pro.py
index cbe6979f..34e0857e 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/minimax/llm/chat_completion_pro.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/minimax/llm/chat_completion_pro.py
@@ -1,6 +1,5 @@
-from collections.abc import Generator
from json import dumps, loads
-from typing import Any, Union
+from typing import Any, Union, List, Dict, Generator
from requests import Response, post
@@ -28,10 +27,10 @@ class MinimaxChatCompletionPro:
model: str,
api_key: str,
group_id: str,
- prompt_messages: list[MinimaxMessage],
+ prompt_messages: List[MinimaxMessage],
model_parameters: dict,
- tools: list[dict[str, Any]],
- stop: list[str] | None,
+ tools: List[Dict[str, Any]],
+ stop: Union[List[str], None],
stream: bool,
user: str,
) -> Union[MinimaxMessage, Generator[MinimaxMessage, None, None]]:
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/minimax/llm/llm.py b/model-providers/model_providers/core/model_runtime/model_providers/minimax/llm/llm.py
index 1696bc7a..aea0f9e1 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/minimax/llm/llm.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/minimax/llm/llm.py
@@ -58,13 +58,13 @@ class MinimaxLargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: list[PromptMessageTool] | None = None,
- stop: list[str] | None = None,
+ tools: Union[List[PromptMessageTool], None] = None,
+ stop: Union[List[str], None] = None,
stream: bool = True,
- user: str | None = None,
- ) -> LLMResult | Generator:
+ user: Union[str, None] = None,
+ ) -> Union[LLMResult, Generator]:
return self._generate(
model,
credentials,
@@ -110,13 +110,13 @@ class MinimaxLargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
- tools: list[PromptMessageTool] | None = None,
+ prompt_messages: List[PromptMessage],
+ tools: Union[List[PromptMessageTool], None] = None,
) -> int:
return self._num_tokens_from_messages(prompt_messages, tools)
def _num_tokens_from_messages(
- self, messages: list[PromptMessage], tools: list[PromptMessageTool]
+ self, messages: List[PromptMessage], tools: List[PromptMessageTool]
) -> int:
"""
Calculate num tokens for minimax model
@@ -137,13 +137,13 @@ class MinimaxLargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: list[PromptMessageTool] | None = None,
- stop: list[str] | None = None,
+ tools: Union[List[PromptMessageTool], None] = None,
+ stop: Union[List[str], None] = None,
stream: bool = True,
- user: str | None = None,
- ) -> LLMResult | Generator:
+ user: Union[str, None] = None,
+ ) -> Union[LLMResult, Generator]:
"""
use MinimaxChatCompletionPro as the type of client, anyway, MinimaxChatCompletion has the same interface
"""
@@ -227,7 +227,7 @@ class MinimaxLargeLanguageModel(LargeLanguageModel):
def _handle_chat_generate_response(
self,
model: str,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
credentials: dict,
response: MinimaxMessage,
) -> LLMResult:
@@ -250,7 +250,7 @@ class MinimaxLargeLanguageModel(LargeLanguageModel):
def _handle_chat_generate_stream_response(
self,
model: str,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
credentials: dict,
response: Generator[MinimaxMessage, None, None],
) -> Generator[LLMResultChunk, None, None]:
@@ -319,7 +319,7 @@ class MinimaxLargeLanguageModel(LargeLanguageModel):
)
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[Type[InvokeError], List[Type[Exception]]]:
"""
Map model invoke error to unified error
The key is the error type thrown to the caller
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/minimax/llm/types.py b/model-providers/model_providers/core/model_runtime/model_providers/minimax/llm/types.py
index 5e9d73dd..a2fc1220 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/minimax/llm/types.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/minimax/llm/types.py
@@ -11,11 +11,11 @@ class MinimaxMessage:
role: str = Role.USER.value
content: str
- usage: dict[str, int] = None
+ usage: Dict[str, int] = None
stop_reason: str = ""
- function_call: dict[str, Any] = None
+ function_call: Dict[str, Any] = None
- def to_dict(self) -> dict[str, Any]:
+ def to_dict(self) -> Dict[str, Any]:
if self.function_call and self.role == MinimaxMessage.Role.ASSISTANT.value:
return {
"sender_type": "BOT",
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/minimax/text_embedding/text_embedding.py b/model-providers/model_providers/core/model_runtime/model_providers/minimax/text_embedding/text_embedding.py
index ff764bb9..8832ea71 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/minimax/text_embedding/text_embedding.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/minimax/text_embedding/text_embedding.py
@@ -1,6 +1,6 @@
import time
from json import dumps
-from typing import Optional
+from typing import Optional, List, Dict, Type
from requests import post
@@ -44,7 +44,7 @@ class MinimaxTextEmbeddingModel(TextEmbeddingModel):
self,
model: str,
credentials: dict,
- texts: list[str],
+ texts: List[str],
user: Optional[str] = None,
) -> TextEmbeddingResult:
"""
@@ -103,7 +103,7 @@ class MinimaxTextEmbeddingModel(TextEmbeddingModel):
return result
- def get_num_tokens(self, model: str, credentials: dict, texts: list[str]) -> int:
+ def get_num_tokens(self, model: str, credentials: dict, texts: List[str]) -> int:
"""
Get number of tokens for given prompt messages
@@ -146,7 +146,7 @@ class MinimaxTextEmbeddingModel(TextEmbeddingModel):
raise InternalServerError(msg)
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[Type[InvokeError], List[Type[Exception]]]:
"""
Map model invoke error to unified error
The key is the error type thrown to the caller
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/mistralai/llm/llm.py b/model-providers/model_providers/core/model_runtime/model_providers/mistralai/llm/llm.py
index 364d4a92..6a3cf428 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/mistralai/llm/llm.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/mistralai/llm/llm.py
@@ -1,5 +1,4 @@
-from collections.abc import Generator
-from typing import Optional, Union
+from typing import Optional, Union, List, Generator
from model_providers.core.model_runtime.entities.llm_entities import LLMResult
from model_providers.core.model_runtime.entities.message_entities import (
@@ -16,10 +15,10 @@ class MistralAILargeLanguageModel(OAIAPICompatLargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> Union[LLMResult, Generator]:
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/model_provider_factory.py b/model-providers/model_providers/core/model_runtime/model_providers/model_provider_factory.py
index fbec3157..6adc96e2 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/model_provider_factory.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/model_provider_factory.py
@@ -1,7 +1,7 @@
import importlib
import logging
import os
-from typing import Optional, Union
+from typing import Dict, List, Optional, Union
from pydantic import BaseModel
@@ -42,7 +42,7 @@ class ModelProviderExtension(BaseModel):
class ModelProviderFactory:
# init cache provider by default
init_cache: bool = False
- model_provider_extensions: dict[str, ModelProviderExtension] = None
+ model_provider_extensions: Dict[str, ModelProviderExtension] = None
def __init__(self, init_cache: bool = False) -> None:
# for cache in memory
@@ -51,7 +51,7 @@ class ModelProviderFactory:
def get_providers(
self, provider_name: Union[str, set] = ""
- ) -> list[ProviderEntity]:
+ ) -> List[ProviderEntity]:
"""
Get all providers
:return: list of providers
@@ -159,8 +159,8 @@ class ModelProviderFactory:
self,
provider: Optional[str] = None,
model_type: Optional[ModelType] = None,
- provider_configs: Optional[list[ProviderConfig]] = None,
- ) -> list[SimpleProviderEntity]:
+ provider_configs: Optional[List[ProviderConfig]] = None,
+ ) -> List[SimpleProviderEntity]:
"""
Get all models for given model type
@@ -234,7 +234,7 @@ class ModelProviderFactory:
return model_provider_instance
- def _get_model_provider_map(self) -> dict[str, ModelProviderExtension]:
+ def _get_model_provider_map(self) -> Dict[str, ModelProviderExtension]:
if self.model_provider_extensions:
return self.model_provider_extensions
@@ -254,7 +254,7 @@ class ModelProviderFactory:
position_map = get_position_map(model_providers_path)
# traverse all model_provider_dir_paths
- model_providers: list[ModelProviderExtension] = []
+ model_providers: List[ModelProviderExtension] = []
for model_provider_dir_path in model_provider_dir_paths:
# get model_provider dir name
model_provider_name = os.path.basename(model_provider_dir_path)
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/moonshot/llm/llm.py b/model-providers/model_providers/core/model_runtime/model_providers/moonshot/llm/llm.py
index fbf4bf29..027f00cd 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/moonshot/llm/llm.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/moonshot/llm/llm.py
@@ -1,5 +1,5 @@
from collections.abc import Generator
-from typing import Optional, Union
+from typing import Optional, Union, List
from model_providers.core.model_runtime.entities.llm_entities import LLMResult
from model_providers.core.model_runtime.entities.message_entities import (
@@ -16,10 +16,10 @@ class MoonshotLargeLanguageModel(OAIAPICompatLargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> Union[LLMResult, Generator]:
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/ollama/llm/llm.py b/model-providers/model_providers/core/model_runtime/model_providers/ollama/llm/llm.py
index 19a7cc58..b9ac688b 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/ollama/llm/llm.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/ollama/llm/llm.py
@@ -3,7 +3,7 @@ import logging
import re
from collections.abc import Generator
from decimal import Decimal
-from typing import Optional, Union, cast
+from typing import Optional, Union, cast, List, Dict, Type
from urllib.parse import urljoin
import requests
@@ -63,10 +63,10 @@ class OllamaLargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> Union[LLMResult, Generator]:
@@ -97,8 +97,8 @@ class OllamaLargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
- tools: Optional[list[PromptMessageTool]] = None,
+ prompt_messages: List[PromptMessage],
+ tools: Optional[List[PromptMessageTool]] = None,
) -> int:
"""
Get number of tokens for given prompt messages
@@ -159,9 +159,9 @@ class OllamaLargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- stop: Optional[list[str]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> Union[LLMResult, Generator]:
@@ -258,7 +258,7 @@ class OllamaLargeLanguageModel(LargeLanguageModel):
credentials: dict,
completion_type: LLMMode,
response: requests.Response,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
) -> LLMResult:
"""
Handle llm completion response
@@ -310,7 +310,7 @@ class OllamaLargeLanguageModel(LargeLanguageModel):
credentials: dict,
completion_type: LLMMode,
response: requests.Response,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
) -> Generator:
"""
Handle llm completion stream response
@@ -462,7 +462,7 @@ class OllamaLargeLanguageModel(LargeLanguageModel):
return message_dict
- def _num_tokens_from_messages(self, messages: list[PromptMessage]) -> int:
+ def _num_tokens_from_messages(self, messages: List[PromptMessage]) -> int:
"""
Calculate num tokens.
@@ -700,7 +700,7 @@ class OllamaLargeLanguageModel(LargeLanguageModel):
return entity
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[Type[InvokeError], List[Type[Exception]]]:
"""
Map model invoke error to unified error
The key is the error type thrown to the caller
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/ollama/text_embedding/text_embedding.py b/model-providers/model_providers/core/model_runtime/model_providers/ollama/text_embedding/text_embedding.py
index fd037190..bc8d7185 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/ollama/text_embedding/text_embedding.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/ollama/text_embedding/text_embedding.py
@@ -2,7 +2,7 @@ import json
import logging
import time
from decimal import Decimal
-from typing import Optional
+from typing import Optional, List, Dict, Type
from urllib.parse import urljoin
import numpy as np
@@ -48,7 +48,7 @@ class OllamaEmbeddingModel(TextEmbeddingModel):
self,
model: str,
credentials: dict,
- texts: list[str],
+ texts: List[str],
user: Optional[str] = None,
) -> TextEmbeddingResult:
"""
@@ -123,7 +123,7 @@ class OllamaEmbeddingModel(TextEmbeddingModel):
embeddings=batched_embeddings, usage=usage, model=model
)
- def get_num_tokens(self, model: str, credentials: dict, texts: list[str]) -> int:
+ def get_num_tokens(self, model: str, credentials: dict, texts: List[str]) -> int:
"""
Approximate number of tokens for given messages using GPT2 tokenizer
@@ -211,7 +211,7 @@ class OllamaEmbeddingModel(TextEmbeddingModel):
return usage
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[Type[InvokeError], List[Type[Exception]]]:
"""
Map model invoke error to unified error
The key is the error type thrown to the caller
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/openai/_common.py b/model-providers/model_providers/core/model_runtime/model_providers/openai/_common.py
index c459c20b..41464c68 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/openai/_common.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/openai/_common.py
@@ -1,3 +1,5 @@
+from typing import Dict, Type, List
+
import openai
from httpx import Timeout
@@ -35,7 +37,7 @@ class _CommonOpenAI:
return credentials_kwargs
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[Type[InvokeError], List[Type[Exception]]]:
"""
Map model invoke error to unified error
The key is the error type thrown to the caller
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/openai/llm/llm.py b/model-providers/model_providers/core/model_runtime/model_providers/openai/llm/llm.py
index 0b886642..33f34bdd 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/openai/llm/llm.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/openai/llm/llm.py
@@ -1,6 +1,6 @@
import logging
from collections.abc import Generator
-from typing import Optional, Union, cast
+from typing import Optional, Union, cast, List
import tiktoken
from openai import OpenAI, Stream
@@ -72,10 +72,10 @@ class OpenAILargeLanguageModel(_CommonOpenAI, LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> Union[LLMResult, Generator]:
@@ -128,13 +128,13 @@ class OpenAILargeLanguageModel(_CommonOpenAI, LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
- callbacks: list[Callback] = None,
+ callbacks: List[Callback] = None,
) -> Union[LLMResult, Generator]:
"""
Code block mode wrapper for invoking large language model
@@ -194,12 +194,12 @@ class OpenAILargeLanguageModel(_CommonOpenAI, LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: list[PromptMessageTool] | None = None,
- stop: list[str] | None = None,
+ tools: Union[List[PromptMessageTool], None] = None,
+ stop: Union[List[str], None] = None,
stream: bool = True,
- user: str | None = None,
+ user: Union[str, None] = None,
response_format: str = "JSON",
) -> None:
"""
@@ -242,12 +242,12 @@ class OpenAILargeLanguageModel(_CommonOpenAI, LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: list[PromptMessageTool] | None = None,
- stop: list[str] | None = None,
+ tools: Union[List[PromptMessageTool], None] = None,
+ stop: Union[List[str], None] = None,
stream: bool = True,
- user: str | None = None,
+ user: Union[str, None] = None,
response_format: str = "JSON",
) -> None:
"""
@@ -287,8 +287,8 @@ class OpenAILargeLanguageModel(_CommonOpenAI, LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
- tools: Optional[list[PromptMessageTool]] = None,
+ prompt_messages: List[PromptMessage],
+ tools: Optional[List[PromptMessageTool]] = None,
) -> int:
"""
Get number of tokens for given prompt messages
@@ -366,7 +366,7 @@ class OpenAILargeLanguageModel(_CommonOpenAI, LargeLanguageModel):
except Exception as ex:
raise CredentialsValidateFailedError(str(ex))
- def remote_models(self, credentials: dict) -> list[AIModelEntity]:
+ def remote_models(self, credentials: dict) -> List[AIModelEntity]:
"""
Return remote models if credentials are provided.
@@ -424,9 +424,9 @@ class OpenAILargeLanguageModel(_CommonOpenAI, LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- stop: Optional[list[str]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> Union[LLMResult, Generator]:
@@ -479,7 +479,7 @@ class OpenAILargeLanguageModel(_CommonOpenAI, LargeLanguageModel):
model: str,
credentials: dict,
response: Completion,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
) -> LLMResult:
"""
Handle llm completion response
@@ -528,7 +528,7 @@ class OpenAILargeLanguageModel(_CommonOpenAI, LargeLanguageModel):
model: str,
credentials: dict,
response: Stream[Completion],
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
) -> Generator:
"""
Handle llm completion stream response
@@ -599,10 +599,10 @@ class OpenAILargeLanguageModel(_CommonOpenAI, LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> Union[LLMResult, Generator]:
@@ -676,8 +676,8 @@ class OpenAILargeLanguageModel(_CommonOpenAI, LargeLanguageModel):
model: str,
credentials: dict,
response: ChatCompletion,
- prompt_messages: list[PromptMessage],
- tools: Optional[list[PromptMessageTool]] = None,
+ prompt_messages: List[PromptMessage],
+ tools: Optional[List[PromptMessageTool]] = None,
) -> LLMResult:
"""
Handle llm chat response
@@ -740,8 +740,8 @@ class OpenAILargeLanguageModel(_CommonOpenAI, LargeLanguageModel):
model: str,
credentials: dict,
response: Stream[ChatCompletionChunk],
- prompt_messages: list[PromptMessage],
- tools: Optional[list[PromptMessageTool]] = None,
+ prompt_messages: List[PromptMessage],
+ tools: Optional[List[PromptMessageTool]] = None,
) -> Generator:
"""
Handle llm chat stream response
@@ -851,8 +851,8 @@ class OpenAILargeLanguageModel(_CommonOpenAI, LargeLanguageModel):
def _extract_response_tool_calls(
self,
- response_tool_calls: list[ChatCompletionMessageToolCall | ChoiceDeltaToolCall],
- ) -> list[AssistantPromptMessage.ToolCall]:
+ response_tool_calls: List[Union[ChatCompletionMessageToolCall, ChoiceDeltaToolCall]],
+ ) -> List[AssistantPromptMessage.ToolCall]:
"""
Extract tool calls from response
@@ -877,7 +877,7 @@ class OpenAILargeLanguageModel(_CommonOpenAI, LargeLanguageModel):
return tool_calls
def _extract_response_function_call(
- self, response_function_call: FunctionCall | ChoiceDeltaFunctionCall
+ self, response_function_call: Union[FunctionCall, ChoiceDeltaFunctionCall]
) -> AssistantPromptMessage.ToolCall:
"""
Extract function call from response
@@ -967,7 +967,7 @@ class OpenAILargeLanguageModel(_CommonOpenAI, LargeLanguageModel):
return message_dict
def _num_tokens_from_string(
- self, model: str, text: str, tools: Optional[list[PromptMessageTool]] = None
+ self, model: str, text: str, tools: Optional[List[PromptMessageTool]] = None
) -> int:
"""
Calculate num tokens for text completion model with tiktoken package.
@@ -992,8 +992,8 @@ class OpenAILargeLanguageModel(_CommonOpenAI, LargeLanguageModel):
def _num_tokens_from_messages(
self,
model: str,
- messages: list[PromptMessage],
- tools: Optional[list[PromptMessageTool]] = None,
+ messages: List[PromptMessage],
+ tools: Optional[List[PromptMessageTool]] = None,
) -> int:
"""Calculate num tokens for gpt-3.5-turbo and gpt-4 with tiktoken package.
@@ -1068,7 +1068,7 @@ class OpenAILargeLanguageModel(_CommonOpenAI, LargeLanguageModel):
return num_tokens
def _num_tokens_for_tools(
- self, encoding: tiktoken.Encoding, tools: list[PromptMessageTool]
+ self, encoding: tiktoken.Encoding, tools: List[PromptMessageTool]
) -> int:
"""
Calculate num tokens for tool calling with tiktoken package.
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/openai/moderation/moderation.py b/model-providers/model_providers/core/model_runtime/model_providers/openai/moderation/moderation.py
index 8ff1958a..69d5c810 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/openai/moderation/moderation.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/openai/moderation/moderation.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Optional, List
from openai import OpenAI
from openai.types import ModerationCreateResponse
@@ -82,7 +82,7 @@ class OpenAIModerationModel(_CommonOpenAI, ModerationModel):
raise CredentialsValidateFailedError(str(ex))
def _moderation_invoke(
- self, model: str, client: OpenAI, texts: list[str]
+ self, model: str, client: OpenAI, texts: List[str]
) -> ModerationCreateResponse:
"""
Invoke moderation model
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/openai/text_embedding/text_embedding.py b/model-providers/model_providers/core/model_runtime/model_providers/openai/text_embedding/text_embedding.py
index ef04e13f..04db0f63 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/openai/text_embedding/text_embedding.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/openai/text_embedding/text_embedding.py
@@ -1,6 +1,6 @@
import base64
import time
-from typing import Optional, Union
+from typing import Optional, Union, List, Tuple
import numpy as np
import tiktoken
@@ -31,7 +31,7 @@ class OpenAITextEmbeddingModel(_CommonOpenAI, TextEmbeddingModel):
self,
model: str,
credentials: dict,
- texts: list[str],
+ texts: List[str],
user: Optional[str] = None,
) -> TextEmbeddingResult:
"""
@@ -58,7 +58,7 @@ class OpenAITextEmbeddingModel(_CommonOpenAI, TextEmbeddingModel):
context_size = self._get_context_size(model, credentials)
max_chunks = self._get_max_chunks(model, credentials)
- embeddings: list[list[float]] = [[] for _ in range(len(texts))]
+ embeddings: List[List[float]] = [[] for _ in range(len(texts))]
tokens = []
indices = []
used_tokens = 0
@@ -89,8 +89,8 @@ class OpenAITextEmbeddingModel(_CommonOpenAI, TextEmbeddingModel):
used_tokens += embedding_used_tokens
batched_embeddings += embeddings_batch
- results: list[list[list[float]]] = [[] for _ in range(len(texts))]
- num_tokens_in_batch: list[list[int]] = [[] for _ in range(len(texts))]
+ results: List[List[List[float]]] = [[] for _ in range(len(texts))]
+ num_tokens_in_batch: List[List[int]] = [[] for _ in range(len(texts))]
for i in range(len(indices)):
results[indices[i]].append(batched_embeddings[i])
num_tokens_in_batch[indices[i]].append(len(tokens[i]))
@@ -118,7 +118,7 @@ class OpenAITextEmbeddingModel(_CommonOpenAI, TextEmbeddingModel):
return TextEmbeddingResult(embeddings=embeddings, usage=usage, model=model)
- def get_num_tokens(self, model: str, credentials: dict, texts: list[str]) -> int:
+ def get_num_tokens(self, model: str, credentials: dict, texts: List[str]) -> int:
"""
Get number of tokens for given prompt messages
@@ -167,9 +167,9 @@ class OpenAITextEmbeddingModel(_CommonOpenAI, TextEmbeddingModel):
self,
model: str,
client: OpenAI,
- texts: Union[list[str], str],
+ texts: Union[List[str], str],
extra_model_kwargs: dict,
- ) -> tuple[list[list[float]], int]:
+ ) -> Tuple[List[List[float]], int]:
"""
Invoke embedding model
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/openai_api_compatible/_common.py b/model-providers/model_providers/core/model_runtime/model_providers/openai_api_compatible/_common.py
index d5c3d879..e7c259fd 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/openai_api_compatible/_common.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/openai_api_compatible/_common.py
@@ -1,3 +1,5 @@
+from typing import Dict, Type, List
+
import requests
from model_providers.core.model_runtime.errors.invoke import (
@@ -12,7 +14,7 @@ from model_providers.core.model_runtime.errors.invoke import (
class _CommonOAI_API_Compat:
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[Type[InvokeError], List[Type[Exception]]]:
"""
Map model invoke error to unified error
The key is the error type thrown to the caller
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/openai_api_compatible/llm/llm.py b/model-providers/model_providers/core/model_runtime/model_providers/openai_api_compatible/llm/llm.py
index 05a2c7c9..c365b769 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/openai_api_compatible/llm/llm.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/openai_api_compatible/llm/llm.py
@@ -2,7 +2,7 @@ import json
import logging
from collections.abc import Generator
from decimal import Decimal
-from typing import Optional, Union, cast
+from typing import Optional, Union, cast, List
from urllib.parse import urljoin
import requests
@@ -61,10 +61,10 @@ class OAIAPICompatLargeLanguageModel(_CommonOAI_API_Compat, LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> Union[LLMResult, Generator]:
@@ -98,8 +98,8 @@ class OAIAPICompatLargeLanguageModel(_CommonOAI_API_Compat, LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
- tools: Optional[list[PromptMessageTool]] = None,
+ prompt_messages: List[PromptMessage],
+ tools: Optional[List[PromptMessageTool]] = None,
) -> int:
"""
Get number of tokens for given prompt messages
@@ -282,10 +282,10 @@ class OAIAPICompatLargeLanguageModel(_CommonOAI_API_Compat, LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> Union[LLMResult, Generator]:
@@ -384,7 +384,7 @@ class OAIAPICompatLargeLanguageModel(_CommonOAI_API_Compat, LargeLanguageModel):
model: str,
credentials: dict,
response: requests.Response,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
) -> Generator:
"""
Handle llm stream response
@@ -516,7 +516,7 @@ class OAIAPICompatLargeLanguageModel(_CommonOAI_API_Compat, LargeLanguageModel):
model: str,
credentials: dict,
response: requests.Response,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
) -> LLMResult:
response_json = response.json()
@@ -649,7 +649,7 @@ class OAIAPICompatLargeLanguageModel(_CommonOAI_API_Compat, LargeLanguageModel):
return message_dict
def _num_tokens_from_string(
- self, model: str, text: str, tools: Optional[list[PromptMessageTool]] = None
+ self, model: str, text: str, tools: Optional[List[PromptMessageTool]] = None
) -> int:
"""
Approximate num tokens for model with gpt2 tokenizer.
@@ -669,8 +669,8 @@ class OAIAPICompatLargeLanguageModel(_CommonOAI_API_Compat, LargeLanguageModel):
def _num_tokens_from_messages(
self,
model: str,
- messages: list[PromptMessage],
- tools: Optional[list[PromptMessageTool]] = None,
+ messages: List[PromptMessage],
+ tools: Optional[List[PromptMessageTool]] = None,
) -> int:
"""
Approximate num tokens with GPT2 tokenizer.
@@ -722,7 +722,7 @@ class OAIAPICompatLargeLanguageModel(_CommonOAI_API_Compat, LargeLanguageModel):
return num_tokens
- def _num_tokens_for_tools(self, tools: list[PromptMessageTool]) -> int:
+ def _num_tokens_for_tools(self, tools: List[PromptMessageTool]) -> int:
"""
Calculate num tokens for tool calling with tiktoken package.
@@ -769,8 +769,8 @@ class OAIAPICompatLargeLanguageModel(_CommonOAI_API_Compat, LargeLanguageModel):
return num_tokens
def _extract_response_tool_calls(
- self, response_tool_calls: list[dict]
- ) -> list[AssistantPromptMessage.ToolCall]:
+ self, response_tool_calls: List[dict]
+ ) -> List[AssistantPromptMessage.ToolCall]:
"""
Extract tool calls from response
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/openai_api_compatible/text_embedding/text_embedding.py b/model-providers/model_providers/core/model_runtime/model_providers/openai_api_compatible/text_embedding/text_embedding.py
index 0c71cfa0..c6f1bd78 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/openai_api_compatible/text_embedding/text_embedding.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/openai_api_compatible/text_embedding/text_embedding.py
@@ -1,7 +1,7 @@
import json
import time
from decimal import Decimal
-from typing import Optional
+from typing import Optional, List
from urllib.parse import urljoin
import numpy as np
@@ -40,7 +40,7 @@ class OAICompatEmbeddingModel(_CommonOAI_API_Compat, TextEmbeddingModel):
self,
model: str,
credentials: dict,
- texts: list[str],
+ texts: List[str],
user: Optional[str] = None,
) -> TextEmbeddingResult:
"""
@@ -131,7 +131,7 @@ class OAICompatEmbeddingModel(_CommonOAI_API_Compat, TextEmbeddingModel):
embeddings=batched_embeddings, usage=usage, model=model
)
- def get_num_tokens(self, model: str, credentials: dict, texts: list[str]) -> int:
+ def get_num_tokens(self, model: str, credentials: dict, texts: List[str]) -> int:
"""
Approximate number of tokens for given messages using GPT2 tokenizer
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/openllm/llm/llm.py b/model-providers/model_providers/core/model_runtime/model_providers/openllm/llm/llm.py
index 271eca7e..812f304a 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/openllm/llm/llm.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/openllm/llm/llm.py
@@ -1,4 +1,4 @@
-from collections.abc import Generator
+from typing import List, Union, Type, Dict, Generator
from model_providers.core.model_runtime.entities.common_entities import I18nObject
from model_providers.core.model_runtime.entities.llm_entities import (
@@ -54,13 +54,13 @@ class OpenLLMLargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: list[PromptMessageTool] | None = None,
- stop: list[str] | None = None,
+ tools: Union[List[PromptMessageTool], None] = None,
+ stop: Union[List[str], None] = None,
stream: bool = True,
- user: str | None = None,
- ) -> LLMResult | Generator:
+ user: Union[str, None] = None,
+ ) -> Union[LLMResult, Generator]:
return self._generate(
model,
credentials,
@@ -105,13 +105,13 @@ class OpenLLMLargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
- tools: list[PromptMessageTool] | None = None,
+ prompt_messages: List[PromptMessage],
+ tools: Union[List[PromptMessageTool], None] = None,
) -> int:
return self._num_tokens_from_messages(prompt_messages, tools)
def _num_tokens_from_messages(
- self, messages: list[PromptMessage], tools: list[PromptMessageTool]
+ self, messages: List[PromptMessage], tools: List[PromptMessageTool]
) -> int:
"""
Calculate num tokens for OpenLLM model
@@ -124,13 +124,13 @@ class OpenLLMLargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: list[PromptMessageTool] | None = None,
- stop: list[str] | None = None,
+ tools: Union[List[PromptMessageTool], None] = None,
+ stop: Union[List[str], None] = None,
stream: bool = True,
- user: str | None = None,
- ) -> LLMResult | Generator:
+ user: Union[str, None] = None,
+ ) -> Union[LLMResult, Generator]:
client = OpenLLMGenerate()
response = client.generate(
model_name=model,
@@ -183,7 +183,7 @@ class OpenLLMLargeLanguageModel(LargeLanguageModel):
def _handle_chat_generate_response(
self,
model: str,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
credentials: dict,
response: OpenLLMGenerateMessage,
) -> LLMResult:
@@ -206,7 +206,7 @@ class OpenLLMLargeLanguageModel(LargeLanguageModel):
def _handle_chat_generate_stream_response(
self,
model: str,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
credentials: dict,
response: Generator[OpenLLMGenerateMessage, None, None],
) -> Generator[LLMResultChunk, None, None]:
@@ -249,7 +249,7 @@ class OpenLLMLargeLanguageModel(LargeLanguageModel):
def get_customizable_model_schema(
self, model: str, credentials: dict
- ) -> AIModelEntity | None:
+ ) -> Union[AIModelEntity, None]:
"""
used to define customizable model schema
"""
@@ -298,7 +298,7 @@ class OpenLLMLargeLanguageModel(LargeLanguageModel):
return entity
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[Type[InvokeError], List[Type[Exception]]]:
"""
Map model invoke error to unified error
The key is the error type thrown to the caller
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/openllm/llm/openllm_generate.py b/model-providers/model_providers/core/model_runtime/model_providers/openllm/llm/openllm_generate.py
index 05dc9488..1c0ab40d 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/openllm/llm/openllm_generate.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/openllm/llm/openllm_generate.py
@@ -20,10 +20,10 @@ class OpenLLMGenerateMessage:
role: str = Role.USER.value
content: str
- usage: dict[str, int] = None
+ usage: Dict[str, int] = None
stop_reason: str = ""
- def to_dict(self) -> dict[str, Any]:
+ def to_dict(self) -> Dict[str, Any]:
return {
"role": self.role,
"content": self.content,
@@ -40,9 +40,9 @@ class OpenLLMGenerate:
server_url: str,
model_name: str,
stream: bool,
- model_parameters: dict[str, Any],
- stop: list[str],
- prompt_messages: list[OpenLLMGenerateMessage],
+ model_parameters: Dict[str, Any],
+ stop: List[str],
+ prompt_messages: List[OpenLLMGenerateMessage],
user: str,
) -> Union[Generator[OpenLLMGenerateMessage, None, None], OpenLLMGenerateMessage]:
if not server_url:
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/openllm/text_embedding/text_embedding.py b/model-providers/model_providers/core/model_runtime/model_providers/openllm/text_embedding/text_embedding.py
index 5e1ed3a7..c56442e1 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/openllm/text_embedding/text_embedding.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/openllm/text_embedding/text_embedding.py
@@ -1,6 +1,6 @@
import time
from json import dumps
-from typing import Optional
+from typing import Dict, List, Optional, Type
from requests import post
from requests.exceptions import ConnectionError, InvalidSchema, MissingSchema
@@ -35,7 +35,7 @@ class OpenLLMTextEmbeddingModel(TextEmbeddingModel):
self,
model: str,
credentials: dict,
- texts: list[str],
+ texts: List[str],
user: Optional[str] = None,
) -> TextEmbeddingResult:
"""
@@ -89,7 +89,7 @@ class OpenLLMTextEmbeddingModel(TextEmbeddingModel):
return result
- def get_num_tokens(self, model: str, credentials: dict, texts: list[str]) -> int:
+ def get_num_tokens(self, model: str, credentials: dict, texts: List[str]) -> int:
"""
Get number of tokens for given prompt messages
@@ -118,7 +118,7 @@ class OpenLLMTextEmbeddingModel(TextEmbeddingModel):
raise CredentialsValidateFailedError("Invalid server_url")
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[Type[InvokeError], List[Type[Exception]]]:
"""
Map model invoke error to unified error
The key is the error type thrown to the caller
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/replicate/_common.py b/model-providers/model_providers/core/model_runtime/model_providers/replicate/_common.py
index 582cb8aa..6299cfc0 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/replicate/_common.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/replicate/_common.py
@@ -1,3 +1,5 @@
+from typing import Dict, List, Type
+
from replicate.exceptions import ModelError, ReplicateError
from model_providers.core.model_runtime.errors.invoke import (
@@ -8,5 +10,5 @@ from model_providers.core.model_runtime.errors.invoke import (
class _CommonReplicate:
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[Type[InvokeError], List[Type[Exception]]]:
return {InvokeBadRequestError: [ReplicateError, ModelError]}
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/replicate/llm/llm.py b/model-providers/model_providers/core/model_runtime/model_providers/replicate/llm/llm.py
index 987cb4d0..9b72f011 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/replicate/llm/llm.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/replicate/llm/llm.py
@@ -1,5 +1,4 @@
-from collections.abc import Generator
-from typing import Optional, Union
+from typing import Generator, Optional, Union
from replicate import Client as ReplicateClient
from replicate.exceptions import ReplicateError
@@ -43,10 +42,10 @@ class ReplicateLargeLanguageModel(_CommonReplicate, LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> Union[LLMResult, Generator]:
@@ -86,8 +85,8 @@ class ReplicateLargeLanguageModel(_CommonReplicate, LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
- tools: Optional[list[PromptMessageTool]] = None,
+ prompt_messages: List[PromptMessage],
+ tools: Optional[List[PromptMessageTool]] = None,
) -> int:
prompt = self._convert_messages_to_prompt(prompt_messages)
return self._get_num_tokens_by_gpt2(prompt)
@@ -167,7 +166,7 @@ class ReplicateLargeLanguageModel(_CommonReplicate, LargeLanguageModel):
@classmethod
def _get_customizable_model_parameter_rules(
cls, model: str, credentials: dict
- ) -> list[ParameterRule]:
+ ) -> List[ParameterRule]:
version = credentials["model_version"]
client = ReplicateClient(
@@ -215,8 +214,8 @@ class ReplicateLargeLanguageModel(_CommonReplicate, LargeLanguageModel):
model: str,
credentials: dict,
prediction: Prediction,
- stop: list[str],
- prompt_messages: list[PromptMessage],
+ stop: List[str],
+ prompt_messages: List[PromptMessage],
) -> Generator:
index = -1
current_completion: str = ""
@@ -281,8 +280,8 @@ class ReplicateLargeLanguageModel(_CommonReplicate, LargeLanguageModel):
model: str,
credentials: dict,
prediction: Prediction,
- stop: list[str],
- prompt_messages: list[PromptMessage],
+ stop: List[str],
+ prompt_messages: List[PromptMessage],
) -> LLMResult:
current_completion: str = ""
stop_condition_reached = False
@@ -332,7 +331,7 @@ class ReplicateLargeLanguageModel(_CommonReplicate, LargeLanguageModel):
elif param_type == "string":
return "string"
- def _convert_messages_to_prompt(self, messages: list[PromptMessage]) -> str:
+ def _convert_messages_to_prompt(self, messages: List[PromptMessage]) -> str:
messages = messages.copy() # don't mutate the original list
text = "".join(
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/replicate/text_embedding/text_embedding.py b/model-providers/model_providers/core/model_runtime/model_providers/replicate/text_embedding/text_embedding.py
index a6884360..e45bf19a 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/replicate/text_embedding/text_embedding.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/replicate/text_embedding/text_embedding.py
@@ -1,6 +1,6 @@
import json
import time
-from typing import Optional
+from typing import List, Optional
from replicate import Client as ReplicateClient
@@ -31,7 +31,7 @@ class ReplicateEmbeddingModel(_CommonReplicate, TextEmbeddingModel):
self,
model: str,
credentials: dict,
- texts: list[str],
+ texts: List[str],
user: Optional[str] = None,
) -> TextEmbeddingResult:
client = ReplicateClient(
@@ -52,7 +52,7 @@ class ReplicateEmbeddingModel(_CommonReplicate, TextEmbeddingModel):
return TextEmbeddingResult(model=model, embeddings=embeddings, usage=usage)
- def get_num_tokens(self, model: str, credentials: dict, texts: list[str]) -> int:
+ def get_num_tokens(self, model: str, credentials: dict, texts: List[str]) -> int:
num_tokens = 0
for text in texts:
num_tokens += self._get_num_tokens_by_gpt2(text)
@@ -124,8 +124,8 @@ class ReplicateEmbeddingModel(_CommonReplicate, TextEmbeddingModel):
client: ReplicateClient,
replicate_model_version: str,
text_input_key: str,
- texts: list[str],
- ) -> list[list[float]]:
+ texts: List[str],
+ ) -> List[List[float]]:
if text_input_key in ("text", "inputs"):
embeddings = []
for text in texts:
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/spark/llm/llm.py b/model-providers/model_providers/core/model_runtime/model_providers/spark/llm/llm.py
index c7ea29f3..02741fd7 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/spark/llm/llm.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/spark/llm/llm.py
@@ -1,6 +1,6 @@
import threading
from collections.abc import Generator
-from typing import Optional, Union
+from typing import Dict, List, Optional, Type, Union
from model_providers.core.model_runtime.entities.llm_entities import (
LLMResult,
@@ -37,10 +37,10 @@ class SparkLargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> Union[LLMResult, Generator]:
@@ -66,8 +66,8 @@ class SparkLargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
- tools: Optional[list[PromptMessageTool]] = None,
+ prompt_messages: List[PromptMessage],
+ tools: Optional[List[PromptMessageTool]] = None,
) -> int:
"""
Get number of tokens for given prompt messages
@@ -109,9 +109,9 @@ class SparkLargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- stop: Optional[list[str]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> Union[LLMResult, Generator]:
@@ -171,13 +171,12 @@ class SparkLargeLanguageModel(LargeLanguageModel):
model: str,
credentials: dict,
client: SparkLLMClient,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
) -> LLMResult:
"""
Handle llm response
:param model: model name
- :param response: response
:param prompt_messages: prompt messages
:return: llm response
"""
@@ -222,7 +221,7 @@ class SparkLargeLanguageModel(LargeLanguageModel):
model: str,
credentials: dict,
client: SparkLLMClient,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
) -> Generator:
"""
Handle llm stream response
@@ -300,7 +299,7 @@ class SparkLargeLanguageModel(LargeLanguageModel):
return message_text
- def _convert_messages_to_prompt(self, messages: list[PromptMessage]) -> str:
+ def _convert_messages_to_prompt(self, messages: List[PromptMessage]) -> str:
"""
Format a list of messages into a full prompt for the Anthropic model
@@ -317,7 +316,7 @@ class SparkLargeLanguageModel(LargeLanguageModel):
return text.rstrip()
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[Type[InvokeError], List[Type[Exception]]]:
"""
Map model invoke error to unified error
The key is the error type thrown to the caller
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/togetherai/llm/llm.py b/model-providers/model_providers/core/model_runtime/model_providers/togetherai/llm/llm.py
index c954affd..72b4be3c 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/togetherai/llm/llm.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/togetherai/llm/llm.py
@@ -1,5 +1,5 @@
from collections.abc import Generator
-from typing import Optional, Union
+from typing import List, Optional, Union
from model_providers.core.model_runtime.entities.llm_entities import LLMResult
from model_providers.core.model_runtime.entities.message_entities import (
@@ -21,10 +21,10 @@ class TogetherAILargeLanguageModel(OAIAPICompatLargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> Union[LLMResult, Generator]:
@@ -50,10 +50,10 @@ class TogetherAILargeLanguageModel(OAIAPICompatLargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> Union[LLMResult, Generator]:
@@ -81,8 +81,8 @@ class TogetherAILargeLanguageModel(OAIAPICompatLargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
- tools: Optional[list[PromptMessageTool]] = None,
+ prompt_messages: List[PromptMessage],
+ tools: Optional[List[PromptMessageTool]] = None,
) -> int:
cred_with_endpoint = self._update_endpoint_url(credentials=credentials)
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/tongyi/_common.py b/model-providers/model_providers/core/model_runtime/model_providers/tongyi/_common.py
index da62624a..b3497560 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/tongyi/_common.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/tongyi/_common.py
@@ -1,3 +1,5 @@
+from typing import Dict, List, Type
+
from model_providers.core.model_runtime.errors.invoke import InvokeError
@@ -11,7 +13,7 @@ class _CommonTongyi:
return credentials_kwargs
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[Type[InvokeError], List[Type[Exception]]]:
"""
Map model invoke error to unified error
The key is the error type thrown to the caller
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/tongyi/llm/_client.py b/model-providers/model_providers/core/model_runtime/model_providers/tongyi/llm/_client.py
index d7bf35f3..8aac0c74 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/tongyi/llm/_client.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/tongyi/llm/_client.py
@@ -1,4 +1,4 @@
-from typing import Any, Optional
+from typing import Any, Dict, List, Optional
from langchain.callbacks.manager import CallbackManagerForLLMRun
from langchain.llms import Tongyi
@@ -8,7 +8,7 @@ from langchain.schema import Generation, LLMResult
class EnhanceTongyi(Tongyi):
@property
- def _default_params(self) -> dict[str, Any]:
+ def _default_params(self) -> Dict[str, Any]:
"""Get the default parameters for calling OpenAI API."""
normal_params = {"top_p": self.top_p, "api_key": self.dashscope_api_key}
@@ -16,13 +16,13 @@ class EnhanceTongyi(Tongyi):
def _generate(
self,
- prompts: list[str],
- stop: Optional[list[str]] = None,
+ prompts: List[str],
+ stop: Optional[List[str]] = None,
run_manager: Optional[CallbackManagerForLLMRun] = None,
**kwargs: Any,
) -> LLMResult:
generations = []
- params: dict[str, Any] = {
+ params: Dict[str, Any] = {
**{"model": self.model_name},
**self._default_params,
**kwargs,
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/tongyi/llm/llm.py b/model-providers/model_providers/core/model_runtime/model_providers/tongyi/llm/llm.py
index f2b0741c..058027cc 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/tongyi/llm/llm.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/tongyi/llm/llm.py
@@ -1,5 +1,5 @@
from collections.abc import Generator
-from typing import Optional, Union
+from typing import Dict, List, Optional, Type, Union
from dashscope import get_tokenizer
from dashscope.api_entities.dashscope_response import DashScopeAPIResponse
@@ -50,10 +50,10 @@ class TongyiLargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> Union[LLMResult, Generator]:
@@ -79,14 +79,14 @@ class TongyiLargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: list[PromptMessageTool] | None = None,
- stop: list[str] | None = None,
+ tools: Union[List[PromptMessageTool], None] = None,
+ stop: Union[List[str], None] = None,
stream: bool = True,
- user: str | None = None,
- callbacks: list[Callback] = None,
- ) -> LLMResult | Generator:
+ user: Union[str, None] = None,
+ callbacks: List[Callback] = None,
+ ) -> Union[LLMResult, Generator]:
"""
Wrapper for code block mode
"""
@@ -174,8 +174,8 @@ if you are not sure about the structure.
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
- tools: Optional[list[PromptMessageTool]] = None,
+ prompt_messages: List[PromptMessage],
+ tools: Optional[List[PromptMessageTool]] = None,
) -> int:
"""
Get number of tokens for given prompt messages
@@ -220,9 +220,9 @@ if you are not sure about the structure.
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- stop: Optional[list[str]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> Union[LLMResult, Generator]:
@@ -289,7 +289,7 @@ if you are not sure about the structure.
model: str,
credentials: dict,
response: DashScopeAPIResponse,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
) -> LLMResult:
"""
Handle llm response
@@ -326,7 +326,7 @@ if you are not sure about the structure.
model: str,
credentials: dict,
responses: Generator,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
) -> Generator:
"""
Handle llm stream response
@@ -412,7 +412,7 @@ if you are not sure about the structure.
return message_text
- def _convert_messages_to_prompt(self, messages: list[PromptMessage]) -> str:
+ def _convert_messages_to_prompt(self, messages: List[PromptMessage]) -> str:
"""
Format a list of messages into a full prompt for the Anthropic model
@@ -429,8 +429,8 @@ if you are not sure about the structure.
return text.rstrip()
def _convert_prompt_messages_to_tongyi_messages(
- self, prompt_messages: list[PromptMessage]
- ) -> list[dict]:
+ self, prompt_messages: List[PromptMessage]
+ ) -> List[dict]:
"""
Convert prompt messages to tongyi messages
@@ -466,7 +466,7 @@ if you are not sure about the structure.
return tongyi_messages
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[Type[InvokeError], List[Type[Exception]]]:
"""
Map model invoke error to unified error
The key is the error type thrown to the caller
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/tongyi/tts/tts.py b/model-providers/model_providers/core/model_runtime/model_providers/tongyi/tts/tts.py
index aa3e7f88..4ab2dd1e 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/tongyi/tts/tts.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/tongyi/tts/tts.py
@@ -4,7 +4,7 @@ from io import BytesIO
from typing import Optional
import dashscope
-from fastapi.responses import StreamingResponse
+from fastapi.responses import Response, StreamingResponse
from pydub import AudioSegment
from model_providers.core.model_runtime.errors.invoke import InvokeBadRequestError
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/wenxin/llm/ernie_bot.py b/model-providers/model_providers/core/model_runtime/model_providers/wenxin/llm/ernie_bot.py
index 39464d4e..2b6d82ac 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/wenxin/llm/ernie_bot.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/wenxin/llm/ernie_bot.py
@@ -1,9 +1,8 @@
-from collections.abc import Generator
from datetime import datetime, timedelta
from enum import Enum
from json import dumps, loads
from threading import Lock
-from typing import Any, Union
+from typing import Any, Dict, Generator, List, Union
from requests import Response, post
@@ -19,7 +18,7 @@ from model_providers.core.model_runtime.model_providers.wenxin.llm.ernie_bot_err
)
# map api_key to access_token
-baidu_access_tokens: dict[str, "BaiduAccessToken"] = {}
+baidu_access_tokens: Dict[str, "BaiduAccessToken"] = {}
baidu_access_tokens_lock = Lock()
@@ -118,10 +117,10 @@ class ErnieMessage:
role: str = Role.USER.value
content: str
- usage: dict[str, int] = None
+ usage: Dict[str, int] = None
stop_reason: str = ""
- def to_dict(self) -> dict[str, Any]:
+ def to_dict(self) -> Dict[str, Any]:
return {
"role": self.role,
"content": self.content,
@@ -156,11 +155,11 @@ class ErnieBotModel:
self,
model: str,
stream: bool,
- messages: list[ErnieMessage],
- parameters: dict[str, Any],
+ messages: List[ErnieMessage],
+ parameters: Dict[str, Any],
timeout: int,
- tools: list[PromptMessageTool],
- stop: list[str],
+ tools: List[PromptMessageTool],
+ stop: List[str],
user: str,
) -> Union[Generator[ErnieMessage, None, None], ErnieMessage]:
# check parameters
@@ -243,15 +242,15 @@ class ErnieBotModel:
token = BaiduAccessToken.get_access_token(self.api_key, self.secret_key)
return token.access_token
- def _copy_messages(self, messages: list[ErnieMessage]) -> list[ErnieMessage]:
+ def _copy_messages(self, messages: List[ErnieMessage]) -> List[ErnieMessage]:
return [ErnieMessage(message.content, message.role) for message in messages]
def _check_parameters(
self,
model: str,
- parameters: dict[str, Any],
- tools: list[PromptMessageTool],
- stop: list[str],
+ parameters: Dict[str, Any],
+ tools: List[PromptMessageTool],
+ stop: List[str],
) -> None:
if model not in self.api_bases:
raise BadRequestError(f"Invalid model: {model}")
@@ -276,13 +275,13 @@ class ErnieBotModel:
def _build_request_body(
self,
model: str,
- messages: list[ErnieMessage],
+ messages: List[ErnieMessage],
stream: bool,
- parameters: dict[str, Any],
- tools: list[PromptMessageTool],
- stop: list[str],
+ parameters: Dict[str, Any],
+ tools: List[PromptMessageTool],
+ stop: List[str],
user: str,
- ) -> dict[str, Any]:
+ ) -> Dict[str, Any]:
# if model in self.function_calling_supports:
# return self._build_function_calling_request_body(model, messages, parameters, tools, stop, user)
return self._build_chat_request_body(
@@ -292,13 +291,13 @@ class ErnieBotModel:
def _build_function_calling_request_body(
self,
model: str,
- messages: list[ErnieMessage],
+ messages: List[ErnieMessage],
stream: bool,
- parameters: dict[str, Any],
- tools: list[PromptMessageTool],
- stop: list[str],
+ parameters: Dict[str, Any],
+ tools: List[PromptMessageTool],
+ stop: List[str],
user: str,
- ) -> dict[str, Any]:
+ ) -> Dict[str, Any]:
if len(messages) % 2 == 0:
raise BadRequestError("The number of messages should be odd.")
if messages[0].role == "function":
@@ -311,12 +310,12 @@ class ErnieBotModel:
def _build_chat_request_body(
self,
model: str,
- messages: list[ErnieMessage],
+ messages: List[ErnieMessage],
stream: bool,
- parameters: dict[str, Any],
- stop: list[str],
+ parameters: Dict[str, Any],
+ stop: List[str],
user: str,
- ) -> dict[str, Any]:
+ ) -> Dict[str, Any]:
if len(messages) == 0:
raise BadRequestError("The number of messages should not be zero.")
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/wenxin/llm/llm.py b/model-providers/model_providers/core/model_runtime/model_providers/wenxin/llm/llm.py
index 1f7a638b..f53c9872 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/wenxin/llm/llm.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/wenxin/llm/llm.py
@@ -1,5 +1,4 @@
-from collections.abc import Generator
-from typing import Optional, Union, cast
+from typing import Dict, Generator, List, Optional, Type, Union, cast
from model_providers.core.model_runtime.callbacks.base_callback import Callback
from model_providers.core.model_runtime.entities.llm_entities import (
@@ -59,13 +58,13 @@ class ErnieBotLargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: list[PromptMessageTool] | None = None,
- stop: list[str] | None = None,
+ tools: Union[List[PromptMessageTool], None] = None,
+ stop: Union[List[str], None] = None,
stream: bool = True,
- user: str | None = None,
- ) -> LLMResult | Generator:
+ user: Union[str, None] = None,
+ ) -> Union[LLMResult, Generator]:
return self._generate(
model=model,
credentials=credentials,
@@ -81,13 +80,13 @@ class ErnieBotLargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
- callbacks: list[Callback] = None,
+ callbacks: List[Callback] = None,
) -> Union[LLMResult, Generator]:
"""
Code block mode wrapper for invoking large language model
@@ -140,12 +139,12 @@ class ErnieBotLargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: list[PromptMessageTool] | None = None,
- stop: list[str] | None = None,
+ tools: Union[List[PromptMessageTool], None] = None,
+ stop: Union[List[str], None] = None,
stream: bool = True,
- user: str | None = None,
+ user: Union[str, None] = None,
response_format: str = "JSON",
) -> None:
"""
@@ -187,15 +186,15 @@ class ErnieBotLargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
- tools: list[PromptMessageTool] | None = None,
+ prompt_messages: List[PromptMessage],
+ tools: Union[List[PromptMessageTool], None] = None,
) -> int:
# tools is not supported yet
return self._num_tokens_from_messages(prompt_messages)
def _num_tokens_from_messages(
self,
- messages: list[PromptMessage],
+ messages: List[PromptMessage],
) -> int:
"""Calculate num tokens for baichuan model"""
@@ -234,13 +233,13 @@ class ErnieBotLargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: list[PromptMessageTool] | None = None,
- stop: list[str] | None = None,
+ tools: Union[List[PromptMessageTool], None] = None,
+ stop: Union[List[str], None] = None,
stream: bool = True,
- user: str | None = None,
- ) -> LLMResult | Generator:
+ user: Union[str, None] = None,
+ ) -> Union[LLMResult, Generator]:
instance = ErnieBotModel(
api_key=credentials["api_key"],
secret_key=credentials["secret_key"],
@@ -304,7 +303,7 @@ class ErnieBotLargeLanguageModel(LargeLanguageModel):
def _handle_chat_generate_response(
self,
model: str,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
credentials: dict,
response: ErnieMessage,
) -> LLMResult:
@@ -325,7 +324,7 @@ class ErnieBotLargeLanguageModel(LargeLanguageModel):
def _handle_chat_generate_stream_response(
self,
model: str,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
credentials: dict,
response: Generator[ErnieMessage, None, None],
) -> Generator:
@@ -367,7 +366,7 @@ class ErnieBotLargeLanguageModel(LargeLanguageModel):
)
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[Type[InvokeError], List[Type[Exception]]]:
"""
Map model invoke error to unified error
The key is the error type thrown to the caller
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/xinference/llm/llm.py b/model-providers/model_providers/core/model_runtime/model_providers/xinference/llm/llm.py
index aa139170..e521c505 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/xinference/llm/llm.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/xinference/llm/llm.py
@@ -1,5 +1,5 @@
from collections.abc import Generator, Iterator
-from typing import cast
+from typing import Dict, List, Union, cast
from openai import (
APIConnectionError,
@@ -81,13 +81,13 @@ class XinferenceAILargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: list[PromptMessageTool] | None = None,
- stop: list[str] | None = None,
+ tools: Union[List[PromptMessageTool], None] = None,
+ stop: Union[List[str], None] = None,
stream: bool = True,
- user: str | None = None,
- ) -> LLMResult | Generator:
+ user: Union[str, None] = None,
+ ) -> Union[LLMResult, Generator]:
"""
invoke LLM
@@ -168,8 +168,8 @@ class XinferenceAILargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
- tools: list[PromptMessageTool] | None = None,
+ prompt_messages: List[PromptMessage],
+ tools: Union[List[PromptMessageTool], None] = None,
) -> int:
"""
get number of tokens
@@ -181,8 +181,8 @@ class XinferenceAILargeLanguageModel(LargeLanguageModel):
def _num_tokens_from_messages(
self,
- messages: list[PromptMessage],
- tools: list[PromptMessageTool],
+ messages: List[PromptMessage],
+ tools: List[PromptMessageTool],
is_completion_model: bool = False,
) -> int:
def tokens(text: str):
@@ -240,7 +240,7 @@ class XinferenceAILargeLanguageModel(LargeLanguageModel):
return num_tokens
- def _num_tokens_for_tools(self, tools: list[PromptMessageTool]) -> int:
+ def _num_tokens_for_tools(self, tools: List[PromptMessageTool]) -> int:
"""
Calculate num tokens for tool calling
@@ -284,7 +284,7 @@ class XinferenceAILargeLanguageModel(LargeLanguageModel):
return num_tokens
- def _convert_prompt_message_to_text(self, message: list[PromptMessage]) -> str:
+ def _convert_prompt_message_to_text(self, message: List[PromptMessage]) -> str:
"""
convert prompt message to text
"""
@@ -337,7 +337,7 @@ class XinferenceAILargeLanguageModel(LargeLanguageModel):
def get_customizable_model_schema(
self, model: str, credentials: dict
- ) -> AIModelEntity | None:
+ ) -> Union[AIModelEntity, None]:
"""
used to define customizable model schema
"""
@@ -412,14 +412,14 @@ class XinferenceAILargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
extra_model_kwargs: XinferenceModelExtraParameter,
- tools: list[PromptMessageTool] | None = None,
- stop: list[str] | None = None,
+ tools: Union[List[PromptMessageTool], None] = None,
+ stop: Union[List[str], None] = None,
stream: bool = True,
- user: str | None = None,
- ) -> LLMResult | Generator:
+ user: Union[str, None] = None,
+ ) -> Union[LLMResult, Generator]:
"""
generate text from LLM
@@ -525,8 +525,10 @@ class XinferenceAILargeLanguageModel(LargeLanguageModel):
def _extract_response_tool_calls(
self,
- response_tool_calls: list[ChatCompletionMessageToolCall | ChoiceDeltaToolCall],
- ) -> list[AssistantPromptMessage.ToolCall]:
+ response_tool_calls: Union[
+ List[ChatCompletionMessageToolCall, ChoiceDeltaToolCall]
+ ],
+ ) -> List[AssistantPromptMessage.ToolCall]:
"""
Extract tool calls from response
@@ -551,7 +553,7 @@ class XinferenceAILargeLanguageModel(LargeLanguageModel):
return tool_calls
def _extract_response_function_call(
- self, response_function_call: FunctionCall | ChoiceDeltaFunctionCall
+ self, response_function_call: Union[FunctionCall, ChoiceDeltaFunctionCall]
) -> AssistantPromptMessage.ToolCall:
"""
Extract function call from response
@@ -576,8 +578,8 @@ class XinferenceAILargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
- tools: list[PromptMessageTool],
+ prompt_messages: List[PromptMessage],
+ tools: List[PromptMessageTool],
resp: ChatCompletion,
) -> LLMResult:
"""
@@ -633,8 +635,8 @@ class XinferenceAILargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
- tools: list[PromptMessageTool],
+ prompt_messages: List[PromptMessage],
+ tools: List[PromptMessageTool],
resp: Iterator[ChatCompletionChunk],
) -> Generator:
"""
@@ -721,8 +723,8 @@ class XinferenceAILargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
- tools: list[PromptMessageTool],
+ prompt_messages: List[PromptMessage],
+ tools: List[PromptMessageTool],
resp: Completion,
) -> LLMResult:
"""
@@ -765,8 +767,8 @@ class XinferenceAILargeLanguageModel(LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
- tools: list[PromptMessageTool],
+ prompt_messages: List[PromptMessage],
+ tools: List[PromptMessageTool],
resp: Iterator[Completion],
) -> Generator:
"""
@@ -834,7 +836,7 @@ class XinferenceAILargeLanguageModel(LargeLanguageModel):
full_response += delta.text
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[Type[InvokeError], List[Type[Exception]]]:
"""
Map model invoke error to unified error
The key is the error type thrown to the caller
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/xinference/rerank/rerank.py b/model-providers/model_providers/core/model_runtime/model_providers/xinference/rerank/rerank.py
index 4291d3c1..e35400b7 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/xinference/rerank/rerank.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/xinference/rerank/rerank.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import Dict, List, Optional, Type, Union
from xinference_client.client.restful.restful_client import (
Client,
@@ -41,7 +41,7 @@ class XinferenceRerankModel(RerankModel):
model: str,
credentials: dict,
query: str,
- docs: list[str],
+ docs: List[str],
score_threshold: Optional[float] = None,
top_n: Optional[int] = None,
user: Optional[str] = None,
@@ -133,7 +133,7 @@ class XinferenceRerankModel(RerankModel):
raise CredentialsValidateFailedError(str(ex))
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[Type[InvokeError], List[Type[Exception]]]:
"""
Map model invoke error to unified error
The key is the error type thrown to the caller
@@ -152,7 +152,7 @@ class XinferenceRerankModel(RerankModel):
def get_customizable_model_schema(
self, model: str, credentials: dict
- ) -> AIModelEntity | None:
+ ) -> Union[AIModelEntity, None]:
"""
used to define customizable model schema
"""
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/xinference/text_embedding/text_embedding.py b/model-providers/model_providers/core/model_runtime/model_providers/xinference/text_embedding/text_embedding.py
index 2cabf59b..cc3d30f0 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/xinference/text_embedding/text_embedding.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/xinference/text_embedding/text_embedding.py
@@ -1,5 +1,5 @@
import time
-from typing import Optional
+from typing import Dict, List, Optional, Type, Union
from xinference_client.client.restful.restful_client import (
Client,
@@ -46,7 +46,7 @@ class XinferenceTextEmbeddingModel(TextEmbeddingModel):
self,
model: str,
credentials: dict,
- texts: list[str],
+ texts: List[str],
user: Optional[str] = None,
) -> TextEmbeddingResult:
"""
@@ -116,7 +116,7 @@ class XinferenceTextEmbeddingModel(TextEmbeddingModel):
return result
- def get_num_tokens(self, model: str, credentials: dict, texts: list[str]) -> int:
+ def get_num_tokens(self, model: str, credentials: dict, texts: List[str]) -> int:
"""
Get number of tokens for given prompt messages
@@ -167,7 +167,7 @@ class XinferenceTextEmbeddingModel(TextEmbeddingModel):
raise CredentialsValidateFailedError(e)
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[Type[InvokeError], List[Type[Exception]]]:
return {
InvokeConnectionError: [InvokeConnectionError],
InvokeServerUnavailableError: [InvokeServerUnavailableError],
@@ -210,7 +210,7 @@ class XinferenceTextEmbeddingModel(TextEmbeddingModel):
def get_customizable_model_schema(
self, model: str, credentials: dict
- ) -> AIModelEntity | None:
+ ) -> Union[AIModelEntity, None]:
"""
used to define customizable model schema
"""
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/xinference/xinference_helper.py b/model-providers/model_providers/core/model_runtime/model_providers/xinference/xinference_helper.py
index 6194a0cb..885ebf47 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/xinference/xinference_helper.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/xinference/xinference_helper.py
@@ -1,5 +1,6 @@
from threading import Lock
from time import time
+from typing import List
from requests.adapters import HTTPAdapter
from requests.exceptions import ConnectionError, MissingSchema, Timeout
@@ -10,7 +11,7 @@ from yarl import URL
class XinferenceModelExtraParameter:
model_format: str
model_handle_type: str
- model_ability: list[str]
+ model_ability: List[str]
max_tokens: int = 512
context_length: int = 2048
support_function_call: bool = False
@@ -19,7 +20,7 @@ class XinferenceModelExtraParameter:
self,
model_format: str,
model_handle_type: str,
- model_ability: list[str],
+ model_ability: List[str],
support_function_call: bool,
max_tokens: int,
context_length: int,
@@ -115,7 +116,7 @@ class XinferenceHelper:
model_handle_type = "chat"
else:
raise NotImplementedError(
- f"xinference model handle type {model_handle_type} is not supported"
+ f"xinference model handle type {response_json.get('model_type')} is not supported"
)
support_function_call = "tools" in model_ability
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/zhipuai/_common.py b/model-providers/model_providers/core/model_runtime/model_providers/zhipuai/_common.py
index 6f6595ed..4f7d4be3 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/zhipuai/_common.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/zhipuai/_common.py
@@ -1,3 +1,5 @@
+from typing import Dict, List, Type
+
from model_providers.core.model_runtime.errors.invoke import (
InvokeAuthorizationError,
InvokeBadRequestError,
@@ -27,7 +29,7 @@ class _CommonZhipuaiAI:
return credentials_kwargs
@property
- def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
+ def _invoke_error_mapping(self) -> Dict[Type[InvokeError], List[Type[Exception]]]:
"""
Map model invoke error to unified error
The key is the error type thrown to the caller
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/zhipuai/llm/llm.py b/model-providers/model_providers/core/model_runtime/model_providers/zhipuai/llm/llm.py
index 6ec0d178..d0ec7987 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/zhipuai/llm/llm.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/zhipuai/llm/llm.py
@@ -1,5 +1,14 @@
-from collections.abc import Generator
-from typing import Optional, Union
+from typing import Generator, List, Optional, Union
+
+from zhipuai import (
+ ZhipuAI,
+)
+from zhipuai.types.chat.chat_completion import (
+ Completion,
+)
+from zhipuai.types.chat.chat_completion_chunk import (
+ ChatCompletionChunk,
+)
from model_providers.core.model_runtime.entities.llm_entities import (
LLMResult,
@@ -24,15 +33,6 @@ from model_providers.core.model_runtime.model_providers.__base.large_language_mo
from model_providers.core.model_runtime.model_providers.zhipuai._common import (
_CommonZhipuaiAI,
)
-from zhipuai import (
- ZhipuAI,
-)
-from zhipuai.types.chat.chat_completion import (
- Completion,
-)
-from zhipuai.types.chat.chat_completion_chunk import (
- ChatCompletionChunk,
-)
from model_providers.core.model_runtime.utils import helper
GLM_JSON_MODE_PROMPT = """You should always follow the instructions and output a valid JSON object.
@@ -53,10 +53,10 @@ class ZhipuAILargeLanguageModel(_CommonZhipuaiAI, LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> Union[LLMResult, Generator]:
@@ -91,8 +91,8 @@ class ZhipuAILargeLanguageModel(_CommonZhipuaiAI, LargeLanguageModel):
)
# def _transform_json_prompts(self, model: str, credentials: dict,
- # prompt_messages: list[PromptMessage], model_parameters: dict,
- # tools: list[PromptMessageTool] | None = None, stop: list[str] | None = None,
+ # prompt_messages:List[PromptMessage], model_parameters: dict,
+ # tools:List[PromptMessageTool] | None = None, stop:List[str] | None = None,
# stream: bool = True, user: str | None = None) \
# -> None:
# """
@@ -126,8 +126,8 @@ class ZhipuAILargeLanguageModel(_CommonZhipuaiAI, LargeLanguageModel):
self,
model: str,
credentials: dict,
- prompt_messages: list[PromptMessage],
- tools: Optional[list[PromptMessageTool]] = None,
+ prompt_messages: List[PromptMessage],
+ tools: Optional[List[PromptMessageTool]] = None,
) -> int:
"""
Get number of tokens for given prompt messages
@@ -172,10 +172,10 @@ class ZhipuAILargeLanguageModel(_CommonZhipuaiAI, LargeLanguageModel):
self,
model: str,
credentials_kwargs: dict,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
model_parameters: dict,
- tools: Optional[list[PromptMessageTool]] = None,
- stop: Optional[list[str]] = None,
+ tools: Optional[List[PromptMessageTool]] = None,
+ stop: Optional[List[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> Union[LLMResult, Generator]:
@@ -205,7 +205,7 @@ class ZhipuAILargeLanguageModel(_CommonZhipuaiAI, LargeLanguageModel):
prompt_messages = prompt_messages[1:]
# resolve zhipuai model not support system message and user message, assistant message must be in sequence
- new_prompt_messages: list[PromptMessage] = []
+ new_prompt_messages: List[PromptMessage] = []
for prompt_message in prompt_messages:
copy_prompt_message = prompt_message.copy()
if copy_prompt_message.role in [
@@ -375,9 +375,9 @@ class ZhipuAILargeLanguageModel(_CommonZhipuaiAI, LargeLanguageModel):
self,
model: str,
credentials: dict,
- tools: Optional[list[PromptMessageTool]],
+ tools: Optional[List[PromptMessageTool]],
response: Completion,
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
) -> LLMResult:
"""
Handle llm response
@@ -388,7 +388,7 @@ class ZhipuAILargeLanguageModel(_CommonZhipuaiAI, LargeLanguageModel):
:return: llm response
"""
text = ""
- assistant_tool_calls: list[AssistantPromptMessage.ToolCall] = []
+ assistant_tool_calls: List[AssistantPromptMessage.ToolCall] = []
for choice in response.choices:
if choice.message.tool_calls:
for tool_call in choice.message.tool_calls:
@@ -430,9 +430,9 @@ class ZhipuAILargeLanguageModel(_CommonZhipuaiAI, LargeLanguageModel):
self,
model: str,
credentials: dict,
- tools: Optional[list[PromptMessageTool]],
+ tools: Optional[List[PromptMessageTool]],
responses: Generator[ChatCompletionChunk, None, None],
- prompt_messages: list[PromptMessage],
+ prompt_messages: List[PromptMessage],
) -> Generator:
"""
Handle llm stream response
@@ -454,7 +454,7 @@ class ZhipuAILargeLanguageModel(_CommonZhipuaiAI, LargeLanguageModel):
):
continue
- assistant_tool_calls: list[AssistantPromptMessage.ToolCall] = []
+ assistant_tool_calls: List[AssistantPromptMessage.ToolCall] = []
for tool_call in delta.delta.tool_calls or []:
if tool_call.type == "function":
assistant_tool_calls.append(
@@ -531,8 +531,8 @@ class ZhipuAILargeLanguageModel(_CommonZhipuaiAI, LargeLanguageModel):
def _convert_messages_to_prompt(
self,
- messages: list[PromptMessage],
- tools: Optional[list[PromptMessageTool]] = None,
+ messages: List[PromptMessage],
+ tools: Optional[List[PromptMessageTool]] = None,
) -> str:
"""
:param messages: List of PromptMessage to combine.
diff --git a/model-providers/model_providers/core/model_runtime/model_providers/zhipuai/text_embedding/text_embedding.py b/model-providers/model_providers/core/model_runtime/model_providers/zhipuai/text_embedding/text_embedding.py
index af125b90..cd870b11 100644
--- a/model-providers/model_providers/core/model_runtime/model_providers/zhipuai/text_embedding/text_embedding.py
+++ b/model-providers/model_providers/core/model_runtime/model_providers/zhipuai/text_embedding/text_embedding.py
@@ -1,5 +1,9 @@
import time
-from typing import Optional
+from typing import List, Optional, Tuple
+
+from zhipuai import (
+ ZhipuAI,
+)
from model_providers.core.model_runtime.entities.model_entities import PriceType
from model_providers.core.model_runtime.entities.text_embedding_entities import (
@@ -15,9 +19,6 @@ from model_providers.core.model_runtime.model_providers.__base.text_embedding_mo
from model_providers.core.model_runtime.model_providers.zhipuai._common import (
_CommonZhipuaiAI,
)
-from zhipuai import (
- ZhipuAI,
-)
class ZhipuAITextEmbeddingModel(_CommonZhipuaiAI, TextEmbeddingModel):
@@ -29,7 +30,7 @@ class ZhipuAITextEmbeddingModel(_CommonZhipuaiAI, TextEmbeddingModel):
self,
model: str,
credentials: dict,
- texts: list[str],
+ texts: List[str],
user: Optional[str] = None,
) -> TextEmbeddingResult:
"""
@@ -54,7 +55,7 @@ class ZhipuAITextEmbeddingModel(_CommonZhipuaiAI, TextEmbeddingModel):
model=model,
)
- def get_num_tokens(self, model: str, credentials: dict, texts: list[str]) -> int:
+ def get_num_tokens(self, model: str, credentials: dict, texts: List[str]) -> int:
"""
Get number of tokens for given prompt messages
@@ -95,8 +96,8 @@ class ZhipuAITextEmbeddingModel(_CommonZhipuaiAI, TextEmbeddingModel):
raise CredentialsValidateFailedError(str(ex))
def embed_documents(
- self, model: str, client: ZhipuAI, texts: list[str]
- ) -> tuple[list[list[float]], int]:
+ self, model: str, client: ZhipuAI, texts: List[str]
+ ) -> Tuple[List[List[float]], int]:
"""Call out to ZhipuAI's embedding endpoint.
Args:
@@ -116,17 +117,6 @@ class ZhipuAITextEmbeddingModel(_CommonZhipuaiAI, TextEmbeddingModel):
return [list(map(float, e)) for e in embeddings], embedding_used_tokens
- def embed_query(self, text: str) -> list[float]:
- """Call out to ZhipuAI's embedding endpoint.
-
- Args:
- text: The text to embed.
-
- Returns:
- Embeddings for the text.
- """
- return self.embed_documents([text])[0]
-
def _calc_response_usage(
self, model: str, credentials: dict, tokens: int
) -> EmbeddingUsage:
diff --git a/model-providers/model_providers/core/model_runtime/schema_validators/common_validator.py b/model-providers/model_providers/core/model_runtime/schema_validators/common_validator.py
index 8d56fb65..4b2ee2ee 100644
--- a/model-providers/model_providers/core/model_runtime/schema_validators/common_validator.py
+++ b/model-providers/model_providers/core/model_runtime/schema_validators/common_validator.py
@@ -1,4 +1,4 @@
-from typing import Optional
+from typing import List, Optional
from model_providers.core.model_runtime.entities.provider_entities import (
CredentialFormSchema,
@@ -8,7 +8,7 @@ from model_providers.core.model_runtime.entities.provider_entities import (
class CommonValidator:
def _validate_and_filter_credential_form_schemas(
- self, credential_form_schemas: list[CredentialFormSchema], credentials: dict
+ self, credential_form_schemas: List[CredentialFormSchema], credentials: dict
) -> dict:
need_validate_credential_form_schema_map = {}
for credential_form_schema in credential_form_schemas:
diff --git a/model-providers/model_providers/core/model_runtime/utils/encoders.py b/model-providers/model_providers/core/model_runtime/utils/encoders.py
index 7c98c5e0..cea96079 100644
--- a/model-providers/model_providers/core/model_runtime/utils/encoders.py
+++ b/model-providers/model_providers/core/model_runtime/utils/encoders.py
@@ -54,7 +54,7 @@ def decimal_encoder(dec_value: Decimal) -> Union[int, float]:
return float(dec_value)
-ENCODERS_BY_TYPE: dict[type[Any], Callable[[Any], Any]] = {
+ENCODERS_BY_TYPE: Dict[type[Any], Callable[[Any], Any]] = {
bytes: lambda o: o.decode(),
Color: str,
datetime.date: isoformat,
@@ -85,9 +85,9 @@ ENCODERS_BY_TYPE: dict[type[Any], Callable[[Any], Any]] = {
def generate_encoders_by_class_tuples(
- type_encoder_map: dict[Any, Callable[[Any], Any]],
-) -> dict[Callable[[Any], Any], tuple[Any, ...]]:
- encoders_by_class_tuples: dict[Callable[[Any], Any], tuple[Any, ...]] = defaultdict(
+ type_encoder_map: Dict[Any, Callable[[Any], Any]],
+) -> Dict[Callable[[Any], Any], tuple[Any, ...]]:
+ encoders_by_class_tuples: Dict[Callable[[Any], Any], tuple[Any, ...]] = defaultdict(
tuple
)
for type_, encoder in type_encoder_map.items():
@@ -117,7 +117,7 @@ def jsonable_encoder(
return encoder_instance(obj)
if isinstance(obj, BaseModel):
# TODO: remove when deprecating Pydantic v1
- encoders: dict[Any, Any] = {}
+ encoders: Dict[Any, Any] = {}
if not PYDANTIC_V2:
encoders = getattr(obj.__config__, "json_encoders", {}) # type: ignore[attr-defined]
if custom_encoder:
@@ -217,7 +217,7 @@ def jsonable_encoder(
try:
data = dict(obj)
except Exception as e:
- errors: list[Exception] = []
+ errors: List[Exception] = []
errors.append(e)
try:
data = vars(obj)
diff --git a/model-providers/model_providers/core/provider_manager.py b/model-providers/model_providers/core/provider_manager.py
index e8703e45..ad511337 100644
--- a/model-providers/model_providers/core/provider_manager.py
+++ b/model-providers/model_providers/core/provider_manager.py
@@ -1,9 +1,7 @@
import json
from collections import defaultdict
from json import JSONDecodeError
-from typing import Optional, Union
-
-from sqlalchemy.exc import IntegrityError
+from typing import List, Optional, Union
from model_providers.core.entities.model_entities import (
DefaultModelEntity,
@@ -201,7 +199,7 @@ class ProviderManager:
self,
provider_entity: ProviderEntity,
provider_credentials: dict,
- provider_model_records: list[dict],
+ provider_model_records: List[dict],
) -> CustomConfiguration:
"""
Convert to custom configuration.
@@ -266,8 +264,8 @@ class ProviderManager:
)
def _extract_variables(
- self, credential_form_schemas: list[CredentialFormSchema]
- ) -> list[str]:
+ self, credential_form_schemas: List[CredentialFormSchema]
+ ) -> List[str]:
"""
Extract input form variables.
diff --git a/model-providers/model_providers/core/utils/position_helper.py b/model-providers/model_providers/core/utils/position_helper.py
index 55fd754c..f6c14d81 100644
--- a/model-providers/model_providers/core/utils/position_helper.py
+++ b/model-providers/model_providers/core/utils/position_helper.py
@@ -1,8 +1,6 @@
import logging
import os
-from collections import OrderedDict
-from collections.abc import Callable
-from typing import Any, AnyStr
+from typing import Any, AnyStr, Callable, Dict, List, OrderedDict
import yaml
@@ -10,7 +8,7 @@ import yaml
def get_position_map(
folder_path: AnyStr,
file_name: str = "_position.yaml",
-) -> dict[str, int]:
+) -> Dict[str, int]:
"""
Get the mapping from name to index from a YAML file
:param folder_path:
@@ -37,10 +35,10 @@ def get_position_map(
def sort_by_position_map(
- position_map: dict[str, int],
- data: list[Any],
+ position_map: Dict[str, int],
+ data: List[Any],
name_func: Callable[[Any], str],
-) -> list[Any]:
+) -> List[Any]:
"""
Sort the objects by the position map.
If the name of the object is not in the position map, it will be put at the end.
@@ -56,8 +54,8 @@ def sort_by_position_map(
def sort_to_dict_by_position_map(
- position_map: dict[str, int],
- data: list[Any],
+ position_map: Dict[str, int],
+ data: List[Any],
name_func: Callable[[Any], str],
) -> OrderedDict[str, Any]:
"""