instructor

structured outputs for llms

open-sourcevoice-agents
Visit WebsiteView on GitHub
12.6k
Stars
+1051
Stars/month
8
Releases (6m)

Overview

Instructor是一个Python库,专门用于从大语言模型中获取可靠的结构化JSON输出。基于Pydantic构建,提供验证、类型安全和IDE支持。该工具解决了从LLM提取结构化数据时面临的核心挑战:复杂的JSON schema编写、验证错误处理、失败重试机制以及非结构化响应解析。通过Instructor,开发者只需定义一个Pydantic模型,就能自动获得结构化数据,无需手动处理JSON解析、错误处理或重试逻辑。该库支持多个LLM提供商,包括OpenAI、Anthropic等,通过统一接口简化了不同API的使用。Instructor特别适合需要将自然语言转换为结构化数据的应用场景,如数据提取、API集成、数据库录入等。与全功能的智能体框架相比,Instructor专注于schema驱动的数据提取,保持流程简单且成本效益高。对于需要更丰富智能体功能的用户,可以考虑升级到PydanticAI。

Pros

  • + 极简API设计:只需定义Pydantic模型即可获得结构化输出,相比传统方法大幅减少代码复杂度
  • + 内置Pydantic集成:提供强类型验证、IDE智能提示和自动错误处理,确保数据质量和开发体验
  • + 自动化处理机制:内置JSON解析、验证错误处理和失败重试,无需手动管理复杂的错误场景

Cons

  • - Python生态限制:基于Pydantic构建,仅支持Python环境,无法在其他编程语言中使用
  • - 依赖LLM质量:提取准确性完全依赖于底层语言模型的理解能力,模型局限性会直接影响结果
  • - 功能范围有限:专注于结构化数据提取,不支持复杂的多轮对话、推理链或智能体工作流

Use Cases

Getting Started

1. 安装Instructor库:`pip install instructor` 2. 定义Pydantic数据模型:创建描述期望输出结构的BaseModel类,包含字段类型和验证规则 3. 使用instructor.from_provider()连接LLM提供商,调用create()方法并传入response_model参数来提取结构化数据