Explorar o código

refactor(core): resolveServicePreset reads from providers first, legacy fallback

fanghanjun hai 6 meses
pai
achega
905620de51

+ 32 - 2
packages/core/src/llm/service-presets.ts

@@ -1,9 +1,11 @@
+import { getProvider } from "./providers/index.js";
+
 export interface ServicePreset {
 export interface ServicePreset {
   readonly providerFamily: "openai" | "anthropic";
   readonly providerFamily: "openai" | "anthropic";
   readonly api: string;
   readonly api: string;
   readonly baseUrl: string;
   readonly baseUrl: string;
   readonly label: string;
   readonly label: string;
-  readonly temperatureRange?: [number, number];
+  readonly temperatureRange?: readonly [number, number];
   readonly defaultTemperature?: number;
   readonly defaultTemperature?: number;
   readonly writingTemperature?: number;
   readonly writingTemperature?: number;
   readonly temperatureHint?: string;
   readonly temperatureHint?: string;
@@ -48,7 +50,35 @@ export const SERVICE_PRESETS: Record<string, ServicePreset> = {
 };
 };
 
 
 export function resolveServicePreset(service: string): ServicePreset | undefined {
 export function resolveServicePreset(service: string): ServicePreset | undefined {
-  return SERVICE_PRESETS[service];
+  const provider = getProvider(service);
+  const legacy = SERVICE_PRESETS[service];
+  if (!provider && !legacy) return undefined;
+
+  return {
+    providerFamily: legacy?.providerFamily ?? (provider?.api.startsWith("anthropic") ? "anthropic" : "openai"),
+    api: (provider?.api ?? legacy?.api ?? "openai-completions") as ServicePreset["api"],
+    baseUrl: provider?.baseUrl ?? legacy?.baseUrl ?? "",
+    label: provider?.label ?? legacy?.label ?? service,
+    ...(provider?.temperatureRange ?? legacy?.temperatureRange
+      ? { temperatureRange: provider?.temperatureRange ?? legacy?.temperatureRange }
+      : {}),
+    ...(provider?.defaultTemperature !== undefined || legacy?.defaultTemperature !== undefined
+      ? { defaultTemperature: provider?.defaultTemperature ?? legacy?.defaultTemperature }
+      : {}),
+    ...(provider?.writingTemperature !== undefined || legacy?.writingTemperature !== undefined
+      ? { writingTemperature: provider?.writingTemperature ?? legacy?.writingTemperature }
+      : {}),
+    ...(provider?.temperatureHint ?? legacy?.temperatureHint
+      ? { temperatureHint: provider?.temperatureHint ?? legacy?.temperatureHint }
+      : {}),
+    ...(legacy?.knownModels ? { knownModels: legacy.knownModels } : {}),
+    ...(provider?.piProvider ?? legacy?.piProvider
+      ? { piProvider: provider?.piProvider ?? legacy?.piProvider }
+      : {}),
+    ...(provider?.modelsBaseUrl ?? legacy?.modelsBaseUrl
+      ? { modelsBaseUrl: provider?.modelsBaseUrl ?? legacy?.modelsBaseUrl }
+      : {}),
+  };
 }
 }
 
 
 export function resolveServiceProviderFamily(service: string): "openai" | "anthropic" | undefined {
 export function resolveServiceProviderFamily(service: string): "openai" | "anthropic" | undefined {

+ 1 - 1
packages/core/src/llm/service-resolver.ts

@@ -7,7 +7,7 @@ export interface ResolvedModel {
   model: Model<Api>;
   model: Model<Api>;
   apiKey: string;
   apiKey: string;
   writingTemperature?: number;
   writingTemperature?: number;
-  temperatureRange?: [number, number];
+  temperatureRange?: readonly [number, number];
   temperatureHint?: string;
   temperatureHint?: string;
 }
 }