2026-03-16 19:51:55 -07:00
|
|
|
import {
|
2026-03-18 23:58:49 +00:00
|
|
|
applyProviderConfigWithDefaultModelsPreset,
|
2026-03-16 21:13:56 -07:00
|
|
|
type ModelApi,
|
|
|
|
|
type OpenClawConfig,
|
|
|
|
|
} from "openclaw/plugin-sdk/provider-onboard";
|
2026-03-16 19:51:55 -07:00
|
|
|
import {
|
|
|
|
|
buildQianfanProvider,
|
|
|
|
|
QIANFAN_BASE_URL,
|
|
|
|
|
QIANFAN_DEFAULT_MODEL_ID,
|
|
|
|
|
} from "./provider-catalog.js";
|
|
|
|
|
|
|
|
|
|
export const QIANFAN_DEFAULT_MODEL_REF = `qianfan/${QIANFAN_DEFAULT_MODEL_ID}`;
|
|
|
|
|
|
2026-03-18 23:58:49 +00:00
|
|
|
function resolveQianfanPreset(cfg: OpenClawConfig): {
|
|
|
|
|
api: ModelApi;
|
|
|
|
|
baseUrl: string;
|
|
|
|
|
defaultModels: NonNullable<ReturnType<typeof buildQianfanProvider>["models"]>;
|
|
|
|
|
} {
|
2026-03-16 19:51:55 -07:00
|
|
|
const defaultProvider = buildQianfanProvider();
|
|
|
|
|
const existingProvider = cfg.models?.providers?.qianfan as
|
|
|
|
|
| {
|
|
|
|
|
baseUrl?: unknown;
|
|
|
|
|
api?: unknown;
|
|
|
|
|
}
|
|
|
|
|
| undefined;
|
|
|
|
|
const existingBaseUrl =
|
|
|
|
|
typeof existingProvider?.baseUrl === "string" ? existingProvider.baseUrl.trim() : "";
|
2026-03-18 23:58:49 +00:00
|
|
|
const api =
|
2026-03-16 19:51:55 -07:00
|
|
|
typeof existingProvider?.api === "string"
|
|
|
|
|
? (existingProvider.api as ModelApi)
|
|
|
|
|
: "openai-completions";
|
|
|
|
|
|
2026-03-18 23:58:49 +00:00
|
|
|
return {
|
|
|
|
|
api,
|
|
|
|
|
baseUrl: existingBaseUrl || QIANFAN_BASE_URL,
|
2026-03-16 19:51:55 -07:00
|
|
|
defaultModels: defaultProvider.models ?? [],
|
2026-03-18 23:58:49 +00:00
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function applyQianfanPreset(cfg: OpenClawConfig, primaryModelRef?: string): OpenClawConfig {
|
|
|
|
|
const preset = resolveQianfanPreset(cfg);
|
|
|
|
|
return applyProviderConfigWithDefaultModelsPreset(cfg, {
|
|
|
|
|
providerId: "qianfan",
|
|
|
|
|
api: preset.api,
|
|
|
|
|
baseUrl: preset.baseUrl,
|
|
|
|
|
defaultModels: preset.defaultModels,
|
2026-03-16 19:51:55 -07:00
|
|
|
defaultModelId: QIANFAN_DEFAULT_MODEL_ID,
|
2026-03-18 23:58:49 +00:00
|
|
|
aliases: [{ modelRef: QIANFAN_DEFAULT_MODEL_REF, alias: "QIANFAN" }],
|
|
|
|
|
primaryModelRef,
|
2026-03-16 19:51:55 -07:00
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
2026-03-18 23:58:49 +00:00
|
|
|
export function applyQianfanProviderConfig(cfg: OpenClawConfig): OpenClawConfig {
|
|
|
|
|
return applyQianfanPreset(cfg);
|
|
|
|
|
}
|
|
|
|
|
|
2026-03-16 19:51:55 -07:00
|
|
|
export function applyQianfanConfig(cfg: OpenClawConfig): OpenClawConfig {
|
2026-03-18 23:58:49 +00:00
|
|
|
return applyQianfanPreset(cfg, QIANFAN_DEFAULT_MODEL_REF);
|
2026-03-16 19:51:55 -07:00
|
|
|
}
|