在浏览器中提供语音控制的AI聊天界面。 AI助手可以使用与Spotify,Google日历和Google Maps等各种服务集成的工具。
该项目的粗略想法是要拥有类似于亚历克萨(Amazon Alexa)或Siri的语音激活助手,但以大型语言模型为支持。目前,它是在您的浏览器中纯粹运行的网站。它默认使用使用OpenAI的GPT-4O模型配置了几种工具(又称“函数”),这些工具允许其与一系列API集成。要使用这些API,必须提供秘密,请参见下文。最“复杂的”集成是针对Google和Spotify的。
通常,您可以问助手它可以为您做什么。 ;-)
在packages/frontend/src目录中创建一个名为config.ts的文件。您可以复制文件packages/frontend/src/config.ts.example并根据您的需求进行调整。
// 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>" ;Git忽略了此文件。
注意:当前必须提供上述配置,因为它在代码中导入并用作后备。但是,从助手设置UI,可以配置任何数量的型号和LLM提供商,并在它们之间切换。
为了使用任何GPT-4型号,您的platform.openai.com帐户必须有帐单信息和一项成功的付款。如果您的帐户从未收费,则可以通过“购买信用”在“账单概述”页面上手动启动付款。这将“解锁” GPT-4型号。
OpenWeathMap.org的API键可以用于免费层。
同样,picovoice.ai的API键可以免费获得个人使用。它只是限制了。不提供picovoiceaccesskey很可能会打破尾流的检测。从理论上讲,浏览器语音识别API被用作后备,但已经有一段时间没有进行测试。
要获取Google API的API密钥,您需要在Google开发人员控制台中创建一个“项目”,并启用以下API:
对于可选的Google日历并联系集成(通过Switch Google Integration在助手设置中启用),您还需要提供GoogleClientId ,除GoogleApiKey外。原因是您需要使用Google帐户登录,这需要在Google Cloud Console上为您的项目设置一个类型Web Application的OAUTH2客户端。
您的云项目需要配置许多内容:
OAuth 2.0-Client-ID :http://localhost:5173和http://localhost添加到授权的JavaScript起源中。http://localhost:5173/google-callback添加到授权的重定向URI。OAuth Consent Screen :http://localhost:5173 (不确定是否确实需要这一点。)https://www.googleapis.com/auth/calendarhttps://www.googleapis.com/auth/contacts.readonlyhttps://www.googleapis.com/auth/photoslibrary.readonly对于可选的Spotify集成(通过Switch Spotify Integration在助手设置中启用),您需要提供SpotifyClientId 。要获取客户端ID,您需要在Spotify开发人员仪表板上注册一个应用程序。
作为网站,指定http://localhost:5173 。作为重定向URL,指定http://localhost:5173/spotify-callback 。
在启用Spotify集成时,您将被重定向到Spotify登录页面,您还需要在其中提供语音助手(或者在Spotify开发人员仪表板中命名您的应用程序)。此外,嵌入式播放流功能仅适用于Spotify Premium用户,因为Web播放SDK需要高级帐户。
对于可选的Microsoft集成(通过Switch Microsoft Integration在助手设置中启用),您需要提供MicrosoftClientId 。要获取客户端ID,您需要在Azure门户上注册一个应用程序。它必须具有以下设置:
Single Page Application 。http://localhost:5173/microsoft-callback 。Calendars.ReadWrite必须包括User.Read 。有很多服务可提供OpenAI兼容的休息端点。例如,有一个Localai,一个项目允许您本地运行各种LLMS。但是还有其他像LM工作室,VLLM等。
这些项目提供了可以(大部分)用作OpenAI'S置换的API。
因此, config.ts文件导出completionsApiUrl和相关设置(例如API键和型号名称)。这允许配置另一台OpenAI兼容服务器。我已经测试了Mistral,Groq等。但是,与GPT-4-Turbo可以做的相比,目前对工具的支持非常有限。通常,您不能同时使用流和工具。 LLM经常被超越,只是不太了解何时使用工具以及如何调用它们。借助OpenAI的GPT-4-Turbo,我们可以使用30个及以接近完美的可靠性。
准备packages/frontend/src/config.ts文件后,您可以运行:
yarn install
yarn workspace voice-assistant-frontend devconfig.ts中揭示所有键!