# 交互式AIGC场景 AIGC Demo 此 Demo 为简化版本, 如您有 1.5.x 版本 UI 的诉求, 可切换至 1.5.1 分支。 跑通阶段时, 无须关心代码实现。当前推荐直接使用 `backend/.env` + `backend/config/custom_scene.py` 完成 `Custom` 场景配置。 ## 简介 - 在 AIGC 对话场景下,火山引擎 AIGC-RTC Server 云端服务,通过整合 RTC 音视频流处理,ASR 语音识别,大模型接口调用集成,以及 TTS 语音生成等能力,提供基于流式语音的端到端AIGC能力链路。 - 用户只需调用基于标准的 OpenAPI 接口即可配置所需的 ASR、LLM、TTS 类型和参数。火山引擎云端计算服务负责边缘用户接入、云端资源调度、音视频流压缩、文本与语音转换处理以及数据订阅传输等环节。简化开发流程,让开发者更专注在对大模型核心能力的训练及调试,从而快速推进AIGC产品应用创新。 - 同时火山引擎 RTC拥有成熟的音频 3A 处理、视频处理等技术以及大规模音视频聊天能力,可支持 AIGC 产品更便捷的支持多模态交互、多人互动等场景能力,保持交互的自然性和高效性。 ## 【必看】环境准备 > 本项目已重构为 monorepo 结构,前端位于 `frontend/`,Python 后端位于 `backend/`。 **前端环境:Node 16.0+** **后端环境:Python 3.13+** ### 1. 运行环境 需要准备两个 Terminal,分别启动后端服务和前端页面。 ### 2. 服务开通 开通 ASR、TTS、LLM、RTC 等服务,可参考 [开通服务](https://www.volcengine.com/docs/6348/1315561?s=g) 进行相关服务的授权与开通。 ### 3. 场景配置 当前真正生效的主配置入口是 `backend/.env` + `backend/config/custom_scene.py`。 您可以自定义具体场景, 并按需根据模版填充 `SceneConfig`、`AccountConfig`、`RTCConfig`、`VoiceChat` 中需要的参数。 Demo 中以 `Custom` 场景为例,您也可以自行新增其他 JSON 场景。 `Custom` 场景建议先执行以下步骤: ```shell cp backend/.env.example backend/.env ``` 注意: - `SceneConfig`:场景的信息,例如名称、头像等。 - `AccountConfig`:`Custom` 场景默认从 `backend/.env` 读取 AK/SK,其他场景仍在 JSON 中配置。 - `RTCConfig`:场景下的 RTC 配置。 - AppId、AppKey 可从 https://console.volcengine.com/rtc/aigc/listRTC 中获取。 - `Custom` 场景的 AppId、AppKey、RoomId、UserId、Token 可通过 `backend/.env` 注入。 - RoomId、UserId 可自定义也可不填,交由服务端生成。 - `VoiceChat`: 场景下的 AIGC 配置。 - `Custom` 场景的 TaskId、Agent 用户信息、欢迎语、System Message 以及 LLM 模式参数均通过 `backend/.env` 注入。 - 支持 `ArkV3` 与 `CustomLLM` 两种模式;`CustomLLM` 当前推荐“当前 backend 内置本地回调 + ngrok 暴露公网地址”这条接法。 - 可参考 https://www.volcengine.com/docs/6348/1558163 中参数描述,完整填写参数内容。 - `ASRConfig`、`TTSConfig`、`AvatarConfig` 等复杂结构由 `backend/config/custom_scene.py` 维护默认值,并从 `backend/.env` 读取关键运行参数。 - 当前首版默认不启用 RAG 主链路,`backend/services/rag_service.py` 仅保留为后续扩展位。 - 可通过 [快速跑通 Demo](https://console.volcengine.com/rtc/aigc/run?s=g) 快速获取参数,再分别填入 `backend/.env` 和 `backend/config/custom_scene.py` 的默认结构中。 ### 第三方 CustomLLM 接入 如果你要把本地服务接成 `CustomLLM`,推荐直接让当前 `backend` 自己提供回调接口: ```dotenv CUSTOM_LLM_MODE=CustomLLM CUSTOM_LLM_URL=http://127.0.0.1:3001/api/chat_callback CUSTOM_LLM_MODEL_NAME=my-model CUSTOM_LLM_API_KEY=your-callback-token ARK_API_KEY=your-ark-api-key ARK_ENDPOINT_ID=your-ark-endpoint-id ``` 本地起好 `backend` 以后,用 `ngrok` 暴露 `3001` 端口,再把 `CUSTOM_LLM_URL` 改成公网地址: ```dotenv CUSTOM_LLM_URL=https://your-ngrok-domain.ngrok-free.app/api/chat_callback ``` 说明: - `CUSTOM_LLM_URL` 是写进 `StartVoiceChat.LLMConfig.Url` 的地址 - 默认可以先用本地地址启动服务,等 `ngrok` 跑起来后再改成公网 `https` 地址 - 当前 backend 内置的固定回调路由是 `POST /api/chat_callback` - `RTC_OPENAPI_VERSION` 默认使用 `2025-06-01` ## 快速开始 请注意,服务端和 Web 端都需要启动, 启动步骤如下: ### 后端服务(Python FastAPI) ```shell cd backend cp .env.example .env uv sync uv run uvicorn server:app --host 0.0.0.0 --port 3001 --reload ``` ### 前端页面 ```shell cd frontend npm install npm run dev ``` ### 常见问题 | 问题 | 解决方案 | | :-- | :-- | | 如何使用第三方模型、Coze Bot | 当前主配置入口是 `backend/.env` + `backend/config/custom_scene.py`。如果接自己的模型,推荐使用当前 backend 内置的 `/api/chat_callback` 作为 `CustomLLM` 回调接口,再通过 `ngrok` 暴露公网地址,并把它填到 `CUSTOM_LLM_URL`。 | | **启动智能体之后, 对话无反馈,或者一直停留在 "AI 准备中, 请稍侯";在启用数字人的情况下,一直停留在“数字人准备中,请稍候”** |