Files
abot/plugins/member_context/member_context_workflow.yml
liuwei bfd0dbc15c 接入成员画像 Dify 工作流并清理旧提取逻辑
- 新增 member_context 专用 DifyClient,统一兼容 completion 与 workflow 两种调用模式
- 将成员画像插件默认切换到 Dify workflow 模式,配置改用新的 workflow 应用与 workflows/run 接口
- 生成可直接导入 Dify 的成员画像工作流 DSL 文件,方便后台一键导入和发布
- 补充 Dify 工作流接入说明文档,明确输入字段、输出字段、发布步骤与插件消费方式
- 清理旧的单成员日摘要提取链路,日级画像统一收敛到群日批量提取路径,减少无效分支和历史残留
- 去除 member_context 内部多处旧 requests 直连调用,统一改为通过 DifyClient 调用 AI 服务
- 优化群日批量结果解析逻辑,只按 wxid 作为唯一主键识别成员,不再依赖昵称做唯一判断
- 新增按 wxid 的结果去重与完整度评分逻辑,遇到重复成员结果时优先保留字段更完整、置信度更高的一条
- 保留现有初始化、增量、周/月聚合与最终画像生成链路,同时剔除 workflow 接入后已无效或低价值的旧逻辑
- 为后续继续收紧 fallback 标记、增强后台质量诊断和优化工作流输出稳定性打下基础
2026-04-02 14:25:50 +08:00

272 lines
8.0 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
app:
description: 按群和日期提取群成员日画像,输出严格 JSON供 member_context 插件直接消费
icon: 🧠
icon_background: '#E0F2FE'
mode: workflow
name: member_context
use_icon_as_answer_icon: false
dependencies:
- current_identifier: null
type: marketplace
value:
marketplace_plugin_unique_identifier: langgenius/volcengine_maas:0.0.13@d402dc32a505b1b4f27588f10e729209bf413ec263467635774d96c4345bd197
kind: app
version: 0.3.0
workflow:
conversation_variables: []
environment_variables: []
features:
file_upload:
allowed_file_extensions:
- .TXT
allowed_file_types:
- document
allowed_file_upload_methods:
- local_file
- remote_url
enabled: false
fileUploadConfig:
audio_file_size_limit: 50
batch_count_limit: 5
file_size_limit: 15
image_file_size_limit: 10
video_file_size_limit: 100
workflow_file_upload_limit: 10
image:
enabled: false
number_limits: 3
transfer_methods:
- local_file
- remote_url
number_limits: 3
opening_statement: ''
retriever_resource:
enabled: false
sensitive_word_avoidance:
enabled: false
speech_to_text:
enabled: false
suggested_questions: []
suggested_questions_after_answer:
enabled: false
text_to_speech:
enabled: false
language: ''
voice: ''
graph:
edges:
- data:
isInIteration: false
isInLoop: false
sourceType: start
targetType: llm
id: start-source-llm-target
selected: false
source: 'start_node'
sourceHandle: source
target: 'llm_node'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: llm
targetType: end
id: llm-source-end-target
selected: false
source: 'llm_node'
sourceHandle: source
target: 'end_node'
targetHandle: target
type: custom
zIndex: 0
nodes:
- data:
desc: ''
selected: false
title: 开始
type: start
variables:
- label: query
max_length: 120000
options: []
required: false
type: paragraph
variable: query
- label: chatroom_id
max_length: 128
options: []
required: true
type: text-input
variable: chatroom_id
- label: digest_date
max_length: 32
options: []
required: true
type: text-input
variable: digest_date
- label: member_labels
max_length: 50000
options: []
required: true
type: paragraph
variable: member_labels
- label: compressed_chat
max_length: 200000
options: []
required: true
type: paragraph
variable: compressed_chat
height: 194
id: 'start_node'
position:
x: -420
y: 120
positionAbsolute:
x: -420
y: 120
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
context:
enabled: false
variable_selector: []
default_value:
- key: text
type: string
value: '{"members":[]}'
desc: ''
error_strategy: default-value
model:
completion_params:
temperature: 0.2
mode: chat
name: Doubao-1.5-pro-256k
provider: langgenius/volcengine_maas/volcengine_maas
prompt_template:
- id: system_prompt_member_context
role: system
text: |
你是微信群后台的成员日行为证据提取器。
任务:
根据给定的一天群聊记录,只按 wxid 识别成员,输出每个成员当天的结构化行为观察。
关键规则:
1. wxid 是唯一标识。display_name 仅用于展示,不用于身份判定。
2. 每个 wxid 最终只能输出一条记录,严禁重复输出同一个 wxid。
3. 请先按 wxid 汇总该成员全天发言,再提取结果。
4. 即使成员发言以短句为主,只要样本量足够,也必须尽量提炼:
- topics
- skill_signals
- value_preferences
- habit_signals
- engagement_traits
- social_role
- temperament_signal
- summary_text
5. identity_clues、family_signals、life_stage_signals 没有明确公开证据时允许为空。
6. 不允许因为“短句较多”就统一输出空数组和通用摘要。
7. 不做心理诊断、不做隐私猜测、不把玩笑当事实。
8. 只能输出候选成员列表中的 wxid。
9. topics 更偏向反复出现的关注方向skill_signals 更偏向能力表现value_preferences 更偏向判断偏好social_role 更偏向当天在群里的实际作用。
10. 输出前自行去重,同一个 wxid 只保留一条最完整结果。
输出要求:
- 只输出严格 JSON不要 markdown不要解释不要前后缀。
- 输出格式:
{
"members": [
{
"wxid": "成员wxid",
"display_name": "显示名",
"topics": ["主题1"],
"identity_clues": ["身份线索1"],
"skill_signals": ["技能信号1"],
"family_signals": ["家庭线索1"],
"life_stage_signals": ["阶段线索1"],
"value_preferences": ["价值偏好1"],
"interaction_style": "一句中文",
"message_pattern": "一句中文",
"response_style_hint": "一句中文",
"habit_signals": ["习惯1"],
"engagement_traits": ["参与特征1"],
"decision_style": "一句中文",
"social_role": "一句中文",
"reply_taboos": ["避坑1"],
"temperament_signal": "一句中文",
"summary_text": "不超过100字",
"representative_messages": ["原话1", "原话2"],
"confidence": 0.95
}
]
}
字段约束:
- topics、skill_signals、value_preferences、habit_signals、engagement_traits 最多 4 个
- identity_clues、family_signals、life_stage_signals 最多 3 个
- reply_taboos 最多 3 个
- representative_messages 最多 3 条
- 如果某成员样本明显不足,可以不输出该成员
- id: user_prompt_member_context
role: user
text: |
群ID: {{#start_node.chatroom_id#}}
日期: {{#start_node.digest_date#}}
候选成员:
{{#start_node.member_labels#}}
压缩后的群聊记录:
{{#start_node.compressed_chat#}}
selected: false
title: 成员画像提取
type: llm
variables: []
vision:
enabled: false
height: 98
id: 'llm_node'
position:
x: 10
y: 140
positionAbsolute:
x: 10
y: 140
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
desc: ''
outputs:
- value_selector:
- 'llm_node'
- text
variable: text
selected: false
title: 结束
type: end
height: 90
id: 'end_node'
position:
x: 430
y: 140
positionAbsolute:
x: 430
y: 140
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
viewport:
x: 120
y: 180
zoom: 0.9