Skip to content

Persistent Storage KV

Note: ⚠️ このドキュメントはAIによって自動翻訳されています。不正確な部分がある場合は、英語版を参照してください。

概要

ほとんどのプラグインツールとエンドポイントは、ステートレスな単一ラウンドのインタラクションモデルで動作します: 1. リクエストを受信 2. データを処理 3. レスポンスを返却 4. インタラクションを終了

しかし、多くの実際のアプリケーションでは、複数のインタラクション間で状態を維持する必要があります。ここで永続ストレージが不可欠になります。

Info:

永続ストレージメカニズムにより、プラグインは同じワークスペース内でデータを永続的に保存でき、ステートフルなアプリケーションやメモリ機能を実現できます。

FlexAIは現在、プラグイン用のキーバリュー(KV)ストレージシステムを提供しており、開発者のニーズに基づいて、将来的にはより柔軟で強力なストレージインターフェースを導入する予定です。

ストレージへのアクセス

すべてのストレージ操作は、プラグインのセッションで利用可能なstorageオブジェクトを通じて実行されます:

# Access the storage interface
storage = self.session.storage

ストレージ操作

データの保存

setメソッドでデータを保存します:

def set(self, key: str, val: bytes) -> None:
    """
    Store data in persistent storage

    Parameters:
        key: Unique identifier for your data
        val: Binary data to store (bytes)
    """
    pass

Warning:

値はbytes形式である必要があります。これにより、ファイルを含むさまざまな種類のデータを柔軟に保存できます。

例:さまざまなデータ型の保存

# String data (must convert to bytes)
storage.set("user_name", "John Doe".encode('utf-8'))

# JSON data

user_data = {"name": "John", "age": 30, "preferences": ["AI", "NLP"]}
storage.set("user_data", json.dumps(user_data).encode('utf-8'))

# File data
with open("image.jpg", "rb") as f:
    image_data = f.read()
    storage.set("profile_image", image_data)

データの取得

getメソッドで保存されたデータを取得します:

def get(self, key: str) -> bytes:
    """
    Retrieve data from persistent storage

    Parameters:
        key: Unique identifier for your data

    Returns:
        The stored data as bytes, or None if key doesn't exist
    """
    pass

例:データの取得と変換

# Retrieving string data
name_bytes = storage.get("user_name")
if name_bytes:
    name = name_bytes.decode('utf-8')
    print(f"Retrieved name: {name}")

# Retrieving JSON data

user_data_bytes = storage.get("user_data")
if user_data_bytes:
    user_data = json.loads(user_data_bytes.decode('utf-8'))
    print(f"User preferences: {user_data['preferences']}")

データの削除

deleteメソッドで保存されたデータを削除します:

def delete(self, key: str) -> None:
    """
    Delete data from persistent storage

    Parameters:
        key: Unique identifier for the data to delete
    """
    pass

ベストプラクティス

説明的なキーを使用する 競合を避け、コードをより保守しやすくするために、キーに一貫した命名規則を作成してください。 欠損キーを処理する キーが見つからない可能性があるため、処理前にデータが存在するかどうかを常に確認してください。 複雑なデータをシリアライズする 保存前に複雑なオブジェクトをJSONまたは他のシリアライズ形式に変換してください。 エラーハンドリングを実装する 潜在的なエラーを適切に処理するために、ストレージ操作をtry/exceptブロックでラップしてください。

一般的なユースケース

  • ユーザー設定:セッション間でユーザーの設定やプリファレンスを保存
  • 会話履歴:以前の会話からのコンテキストを維持
  • APIトークン:認証トークンを安全に保存
  • キャッシュデータ:API呼び出しを減らすために頻繁にアクセスされるデータを保存
  • ファイルストレージ:ユーザーがアップロードしたファイルや生成されたコンテンツを保存

{/ Contributing Section DO NOT edit this section! It will be automatically generated by the script. /}


このページを編集する | 問題を報告する