跳过内容

哲学

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

“简洁是一种伟大的美德,但它需要辛勤的劳动才能实现,需要教育才能理解。更糟糕的是:复杂性反而卖得更好。”—— Edsger Dijkstra

通往面向对象编程的桥梁

instructor 充当一座桥梁,将基于文本的 LLM 交互转换为熟悉的面向对象格式。它与 Zod 的集成提供了类型提示、运行时验证和强大的 IDE 支持;深受 JS/TS 生态系统中许多人的喜爱和支持。通过将 LLM 视为返回类型化对象的函数,instructor 使语言模型与代码向后兼容,使其既适合日常使用,也足够复杂以应对高级应用。

instructor 之道

保持 Typescript 的灵活性和强大功能,没有不必要的限制。

从一个函数和返回类型提示开始——简洁是关键。凭借我之前工作中多年维护大型企业级框架的经验,我了解到构建一个有用框架的目标是最大限度地减少遗憾,无论对于作者还是用户。

  1. 定义模式 const StructuredData = z.object({})
  2. 在您的模式上定义验证器和方法。
  3. 将所有 LLM 逻辑封装到一个函数中 function extract(a): StructuredData {}
  4. 使用 function compute(data: StructuredData) {} 或调用模式上的方法 data.compute() 对您的数据进行类型化计算

就应该这么简单。

我的目标

库、文档博客的目标是帮助您成为更好的 Typescript 程序员,并因此成为更好的 AI 工程师。

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

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

祝好!