# Realtime Dialog External RAG Test 一个新的独立测试项目,参考 `realtime_dialog/java` 的实现方式,直接通过 WebSocket 接入实时对话服务,验证 `external_rag` 外接知识库输入是否能稳定产生音频回复。 ## 能力 - 文本模式测试 - 麦克风模式测试 - 音频文件模式测试 - 原始音频播放 - 通过 `external_rag` 注入外接知识库内容 - 将服务端返回音频保存为 `output.pcm` ## 环境要求 - Java 8+ - Maven 3.8+ ## 运行前准备 准备一个 JSON 文件,内容是数组,例如: ```json [ { "title": "公司介绍", "content": "我们是一家专注于企业数字化服务的公司。" }, { "title": "核心产品", "content": "核心产品包括智能客服平台、知识库系统和企业自动化工具。" } ] ``` 默认情况下,程序会自动尝试读取 `../../test2/server/.env`,并复用其中的: - `VOLC_S2S_APP_ID` - `VOLC_S2S_TOKEN` 也可以通过 `--test2-env` 显式指定路径。 ## 常用命令 编译: ```bash mvn clean package ``` 文本模式: ```bash mvn exec:java -Dexec.args="--mod=text --app_id=你的AppId --access_key=你的AccessKey --rag-file=sample_rag.json" ``` 文本模式(直接复用 `test2/server/.env`): ```bash mvn exec:java -Dexec.args="--mod=text --rag-file=sample_rag.json" ``` 麦克风模式: ```bash mvn exec:java -Dexec.args="--app_id=你的AppId --access_key=你的AccessKey --rag-file=sample_rag.json" ``` 音频文件模式: ```bash mvn exec:java -Dexec.args="--audio=whoareyou.wav --app_id=你的AppId --access_key=你的AccessKey --rag-file=sample_rag.json" ``` ## 参数 - `--app_id`:实时对话应用 ID - `--access_key`:实时对话 Access Key - `--audio`:音频文件路径 - `--mod`:`audio` 或 `text` - `--format`:`pcm` 或 `pcm_s16le` - `--rag-file`:外接知识库 JSON 文件路径 - `--rag-delay-ms`:发送 external_rag 前延迟,默认 3000ms - `--test2-env`:显式指定 `test2/server/.env` 路径 ## 说明 这个项目保留了 `realtime_dialog` 的核心思路: - 用真实音频包判断回复是否发生 - 用 `external_rag` 验证外接知识库是否能直接进入主回复链路 - 不依赖 RTC 字幕判断是否有音频返回