diff --git a/doc/en-US/model-providers.md b/doc/en-US/model-providers.md index db721814..735fab6f 100644 --- a/doc/en-US/model-providers.md +++ b/doc/en-US/model-providers.md @@ -29,6 +29,7 @@ Sdcb Chats supports 22+ mainstream AI model providers. Here is the complete list | 20 | Anthropic | [2025-11-24](https://github.com/sdcb/chats/commit/22ebef98) | ✅ | | 21 | Xiaomi Mimo | [2025-12-17](https://github.com/sdcb/chats/commit/026f1a4e) | ✅ | | 22 | Novita AI | [2026-03-13](https://github.com/sdcb/chats/commit/cecfc66d) | ✅ | +| 23 | Requesty | [2026-07-04](https://requesty.ai) | ❓ | ## Notes diff --git a/doc/zh-CN/model-providers.md b/doc/zh-CN/model-providers.md index d7f1af65..e7734663 100644 --- a/doc/zh-CN/model-providers.md +++ b/doc/zh-CN/model-providers.md @@ -29,6 +29,7 @@ Sdcb Chats 支持 22+ 主流 AI 模型服务商,以下是完整列表: | 20 | Anthropic | [2025-11-24](https://github.com/sdcb/chats/commit/22ebef98) | ✅ | | 21 | 小米Mimo | [2025-12-17](https://github.com/sdcb/chats/commit/026f1a4e) | ✅ | | 22 | Novita AI | [2026-03-13](https://github.com/sdcb/chats/commit/cecfc66d) | ✅ | +| 23 | Requesty | [2026-07-04](https://requesty.ai) | ❓ | ## 注意事项 diff --git a/src/BE/db/Enums/DBModelProvider.cs b/src/BE/db/Enums/DBModelProvider.cs index 099a48fa..bbc9cfb6 100644 --- a/src/BE/db/Enums/DBModelProvider.cs +++ b/src/BE/db/Enums/DBModelProvider.cs @@ -25,4 +25,5 @@ public enum DBModelProvider Anthropic = 20, Mimo = 21, Novita = 22, + Requesty = 23, } diff --git a/src/BE/web/DB/ModelProviderInfo.cs b/src/BE/web/DB/ModelProviderInfo.cs index a88c81a8..5b516005 100644 --- a/src/BE/web/DB/ModelProviderInfo.cs +++ b/src/BE/web/DB/ModelProviderInfo.cs @@ -156,6 +156,12 @@ private record ProviderInfo( "https://api.novita.ai/openai", "" ), + [DBModelProvider.Requesty] = new( + DBModelProvider.Requesty, + "Requesty", + "https://router.requesty.ai/v1", + "rqsty-sk-***" + ), }; private static readonly Dictionary _nameToIdMap = _providers diff --git a/src/BE/web/Program.cs b/src/BE/web/Program.cs index 42c38bc5..4bf5778d 100644 --- a/src/BE/web/Program.cs +++ b/src/BE/web/Program.cs @@ -81,6 +81,7 @@ public static async Task Main(string[] args) builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); + builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); diff --git a/src/BE/web/Services/Models/ChatServices/ChatFactory.cs b/src/BE/web/Services/Models/ChatServices/ChatFactory.cs index 53347272..6e92a824 100644 --- a/src/BE/web/Services/Models/ChatServices/ChatFactory.cs +++ b/src/BE/web/Services/Models/ChatServices/ChatFactory.cs @@ -46,6 +46,7 @@ public ChatService CreateChatService(Model model) DBModelProvider.SiliconFlow => sp.GetRequiredService(), DBModelProvider.TokenPony => sp.GetRequiredService(), DBModelProvider.OpenRouter => sp.GetRequiredService(), + DBModelProvider.Requesty => sp.GetRequiredService(), DBModelProvider.Novita => sp.GetRequiredService(), _ => sp.GetRequiredService() // Fallback to OpenAI-compatible }, diff --git a/src/BE/web/Services/Models/ChatServices/OpenAI/RequestyChatService.cs b/src/BE/web/Services/Models/ChatServices/OpenAI/RequestyChatService.cs new file mode 100644 index 00000000..fc4a3484 --- /dev/null +++ b/src/BE/web/Services/Models/ChatServices/OpenAI/RequestyChatService.cs @@ -0,0 +1,13 @@ +using Chats.DB; + +namespace Chats.BE.Services.Models.ChatServices.OpenAI; + +public class RequestyChatService(IHttpClientFactory httpClientFactory, HostUrlService hostUrlService) : ChatCompletionService(httpClientFactory) +{ + protected override void AddAuthorizationHeader(HttpRequestMessage request, ModelKeySnapshot modelKey) + { + base.AddAuthorizationHeader(request, modelKey); + request.Headers.Add("X-Title", "Sdcb Chats"); + request.Headers.Add("HTTP-Referer", hostUrlService.GetFEUrl()); + } +} diff --git a/src/FE/public/logos/requesty.svg b/src/FE/public/logos/requesty.svg new file mode 100644 index 00000000..556b978d --- /dev/null +++ b/src/FE/public/logos/requesty.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/FE/types/model.ts b/src/FE/types/model.ts index 79e80350..2763fd77 100644 --- a/src/FE/types/model.ts +++ b/src/FE/types/model.ts @@ -28,6 +28,7 @@ export enum DBModelProvider { Anthropic = 20, Mimo = 21, Novita = 22, + Requesty = 23, } export type FEModelProvider = { @@ -136,6 +137,12 @@ export const feModelProviders: FEModelProvider[] = [ name: 'Novita AI', icon: '/logos/novita.svg', }, + { + id: DBModelProvider.Requesty, + name: 'Requesty', + icon: '/logos/requesty.svg', + allowWebSearch: true, + }, ]; export interface ChatModelFileConfig {