Files
chatgpt-codex-router/src/request/model-map.ts
mars 0dd6fe2c7d feat: 实现ChatGPT Codex路由器的核心功能
- 添加完整的项目基础结构,包括配置、类型定义和常量
- 实现OAuth认证流程和令牌管理
- 开发请求转换和响应处理逻辑
- 添加SSE流处理和ChatCompletions API转换
- 实现模型映射和提示指令系统
- 包含Docker部署配置和快速启动文档
- 添加自动登录功能和测试脚本
2026-01-07 10:51:54 +08:00

78 lines
2.2 KiB
TypeScript

export const MODEL_MAP: Record<string, string> = {
"gpt-5.1": "gpt-5.1",
"gpt-5.1-none": "gpt-5.1",
"gpt-5.1-low": "gpt-5.1",
"gpt-5.1-medium": "gpt-5.1",
"gpt-5.1-high": "gpt-5.1",
"gpt-5.2": "gpt-5.2",
"gpt-5.2-none": "gpt-5.2",
"gpt-5.2-low": "gpt-5.2",
"gpt-5.2-medium": "gpt-5.2",
"gpt-5.2-high": "gpt-5.2",
"gpt-5.2-xhigh": "gpt-5.2",
"gpt-5.1-codex": "gpt-5.1-codex",
"gpt-5.1-codex-low": "gpt-5.1-codex",
"gpt-5.1-codex-medium": "gpt-5.1-codex",
"gpt-5.1-codex-high": "gpt-5.1-codex",
"gpt-5.1-codex-max": "gpt-5.1-codex-max",
"gpt-5.1-codex-max-low": "gpt-5.1-codex-max",
"gpt-5.1-codex-max-medium": "gpt-5.1-codex-max",
"gpt-5.1-codex-max-high": "gpt-5.1-codex-max",
"gpt-5.1-codex-max-xhigh": "gpt-5.1-codex-max",
"gpt-5.1-codex-mini": "gpt-5.1-codex-mini",
"gpt-5.1-codex-mini-medium": "gpt-5.1-codex-mini",
"gpt-5.1-codex-mini-high": "gpt-5.1-codex-mini",
"gpt-5.2-codex": "gpt-5.2-codex",
"gpt-5.2-codex-low": "gpt-5.2-codex",
"gpt-5.2-codex-medium": "gpt-5.2-codex",
"gpt-5.2-codex-high": "gpt-5.2-codex",
"gpt-5.2-codex-xhigh": "gpt-5.2-codex",
};
export function getNormalizedModel(modelId: string): string | undefined {
try {
if (MODEL_MAP[modelId]) {
return MODEL_MAP[modelId];
}
const lowerModelId = modelId.toLowerCase();
const match = Object.keys(MODEL_MAP).find(
(key) => key.toLowerCase() === lowerModelId,
);
return match ? MODEL_MAP[match] : undefined;
} catch {
return undefined;
}
}
export function isKnownModel(modelId: string): boolean {
return getNormalizedModel(modelId) !== undefined;
}
export function getModelFamily(
normalizedModel: string,
): "gpt-5.1" | "gpt-5.2" | "codex" | "codex-max" | "codex-mini" | "gpt-5.2-codex" {
if (normalizedModel.includes("gpt-5.2-codex")) {
return "gpt-5.2-codex";
}
if (normalizedModel.includes("codex-max")) {
return "codex-max";
}
if (normalizedModel.includes("codex") && normalizedModel.includes("mini")) {
return "codex-mini";
}
if (normalizedModel.includes("codex")) {
return "codex";
}
if (normalizedModel.includes("gpt-5.2")) {
return "gpt-5.2";
}
return "gpt-5.1";
}