llama.cpp 功能请求:服务器:通过/props端点使chat_example可用

qncylg1j  于 2个月前  发布在  其他
关注(0)|答案(1)|浏览(47)

前提条件

  • 我正在运行最新的代码。如果可能的话,请提及版本。
  • 我仔细遵循了 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
ht4b089n

ht4b089n1#

您可以从/props端点访问chat_template: #8337
我认为我们可以开始在JS中寻找轻量级的jinja解析器,以适应项目。如果我们找不到一个,那么让我们按照chat_example的方式来做。

相关问题