vectorvein 0.2.83__py3-none-any.whl → 0.2.84__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -60,12 +60,8 @@ class Backends(BaseModel):
60
60
 
61
61
 
62
62
  class Settings(BaseModel):
63
- VERSION: Optional[str] = Field(
64
- default="2", description="Configuration version. If provided, will use the corresponding format."
65
- )
66
- endpoints: List[EndpointSetting] = Field(
67
- default_factory=list, description="Available endpoints for the LLM service."
68
- )
63
+ VERSION: Optional[str] = Field(default="2", description="Configuration version. If provided, will use the corresponding format.")
64
+ endpoints: List[EndpointSetting] = Field(default_factory=list, description="Available endpoints for the LLM service.")
69
65
  token_server: Optional[Server] = Field(default=None, description="Token server address. Format: host:port")
70
66
  rate_limit: Optional[RateLimitConfig] = Field(default=None, description="Rate limit settings.")
71
67
 
@@ -73,32 +69,22 @@ class Settings(BaseModel):
73
69
  backends: Optional[Backends] = Field(default=None, description="All model backends in one place (V2 format).")
74
70
 
75
71
  # V1 format: each model backend config
76
- anthropic: Optional[BackendSettings] = Field(
77
- default_factory=BackendSettings, description="Anthropic models settings."
78
- )
79
- deepseek: Optional[BackendSettings] = Field(
80
- default_factory=BackendSettings, description="Deepseek models settings."
81
- )
72
+ anthropic: Optional[BackendSettings] = Field(default_factory=BackendSettings, description="Anthropic models settings.")
73
+ deepseek: Optional[BackendSettings] = Field(default_factory=BackendSettings, description="Deepseek models settings.")
82
74
  gemini: Optional[BackendSettings] = Field(default_factory=BackendSettings, description="Gemini models settings.")
83
75
  groq: Optional[BackendSettings] = Field(default_factory=BackendSettings, description="Groq models settings.")
84
76
  local: Optional[BackendSettings] = Field(default_factory=BackendSettings, description="Local models settings.")
85
77
  minimax: Optional[BackendSettings] = Field(default_factory=BackendSettings, description="Minimax models settings.")
86
78
  mistral: Optional[BackendSettings] = Field(default_factory=BackendSettings, description="Mistral models settings.")
87
- moonshot: Optional[BackendSettings] = Field(
88
- default_factory=BackendSettings, description="Moonshot models settings."
89
- )
79
+ moonshot: Optional[BackendSettings] = Field(default_factory=BackendSettings, description="Moonshot models settings.")
90
80
  openai: Optional[BackendSettings] = Field(default_factory=BackendSettings, description="OpenAI models settings.")
91
81
  qwen: Optional[BackendSettings] = Field(default_factory=BackendSettings, description="Qwen models settings.")
92
82
  yi: Optional[BackendSettings] = Field(default_factory=BackendSettings, description="Yi models settings.")
93
83
  zhipuai: Optional[BackendSettings] = Field(default_factory=BackendSettings, description="Zhipuai models settings.")
94
- baichuan: Optional[BackendSettings] = Field(
95
- default_factory=BackendSettings, description="Baichuan models settings."
96
- )
84
+ baichuan: Optional[BackendSettings] = Field(default_factory=BackendSettings, description="Baichuan models settings.")
97
85
  stepfun: Optional[BackendSettings] = Field(default_factory=BackendSettings, description="StepFun models settings.")
98
86
  xai: Optional[BackendSettings] = Field(default_factory=BackendSettings, description="XAI models settings.")
99
- ernie: Optional[BackendSettings] = Field(
100
- default_factory=BackendSettings, description="Baidu Ernie models settings."
101
- )
87
+ ernie: Optional[BackendSettings] = Field(default_factory=BackendSettings, description="Baidu Ernie models settings.")
102
88
 
103
89
  def __init__(self, **data):
