2024年路线图
Outlines还不到一岁,但已经走了很远的路!当我们刚刚达到4000个星标,并在制定下一年的路线图之前,我们想暂停一下,感谢你们所有人对我们的支持,使用和贡献这个库!

想法
在深入探讨详细路线图之前,让我分享一些想法并解释一下这个库的一般方向。这些想法受到我与用户的多次互动的影响,无论是在Twitter还是在我们的Discord服务器上。
Outlines 目前与其他库的不同之处在于其高效的 JSON 和正则表达式约束生成。 最近还添加了一个面向用户的语法结构生成接口(之前在仓库中隐藏)。但在这方面我们还有许多可以做的事情。在 2024 年,我们将继续朝着更准确、更快速的约束生成方向前进。
Outlines also supports many models providers: transformers, mamba, llama.cpp and exllama2. Those integrations represent a lot of maintenance, and we will need to simplify them. For instance, transformers now supports quantized models, and we will soon deprecate the support for autoawq and autogptq.
Thanks to a refactor of the library, it is now possible to use our constrained generation method by using logits processor with all other libraries, except mamba. We will look for libraries that provide state-space models and allow to pass a logits processor during inference. We will interface with llama.cpp and exllama2 using logits processors.
我们希望将我们的工作扩展到整个采样层,并添加新的采样方法,这应该使结构化生成更加准确。这意味着我们将保持transformers集成与今天一样,并将在此库周围扩展我们的文本生成逻辑。
今天,使工作流程可重用和易于共享是困难的。这就是为什么 我们非常相信 outlines functions。我们将继续改进界面并添加示例。
最后,我们想要添加一个CLI工具,outlines serve。这将允许您提供一个进行一般约束生成的API,或者提供Outlines功能。
详细路线图
这是接下来12个月更详细的路线图。Outlines是一个社区项目,我们邀请您选择任何主题并为库做贡献。我将逐步在仓库中添加相关的问题。
还有更多示例和教程
老实说,Outlines 缺乏清晰和全面的示例。我们想要改变这一点!
- Outlines是如何工作的?你可以用它做什么?
- 使用Outlines可以做什么是其他库更困难或不可能做到的?
- 你如何执行标准的LLM工作流程,例如思维链、思维树等?
- Outlines 如何与更大的生态系统集成,例如其他库如 LangChain 和 LlamaIndex?
简化集成
我们希望保持当前的集成,但降低维护成本,以便我们可以专注于我们所提供的价值。
- 弃用所有过时的集成:
transformers最近集成了autoawq和autogptq作为例子。 (PR) - 看看我们是否可以集成到一个通过logit处理函数提供状态空间模型的库中;
- 通过 logits 处理器与 llama.cpp 集成;
- 通过日志处理器与exllamav2集成;
进一步推动结构化生成
我们刚刚开始!
- 提高现有结构生成算法的性能;
- 提升结构化生成算法的正确性;
- 在grammars库或Outlines中的子模块中添加现成的语法。
继续开发Outlines功能
函数真棒,使用它们吧!
- 实现一个 CLI
outlines serve,允许本地服务 Outlines 函数; - 向functions库中添加更多功能。
服务结构化生成
我们希望简化结构化生成和Outlines功能的服务。
- 实现 outlines serve CLI
outlines serve - 提供执行结构化生成的本地API;
- 提供 Outlines 功能。
改进生成层
- 使用
transformers的私有 API 准备在Transformers类内部生成的输入; - 支持模型生成和文本填充的连续性,适用于诸如束搜索和SMC等方法;
- 通过添加新的缓存方法进行区分:注意力汇聚、基于前缀树的缓存等;
- 通过实施SMC进行区分;
- 实现束搜索;
- 添加代币治疗。
与OpenAI更无缝的集成
- 为OpenAI和开源模型提供相同的用户界面,以便它们可以轻松互换;
- 集成函数调用API。
最后的话
这份路线图受到了社区表达的兴趣的影响。如果它没有反映您的需求,请来与我们分享您的经验。