BoxWorks 2024でコンテンツとAIの可能性について紹介します。
詳細を表示サポートされている大規模言語モデル (LLM) にAIリクエストを送信し、抽出されたメタデータを一連のキー/値ペアとして返します。このリクエストでは、すでに定義済みのメタデータテンプレートを使用するか、自分でスキーマを定義する必要があります。テンプレートの作成の詳細については、メタデータテンプレートのカスタマイズを参照するか、メタデータテンプレートAPIを使用してください。
抽出 (構造化) に使用されるAIエージェント。
指定された項目から抽出するフィールド。リクエストを機能させるには、metadata_template
またはfields
を指定する必要がありますが、両方を指定することはできません。
"enum"
フィールドのタイプ。これには、文字列、浮動小数点、日付、列挙型、multiSelectが含まれますが、これらに限定されるものではありません。
"The name of the person."
フィールドの説明。
"Name"
フィールドの表示名。
"name"
フィールドの一意の識別子。
[{"key":"First Name"},{"key":"Last Name"}]
このフィールドのオプションのリスト。これは、ほとんどの場合、列挙型およびmultiSelectフィールドタイプと組み合わせて使用します。
"First Name"
フィールドの一意の識別子。
"Name is the first and last name from the email address"
キーに関するコンテキスト。キーの確認方法や形式が含まれている場合があります。
LLMで処理する項目。現在使用できるのはファイルのみです。
"123"
ファイルのID。
"file"
項目の種類。現在、この値に指定できるのはfile
のみです。
次の値に固定: file
"This is file content."
項目のコンテンツ (多くの場合はテキストレプリゼンテーション)。
抽出するフィールドを含むメタデータテンプレート。リクエストを機能させるには、metadata_template
またはfields
を指定する必要がありますが、両方を指定することはできません。
"metadata_template"
値は常にmetadata_template
。
次の値に固定: metadata_template
"enterprise_12345"
40
メタデータテンプレートのスコープ。globalまたはenterpriseを指定できます。
"invoiceTemplate"
メタデータテンプレートの名前。
LLMからの回答を含む成功したレスポンス。
予期しないクライアントエラー。
予期しないサーバーエラー。
予期しないエラー。
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|>"
}
}
}
}'
await client.ai.createAiExtractStructured({
metadataTemplate: {
templateKey: templateKey,
scope: 'enterprise',
} satisfies AiExtractStructuredMetadataTemplateField,
items: [new AiItemBase({ id: file.id })],
} satisfies AiExtractStructured);
client.ai.create_ai_extract_structured(
[AiItemBase(id=file.id)],
metadata_template=CreateAiExtractStructuredMetadataTemplate(
template_key=template_key, scope="enterprise"
),
)
await client.Ai.CreateAiExtractStructuredAsync(requestBody: new AiExtractStructured(items: Array.AsReadOnly(new [] {new AiItemBase(id: file.Id)})) { MetadataTemplate = new AiExtractStructuredMetadataTemplateField() { TemplateKey = templateKey, Scope = "enterprise" } });
BoxAIExtractMetadataTemplate template = new BoxAIExtractMetadataTemplate("templateKey", "enterprise");
BoxAIExtractStructuredResponse result = BoxAI.extractMetadataStructured(
api,
Collections.singletonList(new BoxAIItem("123456", BoxAIItem.Type.FILE)),
template
);
JsonObject sourceJson = result.getSourceJson();