AIClient-2-API/src/utils/provider-strategies.js
hex2077 03a1a656f4 feat: 新增 OpenAI Codex OAuth 支持与用量查询功能
- 添加 Codex OAuth 提供商支持,包括核心服务、适配器和策略实现
- 在用量管理页面新增支持用量查询的提供商列表显示
- 为 Codex 添加专用的用量查询接口和格式化显示
- 更新 Docker 配置以暴露 Codex OAuth 回调端口 1455
- 完善多语言文档,记录 Codex 配置和使用方法
- 修复流式响应中工具调用的 finish_reason 处理逻辑
- 增强 AI 监控插件对数组类型 chunk 的处理能力
2026-01-27 16:31:23 +08:00

33 lines
1.5 KiB
JavaScript

import { MODEL_PROTOCOL_PREFIX } from '../utils/common.js';
import { GeminiStrategy } from '../providers/gemini/gemini-strategy.js';
import { OpenAIStrategy } from '../providers/openai/openai-strategy.js';
import { ClaudeStrategy } from '../providers/claude/claude-strategy.js';
import { ResponsesAPIStrategy } from '../providers/openai/openai-responses-strategy.js';
import { CodexResponsesAPIStrategy } from '../providers/openai/codex-responses-strategy.js';
import { ForwardStrategy } from '../providers/forward/forward-strategy.js';
/**
* Strategy factory that returns the appropriate strategy instance based on the provider protocol.
*/
class ProviderStrategyFactory {
static getStrategy(providerProtocol) {
switch (providerProtocol) {
case MODEL_PROTOCOL_PREFIX.GEMINI:
return new GeminiStrategy();
case MODEL_PROTOCOL_PREFIX.OPENAI:
return new OpenAIStrategy();
case MODEL_PROTOCOL_PREFIX.OPENAI_RESPONSES:
return new ResponsesAPIStrategy();
case MODEL_PROTOCOL_PREFIX.CLAUDE:
return new ClaudeStrategy();
case MODEL_PROTOCOL_PREFIX.CODEX:
return new CodexResponsesAPIStrategy();
case MODEL_PROTOCOL_PREFIX.FORWARD:
return new ForwardStrategy();
default:
throw new Error(`Unsupported provider protocol: ${providerProtocol}`);
}
}
}
export { ProviderStrategyFactory };