Fournit une interface de chat AI contrôlée par voix dans votre navigateur. L'assistant AI peut utiliser des outils qui s'intègrent à divers services tels que Spotify, Google Calendar et Google Maps.
L'idée approximative de ce projet est d'avoir un assistant activé par la voix similaire à Amazon Alexa ou Siri, mais soutenu par un grand modèle de langue. Il est actuellement mis en œuvre en tant que site Web exécutant uniquement dans votre navigateur. Il est par défaut en utilisant le modèle GPT-4O d'OpenAI configuré avec plusieurs outils (aka "fonctions") qui lui permettent de s'intégrer à une gamme d'API. Pour utiliser ces API, des secrets doivent être fournis, voir ci-dessous. Les intégrations les plus "sophistiquées" concernent Google et Spotify.
Généralement, vous pouvez simplement demander à l'assistant ce qu'il peut faire pour vous. ;-)
Créez un fichier nommé config.ts dans le répertoire packages/frontend/src . Vous pouvez copier les packages/frontend/src/config.ts.example et l'ajuster à vos besoins.
// 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>" ;Ce fichier est ignoré par GIT.
Remarque: La configuration ci-dessus doit être actuellement fournie, car elle est importée dans le code et utilisée comme repli. Cependant, à partir de l'interface utilisateur des paramètres de l'assistant, il est possible de configurer n'importe quel nombre de modèles et de fournisseurs LLM et de basculer entre eux.
Afin d'utiliser l'un des modèles GPT-4, votre compte Platform.openai.com doit avoir des informations de facturation et un paiement réussi. Si votre compte n'a jamais été facturé, vous pouvez encore lancer manuellement un paiement via "Acheter des crédits" sur la page Présentation de la facturation. Cela "déverrouille" les modèles GPT-4.
La touche API pour Openweathermap.org peut être pour le niveau libre.
De même, la clé API pour Picovoice.ai est gratuite à obtenir pour un usage personnel. Il est livré avec une limite de taux. Le fait de ne pas fournir le PicovoiceAccesskey va très probablement casser la détection des mots de réveil. En théorie, l'API de reconnaissance de la parole du navigateur est utilisée comme secours, mais elle n'a pas été testée depuis un certain temps.
Pour obtenir une clé API pour les API Google, vous devez créer un "projet" dans la console de développeur Google et activer les API suivantes:
Pour le calendrier Google en option et l'intégration des contacts (activé dans les paramètres de l'assistant via l' Google Integration ), vous devez fournir un GoogleClientId en plus du GoogleApiKey . La raison en est que vous devez vous connecter avec votre compte Google, ce qui nécessite de configurer une Web Application OAuth2 Client de type sur la console Google Cloud pour votre projet.
Un certain nombre de choses doivent être configurées dans votre projet cloud:
OAuth 2.0-Client-ID :http://localhost:5173 et http://localhost aux origines JavaScript autorisées.http://localhost:5173/google-callback aux URI de redirection autorisés.OAuth Consent Screen :http://localhost:5173 (je ne sais pas si cela est bien nécessaire.)https://www.googleapis.com/auth/calendarhttps://www.googleapis.com/auth/contacts.readonlyhttps://www.googleapis.com/auth/photoslibrary.readonly Pour l'intégration Spotify en option (activée dans les paramètres de l'assistant via l' Spotify Integration ), vous devez fournir un SpotifyClientId . Pour obtenir un ID client, vous devez enregistrer une application sur le tableau de bord du développeur Spotify.
En tant que site Web, spécifiez http://localhost:5173 . En tant qu'URL de redirection, spécifiez http://localhost:5173/spotify-callback .
Lors de l'activation de l'intégration Spotify, vous serez redirigé vers une page de connexion Spotify où vous devez également donner l'assistant vocal (ou toutefois vous avez nommé votre application dans le tableau de bord du développeur Spotify) les autorisations demandées. De plus, les capacités de streaming de lecture intégrées fonctionnent uniquement pour les utilisateurs de Spotify Premium, car le SDK de lecture Web nécessite un compte premium.
Pour l'intégration Microsoft en option (activée dans les paramètres de l'assistant via l' Microsoft Integration ), vous devez fournir un MicrosoftClientId . Pour obtenir un ID client, vous devez enregistrer une demande sur le portail Azure. Il doit avoir les paramètres suivants:
Single Page Application .http://localhost:5173/microsoft-callback .User.Read et Calendars.ReadWrite .Il existe un tas de services qui fournissent des points de terminaison de repos compatibles OpenAI. Par exemple, il y a Localai, un projet qui vous permet d'exécuter divers LLM localement. Mais il y en a d'autres comme LM Studio, VLLM et ainsi de suite.
Ces projets fournissent une API qui peut être utilisée (principalement) en remplacement d'Openai.
Pour cette raison, le fichier config.ts exporte le completionsApiUrl et les paramètres connexes comme la clé API et le nom du modèle. Cela permet de configurer un autre serveur compatible OpenAI. J'ai testé Mistral, Groq et autres. Cependant, la prise en charge des outils est actuellement très limitée par rapport à ce que GPT-4-Turbo peut faire. Souvent, vous ne pouvez pas utiliser de streaming et d'outils simultanément. Et les LLM sont souvent débordés et ne comprennent tout simplement pas de manière fiable quand utiliser des outils et comment les invoquer. Avec le GPT-4-Turbo d'OpenAI, nous pouvons utiliser 30 et plus avec une fiabilité proche de parfaite.
Après avoir préparé les packages/frontend/src/config.ts fichier, vous pouvez exécuter:
yarn install
yarn workspace voice-assistant-frontend devconfig.ts !