ai-platform-converter
Version:
Lossless API parameter conversion between multiple AI platforms (OpenAI, Anthropic, Gemini, DeepSeek, Wenwen, Vertex AI, Huawei, BigModel)
118 lines (117 loc) • 3.47 kB
JavaScript
;
/**
* Convert RapidAPI response to OpenAI format
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.convertRapidAPIResponseToOpenAI = convertRapidAPIResponseToOpenAI;
/**
* Convert RapidAPI response to OpenAI format
*/
function convertRapidAPIResponseToOpenAI(rapidapiResponse, _options) {
try {
// Handle error responses
if (!rapidapiResponse.success) {
return createErrorResponse(rapidapiResponse.error || 'Unknown error');
}
// Extract data from RapidAPI response
const data = rapidapiResponse.data;
if (!data) {
return createErrorResponse('No data in RapidAPI response');
}
// Convert to OpenAI compatible format
return createOpenAIResponse(data);
}
catch (error) {
return createErrorResponse(error instanceof Error ? error.message : 'Unknown error occurred');
}
}
/**
* Create OpenAI compatible response
*/
function createOpenAIResponse(data) {
const content = formatDataAsContent(data);
return {
id: `chatcmpl-${Math.random().toString(36).substr(2, 9)}`,
object: 'chat.completion',
created: Math.floor(Date.now() / 1000),
model: 'rapidapi-response',
choices: [
{
index: 0,
message: {
role: 'assistant',
content: content
},
finish_reason: 'stop'
}
],
usage: {
prompt_tokens: 0,
completion_tokens: content.length,
total_tokens: content.length
}
};
}
/**
* Format RapidAPI data as OpenAI content
*/
function formatDataAsContent(data) {
try {
// If it's a face swap response
if (data.videoUrl) {
const result = {
type: 'face_swap_result',
videoUrl: data.videoUrl
};
if (data.faces) {
result.faces = data.faces;
}
return JSON.stringify(result, null, 2);
}
// If it's a face detect response
if (data.faces && Array.isArray(data.faces)) {
const result = {
type: 'face_detection_result',
faces: data.faces
};
return JSON.stringify(result, null, 2);
}
// Generic data formatting
return JSON.stringify({
type: 'rapidapi_result',
data: data
}, null, 2);
}
catch (error) {
return `Error formatting RapidAPI response: ${error instanceof Error ? error.message : 'Unknown error'}`;
}
}
/**
* Create error response in OpenAI format
*/
function createErrorResponse(errorMessage) {
return {
id: `chatcmpl-${Math.random().toString(36).substr(2, 9)}`,
object: 'chat.completion',
created: Math.floor(Date.now() / 1000),
model: 'rapidapi-error',
choices: [
{
index: 0,
message: {
role: 'assistant',
content: JSON.stringify({
type: 'error',
message: errorMessage
}, null, 2)
},
finish_reason: 'stop'
}
],
usage: {
prompt_tokens: 0,
completion_tokens: 100,
total_tokens: 100
}
};
}