104
90
  model_types = {
@@ -143,6 +129,9 @@ class Settings(BaseModel):
143
129
  user_models = backends[model_type].get("models", {})
144
130
  model_settings = BackendSettings()
145
131
  model_settings.update_models(default_models, user_models)
132
+ default_endpoint = backends[model_type].get("default_endpoint", None)
133
+ if default_endpoint is not None:
134
+ model_settings.default_endpoint = default_endpoint
146
135
  backends[model_type] = model_settings
147
136
  else:
148
137
  backends[model_type] = BackendSettings(models=default_models)
@@ -101,9 +101,7 @@ class EndpointSetting(BaseModel):
101
101
 
102
102
  class ModelSetting(BaseModel):
103
103
  id: str = Field(..., description="The id of the model.")
104
- endpoints: List[Union[str, EndpointOptionDict]] = Field(
105
- default_factory=list, description="Available endpoints for the model."
106
- )
104
+ endpoints: List[Union[str, EndpointOptionDict]] = Field(default_factory=list, description="Available endpoints for the model.")
107
105
  function_call_available: bool = Field(False, description="Indicates if function call is available.")
108
106
  response_format_available: bool = Field(False, description="Indicates if response format is available.")
109
107
  native_multimodal: bool = Field(False, description="Indicates if the model is a native multimodal model.")
@@ -113,6 +111,16 @@ class ModelSetting(BaseModel):
113
111
 
114
112
  class BackendSettings(BaseModel):
115
113
  models: Dict[str, ModelSetting] = Field(default_factory=dict)
114
+ default_endpoint: Optional[str] = Field(default_factory=lambda: None, description="The default endpoint for the model.")
115
+
116
+ def get_model_setting(self, model_name: str) -> ModelSetting:
117
+ if model_name in self.models:
118
+ model_setting = self.models[model_name]
119
+ if len(model_setting.endpoints) == 0 and self.default_endpoint is not None:
120
+ model_setting.endpoints = [self.default_endpoint]
121
+ return model_setting
122
+ else:
123
+ raise ValueError(f"Model {model_name} not found in {self.models}")
116
124
 
117
125
  def update_models(self, default_models: Dict[str, Dict], input_models: Dict[str, Dict]):
118
126
  updated_models = {}
@@ -61,6 +61,7 @@ class BackendSettingsDict(TypedDict):
61
61
  """TypedDict representing the BackendSettings structure."""
62
62
 
63
63
  models: Dict[str, ModelConfigDict]
64
+ default_endpoint: NotRequired[Optional[str]]
64
65
 
65
66
 
66
67
  class EndpointSettingDict(TypedDict):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vectorvein
3
- Version: 0.2.83
3
+ Version: 0.2.84
4
4
  Summary: VectorVein Python SDK
5
5
  Author-Email: Anderson <andersonby@163.com>
6
6
  License: MIT
@@ -1,6 +1,6 @@
1
- vectorvein-0.2.83.dist-info/METADATA,sha256=_p3JvMcCL1vV4pyxPdxzvdtqEuyJk5sTAeLXcCM4AQo,4567
2
- vectorvein-0.2.83.dist-info/WHEEL,sha256=tSfRZzRHthuv7vxpI4aehrdN9scLjk-dCJkPLzkHxGg,90
3
- vectorvein-0.2.83.dist-info/entry_points.txt,sha256=6OYgBcLyFCUgeqLgnvMyOJxPCWzgy7se4rLPKtNonMs,34
1
+ vectorvein-0.2.84.dist-info/METADATA,sha256=kMut60wbAADgGMP32bt1tHyWzsGbWbIk3ILjGAOvD90,4567
2
+ vectorvein-0.2.84.dist-info/WHEEL,sha256=tSfRZzRHthuv7vxpI4aehrdN9scLjk-dCJkPLzkHxGg,90
3
+ vectorvein-0.2.84.dist-info/entry_points.txt,sha256=6OYgBcLyFCUgeqLgnvMyOJxPCWzgy7se4rLPKtNonMs,34
4
4
  vectorvein/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  vectorvein/api/__init__.py,sha256=lfY-XA46fgD2iIZTU0VYP8i07AwA03Egj4Qua0vUKrQ,738
6
6
  vectorvein/api/client.py,sha256=xF-leKDQzVyyy9FnIRaz0k4eElYW1XbbzeRLcpnyk90,33047
@@ -29,15 +29,15 @@ vectorvein/chat_clients/yi_client.py,sha256=RNf4CRuPJfixrwLZ3-DEc3t25QDe1mvZeb9s
29
29
  vectorvein/chat_clients/zhipuai_client.py,sha256=Ys5DSeLCuedaDXr3PfG1EW2zKXopt-awO2IylWSwY0s,519
30
30
  vectorvein/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
31
31
  vectorvein/server/token_server.py,sha256=36F9PKSNOX8ZtYBXY_l-76GQTpUSmQ2Y8EMy1H7wtdQ,1353
32
- vectorvein/settings/__init__.py,sha256=3Kw3hbvqcIQepAR6Q2m2UXbBnwyJTUm8yAz-aHmbUTg,11163
32
+ vectorvein/settings/__init__.py,sha256=_2783EWi-QRKp7OuxDg-rxj-gezfyb1h0hTcb-F4xS4,11260
33
33
  vectorvein/settings/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
34
  vectorvein/types/__init__.py,sha256=ypg8c8AwF49FrFBMqmgH_eIBH4LFf0KN4kjqQa7zrvM,3376
35
35
  vectorvein/types/defaults.py,sha256=zaUusjyOaPJV-a-e-zOIpNljxk_TSQO5gvnadls-fUY,37065
36
36
  vectorvein/types/enums.py,sha256=LplSVkXLBK-t8TWtJKj_f7ktWTd6CSHWRLb67XKMm54,1716
37
37
  vectorvein/types/exception.py,sha256=KtnqZ-1DstHm95SZAyZdHhkGq1bJ4A9Aw3Zfdu-VIFo,130
38
- vectorvein/types/llm_parameters.py,sha256=Bdz9E_x0G96rvJ5TnEFPrU5QV4I2y0YFv7dY4Pq-MuU,7933
38
+ vectorvein/types/llm_parameters.py,sha256=Fo_-_rFkBvl_dUsCZxy2xNMC9Q4qVGLzDBL9jRVbXIQ,8489
39
39
  vectorvein/types/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
- vectorvein/types/settings.py,sha256=zneZcebts-MHcYS1DXakulA_f0fGPzidOo1s9yl51zI,4794
40
+ vectorvein/types/settings.py,sha256=5wINBiT9qj3ZwDiE6Kf4r6wD3yY1bKN40xxZ7F6jEfI,4844
41
41
  vectorvein/utilities/media_processing.py,sha256=7KtbLFzOYIn1e9QTN9G6C76NH8CBlV9kfAgiRKEIeXY,6263
42
42
  vectorvein/utilities/rate_limiter.py,sha256=dwolIUVw2wP83Odqpx0AAaE77de1GzxkYDGH4tM_u_4,10300
43
43
  vectorvein/utilities/retry.py,sha256=6KFS9R2HdhqM3_9jkjD4F36ZSpEx2YNFGOVlpOsUetM,2208
@@ -65,4 +65,4 @@ vectorvein/workflow/utils/analyse.py,sha256=msmvyz35UTYTwqQR5sg9H0sm1vxmGDSmep9X
65
65
  vectorvein/workflow/utils/check.py,sha256=B_NdwqIqnc7Ko2HHqFpfOmWVaAu21tPITe0szKfiZKc,11414
66
66
  vectorvein/workflow/utils/json_to_code.py,sha256=P8dhhSNgKhTnW17qXNjLO2aLdb0rA8qMAWxhObol2TU,7295
67
67
  vectorvein/workflow/utils/layout.py,sha256=j0bRD3uaXu40xCS6U6BGahBI8FrHa5MiF55GbTrZ1LM,4565
68
- vectorvein-0.2.83.dist-info/RECORD,,
68
+ vectorvein-0.2.84.dist-info/RECORD,,