chore: add tests for kevisual and common environment variable resolution

This commit is contained in:
2026-03-03 09:14:35 +08:00
parent 174c64b9a3
commit c094dae9c4
2 changed files with 85 additions and 0 deletions

51
test/common.ts Normal file
View File

@@ -0,0 +1,51 @@
import { Kevisual } from '../src/provider/index';
import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
import { createAnthropic } from '@ai-sdk/anthropic';
import { generateText } from 'ai';
export function resolveEnvVars(value: string): string {
return value.replace(/{env:([^}]+)}/g, (_, varName) => {
const envValue = process.env[varName];
if (!envValue) {
throw new Error(`Environment variable ${varName} is not set`);
}
return envValue;
});
}
export const models = {
'doubao-ark-code-latest': 'doubao-ark-code-latest',
'GLM-4.7': 'GLM-4.7',
'MiniMax-M2.1': 'MiniMax-M2.1',
'qwen3-coder-plus': 'qwen3-coder-plus',
'hunyuan-a13b': 'hunyuan-a13b',
}
export const bailian = createOpenAICompatible({
baseURL: 'https://coding.dashscope.aliyuncs.com/v1',
name: 'custom-bailian',
apiKey: process.env.BAILIAN_CODE_API_KEY!,
});
export const zhipu = createOpenAICompatible({
baseURL: 'https://open.bigmodel.cn/api/coding/paas/v4',
name: 'custom-zhipu',
apiKey: process.env.ZHIPU_API_KEY!,
});
export const minimax = createAnthropic({
baseURL: 'https://api.minimaxi.com/anthropic/v1',
name: 'custom-minimax',
apiKey: process.env.MINIMAX_API_KEY!,
});
export const doubao = createOpenAICompatible({
baseURL: 'https://ark.cn-beijing.volces.com/api/coding/v3',
name: 'custom-doubao',
apiKey: process.env.DOUBAO_API_KEY!,
});
export const cnb = createOpenAICompatible({
baseURL: resolveEnvVars('https://api.cnb.cool/{env:CNB_REPO_SLUG}/-/ai/'),
name: 'custom-cnb',
apiKey: process.env.CNB_API_KEY!,
});

34
test/kevisual.ts Normal file
View File

@@ -0,0 +1,34 @@
import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
import { createAnthropic } from '@ai-sdk/anthropic';
import { generateText } from 'ai';
import 'dotenv/config';
// 使用 custom-kevisual provider (聚合了多个模型)
const kevisual = createOpenAICompatible({
baseURL: 'https://newapi.kevisual.cn/v1',
name: 'custom-kevisual',
apiKey: process.env.KEVISUAL_NEW_API_KEY!,
});
const kevisualAnthropic = createAnthropic({
baseURL: "https://newapi.kevisual.cn/v1",
apiKey: process.env.KEVISUAL_NEW_API_KEY!,
})
// 测试所有可用模型
// const models = ['qwen3-coder-plus', 'ark-code-latest', 'GLM-4.7', 'MiniMax-M2.1'];
const models = ['MiniMax-M2.5'];
for (const model of models) {
console.log(`\n=== Testing model: ${model} ===`);
try {
const { text } = await generateText({
// model: kevisualAnthropic(model),
model: kevisual(model),
prompt: 'Say hello in one sentence.',
});
console.log(`Response: ${text}`);
} catch (error) {
console.error(`Error: ${error}`);
}
}