GT AI OS Community v2.0.33 - Add NVIDIA NIM and Nemotron agents
- Updated python_coding_microproject.csv to use NVIDIA NIM Kimi K2 - Updated kali_linux_shell_simulator.csv to use NVIDIA NIM Kimi K2 - Made more general-purpose (flexible targets, expanded tools) - Added nemotron-mini-agent.csv for fast local inference via Ollama - Added nemotron-agent.csv for advanced reasoning via Ollama - Added wiki page: Projects for NVIDIA NIMs and Nemotron
This commit is contained in:
76
apps/resource-cluster/app/providers/__init__.py
Normal file
76
apps/resource-cluster/app/providers/__init__.py
Normal file
@@ -0,0 +1,76 @@
|
||||
"""
|
||||
GT 2.0 Resource Cluster Providers
|
||||
|
||||
External AI model providers for the resource cluster.
|
||||
"""
|
||||
|
||||
from typing import Dict, Any, Optional
|
||||
import logging
|
||||
|
||||
from .external_provider import ExternalProvider
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class ProviderFactory:
|
||||
"""Factory for creating provider instances dynamically"""
|
||||
|
||||
def __init__(self):
|
||||
self.providers = {}
|
||||
self.initialized = False
|
||||
|
||||
async def initialize(self):
|
||||
"""Initialize all providers"""
|
||||
if self.initialized:
|
||||
return
|
||||
|
||||
try:
|
||||
# Initialize external provider (BGE-M3)
|
||||
external_provider = ExternalProvider()
|
||||
await external_provider.initialize()
|
||||
self.providers["external"] = external_provider
|
||||
|
||||
logger.info("Provider factory initialized successfully")
|
||||
self.initialized = True
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to initialize provider factory: {e}")
|
||||
raise
|
||||
|
||||
def get_provider(self, provider_name: str) -> Optional[Any]:
|
||||
"""Get provider instance by name"""
|
||||
return self.providers.get(provider_name)
|
||||
|
||||
def list_providers(self) -> Dict[str, Any]:
|
||||
"""List all available providers"""
|
||||
return {
|
||||
name: {
|
||||
"name": provider.name if hasattr(provider, "name") else name,
|
||||
"status": "initialized" if provider else "error"
|
||||
}
|
||||
for name, provider in self.providers.items()
|
||||
}
|
||||
|
||||
|
||||
# Global provider factory instance
|
||||
_provider_factory = None
|
||||
|
||||
|
||||
async def get_provider_factory() -> ProviderFactory:
|
||||
"""Get initialized provider factory"""
|
||||
global _provider_factory
|
||||
if _provider_factory is None:
|
||||
_provider_factory = ProviderFactory()
|
||||
await _provider_factory.initialize()
|
||||
return _provider_factory
|
||||
|
||||
|
||||
def get_external_provider():
|
||||
"""Get external provider instance (synchronous)"""
|
||||
global _provider_factory
|
||||
if _provider_factory and "external" in _provider_factory.providers:
|
||||
return _provider_factory.providers["external"]
|
||||
return None
|
||||
|
||||
|
||||
__all__ = ["ExternalProvider", "ProviderFactory", "get_provider_factory", "get_external_provider"]
|
||||
Reference in New Issue
Block a user