feat: add GLM-4.6 model support for z.ai provider (#8408)

Co-authored-by: Roo Code <roomote@roocode.com>
This commit is contained in:
roomote[bot] 2025-09-30 09:26:34 -04:00 committed by GitHub
parent 702b269a1b
commit 9e98d1aef6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 76 additions and 0 deletions

View file

@ -32,6 +32,18 @@ export const internationalZAiModels = {
description:
"GLM-4.5-Air is the lightweight version of GLM-4.5. It balances performance and cost-effectiveness, and can flexibly switch to hybrid thinking models.",
},
"glm-4.6": {
maxTokens: 98_304,
contextWindow: 204_800,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 0.6,
outputPrice: 2.2,
cacheWritesPrice: 0,
cacheReadsPrice: 0.11,
description:
"GLM-4.6 is Zhipu's newest model with an extended context window of up to 200k tokens, providing enhanced capabilities for processing longer documents and conversations.",
},
} as const satisfies Record<string, ModelInfo>
export type MainlandZAiModelId = keyof typeof mainlandZAiModels
@ -101,6 +113,44 @@ export const mainlandZAiModels = {
},
],
},
"glm-4.6": {
maxTokens: 98_304,
contextWindow: 204_800,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 0.29,
outputPrice: 1.14,
cacheWritesPrice: 0,
cacheReadsPrice: 0.057,
description:
"GLM-4.6 is Zhipu's newest model with an extended context window of up to 200k tokens, providing enhanced capabilities for processing longer documents and conversations.",
tiers: [
{
contextWindow: 32_000,
inputPrice: 0.21,
outputPrice: 1.0,
cacheReadsPrice: 0.043,
},
{
contextWindow: 128_000,
inputPrice: 0.29,
outputPrice: 1.14,
cacheReadsPrice: 0.057,
},
{
contextWindow: 200_000,
inputPrice: 0.29,
outputPrice: 1.14,
cacheReadsPrice: 0.057,
},
{
contextWindow: Infinity,
inputPrice: 0.29,
outputPrice: 1.14,
cacheReadsPrice: 0.057,
},
],
},
} as const satisfies Record<string, ModelInfo>
export const ZAI_DEFAULT_TEMPERATURE = 0

View file

@ -71,6 +71,19 @@ describe("ZAiHandler", () => {
expect(model.id).toBe(testModelId)
expect(model.info).toEqual(internationalZAiModels[testModelId])
})
it("should return GLM-4.6 international model with correct configuration", () => {
const testModelId: InternationalZAiModelId = "glm-4.6"
const handlerWithModel = new ZAiHandler({
apiModelId: testModelId,
zaiApiKey: "test-zai-api-key",
zaiApiLine: "international",
})
const model = handlerWithModel.getModel()
expect(model.id).toBe(testModelId)
expect(model.info).toEqual(internationalZAiModels[testModelId])
expect(model.info.contextWindow).toBe(204_800)
})
})
describe("China Z AI", () => {
@ -108,6 +121,19 @@ describe("ZAiHandler", () => {
expect(model.id).toBe(testModelId)
expect(model.info).toEqual(mainlandZAiModels[testModelId])
})
it("should return GLM-4.6 China model with correct configuration", () => {
const testModelId: MainlandZAiModelId = "glm-4.6"
const handlerWithModel = new ZAiHandler({
apiModelId: testModelId,
zaiApiKey: "test-zai-api-key",
zaiApiLine: "china",
})
const model = handlerWithModel.getModel()
expect(model.id).toBe(testModelId)
expect(model.info).toEqual(mainlandZAiModels[testModelId])
expect(model.info.contextWindow).toBe(204_800)
})
})
describe("Default behavior", () => {