ollama API Improvements

wdebmtf2  于 2个月前  发布在  其他
关注(0)|答案(3)|浏览(34)

我目前正在为ollama编写一个webui,但我觉得API相当有限/繁琐。
关于它的愿景/计划是什么?它是处于冻结状态,还是计划进行改进?
以下是一些批评:

  • 混合模型/生成端点。一些命名空间会很好。
  • 混合 model / name 参数,它们指的是相同的事情。
  • /api/tags :为什么这个命名为标签?
  • GET /api/tags :要获取所有可用的本地模型,但 POST /api/show 是要获取一个吗?
  • 有些端点会抛出错误,有些会返回 status 作为JSON属性。
  • 没有查询可用的公共模型仓库的方法
  • POST /api/create :不允许仅将 Modelfile 指定为原始文本,因此在客户端(客户端端)没有创建模型的方法(没有文件系统访问)。也没有仅使用对象指定模型文件的方法。而且要使其工作, FROM 需要处理远程资源。
  • POST /api/show :返回一个字符串,迫使客户端解析它以获取实际数据。如果它也返回一个JSON对象,那就更好了。
  • POST /api/embeddings :没有批处理支持基本上是无用的
  • Modelfile 中:

为了正确支持聊天代理,最好有一个聊天专用的生成端点,并能够在 template 中遍历它们。
否则,该功能本身相当有限,需要客户端大部分覆盖和重新实现所有逻辑(并且它还需要知道所有底层模型参数)。
(这是HuggingFace如何做的:https://huggingface.co/HuggingFaceH4/zephyr-7b-beta/blob/main/tokenizer_config.json#L34)
示例:
定义 Modelfiletemplate :

{{range .Messages}}
<|{{ .Role }}|>
{{ .Content }}
</s>
{{end}}

而不是:

{{- if .System }}
<|system|>
{{ .System }}
</s>
{{- end }}
<|user|>
{{ .Prompt }}
</s>
<|assistant|>

然后将消息作为JSON数组传递给
POST /api/chat/generate

{
    ...,
    "messages": [
        {"role": "system", "content": "you are an assistant"},
        {"role": "user", "content": "hello"},
        {"role": "assistant", "content": "hi there"}
    ]
}

如果你想看看我的应用,可以访问: https://github.com/knoopx/llm-workbench

unguejic

unguejic1#

+1 为聊天代理支持和潜在模板格式更改。
尽管LangChain默认支持Ollama,但其模型实现是错误的,因为它使用自己的提示格式(即Alpaca-like)来预处理输入,然后在将请求发送到服务器后再次用模型特定的提示模板 Package 。(参见https://github.com/langchain-ai/langchainjs/blob/main/langchain/src/chat_models/ollama.ts#L256)
这是一个LangChain应该解决的问题,但真正的问题在于,目前Ollama处理提示模板的方式无法正确实现模型。
具体来说,LangChain假设聊天模型可以在单个提示中处理来自系统、用户或AI的消息列表。
但是,即使我们可以将 ChatOllama 更改为查询模型特定的模板并使用 raw 参数发送格式化的提示,也无法解析模板以提取每种消息类型的适当格式。

mzmfm0qo

mzmfm0qo2#

你好,有人在开发可以处理嵌入的批处理功能吗?如果没有的话,除了使用基本的小文本语料库进行测试外,这个功能就无法使用了。

klr1opcd

klr1opcd3#

批量嵌入对于整个嵌入功能来说是必须的。看起来在#3642中已经完成了一些工作,尽管它已经有一段时间处于草案状态了。

相关问题