Cambiar entre diferentes tipos de proveedores de AI
Esta guía te ayudará a configurar y cambiar entre distintos proveedores de AI (como Gemini, Claude y OpenAI) en tu aplicación. Asegúrate de seguir los pasos detallados para una correcta implementación.
Requisitos previos
Advertencia
Antes de ejecutar el código, asegúrate de instalar las dependencias necesarias:
Además, verifica que el archivo .env contenga las API Keys correspondientes a los proveedores de AI que planeas utilizar.
Configuración del proveedor de AI desde el Router
Puedes seleccionar el tipo de proveedor de AI que deseas utilizar directamente desde el router. Los proveedores disponibles son:
- Gemini
- OpenAI (legacy)
- Claude
El sistema está diseñado para manejar el historial de mensajes basado en roles, lo que significa que el historial se recupera automáticamente desde la base de datos.
Ejemplo de configuración
const router = new GlobalRouter({
assistant: {
type: "openai_legacy", // Elige entre: "gemini" | "openai_legacy" | "claude"
functions, // Funciones de JavaScript personalizadas
tools, // Schemas basados en el tipo de proveedor seleccionado
}
});
Configuración del flujo de trabajo
A continuación, se muestra cómo configurar el flujo de trabajo utilizando el proveedor de AI seleccionado. El sistema detecta automáticamente el tipo de proveedor configurado en el router y se adapta a su modalidad de API, lo que permite cambiar entre proveedores sin realizar grandes modificaciones en el código.
Ejemplo de flujo de trabajo
import { helpers, Workflow } from "@elimeleth/vct-flow";
import { FactoryLayer } from "@elimeleth/vct-layers";
import { prompt } from "~/assistant/prompt";
export default new Workflow("any")
.addAction(async (ctx, methods) => {
try {
FactoryLayer.layer({
/*
Configuración para convertir audios a texto.
*/
audio_config: {
message: "Dame un momento para escucharte",
callback: async (ctx) => {
const path = await helpers.convertOpusToMp3(ctx.file_dir_path);
ctx.body = await helpers.sendToOpenaiWhisper(path);
return [{ role: "user", content: ctx.body }];
}
},
request: {
instructions: prompt, // Instrucciones personalizadas para el asistente
history_length: 16 // Número de mensajes recuperados de la base de datos (user/assistant)
},
})(ctx, methods);
} catch (error) {
console.error(error?.message); // Manejo de errores
}
});
Explicación del código
-
Selección del proveedor de AI :
-
El tipo de proveedor se configura en el router (
type: "openai_legacy"). Esto permite cambiar fácilmente entre Gemini, OpenAI y Claude sin modificar el flujo de trabajo principal. -
Conversión de audio a texto :
-
La configuración
audio_configse encarga de convertir archivos de audio (en formato Opus) a texto utilizando OpenAI Whisper. El texto resultante se envía como un mensaje del usuario. -
Historial de mensajes :
-
El sistema recupera automáticamente el historial de mensajes desde la base de datos, con una longitud configurable (
history_length: 16). -
Instrucciones personalizadas :
-
El campo
instructionspermite definir un prompt personalizado para guiar las respuestas del asistente. -
Manejo de errores :
-
Se incluye un bloque
try-catchpara capturar y registrar errores durante la ejecución.
Consideraciones adicionales
- Flexibilidad : Gracias a la arquitectura modular, puedes cambiar entre proveedores de AI sin alterar significativamente el código base.
- Escalabilidad : El sistema está diseñado para manejar múltiples proveedores y funcionalidades adicionales, como la conversión de audio a texto.
- Mantenimiento : Asegúrate de mantener actualizadas las dependencias y las API Keys en el archivo
.env.