出力
構造化出力により、AIエージェントが応答時に従うべきJSONスキーマを定義できます。これにより、他のシステム、API、自動化ワークフローと容易に統合できる一貫性のある機械可読な応答が保証されます。
概要
構造化出力により以下が可能になります:
- 応答フォーマットの定義 - エージェント応答のためのカスタムJSONスキーマを作成
- 一貫性の確保 - エージェントが常に同じ構造でデータを返すことを保証
- 統合の有効化 - 応答を他のシステムが容易に消費できるようにする
- パースの改善 - 複雑なテキストパースの必要性を排除
仕組み
1. JSONスキーマの作成
エージェントに従わせたい構造を定義します:
- フィールド - 必須およびオプションのフィールドを指定
- データ型 - 型を定義(string、number、boolean、array、object)
- ネストされた構造 - 複雑なネストされたJSONオブジェクトを作成
- 例 - 明確さのために例の値を提供
2. エージェントに割り当て
エージェントの構造化出力スキーマを選択します:
- 一般タブ - 利用可能な構造化出力から選択
- エージェント固有 - 各エージェントが異なるスキーマを使用可能
- 動的選択 - 必要に応じてスキーマを変更
3. エージェントの応答
有効にすると、エージェントは以下を行います:
- JSONとしてフォーマット - 指定されたJSON構造で応答を返す
- スキーマに準拠 - すべての必須フィールドを含む
- 構造を維持 - ネストされたオブジェクトと配列を保持
- フォーマットを検証 - 応答がスキーマと一致することを確認
構造化出力の作成
ステップ1:出力タブにアクセス
- サイドバーのエージェントに移動します
- エージェントを選択または新しいものを作成します
- 編集をクリックしてエージェントビルダーを開きます
- 出力タブに移動します
ステップ2:新しいスキーマを作成
- 新規作成ボタンをクリックします
- 構造化出力に説明的なタイトルを入力します
- JSONビルダーを使用してスキーマを定義します
ステップ3:スキーマ構造を定義
ビジュアルJSONビルダーを使用してスキーマを作成します:
基本構造
{
"status": "string",
"message": "string",
"data": {
"result": "string"
}
}
配列付き
{
"items": [
{
"id": "string",
"name": "string",
"value": "number"
}
],
"total": "number"
}
複雑なネスト構造
{
"response": {
"summary": "string",
"details": {
"category": "string",
"subcategory": "string",
"metadata": {
"created_at": "string",
"updated_at": "string"
}
},
"items": [
{
"id": "string",
"properties": {
"name": "string",
"value": "number"
}
}
]
}
}
ステップ4:スキーマを保存
- 保存をクリックして構造化出力を保存します
- スキーマがエージェントで使用可能になりました
エージェントへの割り当て
方法1:一般タブから
- 設定するエージェントを開きます
- 一般タブに移動します
- 応答フォーマットセクションを見つけます
- ドロップダウンから構造化出力を選択します
- エージェントを保存します
方法2:出力タブから
- 設定するエージェントを開きます
- 出力タブに移動します
- リストから構造化出力を選択します
- エージェントはすべての応答にこのスキーマを使用します
ユースケース
API統合
シナリオ: エージェントの応答をAPIが消費できるフォーマットで必要とする場合。
スキーマ例:
{
"status": "success",
"code": 200,
"data": {
"result": "string",
"timestamp": "string"
}
}
エージェントの応答:
{
"status": "success",
"code": 200,
"data": {
"result": "Task completed successfully",
"timestamp": "2024-01-15T10:30:00Z"
}
}
データ抽出
シナリオ: 非構造化テキストから構造化データを抽出する場合。
スキーマ例:
{
"entities": [
{
"type": "string",
"value": "string",
"confidence": "number"
}
],
"summary": "string"
}
エージェントの応答:
{
"entities": [
{
"type": "person",
"value": "John Doe",
"confidence": 0.95
},
{
"type": "company",
"value": "TechCorp",
"confidence": 0.88
}
],
"summary": "Extracted 2 entities from the text"
}
フォーマット付きレポート
シナリオ: 一貫したレポート構造を生成する場合。
スキーマ例:
{
"report": {
"title": "string",
"date": "string",
"sections": [
{
"heading": "string",
"content": "string",
"metrics": {
"value": "number",
"unit": "string"
}
}
],
"summary": "string"
}
}
ワークフロー自動化
シナリオ: 自動ワークフロー処理のために応答を構造化する場合。
スキーマ例:
{
"action": "string",
"parameters": {
"key": "value"
},
"next_step": "string",
"metadata": {
"workflow_id": "string",
"step_number": "number"
}
}
ベストプラクティス
スキーマ設計
- 具体的に - すべてのフィールドとその型を明確に定義
- 例を使用 - スキーマに例の値を含める
- シンプルに保つ - 可能な限り過度に複雑なネスト構造は避ける
- フィールドを文書化 - 説明的なフィールド名を使用
- オプションフィールドを考慮 - 適切な場合はフィールドをオプションとしてマーク
フィールド命名
- 明確な名前を使用 -
unの代わりにuser_name - 一貫性を保つ - 命名規則に従う(snake_case、camelCase)
- 略語を避ける - 可能な限り完全な単語を使用
- 関連フィールドをグループ化 - 関連データにネストされたオブジェクトを使用
スキーマ構造
- 可能な限りフラットに - シンプルなデータにはフラット構造を優先
- 整理のためにネスト - 複雑な関連データにはネストを使用
- リストには配列 - 類似アイテムのコレクションには配列を使用
- グループにはオブジェクト - 関連フィールドをグループ化するためにオブジェクトを使用
テスト
- 実際のクエリでテスト - スキーマが実際のユーザーケースで機能することを確認
- すべてのフィールドを確認 - すべての必須フィールドが入力されていることを確認
- 型を検証 - データ型がスキーマと一致することを確認
- エッジケースを処理 - 異常または欠落したデータでテスト
構造化出力の管理
すべてのスキーマの表示
出力タブで以下ができます:
- 全スキーマを一覧 - プロジェクトのすべての構造化出力を表示
- 検索 - 名前でスキーマを検索
- ソート - 作成日またはタイトルでソート
- 詳細を表示 - スキーマ構造とメタデータを表示
スキーマの編集
- リストでスキーマをクリック
- ビジュアルビルダーを使用してJSON構造を変更
- 保存をクリックしてスキーマを更新
- 変更はこのスキーマを使用しているすべてのエージェントに適用
スキーマの削除
- リストでスキーマを見つける
- 削除アイコンをクリック
- 削除を確認
- このスキーマを使用していたエージェントは通常のテキスト応答に戻ります
構造化出力を削除すると、現在それを使用しているすべてのエージェントに影響します。 削除する前にこれらのエージェントを更新してください。
応答フォーマット
通常の応答(デフォルト)
構造化出力が選択されていない場合、エージェントはフリーフォームテキストを返します:
The user requested information about project status.
The project is currently in progress with 75% completion.
All milestones are on track.
構造化応答
構造化出力が選択されている場合、エージェントはJSONを返します:
{
"status": "in_progress",
"completion_percentage": 75,
"milestones": [
{
"name": "Phase 1",
"status": "completed"
},
{
"name": "Phase 2",
"status": "in_progress"
}
],
"on_track": true
}
システムプロンプトとの統合
構造化出力がエージェントに割り当てられると:
- スキーマが含まれる - JSONスキーマがシステムプロンプトに追加
- フォーマット指示 - エージェントが明示的なフォーマット指示を受け取る
- 例が提供される - スキーマがフォーマットの例として機能
- 検証 - エージェントが正確な構造に一致しようとする
高度な機能
動的フィールド値
スキーマには応答に適応するフィールドを含めることができます:
{
"response_type": "string",
"content": {
"text": "string",
"metadata": {}
}
}
条件付き構造
異なる応答タイプに異なるスキーマを使用します:
{
"type": "success|error|warning",
"message": "string",
"data": {} // Structure varies by type
}
配列配列応答
応複数アイテムを処理します:
{
"count": "number",
"items": [
{
"id": "string",
"data": {}
}
]
}
トラブルシューティング
エージェントがスキーマに従わない
考えられる原因:
- スキーマがエージェントに割り当てられていない
- スキーマ構造が複雑すぎる
- エージェントにより明確な指示が必要
解決策:
- 一般タブで構造化出力が選択されていることを確認
- スキーマ構造を簡素化
- より明示的なフィールド説明を追加
- まずシンプルなクエリでテスト
無無効なJSON応答
考えられる原因:
- スキーマに構文エラーがある
- エージェントが複雑な構造で苦戦している
- 必須フィールドが不足
解決策:
- JSONビルダーでスキーマ構文を検証
- JSON検証エラーを確認
- 複雑すぎる場合はスキーマを簡素化
- エージェントの応答でパースエラーを確認
フィールドの不足
考えられる原因:
- フィールドが明確に定義されていない
- エージェントがフィールド要件を理解していない
- スキーマが曖昧すぎる
解決策:
- 明確なフィールド説明を追加
- スキーマに例の値を提供
- 常に利用可能でない場合はフィールドをオプションにする
- 特定のクエリでテスト
例
例1:カスタマーサポート応答
スキーマ:
{
"ticket_id": "string",
"status": "open|resolved|pending",
"response": "string",
"next_actions": ["string"],
"priority": "low|medium|high|urgent"
}
エージェントの応答:
{
"ticket_id": "TKT-12345",
"status": "resolved",
"response": "Your issue has been resolved. The problem was related to account permissions.",
"next_actions": ["Refresh your browser", "Log out and log back in"],
"priority": "medium"
}
例2:データ分析応答
スキーマ:
{
"analysis": {
"summary": "string",
"findings": [
{
"category": "string",
"insight": "string",
"confidence": "number"
}
],
"recommendations": ["string"]
},
"data_points": "number"
}
エージェントの応答:
{
"analysis": {
"summary": "Sales data shows 15% increase in Q4",
"findings": [
{
"category": "revenue",
"insight": "Revenue increased by 15% compared to Q3",
"confidence": 0.95
},
{
"category": "customers",
"insight": "New customer acquisition up 20%",
"confidence": 0.88
}
],
"recommendations": [
"Continue current marketing strategy",
"Focus on customer retention"
]
},
"data_points": 1250
}
例3:タスク管理応答
スキーマ:
{
"task": {
"id": "string",
"title": "string",
"status": "todo|in_progress|completed",
"assignee": "string",
"due_date": "string",
"description": "string"
},
"related_tasks": [
{
"id": "string",
"title": "string"
}
]
}
権限
構造化出力の作成
- プロジェクト管理者 - 構造化出力の作成、編集、削除が可能
- プロジェクトメンバー - プロジェクト権限に依存(flows.edit)
- 閲覧者 - 構造化出力の表示のみ可能(変更不可)
エージェントでの使用
- エージェントオーナー - 自分のエージェントに構造化出力を割り当て可能
- プロジェクト管理者 - プロジェクト内の任意のエージェントに割り当て可能
- プロジェクトメンバー - アクセスできるエージェントに割り当て可能
関連機能
- エージェント設定 - エージェントのパーソナリティと行動を設定
- ツール - 構造化データを返すツールを使用
- API統合 - 構造化応答を外部APIと統合
- ワークフロー - 自動ワークフローで構造化出力を使用
エージェントの設定方法を学ぶ
サポート
構造化出力についてサポートが必要ですか?support@automationanywhere.comにご連絡ください。