mirror of
https://github.com/decolua/9router.git
synced 2026-05-08 12:01:28 +00:00
feat: add audio input support for Gemini translation (#913)
Add input_audio and audio_url content type handlers to convertOpenAIContentToParts() in geminiHelper.js, converting OpenAI audio format to Gemini inlineData format. Also add audio types to VALID_OPENAI_CONTENT_TYPES in openaiHelper.js so they are not stripped by filterToOpenAIFormat(). Fixes #912
This commit is contained in:
committed by
GitHub
parent
25182ff772
commit
7f93df3a92
@@ -57,6 +57,23 @@ export function convertOpenAIContentToParts(content) {
|
||||
parts.push({
|
||||
fileData: { fileUri: item.image_url.url, mimeType: "image/*" }
|
||||
});
|
||||
} else if (item.type === "input_audio" && item.input_audio?.data) {
|
||||
const format = item.input_audio.format || "wav";
|
||||
const mimeType = format === "mp3" ? "audio/mpeg" : `audio/${format}`;
|
||||
parts.push({
|
||||
inlineData: { mime_type: mimeType, data: item.input_audio.data }
|
||||
});
|
||||
} else if (item.type === "audio_url" && item.audio_url?.url?.startsWith("data:")) {
|
||||
const url = item.audio_url.url;
|
||||
const commaIndex = url.indexOf(",");
|
||||
if (commaIndex !== -1) {
|
||||
const mimePart = url.substring(5, commaIndex);
|
||||
const data = url.substring(commaIndex + 1);
|
||||
const mimeType = mimePart.split(";")[0];
|
||||
parts.push({
|
||||
inlineData: { mime_type: mimeType, data: data }
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// OpenAI helper functions for translator
|
||||
|
||||
// Valid OpenAI content block types
|
||||
export const VALID_OPENAI_CONTENT_TYPES = ["text", "image_url", "image"];
|
||||
export const VALID_OPENAI_CONTENT_TYPES = ["text", "image_url", "image", "input_audio", "audio_url"];
|
||||
export const VALID_OPENAI_MESSAGE_TYPES = ["text", "image_url", "image", "tool_calls", "tool_result"];
|
||||
|
||||
// Filter messages to OpenAI standard format
|
||||
|
||||
Reference in New Issue
Block a user