Files
test-ai-sdk/src/common.ts

84 lines
2.5 KiB
TypeScript

import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
import { createAnthropic } from '@ai-sdk/anthropic';
import { generateText } from 'ai';
import 'dotenv/config';
import util from 'node:util';
// 保存原始 fetch 引用
const originalFetch = fetch;
export const defaultFetch = {
fetch: async (input: string | URL | Request, init?: BunFetchRequestInit) => {
console.log('请求 URL:', input);
console.log('请求选项:', init);
const response = await originalFetch(input, init); // 调用原始 fetch
console.log('响应状态:', response.status);
const responseBody = await response.clone().text(); // 使用 clone 避免消耗原始 response
console.log('响应体:', responseBody);
return response;
}
}
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',
'qwen-plus': 'qwen-plus',
'auto': 'AUTO_Models',
}
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!,
fetch: defaultFetch.fetch as any
});
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: 'https://api.cnb.cool/kevisual/kevisual/-/ai/',
// baseURL: resolveEnvVars('https://api.cnb.cool/{env:CNB_REPO_SLUG}/-/ai/'),
name: 'custom-cnb',
apiKey: process.env.CNB_API_KEY!,
fetch: defaultFetch.fetch as any
});
export const proxyCnb = createOpenAICompatible({
baseURL: 'http://localhost:4005/api',
name: 'proxy-cnb',
apiKey: process.env.CNB_API_KEY!,
});
export const showMore = (obj: any) => {
return util.inspect(obj, { depth: null, colors: true });
}