| import aiohttp |
|
|
| from ...config.logfire_config import get_logger |
| from ..models import ModelSpec |
|
|
| logger = get_logger(__name__) |
|
|
|
|
| async def discover_google_models(api_key: str, session: aiohttp.ClientSession) -> list[ModelSpec]: |
| """1:1 Physical Parity Implementation from ProviderDiscoveryService.""" |
| models = [] |
| try: |
| model_specs = [ |
| ModelSpec( |
| "gemini-1.5-pro", |
| "google", |
| 2097152, |
| True, |
| True, |
| False, |
| None, |
| 1.25, |
| 5.00, |
| "Advanced reasoning and multimodal capabilities", |
| ), |
| ModelSpec( |
| "gemini-1.5-flash", |
| "google", |
| 1048576, |
| True, |
| True, |
| False, |
| None, |
| 0.075, |
| 0.30, |
| "Fast and versatile performance", |
| ), |
| ModelSpec( |
| "gemini-3.1-pro", |
| "google", |
| 2097152, |
| True, |
| True, |
| False, |
| None, |
| 1.25, |
| 5.00, |
| "Latest advanced reasoning model", |
| ), |
| ModelSpec( |
| "gemini-3.1-flash", |
| "google", |
| 1048576, |
| True, |
| True, |
| False, |
| None, |
| 0.10, |
| 0.40, |
| "Latest high-performance flash model", |
| ), |
| ModelSpec( |
| "gemini-3.1-flash-lite", "google", 1048576, True, True, False, None, 0.05, 0.20, "Ultra-fast lite model" |
| ), |
| ModelSpec( |
| "gemini-2.0-flash-lite-preview-02-05", |
| "google", |
| 1048576, |
| True, |
| True, |
| False, |
| None, |
| 0.05, |
| 0.20, |
| "Next-gen ultra-fast preview model", |
| ), |
| ModelSpec( |
| "gemini-1.0-pro", |
| "google", |
| 30720, |
| True, |
| False, |
| False, |
| None, |
| 0.50, |
| 1.50, |
| "Efficient model for text tasks", |
| ), |
| ModelSpec( |
| "text-embedding-004", |
| "google", |
| 2048, |
| False, |
| False, |
| True, |
| 768, |
| 0.00, |
| 0, |
| "Google's latest embedding model", |
| ), |
| ] |
|
|
| base_url = "https://generativelanguage.googleapis.com/v1beta/models" |
| headers = {"x-goog-api-key": api_key} |
|
|
| async with session.get(base_url, headers=headers) as response: |
| if response.status == 200: |
| models = model_specs |
| logger.info(f"Discovered {len(models)} Google models") |
| else: |
| logger.warning(f"Google API returned status {response.status}") |
| except Exception as e: |
| logger.error(f"Error discovering Google models: {e}") |
| return models |
|
|