ドキュメント
エージェントフロー
インテグレーション
テキスト埋め込み
トークン化
モデル情報
エージェントフロー
インテグレーション
テキスト埋め込み
トークン化
モデル情報
基本
構造化レスポンス
Pydantic (Python)、Zod (TypeScript)、またはJSON Schemaを使用してモデルからの構造化レスポンスを強制する
スキーマ (JSON または zod) を .respond() メソッドに渡すことで、LLMからの特定のレスポンス形式を強制できます。これにより、モデルの出力が提供されたスキーマに準拠することが保証されます。
指定されたスキーマを満たすJSONをモデルに生成させたい場合は、zod を使用してスキーマを提供することをお勧めします。zod スキーマが提供されると、予測結果には追加フィールド parsed が含まれ、解析、検証、型付けされた結果が格納されます。
zod スキーマを定義するimport { z } from "zod"; // A zod schema for a book const bookSchema = z.object({ title: z.string(), author: z.string(), year: z.number().int(), });
const result = await model.respond("Tell me about The Hobbit.",
{ structured: bookSchema },
maxTokens: 100, // Recommended to avoid getting stuck
);
const book = result.parsed;
console.info(book);
// ^
// Note that `book` is now correctly typed as { title: string, author: string, year: number }
JSONスキーマを使用して構造化レスポンスを強制することもできます。
// A JSON schema for a book const schema = { type: "object", properties: { title: { type: "string" }, author: { type: "string" }, year: { type: "integer" }, }, required: ["title", "author", "year"], };
const result = await model.respond("Tell me about The Hobbit.", {
structured: {
type: "json",
jsonSchema: schema,
},
maxTokens: 100, // Recommended to avoid getting stuck
});
const book = JSON.parse(result.content);
console.info(book);
構造化生成は、モデルが提供されたスキーマに準拠するトークンのみを生成するように制限することで機能します。これにより、通常のケースでは有効な出力が保証されますが、2つの重要な制限があります。
モデル (特に小さいモデル) は、構造の一部 (括弧など) が閉じられないままスタックし、その構造内にいることを「忘れて」スキーマ要件により停止できなくなることがあります。そのため、無限生成を防ぐために、常に maxTokens パラメータを含めることをお勧めします。
スキーマ準拠は、完了した正常な生成に対してのみ保証されます。生成が中断された場合 (キャンセル、maxTokens 制限への到達、またはその他の理由による)、出力はスキーマに違反する可能性が高くなります。zod スキーマ入力の場合、これはエラーを発生させます。JSONスキーマの場合、スキーマを満たさない無効な文字列が返されます。
このページのソースは GitHub で利用可能です。