fix(nearai): disable developer role for Near AI provider
Near AI's OpenAI-compatible API doesn't support the `developer` role that OpenAI uses for reasoning models. This causes 400 errors when using GPT-OSS-120B and GLM-4.7 models. Add nearai provider and cloud-api.near.ai baseUrl to the model compatibility check that sets supportsDeveloperRole: false, which converts developer messages to system messages before API calls. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
ad939f5cc5
commit
e3a19f67b5
@ -41,4 +41,26 @@ describe("normalizeModelCompat", () => {
|
||||
const normalized = normalizeModelCompat(model);
|
||||
expect(normalized.compat?.supportsDeveloperRole).toBe(false);
|
||||
});
|
||||
|
||||
it("forces supportsDeveloperRole off for nearai provider", () => {
|
||||
const model = {
|
||||
...baseModel(),
|
||||
provider: "nearai",
|
||||
baseUrl: "https://cloud-api.near.ai/v1",
|
||||
};
|
||||
delete (model as { compat?: unknown }).compat;
|
||||
const normalized = normalizeModelCompat(model);
|
||||
expect(normalized.compat?.supportsDeveloperRole).toBe(false);
|
||||
});
|
||||
|
||||
it("forces supportsDeveloperRole off for near.ai baseUrl", () => {
|
||||
const model = {
|
||||
...baseModel(),
|
||||
provider: "custom",
|
||||
baseUrl: "https://cloud-api.near.ai/v1",
|
||||
};
|
||||
delete (model as { compat?: unknown }).compat;
|
||||
const normalized = normalizeModelCompat(model);
|
||||
expect(normalized.compat?.supportsDeveloperRole).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
@ -7,7 +7,8 @@ function isOpenAiCompletionsModel(model: Model<Api>): model is Model<"openai-com
|
||||
export function normalizeModelCompat(model: Model<Api>): Model<Api> {
|
||||
const baseUrl = model.baseUrl ?? "";
|
||||
const isZai = model.provider === "zai" || baseUrl.includes("api.z.ai");
|
||||
if (!isZai || !isOpenAiCompletionsModel(model)) return model;
|
||||
const isNearAi = model.provider === "nearai" || baseUrl.includes("cloud-api.near.ai");
|
||||
if ((!isZai && !isNearAi) || !isOpenAiCompletionsModel(model)) return model;
|
||||
|
||||
const openaiModel = model as Model<"openai-completions">;
|
||||
const compat = openaiModel.compat ?? undefined;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user