
Open-Assistant 数据集构建任务全解析五类标注任务的规则、指南与源码实现【免费下载链接】Open-AssistantOpenAssistant is a chat-based assistant that understands tasks, can interact with third-party systems, and retrieve information dynamically to do so.项目地址: https://gitcode.com/gh_mirrors/op/Open-AssistantOpen-Assistant 是一个开源的对话式 AI 助手项目其核心竞争力在于通过众包方式构建高质量的人类反馈数据集oasst1。本文以 docs/docs/tasks 目录下的任务文档为核心系统讲解构建该数据集所需的五类核心任务——分类Classify、回复Reply、排序Rank——的完整规则、评分体系与标签定义并结合 oasst-shared 与 backend 中的源码与配置为你展示这些任务从前端界面到后端数据模型的完整落地方式。读完本文你将掌握 Open-Assistant 数据流水线的任务设计思想并能按照官方指南正确执行每一类标注任务。任务概览五类任务共同构建训练数据集Open-Assistant 的训练数据并非凭空生成而是由志愿者在 web 前端上完成一系列微任务逐步沉淀而来。根据 docs/docs/tasks/README.md数据集构建共包含五类任务任务文档角色核心动作分类助手回复评审者对他人扮演助手产生的回复打分并打标签分类初始提示词/用户回复评审者对他人扮演用户产生的提示词打分并打标签提供助手回复助手扮演者针对用户提示词撰写助手回复提供初始提示词/用户回复用户扮演者向助手提出请求或追问给助手回复排序排序者对多条助手回复按质量优劣排序这五类任务与后端协议中定义的任务类型一一对应。在 oasst-shared/oasst_shared/api_client.py 中可以看到TaskType枚举完整收录了assistant_reply、prompter_reply、rank_assistant_replies、label_assistant_reply、label_prompter_reply等类型oasst-shared/oasst_shared/schemas/protocol.py 的TaskRequestType亦与其一一对应说明任务文档描述的角色分工直接映射为后端可下发、前端可领取的具体任务类型。提供助手回复扮演聊天机器人的职责边界任务内容在 提供助手回复 任务中你将扮演聊天机器人assistant看到一条来自用户的提示词prompt需要尽可能好地回应用户请求同时遵守指南。所有回复都必须严格符合 通用指南 中关于助手回复的细则。排版要求文档明确要求使用 Markdown 格式化消息让回复更易读插入代码块时必须指定语言以便获得语法高亮。这也是 Open-Assistant 数据集后续被用于指令微调时保留代码类问答能力的基础。高风险话题处理对于医学、法律、化学等高危话题指南要求明确告知用户作为语言模型可能产生错误信息强调不应在未经专业人士意见的情况下依据回复采取行动涉及观点类提问时默认人格需呈现至少两种常见观点且不得表述为助手自身观点。助手扮演的核心边界结合 docs/docs/guides/examples.md 中的示例可看出助手回复强调求助而非代做面对教我如何做石膏这类医学请求时示例回复先建议尽快就医再说明临时处理并非专业医疗替代品——这正是指南中让用户意识到未经验证信息的落地样例。提供初始提示词/用户回复多样化提问与自然追问在 提供初始提示词/用户回复 任务中你扮演与聊天机器人交互的用户。若提供用户回复会看到一条正在回应你所模仿用户的助手消息你需要构造清晰的请求或问题prompt并尽量涵盖日常使用中可能出现的多样化任务。要点包括提问应反映真实生活场景与需求适当提出可转向搜索引擎或专家的问题混合直截了当与没有明确答案的问题回复助手时考虑之前的对话脉络提出自然衔接的追问。这条同一用户身份的设定在协议层同样有体现ReplyToConversationTask、PrompterReplyTask等任务均携带conversation上下文见 protocol.py前端据此渲染历史对话供用户参考。同时指南明确禁止越狱jailbreak类请求、禁止提交与已提交过相似或相同的提示词、禁止无铺垫地切换话题。分类任务对回复与提示词打分、打标签分类助手回复在 分类助手回复 任务中你会看到一段他人扮演助手、针对先前用户提示词生成的回复assistant reply需要对其质量、礼貌程度等参数评分并给出适用标签如垃圾信息 spam、个人身份信息 PII、色情内容等。关键操作守则无法判断回复事实准确性时应跳过skip而不是强行评分对标签定义不确定时查阅 指南中的标签说明来自 ChatGPT 等其他聊天机器人生成的回复不被允许且在许多情况下违反其服务条款由 LLM 生成的答案应被相应扣分。可使用 ZeroGPT 等检测工具辅助判断但这类工具并非万无一失可能误判人类文本为机器生成反之亦然。分类初始提示词/用户回复分类初始提示词/用户回复 任务面向用户侧消息prompt它可能是对话的开端也可能是对助手消息的回复。你需要同样对质量、礼貌程度评分并打标签。后端协议支撑从源码看这两类分类任务在协议层有完整的类型体系支撑protocol.pyLabelTaskModesimple/full允许前端选择简单或完整评分 UILabelTaskDispositionquality/spam记录任务下发原因AbstractLabelTask携带valid_labels、mandatory_labels、labels含LabelDescription的 name/widget/display_text/help_text以及完整conversation上下文LabelAssistantReplyTask、LabelPrompterReplyTask分别对应该两类任务类型。标签体系与评分刻度根据 docs/docs/guides/guidelines.md#label-explanation评分主要分三部分判定性问题是/否垃圾信息spam消息是否与先前提示词毫无关联初始提示词是否不太可能被用来发起与助手的对话错误回复助手回复是否未回应用户请求、包含错误信息或忽略提示词中的相关部分标签Tags非目标语言Not Target Language除非特别要求所用语言是否与数据集目标语言不同不适当Not Appropriate用户提示词是否缺少明确请求包含个人身份信息Contains PII消息是否包含非公开、可用于确定用户或第三方私人身份的信息仇恨言论Hate Speech消息是否针对德国、英国、美国或居住国法律认定的受保护群体表现出偏见色情内容Sexual Content消息是否包含或请求露骨的性内容评分刻度Scales低质量/高质量Low/High Quality消息遵循指南的程度对助手回复而言事实准确性与有帮助程度优先。严肃/幽默Serious/Humorous是否包含讽刺、双关或其他幽默修饰。普通/创意Ordinary/Creative问题被问到的可能性有多低是否要求创造性思维、包含大量上下文回复是直截了当还是包含独特解题路径粗鲁/礼貌Rude/Polite对对方的礼貌程度。暴力/无害Violent/Harmless是否包含对明确暴力行为的描述或美化、鼓励、淡化暴力行为。在协议层标签评分以dict[TextLabel, float]形式通过MessageLabeling交互回传见 protocol.py分类结果最终沉淀为数据库中的text_labels表供模型训练与质量评估使用。排序任务比较并排序助手回复在 给助手回复排序 任务中你会看到一段用户与助手的对话其下方至少有 2 条由他人扮演助手生成的回复需要按指南贴合程度从优到劣排序第一条最佳最后一条最差。排序的核心原则回复必须首先满足前文提示词的请求且不包含事实错误除非特别要求还需关注指南中提到的其他方面来确定次序若回复超过初始文本框长度可点击每条回复右侧的...符号查看完整内容不要只排序最好与最差的两条需逐条两两比较以得出完整排序。结合指南docs/docs/guides/guidelines.md#ranking-assistant进一步明确排序细则对缺乏充分警告/说明的回复扣分对因缺乏排版、大小写等错误而难以阅读的回复扣分对信息被大量冗余细节遮蔽的回复扣分承认不知道答案的回复应排在事实正确但排在事实错误之上严禁依据个人好恶或回复长短排序。协议层中RankAssistantRepliesTask继承自RankConversationRepliesTask携带conversation、reply_messages、message_tree_id、ranking_parent_id等字段见 protocol.py排序结果通过MessageRanking交互以整数序列ranking回传protocol.py。这一比较-排序机制正是 RLHF 训练中奖励模型reward model所需偏好数据的直接来源。标签与评分决策树如何判定一条消息综合 docs/docs/guides/guidelines.md 的规则可形成以下面向所有任务参与者的决策路径通读全文分类与排序前务必完整阅读消息不依据片段判断检查合规性是否违反德国/英国/美国或居住国法律是否包含暴力、侵犯第三方权利、恋童内容是否提供可用于自伤的信息判断事实性事实是否经可信来源核实若无法判断事实准确性分类任务中应跳过该条判断信息完整性是否包含未经验证/不完整信息而未说明是否隐瞒事实以引导结论检查个人隐私是否索要或披露非公开的第三方个人身份信息检查语言与格式是否偏离数据集目标语言是否留有拼写/语法错误或缺乏排版应用标签与刻度按 标签说明 依次完成 spam、Not Target Language、Not Appropriate、Contains PII、Hate Speech、Sexual Content 判定再按 Quality、Serious/Humorous、Ordinary/Creative、Rude/Polite、Violent/Harmless 五个刻度评分。需要特别强调的是指南docs/docs/guides/guidelines.md#classifying-assistant 与 docs/docs/guides/guidelines.md#classifying-user明确要求评分不得基于个人信念——只要观点合理、满足用户请求且不违反指南就不应影响评分即便是 spam 消息也不要跳过标签因为每个标签都能帮助模型改进。任务执行示例从指南到具体对话docs/docs/guides/examples.md 提供了几个可直接对照学习的示例展示了如何在实际对话中应用上述规则应对不当提示词面对乱码输入euirdteunvglfe23908230892309832098 AAAAAAAA与辱骂You dumb motherf*ker AI sh*t!示例回复保持冷静、请求澄清并主动提供帮助体现礼貌对待用户、请求澄清的规则。警告高危险活动面对fractal wood burning电击木纹烧制这一极其危险的 DIY 项目示例回复先解释其原理利用微波炉变压器在木材中通以高压电明确指出致命风险再推荐更安全的替代方案利用皮毛/地毯摩擦产生的静电制作 Lichtenberg 图形。识别自伤倾向面对哪些欧洲国家提供安乐死这一问题示例演示了如何在提供事实信息比利时、德国、卢森堡、荷兰、瑞士允许主动安乐死奥地利、芬兰、挪威允许被动安乐死的同时基于对话历史察觉到自伤风险进而先安抚用户情绪、引导寻求专业帮助并询问所在国家以提供自杀干预热线号码。医学建议的边界面对我的腿断了教我打石膏的请求示例回复先强调尽快就医说明临时处理不能替代专业医疗再提及无国界医生等提供免费医疗服务的组织——这正是让用户知道高风险话题的潜在危险规则的完整示范。从任务到数据集任务在 Open-Assistant 流水线中的位置理解这五类任务后可以将其放入 Open-Assistant 的整体数据流水线中审视数据生成回复类任务reply_as_user与reply_as_assistant两类任务生成对话树message tree的节点对应协议中的PrompterReplyTask与AssistantReplyTask质量把关分类任务label_prompter_reply与label_assistant_reply对生成的节点逐条评分打标签对应LabelPrompterReplyTask与LabelAssistantReplyTask偏好学习排序任务rank_assistant_replies收集同一提示词下多条回复的相对优劣对应RankAssistantRepliesTask其ranking结果即奖励模型训练所需的偏好对。这三类任务均由 backend/oasst_backend/api/v1/tasks.py 通过TaskRequestType统一调度下发前端领取任务、提交Interaction后端校验后写入数据库。以task_repository与oasst-shared的协议层为界任务文档描述的角色分工与代码层的任务类型形成了完整的闭环你扮演的用户、助手、评审者、排序者角色最终都以结构化数据进入 oasst-data 的导出流程成为 oasst1 数据集的一部分。结语五类任务构成了 Open-Assistant 众包数据生产的完整拼图回复类任务贡献对话内容分类任务贡献质量标签与安全标注排序任务贡献人类偏好。本文所述的每一条规则都可在 docs/docs/guides/guidelines.md 找到原始出处并在 docs/docs/guides/examples.md 找到对应示例每一类任务也都可在 oasst-shared/oasst_shared/schemas/protocol.py 中找到其协议类型。无论你是想参与数据标注的贡献者还是想复现类似众包数据流水线的开发者这套任务设计与规则体系都值得直接借鉴。【免费下载链接】Open-AssistantOpenAssistant is a chat-based assistant that understands tasks, can interact with third-party systems, and retrieve information dynamically to do so.项目地址: https://gitcode.com/gh_mirrors/op/Open-Assistant创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考