Skip to content

Commit 22ebef9

Browse files
committed
Add Anthropic(id=20) model provider
1 parent 9087002 commit 22ebef9

File tree

5 files changed

+49
-11
lines changed

5 files changed

+49
-11
lines changed

src/BE/Controllers/Admin/ModelProviders/ModelProvidersController.cs

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -131,20 +131,29 @@ public async Task<ActionResult> ReorderModelProviders([FromBody] ReorderRequest<
131131
.OrderBy(x => x.Order)
132132
.ToListAsync(cancellationToken);
133133

134-
// 如果 ModelProviderOrder 表为空,按 enum 值顺序初始化所有已定义的 Provider
135-
if (providerOrders.Count == 0)
134+
// 检查是否有新的 Provider 未在数据库中(包括初始化情况)
135+
List<short> allProviderIds = Enum.GetValues<DBModelProvider>().Select(p => (short)p).ToList();
136+
HashSet<short> existingProviderIds = providerOrders.Select(p => p.ModelProviderId).ToHashSet();
137+
List<short> missingProviderIds = allProviderIds.Where(id => !existingProviderIds.Contains(id)).ToList();
138+
139+
if (missingProviderIds.Count > 0)
136140
{
137-
List<ModelProviderOrder> allProviders = Enum.GetValues<DBModelProvider>()
138-
.Select((p, index) => new ModelProviderOrder
141+
short currentMaxOrder = providerOrders.Count > 0 ? providerOrders.Max(x => x.Order) : (short)-100;
142+
143+
foreach (var missingId in missingProviderIds)
144+
{
145+
currentMaxOrder += 100;
146+
var newProvider = new ModelProviderOrder
139147
{
140-
ModelProviderId = (short)p,
141-
Order = (short)(index * 100)
142-
})
143-
.ToList();
148+
ModelProviderId = missingId,
149+
Order = currentMaxOrder
150+
};
151+
providerOrders.Add(newProvider);
152+
db.ModelProviderOrders.Add(newProvider);
153+
}
144154

145-
db.ModelProviderOrders.AddRange(allProviders);
146-
await db.SaveChangesAsync(cancellationToken);
147-
providerOrders = allProviders.OrderBy(x => x.Order).ToList();
155+
// 确保列表按 Order 排序
156+
providerOrders = providerOrders.OrderBy(x => x.Order).ToList();
148157
}
149158

150159
// 获取当前的排序列表

src/BE/DB/Enums/DBModelProvider.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,5 @@ public enum DBModelProvider
2222
SiliconFlow = 17,
2323
OpenRouter = 18,
2424
TokenPony = 19,
25+
Anthropic = 20,
2526
}

src/BE/DB/ModelProviderInfo.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,12 @@ private record ProviderInfo(
136136
"https://api.tokenpony.cn/v1",
137137
"sk-"
138138
),
139+
[DBModelProvider.Anthropic] = new(
140+
DBModelProvider.Anthropic,
141+
"Anthropic",
142+
"https://api.anthropic.com/v1",
143+
"sk-ant-"
144+
),
139145
};
140146

141147
private static readonly Dictionary<string, DBModelProvider> _nameToIdMap = _providers

src/FE/public/logos/anthropic.svg

Lines changed: 16 additions & 0 deletions
Loading

src/FE/types/model.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ export enum DBModelProvider {
2525
SiliconFlow = 17,
2626
OpenRouter = 18,
2727
TokenPony = 19,
28+
Anthropic = 20,
2829
}
2930

3031
export type FEModelProvider = {
@@ -102,6 +103,11 @@ export const feModelProviders: FEModelProvider[] = [
102103
name: 'Token Pony',
103104
icon: '/logos/tokenpony.svg',
104105
},
106+
{
107+
id: DBModelProvider.Anthropic,
108+
name: 'Anthropic',
109+
icon: '/logos/anthropic.svg',
110+
},
105111
];
106112

107113
export interface ChatModelFileConfig {

0 commit comments

Comments
 (0)