我正在尝试将以下 python 代码转换为 jinja 模板,以便我可以在 llama tokenizer 中使用我自己的聊天模板。但我是这个领域的新手,不知道该怎么办。
我的Python代码如下所示:
for i in range(len(messages)):
if i == 0:
do_something()
else:
do_other_things()
我尝试用变量标记第一个元素,该变量的值应该在循环内更改。但实际上变量保持不变,所以我的想法行不通。
我实际尝试过的聊天模板:
{% set is_first = "false" %}
{% for message in messages %}
{% if message['role'] == 'system' %}
{{ '<<SYS>>\\n' + message['content'].strip() + '\\n<</SYS>>\\n\\n'}}
{% set is_first = "true" %}
{% elif message['role'] == 'user' and is_first == "true" %}
{% set is_first = "false" %}
{{ message['content'].strip() + ' [/INST]' }}
{% elif message['role'] == 'user' %}
{{ '[INST] ' + message['content'].strip() + ' [/INST]' }}
{% elif message['role'] == 'assistant' %}
{{ message['content'].strip() }}
{% endif %}
{% endfor %}"""
有没有办法让我的代码正常工作?顺便问一下,当对话框的顺序不是“系统 -> 用户 -> 助手 -> 用户 -> ...”时,有什么方法可以告诉 jinja 引发错误吗?
在此链接中找到了解决方案。使用
loop.index0
访问循环中的索引号。