ai-platform-converter
Version:
Lossless API parameter conversion between multiple AI platforms (OpenAI, Anthropic, Gemini, DeepSeek, Wenwen, Vertex AI, Huawei, BigModel)
56 lines (55 loc) • 2.05 kB
JavaScript
;
/**
* Convert OpenAI request to Wenwen format
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.convertOpenAIRequestToWenwen = convertOpenAIRequestToWenwen;
exports.convertWenwenRequestToOpenAI = convertWenwenRequestToOpenAI;
const openai_compatible_1 = require("../universal/openai-compatible");
const common_1 = require("../../types/common");
/**
* Convert OpenAI request to Wenwen format
* Wenwen uses OpenAI-compatible API
*/
function convertOpenAIRequestToWenwen(request, options) {
// Use the universal converter since Wenwen is OpenAI-compatible
const convertedRequest = (0, openai_compatible_1.convertOpenAIRequestToCompatible)(request, common_1.Platform.Wenwen, options);
// Add Wenwen-specific extensions
if (convertedRequest._extensions) {
convertedRequest._extensions.wenwen = {
...convertedRequest._extensions.wenwen,
// Wenwen-specific model handling
model: normalizeWenwenModel(request.model),
// Preserve Wenwen-specific parameters
...(request._extensions?.wenwen || {})
};
}
return convertedRequest;
}
/**
* Normalize model name for Wenwen API
*/
function normalizeWenwenModel(model) {
// Wenwen model name mapping
const modelMapping = {
'gpt-3.5-turbo': 'wenwen-chat',
'gpt-4': 'wenwen-chat',
'gpt-4-turbo': 'wenwen-chat',
'text-davinci-003': 'wenwen-text',
'code-davinci-002': 'wenwen-code'
};
// If it's already a Wenwen model, return as-is
if (model.startsWith('wenwen-')) {
return model;
}
// Return mapped model or default
return modelMapping[model] || 'wenwen-chat';
}
/**
* Convert Wenwen request to OpenAI format
*/
function convertWenwenRequestToOpenAI(request, options) {
// Use the universal converter for reverse conversion
const convertedRequest = (0, openai_compatible_1.convertOpenAIRequestToCompatible)(request, common_1.Platform.OpenAI, options);
return convertedRequest;
}