ollama 自动子语言约束部分

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

如果Ollama支持自动、基于文本的插件驱动的语法部分,那将会很有用。每次在文本中使用三引号部分时,它都会进入相应的语言模式约束,例如:

  1. "```json" 进入 json bnf
  2. "```json:Foo" 进入 json bnf + json schema for Foo对象
  3. "```python" 进入 python bnf
  4. "```quote:documentRef" 进入基于trie的约束,用于引用
  5. "```whatever:whatever?" 进入 whatever
  6. 最后的一个 "
可用的语法可以是:
1. 服务器/模型定义的——避免网络开销
1. 客户端定义的——在客户端控制下灵活(可能更好)
插件/处理器的API可以是:
1. 基于字符的——给定从“```foo”输入开始的文本,返回允许的字符,或者
1. 基于本地模型令牌的——给定相同的输入,返回允许的令牌列表,或者
1. 通用后缀文本——给定相同的输入,返回允许的、任意大小的补全列表(这样插件就可以采用,例如对于广泛的扇出,它可以返回短字符串列表,即单个字符,对于较少的扇出,它可以产生较长的输出,并可能进行单一输出优化,其中LLM不需要被咨询<<如果允许单个补全,则无需通过模型运行>>),或者
1. 优化后的trie输出——给定相同的输入,以压缩的trie格式返回3。
插件可以内部使用任何策略来符合自动补全接口(BNF、基于文档引用的trie索引或其他内容)。
标题可以是基于URI的,例如 "```trie://mydb/docs?id=123",这样插件就可以将自己注册为特定模式的处理程序。
cnh2zyt3

cnh2zyt31#

@jmorganca 这个提议与支持更多 format 选项无关,而是关于自动识别文本本身内的三引号部分(并理想地将控制权交给客户端)。
它可以被看作是一个简单易用的解决方案,位于高级“格式”和低级 aici 之间。

iq3niunx

iq3niunx2#

抱歉,我误解了!

相关问题