feat: add Requesty as a model provider

Add Requesty (https://requesty.ai), an OpenAI-compatible LLM router, as a
model provider by mirroring the existing OpenRouter integration.

Backend:
- app/services/requesty_model_normalizer.py: normalizes Requesty's /v1/models
  catalogue, mapping its flat capability booleans (supports_tool_calling/
  supports_vision/supports_image_generation) and context_window field onto the
  shared normalized shape (Requesty differs from OpenRouter's architecture +
  supported_parameters + context_length layout)
- provider_registry.py: Requesty ProviderSpec (OpenAI-compatible, base URL
  https://router.requesty.ai/v1, REQUESTY_API_KEY bearer auth)
- model_connection_service.py: key verification + live model discovery
- quality_score.py: Requesty score entry
- unit tests mirroring the OpenRouter normalizer coverage

Frontend:
- Requesty provider icon + registration, metadata entry, and base-url hint

Signed-off-by: Thibault Jaigu <thibault.jaigu@gmail.com>
This commit is contained in:
Thibault Jaigu 2026-07-13 09:42:30 +01:00
parent e32413588e
commit 2ff7ea4cb6
10 changed files with 273 additions and 2 deletions

View file

@ -11,7 +11,12 @@ function baseUrlHint(provider: string) {
if (provider === "openai_compatible") {
return "Enter the full endpoint URL.";
}
if (provider === "openai" || provider === "anthropic" || provider === "openrouter") {
if (
provider === "openai" ||
provider === "anthropic" ||
provider === "openrouter" ||
provider === "requesty"
) {
return "Override only if you route through a proxy or gateway.";
}
return undefined;

View file

@ -7,6 +7,7 @@ export const PROVIDER_ORDER = [
"bedrock",
"azure",
"openrouter",
"requesty",
"ollama_chat",
"lm_studio",
"openai_compatible",
@ -43,6 +44,12 @@ export const PROVIDER_DISPLAY: Record<
iconKey: "openrouter",
defaultBaseUrl: "https://openrouter.ai/api/v1",
},
requesty: {
name: "Requesty",
subtitle: "Requesty",
iconKey: "requesty",
defaultBaseUrl: "https://router.requesty.ai/v1",
},
vertex_ai: { name: "Gemini", subtitle: "Google Cloud Vertex AI", iconKey: "vertex_ai" },
};