跳到内容

Gemini 结构化输出现已支持

我们很高兴宣布,instructor 现在支持使用工具调用为 Gemini SDK 和 VertexAI SDK 提供结构化输出。

特别感谢 Sonal 对 Gemini 工具调用支持的贡献。

让我们通过一个简单的示例来了解如何使用这些新功能

安装

要开始使用,请安装最新版本的 instructor。根据您使用的是 Gemini 还是 VertexAI,您应该安装以下内容

pip install "instructor[google-generativeai]"
pip install "instructor[vertexai]"

这确保您拥有与 instructor 一起使用 Gemini 或 VertexAI SDK 所需的依赖项。

我们推荐使用 Gemini SDK 而非 VertexAI SDK,主要有两个原因。

  1. 与 VertexAI SDK 相比,Gemini SDK 为开发者提供了每日 15 亿 token 的免费配额。
  2. Gemini SDK 设置要容易得多,您只需要一个可以在 GCP 控制台中生成的 GOOGLE_API_KEY。另一方面,VertexAI SDK 需要 credentials.json 文件或 OAuth 集成才能使用。

入门

使用我们与提供商无关的 API,您可以使用相同的接口与两个 SDK 进行交互,这里唯一改变的是我们如何初始化客户端本身。

在运行以下代码之前,您需要确保已在 shell 中将 Gemini API 密钥设置为别名 GOOGLE_API_KEY

import instructor
import google.generativeai as genai
from pydantic import BaseModel


class User(BaseModel):
    name: str
    age: int


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

resp = client.chat.completions.create(
    messages=[
        {
            "role": "user",
            "content": "Extract Jason is 25 years old.",
        }
    ],
    response_model=User,
)

print(resp)
#> name='Jason' age=25
  1. 当前支持工具调用的 Gemini 模型是 gemini-1.5-flash-latestgemini-1.5-pro-latest

我们可以使用 VertexAI SDK 实现类似的功能。为此,您需要向 VertexAI 进行身份验证。

这里有一些说明 这里 但我发现最简单的方法是直接下载 GCloud cli 并运行 gcloud auth application-default login

import instructor
import vertexai  # type: ignore
from vertexai.generative_models import GenerativeModel  # type: ignore
from pydantic import BaseModel

vertexai.init()


class User(BaseModel):
    name: str
    age: int


client = instructor.from_vertexai(
    client=GenerativeModel("gemini-1.5-pro-preview-0409"),  # (1)!
)


resp = client.chat.completions.create(
    messages=[
        {
            "role": "user",
            "content": "Extract Jason is 25 years old.",
        }
    ],
    response_model=User,
)

print(resp)
#> name='Jason' age=25
  1. 当前支持工具调用的 Gemini 模型是 gemini-1.5-flash-latestgemini-1.5-pro-latest