Box Developerドキュメント

BoxWorks 2024でコンテンツとAIの可能性について紹介します。

詳細を表示
Beta

メタデータを抽出 (構造化)

post
https://api.box.com/2.0
/ai/extract_structured

サポートされている大規模言語モデル (LLM) にAIリクエストを送信し、抽出されたメタデータを一連のキー/値ペアとして返します。このリクエストでは、すでに定義済みのメタデータテンプレートを使用するか、自分でスキーマを定義する必要があります。テンプレートの作成の詳細については、メタデータテンプレートのカスタマイズを参照するか、メタデータテンプレートAPIを使用してください。

リクエスト

bearer [ACCESS_TOKEN]
application/json

リクエスト本文

抽出 (構造化) に使用されるAIエージェント。

object array本文内省略可能

指定された項目から抽出するフィールド。リクエストを機能させるには、metadata_templateまたはfieldsを指定する必要がありますが、両方を指定することはできません。

string本文内省略可能
"enum"

フィールドのタイプ。これには、文字列、浮動小数点、日付、列挙型、multiSelectが含まれますが、これらに限定されるものではありません。

string本文内省略可能
"The name of the person."

フィールドの説明。

string本文内省略可能
"Name"

フィールドの表示名。

string本文内条件付きで必須
"name"

フィールドの一意の識別子。

object array本文内省略可能
[{"key":"First Name"},{"key":"Last Name"}]

このフィールドのオプションのリスト。これは、ほとんどの場合、列挙型およびmultiSelectフィールドタイプと組み合わせて使用します。

string本文内条件付きで必須
"First Name"

フィールドの一意の識別子。

string本文内省略可能
"Name is the first and last name from the email address"

キーに関するコンテキスト。キーの確認方法や形式が含まれている場合があります。

object array本文内必須

LLMで処理する項目。現在使用できるのはファイルのみです。

string本文内必須
"123"

ファイルのID。

string本文内必須
"file"

項目の種類。現在、この値に指定できるのはfileのみです。

次の値に固定: file

string本文内省略可能
"This is file content."

項目のコンテンツ (多くの場合はテキストレプリゼンテーション)。

object本文内

抽出するフィールドを含むメタデータテンプレート。リクエストを機能させるには、metadata_templateまたはfieldsを指定する必要がありますが、両方を指定することはできません。

string本文内省略可能
"metadata_template"

値は常にmetadata_template

次の値に固定: metadata_template

string本文内省略可能
"enterprise_12345"40

メタデータテンプレートのスコープ。globalまたはenterpriseを指定できます。

  • globalスコープは、任意のBox Enterpriseで利用できるテンプレートに使用されます。
  • enterpriseスコープは、特定のEnterprise内で作成されたテンプレートを表し、そのEnterpriseのIDが含まれます。
string本文内省略可能
"invoiceTemplate"

メタデータテンプレートの名前。

レスポンス

LLMからの回答を含む成功したレスポンス。

予期しないクライアントエラー。

予期しないサーバーエラー。

予期しないエラー。

post
メタデータを抽出 (構造化)
このドキュメント内で一部のAPIを試せるようになりました。
ログイン

リクエストの例

cURL
curl -i -L 'https://api.box.com/2.0/ai/extract_structured' \
     -H 'content-type: application/json' \
     -H 'authorization: Bearer <ACCESS_TOKEN>' \
     -d '{
        "items": [
          {
            "id": "12345678",
            "type": "file",
            "content": "This is file content."
          }
        ],
        "metadata_template": {
            "template_key": "",
            "type": "metadata_template",
            "scope": ""
        },
        "fields": [
            {
              "key": "name",
              "description": "The name of the person.",
              "displayName": "Name",
              "prompt": "The name is the first and last name from the email address.",
              "type": "string",
              "options": [
                {
                  "key": "First Name"
                },
                {
                  "key": "Last Name"
                }
              ]
            }
        ],
        "ai_agent": {
          "type": "ai_agent_extract",
          "long_text": {
            "model": "azure__openai__gpt_3_5_turbo_16k",
            "system_message": "You are a helpful travel assistant specialized in budget travel",
            "prompt_template": "It is `{current_date}`, and I have $8000 and want to spend a week in the Azores. What should I see?",
            "num_tokens_for_completion": 8400,
            "llm_endpoint_params": {
              "type": "openai_params",
              "temperature": 0,
              "top_p": 1,
              "frequency_penalty": 1.5,
              "presence_penalty": 1.5,
              "stop": "<|im_end|>"
            },
            "embeddings": {
              "model": "openai__text_embedding_ada_002",
              "strategy": {
                "id": "basic",
                "num_tokens_per_chunk": 64
              }
            }
          },
          "basic_text": {
            "model": "azure__openai__gpt_3_5_turbo_16k",
            "system_message": "You are a helpful travel assistant specialized in budget travel",
            "prompt_template": "It is `{current_date}`, and I have $8000 and want to spend a week in the Azores. What should I see?",
            "num_tokens_for_completion": 8400,
            "llm_endpoint_params": {
              "type": "openai_params",
              "temperature": 0,
              "top_p": 1,
              "frequency_penalty": 1.5,
              "presence_penalty": 1.5,
              "stop": "<|im_end|>"
            }
          }
        }
      }'
TypeScript Gen
await client.ai.createAiExtractStructured({
  metadataTemplate: {
    templateKey: templateKey,
    scope: 'enterprise',
  } satisfies AiExtractStructuredMetadataTemplateField,
  items: [new AiItemBase({ id: file.id })],
} satisfies AiExtractStructured);
Python Gen
client.ai.create_ai_extract_structured(
    [AiItemBase(id=file.id)],
    metadata_template=CreateAiExtractStructuredMetadataTemplate(
        template_key=template_key, scope="enterprise"
    ),
)
.NET Gen
await client.Ai.CreateAiExtractStructuredAsync(requestBody: new AiExtractStructured(items: Array.AsReadOnly(new [] {new AiItemBase(id: file.Id)})) { MetadataTemplate = new AiExtractStructuredMetadataTemplateField() { TemplateKey = templateKey, Scope = "enterprise" } });
Java
BoxAIExtractMetadataTemplate template = new BoxAIExtractMetadataTemplate("templateKey", "enterprise");
BoxAIExtractStructuredResponse result = BoxAI.extractMetadataStructured(
    api,
    Collections.singletonList(new BoxAIItem("123456", BoxAIItem.Type.FILE)),
    template
);
JsonObject sourceJson = result.getSourceJson();