LLaMA-Factory icon indicating copy to clipboard operation
LLaMA-Factory copied to clipboard

【互助】关于Agent中react/ReAct 模板数据如何组织方法

Open txy6666yr opened this issue 9 months ago • 8 comments

目前的react模板中,一般需要增加role如thought/observation/action等,参考data下readme文件,以及这篇文章。可以直接根据我们目标模型的template组织数据,手动添加到user或者assistant字段中。

如:role包含 user,thought,assistant,微调qwen qwen的数据组织如下:

<|im_start|>system
You are a helpful assistant.<|im_end|>
<|im_start|>user
{{query}}<|im_end|>
<|im_start|>assistant
{{ans}}<|im_end|>

我们需要增加thought角色:

<|im_start|>system You are a helpful assistant.<|im_end|> <|im_start|>user {{query}}<|im_end|> <|im_start|>thought {{thought}}<|im_end|> <|im_start|>assistant {{ans}}<|im_end|>

如只预测assistant只需要把assistant前面的内容都当做user即可 即:

{
        "instruction": "{{query}}<|im_end|>\n<|im_start|>thought\n{{thought}}",
        "input": "",
        "output": "{{ans}}",
        "history": [],
        "system": "You are a helpful assistant."
}

这样即可。 #3667 #3292 #3227

txy6666yr avatar May 15 '24 02:05 txy6666yr

这样是不是需要修改qwen的template

kapiya avatar May 16 '24 02:05 kapiya

类似<|im_end|>的特变标记,是套用template上添加的,如果直接在数据上加上,是不是会有问题

{
        "instruction": "{{query}}<|im_end|>\n<|im_start|>thought\n{{thought}}",
        "input": "",
        "output": "{{ans}}",
        "history": [],
        "system": "You are a helpful assistant."
}

kapiya avatar May 16 '24 02:05 kapiya

类似<|im_end|>的特变标记,是套用template上添加的,如果直接在数据上加上,是不是会有问题

{
        "instruction": "{{query}}<|im_end|>\n<|im_start|>thought\n{{thought}}",
        "input": "",
        "output": "{{ans}}",
        "history": [],
        "system": "You are a helpful assistant."
}

不需要修改template,只是相当于user部分你扩充了,达到了修改template的效果 我的代码不会,你看使用作者框架训练的时候,输出的那个例子是不是符合你要求的就好,作者的这个框架每次训练会输出一个例子的

txy6666yr avatar May 16 '24 03:05 txy6666yr

类似<|im_end|>的特变标记,是套用template上添加的,如果直接在数据上加上,是不是会有问题

{
        "instruction": "{{query}}<|im_end|>\n<|im_start|>thought\n{{thought}}",
        "input": "",
        "output": "{{ans}}",
        "history": [],
        "system": "You are a helpful assistant."
}

不需要修改template,只是相当于user部分你扩充了,达到了修改template的效果 我的代码不会,你看使用作者框架训练的时候,输出的那个例子是不是符合你要求的就好,作者的这个框架每次训练会输出一个例子的

那就是说我组织数据的时候,就得包含类似的<|im_end|>\n<|im_start|这样的特殊标记了,不知道我理解的对不对

kapiya avatar May 16 '24 03:05 kapiya

类似<|im_end|>的特变标记,是套用template上添加的,如果直接在数据上加上,是不是会有问题

{
        "instruction": "{{query}}<|im_end|>\n<|im_start|>thought\n{{thought}}",
        "input": "",
        "output": "{{ans}}",
        "history": [],
        "system": "You are a helpful assistant."
}

不需要修改template,只是相当于user部分你扩充了,达到了修改template的效果 我的代码不会,你看使用作者框架训练的时候,输出的那个例子是不是符合你要求的就好,作者的这个框架每次训练会输出一个例子的

那就是说我组织数据的时候,就得包含类似的<|im_end|>\n<|im_start|这样的特殊标记了,不知道我理解的对不对

是的,我是按照这样训练的,但是我的代码比较旧,不是最新的,你可以试一下,帮大家反馈下~

txy6666yr avatar May 16 '24 03:05 txy6666yr

3ks,我尝试一下,先把数据重新组织一下

kapiya avatar May 16 '24 03:05 kapiya

如果react是多轮的怎么组织数据,就是会有多个thought/observation/action等

huchaodong avatar May 16 '24 07:05 huchaodong

如果react是多轮的怎么组织数据,就是会有多个thought/observation/action等

放到history中?

kapiya avatar May 17 '24 08:05 kapiya