diff --git a/README.md b/README.md index 43607867..5b89b9c5 100644 --- a/README.md +++ b/README.md @@ -214,8 +214,8 @@ Websocket接口地址: wss://2662r3426b.vicp.fun/xiaozhi/v1/ |:---:|:---:|:---:| | ASR(语音识别) | FunASR(本地) | 👍XunfeiStreamASR(讯飞流式) | | LLM(大模型) | glm-4-flash(智谱) | 👍qwen-flash(阿里百炼) | -| VLLM(视觉大模型) | glm-4v-flash(智谱) | 👍qwen2.5-vl-3b-instructh(阿里百炼) | -| TTS(语音合成) | ✅LinkeraiTTS(灵犀流式) | 👍HuoshanDoubleStreamTTS(火山流式) | +| VLLM(视觉大模型) | glm-4v-flash(智谱) | 👍qwen3.5-flash(阿里百炼) | +| TTS(语音合成) | EdgeTTS(微软) | 👍HuoshanDoubleStreamTTS(火山流式) | | Intent(意图识别) | function_call(函数调用) | function_call(函数调用) | | Memory(记忆功能) | mem_local_short(本地短期记忆) | mem_local_short(本地短期记忆) | diff --git a/README_de.md b/README_de.md index 88437de4..9239eb70 100644 --- a/README_de.md +++ b/README_de.md @@ -212,8 +212,8 @@ Websocket-Schnittstellenadresse: wss://2662r3426b.vicp.fun/xiaozhi/v1/ |:---:|:---:|:---:| | ASR (Spracherkennung) | FunASR (Lokal) | 👍XunfeiStreamASR (Xunfei-Streaming) | | LLM (Großes Modell) | glm-4-flash (Zhipu) | 👍qwen-flash (Alibaba Bailian) | -| VLLM (Vision Large Model) | glm-4v-flash (Zhipu) | 👍qwen2.5-vl-3b-instructh (Alibaba Bailian) | -| TTS (Sprachsynthese) | ✅LinkeraiTTS (Lingxi-Streaming) | 👍HuoshanDoubleStreamTTS (Volcano-Streaming) | +| VLLM (Vision Large Model) | glm-4v-flash (Zhipu) | 👍qwen3.5-flash (Alibaba Bailian) | +| TTS (Sprachsynthese) | EdgeTTS (Microsoft) | 👍HuoshanDoubleStreamTTS (Volcano-Streaming) | | Intent (Absichtserkennung) | function_call (Funktionsaufruf) | function_call (Funktionsaufruf) | | Memory (Gedächtnisfunktion) | mem_local_short (Lokales Kurzzeitgedächtnis) | mem_local_short (Lokales Kurzzeitgedächtnis) | diff --git a/README_en.md b/README_en.md index 070771a7..2fa9144a 100644 --- a/README_en.md +++ b/README_en.md @@ -212,8 +212,8 @@ Websocket Interface Address: wss://2662r3426b.vicp.fun/xiaozhi/v1/ |:---:|:---:|:---:| | ASR(Speech Recognition) | FunASR(Local) | 👍XunfeiStreamASR(Xunfei Streaming) | | LLM(Large Model) | glm-4-flash(Zhipu) | 👍qwen-flash(Alibaba Bailian) | -| VLLM(Vision Large Model) | glm-4v-flash(Zhipu) | 👍qwen2.5-vl-3b-instructh(Alibaba Bailian) | -| TTS(Speech Synthesis) | ✅LinkeraiTTS(Lingxi streaming) | 👍HuoshanDoubleStreamTTS(Volcano Streaming) | +| VLLM(Vision Large Model) | glm-4v-flash(Zhipu) | 👍qwen3.5-flash(Alibaba Bailian) | +| TTS(Speech Synthesis) | EdgeTTS(Microsoft) | 👍HuoshanDoubleStreamTTS(Volcano Streaming) | | Intent(Intent Recognition) | function_call(Function calling) | function_call(Function calling) | | Memory(Memory function) | mem_local_short(Local short-term memory) | mem_local_short(Local short-term memory) | diff --git a/README_pt_BR.md b/README_pt_BR.md index d9ed5562..902e7528 100644 --- a/README_pt_BR.md +++ b/README_pt_BR.md @@ -212,8 +212,8 @@ Endereço da Interface WebSocket: wss://2662r3426b.vicp.fun/xiaozhi/v1/ |:---:|:---:|:---:| | ASR(Reconhecimento de Fala) | FunASR(Local) | 👍XunfeiStreamASR(Xunfei Streaming) | | LLM(Modelo de Linguagem) | glm-4-flash(Zhipu) | 👍qwen-flash(Alibaba Bailian) | -| VLLM(Modelo de Visão) | glm-4v-flash(Zhipu) | 👍qwen2.5-vl-3b-instructh(Alibaba Bailian) | -| TTS(Síntese de Voz) | ✅LinkeraiTTS(Lingxi streaming) | 👍HuoshanDoubleStreamTTS(Volcano Streaming) | +| VLLM(Modelo de Visão) | glm-4v-flash(Zhipu) | 👍qwen3.5-flash(Alibaba Bailian) | +| TTS(Síntese de Voz) | EdgeTTS(Microsoft) | 👍HuoshanDoubleStreamTTS(Volcano Streaming) | | Intent(Reconhecimento de Intenção) | function_call(Chamada de função) | function_call(Chamada de função) | | Memory(Função de Memória) | mem_local_short(Memória local de curto prazo) | mem_local_short(Memória local de curto prazo) | diff --git a/README_vi.md b/README_vi.md index 157c0a6f..6c0c4f36 100644 --- a/README_vi.md +++ b/README_vi.md @@ -213,8 +213,8 @@ Công cụ kiểm tra dịch vụ: https://2662r3426b.vicp.fun/test/ |:---:|:---:|:---:| | ASR(Nhận dạng giọng nói) | FunASR(Local) | 👍XunfeiStreamASR(Xunfei Streaming) | | LLM(Mô hình lớn) | glm-4-flash(Zhipu) | 👍qwen-flash(Alibaba Bailian) | -| VLLM(Mô hình lớn thị giác) | glm-4v-flash(Zhipu) | 👍qwen2.5-vl-3b-instructh(Alibaba Bailian) | -| TTS(Tổng hợp giọng nói) | ✅LinkeraiTTS(Lingxi streaming) | 👍HuoshanDoubleStreamTTS(Volcano Streaming) | +| VLLM(Mô hình lớn thị giác) | glm-4v-flash(Zhipu) | 👍qwen3.5-flash(Alibaba Bailian) | +| TTS(Tổng hợp giọng nói) | EdgeTTS(Microsoft) | 👍HuoshanDoubleStreamTTS(Volcano Streaming) | | Intent(Nhận dạng ý định) | function_call(Gọi hàm) | function_call(Gọi hàm) | | Memory(Chức năng bộ nhớ) | mem_local_short(Bộ nhớ ngắn hạn cục bộ) | mem_local_short(Bộ nhớ ngắn hạn cục bộ) | diff --git a/docs/FAQ.md b/docs/FAQ.md index a5dc0b08..1131c0bf 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -40,8 +40,8 @@ conda install conda-forge::ffmpeg |:---:|:---:|:---:| | ASR(语音识别) | FunASR(本地) | 👍XunfeiStreamASR(讯飞流式) | | LLM(大模型) | glm-4-flash(智谱) | 👍qwen-flash(阿里百炼) | -| VLLM(视觉大模型) | glm-4v-flash(智谱) | 👍qwen2.5-vl-3b-instructh(阿里百炼) | -| TTS(语音合成) | ✅LinkeraiTTS(灵犀流式) | 👍HuoshanDoubleStreamTTS(火山流式) | +| VLLM(视觉大模型) | glm-4v-flash(智谱) | 👍qwen3.5-flash(阿里百炼) | +| TTS(语音合成) | EdgeTTS(微软) | 👍HuoshanDoubleStreamTTS(火山流式) | | Intent(意图识别) | function_call(函数调用) | function_call(函数调用) | | Memory(记忆功能) | mem_local_short(本地短期记忆) | mem_local_short(本地短期记忆) | diff --git a/main/manager-api/rule/doc/测试验证/知识库模块全量集成测试报告.md b/main/manager-api/rule/doc/测试验证/知识库模块全量集成测试报告.md deleted file mode 100644 index 7d3daa58..00000000 --- a/main/manager-api/rule/doc/测试验证/知识库模块全量集成测试报告.md +++ /dev/null @@ -1,45 +0,0 @@ -# 知识库模块全量集成测试报告 - -## 1. 测试背景 -针对 `KnowledgeBaseController` 和 `KnowledgeFilesController` 共 14 个接口进行了深度集成测试。主要解决了本地影子库与 RAGFlow 远程服务之间的状态对齐、数据反序列化兼容性以及批量操作逻辑安全性问题。 - -## 2. 修复的核心 Bug 清单 (Hotfixes) - -| 模块 | 问题类型 | 修复方案 | 验证结果 | -| :--- | :--- | :--- | :--- | -| **DTO** | `positions` 反序列化失败 | 类型从 `List` 提升为 `Object`,支持嵌套数组 | ✅ 已验证 | -| **DTO** | 日期格式不兼容 | 针对 RAGFlow 的 RFC 1123 格式,将 `Date` 改为 `String` 透传 | ✅ 已验证 | -| **请求** | 检索参数 `null` 拒绝 | 增加 `@JsonInclude(NON_NULL)`,跳过可选字段的空值序列化 | ✅ 已验证 | -| **同步** | 状态自愈死锁 | 增加 `CANCEL/FAIL` 状态的 60s 低频同步机制,防止逻辑错误锁定 | ✅ 已验证 | -| **逻辑** | 删除守卫逻辑错误 | 将拦截条件从 `status="1"` 修正为 `run="RUNNING"` | ✅ 已验证 | - -## 3. 全量接口测试统计 - -### KnowledgeBaseController (7/7) -- [x] 分页查询 (`GET /datasets`) -- [x] 详情获取 (`GET /datasets/{id}`) -- [x] 创建知识库 (`POST /datasets`) -- [x] 修改配置 (`PUT /datasets/{id}`) -- [x] 物理删除 (`DELETE /datasets/{id}`) -- [x] 批量删除 (`DELETE /datasets/batch`) -- [x] 模型列表获取 (`GET /datasets/rag-models`) - -### KnowledgeFilesController (7/7) -- [x] 文档列表与同步 (`GET /datasets/{id}/documents`) -- [x] 状态过滤查询 (`GET /datasets/{id}/documents/status/{s}`) -- [x] 文档上传 (`POST /datasets/{id}/documents`) -- [x] 触发解析 (`POST /datasets/{id}/chunks`) -- [x] 切片详情 (`GET /datasets/{id}/documents/{docId}/chunks`) -- [x] 召回测试 (`POST /datasets/{id}/retrieval-test`) -- [x] 批量删除文档 (`DELETE /datasets/{id}/documents`) - -## 4. 自动化审计结论 -通过执行 `comprehensive_audit.ps1` 自动化脚本,模拟了“创建->上传->解析->同步->检索->删除”的完整生产链路。 -- **解析成功率**:100% -- **数据准确性**:DTO 转换无异常,坐标及得分提取正常 -- **系统安全性**:解析中拦截机制生效 -- **结论**:**准生产就绪 (Production Ready)** - ---- -*报告生成时间:2026-02-13* -*审核:dora--1206563805@qq.com* diff --git a/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_API接口分类表.md b/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_API接口分类表.md deleted file mode 100644 index b599dcdb..00000000 --- a/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_API接口分类表.md +++ /dev/null @@ -1,102 +0,0 @@ -# RAGFlow API Interface Classification - -## 1. External APIs (三方接入体系) -**Path Prefix:** `/api/v1` -**Authentication:** API Key (`@token_required`) -**Primary Use:** External system integration, SDK usage. - -| Interface Type | Python File Path | Class/Function Name | URL Pattern | Notes | -|---|---|---|---|---| -| **External** | `api/apps/sdk/session.py` | `agent_bot_completions` | `/api/v1/agentbots//completions` | Agent Bot completion | -| **External** | `api/apps/sdk/session.py` | `begin_inputs` | `/api/v1/agentbots//inputs` | Get Agent Bot inputs | -| **External** | `api/apps/sdk/agents.py` | `list_agents` | `/api/v1/agents` | List Agents | -| **External** | `api/apps/sdk/agents.py` | `create_agent` | `/api/v1/agents` | Create Agent | -| **External** | `api/apps/sdk/agents.py` | `update_agent` | `/api/v1/agents/` | Update Agent | -| **External** | `api/apps/sdk/agents.py` | `delete_agent` | `/api/v1/agents/` | Delete Agent | -| **External** | `api/apps/sdk/session.py` | `agent_completions` | `/api/v1/agents//completions` | Agent completion | -| **External** | `api/apps/sdk/session.py` | `create_agent_session` | `/api/v1/agents//sessions` | Create Agent Session | -| **External** | `api/apps/sdk/session.py` | `list_agent_session` | `/api/v1/agents//sessions` | List Agent Sessions | -| **External** | `api/apps/sdk/session.py` | `delete_agent_session` | `/api/v1/agents//sessions` | Delete Agent Session | -| **External** | `api/apps/sdk/session.py` | `agents_completion_openai_compatibility` | `/api/v1/agents_openai//chat/completions` | OpenAI compatible Agent completion | -| **External** | `api/apps/sdk/session.py` | `chatbot_completions` | `/api/v1/chatbots//completions` | Chatbot completion | -| **External** | `api/apps/sdk/session.py` | `chatbots_inputs` | `/api/v1/chatbots//info` | Chatbot info | -| **External** | `api/apps/sdk/chat.py` | `create` | `/api/v1/chats` | Create Chat | -| **External** | `api/apps/sdk/chat.py` | `delete_chats` | `/api/v1/chats` | Delete Chat | -| **External** | `api/apps/sdk/chat.py` | `list_chat` | `/api/v1/chats` | List Chats | -| **External** | `api/apps/sdk/chat.py` | `update` | `/api/v1/chats/` | Update Chat | -| **External** | `api/apps/sdk/session.py` | `chat_completion` | `/api/v1/chats//completions` | Chat completion | -| **External** | `api/apps/sdk/session.py` | `create` | `/api/v1/chats//sessions` | Create Chat Session | -| **External** | `api/apps/sdk/session.py` | `list_session` | `/api/v1/chats//sessions` | List Chat Sessions | -| **External** | `api/apps/sdk/session.py` | `delete` | `/api/v1/chats//sessions` | Delete Chat Session | -| **External** | `api/apps/sdk/session.py` | `update` | `/api/v1/chats//sessions/` | Update Chat Session | -| **External** | `api/apps/sdk/session.py` | `chat_completion_openai_like` | `/api/v1/chats_openai//chat/completions` | OpenAI compatible Chat completion | -| **External** | `api/apps/sdk/dataset.py` | `create` | `/api/v1/datasets` | Create Dataset | -| **External** | `api/apps/sdk/dataset.py` | `delete` | `/api/v1/datasets` | Delete Dataset | -| **External** | `api/apps/sdk/dataset.py` | `list_datasets` | `/api/v1/datasets` | List Datasets | -| **External** | `api/apps/sdk/dataset.py` | `update` | `/api/v1/datasets/` | Update Dataset | -| **External** | `api/apps/sdk/doc.py` | `parse` | `/api/v1/datasets//chunks` | Parse Document Chunks | -| **External** | `api/apps/sdk/doc.py` | `stop_parsing` | `/api/v1/datasets//chunks` | Stop Parsing | -| **External** | `api/apps/sdk/doc.py` | `upload` | `/api/v1/datasets//documents` | Upload Document | -| **External** | `api/apps/sdk/doc.py` | `list_docs` | `/api/v1/datasets//documents` | List Documents | -| **External** | `api/apps/sdk/doc.py` | `delete` | `/api/v1/datasets//documents` | Delete Document | -| **External** | `api/apps/sdk/doc.py` | `update_doc` | `/api/v1/datasets//documents/` | Update Document | -| **External** | `api/apps/sdk/doc.py` | `download` | `/api/v1/datasets//documents/` | Download Document | -| **External** | `api/apps/sdk/doc.py` | `list_chunks` | `/api/v1/datasets//documents//chunks` | List Chunks | -| **External** | `api/apps/sdk/doc.py` | `add_chunk` | `/api/v1/datasets//documents//chunks` | Add Chunk | -| **External** | `api/apps/sdk/doc.py` | `update_chunk` | `/api/v1/datasets//documents//chunks/` | Update Chunk | -| **External** | `api/apps/sdk/dataset.py` | `knowledge_graph` | `/api/v1/datasets//knowledge_graph` | Knowledge Graph | -| **External** | `api/apps/sdk/dataset.py` | `delete_knowledge_graph` | `/api/v1/datasets//knowledge_graph` | Delete Knowledge Graph | -| **External** | `api/apps/sdk/doc.py` | `metadata_summary` | `/api/v1/datasets//metadata/summary` | Metadata Summary | -| **External** | `api/apps/sdk/doc.py` | `metadata_batch_update` | `/api/v1/datasets//metadata/update` | Batch Update Metadata | -| **External** | `api/apps/sdk/dataset.py` | `run_graphrag` | `/api/v1/datasets//run_graphrag` | Run GraphRAG | -| **External** | `api/apps/sdk/dataset.py` | `run_raptor` | `/api/v1/datasets//run_raptor` | Run Raptor | -| **External** | `api/apps/sdk/dataset.py` | `trace_graphrag` | `/api/v1/datasets//trace_graphrag` | Trace GraphRAG | -| **External** | `api/apps/sdk/dataset.py` | `trace_raptor` | `/api/v1/datasets//trace_raptor` | Trace Raptor | -| **External** | `api/apps/sdk/dify_retrieval.py` | `retrieval` | `/api/v1/dify/retrieval` | Dify Retrieval | -| **External** | `api/apps/sdk/files.py` | `get_all_parent_folders` | `/api/v1/file/all_parent_folder` | Get All Parent Folders | -| **External** | `api/apps/sdk/files.py` | `convert` | `/api/v1/file/convert` | File Convert | -| **External** | `api/apps/sdk/files.py` | `create` | `/api/v1/file/create` | File Create | -| **External** | `api/apps/sdk/files.py` | `download_attachment` | `/api/v1/file/download/` | Download Attachment | -| **External** | `api/apps/sdk/files.py` | `get` | `/api/v1/file/get/` | Get File | -| **External** | `api/apps/sdk/files.py` | `list_files` | `/api/v1/file/list` | List Files | -| **External** | `api/apps/sdk/files.py` | `move` | `/api/v1/file/mv` | Move File | -| **External** | `api/apps/sdk/files.py` | `get_parent_folder` | `/api/v1/file/parent_folder` | Get Parent Folder | -| **External** | `api/apps/sdk/files.py` | `rename` | `/api/v1/file/rename` | Rename File | -| **External** | `api/apps/sdk/files.py` | `rm` | `/api/v1/file/rm` | Remove File | -| **External** | `api/apps/sdk/files.py` | `get_root_folder` | `/api/v1/file/root_folder` | Get Root Folder | -| **External** | `api/apps/sdk/files.py` | `upload` | `/api/v1/file/upload` | Upload File | -| **External** | `api/apps/sdk/doc.py` | `retrieval_test` | `/api/v1/retrieval` | Retrieval Test | -| **External** | `api/apps/sdk/session.py` | `ask_about_embedded` | `/api/v1/searchbots/ask` | Searchbot Ask | -| **External** | `api/apps/sdk/session.py` | `detail_share_embedded` | `/api/v1/searchbots/detail` | Searchbot Detail | -| **External** | `api/apps/sdk/session.py` | `mindmap` | `/api/v1/searchbots/mindmap` | Searchbot Mindmap | -| **External** | `api/apps/sdk/session.py` | `related_questions_embedded` | `/api/v1/searchbots/related_questions` | Searchbot Related Questions | -| **External** | `api/apps/sdk/session.py` | `retrieval_test_embedded` | `/api/v1/searchbots/retrieval_test` | Searchbot Retrieval Test | -| **External** | `api/apps/sdk/session.py` | `ask_about` | `/api/v1/sessions/ask` | Session Ask | -| **External** | `api/apps/sdk/session.py` | `related_questions` | `/api/v1/sessions/related_questions` | Session Related Questions | -| **External** | `api/apps/sdk/agents.py` | `webhook` | `/api/v1/webhook_test/` | Webhook Test | -| **External** | `api/apps/sdk/agents.py` | `webhook_trace` | `/api/v1/webhook_trace/` | Webhook Trace | -| **External** | `api/apps/sdk/doc.py` | `rm_chunk` | `/api/v1datasets//documents//chunks` | Remove Chunk | - - -## 2. Internal APIs (内部前端体系) -**Path Prefix:** `/v1/` matches file `api/apps/_app.py` -**Authentication:** Session/Cookie (`@login_required`) -**Primary Use:** RAGFlow Web Frontend. - -**Selected Core Interfaces:** - -| Interface Type | Python File Path | Class/Function Name | URL Pattern | Notes | -|---|---|---|---|---| -| Internal | `api/apps/user_app.py` | `login` | `/v1/user/login` | User Login (Frontend) | -| Internal | `api/apps/user_app.py` | `log_out` | `/v1/user/logout` | User Logout | -| Internal | `api/apps/user_app.py` | `user_add` | `/v1/user/register` | User Registration | -| Internal | `api/apps/user_app.py` | `user_profile` | `/v1/user/info` | User Profile Info | -| Internal | `api/apps/api_app.py` | `new_token` | `/v1/api/new_token` | Generate new API Token | -| Internal | `api/apps/conversation_app.py` | `set_conversation` | `/v1/conversation/set` | Create/Update Conversation | -| Internal | `api/apps/conversation_app.py` | `completion` | `/v1/conversation/completion` | Chat Conversation Completion | -| Internal | `api/apps/kb_app.py` | `list_kbs` | `/v1/kb/list` | List Knowledge Bases | -| Internal | `api/apps/kb_app.py` | `create` | `/v1/kb/create` | Create Knowledge Base | -| Internal | `api/apps/document_app.py` | `upload` | `/v1/document/upload` | Upload Document to KB | -| Internal | `api/apps/document_app.py` | `parse` | `/v1/document/parse` | Parse Document | - -*(For a complete list of all 200+ internal APIs, please refer to the `api_endpoints.txt` file or the full scan results)* diff --git a/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_Agent_Dify接口详解.md b/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_Agent_Dify接口详解.md deleted file mode 100644 index 5af7b74b..00000000 --- a/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_Agent_Dify接口详解.md +++ /dev/null @@ -1,279 +0,0 @@ -# RAGFlow Agent 与 Dify 兼容接口详解 (Agent & Dify Compatibility) - -## 1. Dify 兼容检索 - `retrieval` -**接口描述**: 模拟 Dify API 格式的知识库检索接口。此接口主要用于让现有的 Dify 客户端或系统能够方便地接入 RAGFlow 的知识库检索能力。它支持文本检索、混合检索以及通过元数据过滤文档。 -**请求方法**: `POST` -**接口地址**: `/api/v1/dify/retrieval` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Body Parameters (JSON) -| 参数名 | 类型 | 必填 | 默认值 | 说明 | -|---|---|---|---|---| -| knowledge_id | string | 是 | - | **知识库 ID**。 | -| query | string | 是 | - | **查询文本**。用户输入的检索问题。 | -| use_kg | boolean | 否 | false | **使用知识图谱**。是否结合知识图谱进行检索。 | -| retrieval_setting | object | 否 | {} | **检索配置**。包含相似度阈值和 Top-K。 | -| metadata_condition | object | 否 | {} | **元数据过滤条件**。用于筛选特定文档。 | - -#### 参数详情 (Detail Objects) -**retrieval_setting**: -```json -{ - "score_threshold": 0.5, // 相似度阈值 (default: 0.0) - "top_k": 5 // 返回数量 (default: 1024) -} -``` - -**metadata_condition**: -```json -{ - "logic": "and", // 逻辑关系 (and/or) - "conditions": [ - { - "name": "author", // 字段名 - "comparison_operator": "eq",// 运算符 (eq, ne, gt, lt 等) - "value": "Alice" // 字段值 - } - ] -} -``` - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": { - "records": [ - { - "content": "RAGFlow 是一个基于深度文档理解的检索增强生成引擎...", - "score": 0.92, - "title": "RAGFlow_Introduction.pdf", - "metadata": { - "doc_id": "doc_uuid_123", - "author": "Alice", - "publish_year": "2024" - } - }, - { - "content": "DeepDOC 模型能够精准识别复杂的表格结构...", - "score": 0.88, - "title": "DeepDOC_Tech_Report.pdf", - "metadata": { - "doc_id": "doc_uuid_456", - "author": "Bob" - } - } - ] - } -} -``` - ---- - -## 2. 创建 Agent 会话 - `create_agent_session` -**接口描述**: 创建一个新的 Agent 会话 (Session)。会话是用户与 Agent 交互的上下文容器,保存了历史对话记录和 DSL(领域特定语言)状态。 -**请求方法**: `POST` -**接口地址**: `/api/v1/agents//sessions` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| agent_id | string | 是 | **Agent ID**。 | - -#### Query Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| user_id | string | 否 | **用户标识**。用于区分不同终端用户的会话。若不传,默认为当前 Tenant ID。 | - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": { - "id": "session_uuid_new_123", - "agent_id": "agent_uuid_abc", - "user_id": "user_123", - "source": "agent", - "dsl": { ... }, // 完整的 Agent DSL 定义 - "messages": [ - { - "role": "assistant", - "content": "你好!我是你的智能助手,有什么可以帮你的吗?" // Prologue (开场白) - } - ] - } -} -``` - ---- - -## 3. 获取 Agent 会话列表 - `list_agent_session` -**接口描述**: 分页获取指定 Agent 下的会话列表。支持按 ID 或 User ID 过滤。 -**请求方法**: `GET` -**接口地址**: `/api/v1/agents//sessions` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| agent_id | string | 是 | **Agent ID**。 | - -#### Query Parameters -| 参数名 | 类型 | 必填 | 默认值 | 说明 | -|---|---|---|---|---| -| page | int | 否 | 1 | **页码**。 | -| page_size | int | 否 | 30 | **每页数量**。 | -| orderby | string | 否 | "update_time" | **排序字段**。 | -| desc | boolean | 否 | true | **是否降序**。 | -| id | string | 否 | - | **会话 ID**。精确筛选。 | -| user_id | string | 否 | - | **用户标识**。筛选特定用户的会话。 | -| dsl | boolean | 否 | true | **包含 DSL**。是否在返回结果中包含完整的 DSL 结构 (数据量较大)。 | - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": [ - { - "id": "session_uuid_123", - "agent_id": "agent_uuid_abc", - "user_id": "user_123", - "create_time": 1715000000000, - "update_time": 1715000050000, - "source": "agent", - "messages": [ - { - "role": "assistant", - "content": "Hi there!" - }, - { - "role": "user", - "content": "What is RAG?" - } - ] - } - ] -} -``` - ---- - -## 4. 删除 Agent 会话 - `delete_agent_session` -**接口描述**: 批量删除 Agent 会话。 -**请求方法**: `DELETE` -**接口地址**: `/api/v1/agents//sessions` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| agent_id | string | 是 | **Agent ID**。 | - -#### Body Parameters (JSON) -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| ids | array | 否 | **会话 ID 列表**。若不传该参数,将尝试删除(或清空)该 Agent 下的所有会话(需谨慎)。 | - -**Request Example**: -```json -{ - "ids": ["session_id_1", "session_id_2"] -} -``` - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": { - "success_count": 2, - "errors": [] - } -} -``` - ---- - -## 5. Agent 对话 (流式) - `agent_completions` -**接口描述**: 向 Agent 发送用户问题并获取回复。这是 Agent 交互的核心接口,支持 **Server-Sent Events (SSE)** 流式响应。Agent 会根据编排好的 DSL 流程执行(可能涉及多个节点、知识库检索、LLM 推理等),并实时推送执行过程和最终结果。 -**请求方法**: `POST` -**接口地址**: `/api/v1/agents//completions` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| agent_id | string | 是 | **Agent ID**。 | - -#### Body Parameters (JSON) -| 参数名 | 类型 | 必填 | 默认值 | 说明 | -|---|---|---|---|---| -| session_id | string | 是 | - | **会话 ID**。必须是 `create_agent_session` 返回的 ID。 | -| question | string | 是 | - | **用户问题**。 | -| stream | boolean | 否 | true | **是否流式响应**。强烈建议设为 `true` 以获得更好的用户体验。 | -| return_trace | boolean | 否 | false | **返回执行轨迹**。如果为 `true`,流式响应中将包含各个节点的执行过程数据 (Trace)。 | - -### 响应参数 (Stream Response) -**Content-Type**: `text/event-stream` - -响应是一个 SSE 流,每一行以 `data:` 开头,包含一个 JSON 对象。 - -**Event Types**: -- `message`: 普通文本消息片段。 -- `node_finished`: (当 `return_trace=true` 时) 节点执行完成事件,包含节点输出数据。 -- `message_end`: 消息结束。 -- `[DONE]`: 流结束标志。 - -#### Stream Chunk Examples: - -**1. 文本生成片段 (message)**: -```text -data:{"code": 0, "message": "success", "data": {"content": "Hello", "reference": {}, "id": "msg_uuid_1"}, "event": "message"} - -data:{"code": 0, "message": "success", "data": {"content": " world", "reference": {}, "id": "msg_uuid_1"}, "event": "message"} -``` - -**2. 节点执行轨迹 (node_finished, return_trace=true)**: -```text -data:{"code": 0, "message": "success", "data": {"component_id": "retrieval_node_1", "content": "...", "trace": [...]}, "event": "node_finished"} -``` - -**3. 最终结束 (DONE)**: -```text -data:[DONE] -``` - -#### Non-Stream Response (stream=false) -如果不使用流式响应,将等待 Agent 全流程执行完毕后一次性返回 JSON。 - -```json -{ - "code": 0, - "message": "success", - "data": { - "content": "Hello world! This is the final answer.", - "reference": { - "chunk_id_1": { ... } // 引用来源 - }, - "trace": [ ... ] // 如果 return_trace=true - } -} -``` diff --git a/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_Agent接口详解.md b/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_Agent接口详解.md deleted file mode 100644 index 5b8e1bd7..00000000 --- a/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_Agent接口详解.md +++ /dev/null @@ -1,233 +0,0 @@ -## 1. 获取 Agent 列表 - `list_agents` -**接口描述**: 分页查询当前租户下的所有 Agent 列表,支持按 ID 或标题筛选。 -**请求方法**: `GET` -**接口地址**: `/api/v1/agents` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -无 - -#### Query Parameters -| 参数名 | 类型 | 必填 | 默认值 | 说明 | -|---|---|---|---|---| -| page | int | 否 | 1 | 页码 | -| page_size | int | 否 | 30 | 每页条数 | -| orderby | string | 否 | update_time | 排序字段 (create_time, update_time, title) | -| desc | boolean | 否 | True | 是否降序排列 (True: 降序, False: 升序) | -| id | string | 否 | - | 按 Agent ID 精确筛选 | -| title | string | 否 | - | 按 Agent 标题精确筛选 | - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": [ - { - "id": "e0d34e2c-...", - "title": "My Assistant", - "description": "A helpful AI assistant", - "dsl": { ... }, // Agent 的 DSL 流程定义 - "user_id": "tenant_123", - "avatar": "", // 头像 Base64 或 URL - "canvas_category": "Agent", - "create_time": 1715623400000, - "update_time": 1715624500000 - } - ] -} -``` - ---- - -## 2. 创建 Agent - `create_agent` -**接口描述**: 创建一个新的 Agent,必须包含标题和 DSL 定义。 -**请求方法**: `POST` -**接口地址**: `/api/v1/agents` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -无 - -#### Body Parameters (JSON) -| 参数名 | 类型 | 必填 | 默认值 | 说明 | -|---|---|---|---|---| -| title | string | 是 | - | Agent 的名称 (必须唯一) | -| dsl | object | 是 | - | Agent 的流程定义 (节点、连线配置) | -| description | string | 否 | - | Agent 的功能描述 | -| avatar | string | 否 | - | Agent 头像 (Base64 字符串或 URL) | - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": true -} -``` - ---- - -## 3. 更新 Agent - `update_agent` -**接口描述**: 更新指定 Agent 的配置信息,支持增量更新(仅传递需要修改的字段)。 -**请求方法**: `PUT` -**接口地址**: `/api/v1/agents/` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| agent_id | string | 是 | 要更新的 Agent ID | - -#### Body Parameters (JSON) -| 参数名 | 类型 | 必填 | 默认值 | 说明 | -|---|---|---|---|---| -| title | string | 否 | - | 新的 Agent 名称 | -| dsl | object | 否 | - | 新的 DSL 流程定义 | -| description | string | 否 | - | 新的功能描述 | -| avatar | string | 否 | - | 新的头像 | - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": true -} -``` - ---- - -## 4. 删除 Agent - `delete_agent` -**接口描述**: 根据 ID 删除指定的 Agent。此操作不可恢复。 -**请求方法**: `DELETE` -**接口地址**: `/api/v1/agents/` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| agent_id | string | 是 | 要删除的 Agent ID | - -#### Body Parameters (JSON) -无 - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": true -} -``` - ---- - -## 5. Webhook 测试触发 - `webhook` -**接口描述**: 用于测试 Agent 的 Webhook 触发功能。该接口模拟外部系统调用,触发 Agent 按照配置的 "Begin" 节点逻辑开始执行。支持同步等待结果或流式返回(取决于 Agent 配置)。 -**请求方法**: `POST` (支持 GET/PUT/DELETE 等,取决于 Canvas 配置) -**接口地址**: `/api/v1/webhook_test/` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| agent_id | string | 是 | Agent 的唯一标识符 | - -#### Query / Headers / Body Parameters -**说明**: 此接口的参数完全动态,取决于 Agent 画布中 **"Begin" (开始)** 节点的 **Webhook** 配置。 -- 如果配置了 Query 参数验证,则需在 URL 中传递对应参数。 -- 如果配置了 Header 验证,则需传递对应 Header。 -- **Body**: 通常为 JSON 格式,包含 Agent 运行所需的变量(inputs)或上下文数据。 - -**Body Example (JSON)**: -```json -{ - "inputs": { - "topic": "AI Trends", - "style": "professional" - }, - "query": "Start generation" -} -``` - -### 响应参数 (Response) -**Content-Type**: `application/json` (或 `text/event-stream`) - -**即时响应模式 (Immediately)**: -```json -{ - "code": 0, - "data": { - "content": "生成的回答内容...", - "usage": { ... } - } -} -``` - -**流式响应模式 (SSE)**: -如果不使用 `webhook_test` 而是生产环境 `webhook` 且配置为 SSE,则返回流式数据。但在 `webhook_test` 接口中,通常配合 `webhook_trace` 进行异步调试。 - ---- - -## 6. Webhook 执行轨迹查询 - `webhook_trace` -**接口描述**: 轮询查询 Agent 在 Webhook 测试触发后的执行日志和中间状态。采用长轮询或游标机制,实时获取执行进度。 -**请求方法**: `GET` -**接口地址**: `/api/v1/webhook_trace/` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| agent_id | string | 是 | Agent 的唯一标识符 | - -#### Query Parameters -| 参数名 | 类型 | 必填 | 默认值 | 说明 | -|---|---|---|---|---| -| since_ts | float | 否 | 当前时间 | 起始时间戳。返回此时间之后的日志事件。首次调用可不传(获取当前时间作为游标)。 | -| webhook_id | string | 否 | - | Webhook 会话 ID。用于锁定特定的某次执行记录。首次轮询时不传,接口会返回新生成的 ID。 | - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": { - "webhook_id": "YWdlbnxxxx...", // 当前追踪的会话 ID (加密串) - "finished": false, // 执行是否已结束 (true/false) - "next_since_ts": 1715629999.5, // 下一次轮询应使用的 since_ts - "events": [ // 本次轮询获取到的新事件列表 - { - "ts": 1715629998.1, - "event": "message", // 事件类型: message, start_to_think, finished, error 等 - "data": { - "content": "思考中...", - "reference": [] - } - } - ] - } -} -``` - -### 💡 最佳实践 (调试流程) -1. **初始化**: 调用 `GET /webhook_trace/` (不带参数),获取 `next_since_ts` (记为 `T0`)。 -2. **触发**: 调用 `POST /webhook_test/` 发送测试数据。 -3. **首帧捕获**: 循环调用 `GET /webhook_trace/?since_ts=T0`,直到返回 `webhook_id` (记为 `WID`) 和第一批 `events`。 -4. **持续追踪**: 使用 `WID` 和响应中的 `next_since_ts` 持续轮询,直到 `data.finished == true`。 diff --git a/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_Chat_Completion接口详解.md b/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_Chat_Completion接口详解.md deleted file mode 100644 index 10662b89..00000000 --- a/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_Chat_Completion接口详解.md +++ /dev/null @@ -1,164 +0,0 @@ -# RAGFlow 对话交互接口详解 (Chat Completion & OpenAI Compatibility) - -## 5. 对话助手对话 (流式) - `chat_completion` -**接口描述**: 发送问题给对话助手 (Assistant/Chat) 并获取回复。这是 RAGFlow 最核心的原生对话接口,支持 **Server-Sent Events (SSE)** 流式响应。它会根据助手绑定的知识库进行 RAG 检索生成。 -**请求方法**: `POST` -**接口地址**: `/api/v1/chats//completions` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| chat_id | string | 是 | **助手 ID**。 | - -#### Body Parameters (JSON) -| 参数名 | 类型 | 必填 | 默认值 | 说明 | -|---|---|---|---|---| -| session_id | string | 是 | - | **会话 ID**。从 `create_chat_session` 获取。 | -| question | string | 是 | - | **用户问题**。 | -| stream | boolean | 否 | true | **是否流式响应**。 | -| quote | boolean | 否 | false | **返回引用**。是否在响应中包含检索到的引用片段。 | -| doc_ids | string | 否 | - | **限定文档 ID**。多个 ID 用逗号分隔,仅检索指定文档。 | -| metadata_condition | object | 否 | {} | **元数据过滤**。用于限定检索范围。 | - -### 响应参数 (Stream Response) -**Content-Type**: `text/event-stream` - -每一行数据以 `data:` 开头,包含一个 JSON 对象。 - -**Event Example**: -```text -data:{"code": 0, "message": "success", "data": {"answer": "Hello", "reference": {}}} - -data:{"code": 0, "message": "success", "data": {"answer": " world!", "reference": {}}} - -data:{"code": 0, "message": "success", "data": {"answer": "", "reference": {"chunk_1": {...}}}} // 引用数据 -``` - -### 响应参数 (Non-Stream Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": { - "answer": "Hello world! This is the generated response.", - "reference": { - "chunk_id_1": { - "content_with_weight": "Original text...", - "doc_name": "manual.pdf" - } - } - } -} -``` - ---- - -## 6. OpenAI 兼容对话 - `chat_completion_openai_like` -**接口描述**: 提供与 **OpenAI API (`/v1/chat/completions`)** 完全兼容的接口。允许开发者使用 LangChain、OpenAI Python SDK 或其他支持 OpenAI 协议的工具直接调用 RAGFlow,实现无缝迁移。 -**请求方法**: `POST` -**接口地址**: `/api/v1/chats_openai//chat/completions` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| chat_id | string | 是 | **助手 ID**。在此上下文中充当 "Base URL" 的一部分。 | - -#### Body Parameters (JSON - OpenAI Standard) -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| messages | array | 是 | **消息列表**。包含 `role` (system/user/assistant) 和 `content`。 | -| model | string | 是 | **模型名称**。可以是任意非空字符串 (RAGFlow 会使用助手预设的模型)。 | -| stream | boolean | 否 | **是否流式**。默认为 `true`。 | - -**Request Example**: -```json -{ - "model": "ragflow_default", - "messages": [ - {"role": "system", "content": "You are a helpful assistant."}, - {"role": "user", "content": "Explain quantum physics."} - ], - "stream": true -} -``` - -### 响应参数 (Stream Response - OpenAI Format) -**Content-Type**: `text/event-stream` - -严格遵循 OpenAI Chunk 格式: - -```text -data: {"id": "chatcmpl-123", "object": "chat.completion.chunk", "created": 1715000000, "model": "model", "choices": [{"index": 0, "delta": {"role": "assistant", "content": ""}, "finish_reason": null}]} - -data: {"id": "chatcmpl-123", "object": "chat.completion.chunk", "created": 1715000001, "model": "model", "choices": [{"index": 0, "delta": {"content": "Quantum"}, "finish_reason": null}]} - -data: {"id": "chatcmpl-123", "object": "chat.completion.chunk", "created": 1715000002, "model": "model", "choices": [{"index": 0, "delta": {"content": " physics"}, "finish_reason": null}]} - -data: [DONE] -``` - ---- - -## 7. 嵌入式 Chatbot 对话 - `chatbot_completions` -**接口描述**: 专为 **嵌入式窗口 (Embed Window)** 设计的公开对话接口。它通常用于将 RAGFlow 助手作为客服窗口嵌入到第三方网站。与普通接口不同,它通过 `Authorization` Header 传递 **Beta Token** (即 API Key) 进行鉴权,且通常面向最终用户。 -**请求方法**: `POST` -**接口地址**: `/api/v1/chatbots//completions` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| dialog_id | string | 是 | **助手 ID** (Dialog ID)。 | - -#### Body Parameters (JSON) -| 参数名 | 类型 | 必填 | 默认值 | 说明 | -|---|---|---|---|---| -| question | string | 是 | - | **用户问题**。 | -| stream | boolean | 否 | true | **是否流式**。 | -| session_id | string | 否 | - | **会话 ID**。用于维持上下文。 | -| quote | boolean | 否 | false | **返回引用**。 | - -### 响应参数 (Stream Response) -**Content-Type**: `text/event-stream` - -与 `chat_completion` 类似,返回 RAGFlow 原生 SSE 格式。 - -```text -data:{"code": 0, "message": "success", "data": {"answer": "Here is the answer...", "reference": {}}} -``` - ---- - -## 8. Chatbot 初始化信息 - `chatbots_inputs` -**接口描述**: 获取嵌入式 Chatbot 的初始化配置信息。通常在前端组件加载时调用,用于展示助手的头像、名称、开场白 (Prologue) 等信息。 -**请求方法**: `GET` -**接口地址**: `/api/v1/chatbots//info` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| dialog_id | string | 是 | **助手 ID**。 | - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": { - "title": "IT Support Bot", // 助手名称 - "avatar": "http://...", // 头像 URL - "prologue": "Hi! How can I help?" // 开场白 - } -} -``` diff --git a/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_Chat_Session接口详解.md b/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_Chat_Session接口详解.md deleted file mode 100644 index dab9dcad..00000000 --- a/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_Chat_Session接口详解.md +++ /dev/null @@ -1,208 +0,0 @@ -# RAGFlow 聊天助手会话管理接口详解 (Chat Assistant Session Management) - -## 1. 创建会话 - `create_chat_session` -**接口描述**: 为指定的聊天助手 (Chat/Assistant) 创建一个新的会话。系统会自动加载该助手的开场白 (Prologue) 作为第一条消息。 -**请求方法**: `POST` -**接口地址**: `/api/v1/chats//sessions` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| chat_id | string | 是 | **助手 ID** (Assistant/Dialog ID)。 | - -#### Body Parameters (JSON) -| 参数名 | 类型 | 必填 | 默认值 | 说明 | -|---|---|---|---|---| -| name | string | 否 | "New session" | **会话名称**。 | -| user_id | string | 否 | - | **用户标识**。用于区分不同终端用户的会话。 | - -**Request Example**: -```json -{ - "name": "Consulting regarding RAG", - "user_id": "client_001" -} -``` - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": { - "id": "session_uuid_123", - "chat_id": "chat_uuid_abc", - "name": "Consulting regarding RAG", - "user_id": "client_001", - "create_time": 1715000000000, - "create_date": "2024-05-01 10:00:00", - "update_time": 1715000000000, - "update_date": "2024-05-01 10:00:00", - "messages": [ - { - "role": "assistant", - "content": "Hi! I am your AI assistant. How can I help you today?" // 自动加载的开场白 - } - ] - } -} -``` - ---- - -## 2. 获取会话列表 - `list_chat_session` -**接口描述**: 分页获取指定助手下的会话列表。支持按名称或用户 ID 过滤。 -**请求方法**: `GET` -**接口地址**: `/api/v1/chats//sessions` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| chat_id | string | 是 | **助手 ID**。 | - -#### Query Parameters -| 参数名 | 类型 | 必填 | 默认值 | 说明 | -|---|---|---|---|---| -| page | int | 否 | 1 | **页码**。 | -| page_size | int | 否 | 30 | **每页数量**。 | -| orderby | string | 否 | "create_time" | **排序字段**。 | -| desc | boolean | 否 | true | **是否降序**。 | -| name | string | 否 | - | **会话名称搜索**。 | -| id | string | 否 | - | **会话 ID 精确筛选**。 | -| user_id | string | 否 | - | **用户标识筛选**。 | - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": [ - { - "id": "session_uuid_123", - "chat_id": "chat_uuid_abc", - "name": "Consulting regarding RAG", - "user_id": "client_001", - "create_time": 1715000000000, - "create_date": "2024-05-01 10:00:00", - "update_time": 1715000050000, - "update_date": "2024-05-01 10:00:50", - "messages": [ - { - "role": "assistant", - "content": "Hi! I am your AI assistant. How can I help you today?" - }, - { - "role": "user", - "content": "What is RAGFlow?" - } - ] - }, - { - "id": "session_uuid_456", - "chat_id": "chat_uuid_abc", - "name": "New session", - "user_id": "client_002", - "create_time": 1714900000000, - "create_date": "2024-04-30 09:00:00", - "update_time": 1714900000000, - "update_date": "2024-04-30 09:00:00", - "messages": [ ... ] - } - ] -} -``` - ---- - -## 3. 更新会话 - `update_chat_session` -**接口描述**: 更新会话信息。目前主要用于 **重命名** 会话。注意:不能通过此接口修改消息记录 (`messages`)。 -**请求方法**: `PUT` -**接口地址**: `/api/v1/chats//sessions/` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| chat_id | string | 是 | **助手 ID**。 | -| session_id | string | 是 | **会话 ID**。 | - -#### Body Parameters (JSON) -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| name | string | 否 | **新的会话名称**。不可为空字符串。 | - -**Request Example**: -```json -{ - "name": "RAG Technical Discussion" -} -``` - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": null -} -``` - ---- - -## 4. 删除会话 - `delete_chat_session` -**接口描述**: 批量删除指定助手下的会话。 -**请求方法**: `DELETE` -**接口地址**: `/api/v1/chats//sessions` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| chat_id | string | 是 | **助手 ID**。 | - -#### Body Parameters (JSON) -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| ids | array | 否 | **待删除的会话 ID 列表**。若不传该参数,将尝试删除该助手下的**所有会话**(请极其谨慎使用)。 | - -**Request Example**: -```json -{ - "ids": ["session_uuid_123", "session_uuid_456"] -} -``` - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": null // 若全部删除成功 -} -``` - -**Response (部分成功时)**: -```json -{ - "code": 0, - "message": "Partially deleted 1 sessions with 1 errors", - "data": { - "success_count": 1, - "errors": ["The chat doesn't own the session session_uuid_999"] - } -} -``` diff --git a/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_Chat接口详解.md b/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_Chat接口详解.md deleted file mode 100644 index bb4faec2..00000000 --- a/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_Chat接口详解.md +++ /dev/null @@ -1,213 +0,0 @@ -## 1. 创建助手应用 - `create` -**接口描述**: 创建一个新的对话助手(Chat Assistant)。支持配置关联知识库、LLM 模型参数、提示词(Prompt)以及开场白等高级设置。 -**请求方法**: `POST` -**接口地址**: `/api/v1/chats` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -无 - -#### Body Parameters (JSON) -| 参数名 | 类型 | 必填 | 默认值 | 说明 | -|---|---|---|---|---| -| name | string | 是 | - | 助手应用名称 (租户内唯一) | -| avatar | string | 否 | - | 助手头像 (URL 或 Base64 字符串) | -| description | string | 否 | "A helpful Assistant" | 助手的功能描述 | -| dataset_ids | array | 否 | [] | 关联的知识库 ID 列表 (必须是当前租户有权限访问的知识库) | -| llm | object | 否 | - | LLM 模型生成配置 (如模型名称、温度等) | -| prompt | object | 否 | - | 提示词引擎与检索配置 (包含 System Prompt, Opener, Rerank 等) | - -**`llm` 对象详细结构**: -| 参数名 | 类型 | 必填 | 默认值 | 说明 | -|---|---|---|---|---| -| model_name | string | 是 | - | 模型名称 (例如: `deepseek-chat`, `gpt-4`, `qwen-turbo`) | -| temperature | float | 否 | 0.1 | 温度系数 (0.0 ~ 1.0),越高越随机,越低越确定 | -| top_p | float | 否 | 0.3 | 核采样概率阈值 | -| max_tokens | int | 否 | 512 | 单次回答的最大 Token 数限制 | -| presence_penalty | float | 否 | 0.4 | 话题新鲜度惩罚 (-2.0 ~ 2.0),正值鼓励讨论新话题 | -| frequency_penalty | float | 否 | 0.7 | 频率惩罚 (-2.0 ~ 2.0),正值减少重复词汇 | - -**`prompt` 对象详细结构**: -*注意:此对象包含“提示词配置”与“检索策略配置”两部分。* - -| 参数名 | 类型 | 必填 | 默认值 | 说明 | -|---|---|---|---|---| -| prompt | string | 否 | (内置默认提示词) | **System Prompt (系统提示词)**。给大模型的角色指令,例如 "你是一个客服..."。可使用变量占位符 `{knowledge}`。 | -| opener | string | 否 | "Hi! I'm your assistant..." | **开场白**。用户进入对话窗口时,助手自动发送的第一条欢迎语。 | -| show_quote | boolean | 否 | true | **显示引用**。回答中是否标注来源文档 (e.g., [1])。 | -| variables | array | 否 | `[{"key": "knowledge", "optional": false}]` | **变量列表**。定义用于填充 System Prompt 的变量。`knowledge` 为保留变量,代表检索到的知识片段。 | -| rerank_model | string | 否 | - | **重排序模型 ID**。配置后会对检索结果进行二次精排 (如 `BAAI/bge-reranker-v2-m3`)。 | -| keywords_similarity_weight | float | 否 | 0.7 | **关键字权重** (0.0 ~ 1.0)。控制混合检索的比例。更接近 1.0 侧重关键字匹配,更接近 0.0 侧重向量语义匹配。 | -| similarity_threshold | float | 否 | 0.2 | **相似度阈值** (0.0 ~ 1.0)。低于此相似度的文档块将被过滤,不喂给大模型。 | -| top_n | int | 否 | 6 | **Top N**。最终截取并输入给大模型的文档块数量。 | -| empty_response | string | 否 | "Sorry! No relevant..." | **空结果回复**。当没有检索到相关知识库内容时的兜底回复。 | -| tts | boolean | 否 | false | **启用 TTS**。是否将助手的文本回答自动转为语音播放。 | -| refine_multiturn | boolean | 否 | true | **多轮对话优化**。是否根据历史上下文重写用户问题 (Query Rewrite) 以提高检索准确率。 | - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": { - "id": "e0d34e2c-1234-5678-9xxx-xxxxxxxxxxxx", - "name": "企业知识库助手", - "avatar": "http://example.com/avatar.png", - "description": "用于回答员工内部问题的 AI", - "dataset_ids": ["kb_123", "kb_456"], - "llm": { - "model_name": "deepseek-chat", - "temperature": 0.1, - "top_p": 0.3, - "max_tokens": 512, - "presence_penalty": 0.4, - "frequency_penalty": 0.7 - }, - "prompt": { - "prompt": "你是一个智能助手,请根据以下知识回答问题:\n{knowledge}", - "opener": "你好!有什么可以帮你的?", - "show_quote": true, - "variables": [ - { "key": "knowledge", "optional": false } - ], - "rerank_model": "", - "keywords_similarity_weight": 0.7, - "similarity_threshold": 0.2, - "top_n": 8, - "empty_response": "抱歉,知识库中没有找到相关答案。", - "tts": false, - "refine_multiturn": true - }, - "create_time": 1715623400000, - "update_time": 1715624500000 - } -} -``` - ---- - -## 2. 获取助手列表 - `list_chat` -**接口描述**: 获取当前租户下的所有助手应用列表。支持分页、排序及按名称/ID筛选。 -**请求方法**: `GET` -**接口地址**: `/api/v1/chats` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -无 - -#### Query Parameters -| 参数名 | 类型 | 必填 | 默认值 | 说明 | -|---|---|---|---|---| -| page | int | 否 | 1 | 页码 | -| page_size | int | 否 | 30 | 每页条数 | -| orderby | string | 否 | create_time | 排序字段 (`create_time`, `update_time`) | -| desc | boolean | 否 | true | 是否降序排列 (`true`: 降序, `false`: 升序) | -| name | string | 否 | - | 按名称模糊搜索 (支持 partial match) | -| id | string | 否 | - | 按 ID 精确筛选 | - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": [ - { - "id": "e0d34e2c-...", - "name": "客服机器人", - "avatar": "http://...", - "datasets": [ - { - "id": "kb_1", - "name": "产品手册", - "avatar": "", - "chunk_num": 100 - } - ], - "llm": { ... }, // (结构同 create 接口响应) - "prompt": { ... }, // (结构同 create 接口响应) - "create_time": 1715623400000 - } - ] -} -``` - ---- - -## 3. 更新助手配置 - `update` -**接口描述**: 更新指定助手应用的配置信息。支持全量或增量更新部分字段。 -**请求方法**: `PUT` -**接口地址**: `/api/v1/chats/` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| chat_id | string | 是 | 助手应用 ID | - -#### Body Parameters (JSON) -*(以下所有字段均为可选,仅传递需要修改的字段即可)* - -| 参数名 | 类型 | 默认值 | 说明 | -|---|---|---|---| -| name | string | - | 新的助手名称 | -| avatar | string | - | 新的头像 URL 或 Base64 | -| dataset_ids | array | - | **全量替换**关联的知识库 ID 列表 | -| llm | object | - | 更新 LLM 配置。需包含 `model_name`,其他字段覆盖更新。 | -| prompt | object | - | 更新提示词配置。支持增量更新 (e.g. 只改 `opener`)。 | -| show_quotation | boolean | - | 是否显示引用来源 (此字段直接位于根对象下,对应 prompt.show_quote) | - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": null -} -``` - ---- - -## 4. 批量删除助手 - `delete_chats` -**接口描述**: 批量删除一个或多个助手应用。 -**请求方法**: `DELETE` -**接口地址**: `/api/v1/chats` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -无 - -#### Body Parameters (JSON) -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| ids | array | 是 | 要删除的助手应用 ID 列表。**⚠️ 注意:若列表为空或不传,虽然后端有全量删除逻辑,但在实际业务中应严谨传递 ID。** | - -**Request Example**: -```json -{ - "ids": ["chat_id_1001", "chat_id_1002"] -} -``` - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": { - "success_count": 2, // 成功删除的数量 - "errors": [] // 失败原因列表 (如 ID 不存在) - } -} -``` diff --git a/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_Dataset接口详解.md b/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_Dataset接口详解.md deleted file mode 100644 index f558219b..00000000 --- a/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_Dataset接口详解.md +++ /dev/null @@ -1,420 +0,0 @@ -## 1. 创建知识库 - `create` -**接口描述**: 创建一个新的知识库(Dataset),用于存储和检索文档数据。支持配置嵌入模型(Embedding Model)、解析方法、权限范围等。 -**请求方法**: `POST` -**接口地址**: `/api/v1/datasets` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -无 - -#### Body Parameters (JSON) -| 参数名 | 类型 | 必填 | 默认值 | 说明 | -|---|---|---|---|---| -| name | string | 是 | - | **知识库名称**。在同一个租户(Tenant)内必须唯一。 | -| avatar | string | 否 | "" | **知识库头像**。Base64 编码的图片字符串。 | -| description | string | 否 | "" | **描述信息**。用于说明知识库的用途或内容概要。 | -| embedding_model | string | 否 | (系统默认) | **嵌入模型名称** (例如 `BAAI/bge-large-zh-v1.5`)。若不传,则自动使用系统设置的默认 Embedding 模型。 | -| permission | string | 否 | "me" | **可见权限**。`me`: 仅自己可见;`team`: 团队内所有成员可见。 | -| chunk_method | string | 否 | "naive" | **默认分块解析方法**。当上传文件未指定解析方式时使用。可选值: `naive` (通用), `manual` (手动), `qa` (Q&A拆分), `table` (表格), `paper` (论文), `book` (书籍), `laws` (法律), `presentation` (PPT), `picture` (图片), `one` (单文档), `email` (邮件)。 | -| parser_config | object | 否 | (见下文) | **解析器详细配置**。根据 `chunk_method` 的不同而变化。 | - -**`parser_config` 默认配置参数 (Naive 通用模式)**: -| 参数名 | 类型 | 默认值 | 说明 | -|---|---|---|---| -| chunk_token_num | int | 512 | **切片最大 Token 数**。超过该长度会被截断到下一块。 | -| delimiter | string | "\\n" | **分段分隔符**。用于识别段落边界。 | -| layout_recognize | string | "DeepDOC" | **布局识别模型**。用于处理复杂文档结构 (如 `DeepDOC` 或 `Simple`)。 | -| html4excel | boolean | false | **Excel转HTML**。是否将 Excel 表格转为 HTML 格式进行解析。 | -| auto_keywords | int | 0 | **自动关键词抽取**。0 表示不抽取;N>0 表示为每个切片抽取 N 个关键词。 | -| auto_questions | int | 0 | **自动问题生成**。0 表示不生成;N>0 表示为每个切片生成 N 个相关问题。 | - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": { - "id": "kb_uuid_12345678", - "name": "企业产品手册", - "avatar": "", - "tenant_id": "tenant_001", - "description": "存放所有产品相关的说明文档", - "embedding_model": "BAAI/bge-large-zh-v1.5", - "permission": "me", - "chunk_method": "naive", - "parser_config": { - "chunk_token_num": 512, - "delimiter": "\n", - "layout_recognize": "DeepDOC", - "html4excel": false, - "auto_keywords": 0, - "auto_questions": 0 - }, - "chunk_count": 0, - "document_count": 0, - "create_time": 1715623400000, - "update_time": 1715624500000 - } -} -``` - ---- - -## 2. 删除知识库 - `delete` -**接口描述**: 批量删除一个或多个知识库。删除知识库将连带删除其中的所有文档和索引数据,**不可恢复**。 -**请求方法**: `DELETE` -**接口地址**: `/api/v1/datasets` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -无 - -#### Body Parameters (JSON) -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| ids | array | 是 | **ID 列表**。指定要删除的知识库 ID。如果传递 `null`,则会**清空当前租户下所有**知识库(高危操作,请谨慎使用)。 | - -**Request Example**: -```json -{ - "ids": ["kb_id_101", "kb_id_102"] -} -``` - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "Successfully deleted 2 datasets, 0 failed...", - "data": { - "success_count": 2, // 成功删除的数量 - "errors": [] // 失败的 ID 及原因列表 - } -} -``` - ---- - -## 3. 获取知识库列表 - `list_datasets` -**接口描述**: 获取当前用户(及团队)有权限访问的知识库列表。支持分页、排序和筛选。 -**请求方法**: `GET` -**接口地址**: `/api/v1/datasets` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -无 - -#### Query Parameters -| 参数名 | 类型 | 必填 | 默认值 | 说明 | -|---|---|---|---|---| -| page | int | 否 | 1 | **页码**。从 1 开始。 | -| page_size | int | 否 | 30 | **每页条数**。 | -| orderby | string | 否 | "create_time" | **排序字段**。可选值: `create_time` (创建时间), `update_time` (更新时间), `document_count` (文档数)。 | -| desc | boolean | 否 | true | **是否降序**。`true`: 降序 (最新的在前); `false`: 升序。 | -| name | string | 否 | - | **名称筛选**。支持模糊匹配。 | -| id | string | 否 | - | **ID 筛选**。精确匹配知识库 ID。 | - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": [ - { - "id": "kb_uuid_123", - "name": "HR 政策库", - "document_count": 12, // 包含的文档数量 - "token_num": 10240, // 总 Token 数 - "chunk_count": 150, // 总切片数 - "create_time": 1715623400000, - "permission": "team", - "embedding_model": "BAAI/bge-large-zh-v1.5" - } - ], - "total": 1 // 匹配查询条件的总记录数 (用户分页计算) -} -``` - ---- - -## 4. 更新知识库配置 - `update` -**接口描述**: 更新指定知识库的配置信息。注意:如果知识库内已有解析过的切片,通常不允许修改嵌入模型 (`embedding_model`)。 -**请求方法**: `PUT` -**接口地址**: `/api/v1/datasets/` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| dataset_id | string | 是 | 知识库 ID | - -#### Body Parameters (JSON) -*(以下所有字段均为可选,仅传递需要修改的字段即可)* - -| 参数名 | 类型 | 默认值 | 说明 | -|---|---|---|---| -| name | string | - | **新名称**。需保持租户内唯一。 | -| avatar | string | - | **新头像**。Base64 字符串。 | -| description | string | - | **新描述**。 | -| permission | string | - | **新权限**。`me` 或 `team`。 | -| embedding_model | string | - | **嵌入模型**。**注意**: 仅当知识库为空(chunk_count=0)时才允许修改。 | -| chunk_method | string | - | **默认解析方法**。修改后将应用于后续新上传的文件 (旧文件解析方式不变)。 | -| parser_config | object | - | **解析器配置**。全量覆盖旧配置 (结构参考 create 接口)。 | -| pagerank | int | 0 | **PageRank 权重**。仅在使用 Elasticsearch 引擎且需调整图谱权重时设置。 | - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": { - "id": "kb_uuid_...", - "name": "新名称", - "update_time": 1715629999000, - ... - } -} -``` - ---- - -## 5. 获取知识图谱数据 - `knowledge_graph` -**接口描述**: 获取知识库构建的知识图谱数据,包含节点(Nodes)和边(Edges),用于前端可视化展示(如 ECharts 力导向图)。 -**请求方法**: `GET` -**接口地址**: `/api/v1/datasets//knowledge_graph` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| dataset_id | string | 是 | 知识库 ID | - -#### Query Parameters -无 - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": { - "graph": { - "nodes": [ - { - "id": "node_1", - "label": "人工智能", // 节点显示的文本 - "pagerank": 0.05, // PageRank 权重 (决定节点大小) - "color": "#fcb", // 节点颜色 - "img": "" // 节点图标 (如有) - }, - { - "id": "node_2", - "label": "机器学习", - "pagerank": 0.03, - "color": "#e2b" - } - ], - "edges": [ - { - "source": "node_1", // 起始节点 ID - "target": "node_2", // 目标节点 ID - "weight": 0.8, // 边权重 (决定连线粗细) - "label": "includes" // 关系名称 (显示在连线上) - } - ] - }, - "mind_map": { // 思维导图结构的保留字段 (通常用于脑图展示) - "root": { - "id": "root_node", - "children": [...] - } - } - } -} -``` - ---- - -## 6. 清空知识图谱数据 - `delete_knowledge_graph` -**接口描述**: 删除指定知识库中已生成的知识图谱索引数据(包括所有实体节点和关系边)。 -**注意**: 此操作**不会**删除原始文档或普通的向量索引,仅仅是重置图谱结构。如果需要重新生成图谱,请再次调用 `chunk` 相关接口或使用 `run_graphrag`。 -**请求方法**: `DELETE` -**接口地址**: `/api/v1/datasets//knowledge_graph` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| dataset_id | string | 是 | 知识库 ID | - -#### Body Parameters -无 - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": true -} -``` - ---- - -## 7. 运行/触发 GraphRAG 索引任务 - `run_graphrag` -**接口描述**: 触发后台异步任务,对知识库中的文档进行 GraphRAG 索引构建。此过程会使用 LLM 抽取实体(Entities)和关系(Relationships),并构建全局社区摘要。 -**前提条件**: 知识库中必须包含已解析的文档。 -**请求方法**: `POST` -**接口地址**: `/api/v1/datasets//run_graphrag` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| dataset_id | string | 是 | 知识库 ID | - -#### Body Parameters (JSON) -*(Body 可为空 `{}`, 后续版本将扩展以下配置参数)* - -| 参数名 | 类型 | 默认值 | 说明 | -|---|---|---|---| -| entity_types | array | ["organization", "person", "geo", "event"] | **(预留)** 指定要抽取的实体类型列表。 | -| method | string | "light" | **(预留)** 构建模式: `light` (轻量级), `general` (标准), `complex` (深度)。 | - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": { - "graphrag_task_id": "task_uuid_12345678" // 异步任务 ID,用于后续追踪进度 - } -} -``` - ---- - -## 8. 运行/触发 RAPTOR 递归摘要任务 - `run_raptor` -**接口描述**: 触发后台异步任务,对知识库中的文档运行 RAPTOR (Recursive Abstractive Processing for Tree-Organized Retrieval) 算法。 -**功能说明**: 该算法会递归地对文档块进行聚类和摘要,生成多层级的树状索引,显著提升对长文档和复杂问题的回答能力。 -**请求方法**: `POST` -**接口地址**: `/api/v1/datasets//run_raptor` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| dataset_id | string | 是 | 知识库 ID | - -#### Body Parameters (JSON) -*(Body 可为空 `{}`, 后续版本将扩展以下配置参数)* - -| 参数名 | 类型 | 默认值 | 说明 | -|---|---|---|---| -| max_cluster | int | 64 | **(预留)** 最大聚类数。 | -| prompt | string | (内置摘要提示词) | **(预留)** 用于生成摘要的 Prompt。 | - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": { - "raptor_task_id": "task_uuid_87654321" // 异步任务 ID - } -} -``` - ---- - -## 9. 查询 GraphRAG 任务进度 - `trace_graphrag` -**接口描述**: 查询指定知识库当前 **GraphRAG** 索引构建任务的实时状态。支持长轮询机制监测进度。 -**请求方法**: `GET` -**接口地址**: `/api/v1/datasets//trace_graphrag` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| dataset_id | string | 是 | 知识库 ID | - -#### Query Parameters -无 - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": { - "id": "task_uuid_12345678", // 任务 ID - "doc_id": "doc_uuid_...", // 当前正在处理的文档 ID (如果是多文档任务) - "from_page": 0, // 当前处理的起始页码 - "to_page": 10, // 当前处理的结束页码 - "progress": 0.45, // **总进度** (0.0 ~ 1.0)。0.0: 未开始/刚开始; 1.0: 完成; -1.0: 失败。 - "progress_msg": "Extracting entities from chunk 25...", // **当前状态描述**。用于前端展示 Loading 提示。 - "create_time": 1715623400000, - "update_time": 1715624500000 - } -} -``` - ---- - -## 10. 查询 RAPTOR 任务进度 - `trace_raptor` -**接口描述**: 查询指定知识库当前 **RAPTOR** 递归摘要任务的实时状态。 -**请求方法**: `GET` -**接口地址**: `/api/v1/datasets//trace_raptor` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| dataset_id | string | 是 | 知识库 ID | - -#### Query Parameters -无 - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": { - "id": "task_uuid_87654321", - "progress": 1.0, // 进度值。1.0 表示树构建完成。 - "progress_msg": "Tree construction completed.", // 状态消息。 - "create_time": 1715629000000 - } -} -``` diff --git a/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_Document接口详解.md b/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_Document接口详解.md deleted file mode 100644 index 0399a5d8..00000000 --- a/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_Document接口详解.md +++ /dev/null @@ -1,757 +0,0 @@ -## 1. 上传文档 - `upload` -**接口描述**: 向指定的知识库上传一个或多个文档文件。上传后,文档将立即被存入文件系统/对象存储,并在数据库中创建记录。默认解析状态为 `UNSTART` (未开始),解析配置将继承自 KnowledgeBase 的默认设置。 -**请求方法**: `POST` -**接口地址**: `/api/v1/datasets//documents` -**鉴权方式**: Header `Authorization: Bearer ` -**Content-Type**: `multipart/form-data` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| dataset_id | string | 是 | **知识库 ID**。指定文档归属的知识库。 | - -#### Form Data Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| file | file | 是 | **文件二进制流**。支持多文件上传 (Multiple Files)。
支持格式: PDF, DOCX, TXT, MD, CS, HTML, CSV, XLSX, PPTX 等。
单文件大小限制请参考系统配置 (默认通常为 10MB/100MB)。 | -| parent_path | string | 否 | **父级目录路径**。类似于文件系统的文件夹结构,默认为 `/`。如果指定 (如 `/docs/v1/`),文档将在该虚拟路径下列出。 | - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": [ - { - "id": "e457f92e3c0411ef8d4c0242ac120003", - "thumbnail": null, - "dataset_id": "d1234567890abcdef1234567890abcde", - "chunk_method": "naive", - "pipeline_id": null, - "parser_config": { - "chunk_token_num": 512, - "delimiter": "\\n", - "layout_recognize": "DeepDOC", - "html4excel": false, - "auto_keywords": 0, - "auto_questions": 0, - "topn_tags": 3, - "raptor": { - "use_raptor": false - }, - "graphrag": { - "use_graphrag": false - } - }, - "source_type": "local", - "type": "pdf", - "created_by": "user_id_123", - "name": "UserGuide_v2.pdf", - "location": "UserGuide_v2.pdf", - "size": 102400, - "token_count": 0, - "chunk_count": 0, - "progress": 0.0, - "progress_msg": "", - "process_begin_at": null, - "process_duration": 0.0, - "meta_fields": {}, - "suffix": "pdf", - "run": "UNSTART", - "status": "1", - "create_time": 1715623400123, - "create_date": "2024-05-13 10:03:20", - "update_time": 1715623400123, - "update_date": "2024-05-13 10:03:20" - } - ] -} -``` - ---- - -## 2. 获取文档列表 - `list_docs` -**接口描述**: 查询知识库下的文档列表。支持分页检索、关键词搜索、状态筛选等功能。 -**请求方法**: `GET` -**接口地址**: `/api/v1/datasets//documents` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| dataset_id | string | 是 | **知识库 ID**。 | - -#### Query Parameters -| 参数名 | 类型 | 必填 | 默认值 | 说明 | -|---|---|---|---|---| -| page | int | 否 | 1 | **页码**。从 1 开始计数。 | -| page_size | int | 否 | 30 | **每页数量**。 | -| orderby | string | 否 | "create_time" | **排序字段**。支持 `create_time` (创建时间), `name` (文件名), `size` (大小) 等。 | -| desc | boolean | 否 | true | **是否降序**。`true` (最新/最大在前), `false` (最旧/最小在前)。 | -| id | string | 否 | - | **精确筛选 ID**。仅返回指定 ID 的文档。 | -| name | string | 否 | - | **精确筛选文件名**。仅返回指定名称的文档。 | -| keywords | string | 否 | - | **模糊搜索**。匹配文档名称包含该关键词的记录。 | -| suffix | array | 否 | - | **文件后缀筛选** (如 `pdf`, `docx`)。 | -| run | array | 否 | - | **运行状态筛选**。可选值: `UNSTART`, `RUNNING`, `CANCEL`, `DONE`, `FAIL`。 | -| create_time_from | int | 否 | 0 | **起始时间戳** (毫秒)。查询在此时间之后创建的文档。 | -| create_time_to | int | 否 | 0 | **结束时间戳** (毫秒)。查询在此时间之前创建的文档。 | - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": { - "total": 128, - "docs": [ - { - "id": "e457f92e3c0411ef8d4c0242ac120003", - "thumbnail": null, - "dataset_id": "d1234567890abcdef1234567890abcde", - "chunk_method": "naive", - "pipeline_id": null, - "parser_config": { - "chunk_token_num": 512, - "delimiter": "\\n", - "layout_recognize": "DeepDOC", - "html4excel": false, - "auto_keywords": 0, - "auto_questions": 0, - "topn_tags": 3, - "raptor": { - "use_raptor": false - }, - "graphrag": { - "use_graphrag": false - } - }, - "source_type": "local", - "type": "pdf", - "created_by": "user_id_123", - "name": "UserGuide_v2.pdf", - "location": "UserGuide_v2.pdf", - "size": 102400, - "token_count": 45000, - "chunk_count": 120, - "progress": 1.0, - "progress_msg": "Parsing finished", - "process_begin_at": "2024-05-13 10:05:00", - "process_duration": 45.2, - "meta_fields": { - "author": "RAGFlow Team", - "version": "2.0" - }, - "suffix": "pdf", - "run": "DONE", - "status": "1", - "create_time": 1715623400123, - "create_date": "2024-05-13 10:03:20", - "update_time": 1715623450000, - "update_date": "2024-05-13 10:05:45" - } - ] - } -} -``` - ---- - -## 3. 更新文档信息 - `update_doc` -**接口描述**: 更新文档的名称、状态或解析配置。 -**特别注意**: 如果修改了 `chunk_method` 或 `parser_config`,后端会自动将 `run` 状态重置为 `UNSTART`,并清除已有的 chunk 数据,等待重新解析。 -**请求方法**: `PUT` -**接口地址**: `/api/v1/datasets//documents/` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| dataset_id | string | 是 | **知识库 ID**。 | -| document_id | string | 是 | **文档 ID**。 | - -#### Body Parameters (JSON) -*(仅需传递要修改的字段)* - -| 参数名 | 类型 | 说明 | -|---|---|---| -| name | string | **新文档名称**。需包含文件后缀且不能改变原始文件类型 (如从 `.pdf` 改为 `.txt` 会导致错误)。 | -| enabled | boolean | **启用/禁用**。`true`: 启用 (DEFAULT, 对应 status="1"); `false`: 禁用 (对应 status="0")。禁用后该文档不参与检索。 | -| chunk_method | string | **解析方法**。可选值: `naive`, `manual`, `qa`, `table`, `paper`, `book`, `laws`, `presentation`, `picture`, `one`, `knowledge_graph`, `email`。 | -| parser_config | object | **解析器详细配置**。应与 `chunk_method` 匹配。以下列出 `naive` (通用) 方法的完整配置参数。 | - -**parser_config (Naive 模式全量参数)**: -| 参数名 | 类型 | 默认值 | 说明 | -|---|---|---|---| -| chunk_token_num | int | 512 | **切片最大 Token 数**。 | -| delimiter | string | "\\n" | **分段符**。支持转义字符。 | -| layout_recognize | string | "DeepDOC" | **布局识别模型**。可选 `DeepDOC` 或 `Simple`。 | -| html4excel | boolean | false | **Excel转HTML**。是否将 Excel 解析为 HTML 表格。 | -| auto_keywords | int | 0 | **自动关键词数量**。0 表示不抽取。 | -| auto_questions | int | 0 | **自动问题数量**。0 表示不生成。 | -| topn_tags | int | 3 | **自动标签数量**。 | -| raptor | object | `{ "use_raptor": false }` | **RAPTOR 配置**。设置 `use_raptor: true` 可开启递归摘要索引。 | -| graphrag | object | `{ "use_graphrag": false }` | **GraphRAG 配置**。设置 `use_graphrag: true` 可开启图谱增强。 | - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": { - "id": "e457f92e3c0411ef8d4c0242ac120003", - "thumbnail": null, - "dataset_id": "d1234567890abcdef1234567890abcde", - "chunk_method": "naive", - "pipeline_id": null, - "parser_config": { - "chunk_token_num": 1024, - "delimiter": "\\n", - "layout_recognize": "DeepDOC", - "html4excel": false, - "auto_keywords": 0, - "auto_questions": 0, - "topn_tags": 3, - "raptor": { - "use_raptor": false - }, - "graphrag": { - "use_graphrag": false - } - }, - "source_type": "local", - "type": "pdf", - "created_by": "user_id_123", - "name": "Renamed_Guide.pdf", - "location": "UserGuide_v2.pdf", - "size": 102400, - "token_count": 45000, - "chunk_count": 0, - "progress": 0.0, - "progress_msg": "", - "process_begin_at": null, - "process_duration": 0.0, - "meta_fields": {}, - "suffix": "pdf", - "run": "UNSTART", - "status": "0", - "create_time": 1715623400123, - "create_date": "2024-05-13 10:03:20", - "update_time": 1715629999000, - "update_date": "2024-05-13 12:00:00" - } -} -``` - ---- - -## 4. 删除文档 - `delete` -**接口描述**: 物理删除一个或多个文档。此操作不可恢复,将同时删除数据库记录、MinIO 中的源文件以及 Elasticsearch 中的所有相关切片索引。 -**请求方法**: `DELETE` -**接口地址**: `/api/v1/datasets//documents` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| dataset_id | string | 是 | **知识库 ID**。 | - -#### Body Parameters (JSON) -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| ids | array | 是 | **文档 ID 列表**。必须指定要删除的文档 ID。 | - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": null -} -``` - ---- - -## 5. 下载/预览原始文件 - `download` -**接口描述**: 获取文档的原始二进制文件流。响应头将会包含 `Content-Disposition` 字段,指示浏览器以附件形式下载。 -**请求方法**: `GET` -**接口地址**: `/api/v1/datasets//documents/` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| dataset_id | string | 是 | **知识库 ID**。 | -| document_id | string | 是 | **文档 ID**。 | - -### 响应参数 (Response) -**Content-Type**: `application/octet-stream` -**Content-Disposition**: `attachment; filename="UserGuide_v2.pdf"` - -*(直接返回文件的二进制数据流)* - - -## 6. 触发/重试文档解析 - `parse` -**接口描述**: 手动触发文档的解析任务。通常在上传文件后、或修改了解析配置(如 `chunk_method`)后调用此接口。支持批量触发。 -**请求方法**: `POST` -**接口地址**: `/api/v1/datasets//chunks` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| dataset_id | string | 是 | **知识库 ID**。 | - -#### Body Parameters (JSON) -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| document_ids | array | 是 | **文档 ID 列表**。指定需要(重新)解析的文档 ID。 | - -**Request Example**: -```json -{ - "document_ids": ["doc_id_1", "doc_id_2"] -} -``` - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": null -} -``` - ---- - -## 7. 停止文档解析 - `stop_parsing` -**接口描述**: 停止当前正在进行的文档解析任务。 -**请求方法**: `DELETE` -**接口地址**: `/api/v1/datasets//chunks` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| dataset_id | string | 是 | **知识库 ID**。 | - -#### Body Parameters (JSON) -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| document_ids | array | 是 | **文档 ID 列表**。指定要停止解析的任务。 | - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": null -} -``` - ---- - -## 8. 获取切片列表 - `list_chunks` -**接口描述**: 获取指定文档已解析出的切片(Chunk)列表。支持分页和关键词搜索。返回结果包含文档的详细元数据和具体的切片内容。 -**请求方法**: `GET` -**接口地址**: `/api/v1/datasets//documents//chunks` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| dataset_id | string | 是 | **知识库 ID**。 | -| document_id | string | 是 | **文档 ID**。 | - -#### Query Parameters -| 参数名 | 类型 | 必填 | 默认值 | 说明 | -|---|---|---|---|---| -| page | int | 否 | 1 | **页码**。 | -| page_size | int | 否 | 30 | **每页数量**。 | -| keywords | string | 否 | - | **搜索关键词**。在切片内容中进行全文检索。 | -| id | string | 否 | - | **精确切片 ID**。若指定,则只返回该 ID 对应的切片。 | - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": { - "total": 150, - "chunks": [ - { - "id": "e457f92e3c0411ef8d4c0242ac120003_0", - "content": "RAGFlow 是一款基于深度文档理解的开源 RAG(检索增强生成)引擎。它旨在为各种规模的企业提供精简的 RAG 工作流。RAGFlow 结合了传统文档处理的稳健性与现代大语言模型(LLM)的生成能力,确保在处理复杂格式数据(如 PDF 表格、扫描件等)时依然能保持极高的召回率和准确性。", - "document_id": "doc_uuid_123", - "docnm_kwd": "RAGFlow_UserGuide_v2.pdf", - "important_keywords": ["RAGFlow", "开源", "深度文档理解", "LLM"], - "questions": ["什么是 RAGFlow?", "RAGFlow 的主要特点是什么?"], - "image_id": "", - "dataset_id": "kb_uuid_456", - "available": true, - "positions": [1] - }, - { - "id": "e457f92e3c0411ef8d4c0242ac120003_1", - "content": "主要特性:\n1. **深度文档解析**:内置 DeepDOC 识别引擎,精准还原表格、段落结构。\n2. **多路召回**:支持关键词 + 向量的混合检索。\n3. **可视化编排**:提供基于 Graph 的工作流编排能力。", - "document_id": "doc_uuid_123", - "docnm_kwd": "RAGFlow_UserGuide_v2.pdf", - "important_keywords": ["DeepDOC", "混合检索", "可视化编排"], - "questions": [], - "image_id": "img_uuid_789", - "dataset_id": "kb_uuid_456", - "available": true, - "positions": [2] - } - ], - "doc": { - "id": "doc_uuid_123", - "name": "RAGFlow_UserGuide_v2.pdf", - "chunk_count": 150, - "token_count": 45000, - "chunk_method": "naive", - "run": "DONE", - "status": "1", - "progress": 1.0, - "progress_msg": "Parsing finished", - "process_begin_at": "2024-05-13 10:05:00", - "process_duration": 45.2, - "meta_fields": { - "author": "RAGFlow Team", - "version": "2.0" - }, - "create_time": 1715623400123, - "create_date": "2024-05-13 10:03:20", - "update_time": 1715623450000, - "update_date": "2024-05-13 10:05:45", - "dataset_id": "kb_uuid_456" - } - } -} -``` - ---- - -## 9. 手动新增切片 - `add_chunk` -**接口描述**: 向指定文档中手动添加一个新的切片。系统会自动计算该切片的向量嵌入 (Embedding)。 -**请求方法**: `POST` -**接口地址**: `/api/v1/datasets//documents//chunks` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| dataset_id | string | 是 | **知识库 ID**。 | -| document_id | string | 是 | **文档 ID**。 | - -#### Body Parameters (JSON) -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| content | string | 是 | **切片内容**。手动输入的文本内容。 | -| important_keywords | array | 否 | **重要关键词**。用于关键词检索增强。 | -| questions | array | 否 | **预设问题**。用于 Q&A 检索模式增强。 | - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": { - "chunk": { - "id": "new_chunk_uuid_999", - "content": "这是管理员手动添加的一条补充切片,用于修正文档中缺失的关键信息。", - "document_id": "doc_uuid_123", - "docnm_kwd": "RAGFlow_UserGuide_v2.pdf", - "important_keywords": ["手动添加", "补充信息"], - "questions": ["如何手动添加切片?"], - "image_id": "", - "dataset_id": "kb_uuid_456", - "available": true, - "positions": [] - } - } -} -``` - ---- - -## 10. 修改切片信息 - `update_chunk` -**接口描述**: 修改已存在的切片内容、关键词、可用状态等。修改内容后,系统会自动重新计算向量。 -**请求方法**: `PUT` -**接口地址**: `/api/v1/datasets//documents//chunks/` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| dataset_id | string | 是 | **知识库 ID**。 | -| document_id | string | 是 | **文档 ID**。 | -| chunk_id | string | 是 | **切片 ID**。 | - -#### Body Parameters (JSON) -*(以下字段均为可选,仅传递需修改的字段)* - -| 参数名 | 类型 | 说明 | -|---|---|---| -| content | string | **新的切片内容**。 | -| important_keywords | array | **更新关键词列表**。覆盖原有列表。 | -| available | boolean | **启用/禁用**。`true`: 启用 (默认); `false`: 禁用 (检索时将忽略此切片)。 | - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": null -} -``` - ---- - -## 11. 删除切片 - `rm_chunk` -**接口描述**: 批量删除文档中的指定切片。 -**请求方法**: `DELETE` -**接口地址**: `/api/v1/datasets//documents//chunks` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| dataset_id | string | 是 | **知识库 ID**。 | -| document_id | string | 是 | **文档 ID**。 | - -#### Body Parameters (JSON) -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| chunk_ids | array | 是 | **切片 ID 列表**。 | - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "deleted 2 chunks", - "data": null -} -``` - - -## 12. 获取元数据摘要 - `metadata_summary` -**接口描述**: 获取知识库中所有文档的元数据摘要信息。通常用于前端展示知识库的数据分布概况,例如不同文件类型的数量统计、文件状态分布等。 -**请求方法**: `GET` -**接口地址**: `/api/v1/datasets//metadata/summary` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| dataset_id | string | 是 | **知识库 ID**。 | - -#### Query Parameters -无 - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": { - "summary": { - "total_doc_count": 120, - "total_token_count": 500000, - "file_type_distribution": { - "pdf": 80, - "docx": 30, - "txt": 10 - }, - "status_distribution": { - "1": 118, // 正常启用 - "0": 2 // 禁用 - }, - "custom_metadata": { - "author": { - "Alice": 50, - "Bob": 30 - }, - "department": { - "HR": 20, - "Engineering": 100 - } - } - } - } -} -``` - ---- - -## 13. 批量更新元数据 - `metadata_batch_update` -**接口描述**: 对知识库中的文档进行批量元数据修改。支持基于复杂的条件筛选文档,然后执行批量更新或删除元数据字段的操作。 -**请求方法**: `POST` -**接口地址**: `/api/v1/datasets//metadata/update` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| dataset_id | string | 是 | **知识库 ID**。 | - -#### Body Parameters (JSON) -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| selector | object | 否 | **筛选器**。定义要更新哪些文档。如果不传,可能作用于全量文档(请谨慎)。 | -| updates | array | 否 | **更新操作列表**。包含 `key` 和 `value`。 | -| deletes | array | 否 | **删除操作列表**。包含 `key`。 | - -**Request Example (复杂场景)**: -```json -{ - "selector": { - "document_ids": ["doc_id_101", "doc_id_102"], - "metadata_condition": { - "logic": "and", - "conditions": [ - {"key": "author", "value": "OldName", "operator": "eq"}, - {"key": "status", "value": "draft", "operator": "eq"} - ] - } - }, - "updates": [ - {"key": "author", "value": "Admin"}, - {"key": "reviewed_by", "value": "ManagerA"} - ], - "deletes": [ - {"key": "temp_tag"}, - {"key": "draft_flag"} - ] -} -``` - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": { - "updated": 2, // 实际更新成功的文档数量 - "matched_docs": 2 // 匹配到的文档数量 - } -} -``` - ---- - -## 14. 检索测试 (Hit Test) - `retrieval_test` -**接口描述**: 在指定的知识库中进行模拟检索测试。此接口用于验证分段(Chunk)质量、检索参数(相似度阈值、Top K)的效果,是调试 RAG 效果的核心工具。 -**请求方法**: `POST` -**接口地址**: `/api/v1/retrieval` -**鉴权方式**: Header `Authorization: Bearer ` -**注意**: 即使是简单的查询,由于包含较多配置参数,本接口也设计为 `POST` 请求。 - -### 请求参数 (Request) -#### Path Parameters -无 - -#### Body Parameters (JSON) -| 参数名 | 类型 | 必填 | 默认值 | 说明 | -|---|---|---|---|---| -| dataset_ids | array | 是 | - | **目标知识库 ID 列表**。支持跨多个知识库检索。 | -| question | string | 是 | - | **用户查询问题**。 | -| similarity_threshold | float | 否 | 0.2 | **相似度阈值**。低于此分数的 Chunk 将被过滤。 | -| vector_similarity_weight | float | 否 | 0.3 | **向量权重**。混合检索时,向量检索结果的权重 (0~1)。剩余权重归于关键词检索。 | -| top_k | int | 否 | 1024 | **初筛数量**。向量检索返回的候选切片数量。 | -| rerank_id | string | 否 | - | **重排模型 ID**。若指定,将对检索结果进行 Rerank 二次排序。 | -| highlight | boolean | 否 | true | **高亮匹配**。是否在返回内容中高亮关键词。 | -| keyword | boolean | 否 | false | **关键词增强**。是否使用 LLM 提取问题关键词以增强检索。 | - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": { - "total": 15, - "chunks": [ - { - "id": "e457f92e3c0411ef8d4c0242ac120003_12", - "content": "RAGFlow 支持多种文档解析模式,其中 DeepDOC 模式特别适合处理包含大量表格和扫描件的 PDF 文档。它使用深度学习模型识别文档布局,精准提取表格内容。", - "document_id": "doc_uuid_123", - "dataset_id": "kb_uuid_456", - "document_name": "RAGFlow_UserGuide_v2.pdf", - "document_keyword": "RAGFlow_UserGuide_v2.pdf", - "similarity": 0.88, - "vector_similarity": 0.85, - "term_similarity": 0.92, - "index": 12, - "highlight": "RAGFlow 支持多种文档解析模式,其中 DeepDOC 模式特别适合处理包含大量表格和扫描件的 PDF 文档。", - "important_keywords": ["DeepDOC", "PDF"], - "questions": ["DeepDOC 模式有什么用?"], - "image_id": "", - "positions": [12] - }, - { - "id": "e457f92e3c0411ef8d4c0242ac120003_15", - "content": "如果文档主要由纯文本构成,建议使用 Naive 模式。该模式解析速度快,适合通用场景。", - "document_id": "doc_uuid_123", - "dataset_id": "kb_uuid_456", - "document_name": "RAGFlow_UserGuide_v2.pdf", - "document_keyword": "RAGFlow_UserGuide_v2.pdf", - "similarity": 0.45, - "vector_similarity": 0.40, - "term_similarity": 0.50, - "index": 15, - "highlight": "如果文档主要由纯文本构成,建议使用 Naive 模式。", - "important_keywords": ["Naive", "纯文本"], - "questions": [], - "image_id": "", - "positions": [15] - } - ], - "doc_aggs": [ - { - "doc_name": "RAGFlow_UserGuide_v2.pdf", - "doc_id": "doc_uuid_123", - "count": 2 - } - ] - } -} -``` diff --git a/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_File接口详解.md b/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_File接口详解.md deleted file mode 100644 index c02830f9..00000000 --- a/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_File接口详解.md +++ /dev/null @@ -1,503 +0,0 @@ -# RAGFlow 文件管理接口详解 (File Management API) - -## 1. 上传文件 - `upload` -**接口描述**: 上传一个或多个文件到指定文件夹。支持多文件上传 (Multipart)。上传成功后,文件将存储在 MinIO/S3 中,并返回文件元数据列表。 -**请求方法**: `POST` -**接口地址**: `/api/v1/file/upload` -**鉴权方式**: Header `Authorization: Bearer ` -**Content-Type**: `multipart/form-data` - -### 请求参数 (Request) -#### Form Data Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| file | file | 是 | **文件二进制流**。支持多文件上传。 | -| parent_id | string | 否 | **父级目录 ID**。如果省略,默认上传到根目录 (root)。 | - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": [ - { - "id": "e457f92e3c0411ef8d4c0242ac120003", - "parent_id": "root_folder_id_123", - "tenant_id": "tenant_uuid_456", - "created_by": "user_uuid_789", - "type": "pdf", - "name": "ProjectReport.pdf", - "location": "ProjectReport.pdf", - "size": 204800, - "source_type": "", - "create_time": 1715623400123, - "create_date": "2024-05-13 10:03:20", - "update_time": 1715623400123, - "update_date": "2024-05-13 10:03:20" - } - ] -} -``` - ---- - -## 2. 新建文件夹 - `create` -**接口描述**: 在指定父目录下创建一个新的文件夹(逻辑目录)。 -**请求方法**: `POST` -**接口地址**: `/api/v1/file/create` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Body Parameters (JSON) -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| name | string | 是 | **文件夹名称**。同一目录下不可重名。 | -| parent_id | string | 否 | **父级目录 ID**。省略则默认为根目录。 | -| type | string | 是 | **类型**。固定值为 `FOLDER` 创建文件夹。 | - -**Request Example**: -```json -{ - "name": "Year2024_Reports", - "parent_id": "root_folder_id_123", - "type": "FOLDER" -} -``` - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": { - "id": "folder_uuid_abc", - "parent_id": "root_folder_id_123", - "tenant_id": "tenant_uuid_456", - "created_by": "user_uuid_789", - "name": "Year2024_Reports", - "location": "", - "size": 0, - "type": "folder", - "source_type": "", - "create_time": 1715623500000, - "create_date": "2024-05-13 10:05:00", - "update_time": 1715623500000, - "update_date": "2024-05-13 10:05:00" - } -} -``` - ---- - -## 3. 获取文件列表 - `list_files` -**接口描述**: 分页获取指定文件夹下的文件和子文件夹列表。支持按名称模糊搜索。 -**请求方法**: `GET` -**接口地址**: `/api/v1/file/list` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Query Parameters -| 参数名 | 类型 | 必填 | 默认值 | 说明 | -|---|---|---|---|---| -| parent_id | string | 否 | (Root) | **父级目录 ID**。指定要查看的目录 ID。 | -| keywords | string | 否 | - | **搜索关键词**。按文件名模糊搜索。 | -| page | int | 否 | 1 | **页码**。 | -| page_size | int | 否 | 15 | **每页数量**。 | -| orderby | string | 否 | "create_time" | **排序字段**。 | -| desc | boolean | 否 | true | **是否降序**。 | - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": { - "total": 25, - "parent_folder": { - "id": "root_folder_id_123", - "parent_id": "", - "tenant_id": "tenant_uuid_456", - "created_by": "system", - "name": "ROOT", - "location": "", - "size": 0, - "type": "folder", - "source_type": "", - "create_time": 1710000000000, - "create_date": "2024-03-01 00:00:00", - "update_time": 1710000000000, - "update_date": "2024-03-01 00:00:00" - }, - "files": [ - { - "id": "folder_uuid_abc", - "parent_id": "root_folder_id_123", - "tenant_id": "tenant_uuid_456", - "created_by": "user_uuid_789", - "name": "Year2024_Reports", - "location": "", - "size": 0, - "type": "folder", - "source_type": "", - "create_time": 1715623500000, - "create_date": "2024-05-13 10:05:00", - "update_time": 1715623500000, - "update_date": "2024-05-13 10:05:00" - }, - { - "id": "e457f92e3c0411ef8d4c0242ac120003", - "parent_id": "root_folder_id_123", - "tenant_id": "tenant_uuid_456", - "created_by": "user_uuid_789", - "name": "ProjectReport.pdf", - "location": "ProjectReport.pdf", - "size": 204800, - "type": "pdf", - "source_type": "", - "create_time": 1715623400123, - "create_date": "2024-05-13 10:03:20", - "update_time": 1715623400123, - "update_date": "2024-05-13 10:03:20" - } - ] - } -} -``` - ---- - -## 4. 获取文件流 (下载) - `get` -**接口描述**: 通过文件 ID 下载文件内容。不同于获取元数据,该接口直接返回文件的二进制流(Octet-stream 或 Image 等)。 -**请求方法**: `GET` -**接口地址**: `/api/v1/file/get/` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| file_id | string | 是 | **文件 ID**。 | - -### 响应参数 (Response) -**Content-Type**: `application/octet-stream` (或具体 MIME 类型如 `image/png`) - -*(返回二进制文件流)* - ---- - -## 5. 下载附件 - `download_attachment` -**接口描述**: 这是一个通用的附件下载接口,通常用于系统内部引用或特定路径的下载。它使用 `attachment_id`(通常对应 MinIO 中的存储路径/Key)来检索文件。 -**请求方法**: `GET` -**接口地址**: `/api/v1/file/download/` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| attachment_id | string | 是 | **附件 ID / 存储 Key**。通常对应底层存储的唯一标识符。 | - -#### Query Parameters -| 参数名 | 类型 | 必填 | 默认值 | 说明 | -|---|---|---|---|---| -| ext | string | 否 | "markdown" | **文件扩展名**。用于设置响应头中的 Content-Type。 | - -### 响应参数 (Response) -**Content-Type**: `application/octet-stream` (或根据 ext 参数推断) - -*(返回二进制文件流)* - - -## 6. 重命名文件/文件夹 - `rename` -**接口描述**: 修改文件或文件夹的名称。对于文件,通常不允许修改扩展名(后缀)。 -**请求方法**: `POST` -**接口地址**: `/api/v1/file/rename` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Body Parameters (JSON) -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| file_id | string | 是 | **目标文件/文件夹 ID**。 | -| name | string | 是 | **新名称**。需符合文件命名规范,且同一目录下不可重名。 | - -**Request Example**: -```json -{ - "file_id": "file_uuid_123", - "name": "New_Report_Final.pdf" -} -``` - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": true -} -``` - ---- - -## 7. 移动文件/文件夹 - `move` -**接口描述**: 批量移动文件或文件夹到指定的目录 (Move)。 -**请求方法**: `POST` -**接口地址**: `/api/v1/file/mv` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Body Parameters (JSON) -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| src_file_ids | array | 是 | **源文件/文件夹 ID 列表**。支持批量移动。 | -| dest_file_id | string | 是 | **目标文件夹 ID**。必须是已存在的文件夹 ID。 | - -**Request Example**: -```json -{ - "src_file_ids": ["file_id_1", "file_id_2"], - "dest_file_id": "folder_id_target" -} -``` - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": true -} -``` - ---- - -## 8. 删除文件/文件夹 - `rm` -**接口描述**: 批量删除文件或文件夹。如果是文件夹,将递归删除其下的所有内容。此操作不可恢复。 -**请求方法**: `POST` -**接口地址**: `/api/v1/file/rm` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Body Parameters (JSON) -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| file_ids | array | 是 | **待删除的文件/文件夹 ID 列表**。 | - -**Request Example**: -```json -{ - "file_ids": ["file_uuid_to_delete_1", "folder_uuid_to_delete_2"] -} -``` - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": true -} -``` - ---- - -## 9. 文件转知识库文档 - `convert` -**接口描述**: 将已上传的文件(File)导入到指定的知识库(Dataset)中,转换为文档(Document)并进行解析。这是一个“文件 -> 知识库”的桥接操作。 -**请求方法**: `POST` -**接口地址**: `/api/v1/file/convert` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Body Parameters (JSON) -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| file_ids | array | 是 | **源文件 ID 列表**。必须是已存在于文件管理系统中的 ID。 | -| kb_ids | array | 是 | **目标知识库 ID 列表**。文件将被同时导入到这些知识库中。 | - -**Request Example**: -```json -{ - "file_ids": ["file_uuid_pdf_1", "file_uuid_txt_2"], - "kb_ids": ["dataset_uuid_A"] -} -``` - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": [ - { - "id": "mapping_uuid_1", - "file_id": "file_uuid_pdf_1", - "document_id": "doc_uuid_created_in_kb_A", - "create_time": 1715623600123, - "create_date": "2024-05-13 10:06:40", - "update_time": 1715623600123, - "update_date": "2024-05-13 10:06:40" - }, - { - "id": "mapping_uuid_2", - "file_id": "file_uuid_txt_2", - "document_id": "doc_uuid_created_in_kb_A", - "create_time": 1715623600124, - "create_date": "2024-05-13 10:06:40", - "update_time": 1715623600124, - "update_date": "2024-05-13 10:06:40" - } - ] -} -``` - - -## 10. 获取根目录信息 - `get_root_folder` -**接口描述**: 获取当前用户的根目录文件夹信息。每个用户(Tenant)都有且仅有一个系统自动创建的根目录。 -**请求方法**: `GET` -**接口地址**: `/api/v1/file/root_folder` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Query Parameters -无 - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": { - "root_folder": { - "id": "root_folder_id_123", - "parent_id": "", - "tenant_id": "tenant_uuid_456", - "created_by": "system", - "name": "ROOT", - "location": "", - "size": 0, - "type": "folder", - "source_type": "", - "create_time": 1710000000000, - "create_date": "2024-03-01 00:00:00", - "update_time": 1710000000000, - "update_date": "2024-03-01 00:00:00" - } - } -} -``` - ---- - -## 11. 获取父目录信息 - `get_parent_folder` -**接口描述**: 获取指定文件或文件夹的直接父级目录信息。 -**请求方法**: `GET` -**接口地址**: `/api/v1/file/parent_folder` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Query Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| file_id | string | 是 | **当前文件/文件夹 ID**。 | - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": { - "parent_folder": { - "id": "root_folder_id_123", - "parent_id": "", - "tenant_id": "tenant_uuid_456", - "created_by": "system", - "name": "ROOT", - "location": "", - "size": 0, - "type": "folder", - "source_type": "", - "create_time": 1710000000000, - "create_date": "2024-03-01 00:00:00", - "update_time": 1710000000000, - "update_date": "2024-03-01 00:00:00" - } - } -} -``` - ---- - -## 12. 获取完整路径 (面包屑) - `get_all_parent_folders` -**接口描述**: 获取指定文件或文件夹的所有上级目录列表,形成完整的路径链。返回的列表顺序通常是从根目录到直接父目录(有序)。此接口常用于前端展示“面包屑导航” (Breadcrumbs)。 -**请求方法**: `GET` -**接口地址**: `/api/v1/file/all_parent_folder` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Query Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| file_id | string | 是 | **目标文件/文件夹 ID**。 | - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": { - "parent_folders": [ - { - "id": "root_folder_id_123", - "parent_id": "", - "tenant_id": "tenant_uuid_456", - "created_by": "system", - "name": "ROOT", - "location": "", - "size": 0, - "type": "folder", - "source_type": "", - "create_time": 1710000000000, - "create_date": "2024-03-01 00:00:00", - "update_time": 1710000000000, - "update_date": "2024-03-01 00:00:00" - }, - { - "id": "folder_project_a_id", - "parent_id": "root_folder_id_123", - "tenant_id": "tenant_uuid_456", - "created_by": "user_id_001", - "name": "Project A Docs", - "location": "", - "size": 0, - "type": "folder", - "source_type": "", - "create_time": 1715000000000, - "create_date": "2024-05-01 09:00:00", - "update_time": 1715000000000, - "update_date": "2024-05-01 09:00:00" - } - ] - } -} -``` diff --git a/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_SearchBot_AgentBot接口详解.md b/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_SearchBot_AgentBot接口详解.md deleted file mode 100644 index 00f67011..00000000 --- a/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_SearchBot_AgentBot接口详解.md +++ /dev/null @@ -1,228 +0,0 @@ -# RAGFlow 搜索机器人 & AgentBot 接口详解 (SearchBot & AgentBot) - -## 1. 搜索机器人对话 - `ask_about_embedded` -**接口描述**: 面向 **SearchBot (搜索机器人)** 的核心对话接口,通常用于嵌入式知识库问答场景。与普通 Chat 不同,它更侧重于从指定的 `kb_ids` 中直接检索答案,且鉴权使用 `Authorization: Bearer ` (即 API Key)。 -**请求方法**: `POST` -**接口地址**: `/api/v1/searchbots/ask` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Body Parameters (JSON) -| 参数名 | 类型 | 必填 | 默认值 | 说明 | -|---|---|---|---|---| -| question | string | 是 | - | **用户问题**。 | -| kb_ids | array | 是 | - | **知识库 ID 列表**。限定从哪些知识库中检索。 | -| search_id | string | 否 | - | **搜索应用 ID**。如果指定,将使用该搜索应用的配置 (Search App Config)。 | - -**Request Example**: -```json -{ - "question": "What is the refund policy?", - "kb_ids": ["dataset_uuid_1", "dataset_uuid_2"], - "search_id": "search_app_uuid_abc" -} -``` - -### 响应参数 (Stream Response) -**Content-Type**: `text/event-stream` - -```text -data:{"code": 0, "message": "", "data": {"answer": "According to the ", "reference": {}}} - -data:{"code": 0, "message": "", "data": {"answer": "policy, refunds are processed within 7 days.", "reference": {"chunk_1": {"content_with_weight": "Refunds...", "doc_name": "policy.pdf"}}}} - -data:{"code": 0, "message": "", "data": true} // 结束标志 -``` - ---- - -## 2. 获取思维导图 - `mindmap` -**接口描述**: 根据用户的查询或对话上下文,生成用于前端展示的思维导图数据结构。这通常用于帮助用户梳理复杂的搜索结果或知识结构。 -**请求方法**: `POST` -**接口地址**: `/api/v1/searchbots/mindmap` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Body Parameters (JSON) -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| question | string | 是 | **用户问题/主题**。 | -| kb_ids | array | 是 | **知识库 ID 列表**。 | -| search_id | string | 否 | **搜索应用 ID**。 | - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": { - "root": { - "text": "Refund Policy", // 根节点文本 - "children": [ - { - "text": "Conditions", - "children": [ - { "text": "Product defect" }, - { "text": "Shipping error" } - ] - }, - { - "text": "Timeline", - "children": [ - { "text": "7-14 business days" } - ] - } - ] - } - } -} -``` - ---- - -## 3. 获取相关推荐问题 - `related_questions_embedded` -**接口描述**: 根据用户当前的问题,生成一组相关的推荐问题 (Suggest Questions)。常用于搜索结果页底部的“猜你想问”。 -**请求方法**: `POST` -**接口地址**: `/api/v1/searchbots/related_questions` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Body Parameters (JSON) -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| question | string | 是 | **用户当前问题**。 | -| search_id | string | 否 | **搜索应用 ID**。 | - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": [ - "How to apply for a refund online?", - "What items are non-refundable?", - "Contact customer support" - ] -} -``` - ---- - -## 4. 获取 AgentBot 输入项 - `begin_inputs` -**接口描述**: 获取 **AgentBot** (嵌入式 Agent) 的初始化信息,特别是前置输入项 (Prolog/Inputs)。这用于在用户开始对话前,展示一个表单让用户输入必要信息(如姓名、邮箱、API Key 等),这些信息会被传递给 Agent 的 `Begin` 节点。 -**请求方法**: `GET` -**接口地址**: `/api/v1/agentbots//inputs` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| agent_id | string | 是 | **Agent ID**。 | - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": { - "title": "Booking Assistant", - "avatar": "http://...", - "prologue": "Welcome! Please tell me your details.", - "inputs": { // `Begin` 节点定义的输入变量 - "user_name": { - "type": "string", - "description": "Your Name", - "required": true - }, - "email": { - "type": "string", - "description": "Contact Email", - "required": false - } - }, - "mode": "chat" - } -} -``` - ---- - -## 5. AgentBot 对话交互 - `agent_bot_completions` -**接口描述**: 面向 **AgentBot** 的嵌入式对话接口。与 `agent_completions` 类似,但它专为无需登录的 C 端用户设计,通过 API Key 鉴权。它支持完整的 Agent 流程执行和流式响应。 -**请求方法**: `POST` -**接口地址**: `/api/v1/agentbots//completions` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| agent_id | string | 是 | **Agent ID**。 | - -#### Body Parameters (JSON) -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| session_id | string | 是 | **会话 ID**。 | -| inputs | object | 否 | **前置输入值**。对应 `begin_inputs` 中定义的变量,如 `{"user_name": "Alice"}`。 | -| query | string | 否 | **用户输入**。 | -| stream | boolean | 否 | **是否流式**。默认 `true`。 | - -**Request Example**: -```json -{ - "session_id": "session_uuid_123", - "inputs": { - "user_name": "Bob" - }, - "query": "I want to book a room.", - "stream": true -} -``` - -### 响应参数 (Stream Response) -**Content-Type**: `text/event-stream` - -```text -data:{"event": "message", "data": {"content": "Hello Bob, ", "reference": {}}} - -data:{"event": "message", "data": {"content": "when do you want to check in?", "reference": {}}} -``` - ---- - -## 6. Agent OpenAI 兼容接口 - `agents_completion_openai_compatibility` -**接口描述**: 专门针对 Agent 的 **OpenAI 兼容** 接口。这使得外部工具可以像调用 OpenAI Chat Completion 一样调用 RAGFlow 配置好的复杂 Agent。 -**请求方法**: `POST` -**接口地址**: `/api/v1/agents_openai//chat/completions` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Path Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| agent_id | string | 是 | **Agent ID**。 | - -#### Body Parameters (OpenAI Standard) -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| messages | array | 是 | 包含 `role`, `content` 的消息数组。 | -| model | string | 是 | 占位符,任意字符串。 | -| stream | boolean | 否 | 默认 `true`。 | - -### 响应参数 (Stream Response - OpenAI Format) -**Content-Type**: `text/event-stream` - -```text -data: {"id": "agent-chat-uuid", "object": "chat.completion.chunk", "created": 1715000000, "model": "ragflow_agent", "choices": [{"index": 0, "delta": {"role": "assistant", "content": ""}, "finish_reason": null}]} - -data: {"id": "agent-chat-uuid", "object": "chat.completion.chunk", "created": 1715000001, "model": "ragflow_agent", "choices": [{"index": 0, "delta": {"content": "Processing your request..."}, "finish_reason": null}]} - -data: [DONE] -``` diff --git a/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_Session_Extra接口详解.md b/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_Session_Extra接口详解.md deleted file mode 100644 index ced5c3cb..00000000 --- a/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_Session_Extra接口详解.md +++ /dev/null @@ -1,168 +0,0 @@ -# RAGFlow SearchBot 补充与通用会话接口详解 (Session Extras) - -## 1. 获取引用详情 - `detail_share_embedded` -**接口描述**: 当用户点击 SearchBot 回复中的引用标号 (e.g., [1]) 时,调用此接口获取该引用的详细内容(包括原文片段、来源文档名等)。此接口通常用于前端展示“引用来源”侧边栏或弹窗。它使用 API Key (Beta Token) 进行鉴权。 -**请求方法**: `GET` -**接口地址**: `/api/v1/searchbots/detail` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Query Parameters -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| search_id | string | 是 | **搜索应用/SearchBot ID**。此接口需要验证调用者是否有权访问该 SearchBot。 | - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": { - "id": "search_app_uuid_123", - "title": "IT Knowledge Base", - "description": "Tech support search bot", - "kb_ids": ["kb_uuid_1", "kb_uuid_2"], - "search_config": { - "top_k": 5, - "similarity_threshold": 0.5 - }, - // 注意:此接口目前主要返回 Search App 的详情配置, - // 前端通常使用 search_config 或其他信息来辅助展示引用。 - // 具体引用内容的文本通常已包含在 `ask` 接口的 `reference` 字段中。 - } -} -``` - ---- - -## 2. SearchBot 检索测试 - `retrieval_test_embedded` -**接口描述**: 面向 SearchBot 的**检索效果测试**接口。它不通过 LLM 生成答案,而是直接返回 RAG 检索到的文档片段 (`chunks`)。这用于调试 SearchBot 的检索参数(如相似度阈值、Top-K)是否合理。 -**请求方法**: `POST` -**接口地址**: `/api/v1/searchbots/retrieval_test` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Body Parameters (JSON) -| 参数名 | 类型 | 必填 | 默认值 | 说明 | -|---|---|---|---|---| -| kb_id | string/array | 是 | - | **知识库 ID** (或列表)。支持单个 ID 字符串或 ID 列表。 | -| question | string | 是 | - | **测试查询词**。 | -| page | int | 否 | 1 | **页码**。 | -| size | int | 否 | 30 | **每页数量**。 | -| doc_ids | array | 否 | - | **限定文档 ID**。仅在指定文档中检索。 | -| similarity_threshold | float | 否 | 0.0 | **相似度阈值**。 | -| top_k | int | 否 | 1024 | **Top-K 数量**。 | -| highlight | boolean | 否 | false | **高亮匹配**。是否在返回内容中标记匹配关键词。 | - -**Request Example**: -```json -{ - "kb_id": ["dataset_uuid_1"], - "question": "refund policy", - "top_k": 5, - "highlight": true -} -``` - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": { - "total": 12, // 命中总是 - "chunks": [ - { - "content_with_weight": "Refunds are processed within 7 days...", // 支持高亮 - "doc_name": "policy.pdf", - "doc_id": "doc_uuid_101", - "similarity": 0.92, - "img_id": "" - }, - { - "content_with_weight": "Product return guidelines...", - "doc_name": "guidelines.docx", - "doc_id": "doc_uuid_102", - "similarity": 0.88 - } - ], - "labels": [] // 如果启用了查询标签功能 - } -} -``` - ---- - -## 3. 通用会话问答 - `ask_about` -**接口描述**: **内部/测试用**的通用会话问答接口。与 `ask_embedded` 不同,此接口通常用于 RAGFlow 控制台内部的“调试”或“预览”功能,鉴权依赖用户的登录 Token (User Token),且必须显式指定 `dataset_ids`。它不绑定特定的 Chat/Agent/SearchBot 配置。 -**请求方法**: `POST` -**接口地址**: `/api/v1/sessions/ask` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Body Parameters (JSON) -| 参数名 | 类型 | 必填 | 说明 | -|---|---|---|---| -| question | string | 是 | **用户问题**。 | -| dataset_ids | array | 是 | **知识库 ID 列表**。必须是当前用户有权访问的知识库。 | - -**Request Example**: -```json -{ - "question": "Summary of report", - "dataset_ids": ["dataset_uuid_internal_1"] -} -``` - -### 响应参数 (Stream Response) -**Content-Type**: `text/event-stream` - -```text -data:{"code": 0, "message": "", "data": {"answer": "Here is the summary:", "reference": {}}} - -data:{"code": 0, "message": "", "data": {"answer": " The report indicates...", "reference": {}}} - -data:{"code": 0, "message": "", "data": true} // 结束 -``` - ---- - -## 4. 通用相关问题 - `related_questions` -**接口描述**: **内部/测试用**的通用相关问题推荐接口。根据用户的问题和行业背景,利用 LLM 生成推荐问题。通常用于内部测试台。 -**请求方法**: `POST` -**接口地址**: `/api/v1/sessions/related_questions` -**鉴权方式**: Header `Authorization: Bearer ` - -### 请求参数 (Request) -#### Body Parameters (JSON) -| 参数名 | 类型 | 必填 | 默认值 | 说明 | -|---|---|---|---|---| -| question | string | 是 | - | **原始问题/关键词**。 | -| industry | string | 否 | "" | **行业背景** (e.g., "Finance", "Healthcare")。帮助 LLM 生成更专业的推荐。 | - -**Request Example**: -```json -{ - "question": "Data privacy", - "industry": "IT" -} -``` - -### 响应参数 (Response) -**Content-Type**: `application/json` - -```json -{ - "code": 0, - "message": "success", - "data": [ - "GDPR compliance checklist", - "Data encryption standards", - "User consent management" - ] -} -``` diff --git a/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_外部API清单_按文件分组.md b/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_外部API清单_按文件分组.md deleted file mode 100644 index 7ea6d149..00000000 --- a/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/RAGFlow_外部API清单_按文件分组.md +++ /dev/null @@ -1,98 +0,0 @@ -# RAGFlow External API Reference (Grouped by File) - -## File: `api/apps/sdk/agents.py` -| Function Name | URL Pattern | Notes | -|---|---|---| -| `list_agents` | `/api/v1/agents` | List Agents | -| `create_agent` | `/api/v1/agents` | Create Agent | -| `update_agent` | `/api/v1/agents/` | Update Agent | -| `delete_agent` | `/api/v1/agents/` | Delete Agent | -| `webhook` | `/api/v1/webhook_test/` | Webhook Test | -| `webhook_trace` | `/api/v1/webhook_trace/` | Webhook Trace | - -## File: `api/apps/sdk/chat.py` -| Function Name | URL Pattern | Notes | -|---|---|---| -| `create` | `/api/v1/chats` | Create Chat | -| `delete_chats` | `/api/v1/chats` | Delete Chat | -| `list_chat` | `/api/v1/chats` | List Chats | -| `update` | `/api/v1/chats/` | Update Chat | - -## File: `api/apps/sdk/dataset.py` -| Function Name | URL Pattern | Notes | -|---|---|---| -| `create` | `/api/v1/datasets` | Create Dataset | -| `delete` | `/api/v1/datasets` | Delete Dataset | -| `list_datasets` | `/api/v1/datasets` | List Datasets | -| `update` | `/api/v1/datasets/` | Update Dataset | -| `knowledge_graph` | `/api/v1/datasets//knowledge_graph` | Knowledge Graph | -| `delete_knowledge_graph` | `/api/v1/datasets//knowledge_graph` | Delete Knowledge Graph | -| `run_graphrag` | `/api/v1/datasets//run_graphrag` | Run GraphRAG | -| `run_raptor` | `/api/v1/datasets//run_raptor` | Run Raptor | -| `trace_graphrag` | `/api/v1/datasets//trace_graphrag` | Trace GraphRAG | -| `trace_raptor` | `/api/v1/datasets//trace_raptor` | Trace Raptor | - -## File: `api/apps/sdk/dify_retrieval.py` -| Function Name | URL Pattern | Notes | -|---|---|---| -| `retrieval` | `/api/v1/dify/retrieval` | Dify Retrieval | - -## File: `api/apps/sdk/doc.py` -| Function Name | URL Pattern | Notes | -|---|---|---| -| `parse` | `/api/v1/datasets//chunks` | Parse Document Chunks | -| `stop_parsing` | `/api/v1/datasets//chunks` | Stop Parsing | -| `upload` | `/api/v1/datasets//documents` | Upload Document | -| `list_docs` | `/api/v1/datasets//documents` | List Documents | -| `delete` | `/api/v1/datasets//documents` | Delete Document | -| `update_doc` | `/api/v1/datasets//documents/` | Update Document | -| `download` | `/api/v1/datasets//documents/` | Download Document | -| `list_chunks` | `/api/v1/datasets//documents//chunks` | List Chunks | -| `add_chunk` | `/api/v1/datasets//documents//chunks` | Add Chunk | -| `update_chunk` | `/api/v1/datasets//documents//chunks/` | Update Chunk | -| `rm_chunk` | `/api/v1/datasets//documents//chunks` | Remove Chunk | -| `metadata_summary` | `/api/v1/datasets//metadata/summary` | Metadata Summary | -| `metadata_batch_update` | `/api/v1/datasets//metadata/update` | Batch Update Metadata | -| `retrieval_test` | `/api/v1/retrieval` | Retrieval Test | - -## File: `api/apps/sdk/files.py` -| Function Name | URL Pattern | Notes | -|---|---|---| -| `get_all_parent_folders` | `/api/v1/file/all_parent_folder` | Get All Parent Folders | -| `convert` | `/api/v1/file/convert` | File Convert | -| `create` | `/api/v1/file/create` | File Create | -| `download_attachment` | `/api/v1/file/download/` | Download Attachment | -| `get` | `/api/v1/file/get/` | Get File | -| `list_files` | `/api/v1/file/list` | List Files | -| `move` | `/api/v1/file/mv` | Move File | -| `get_parent_folder` | `/api/v1/file/parent_folder` | Get Parent Folder | -| `rename` | `/api/v1/file/rename` | Rename File | -| `rm` | `/api/v1/file/rm` | Remove File | -| `get_root_folder` | `/api/v1/file/root_folder` | Get Root Folder | -| `upload` | `/api/v1/file/upload` | Upload File | - -## File: `api/apps/sdk/session.py` -| Function Name | URL Pattern | Notes | -|---|---|---| -| `agent_bot_completions` | `/api/v1/agentbots//completions` | Agent Bot completion | -| `begin_inputs` | `/api/v1/agentbots//inputs` | Get Agent Bot inputs | -| `agent_completions` | `/api/v1/agents//completions` | Agent completion | -| `create_agent_session` | `/api/v1/agents//sessions` | Create Agent Session | -| `list_agent_session` | `/api/v1/agents//sessions` | List Agent Sessions | -| `delete_agent_session` | `/api/v1/agents//sessions` | Delete Agent Session | -| `agents_completion_openai_compatibility` | `/api/v1/agents_openai//chat/completions` | OpenAI compatible Agent completion | -| `chatbot_completions` | `/api/v1/chatbots//completions` | Chatbot completion | -| `chatbots_inputs` | `/api/v1/chatbots//info` | Chatbot info | -| `chat_completion` | `/api/v1/chats//completions` | Chat completion | -| `create` | `/api/v1/chats//sessions` | Create Chat Session | -| `list_session` | `/api/v1/chats//sessions` | List Chat Sessions | -| `delete` | `/api/v1/chats//sessions` | Delete Chat Session | -| `update` | `/api/v1/chats//sessions/` | Update Chat Session | -| `chat_completion_openai_like` | `/api/v1/chats_openai//chat/completions` | OpenAI compatible Chat completion | -| `ask_about_embedded` | `/api/v1/searchbots/ask` | Searchbot Ask | -| `detail_share_embedded` | `/api/v1/searchbots/detail` | Searchbot Detail | -| `mindmap` | `/api/v1/searchbots/mindmap` | Searchbot Mindmap | -| `related_questions_embedded` | `/api/v1/searchbots/related_questions` | Searchbot Related Questions | -| `retrieval_test_embedded` | `/api/v1/searchbots/retrieval_test` | Searchbot Retrieval Test | -| `ask_about` | `/api/v1/sessions/ask` | Session Ask | -| `related_questions` | `/api/v1/sessions/related_questions` | Session Related Questions | diff --git a/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/README.md b/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/README.md deleted file mode 100644 index ee362870..00000000 --- a/main/manager-api/src/main/java/xiaozhi/modules/knowledge/doc/README.md +++ /dev/null @@ -1,45 +0,0 @@ -# RAGFlow API 接口文档索引 (Unofficial Detailed Guide) - -本文档汇集了 RAGFlow 核心模块的 API 详解。所有文档均遵循 **Zero Omissions (无省略)** 原则,全字段展开并包含中文注释。 - -## 📚 1. 知识库与文档管理 (Knowledge & Documents) -核心的数据管理模块,负责上传文件、解析文档与建立索引。 - -- **[知识库管理 (Dataset)](./RAGFlow_Dataset接口详解.md)** - - 涵盖知识库的创建、列表查询、更新、删除等接口。 -- **[文档处理 (Document)](./RAGFlow_Document接口详解.md)** - - 涵盖文档的上传 (Upload)、解析配置更新 (Update)、解析状态查询 (Run Status)。 - - **切片管理**: 解析后的 Chunk 列表查询、增删改查。 - - **检索测试**: 直接对知识库进行召回测试 (Retrieval Test)。 -- **[文件管理 (File)](./RAGFlow_File接口详解.md)** - - 类似网盘的文件操作体系。 - - **CRUD**: 上传、下载、列表。 - - **目录**: 文件夹创建、面包屑导航 (`get_all_parent_folders`)。 - - **操作**: 移动、重命名、删除、导入知识库 (`convert`). - -## 💬 2. 聊天助手 (Chat Assistant) -RAGFlow 原生的对话助手体系,基于 Assistant (Dialog) 模型。 - -- **[会话管理 (Chat Session)](./RAGFlow_Chat_Session接口详解.md)** - - 管理 `/chats/` 下的会话生命周期。 - - 创建会话、获取历史记录、重命名、批量删除。 -- **[对话交互 (Chat Completion)](./RAGFlow_Chat_Completion接口详解.md)** - - **Core Chat**: 原生流式对话 (`/chats//completions`), 支持引用 (`quote`)。 - - **OpenAI Compatible**: 完美兼容 OpenAI `/v1/chat/completions` 协议。 - - **Embedded Bot**: 面向 C 端嵌入窗口的对话接口 (`/chatbots/`). - -## 🤖 3. Agent 与 机器人 (Agent & Bots) -基于 Graph (DAG) 编排的复杂应用与各类机器人扩展。 - -- **[Agent 与 Dify 兼容 (Agent & Dify)](./RAGFlow_Agent_Dify接口详解.md)** - - **Agent Session**: Agent 的会话管理与流式对话 (`agent_completions`)。 - - **Dify Adapter**: 兼容 Dify 协议的检索接口 (`retrieval`). -- **[SearchBot 与 AgentBot](./RAGFlow_SearchBot_AgentBot接口详解.md)** - - **SearchBot**: 纯搜索机器人,支持思维导图 (`mindmap`)、相关问题 (`related_questions`). - - **AgentBot**: 嵌入式 Agent,支持前置表单 (`begin_inputs`). - - **Agent OpenAI**: Agent 的 OpenAI 兼容接口。 - -## 🛠️ 4. 其他 (Extras) -- **[通用与补充接口 (Session Extras)](./RAGFlow_Session_Extra接口详解.md)** - - **引用详情**: 获取 SearchBot 引用来源 (`detail_share_embedded`). - - **通用问答**: 内部调试用的直接问答 (`ask_about`). diff --git a/main/manager-api/src/main/resources/db/changelog/202604161357.sql b/main/manager-api/src/main/resources/db/changelog/202604161357.sql new file mode 100644 index 00000000..f09bd829 --- /dev/null +++ b/main/manager-api/src/main/resources/db/changelog/202604161357.sql @@ -0,0 +1,17 @@ +-- 更新模型名称:qwen2.5-vl-3b-instruct 改为 qwen3.5-flash +UPDATE `ai_model_config` +SET `config_json` = JSON_SET(`config_json`, '$.model_name', 'qwen3.5-flash') +WHERE `id` = 'VLLM_QwenVLVLLM' +AND JSON_EXTRACT(`config_json`, '$.model_name') = 'qwen2.5-vl-3b-instruct'; + +-- 更新模型名称:qwen-turbo 改为 qwen-flash +UPDATE `ai_model_config` +SET `config_json` = JSON_SET(`config_json`, '$.model_name', 'qwen-flash') +WHERE `id` = 'LLM_AliLLM' +AND JSON_EXTRACT(`config_json`, '$.model_name') = 'qwen-turbo'; + +-- 更新备注:qwen-turbo 改为 qwen-flash +UPDATE `ai_model_config` +SET `remark` = REPLACE(`remark`, 'qwen-turbo', 'qwen-flash') +WHERE `id` = 'LLM_AliLLM' +AND `remark` LIKE '%qwen-turbo%'; diff --git a/main/manager-api/src/main/resources/db/changelog/db.changelog-master.yaml b/main/manager-api/src/main/resources/db/changelog/db.changelog-master.yaml index 49cf28f4..40017168 100755 --- a/main/manager-api/src/main/resources/db/changelog/db.changelog-master.yaml +++ b/main/manager-api/src/main/resources/db/changelog/db.changelog-master.yaml @@ -605,4 +605,11 @@ databaseChangeLog: changes: - sqlFile: encoding: utf8 - path: classpath:db/changelog/202604011545.sql \ No newline at end of file + path: classpath:db/changelog/202604011545.sql + - changeSet: + id: 202604161357 + author: hrz + changes: + - sqlFile: + encoding: utf8 + path: classpath:db/changelog/202604161357.sql \ No newline at end of file diff --git a/main/xiaozhi-server/config.yaml b/main/xiaozhi-server/config.yaml index ce6e6780..73656fca 100644 --- a/main/xiaozhi-server/config.yaml +++ b/main/xiaozhi-server/config.yaml @@ -579,7 +579,7 @@ LLM: type: openai # 可在这里找到你的 api_key https://bailian.console.aliyun.com/?apiKey=1#/api-key base_url: https://dashscope.aliyuncs.com/compatible-mode/v1 - model_name: qwen-turbo + model_name: qwen-flash api_key: 你的deepseek web key temperature: 0.7 # 温度值 max_tokens: 500 # 最大生成token数 @@ -714,7 +714,7 @@ VLLM: api_key: 你的api_key QwenVLVLLM: type: openai - model_name: qwen2.5-vl-3b-instruct + model_name: qwen3.5-flash url: https://dashscope.aliyuncs.com/compatible-mode/v1 # 可在这里找到你的api key https://bailian.console.aliyun.com/?apiKey=1#/api-key api_key: 你的api_key