Files
gt-ai-os-community/apps/resource-cluster/app/providers/__init__.py
HackWeasel 310491a557 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
2025-12-12 17:47:14 -05:00

76 lines
2.2 KiB
Python

"""
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"]