跳到内容

title: 使用 Instructor 简化 AI:Python 编程的灵活性和透明度 description: 了解 Instructor 如何通过简单性、灵活性和透明的 LLM 集成为 Python 开发者赋能,以实现更好的 AI 工程。


哲学

Instructor 珍视在使用大型语言模型 (LLMs) 方面的简单性和灵活性。它提供了一种用于结构化输出的流线型方法,避免了不必要的依赖或复杂的抽象。让 Pydantic 完成繁重的工作。

“简单性是一种伟大的美德,但实现它需要艰苦的努力,欣赏它需要教育。更糟糕的是:复杂性卖得更好。” - Edsger Dijkstra

证明其简单

  1. 大多数用户只需要学习 response_modelpatch 即可上手。
  2. 无需学习新的 prompting 语言,无需学习新的抽象。

证明其透明

  1. 我们编写非常少的 prompts,并且我们不会试图向您隐藏这些 prompts。
  2. 未来我们会做得更好,为您提供配置我们编写的 2 个 prompts:Reasking 和 JSON_MODE prompts。

证明其灵活

  1. 如果您直接使用 OpenAI 构建系统,可以轻松地逐步采用 instructor。
  2. 添加 response_model,如果您想恢复,只需删除即可。

instructor 之道

在不施加不必要约束的情况下,保持 Python 的灵活性和强大性。

从一个函数和一个返回类型提示开始——简单性是关键。凭借我在前一家公司多年维护大型企业框架的经验,我了解到构建一个有用框架的目标是最小化后悔,无论是对作者还是希望能对用户而言。

  1. 定义一个 Schema class StructuredData(BaseModel):
  2. 在您的 schema 上定义验证器和方法。
  3. 将您所有的 LLM 逻辑封装到一个函数中 def extract(a) -> StructuredData:
  4. 使用 def compute(data: StructuredData): 对您的数据定义类型化计算,或调用您的 schema 上的方法 data.compute()

就应该这么简单。

我的目标

这个库、文档博客的目标是帮助您成为一个更好的 Python 程序员,从而成为一个更好的 AI 工程师。

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

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

致敬!