ollama 更丰富的语法

7gs2gvoe  于 1个月前  发布在  其他
关注(0)|答案(7)|浏览(27)

你想要做什么呢?
能够指定语法是很棒的,但目前似乎没有充分利用。这主要是关于如何从实验中改进的一些想法...
我们应该如何解决这个问题呢?

  • 直接使用llama.cpp语法会非常强大,也很方便
  • 为json指定jsonschema。Llama.cpp json通常被强制放入特定的键顺序,而ollama json根本没有进行过模式化
  • 实时更改格式是有用的,但我认为有一个方法可以在Modelfile中指定语法会更好。

如果不解决这个问题会有什么影响呢?
没有前两个想法会很烦人,因为没有办法保证模型生成我想要的格式的响应。第三个想法允许创建一个"llm api",其中模型每次都生成特定的响应(想象一下将一个总是用{"summary":"..."}响应的"摘要llm"打包成Modelfile)。
还有其他的想法吗?

  • 无响应*
iovurdzv

iovurdzv1#

关于这种行为的几个开放的PR - 最近的一个是#3618,如果能合并进来就太棒了。这是一个2行的更改,通过modelfile参数暴露llama.cpp的GBNF功能。这不是我的补丁,但我已经编译并在本地使用过它,效果非常好。

zvokhttg

zvokhttg2#

在Modelfile中指定语法是一件事。能够像llama.cpp server那样在请求中发送语法字符串会更有用。现在Ollama能做到这一点吗?api文档中没有关于语法的内容。

p1tboqfb

p1tboqfb3#

是的,你可以在提交带有上面链接的补丁的请求时将语法作为选项发送。只是没有文档记录!
以下是一个示例:
POST http://localhost:11434/api/chat

{
  "model":"llama3:8b",
  "stream": false,
  "messages":[
    {"role":"user", "content": "The sky is blue, true or false?"}
  ],
  "options":{
    "grammar": "root ::= (\"true\" | \"false\")"
  }
}

响应:

{
  "model": "llama3:8b",
  "created_at": "2024-04-21T20:53:15.212659393Z",
  "message": {
    "role": "assistant",
    "content": "true"
  },
  "done": true,
  "total_duration": 545867966,
  "load_duration": 5912270,
  "prompt_eval_duration": 213384000,
  "eval_count": 2,
  "eval_duration": 202538000
}
x7yiwoj4

x7yiwoj44#

它只是没有被记录!
所以,我可以在 #3618 中添加关于它的文档。
更新:已完成。

lb3vh1jj

lb3vh1jj5#

这真的很酷。不过就我所见,它还没有合并到主分支中。

ecbunoof

ecbunoof6#

这将是非常好的,更接近于放弃我的自定义Python绑定llamacpp,并能够使用ollama现在他们也开始支持并发模型。发送一个语法与请求一起是支持的一个很好的功能。

imzjd6km

imzjd6km7#

我在#5348中添加了对这个和JSON模式的支持。

相关问题