实时多模型交互 • 兼容各种大语言模型 • 超低延时
🎉 创建实时多模态 AI 代理 🎉
git clone https://github.com/rte-design/ASTRA.ai.git
Key:3cdfd9e4dcb4435691f3ccb7e40c0b99
位置:southcentralus
Endpoint:https://southcentralus.api.cognitive.microsoft.com/
Key:19b6b3e1354741568d0c80079166f161
位置:southcentralus
Endpoint:https://southcentralus.api.cognitive.microsoft.com/
我们把 Astra.ai Agents 放在一个线上 Playground, 欢迎试玩。
Playground 项目是基于 NextJS 14 构建的,因此需要 Node 18+ 版本。
# copy ./playground/.env,并将 ./playground/.env 中的 http://localhost:8080 修改为 https://astra-agents-api.agora.io
cp ./playground/.env.example ./playground/.env
cd playground
# install npm dependencies & start
npm i && npm run dev
🎉 恭喜!您现在已经成功在本地运行了我们的 Playground.
当然,我们更欢迎您在本地试玩我们的 Voice Agents, 这里有一个 Docker 镜像,您可以在 macOS 和 Windows 上构建并运行该代理。
开始之前,请确保您拥有:
- Agora App ID and App 证书(详细指南)
- Azure's speech-to-text and text-to-speech API keys
- OpenAI API key
- Docker
# run the pre-built agent image
docker run --restart=always -itd -p 8080:8080 \
-v /tmp:/tmp \
-e AGORA_APP_ID=<your_agora_appid> \
-e AGORA_APP_CERTIFICATE=<your_agora_app_certificate> \
-e AZURE_STT_KEY=<your_azure_stt_key> \
-e AZURE_STT_REGION=<your_azure_stt_region> \
-e OPENAI_BASE_URL=<your_openai_base_url> \
-e OPENAI_API_KEY=<your_openai_api_key> \
-e AZURE_TTS_KEY=<your_azure_tts_key> \
-e AZURE_TTS_REGION=<your_azure_tts_region> \
--name astra_agents_server \
ccr.ccs.tencentyun.com/wangyoucao577/astra_agents_server:0.1.2
这条命令将启动一个运行在 8080 端口的代理服务器。
然后 ./playground/.env
中的地址为 http://localhost:8080
.
cd playground
# install npm dependencies & start
npm i && npm run dev
🎉 恭喜!您现在已经成功在本地运行了我们的 Astra Voice Agent.
我们的语音代理是一个很好的起点,它使用了以下扩展:
- agora_rtc / Agora for RTC transport + VAD + Azure speech-to-text (STT)
- azure_tts / Azure for text-to-speech (TTS)
- openai_chatgpt / OpenAI for LLM
- chat_transcriber / A utility ext to forward chat logs into channel
- interrupt_detector / A utility ext to help interrupt agent
您可能希望添加更多的功能,以使代理更适合您的需求。为此,您需要修改扩展的源代码并自行构建代理。
首先需要改动 manifest.json
:
# rename manifest example
cp ./agents/manifest.json.example ./agents/manifest.json
# pull the docker image with dev tools and mount your current folder as workspace
docker run -itd -v $(pwd):/app -w /app -p 8080:8080 --name astra_agents_dev ccr.ccs.tencentyun.com/wangyoucao577/astra_agents_build:0.1.0
# enter docker image
docker exec -it astra_agents_dev bash
# build agent
make build
该代码生成一个代理可执行文件。要自定义提示和 OpenAI 参数,请修改 agents/addon/extension/openai_chatgpt/openai_chatgpt.go 源代码。
开始之前,请确保您拥有:
修改 .devcontainer/devcontainer.json
中的 image
为 ccr.ccs.tencentyun.com/wangyoucao577/astra_agents_build:0.1.0
重新打开 VSCode
, 根据提示 Reopen in Container
,然后
# rename manifest example
cp ./agents/manifest.json.example ./agents/manifest.json
# build agent
make build
完成修改后,您可以使用以下命令启动服务器。然后,您可以像之前的步骤一样,使用 Astra Voice Agents 在 Playground 进行测试。
export AGORA_APP_ID=<your_agora_appid>
export AGORA_APP_CERTIFICATE=<your_agora_app_certificate>
export AZURE_STT_KEY=<your_azure_stt_key>
export AZURE_STT_REGION=<your_azure_stt_region>
export OPENAI_BASE_URL=<your_openai_base_url>
export OPENAI_API_KEY=<your_openai_api_key>
export OPENAI_MODEL=<your_openai_model>
export AZURE_TTS_KEY=<your_azure_tts_key>
export AZURE_TTS_REGION=<your_azure_tts_region>
# agent is ready to start on port 8080
make run-server
🎉 恭喜你!你已经创建了你的第一个个性化语音代理。后续你可以通过调整agent/addon/extension/openai_chatgpt/openai_chatgpt.go
中的代码进行Agents的自定义个性化。
现在让我们来深入了解一下。Astra 服务由多种不同编程语言开发的 Astra 扩展组成。这些扩展通过图谱相互连接,描述它们的关系并展示数据流动。此外,通过 Astra 云商店和 Astra 包管理器,扩展的分享和下载变得更加简便。
扩展是 Astra 框架中的基本组合单元。开发人员可以使用多种编程语言创建扩展,并将它们组合起来构建不同的场景和应用程序。Astra 强调跨语言协作,允许使用不同语言编写的扩展在同一应用程序或服务中无缝协同工作。
例如,如果一个应用程序需要实时通信(RTC)功能和先进的人工智能能力,开发人员可以选择使用 C++ 编写与音频和视频数据处理性能优势相关的 RTC 相关扩展。同时,他们可以使用 Python 开发 AI 扩展,利用其丰富的库和框架进行数据分析和机器学习任务。
截至 2024 年 6 月,我们支持以下语言编写的扩展:
- C++
- Golang
- Python (7 月)
开发人员可以灵活选择最适合他们需求的语言,并将其无缝集成到 Astra 框架中。
这段内容详细描述了截至指定日期的 Astra 扩展支持的编程语言。
在 Astra 中,图谱描述了扩展之间的数据流,协调它们的交互。例如,语音转文本(STT)扩展的文本输出可以指向大型语言模型(LLM)扩展。简而言之,图谱定义了涉及的扩展以及它们之间数据流的方向。开发者可以定制这种流程,将一个扩展(如 STT)的输出引导到另一个(如 LLM)。
在 Astra 中,有四种主要类型的扩展之间数据流:
- Command
- Data
- Image frame
- PCM frame
通过在图谱中指定这些数据类型的方向,开发人员可以实现插件之间的相互调用和单向数据流。这对于 PCM 和图像数据类型尤其有用,简化了音频和视频处理。
Astra 代理应用是一个可运行的服务器端应用程序,根据图谱规则结合多个扩展来完成更复杂的操作。
Astra 商店是一个集中的平台,开发人员可以在这里分享他们的扩展,并访问其他人创建的扩展。
Astra 包管理器简化了上传、分享、下载和安装 Astra 扩展的过程。扩展可以指定对其他扩展和环境的依赖关系,Astra 包管理器会自动管理这些依赖关系,使扩展的安装和发布变得非常方便和直观。
欢迎贡献!请先阅读 贡献指南。
本项目使用 Apache 2.0 许可证授权 - 详细信息请参阅 LICENSE。