Spaces:
Sleeping
Sleeping
import aiohttp | |
from typing import List, Dict, Any | |
async def fetch_openrouter_models() -> List[Dict[str, Any]]: | |
""" | |
Asynchronously fetch available models from the OpenRouter API. | |
Returns: | |
A list of dictionaries containing model information. | |
Empty list if the request fails. | |
""" | |
# Define the endpoint | |
models_endpoint = "https://openrouter.ai/api/v1/models" | |
try: | |
# Prepare headers | |
headers = { | |
"Content-Type": "application/json" | |
} | |
# Make the async request | |
async with aiohttp.ClientSession() as session: | |
async with session.get(models_endpoint, headers=headers) as response: | |
# Check if request was successful | |
if response.status == 200: | |
data = await response.json() | |
return data.get("data", []) | |
else: | |
error_text = await response.text() | |
print(f"Error fetching models: HTTP {response.status} - {error_text}") | |
return [] | |
except Exception as e: | |
print(f"Error fetching models: {str(e)}") | |
return [] | |
async def list_openrouter_models_summary() -> List[Dict[str, Any]]: | |
""" | |
Asynchronously returns a simplified list of available OpenRouter models with key information. | |
Returns: | |
A list of dictionaries with model ID, name, context length, and pricing. | |
""" | |
models = await fetch_openrouter_models() | |
summary = [] | |
for model in models: | |
summary.append({ | |
"id": model.get("id"), | |
"name": model.get("name"), | |
"context_length": model.get("context_length"), | |
"modality": model.get("architecture", {}).get("modality"), | |
"pricing": { | |
"prompt": model.get("pricing", {}).get("prompt"), | |
"completion": model.get("pricing", {}).get("completion") | |
} | |
}) | |
return summary |