Coverage for src / local_deep_research / llm / providers / implementations / openrouter.py: 92%
24 statements
« prev ^ index » next coverage.py v7.12.0, created at 2026-01-11 07:37 +0000
« prev ^ index » next coverage.py v7.12.0, created at 2026-01-11 07:37 +0000
1"""OpenRouter LLM provider for Local Deep Research."""
3from loguru import logger
5from ...llm_registry import register_llm
6from ..openai_base import OpenAICompatibleProvider
9class OpenRouterProvider(OpenAICompatibleProvider):
10 """OpenRouter provider using OpenAI-compatible endpoint.
12 OpenRouter provides access to many different models through a unified
13 OpenAI-compatible API, automatically supporting all current and future
14 models without needing code updates.
15 """
17 provider_name = "OpenRouter"
18 api_key_setting = "llm.openrouter.api_key"
19 default_base_url = "https://openrouter.ai/api/v1"
20 default_model = (
21 "meta-llama/llama-3.2-3b-instruct:free" # A free model as default
22 )
24 # Metadata for auto-discovery
25 provider_key = "OPENROUTER"
26 company_name = "OpenRouter"
27 region = "US"
28 country = "United States"
29 data_location = "United States"
30 is_cloud = True
32 @classmethod
33 def requires_auth_for_models(cls):
34 """OpenRouter doesn't require authentication for listing models."""
35 return False
38# Keep the standalone functions for backward compatibility and registration
39def create_openrouter_llm(model_name=None, temperature=0.7, **kwargs):
40 """Factory function for OpenRouter LLMs using OpenAI-compatible endpoint.
42 Args:
43 model_name: Name of the model to use (e.g., "openai/gpt-4", "anthropic/claude-3-opus", etc.)
44 temperature: Model temperature (0.0-1.0)
45 **kwargs: Additional arguments including settings_snapshot
47 Returns:
48 A configured ChatOpenAI instance pointing to OpenRouter's API
50 Raises:
51 ValueError: If OpenRouter API key is not configured
52 """
53 return OpenRouterProvider.create_llm(model_name, temperature, **kwargs)
56def is_openrouter_available(settings_snapshot=None):
57 """Check if OpenRouter is available.
59 Args:
60 settings_snapshot: Optional settings snapshot to use
62 Returns:
63 True if OpenRouter API key is configured, False otherwise
64 """
65 return OpenRouterProvider.is_available(settings_snapshot)
68def register_openrouter_provider():
69 """Register the OpenRouter provider with the LLM registry."""
70 register_llm("openrouter", create_openrouter_llm)
71 logger.info("Registered OpenRouter LLM provider")