Dify 点赞保存用户问题和答案功能
本文详细介绍如何在Dify应用中实现用户点赞后,自动将用户问题和AI答案保存到外部系统,包括环境变量配置、API格式、后端与前端实现细节、常见问题排查与安全建议等,适合Dify二次开发和企业集成场景。
这个功能允许在用户点击赞同时,自动保存用户的问题和AI的答案到外部系统。
功能概述
当用户在Dify应用中与AI对话后点击赞同按钮时,系统会:
- 保存用户的反馈(点赞/点踩)
- 如果用户点赞,同时通过HTTP接口将问题和答案发送到配置的外部API
配置方法
1. 环境变量配置
在Dify的API服务中设置以下环境变量:.env文件设置
# 保存API的URL(必需)
FEEDBACK_SAVE_API_URL=http://your-api-server.com/save-feedback
# 保存API的请求头(可选,JSON格式)(如果有权限校验)
FEEDBACK_SAVE_API_HEADERS={"Authorization": "Bearer your-token", "Content-Type": "application/json"}
# 保存API的超时时间(可选,默认30秒)
FEEDBACK_SAVE_API_TIMEOUT=30
参考配置:
# 设置保存API的URL
export FEEDBACK_SAVE_API_URL="http://localhost:5005/save-feedback"
# 设置请求头(如果没有鉴权可选)
export FEEDBACK_SAVE_API_HEADERS='{"Content-Type": "application/json"}'
# 设置超时时间(可选,默认30秒)
export FEEDBACK_SAVE_API_TIMEOUT="10"
2. 前端配置(可选)
如果需要在前端动态配置保存API,可以设置以下环境变量:
# 前端环境变量
NEXT_PUBLIC_FEEDBACK_SAVE_API_URL=http://your-api-server.com/save-feedback
NEXT_PUBLIC_FEEDBACK_SAVE_API_HEADERS={"Authorization": "Bearer your-token"}
API数据格式
当用户点赞时,系统会向配置的API发送POST请求,数据格式如下:
{
"question": "用户的问题内容",
"answer": "AI的回答内容",
"message_id": "消息的唯一ID",
"conversation_id": "对话的唯一ID",
"app_id": "应用的唯一ID",
"user_id": "用户的唯一ID",
"user_type": "用户类型(account或end_user)",
"created_at": "消息创建时间(ISO格式)",
"feedback_rating": "反馈评分(like)",
"feedback_content": "反馈内容(如果有)"
}
示例接收API
项目根目录下的 example_receiver_api.py 是一个示例接收API,展示了如何接收和处理Dify发送的数据。
运行示例API
# 安装依赖
pip install flask
# 运行示例API
python example_receiver_api.py
示例API会在 http://127.0.0.1:5005 启动,提供以下接口:
POST /save-feedback- 接收反馈数据GET /feedback-data- 查看所有保存的数据GET /health- 健康检查
实现细节
后端实现
-
FeedbackSaveService (
api/services/feedback_save_service.py)- 处理反馈保存逻辑
- 通过HTTP接口发送数据到外部系统
-
FeedbackSaveConfig (
api/configs/feedback_save_config.py)
