abstractcore 2.6.3__py3-none-any.whl → 2.6.6__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.
- abstractcore/media/utils/image_scaler.py +6 -6
- abstractcore/providers/__init__.py +4 -0
- abstractcore/providers/openai_compatible_provider.py +829 -0
- abstractcore/providers/registry.py +37 -1
- abstractcore/providers/vllm_provider.py +823 -0
- abstractcore/server/app.py +22 -2
- abstractcore/utils/version.py +1 -1
- abstractcore/utils/vlm_token_calculator.py +7 -1
- {abstractcore-2.6.3.dist-info → abstractcore-2.6.6.dist-info}/METADATA +50 -20
- {abstractcore-2.6.3.dist-info → abstractcore-2.6.6.dist-info}/RECORD +14 -12
- {abstractcore-2.6.3.dist-info → abstractcore-2.6.6.dist-info}/WHEEL +0 -0
- {abstractcore-2.6.3.dist-info → abstractcore-2.6.6.dist-info}/entry_points.txt +0 -0
- {abstractcore-2.6.3.dist-info → abstractcore-2.6.6.dist-info}/licenses/LICENSE +0 -0
- {abstractcore-2.6.3.dist-info → abstractcore-2.6.6.dist-info}/top_level.txt +0 -0
|
@@ -136,6 +136,36 @@ class ProviderRegistry:
|
|
|
136
136
|
import_path="..providers.huggingface_provider"
|
|
137
137
|
))
|
|
138
138
|
|
|
139
|
+
# vLLM Provider
|
|
140
|
+
self.register_provider(ProviderInfo(
|
|
141
|
+
name="vllm",
|
|
142
|
+
display_name="vLLM",
|
|
143
|
+
provider_class=None,
|
|
144
|
+
description="High-throughput GPU inference with guided decoding, Multi-LoRA, and beam search",
|
|
145
|
+
default_model="Qwen/Qwen3-Coder-30B-A3B-Instruct",
|
|
146
|
+
supported_features=["chat", "completion", "embeddings", "prompted_tools", "streaming",
|
|
147
|
+
"structured_output", "guided_decoding", "multi_lora", "beam_search"],
|
|
148
|
+
authentication_required=False, # Optional API key
|
|
149
|
+
local_provider=True,
|
|
150
|
+
installation_extras="vllm",
|
|
151
|
+
import_path="..providers.vllm_provider"
|
|
152
|
+
))
|
|
153
|
+
|
|
154
|
+
# OpenAI-Compatible Generic Provider
|
|
155
|
+
self.register_provider(ProviderInfo(
|
|
156
|
+
name="openai-compatible",
|
|
157
|
+
display_name="OpenAI-Compatible",
|
|
158
|
+
provider_class=None,
|
|
159
|
+
description="Generic provider for any OpenAI-compatible API endpoint (llama.cpp, text-generation-webui, LocalAI, etc.)",
|
|
160
|
+
default_model="default",
|
|
161
|
+
supported_features=["chat", "completion", "embeddings", "prompted_tools", "streaming",
|
|
162
|
+
"structured_output"],
|
|
163
|
+
authentication_required=False, # Optional API key
|
|
164
|
+
local_provider=True,
|
|
165
|
+
installation_extras=None, # No extra dependencies
|
|
166
|
+
import_path="..providers.openai_compatible_provider"
|
|
167
|
+
))
|
|
168
|
+
|
|
139
169
|
|
|
140
170
|
def register_provider(self, provider_info: ProviderInfo):
|
|
141
171
|
"""Register a provider in the registry."""
|
|
@@ -187,6 +217,12 @@ class ProviderRegistry:
|
|
|
187
217
|
elif provider_info.name == "huggingface":
|
|
188
218
|
from ..providers.huggingface_provider import HuggingFaceProvider
|
|
189
219
|
return HuggingFaceProvider
|
|
220
|
+
elif provider_info.name == "vllm":
|
|
221
|
+
from ..providers.vllm_provider import VLLMProvider
|
|
222
|
+
return VLLMProvider
|
|
223
|
+
elif provider_info.name == "openai-compatible":
|
|
224
|
+
from ..providers.openai_compatible_provider import OpenAICompatibleProvider
|
|
225
|
+
return OpenAICompatibleProvider
|
|
190
226
|
else:
|
|
191
227
|
raise ImportError(f"No import logic for provider: {provider_info.name}")
|
|
192
228
|
except ImportError as e:
|
|
@@ -215,7 +251,7 @@ class ProviderRegistry:
|
|
|
215
251
|
provider_class = self.get_provider_class(provider_name)
|
|
216
252
|
|
|
217
253
|
# Handle providers that need instance for model listing
|
|
218
|
-
if provider_name in ["anthropic", "ollama", "lmstudio"]:
|
|
254
|
+
if provider_name in ["anthropic", "ollama", "lmstudio", "openai-compatible"]:
|
|
219
255
|
provider_info = self.get_provider_info(provider_name)
|
|
220
256
|
# Create minimal instance for API access
|
|
221
257
|
instance = provider_class(model=provider_info.default_model, **kwargs)
|