鏇存柊鏂囨。
This commit is contained in:
46
.obsidian/workspace.json
vendored
46
.obsidian/workspace.json
vendored
@@ -27,12 +27,12 @@
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "docs/Obsidian笔记体系/Daily/2026-01-20.md",
|
||||
"file": "docs/Obsidian笔记体系/Projects/知你-调测/数美文本风险拦截实施方案.md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "2026-01-20"
|
||||
"title": "数美文本风险拦截实施方案"
|
||||
}
|
||||
}
|
||||
],
|
||||
@@ -68,7 +68,7 @@
|
||||
"state": {
|
||||
"type": "search",
|
||||
"state": {
|
||||
"query": "签名",
|
||||
"query": "节点对齐和自动布局",
|
||||
"matchingCase": false,
|
||||
"explainSearch": false,
|
||||
"collapseAll": false,
|
||||
@@ -200,33 +200,33 @@
|
||||
},
|
||||
"active": "25c9f7051aac05b3",
|
||||
"lastOpenFiles": [
|
||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/未命名 7.md",
|
||||
"docs/Obsidian/高频命令.md",
|
||||
"docs/Obsidian笔记体系/Projects/知你-调测/数美文本风险拦截实施方案.md",
|
||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/查看日志的方法.md",
|
||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/聊天智能机器人(苏苏).md",
|
||||
"docs/cursor/cursor.md",
|
||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/可新增节点类型建议.md",
|
||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/已实现工作流模板快速应用功能。功能总结如下.md",
|
||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/项目低代码智能体功能扩展.md",
|
||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/aiagent节点类型扩展说明.md",
|
||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/Agent和模板节点的区别.md",
|
||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/智能需求分析与解决方案生成器_使用说明.md",
|
||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/android应用agent.md",
|
||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/未命名.md",
|
||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/未命名 1.md",
|
||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/开发低代码智能体平台 - 完整开发提示词.md",
|
||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/下一步可选方向.md",
|
||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/个人简历.md",
|
||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/未命名 4.md",
|
||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/已完成的增强功能.md",
|
||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/# 创建Agent经验总结.md",
|
||||
"docs/Obsidian笔记体系/Daily/2026-01-20.md",
|
||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/节点配置中的温度和最大Token数是什么意思?.md",
|
||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/工作流和Agent平台提示词目录.md",
|
||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/工作流测试工具.md",
|
||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/工作流(Workflow)vs Agent(智能体)的区别.md",
|
||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/电商系统用户订单处理流程设计方案.md",
|
||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/# 工作流和Agent平台架构方案分析.md",
|
||||
"docs/cursor/cursor.md",
|
||||
"docs/Obsidian笔记体系/Projects/知你-调测/知你--调测.md",
|
||||
"com.xiaomi.appstore.appclaim.signature.verification.apk",
|
||||
"docs/Obsidian笔记体系/Areas/07-系统安全/权限管理框架.md",
|
||||
"docs/Obsidian笔记体系/Areas/04-资源与包管理/动态加载与热修复原理.md",
|
||||
"docs/Google开发文档体系/最佳实践/安全最佳实践.md",
|
||||
"docs/Obsidian笔记体系/Daily/2026-01-13.md",
|
||||
"docs/Obsidian笔记体系/Daily/2026-01-14.md",
|
||||
"docs/Obsidian笔记体系/Daily/2026-01-15.md",
|
||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/未命名 2.md",
|
||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/android应用agent.md",
|
||||
"docs/git/git设置用户名和邮箱.md",
|
||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/未命名 6.md",
|
||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/未命名 5.md",
|
||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/内容生成助手Agent.md",
|
||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/智能需求分析与解决方案生成器_使用说明.md",
|
||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/Agent和模板节点的区别.md",
|
||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/未命名.md",
|
||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/未命名 4.md",
|
||||
"docs/android面试/系统原理/DPMS常见面试题",
|
||||
"docs/DPMS常见面试题",
|
||||
"ams常见面试题.txt",
|
||||
|
||||
461
docs/Obsidian笔记体系/Projects/saars开发/aiapply/aiagent节点类型扩展说明.md
Normal file
461
docs/Obsidian笔记体系/Projects/saars开发/aiapply/aiagent节点类型扩展说明.md
Normal file
@@ -0,0 +1,461 @@
|
||||
|
||||
## 已实现的节点类型
|
||||
|
||||
### 1. Switch节点(多分支路由)
|
||||
|
||||
- 后端:根据字段值进行多分支路由,支持 cases 和 default
|
||||
|
||||
- 前端:已添加到节点工具箱,使用 Operation 图标
|
||||
|
||||
- 执行:类似条件节点,根据 sourceHandle 过滤边
|
||||
|
||||
### 2. Merge节点(合并分支)
|
||||
|
||||
- 后端:支持 merge_all、merge_first、merge_last 模式
|
||||
|
||||
- 策略:array、object、concat
|
||||
|
||||
- 前端:已添加到节点工具箱
|
||||
|
||||
### 3. Wait节点(等待条件)
|
||||
|
||||
- 后端:支持 condition、time 等待类型
|
||||
|
||||
- 功能:条件等待(轮询)、固定时间等待
|
||||
|
||||
- 前端:已添加到节点工具箱,使用 Timer 图标
|
||||
|
||||
### 4. JSON处理节点
|
||||
|
||||
- 后端:支持 parse、stringify、extract、validate 操作
|
||||
|
||||
- 功能:JSON解析、字符串化、路径提取、基本验证
|
||||
|
||||
- 前端:已添加到节点工具箱
|
||||
|
||||
### 5. 文本处理节点
|
||||
|
||||
- 后端:支持 split、join、extract、replace、format 操作
|
||||
|
||||
- 功能:文本拆分、合并、正则提取、替换、模板格式化
|
||||
|
||||
- 前端:已添加到节点工具箱,使用 Edit 图标
|
||||
|
||||
### 6. 缓存节点
|
||||
|
||||
- 后端:支持 get、set、delete、clear 操作
|
||||
|
||||
- 功能:内存缓存(单次执行会话内有效),支持 TTL
|
||||
|
||||
- 前端:已添加到节点工具箱,使用 Box 图标
|
||||
|
||||
## 实现细节
|
||||
|
||||
### 后端实现
|
||||
|
||||
- 在 workflow_engine.py 的 execute_node 方法中添加了6个节点的执行逻辑
|
||||
|
||||
- Switch节点支持分支过滤(类似条件节点)
|
||||
|
||||
- 缓存节点使用内存存储(_cache_store 和 _cache_timestamps)
|
||||
|
||||
### 前端实现
|
||||
|
||||
- 在 WorkflowEditor.vue 中添加了节点类型定义
|
||||
|
||||
- 在 customNodeTypes 中注册了所有新节点(使用 DefaultNode)
|
||||
|
||||
- 添加了默认配置和图标导入
|
||||
|
||||
### 验证器更新
|
||||
|
||||
- 在 workflow_validator.py 中添加了新节点类型到允许列表
|
||||
|
||||
## 使用方式
|
||||
|
||||
1. 在节点工具箱中找到新节点(Switch、Merge、等待、JSON处理、文本处理、缓存)
|
||||
|
||||
2. 拖拽到画布创建节点
|
||||
|
||||
3. 点击节点配置参数(在右侧属性面板)
|
||||
|
||||
4. 连接节点并执行工作流
|
||||
|
||||
所有节点已实现并通过 linter 检查。可以在工作流编辑器中测试这些新节点。
|
||||
|
||||
## 已实现的节点类型
|
||||
|
||||
### 1. 向量数据库节点(vector_db)
|
||||
|
||||
- 后端:支持 search、upsert、delete 操作
|
||||
|
||||
- 功能:
|
||||
|
||||
- 向量相似度搜索(余弦相似度)
|
||||
|
||||
- 向量存储和更新
|
||||
|
||||
- 集合管理
|
||||
|
||||
- 实现:内存存储(生产环境建议使用 ChromaDB、Pinecone 等)
|
||||
|
||||
- 前端:已添加到节点工具箱,使用 Connection 图标
|
||||
|
||||
### 2. 日志节点(log)
|
||||
|
||||
- 后端:支持 debug、info、warning、error 级别
|
||||
|
||||
- 功能:
|
||||
|
||||
- 记录日志消息
|
||||
|
||||
- 可选包含数据
|
||||
|
||||
- 集成系统日志记录器
|
||||
|
||||
- 前端:已添加到节点工具箱,使用 Document 图标
|
||||
|
||||
### 3. 错误处理节点(error_handler)
|
||||
|
||||
- 后端:支持 notify、retry、stop 模式
|
||||
|
||||
- 功能:
|
||||
|
||||
- 捕获上游节点错误
|
||||
|
||||
- 错误重试(可配置重试次数和延迟)
|
||||
|
||||
- 错误通知(记录日志)
|
||||
|
||||
- 注意:简化实现,主要用于错误检测和通知
|
||||
|
||||
- 前端:已添加到节点工具箱,使用 Warning 图标
|
||||
|
||||
### 4. CSV处理节点(csv)
|
||||
|
||||
- 后端:支持 parse、generate、convert 操作
|
||||
|
||||
- 功能:
|
||||
|
||||
- CSV解析(支持表头)
|
||||
|
||||
- CSV生成(从字典列表或数组列表)
|
||||
|
||||
- CSV格式转换(改变分隔符等)
|
||||
|
||||
- 实现:使用 Python 内置 csv 模块
|
||||
|
||||
- 前端:已添加到节点工具箱,使用 Document 图标
|
||||
|
||||
### 5. 对象存储节点(object_storage)
|
||||
|
||||
- 后端:支持 upload、download、delete、list 操作
|
||||
|
||||
- 功能:
|
||||
|
||||
- 文件上传
|
||||
|
||||
- 文件下载
|
||||
|
||||
- 文件删除
|
||||
|
||||
- 文件列表
|
||||
|
||||
- 支持提供商:s3、oss、cos
|
||||
|
||||
- 注意:当前为接口框架,实际使用需安装相应 SDK(如 boto3、oss2)
|
||||
|
||||
- 前端:已添加到节点工具箱,使用 Box 图标
|
||||
|
||||
## 实现细节
|
||||
|
||||
### 后端实现
|
||||
|
||||
- 在 workflow_engine.py 的 execute_node 方法中添加了5个节点的执行逻辑
|
||||
|
||||
- 向量数据库使用内存存储(_vector_store),支持余弦相似度计算
|
||||
|
||||
- CSV处理使用 Python 内置 csv 模块
|
||||
|
||||
- 对象存储提供接口框架,便于后续集成实际 SDK
|
||||
|
||||
### 前端实现
|
||||
|
||||
- 在 WorkflowEditor.vue 中添加了节点类型定义
|
||||
|
||||
- 在 customNodeTypes 中注册了所有新节点
|
||||
|
||||
- 添加了默认配置
|
||||
|
||||
### 验证器更新
|
||||
|
||||
- 在 workflow_validator.py 中添加了新节点类型到允许列表
|
||||
|
||||
## 使用说明
|
||||
|
||||
1. 向量数据库节点:用于 RAG 应用和语义搜索
|
||||
|
||||
- 先使用 upsert 存储向量
|
||||
|
||||
- 使用 search 进行相似度搜索
|
||||
|
||||
1. 日志节点:用于调试和监控
|
||||
|
||||
- 设置日志级别和消息模板
|
||||
|
||||
- 可选择是否包含数据
|
||||
|
||||
1. 错误处理节点:用于错误捕获和处理
|
||||
|
||||
- 配置重试次数和延迟
|
||||
|
||||
- 选择错误处理模式
|
||||
|
||||
1. CSV处理节点:用于数据处理
|
||||
|
||||
- parse:将 CSV 文本解析为数组
|
||||
|
||||
- generate:将数据生成为 CSV 文本
|
||||
|
||||
1. 对象存储节点:用于文件存储
|
||||
|
||||
- 当前为接口框架,实际使用需要:
|
||||
|
||||
- AWS S3:安装 boto3
|
||||
|
||||
- 阿里云 OSS:安装 oss2
|
||||
|
||||
- 腾讯云 COS:安装 cos-python-sdk-v5
|
||||
|
||||
所有节点已实现并通过 linter 检查。可以在工作流编辑器中测试这些新节点。
|
||||
|
||||
|
||||
## 已实现的节点类型
|
||||
|
||||
### 1. Slack节点(slack)
|
||||
|
||||
- 后端:支持 send_message、create_channel、get_messages 操作
|
||||
|
||||
- 功能:
|
||||
|
||||
- 发送消息到频道
|
||||
|
||||
- 创建频道
|
||||
|
||||
- 获取频道消息
|
||||
|
||||
- 配置:需要配置 Slack Token
|
||||
|
||||
- 前端:已添加到节点工具箱,使用 Message 图标
|
||||
|
||||
### 2. 钉钉节点(dingtalk/dingding)
|
||||
|
||||
- 后端:支持 send_message、create_group 操作
|
||||
|
||||
- 功能:
|
||||
|
||||
- 通过 Webhook 或 API 发送消息
|
||||
|
||||
- 创建群组
|
||||
|
||||
- 配置:需要配置 Webhook URL 或 Access Token
|
||||
|
||||
- 前端:已添加到节点工具箱,使用 Message 图标
|
||||
|
||||
### 3. 企业微信节点(wechat_work/wecom)
|
||||
|
||||
- 后端:支持 send_message、create_group 操作
|
||||
|
||||
- 功能:
|
||||
|
||||
- 发送消息(需要先获取 access_token)
|
||||
|
||||
- 创建群组
|
||||
|
||||
- 配置:需要配置 Corp ID、Corp Secret、Agent ID
|
||||
|
||||
- 前端:已添加到节点工具箱,使用 Message 图标
|
||||
|
||||
### 4. 短信节点(sms)
|
||||
|
||||
- 后端:支持 send、batch_send 操作
|
||||
|
||||
- 功能:
|
||||
|
||||
- 发送短信
|
||||
|
||||
- 批量发送短信
|
||||
|
||||
- 支持提供商:aliyun、tencent、twilio
|
||||
|
||||
- 注意:实际使用需要安装相应 SDK
|
||||
|
||||
- 前端:已添加到节点工具箱,使用 Message 图标
|
||||
|
||||
### 5. PDF处理节点(pdf)
|
||||
|
||||
- 后端:支持 extract_text、generate、merge、split 操作
|
||||
|
||||
- 功能:
|
||||
|
||||
- 提取 PDF 文本
|
||||
|
||||
- 生成 PDF
|
||||
|
||||
- 合并多个 PDF
|
||||
|
||||
- 拆分 PDF
|
||||
|
||||
- 注意:需要安装 PyPDF2 或 pdfplumber 库
|
||||
|
||||
- 前端:已添加到节点工具箱,使用 Document 图标
|
||||
|
||||
### 6. 图像处理节点(image)
|
||||
|
||||
- 后端:支持 resize、crop、convert、ocr 操作
|
||||
|
||||
- 功能:
|
||||
|
||||
- 图像缩放
|
||||
|
||||
- 图像裁剪
|
||||
|
||||
- 格式转换
|
||||
|
||||
- OCR 文字识别
|
||||
|
||||
- 注意:需要安装 Pillow 库,OCR 需要 pytesseract 和 tesseract-ocr
|
||||
|
||||
- 前端:已添加到节点工具箱,使用 Picture 图标
|
||||
|
||||
### 7. Excel处理节点(excel)
|
||||
|
||||
- 后端:支持 read、write、convert、formula 操作
|
||||
|
||||
- 功能:
|
||||
|
||||
- 读取 Excel 文件
|
||||
|
||||
- 写入 Excel 文件
|
||||
|
||||
- 格式转换(Excel ↔ CSV/JSON)
|
||||
|
||||
- 公式计算
|
||||
|
||||
- 注意:需要安装 openpyxl 或 pandas 库
|
||||
|
||||
- 前端:已添加到节点工具箱,使用 Document 图标
|
||||
|
||||
## 实现细节
|
||||
|
||||
### 后端实现
|
||||
|
||||
- 在 workflow_engine.py 的 execute_node 方法中添加了7个节点的执行逻辑
|
||||
|
||||
- 通信节点使用 HTTP API 调用(需要配置相应的 Token/Secret)
|
||||
|
||||
- PDF/图像/Excel 处理节点提供接口框架,实际使用需要安装相应库
|
||||
|
||||
### 前端实现
|
||||
|
||||
- 在 WorkflowEditor.vue 中添加了节点类型定义
|
||||
|
||||
- 在 customNodeTypes 中注册了所有新节点
|
||||
|
||||
- 添加了默认配置和图标导入(包括 Picture 图标)
|
||||
|
||||
### 验证器更新
|
||||
|
||||
- 在 workflow_validator.py 中添加了新节点类型到允许列表
|
||||
|
||||
## 依赖说明
|
||||
|
||||
### 通信节点
|
||||
|
||||
- Slack:需要有效的 Slack Token
|
||||
|
||||
- 钉钉:需要 Webhook URL 或 Access Token
|
||||
|
||||
- 企业微信:需要 Corp ID、Corp Secret、Agent ID
|
||||
|
||||
- 短信:需要安装相应 SDK
|
||||
|
||||
- 阿里云:pip install alibabacloud-dysmsapi20170525
|
||||
|
||||
- 腾讯云:pip install tencentcloud-sdk-python
|
||||
|
||||
- Twilio:pip install twilio
|
||||
|
||||
### 文件处理节点
|
||||
|
||||
- PDF:pip install PyPDF2 pdfplumber
|
||||
|
||||
- 图像:pip install Pillow(OCR 需要 pip install pytesseract 并安装 tesseract-ocr)
|
||||
|
||||
- Excel:pip install openpyxl pandas
|
||||
|
||||
所有节点已实现并通过 linter 检查。可以在工作流编辑器中测试这些新节点。注意:部分节点需要安装相应的依赖库才能正常使用。
|
||||
|
||||
## 已实现节点
|
||||
|
||||
- 子工作流节点(subworkflow)
|
||||
|
||||
- 功能:调用其他工作流;支持输入映射
|
||||
|
||||
- 说明:当前为占位实现,返回映射后的输入与目标 workflow_id,后续可集成真正的子工作流执行
|
||||
|
||||
- 代码执行节点(code)
|
||||
|
||||
- 功能:执行简易 Python 代码(JS 执行为占位)
|
||||
|
||||
- 安全:使用受限 exec,生产需更严格沙箱
|
||||
|
||||
- 默认:result = input_data
|
||||
|
||||
- OAuth节点(oauth)
|
||||
|
||||
- 功能:获取/刷新 Token(占位,返回模拟 token)
|
||||
|
||||
- 默认:provider、client_id、client_secret、scopes
|
||||
|
||||
- 数据验证节点(validator)
|
||||
|
||||
- 功能:基础类型校验,支持 on_error(reject/continue/transform)
|
||||
|
||||
- 默认 schema 空对象
|
||||
|
||||
- 批处理节点(batch)
|
||||
|
||||
- 功能:按批次拆分/分组/聚合数据;可选择等待完成
|
||||
|
||||
- 默认:batch_size=100,mode=split
|
||||
|
||||
## 后端
|
||||
|
||||
- backend/app/services/workflow_engine.py:新增上述节点的执行逻辑(占位或简化实现)
|
||||
|
||||
- backend/app/services/workflow_validator.py:允许的新节点类型列表已更新
|
||||
|
||||
## 前端
|
||||
|
||||
- frontend/src/components/WorkflowEditor/WorkflowEditor.vue:
|
||||
|
||||
- 节点类型已加入工具箱(icons:subworkflow/批处理用 Grid/Operation,code 用 Edit,validator/OAuth 用 Document)
|
||||
|
||||
- customNodeTypes 已注册,默认配置已添加
|
||||
|
||||
- 图标导入已补充 Picture(之前图像节点用到)
|
||||
|
||||
## 依赖说明
|
||||
|
||||
- 子工作流:需后续集成实际工作流调用
|
||||
|
||||
- 代码执行:当前仅受限 Python;JS 需集成运行时
|
||||
|
||||
- OAuth:占位返回 mock token,实际需对接各 provider
|
||||
|
||||
- 数据验证:为简化版;复杂校验可接入 jsonschema
|
||||
|
||||
- 批处理:基础分批逻辑;可按需扩展并行/异步处理
|
||||
|
||||
如需把子工作流执行接入真正的 WorkflowEngine、完善代码执行安全沙箱,或接入真实 OAuth provider,可继续迭代。
|
||||
2141
docs/Obsidian笔记体系/Projects/saars开发/aiapply/可新增节点类型建议.md
Normal file
2141
docs/Obsidian笔记体系/Projects/saars开发/aiapply/可新增节点类型建议.md
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,53 @@
|
||||
### 工作流模板快速应用
|
||||
|
||||
在工具栏添加了“应用模板”按钮,支持:
|
||||
|
||||
1. 模板列表展示
|
||||
|
||||
- 从模板市场或工作流模板API加载模板
|
||||
|
||||
- 显示模板名称、描述、节点数、使用次数、评分等信息
|
||||
|
||||
- 支持搜索过滤(按名称、描述、分类)
|
||||
|
||||
1. 模板应用功能
|
||||
|
||||
- 一键应用:点击模板即可应用到当前工作流
|
||||
|
||||
- 智能ID映射:自动重新生成节点和边的ID,避免冲突
|
||||
|
||||
- 智能定位:新节点自动添加到画布右侧,不覆盖现有节点
|
||||
|
||||
- 自动布局:应用后自动执行布局,使工作流更清晰
|
||||
|
||||
1. 用户体验优化
|
||||
|
||||
- 模板卡片式展示,悬停高亮
|
||||
|
||||
- 显示模板统计信息(节点数、使用次数、评分)
|
||||
|
||||
- 精选模板标记
|
||||
|
||||
- 加载状态提示
|
||||
|
||||
### 使用方法
|
||||
|
||||
1. 点击工具栏的“应用模板”按钮
|
||||
|
||||
2. 在对话框中选择模板(可搜索)
|
||||
|
||||
3. 点击模板卡片即可应用
|
||||
|
||||
4. 模板节点会自动添加到画布,并执行自动布局
|
||||
|
||||
### 技术实现
|
||||
|
||||
- 模板加载:优先从模板市场API获取,失败则回退到工作流模板API
|
||||
|
||||
- ID冲突处理:为每个模板节点生成新的唯一ID
|
||||
|
||||
- 位置计算:根据现有节点位置计算偏移量,避免重叠
|
||||
|
||||
- 自动布局:应用模板后自动执行层次布局算法
|
||||
|
||||
功能已集成到工作流编辑器中,可在 Agent 管理页面或工作流设计器中使用。
|
||||
@@ -1,23 +0,0 @@
|
||||
## 现在可以测试了
|
||||
|
||||
请重新测试 Agent:
|
||||
|
||||
1. 点击右上角“测试运行”
|
||||
|
||||
2. 执行应该能正常启动
|
||||
|
||||
3. 节点应该显示执行动画:
|
||||
|
||||
- 执行中的节点:蓝色边框 + 脉冲动画
|
||||
|
||||
- 已完成的节点:绿色边框
|
||||
|
||||
- 失败的节点:红色边框
|
||||
|
||||
如果仍有问题,请查看:
|
||||
|
||||
- 后端日志:docker-compose -f docker-compose.dev.yml logs -f backend celery
|
||||
|
||||
- 前端控制台:查看 [rjb] 前缀的调试日志
|
||||
|
||||
现在链路调用应该可以正常工作了。
|
||||
112
docs/Obsidian笔记体系/Projects/saars开发/aiapply/查看日志的方法.md
Normal file
112
docs/Obsidian笔记体系/Projects/saars开发/aiapply/查看日志的方法.md
Normal file
@@ -0,0 +1,112 @@
|
||||
## 查看日志的方法
|
||||
|
||||
### 方法1:使用专用脚本(推荐)
|
||||
|
||||
运行以下命令查看 Switch 节点的详细日志:
|
||||
|
||||
cd /home/renjianbo/aiagent
|
||||
|
||||
python3 check_switch_logs.py
|
||||
|
||||
该脚本会显示:
|
||||
|
||||
- Switch 节点的匹配过程(字段值、匹配的分支)
|
||||
|
||||
- 分支过滤过程(保留/移除的边)
|
||||
|
||||
- 意图理解节点的输出
|
||||
|
||||
- 所有节点的输出摘要
|
||||
|
||||
### 方法2:查看所有执行日志
|
||||
|
||||
运行以下命令查看完整的执行日志:
|
||||
|
||||
cd /home/renjianbo/aiagent
|
||||
|
||||
python3 check_execution_logs.py
|
||||
|
||||
### 方法3:查看后端控制台日志
|
||||
|
||||
如果后端服务正在运行,日志会直接输出到控制台。查找包含 [rjb] Switch 的日志行。
|
||||
|
||||
### 方法4:通过 API 查看
|
||||
|
||||
可以通过 API 获取执行日志:
|
||||
|
||||
# 获取执行ID(从最近的执行记录中)
|
||||
|
||||
# 然后访问:
|
||||
|
||||
GET /api/v1/execution_logs/executions/{execution_id}?node_id=switch-intent
|
||||
|
||||
## 修复内容
|
||||
|
||||
1. 日志保存到数据库:Switch 节点的日志现在会通过 self.logger 保存到数据库的 execution_logs 表
|
||||
|
||||
2. 更详细的日志信息:
|
||||
|
||||
- 匹配阶段:字段名、字段值、匹配的分支、处理后的输入数据
|
||||
|
||||
- 过滤阶段:过滤前后的边数、每条边的处理结果
|
||||
|
||||
1. 控制台日志:同时输出到控制台,便于实时查看
|
||||
|
||||
## 测试步骤
|
||||
|
||||
1. 执行一次 Agent 测试(发送一条消息)
|
||||
|
||||
2. 运行日志查看脚本:
|
||||
|
||||
python3 check_switch_logs.py
|
||||
|
||||
|
||||
3. 查看输出,重点关注:
|
||||
|
||||
- Switch节点匹配:检查字段值是否正确提取
|
||||
|
||||
- Switch节点过滤后:检查是否只保留了一条边
|
||||
|
||||
## 预期输出示例
|
||||
|
||||
Switch节点相关日志:
|
||||
|
||||
[1] 16:07:23.123 [INFO]
|
||||
|
||||
节点: switch-intent (switch)
|
||||
|
||||
消息: Switch节点匹配: field=intent, field_value=greeting, matched_case=greeting-handle
|
||||
|
||||
数据:
|
||||
|
||||
{
|
||||
|
||||
"field": "intent",
|
||||
|
||||
"field_value": "greeting",
|
||||
|
||||
"matched_case": "greeting-handle",
|
||||
|
||||
...
|
||||
|
||||
}
|
||||
|
||||
[2] 16:07:23.125 [INFO]
|
||||
|
||||
节点: switch-intent (switch)
|
||||
|
||||
消息: Switch节点分支过滤: branch=greeting-handle, 保留1条边,移除5条边
|
||||
|
||||
数据:
|
||||
|
||||
{
|
||||
|
||||
"branch": "greeting-handle",
|
||||
|
||||
"edges_kept": 1,
|
||||
|
||||
"edges_removed": 5
|
||||
|
||||
}
|
||||
|
||||
如果仍有问题,请运行 check_switch_logs.py 并分享输出,我可以进一步分析。
|
||||
119
docs/Obsidian笔记体系/Projects/saars开发/aiapply/聊天智能机器人(苏苏).md
Normal file
119
docs/Obsidian笔记体系/Projects/saars开发/aiapply/聊天智能机器人(苏苏).md
Normal file
@@ -0,0 +1,119 @@
|
||||
## 已创建的内容
|
||||
|
||||
### 1. Python 生成脚本
|
||||
|
||||
- 文件: backend/scripts/generate_chat_agent.py
|
||||
|
||||
- 功能: 自动生成并创建聊天智能体 Agent
|
||||
|
||||
- 状态: 已成功运行,Agent 已创建到数据库
|
||||
|
||||
### 2. 详细说明文档
|
||||
|
||||
- 文件: 聊天智能体示例说明.md
|
||||
|
||||
- 内容: 工作流结构、节点说明、使用方法、配置要点、测试示例
|
||||
|
||||
### 3. JSON 配置文件
|
||||
|
||||
- 文件: 聊天智能体示例.json
|
||||
|
||||
- 功能: 可直接导入到平台的 Agent 配置
|
||||
|
||||
### 4. 数据库中的 Agent
|
||||
|
||||
- 名称: 智能聊天助手(完整示例)
|
||||
|
||||
- ID: 78ba9dfb-31fa-4550-833b-c44d4378cf6c
|
||||
|
||||
- 状态: 草稿(draft)
|
||||
|
||||
- 节点数: 15 个
|
||||
|
||||
- 连接数: 19 条
|
||||
|
||||
## 工作流特性
|
||||
|
||||
该示例展示了以下能力:
|
||||
|
||||
1. 记忆管理:使用 Cache 节点存储对话历史
|
||||
|
||||
2. 意图识别:LLM 分析用户意图和情感
|
||||
|
||||
3. 多分支路由:Switch 节点根据意图分发到 6 个处理分支
|
||||
|
||||
4. 上下文传递:Transform 节点合并用户输入和记忆
|
||||
|
||||
5. 个性化回复:针对不同意图生成不同风格的回复
|
||||
|
||||
6. 多轮对话:支持上下文记忆和连贯对话
|
||||
|
||||
## 工作流结构
|
||||
|
||||
开始 → 查询记忆 → 合并上下文 → 意图理解 → Switch路由
|
||||
|
||||
├─→ 问候处理
|
||||
|
||||
├─→ 问题回答
|
||||
|
||||
├─→ 情感回应
|
||||
|
||||
├─→ 请求处理
|
||||
|
||||
├─→ 告别回复
|
||||
|
||||
└─→ 通用回复
|
||||
|
||||
↓
|
||||
|
||||
合并回复 → 更新记忆 → 格式化回复 → 结束
|
||||
|
||||
## 下一步操作
|
||||
|
||||
1. 查看 Agent
|
||||
|
||||
- 在 Agent 管理页面找到 智能聊天助手(完整示例)
|
||||
|
||||
- 点击“设计”按钮查看工作流
|
||||
|
||||
1. 配置 API 密钥
|
||||
|
||||
- 在工作流编辑器中,为每个 LLM 节点配置 API 密钥
|
||||
|
||||
- 确保模型提供商和模型名称正确
|
||||
|
||||
1. 测试 Agent
|
||||
|
||||
- 点击“测试”按钮
|
||||
|
||||
- 输入测试消息(如“你好”、“今天心情不错”等)
|
||||
|
||||
- 查看执行结果和回复
|
||||
|
||||
1. 发布 Agent
|
||||
|
||||
- 测试通过后,点击“发布”按钮
|
||||
|
||||
- Agent 状态变为“已发布”
|
||||
|
||||
- 可以点击“使用”按钮进行对话测试
|
||||
|
||||
1. 自定义扩展
|
||||
|
||||
- 根据需求修改 Prompt
|
||||
|
||||
- 添加新的意图分支
|
||||
|
||||
- 增强记忆功能
|
||||
|
||||
- 集成外部工具
|
||||
|
||||
## 文件位置
|
||||
|
||||
- 生成脚本: backend/scripts/generate_chat_agent.py
|
||||
|
||||
- 说明文档: 聊天智能体示例说明.md
|
||||
|
||||
- JSON 配置: 聊天智能体示例.json
|
||||
|
||||
所有文件已创建完成,可以直接使用。如需进一步定制或有问题,请告知。
|
||||
472
docs/Obsidian笔记体系/Projects/知你-调测/数美文本风险拦截实施方案.md
Normal file
472
docs/Obsidian笔记体系/Projects/知你-调测/数美文本风险拦截实施方案.md
Normal file
@@ -0,0 +1,472 @@
|
||||
# 数美文本风险拦截实施方案
|
||||
|
||||
## 一、需求概述
|
||||
|
||||
在聊天页面(ConversationActivity)实现基于数美API的文本风险拦截功能,根据风险等级显示不同级别的警告提示。
|
||||
|
||||
## 二、风险等级与提示对应关系
|
||||
|
||||
根据数美接口返回的 `riskLevel` 字段:
|
||||
|
||||
| riskLevel | 风险等级 | 提示内容 | 处理方式 |
|
||||
|-----------|---------|---------|---------|
|
||||
| PASS | 通过 | 无提示 | 正常发送消息 |
|
||||
| REVIEW | 二级警告 | "聊天内容存在风险,请谨慎交流" | 显示警告,允许用户选择是否发送 |
|
||||
| REJECT | 三级警告 | "当前聊天内容可能存在风险,请谨慎核实信息真实性" | 显示警告,建议用户修改内容 |
|
||||
|
||||
## 三、技术实现方案
|
||||
|
||||
### 3.1 架构设计
|
||||
|
||||
```
|
||||
ConversationFragment (聊天界面)
|
||||
↓
|
||||
TextRiskInterceptor (风险拦截器)
|
||||
↓
|
||||
ShumeiApiClient (数美API客户端)
|
||||
↓
|
||||
数美API服务器
|
||||
```
|
||||
|
||||
### 3.2 核心组件
|
||||
|
||||
#### 3.2.1 TextRiskInterceptor(风险拦截器)
|
||||
|
||||
**职责**:
|
||||
- 在消息发送前拦截文本消息
|
||||
- 调用数美API进行风险检测
|
||||
- 根据风险等级决定是否允许发送或显示警告
|
||||
|
||||
**关键方法**:
|
||||
```java
|
||||
public interface TextRiskInterceptor {
|
||||
/**
|
||||
* 检测文本风险
|
||||
* @param text 待检测文本
|
||||
* @param callback 检测结果回调
|
||||
*/
|
||||
void checkTextRisk(String text, RiskCheckCallback callback);
|
||||
|
||||
/**
|
||||
* 风险检测回调
|
||||
*/
|
||||
interface RiskCheckCallback {
|
||||
void onRiskCheckResult(RiskCheckResult result);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### 3.2.2 ShumeiApiClient(数美API客户端)
|
||||
|
||||
**职责**:
|
||||
- 封装数美API调用逻辑
|
||||
- 处理请求参数构建
|
||||
- 解析响应结果
|
||||
|
||||
**关键参数**:
|
||||
- accessKey: "4OLLd2djEWRoCDVAbRAV"
|
||||
- appId: "default"
|
||||
- eventId: "text"
|
||||
- type: "TEXTRISK"
|
||||
- data.text: 待检测文本
|
||||
- data.tokenId: 用户token
|
||||
- data.ip: 用户IP
|
||||
- data.deviceId: 设备ID
|
||||
- data.nickname: 用户昵称
|
||||
|
||||
#### 3.2.3 RiskWarningDialog(风险警告对话框)
|
||||
|
||||
**职责**:
|
||||
- 显示二级/三级警告提示
|
||||
- 提供用户操作选项(继续发送/取消/修改)
|
||||
|
||||
### 3.3 集成点
|
||||
|
||||
#### 3.3.1 消息发送拦截点
|
||||
|
||||
在 `ConversationFragment` 或 `ConversationInputPanel` 中,消息发送前进行拦截:
|
||||
|
||||
**位置**:`ConversationInputPanel.sendTextMessage()` 或类似方法
|
||||
|
||||
**拦截流程**:
|
||||
1. 用户点击发送按钮
|
||||
2. 获取输入框文本内容
|
||||
3. 调用 `TextRiskInterceptor.checkTextRisk()` 进行风险检测
|
||||
4. 根据检测结果:
|
||||
- PASS:直接发送消息
|
||||
- REVIEW:显示二级警告,用户确认后发送
|
||||
- REJECT:显示三级警告,建议用户修改
|
||||
|
||||
#### 3.3.2 警告提示显示位置
|
||||
|
||||
**方案一:对话框提示(推荐)**
|
||||
- 在消息发送前弹出警告对话框
|
||||
- 显示风险等级和提示内容
|
||||
- 提供"继续发送"和"取消"按钮
|
||||
|
||||
**方案二:消息气泡提示**
|
||||
- 在聊天界面中插入系统警告消息
|
||||
- 显示在风险消息的上方或下方
|
||||
- 使用灰色背景,区别于普通消息
|
||||
|
||||
**方案三:顶部横幅提示**
|
||||
- 在聊天界面顶部显示警告横幅
|
||||
- 持续显示一段时间后自动消失
|
||||
- 可手动关闭
|
||||
|
||||
### 3.4 数据模型
|
||||
|
||||
#### 3.4.1 RiskCheckResult(风险检测结果)
|
||||
|
||||
```java
|
||||
public class RiskCheckResult {
|
||||
private String riskLevel; // PASS, REVIEW, REJECT
|
||||
private String riskDescription; // 风险描述
|
||||
private String riskLabel1; // 一级标签
|
||||
private String riskLabel2; // 二级标签
|
||||
private String riskLabel3; // 三级标签
|
||||
private double probability; // 风险概率
|
||||
private String filteredText; // 过滤后的文本
|
||||
private List<RiskLabel> allLabels; // 所有风险标签
|
||||
}
|
||||
```
|
||||
|
||||
#### 3.4.2 响应解析
|
||||
|
||||
根据数美接口文档,关键字段:
|
||||
- `code`: 1100 表示成功
|
||||
- `riskLevel`: 风险等级(PASS/REVIEW/REJECT)
|
||||
- `riskDescription`: 风险描述
|
||||
- `allLabels`: 所有检测到的风险标签数组
|
||||
- `filteredText`: 过滤后的文本(敏感词被替换为**)
|
||||
|
||||
## 四、实现步骤
|
||||
|
||||
### 步骤1:创建数美API客户端
|
||||
|
||||
**文件**:`app/src/main/java/com/xunpaisoft/social/im/risk/ShumeiApiClient.java`
|
||||
|
||||
**功能**:
|
||||
- 封装数美API调用
|
||||
- 构建请求参数
|
||||
- 解析响应结果
|
||||
- 错误处理
|
||||
|
||||
**关键代码**:
|
||||
```java
|
||||
public class ShumeiApiClient {
|
||||
private static final String API_URL = "http://api-text-bj.fengkongcloud.com/text/v4";
|
||||
private static final String ACCESS_KEY = "4OLLd2djEWRoCDVAbRAV";
|
||||
private static final String APP_ID = "default";
|
||||
private static final String EVENT_ID = "text";
|
||||
private static final String TYPE = "TEXTRISK";
|
||||
|
||||
public void checkTextRisk(String text, String tokenId, String ip,
|
||||
String deviceId, String nickname,
|
||||
Map<String, String> extra,
|
||||
RiskCheckCallback callback) {
|
||||
// 构建请求参数
|
||||
// 发送POST请求
|
||||
// 解析响应
|
||||
// 回调结果
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 步骤2:创建风险拦截器
|
||||
|
||||
**文件**:`app/src/main/java/com/xunpaisoft/social/im/risk/TextRiskInterceptor.java`
|
||||
|
||||
**功能**:
|
||||
- 在消息发送前拦截
|
||||
- 调用数美API检测
|
||||
- 根据风险等级处理
|
||||
|
||||
**关键代码**:
|
||||
```java
|
||||
public class TextRiskInterceptor {
|
||||
private ShumeiApiClient apiClient;
|
||||
|
||||
public void interceptBeforeSend(String text, InterceptCallback callback) {
|
||||
// 获取用户信息(tokenId, ip, deviceId, nickname等)
|
||||
// 调用数美API检测
|
||||
// 根据riskLevel处理
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 步骤3:创建警告对话框
|
||||
|
||||
**文件**:`app/src/main/java/com/xunpaisoft/social/im/risk/RiskWarningDialog.java`
|
||||
|
||||
**功能**:
|
||||
- 显示二级/三级警告
|
||||
- 提供用户操作选项
|
||||
|
||||
**关键代码**:
|
||||
```java
|
||||
public class RiskWarningDialog {
|
||||
public static void showReviewWarning(Context context, String message,
|
||||
OnConfirmListener listener) {
|
||||
// 显示二级警告:"聊天内容存在风险,请谨慎交流"
|
||||
}
|
||||
|
||||
public static void showRejectWarning(Context context, String message,
|
||||
OnConfirmListener listener) {
|
||||
// 显示三级警告:"当前聊天内容可能存在风险,请谨慎核实信息真实性"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 步骤4:集成到ConversationFragment
|
||||
|
||||
**修改文件**:`uikit/src/main/java/cn/wildfire/chat/kit/conversation/ConversationFragment.java`
|
||||
|
||||
**集成点**:消息发送方法
|
||||
|
||||
**关键代码**:
|
||||
```java
|
||||
// 在发送文本消息前拦截
|
||||
private void sendTextMessage(String text) {
|
||||
// 先进行风险检测
|
||||
textRiskInterceptor.interceptBeforeSend(text, new InterceptCallback() {
|
||||
@Override
|
||||
public void onInterceptResult(RiskCheckResult result) {
|
||||
if (result.getRiskLevel().equals("PASS")) {
|
||||
// 风险等级为PASS,直接发送
|
||||
doSendMessage(text);
|
||||
} else if (result.getRiskLevel().equals("REVIEW")) {
|
||||
// 二级警告
|
||||
RiskWarningDialog.showReviewWarning(
|
||||
getContext(),
|
||||
"聊天内容存在风险,请谨慎交流",
|
||||
new OnConfirmListener() {
|
||||
@Override
|
||||
public void onConfirm() {
|
||||
doSendMessage(text);
|
||||
}
|
||||
@Override
|
||||
public void onCancel() {
|
||||
// 取消发送
|
||||
}
|
||||
}
|
||||
);
|
||||
} else if (result.getRiskLevel().equals("REJECT")) {
|
||||
// 三级警告
|
||||
RiskWarningDialog.showRejectWarning(
|
||||
getContext(),
|
||||
"当前聊天内容可能存在风险,请谨慎核实信息真实性",
|
||||
new OnConfirmListener() {
|
||||
@Override
|
||||
public void onConfirm() {
|
||||
// 仍然允许发送,但建议用户修改
|
||||
doSendMessage(text);
|
||||
}
|
||||
@Override
|
||||
public void onCancel() {
|
||||
// 取消发送,建议用户修改内容
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(String error) {
|
||||
// 检测失败,可以选择直接发送或提示错误
|
||||
// 建议:检测失败时允许发送,避免影响用户体验
|
||||
doSendMessage(text);
|
||||
}
|
||||
});
|
||||
}
|
||||
```
|
||||
|
||||
## 五、性能优化
|
||||
|
||||
### 5.1 异步处理
|
||||
- 风险检测在后台线程进行
|
||||
- 不阻塞UI线程
|
||||
- 显示加载提示
|
||||
|
||||
### 5.2 缓存机制
|
||||
- 相同文本内容可以缓存检测结果
|
||||
- 减少重复API调用
|
||||
- 提高响应速度
|
||||
|
||||
### 5.3 超时处理
|
||||
- 设置API调用超时时间(建议1-2秒)
|
||||
- 超时后允许发送,避免影响用户体验
|
||||
- 记录超时日志
|
||||
|
||||
### 5.4 频率限制
|
||||
- 避免频繁调用API
|
||||
- 可以设置检测间隔(如500ms内不重复检测)
|
||||
- 减少服务器压力
|
||||
|
||||
## 六、用户体验设计
|
||||
|
||||
### 6.1 加载提示
|
||||
- 检测过程中显示"正在检测..."提示
|
||||
- 使用ProgressDialog或Toast
|
||||
- 避免用户等待焦虑
|
||||
|
||||
### 6.2 警告对话框设计
|
||||
|
||||
**二级警告(REVIEW)**:
|
||||
- 标题:"风险提示"
|
||||
- 内容:"聊天内容存在风险,请谨慎交流"
|
||||
- 按钮:"继续发送" / "取消"
|
||||
- 样式:黄色警告图标
|
||||
|
||||
**三级警告(REJECT)**:
|
||||
- 标题:"高风险提示"
|
||||
- 内容:"当前聊天内容可能存在风险,请谨慎核实信息真实性"
|
||||
- 按钮:"仍然发送" / "取消并修改"
|
||||
- 样式:红色警告图标
|
||||
|
||||
### 6.3 错误处理
|
||||
- API调用失败时,记录日志但不阻止发送
|
||||
- 网络异常时,提示用户但允许发送
|
||||
- 避免因检测失败影响正常聊天
|
||||
|
||||
## 七、数据获取
|
||||
|
||||
### 7.1 用户信息获取
|
||||
- `tokenId`: 从用户登录信息获取
|
||||
- `ip`: 从网络请求中获取或使用设备IP
|
||||
- `deviceId`: 从设备信息获取(Android ID或设备唯一标识)
|
||||
- `nickname`: 从当前用户信息获取
|
||||
|
||||
### 7.2 额外信息(extra)
|
||||
- `topic`: 会话ID或话题ID
|
||||
- `atId`: 发送者用户ID
|
||||
- `room`: 群聊ID(如果是群聊)
|
||||
- `receiveTokenId`: 接收者用户ID
|
||||
|
||||
## 八、测试方案
|
||||
|
||||
### 8.1 测试用例
|
||||
|
||||
**测试用例1:正常文本**
|
||||
- 输入:"你好"
|
||||
- 预期:riskLevel = PASS,直接发送
|
||||
|
||||
**测试用例2:二级风险文本**
|
||||
- 输入:包含敏感词但风险较低
|
||||
- 预期:riskLevel = REVIEW,显示二级警告
|
||||
|
||||
**测试用例3:三级风险文本**
|
||||
- 输入:"加个好友吧 qq12345"
|
||||
- 预期:riskLevel = REJECT,显示三级警告
|
||||
|
||||
**测试用例4:API调用失败**
|
||||
- 模拟网络异常
|
||||
- 预期:允许发送,记录错误日志
|
||||
|
||||
**测试用例5:API超时**
|
||||
- 模拟超时情况
|
||||
- 预期:允许发送,记录超时日志
|
||||
|
||||
### 8.2 性能测试
|
||||
- API响应时间测试
|
||||
- 并发检测测试
|
||||
- 内存占用测试
|
||||
|
||||
## 九、注意事项
|
||||
|
||||
### 9.1 隐私保护
|
||||
- 用户聊天内容需要加密传输
|
||||
- 遵守数据保护法规
|
||||
- 不存储敏感内容
|
||||
|
||||
### 9.2 用户体验
|
||||
- 检测速度要快,避免用户等待
|
||||
- 检测失败不应阻止正常聊天
|
||||
- 警告提示要清晰但不影响使用
|
||||
|
||||
### 9.3 成本控制
|
||||
- 数美API可能有调用费用
|
||||
- 考虑是否需要限制检测频率
|
||||
- 可以只检测文本消息,不检测图片/视频
|
||||
|
||||
### 9.4 兼容性
|
||||
- 确保不影响现有聊天功能
|
||||
- 向后兼容,不影响旧版本
|
||||
- 考虑不同Android版本的兼容性
|
||||
|
||||
## 十、实施优先级
|
||||
|
||||
### 第一阶段(核心功能)
|
||||
1. 实现数美API客户端
|
||||
2. 实现风险拦截器
|
||||
3. 集成到消息发送流程
|
||||
4. 实现二级/三级警告对话框
|
||||
|
||||
### 第二阶段(优化)
|
||||
1. 添加缓存机制
|
||||
2. 优化性能
|
||||
3. 完善错误处理
|
||||
4. 添加日志记录
|
||||
|
||||
### 第三阶段(增强)
|
||||
1. 支持更多消息类型检测
|
||||
2. 添加统计功能
|
||||
3. 优化用户体验
|
||||
4. 添加配置管理
|
||||
|
||||
## 十一、代码示例
|
||||
|
||||
### 11.1 数美API调用示例
|
||||
|
||||
```java
|
||||
// 构建请求参数
|
||||
Map<String, Object> requestParams = new HashMap<>();
|
||||
requestParams.put("accessKey", "4OLLd2djEWRoCDVAbRAV");
|
||||
requestParams.put("appId", "default");
|
||||
requestParams.put("eventId", "text");
|
||||
requestParams.put("type", "TEXTRISK");
|
||||
|
||||
Map<String, Object> data = new HashMap<>();
|
||||
data.put("text", text);
|
||||
data.put("tokenId", getUserTokenId());
|
||||
data.put("ip", getUserIp());
|
||||
data.put("deviceId", getDeviceId());
|
||||
data.put("nickname", getCurrentUserNickname());
|
||||
|
||||
Map<String, String> extra = new HashMap<>();
|
||||
extra.put("topic", conversationId);
|
||||
extra.put("atId", getCurrentUserId());
|
||||
extra.put("room", getGroupId()); // 如果是群聊
|
||||
extra.put("receiveTokenId", getTargetUserId());
|
||||
|
||||
data.put("extra", extra);
|
||||
requestParams.put("data", data);
|
||||
|
||||
// 发送POST请求
|
||||
// 解析响应,获取riskLevel
|
||||
```
|
||||
|
||||
### 11.2 风险等级判断
|
||||
|
||||
```java
|
||||
String riskLevel = result.getRiskLevel();
|
||||
if ("PASS".equals(riskLevel)) {
|
||||
// 通过,直接发送
|
||||
} else if ("REVIEW".equals(riskLevel)) {
|
||||
// 二级警告
|
||||
} else if ("REJECT".equals(riskLevel)) {
|
||||
// 三级警告
|
||||
}
|
||||
```
|
||||
|
||||
## 十二、总结
|
||||
|
||||
本方案提供了完整的数美文本风险拦截实现思路,包括:
|
||||
- 架构设计
|
||||
- 核心组件
|
||||
- 集成方案
|
||||
- 性能优化
|
||||
- 用户体验
|
||||
- 测试方案
|
||||
|
||||
实施时建议分阶段进行,先实现核心功能,再逐步优化和完善。
|
||||
17
mkdocs.yml
17
mkdocs.yml
@@ -196,15 +196,20 @@ nav:
|
||||
- Obsidian笔记体系/Projects/saars开发/aiapply/工作流测试工具.md
|
||||
- Obsidian笔记体系/Projects/saars开发/aiapply/工作流(Workflow)vs Agent(智能体)的区别.md
|
||||
- Obsidian笔记体系/Projects/saars开发/aiapply/智能需求分析与解决方案生成器_使用说明.md
|
||||
- Obsidian笔记体系/Projects/saars开发/aiapply/未命名 2.md
|
||||
- Obsidian笔记体系/Projects/saars开发/aiapply/未命名 3.md
|
||||
- Obsidian笔记体系/Projects/saars开发/aiapply/未命名 4.md
|
||||
- Obsidian笔记体系/Projects/saars开发/aiapply/未命名 5.md
|
||||
- Obsidian笔记体系/Projects/saars开发/aiapply/未命名 6.md
|
||||
- Obsidian笔记体系/Projects/saars开发/aiapply/未命名 7.md
|
||||
- Obsidian笔记体系/Projects/saars开发/aiapply/电商系统用户订单处理流程设计方案.md
|
||||
- Obsidian笔记体系/Projects/saars开发/aiapply/节点配置中的温度和最大Token数是什么意思?.md
|
||||
- Obsidian笔记体系/Projects/saars开发/aiapply/项目低代码智能体功能扩展.md
|
||||
- Obsidian笔记体系/Projects/saars开发/aiapply/# 创建Agent经验总结.md
|
||||
- Obsidian笔记体系/Projects/saars开发/aiapply/aiagent节点类型扩展说明.md
|
||||
- Obsidian笔记体系/Projects/saars开发/aiapply/下一步可选方向.md
|
||||
- Obsidian笔记体系/Projects/saars开发/aiapply/个人简历.md
|
||||
- Obsidian笔记体系/Projects/saars开发/aiapply/可新增节点类型建议.md
|
||||
- Obsidian笔记体系/Projects/saars开发/aiapply/已完成的增强功能.md
|
||||
- Obsidian笔记体系/Projects/saars开发/aiapply/已实现工作流模板快速应用功能。功能总结如下.md
|
||||
- Obsidian笔记体系/Projects/saars开发/aiapply/开发低代码智能体平台 - 完整开发提示词.md
|
||||
- Obsidian笔记体系/Projects/saars开发/aiapply/查看日志的方法.md
|
||||
- Obsidian笔记体系/Projects/saars开发/aiapply/聊天智能机器人(苏苏).md
|
||||
- Obsidian笔记体系/Projects/知你-调测/数美文本风险拦截实施方案.md
|
||||
- gerrit:
|
||||
- gerrit/gerrit上传代码详细指南.md
|
||||
- gerrit/gerrit分支规范.md
|
||||
|
||||
Reference in New Issue
Block a user