InstructorはSambaNova モデルで構造化された出力生成を可能にします。大規模言語モデル(LLM)がJSON、XML、またはカスタムデータスキーマなどの事前定義された形式で応答を生成できるようにし、一貫性を確保し、出力を解析してダウンストリームシステムに統合しやすくします。この機能は、信頼性が高く予測可能な出力を必要とするAPI、自動化パイプライン、AIドリブンのアプリケーションにとって特に価値があります。

インストール

pip install "instructor[openai]"

基本的な使用方法

以下のコードは、SambaNova Cloud APIをInstructorと共に使用して、構造化された出力を生成する方法を示していますMeta-Llama-3.1-405B-InstructモデルからUserスキーマはPydanticを使用して定義され、モデルがname(文字列)とage(整数)を含む応答を返すことを要求します。Instructorは応答の検証と解析を処理し、構造化されたPythonオブジェクトを生成します。
from openai import OpenAI
import instructor
import os
from pydantic import BaseModel
client = instructor.from_openai(
    OpenAI(
        base_url="https://api.sambanova.ai/v1",
        api_key=os.environ["SAMBANOVA_API_KEY"]
    )
)
class User(BaseModel):
    name: str
    age: int
user = client.chat.completions.create(
    model="Meta-Llama-3.1-405B-Instruct",
    messages=[
        {"role": "user", "content": "Ivan is 28"},
    ],
    response_model=User,
)
print(user)
# > User(name='Ivan', age=28)

非同期使用

このコードもSambaNova Cloud APIをInstructorと共に使用して構造化された出力を強制します。結果は非同期に取得され、出力されてUser(name='Ivan', age=28')を表示します。
from openai import AsyncOpenAI
import instructor
import os
from pydantic import BaseModel

client = instructor.from_openai(
    AsyncOpenAI(
        base_url="https://api.sambanova.ai/v1",
        api_key=os.environ["SAMBANOVA_API_KEY"]
    )
)

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

async def get_user():
    user = await client.chat.completions.create(
        model="Meta-Llama-3.1-405B-Instruct",
        messages=[ {"role": "user", "content": "Ivan is 28"},],
        response_model=User,
    )
    return user

# Run with asyncio
import asyncio
user = asyncio.run(get_user())
print(user)
# > User(name='Ivan', age=28)
メール分類ツールの作成方法を説明するサンプルノートブックをご覧ください。