はじめに
Instructorは、大規模言語モデル(LLM)からの構造化された出力を処理するために設計された人気のPythonライブラリです。Pydanticをベースに構築されており、データ検証、再試行、ストリーミング応答を管理するためのシンプルで透過的、かつユーザーフレンドリーなAPIを提供します。Instructorは月間100万ダウンロードを超え、様々なLLMワークフローで広く利用されています。ライブラリは、Python、TypeScript、Ruby、Go、Elixirを含む複数のプログラミング言語をサポートし、OpenAIのサポートにとどまらず、幅広いLLMプロバイダーとシームレスに統合されています。
推薦図書大規模モデルの構造化データ出力方法:LLM JSONリソースの厳選リストそしてアウトライン: 正規表現、JSON、Pydanticモデルによる構造化テキスト出力の生成そしてAIファンクション:入力コンテンツを構造化された出力に変換する(API)サービス.
機能一覧
- 応答モデルLLMの出力の構造を定義するためにパイダンティック・モデルを使う。
- 再試験の管理リクエストの再試行回数を簡単に設定できます。
- データ検証LLMの応答が期待通りであることを確認する。
- ストリーミング対応リストや部分的な応答を簡単に扱うことができます。
- 柔軟なバックエンド複数のLLMプロバイダーとのシームレスな統合。
- 多言語サポートPython、TypeScript、Ruby、Go、Elixirなど複数のプログラミング言語をサポート。
ヘルプの使用
設置プロセス
インストラクターをインストールするには、以下のコマンドを実行するだけだ:
pip install -U インストラクター
基本的な使い方
Instructorを使って自然言語から構造化データを抽出する簡単な例を紹介しよう:
インストラクター
from pydantic import BaseModel
from openai import OpenAI
# 必要な出力構造を定義する
class UserInfo(BaseModel).
name: str
年齢: int
# OpenAIクライアントを初期化し、Instructorと統合します。
client = instructor.from_openai(OpenAI())
# 自然言語から構造化データを抽出する
user_info = client.chat.completions.create(
model="gpt-4o-mini"、
response_model=UserInfo、
messages=[{"role": "user", "content": "John Doe is 30 years old." }].
)
print(user_info.name) #出力:John Doe
print(user_info.age) # 出力:30歳。
フックの使用
Instructorは、LLMのインタラクション・プロセスの様々な段階でインターセプトし、ログを取ることができる強力なフック・システムを提供します。以下はフックの使い方を示す簡単な例です:
インストラクター
from openai import OpenAI
from pydantic import BaseModel
class UserInfo(BaseModel).
name: str
name: str
# OpenAIクライアントを初期化し、Instructorと統合します。
client = instructor.from_openai(OpenAI())
# フックを使ってインタラクションを記録する
client.add_hook("before_request", lambda request: print(f "Request: {request}"))
client.add_hook("after_response", lambda response: print(f "Response: {response}"))
# 自然言語から構造化データを抽出する
user_info = client.chat.completions.create(
model="gpt-4o-mini"、
response_model=UserInfo、
messages=[{"role": "user", "content": "Jane Doe is 25 years old." }].
)
print(user_info.name) #出力:Jane Doe
print(user_info.age) # 出力:25歳。
高度な使用法
Instructorは、他のLLMプロバイダーとの統合もサポートしており、柔軟な設定オプションを提供しています。リクエストの再試行回数、データ検証ルール、ストリーミング・レスポンスの処理などを必要に応じてカスタマイズできます。