前提条件
- 我正在运行最新的代码。如果可能的话,请提及版本。
- 我仔细遵循了 README.md 。
- 我使用与我的问题相关的关键词进行搜索,以确保我创建的是一个尚未打开(或关闭)的新问题。
- 我回顾了 Discussions ,并有一个新且有用的改进要分享。
功能描述
目前,在使用服务器的 /completion
端点时,无法检索有关模型的推荐聊天模板的信息。此功能的想法是在 /props
端点中添加一个新的属性 chat_example
,该属性返回服务器启动时记录的相同信息:
chat_example="<|im_start|>system\nYou are a helpful assistant<|im_end|>\n<|im_start|>user\nHello<|im_end|>\n<|im_start|>assistant\nHi there<|im_end|>\n<|im_start|>user\nHow are you?<|im_end|>\n<|im_start|>assistant\n"
这与 #5447 (已关闭为“过时”)中的建议方向相同,但现在明确使用了从模型读取模板并使用 llama_chat_apply_template
执行它们的能力。
动机
这个问题出现在 #8196 中,作为一种从服务器UI访问内置模板的方法,格式化的聊天可能比完整的jinja2模板更容易处理,至少对于模板不太复杂的情况下。这将使许多扩展能够使用 /completion
端点的模板:
- 从服务器UI的库中选择一个匹配的聊天模板,通过测试可用模板并找到聊天示例的最佳匹配来测试它。
- 或者,用户在UI中选择的模板可以与服务器内部使用的模板进行验证。如果有差异,UI会显示警告。这有助于突出和调试模板中的不一致性。
- 对于不太“奇怪”的模板,可能可以直接从聊天示例中推导出其正确用法,方法是将系统提示和查询填充到模板中,然后循环最后两个对话回合("assistant"和"user")。
可能的实现
- 当服务器启动时,存储
chat_example
字符串(已经记录),供将来使用。 - 在构建
/props
响应时,在顶层返回chat_example
字符串,紧邻system_prompt
。
1条答案
按热度按时间ht4b089n1#
您可以从/props端点访问chat_template: #8337
我认为我们可以开始在JS中寻找轻量级的jinja解析器,以适应项目。如果我们找不到一个,那么让我们按照chat_example的方式来做。