tek Atrust
chore(deploy): build monolithic server for Hugging Face
d5ef46f
Raw
History Blame Contribute Delete
1.53 kB
import time
from typing import Any
import aiohttp
from ...config.logfire_config import get_logger
from .models import _CACHE_TTL_SECONDS
logger = get_logger(__name__)
_provider_cache: dict[str, tuple[Any, float]] = {}
class DiscoveryEngine:
"""Core logic for model caching and tool testing."""
@staticmethod
def get_cached_result(cache_key: str) -> Any | None:
if cache_key in _provider_cache:
result, timestamp = _provider_cache[cache_key]
if time.time() - timestamp < _CACHE_TTL_SECONDS:
return result
return None
@staticmethod
def cache_result(cache_key: str, result: Any) -> None:
_provider_cache[cache_key] = (result, time.time())
@staticmethod
async def test_tool_support(model_name: str, api_url: str, session: aiohttp.ClientSession) -> bool:
"""Physical test for function calling support."""
try:
# Short timeout for testing
async with session.post(
f"{api_url}/v1/chat/completions",
json={
"model": model_name,
"messages": [{"role": "user", "content": "test"}],
"tools": [{"type": "function", "function": {"name": "test", "parameters": {}}}],
"max_tokens": 1,
},
timeout=aiohttp.ClientTimeout(total=5),
) as response:
return bool(response.status == 200)
except Exception:
return False