mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-07-16 23:01:06 +02:00
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:
parent
e32413588e
commit
2ff7ea4cb6
10 changed files with 273 additions and 2 deletions
|
|
@ -27,6 +27,7 @@ export { default as PerplexityIcon } from "./perplexity.svg";
|
|||
export { default as QwenIcon } from "./qwen.svg";
|
||||
export { default as RecraftIcon } from "./recraft.svg";
|
||||
export { default as ReplicateIcon } from "./replicate.svg";
|
||||
export { default as RequestyIcon } from "./requesty.svg";
|
||||
export { default as SambaNovaIcon } from "./sambanova.svg";
|
||||
export { default as TogetherAiIcon } from "./togetherai.svg";
|
||||
export { default as VertexAiIcon } from "./vertexai.svg";
|
||||
|
|
|
|||
1
surfsense_web/components/icons/providers/requesty.svg
Normal file
1
surfsense_web/components/icons/providers/requesty.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M14.5 2a1 1 0 000 2h2.086l-5.293 5.293a1 1 0 001.414 1.414L18 5.414V7.5a1 1 0 102 0v-4.5a1 1 0 00-1-1h-4.5zM4 6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4a1 1 0 10-2 0v4H4V8h4a1 1 0 000-2H4z"></path></svg>
|
||||
|
After Width: | Height: | Size: 318 B |
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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" },
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue