任务配置格式 - opendatalab/LabelLLM GitHub Wiki
类型定义
Config
interface Config {
/** 分发次数:一条对话数据需要标注几次 */
questionnaire_type: any;
/** 针对整个对话的配置 */
conversation: {
questions: Question[];
};
/** 针对每条回复的配置 */
message: {
questions: Question[];
/** 是否对所有回复排序 */
is_sortable: boolean;
/*
** 序号是否可重复,默认不可重复
** @default true
*/
is_sn_unique: boolean;
};
/** 针对每个提问的配置 */
question: {
questions: Question[];
};
}
Question
interface ConditionContent {
/** 依赖的题目的值 */
field: string;
/** 依赖的题目的选项的值 */
value: string;
/** 关联的题目id */
question_id: string;
/** 关联的选项id */
option_id: string;
/** 运算符 eq 等于;neq 不等于;in 包含;nin 不包含 */
operator: 'eq' | 'neq' | 'in' | 'nin';
}
interface ConditionItem {
connector: 'and' | 'or';
items: ConditionContent[];
children?: ConditionItem[];
}
interface Qustion {
id: string;
/** string 为填空题,enum 为单选题,array 为多选题 */
type: 'string' | 'enum' | 'array';
/** 题目内容 */
label: string;
/** 题目的值 */
value: string;
/** 题目的选项,当type为string是可为空 */
options?: {
/** 选项内容 */
label: string;
/** 选项的值 */
value: string;
/** 选项的 id,添加和删除题目选项时的唯一标示 */
id: string;
/** 是否默认选中 */
is_default?: boolean;
}[];
/** 填空的最大长度, */
max_length?: number;
/** 是否预览默认展开 */
is_preview_expanded?: boolean;
/** 是否可上传附件 */
is_upload_available?: boolean;
/** 填空的默认值 */
default_value?: string;
/** 是否必填 */
required?: boolean;
/** 题目可见性条件,有条件存在时,默认不可见,当条件满足时才可见 */
conditions?: ConditionItem[];
}
任务配置数据样例
1. 问题类型
// 问题基本结构,具体结构请参考后续的内容
{
"label": "dasdweqwe", // 问题的内容
"value": "22", // 最终导出的问题结果的字段名称
"type": "enum", // 问题类型
"id": "_gbcft1px8",
"options": [
{
"label": "213", // 显示的选项名称
"value": "44", // 最终导出的选项的字段名称
"id": "_xmybap65b" // 对选项编辑时产生的唯一标识
},
{
"label": "1235", // 显示的选项名称
"value": "332", // 最终导出的选项的字段名称
"id": "_rhrrg1xoy" // 对选项编辑时产生的唯一标识
}
]
}
// 单选题
{
"label": "dasdweqwe", // 问题的内容
"value": "22", // 最终导出的问题结果的字段名称
"type": "enum", // 问题类型
"id": "_gbcft1px8",
"options": [
{
"label": "213", // 显示的选项名称
"value": "44", // 最终导出的选项的字段名称
"id": "_xmybap65b" // 对选项编辑时产生的唯一标识
},
{
"label": "1235", // 显示的选项名称
"value": "332", // 最终导出的选项的字段名称
"id": "_rhrrg1xoy" // 对选项编辑时产生的唯一标识
}
]
}
// 多选题
{
"label": "dasdweqwe", // 问题的内容
"value": "22", // 最终导出的问题结果的字段名称
"type": "array", // 问题类型
"id": "_gbcft1px8",
"options": [
{
"label": "213", // 显示的选项名称
"value": "44", // 最终导出的选项的字段名称
"id": "_xmybap65b" // 对选项编辑时产生的唯一标识
},
{
"label": "1235", // 显示的选项名称
"value": "332", // 最终导出的选项的字段名称
"id": "_rhrrg1xoy" // 对选项编辑时产生的唯一标识
}
]
}
// 填空题
{
"label": "其他错误",
"value": "else-reason",
"type": "string",
"max_length": 1000,
"default_value": "",
"id": "_7jpgyc0pa",
"conditions": [
{
"field": "reason",
"value": "else-error",
"question_id": "_gbcft1px8",
"option_id": "_rhrrg1xoy"
},
{
"field": "reason",
"value": "else-error",
"question_id": "_gbcft1px8",
"option_id": "_rhrrg1xoy"
}
]
}
2. JSON样例
{
"conversation": {
"questions": [
{
"label": "选择题1",
"value": "1",
"type": "enum",
"required": true,
"options": [
{
"label": "选择1-1",
"value": "1-1",
"id": "_6lg367typ"
},
{
"label": "选择1-2",
"value": "1-2",
"id": "_0dxygwgl9"
}
],
"id": "_d1pmfvpb9"
},
{
"label": "选择题2-多选",
"value": "2",
"type": "array",
"required": true,
"options": [
{
"label": "选择2-1",
"value": "2-1",
"id": "_8hg02slwq"
},
{
"label": "选项2-2",
"value": "2-2",
"id": "_acdb5ukxj"
}
],
"id": "_8s9sbfzs3",
"conditions": [
{
connector: 'or',
items: [{
"value": "1-1",
"field": "1",
"option_id": "_6lg367typ",
"question_id": "_d1pmfvpb9",
"operator": "eq"
}],
children: []
}
]
},
{
"label": "输入框",
"value": "3",
"type": "string",
"required": true,
"default_value": "",
"id": "_k0p3nrkef",
"conditions": [
{
connector: 'or',
items: [{
"value": "2-1",
"field": "2",
"option_id": "_8hg02slwq",
"question_id": "_8s9sbfzs3"
"operator": "in"
}],
children: []
}
]
}
]
},
"message": {
"questions": [],
"is_sortable": false,
"is_sn_unique": true
}
}
3. 说明
3.1 条件设置
- conditions 中每个条目里的field对应上一级question中的value;value 对应 question 中的value;这个 condition 意为: 当选项中的「选择题2-多选」选中 「选择2-1」时,「输入框」方可显示;
- conditions中每个条目里的 option_id 和 question_id 的作用是,当条件中关联的题目或者选项发生变更(删除或修改字段名)时,与之关联的条件也同步更新。
3.2 针对每条回复和对话
- 两者的问题配置结构一致。
3.2.1 示例:对多个答案评估&排序
界面图
配置json
{
"config": {
"expire_time": 600,
"questionnaire_type": "Judge",
"distribute_num": 3,
"conversation": {
"questions": []
},
"message": {
"questions": [
{
"label": "以上言论是否符合以下选项",
"value": "1",
"type": "enum",
"required": true,
"options": [
{
"label": "选项1",
"value": "choice1",
"id": "_6lg367typ"
},
{
"label": "选项2",
"value": "choice2",
"id": "_0dxygwgl9"
},
{
"label": "选项3",
"value": "choice3",
"id": "_2lceqgl1"
}
],
"id": "_d1pmfvpb9"
}
],
"is_sortable": true,
"is_sn_unique": true
}
}
}
输出格式
// 标注提交的数据
{
// 针对单挑消息的评价
"message_evaluation": {
[messageId]: {
[Qustion.value]: '123'
},
[messageId2]: {
[Qustion.value]: 'abc'
}
},
// 针对整个对话的评价
"conversation_evaluation": {
[Qustion.value]: '123'
},
// 针对整个问卷的评价
"questionnaire_evaluation": {
is_invalid_questionnaire: boolean
}
}