Proporciona una interfaz de chat AI controlada por voz en su navegador. El asistente de IA puede usar herramientas que se integran con varios servicios, como Spotify, Google Calendar y Google Maps.
La idea aproximada de este proyecto es tener un asistente activado por voz similar a Amazon Alexa o Siri, pero respaldado por un modelo de idioma grande. Actualmente se implementa como un sitio web que se ejecuta puramente en su navegador. Es predeterminado usar el modelo GPT-4O de OpenAI configurado con varias herramientas (también conocidas como "funciones") que le permiten integrarse con una gama de API. Para usar estas API, se deben proporcionar secretos, ver a continuación. Las integraciones más "sofisticadas" son para Google y Spotify.
En general, puede preguntarle al asistente qué puede hacer por usted. ;-)
Cree un archivo llamado config.ts en el directorio packages/frontend/src . Puede copiar los packages/frontend/src/config.ts.example y ajustarlo a sus necesidades.
// The following configuration is required:
// By configuring the endpoints below, you can use a server with OpenAI compatible REST API:
export const completionsApiKey = "<The API Key used for /completions endpoint>" ;
export const completionsApiUrl = "https://api.openai.com/v1" ;
export const modelName = "gpt-4o" ;
export const useTools = true ;
export const speechApiKey = "<The API Key used for the TTS endpoint>" ;
export const speechApiUrl = "https://api.openai.com/v1" ;
export const transcriptionApiKey = "<The API Key used for the SST endpoint>" ;
export const transcriptionApiUrl = "https://api.openai.com/v1" ;
export const transcriptionModel = "whisper-1" ;
// All the following API keys are optional, and are only required if you want to use the corresponding features.
// Your picovoice.ai Access Key (wake word detection):
export const PicoVoiceAccessKey = "" ;
// Your openweathermap.org API Key (used for weather tools):
export const OpenWeatherMapApiKey = "" ;
// Your newsapi.org API key (used for some news tools):
export const NewsApiOrgKey = "" ;
export const GoogleApiKey = "<Your googleapis.com API key>" ;
export const GoogleClientId = "XXX.apps.googleusercontent.com" ;
export const GoogleClientSecret = "<Your OAuth2 Client Secret/Key>" ;
export const GoogleCustomSearchEngineId = "<ID of your custom google search engine configured for global search>" ;
// export const GoogleProjectId = "<Your Google Cloud Console project ID>"; // Needed for Google Vertex AI API (Gemini Pro)
export const SpotifyClientId = "<Your Spotify Client ID>" ;
export const MicrosoftClientId = "<Your Azure App Client ID>" ;Este archivo es ignorado por Git.
Nota: Actualmente se debe proporcionar la configuración anterior, ya que se importa en el código y se usa como alternativa. Sin embargo, desde la interfaz de usuario de la configuración del asistente, es posible configurar cualquier número de modelos y proveedores de LLM y cambiar entre ellos.
Para utilizar cualquiera de los modelos GPT-4, su cuenta de plataforma.openai.com debe tener información de facturación y un pago exitoso. Si a su cuenta nunca se le cobraron, aún puede iniciar manualmente un pago a través de "comprar créditos" en la página de descripción general de la facturación. Esto "desbloqueará" los modelos GPT-4.
La tecla API para OpenWeathermap.org puede ser para el nivel libre.
Del mismo modo, la clave API para Picovoice.Ai es libre de obtener para uso personal. Simplemente viene con un límite de tarifa. No proporcionar el PicovoiceceCessKey probablemente romperá la detección de palabras de atención. En teoría, la API de reconocimiento de voz del navegador se usa como alternativa, pero no se ha probado en mucho tiempo.
Para obtener una clave API para las API de Google, debe crear un "proyecto" en la consola de desarrolladores de Google y habilitar las siguientes API:
Para la integración opcional de Google Calendar and Contact (habilitada en la configuración del asistente a través de la Google Integration Switch), debe proporcionar un GoogleClientId además de GoogleApiKey . La razón es que debe iniciar sesión con su cuenta de Google, y esto requiere configurar un cliente OAuth2 de Web Application de tipo en la consola de Google Cloud para su proyecto.
Se deben configurar varias cosas en su proyecto en la nube:
OAuth 2.0-Client-ID ::http://localhost:5173 y http://localhost a los orígenes de JavaScript autorizados.http://localhost:5173/google-callback al URI de redirección autorizada.OAuth Consent Screen :http://localhost:5173 (no estoy seguro de si esto es necesario).https://www.googleapis.com/auth/calendarhttps://www.googleapis.com/auth/contacts.readonlyhttps://www.googleapis.com/auth/photoslibrary.readonly Para la integración opcional de Spotify (habilitada en la configuración del asistente a través de la Spotify Integration ), debe proporcionar un SpotifyClientId . Para obtener una ID de cliente, debe registrar una aplicación en el tablero de desarrolladores de Spotify.
Como sitio web, especifique http://localhost:5173 . Como URL de redirección, especifique http://localhost:5173/spotify-callback .
Al habilitar la integración de Spotify, será redirigido a una página de inicio de sesión de Spotify donde también debe dar a Voice Assistant (o como haya nombrado su aplicación en el tablero de desarrolladores de Spotify) los permisos solicitados. Además, las capacidades de transmisión de reproducción integradas funcionan solo para usuarios premium de Spotify, ya que el SDK de reproducción web requiere una cuenta premium.
Para la integración opcional de Microsoft (habilitada en la configuración del asistente a través de la Microsoft Integration ), debe proporcionar un MicrosoftClientId . Para obtener una ID de cliente, debe registrar una aplicación en el portal de Azure. Debe tener la siguiente configuración:
Single Page Application .http://localhost:5173/microsoft-callback .User.Read y Calendars.ReadWrite .Hay un montón de servicios que proporcionan puntos finales de descanso compatibles de OpenAI. Por ejemplo, existe localai, un proyecto que le permite ejecutar varios LLM localmente. Pero hay otros como LM Studio, VLLM, etc.
Estos proyectos proporcionan una API que se puede usar (principalmente) como un reemplazo de entrega para OpenAI.
Por este motivo, el archivo config.ts exporta el completionsApiUrl y la configuración relacionada como la clave API y el nombre del modelo. Esto permite configurar otro servidor compatible de OpenAI. He probado Mistral, Groq y otros. Sin embargo, el soporte para herramientas es actualmente muy limitado en comparación con lo que puede hacer GPT-4-Turbo. A menudo, no puede usar transmisión y herramientas simultáneamente. Y los LLM a menudo se sobrevienen y simplemente no comprenden de manera confiable cuándo usar herramientas y cómo invocarlas. Con el GPT-4-Turbo de Openai, podemos usar 30 y más con una fiabilidad cercana a perfecta.
Después de preparar el archivo de packages/frontend/src/config.ts , puede ejecutar:
yarn install
yarn workspace voice-assistant-frontend devconfig.ts !