title: 使用 Instructor 简化 AI:Python 编程的灵活性和透明度 description: 了解 Instructor 如何通过简单性、灵活性和透明的 LLM 集成为 Python 开发者赋能,以实现更好的 AI 工程。
哲学¶
Instructor 珍视在使用大型语言模型 (LLMs) 方面的简单性和灵活性。它提供了一种用于结构化输出的流线型方法,避免了不必要的依赖或复杂的抽象。让 Pydantic 完成繁重的工作。
“简单性是一种伟大的美德,但实现它需要艰苦的努力,欣赏它需要教育。更糟糕的是:复杂性卖得更好。” - Edsger Dijkstra
证明其简单¶
- 大多数用户只需要学习
response_model
和patch
即可上手。 - 无需学习新的 prompting 语言,无需学习新的抽象。
证明其透明¶
- 我们编写非常少的 prompts,并且我们不会试图向您隐藏这些 prompts。
- 未来我们会做得更好,为您提供配置我们编写的 2 个 prompts:Reasking 和 JSON_MODE prompts。
证明其灵活¶
- 如果您直接使用 OpenAI 构建系统,可以轻松地逐步采用 instructor。
- 添加
response_model
,如果您想恢复,只需删除即可。
instructor
之道¶
在不施加不必要约束的情况下,保持 Python 的灵活性和强大性。
从一个函数和一个返回类型提示开始——简单性是关键。凭借我在前一家公司多年维护大型企业框架的经验,我了解到构建一个有用框架的目标是最小化后悔,无论是对作者还是希望能对用户而言。
- 定义一个 Schema
class StructuredData(BaseModel):
- 在您的 schema 上定义验证器和方法。
- 将您所有的 LLM 逻辑封装到一个函数中
def extract(a) -> StructuredData:
- 使用
def compute(data: StructuredData):
对您的数据定义类型化计算,或调用您的 schema 上的方法data.compute()
就应该这么简单。
我的目标¶
这个库、文档和博客的目标是帮助您成为一个更好的 Python 程序员,从而成为一个更好的 AI 工程师。
- 这个库是我追求简单的结果。
- 这个库应该有助于保持您的代码库的简单性。
- 我不会试图为您编写 prompts,
- 我不会试图创建间接或抽象,使其将来难以调试
请注意,该库被设计为具有适应性和开放性,允许您根据您的具体需求定制和扩展其功能。如果您有任何进一步的问题或想法,请在 twitter 上联系我。
致敬!