跳到内容

订阅我们的时事通讯,获取更新和技巧

Writer 现已支持结构化输出

我们很高兴地宣布 instructor 现在支持 Writer 的企业级 LLMs,包括他们最新的 Palmyra X 004 模型。此集成使得可以使用 Writer 强大的语言模型实现结构化输出和企业级 AI 工作流。

开始使用

首先,请确保您已在 Writer 上注册账户,并使用此快速入门指南获取了 API 密钥。完成后,通过在终端中运行 pip install instructor[writer] 来安装支持 Writer 的 instructor

确保设置 WRITER_API_KEY 环境变量为您的 Writer API 密钥,或将其作为参数传递给 Writer 构造函数。

使用 Gemini 通过结构化输出处理 PDF

在这篇文章中,我们将探讨如何使用 Google 的 Gemini 模型与 Instructor 一起分析 Gemini 1.5 Pro 论文并提取结构化摘要。

问题

以编程方式处理 PDF 一直很痛苦。典型的方法都有显著的缺点

  • PDF 解析库 需要复杂的规则并且容易出错
  • OCR 解决方案 速度慢且容易出错
  • 专业 PDF API 昂贵且需要额外的集成
  • LLM 解决方案 通常需要复杂的文档分块和嵌入管道

如果我们可以直接将 PDF 交给 LLM 并获得结构化数据呢?凭借 Gemini 的多模态能力和 Instructor 的结构化输出处理,我们可以做到这一点。

快速设置

首先,安装所需的包

pip install "instructor[google-generativeai]"

然后,这里是您需要的所有代码

import instructor
import google.generativeai as genai
from google.ai.generativelanguage_v1beta.types.file import File
from pydantic import BaseModel
import time

# Initialize the client
client = instructor.from_gemini(
    client=genai.GenerativeModel(
        model_name="models/gemini-1.5-flash-latest",
    )
)


# Define your output structure
class Summary(BaseModel):
    summary: str


# Upload the PDF
file = genai.upload_file("path/to/your.pdf")

# Wait for file to finish processing
while file.state != File.State.ACTIVE:
    time.sleep(1)
    file = genai.get_file(file.name)
    print(f"File is still uploading, state: {file.state}")

print(f"File is now active, state: {file.state}")
print(file)

resp = client.chat.completions.create(
    messages=[
        {"role": "user", "content": ["Summarize the following file", file]},
    ],
    response_model=Summary,
)

print(resp.summary)
展开查看原始结果
summary="Gemini 1.5 Pro is a highly compute-efficient multimodal mixture-of-experts model capable of recalling and reasoning over fine-grained information from millions of tokens of context, including multiple long documents and hours of video and audio. It achieves near-perfect recall on long-context retrieval tasks across modalities, improves the state-of-the-art in long-document QA, long-video QA and long-context ASR, and matches or surpasses Gemini 1.0 Ultra's state-of-the-art performance across a broad set of benchmarks. Gemini 1.5 Pro is built to handle extremely long contexts; it has the ability to recall and reason over fine-grained information from up to at least 10M tokens. This scale is unprecedented among contemporary large language models (LLMs), and enables the processing of long-form mixed-modality inputs including entire collections of documents, multiple hours of video, and almost five days long of audio. Gemini 1.5 Pro surpasses Gemini 1.0 Pro and performs at a similar level to 1.0 Ultra on a wide array of benchmarks while requiring significantly less compute to train. It can recall information amidst distractor context, and it can learn to translate a new language from a single set of linguistic documentation. With only instructional materials (a 500-page reference grammar, a dictionary, and ≈ 400 extra parallel sentences) all provided in context, Gemini 1.5 Pro is capable of learning to translate from English to Kalamang, a Papuan language with fewer than 200 speakers, and therefore almost no online presence."

优点

Gemini 和 Instructor 的结合相比传统的 PDF 处理方法具有几个关键优势

简单集成 - 与需要复杂的文档处理管道、分块策略和嵌入数据库的传统方法不同,您只需几行代码即可直接处理 PDF。这极大地减少了开发时间和维护开销。

结构化输出 - Instructor 的 Pydantic 集成确保您获得 exactly 所需的数据结构。模型的输出会自动验证并类型化,从而更容易构建可靠的应用程序。如果提取失败,Instructor 会自动为您处理重试,并支持使用 tenacity 的自定义重试逻辑

