该网页主要介绍了一个名为Instructor的库,它是用于获取大语言模型(LLM)结构化输出的热门工具,具有简单、透明和以用户为中心的设计特点,基于Pydantic构建。以下是具体内容总结:
1. 安装与使用
- 可通过 pip install instructor
进行安装,不同模型如OpenAI、Ollama、llama-cpp-python等需安装对应的扩展,如 pip install "instructor[ollama]"
。
- 以从自然语言中提取用户信息为例,展示了如何结合不同模型使用Instructor。如使用OpenAI模型时,先定义输出结构类 ExtractUser
,再通过 instructor.from_openai
对OpenAI客户端进行补丁操作,最后使用 client.chat.completions.create
方法提取结构化数据,并通过断言验证结果。
2. 优势特性
- 简单 API 与完全提示控制:提供直接的 API,可完全掌控提示,实现定制与优化。
- 多语言支持:支持Python、TypeScript、Ruby、Go、Elixir、Rust等语言,简化从LLM中提取结构化数据的操作。
- 重新询问与验证:验证失败时自动重新询问模型,利用Pydantic进行错误处理。
- 流支持:轻松实现部分结果和可迭代对象的流传输,提高应用响应性。
- 基于类型提示:借助Pydantic进行模式验证、提示控制等,减少代码量并便于集成到 IDE。
3. 核心功能
- 使用钩子(Hooks):包含钩子系统,可在模型交互过程的不同阶段拦截、记录和处理事件,如记录函数调用参数或异常信息,增强调试和监控能力。
- 正确类型推断:新客户端改善了类型推断,还添加了 create_*
方法方便创建可迭代对象、部分对象等,并能获取原始完成结果。例如在创建用户信息时,IDE可正确推断类型。
- 模板化(Templating):支持Jinja模板,可创建动态提示,如在提取信息时填充文本数据。
- 验证(Validation):使用Pydantic验证输出,在失败时让LLM重试,并提供了相关文档。
4. 贡献与许可:可参与标记为 good-first-issue
或 help-wanted
的问题来为项目做贡献,项目采用MIT许可证。
您提供的链接是关于Instructor库的官方文档页面。Instructor是一个流行的Python库,它允许用户从大型语言模型(LLMs)如GPT-3.5、GPT-4、GPT-4-Vision以及开源模型(包括Mistral/Mixtral、Ollama和llama-cpp-python)中获取结构化数据,例如JSON。这个库以其简单性、透明度和以用户为中心的设计而突出,它建立在Pydantic之上,帮助管理验证上下文、使用Tenacity进行重试以及处理列表和部分响应的流。
以下是一些Instructor库的关键特性:
-
简单的API和完整的提示控制:Instructor提供了一个简单的API,允许用户完全拥有和控制他们的提示,从而实现LLM交互的精细定制和优化。
-
多语言支持:简化了从LLMs中提取结构化数据的过程,支持Python、TypeScript、Ruby、Go、Elixir和Rust等语言。
-
重问和验证:当验证失败时自动重新询问模型,确保高质量的输出。利用Pydantic的验证进行健壮的错误处理。
-
流支持:轻松流式传输部分结果和可迭代对象,允许在应用程序中实时处理和提高响应性。
-
由类型提示驱动:利用Pydantic进行模式验证、提示控制、减少代码量和IDE集成。
-
简化的LLM交互:支持OpenAI、Anthropic、Google、Vertex AI、Mistral/Mixtral、Ollama、llama-cpp-python、Cohere和LiteLLM。
-
使用钩子(Hooks):Instructor包括一个钩子系统,允许在语言模型交互过程中管理事件。钩子允许在不同阶段拦截、记录和处理事件,例如在提供完成参数时或在收到响应时。
-
正确的类型推断:Instructor现在可以正确地进行类型推断,并且添加了一些
create_*
方法,以便于创建可迭代对象和部分对象,以及访问原始完成。 -
模板支持:Instructor支持使用Jinja进行模板化,允许创建动态提示,这在您想要用数据填充提示的部分时非常有用。
-
验证:您可以使用Pydantic来验证您的输出,并在失败时让LLM重试。
如果您对Instructor库感兴趣,可以通过页面上提供的指令安装并开始使用它,例如使用以下命令安装:
pip install instructor
如果您需要更多帮助或有特定的问题,随时告诉我!