Просмотр исходного кода

feat(core): add providers/index.ts with getAllProviders / getProvider

fanghanjun 6 месяцев назад
Родитель
Сommit
71c23f181a
1 измененных файлов с 34 добавлено и 0 удалено
  1. 34 0
      packages/core/src/llm/providers/index.ts

+ 34 - 0
packages/core/src/llm/providers/index.ts

@@ -0,0 +1,34 @@
+import type { InkosProvider } from "./types.js";
+import { ANTHROPIC } from "./anthropic.js";
+import { OPENAI } from "./openai.js";
+import { GOOGLE } from "./google.js";
+import { DEEPSEEK } from "./deepseek.js";
+import { QWEN } from "./qwen.js";
+import { MINIMAX } from "./minimax.js";
+
+export type { InkosProvider, InkosModel, ApiProtocol } from "./types.js";
+
+/**
+ * 所有已注册 provider 的扁平列表。顺序定义了 lookup Layer 2 的遍历顺序,
+ * 但 Layer 2 还会按 PROVIDER_PRIORITY 显式排序,所以此处顺序不影响结果。
+ */
+const ALL_PROVIDERS: readonly InkosProvider[] = [
+  ANTHROPIC,
+  OPENAI,
+  GOOGLE,
+  DEEPSEEK,
+  QWEN,
+  MINIMAX,
+];
+
+const PROVIDERS_BY_ID: Map<string, InkosProvider> = new Map(
+  ALL_PROVIDERS.map((p) => [p.id, p]),
+);
+
+export function getAllProviders(): readonly InkosProvider[] {
+  return ALL_PROVIDERS;
+}
+
+export function getProvider(id: string): InkosProvider | undefined {
+  return PROVIDERS_BY_ID.get(id);
+}