




















@@ -1,57 +1,50 @@
1+import { buildManifestModelProviderConfig } from "openclaw/plugin-sdk/provider-catalog-shared";
12import type {
23ModelDefinitionConfig,
34ModelProviderConfig,
45} from "openclaw/plugin-sdk/provider-model-shared";
6+import manifest from "./openclaw.plugin.json" with { type: "json" };
576-export const FIREWORKS_BASE_URL = "https://api.fireworks.ai/inference/v1";
8+const FIREWORKS_MANIFEST_PROVIDER = buildManifestModelProviderConfig({
9+providerId: "fireworks",
10+catalog: manifest.modelCatalog.providers.fireworks,
11+});
12+13+export const FIREWORKS_BASE_URL = FIREWORKS_MANIFEST_PROVIDER.baseUrl;
714export const FIREWORKS_DEFAULT_MODEL_ID = "accounts/fireworks/routers/kimi-k2p5-turbo";
815export const FIREWORKS_K2_6_MODEL_ID = "accounts/fireworks/models/kimi-k2p6";
9-export const FIREWORKS_DEFAULT_CONTEXT_WINDOW = 256000;
10-export const FIREWORKS_DEFAULT_MAX_TOKENS = 256000;
11-export const FIREWORKS_K2_6_CONTEXT_WINDOW = 262144;
12-export const FIREWORKS_K2_6_MAX_TOKENS = 262144;
13-14-const ZERO_COST = {
15-input: 0,
16-output: 0,
17-cacheRead: 0,
18-cacheWrite: 0,
19-} as const;
20-21-const FIREWORKS_K2_6_COST = {
22-input: 0.95,
23-output: 4,
24-cacheRead: 0,
25-cacheWrite: 0,
26-} as const;
271628-export function buildFireworksCatalogModels(): ModelDefinitionConfig[] {
29-return [
30-{
31-id: FIREWORKS_K2_6_MODEL_ID,
32-name: "Kimi K2.6",
33-reasoning: false,
34-input: ["text", "image"],
35-cost: FIREWORKS_K2_6_COST,
36-contextWindow: FIREWORKS_K2_6_CONTEXT_WINDOW,
37-maxTokens: FIREWORKS_K2_6_MAX_TOKENS,
38-},
39-{
40-id: FIREWORKS_DEFAULT_MODEL_ID,
41-name: "Kimi K2.5 Turbo (Fire Pass)",
42-reasoning: false, // Kimi K2.5 can expose reasoning in visible content on FirePass.
43-input: ["text", "image"],
44-cost: ZERO_COST,
45-contextWindow: FIREWORKS_DEFAULT_CONTEXT_WINDOW,
46-maxTokens: FIREWORKS_DEFAULT_MAX_TOKENS,
47-},
48-];
17+function requireFireworksManifestModel(id: string): ModelDefinitionConfig {
18+const model = FIREWORKS_MANIFEST_PROVIDER.models.find((entry) => entry.id === id);
19+if (!model) {
20+throw new Error(`Missing Fireworks modelCatalog row ${id}`);
21+}
22+return model;
4923}
502451-export function buildFireworksProvider(): ModelProviderConfig {
25+const FIREWORKS_DEFAULT_MODEL = requireFireworksManifestModel(FIREWORKS_DEFAULT_MODEL_ID);
26+const FIREWORKS_K2_6_MODEL = requireFireworksManifestModel(FIREWORKS_K2_6_MODEL_ID);
27+28+export const FIREWORKS_DEFAULT_CONTEXT_WINDOW = FIREWORKS_DEFAULT_MODEL.contextWindow;
29+export const FIREWORKS_DEFAULT_MAX_TOKENS = FIREWORKS_DEFAULT_MODEL.maxTokens;
30+export const FIREWORKS_K2_6_CONTEXT_WINDOW = FIREWORKS_K2_6_MODEL.contextWindow;
31+export const FIREWORKS_K2_6_MAX_TOKENS = FIREWORKS_K2_6_MODEL.maxTokens;
32+33+function cloneFireworksCatalogModel(model: ModelDefinitionConfig): ModelDefinitionConfig {
5234return {
53-baseUrl: FIREWORKS_BASE_URL,
54-api: "openai-completions",
55-models: buildFireworksCatalogModels(),
35+...model,
36+input: [...model.input],
37+cost: { ...model.cost },
5638};
5739}
40+41+export function buildFireworksCatalogModels(): ModelDefinitionConfig[] {
42+return FIREWORKS_MANIFEST_PROVIDER.models.map(cloneFireworksCatalogModel);
43+}
44+45+export function buildFireworksProvider(): ModelProviderConfig {
46+return buildManifestModelProviderConfig({
47+providerId: "fireworks",
48+catalog: manifest.modelCatalog.providers.fireworks,
49+});
50+}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。