跳到内容

理念

instructor 珍视在利用大型语言模型 (LLM) 时的简洁和灵活性。它提供了一种简化的结构化输出方法,避免不必要的依赖或复杂的抽象。让 EasyTalk 来完成繁重的工作。

“简洁是一种伟大的美德,但实现它需要辛勤工作,而欣赏它需要教育。更糟糕的是:复杂性卖得更好。” — Edsger Dijkstra

通往面向对象编程的桥梁

instructor 充当一座桥梁,将基于文本的 LLM 交互转换为熟悉的面向对象格式。它与 EasyTalk 的集成提供了类型提示和运行时验证。通过将 LLM 视为返回类型化对象的方法,instructor 使语言模型向后兼容代码,使其适用于日常使用,同时又足够复杂以满足高级应用的需求。

instructor 的禅意

在不施加不必要限制的情况下,保持 Ruby 的灵活性和强大能力。

从方法和返回类型提示开始——简洁是关键。凭借我在前一份工作中多年维护大型企业级框架的经验,我学到构建一个有用框架的目标是最小化遗憾,无论是对作者还是对用户。

  1. 定义模式
    class StructuredData
        include EasyTalk::Model
    end
    
  2. 在你的模式上定义属性和方法。
  3. 将所有 LLM 逻辑封装到一个函数中 def extract(a)
  4. 使用 def compute(data: StructuredData) 定义针对数据的类型化计算,或调用模式上的方法 data.compute()

就应该如此简单。

我的目标

该库、文档博客的目标是帮助你成为一名更好的 Ruby 程序员,从而成为一名更好的 AI 工程师。

  • 该库是我追求简洁的成果。
  • 该库应有助于保持代码库的简洁性。
  • 我不会尝试为你编写提示词,
  • 我不会尝试创建将来难以调试的间接或抽象层

请注意,该库被设计为具有适应性和开放性,允许你根据特定需求自定义和扩展其功能。如果你有任何进一步的问题或想法,可以在twitter上联系我

干杯!