多模态支持 - Gemini 的多模态能力意味着同样的方法适用于各种文件类型。您可以在同一个 API 请求中处理图像、视频和音频文件。请查看我们的多模态处理指南,了解我们如何从旅游视频中提取结构化数据。

结论

处理 PDF 不必复杂。

通过将 Gemini 的多模态能力与 Instructor 的结构化输出处理相结合,我们可以将复杂的文档处理转化为简单、Pythonic 的代码。

不再需要为解析规则、管理嵌入或构建复杂管道而烦恼——只需定义您的数据模型,然后让 LLM 完成繁重的工作。

如果您喜欢这篇文章,请立即尝试 instructor,看看结构化输出如何让使用 LLMs 变得更加轻松。立即开始使用 Instructor!

Google 新的 OpenAI 集成后,我还需要 Instructor 吗?

Google 最近为 Gemini 推出了 OpenAI 客户端兼容性。

虽然这通过简化 Gemini 模型交互为开发者迈出了重要一步,但您绝对仍然需要 instructor

如果您不熟悉 instructor,我们提供一个简单的界面,用于从不同提供商的 LLMs 获取结构化输出。

这使得在不同提供商之间切换、从语言模型获得可靠输出以及最终构建生产级 LLM 应用程序变得容易。

为你的 RAG 管道构建基于 LLM 的重排序器

您是否正在为您的检索增强生成 (RAG) 管道中的不相关搜索结果而苦恼?

想象一下拥有一个强大的工具,可以智能地重新评估和重新排序您的搜索结果,显著提高它们与用户查询的相关性。

在这篇博客文章中,我们将向您展示如何使用 Instructor 和 Pydantic 创建基于 LLM 的重排序器。这种方法将:

  • 提高搜索结果的准确性
  • 利用大型语言模型 (LLMs) 的力量
  • 利用结构化输出进行精确信息检索

在本教程结束时,您将能够实现一个 LLM 重排序器,用于标记您的合成数据以进行传统重排序器的微调,或者构建您的 RAG 系统的评估管道。让我们开始吧!

使用多模态 Gemini 进行结构化输出

在这篇文章中,我们将探讨如何使用 Google 的 Gemini 模型与 Instructor 一起分析旅游视频并提取结构化推荐。这种强大的组合使我们能够处理多模态输入(视频)并使用 Pydantic 模型生成结构化输出。这篇文章是与 Kino.ai 合作完成的,这是一家使用 instructor 从多模态输入中进行结构化提取以改进电影制作者搜索的公司。

设置环境

首先,让我们设置我们的环境,安装所需的库


Anthropic 的结构化输出和提示缓存

Anthropic 的生态系统现在为 AI 开发者提供了两个强大的功能:结构化输出和提示缓存。这些进步能够更有效地使用大型语言模型 (LLMs)。本指南演示了如何利用 Instructor 库来利用这些功能增强您的 AI 应用程序。

使用 Anthropic 和 Instructor 的结构化输出

Instructor 现在提供了与 Anthropic 强大语言模型的无缝集成,允许开发者使用 Pydantic 模型轻松创建结构化输出。此集成简化了从 AI 生成的响应中提取特定信息的流程。

使用 Instructor + Burr 构建闪卡生成器

闪卡有助于分解复杂的议题,学习从生物学到新语言或戏剧台词的任何东西。这篇博客将展示如何使用 LLMs 生成闪卡并开启您的学习!

Instructor 让我们能够可靠地从 LLMs 获取结构化输出,而 Burr 则有助于创建易于理解和调试的 LLM 应用程序。它附带 Burr UI,一个免费、开源、本地优先的工具,用于可观测性、注解等等!

OpenAI Chat Completions API 中的音频支持

OpenAI 最近在他们的 Chat Completions API 中引入了音频支持,为处理音频和文本交互的开发者开辟了令人兴奋的新可能性。此功能由新的 gpt-4o-audio-preview 模型提供支持,它将先进的语音能力带入了熟悉的 Chat Completions API 接口。

使用 Instructor 和 Pydantic 构建成对 LLM 评审器

在这篇博客文章中,我们将探讨如何使用 Instructor 和 Pydantic 创建一个成对 LLM 评审器。这个评审器将评估问题与文本片段之间的相关性,展示了结构化输出在语言模型交互中的实际应用。

简介

评估文本相关性是自然语言处理和信息检索中的常见任务。通过利用大型语言模型 (LLMs) 和结构化输出,我们可以创建一个系统来判断问题与给定文本之间的相似性或相关性。