メインコンテンツへスキップ
Box AIは、開発者が1回のAPIコールでドキュメントからデータを取得できるようにするAI機能を公開しています。この強力な機能により、複雑な検索拡張生成 (RAG) パイプラインを構築および保守する必要なく、非構造化ドキュメントのコンテンツがすぐにインサイトに変換されます。 このクイックスタートでは、Box Python SDKを構成し、Box AIを使用して、Box内のファイルを要約する方法を紹介します。
1

Boxアプリケーションを作成して構成する

任意のBox Platform統合では、最初のステップとして、Boxアプリケーションを作成して構成します。
  1. Box開発者コンソールに移動します。
  2. このクイックスタートでは、アプリケーションの種類としてClient Credentials Grantを使用してアプリを作成します。
  3. アプリが作成されたら、以下のスコープを有効にします。
  • Boxに格納されているすべてのファイルとフォルダの読み取り
  • AIを管理する
Boxアプリケーションの新規作成の詳細については、最初のアプリケーションの作成を参照してください。
2

テストファイルをアップロードする

Box AIを使用してドキュメントからインサイトを取得するには、Box内にファイルが必要です。このクイックスタートでは、連邦法典を含むこのドキュメントを使用します。
  1. テスト用ドキュメントをダウンロードして、Boxアカウントにドラッグアンドドロップします。
  2. ファイルIDを確認するには、Boxでファイルを開いてURLを調べます。パスの最後の部分がファイルIDです。たとえば、次のようなURLがあるとします: https://app.box.com/file/2064123286902
この場合、ファイルIDは2064123286902です。
3

環境を設定する

このクイックスタートを実行するために、開発環境を設定します。このチュートリアルでは、Pythonと最新のBox Python SDKを使用して、コードを実行します。お使いのマシンにPython 3.11以上がインストールされていることを確認してください。
  1. プロジェクト用に新しいディレクトリを作成し、そのディレクトリに移動します。
  2. 仮想環境を作成します。
    python3 -m venv .venv
    source .venv/bin/activate
    
  3. Box Python SDKをインストールします。
    pip install "boxsdk~=10"
    
  4. .envファイルから環境変数を読み込むためにpython-dotenvパッケージをインストールします。
    pip install python-dotenv
    
  5. プロジェクトディレクトリのルートに.envファイルを作成し、以下の環境変数を追加します。その際、プレースホルダの値を実際のBoxアプリの資格情報と前の手順で確認したIDに置き換えます。
     BOX_DEVELOPER_TOKEN=your_box_developer_token
    
     BOX_FILE_ID=your_box_file_id
    
開発者トークンを取得するには、Box開発者コンソールに移動し、アプリを開き、[構成] タブに移動します。
  1. [開発者トークンを生成] をクリックして新しいトークンを作成します。
簡略化するために、このクイックスタートでは、有効期間の短い開発者トークンを使用します。実稼働環境では、開発者トークンではなく、お使いのアプリに設定された方法 (クライアント資格情報許可など) で認証する必要があります。
4

summarize.pyファイルを作成する

開発環境で、Box AIを使用してドキュメントを要約するPythonスクリプトを作成する準備が整いました。
  1. プロジェクトディレクトリのルートにsummarize.pyという名前の新しいファイルを作成し、以下のコードを追加します。
    import os
    
    from dotenv import load_dotenv
    
    from box_sdk_gen import (
        AiItemAsk,
        AiItemAskTypeField,
        BoxClient,
        BoxDeveloperTokenAuth,
        CreateAiAskMode
    )
    
    load_dotenv()
    
    developer_token = os.getenv("BOX_DEVELOPER_TOKEN")
    file_id = os.getenv("BOX_FILE_ID")
    
    def get_box_client(token: str) -> BoxClient:
        
        if not developer_token:
            raise ValueError("BOX_DEVELOPER_TOKEN is not set in environment variables.")
        
        auth = BoxDeveloperTokenAuth(token=token)
        client = BoxClient(auth=auth)
    
        return client
    
    def main():
        client = get_box_client(token=developer_token)
    
        me = client.users.get_user_me()
        print(f"My user ID is {me.id}")
    
    
    if __name__ == "__main__":
        main()
    
このコードは、環境変数を.envファイルから読み込み、Box SDKクライアントを初期化し、現在のユーザーのIDを出力して、クライアントが正しく動作していることを確認します。
  1. ターミナルで次のコマンドを使用してスクリプトを実行します。
    python summarize.py
    
    Box SDKクライアントが正しく設定されると、コンソールにはユーザーIDが表示されます。次に例を示します。
    My user ID is 123456789
    
5

ファイルを要約する

Box SDKクライアントが稼働している場合に、Box AIを使用してドキュメントを要約するコードを追加できます。
  1. get_box_client関数とmain関数の間に次の関数を追加します。
    def summarize_file(client: BoxClient, file_id: str) -> str:
        prompt = """
        Summarize the content of the following file in a few sentences.
        """
    
        summary = client.ai.create_ai_ask(
            CreateAiAskMode.SINGLE_ITEM_QA,
            prompt,
            [
                AiItemAsk(
                    id=file_id,
                    type=AiItemAskTypeField.FILE
                )
            ]
        )
        
        return summary.to_dict()['answer']
    
    この関数では、Box AIのcreate_ai_askメソッドを使用して、指定されたファイルを照会します。BoxClientと先ほど作成したファイルIDがこの関数に送信され、ファイルの要約が文字列として返されます。
  2. ファイルを要約する関数呼び出しをmain関数に追加します。新しいmain関数に以下のロジックを必ず追加してください。
    def main():
        client = get_box_client(token=developer_token)
    
        # Get the current user and print the ID to validate the client is working
        me = client.users.get_user_me()
        print(f"My user ID is {me.id}")
    
        summary = summarize_file(client=client, file_id=file_id)
    
        # Print the extracted metadata
        print(f"\n\nSummary: {summary}")
    
    SDKがBox AIへのAPIコールを処理し、要約をAiResponseFullオブジェクトとして返します。このクイックスタートでは、コードにより、このオブジェクトがディクショナリに変換され、要約を含むanswerフィールドが返されます。
  3. 操作に成功したことを確認するために、ターミナルで次のコマンドを実行して、要約をコンソールに出力します。
    python summarize.py
    
    要約に成功した場合、コンソールでは、ユーザーIDに続き、テストドキュメントの要約が表示されます。
    My user ID is 123456789
    
    Summary: **Summary of 28 CFR § 2.20 (Paroling Policy Guidelines)**
    
    - The document sets forth the U.S. Parole Commission’s purpose and framework for national parole policy, emphasizing guidelines to promote consistent, equitable parole decisions while preserving individualized review.
    - It provides a matrix of customary total time-to-release ranges by offense severity categories (1–8) and offender parole prognosis (salient factor scores), noting guidelines apply to inmates with good institutional adjustment and are discretionary.
    - A comprehensive Offense Behavior Severity Index (Chapters 1–12) assigns categories to specific crimes (homicide, assault, theft, drugs, firearms, national defense, etc.) with detailed rules, exceptions, and examples for grading offenses (including monetary thresholds and drug-quantity bands).
    - Chapter Thirteen contains general notes, multiple-offense scoring guidance, definitions of key terms, and the Salient Factor Scoring Manual explaining how to compute parole prognosis points (prior convictions, commitments, age, recent commitment-free period, probation/parole status, and older-offender adjustment).
    - The document also references reparole guidelines and authority to revise guidelines; aggravated crimes and Category Eight cases receive special treatment.
    

リソース