すべてのプロダクト
Search
ドキュメントセンター

Realtime Compute for Apache Flink:Flink Agents の開発 (ベータ)

最終更新日:Aug 13, 2026

Realtime Compute for Apache Flink は、オープンソースの Apache Flink Agents フレームワークに基づく、イベント駆動のストリーミング AI エージェントジョブの開発をサポートします。このドキュメントでは、Flink Agents の中核概念、バージョン要件、クイックスタートガイド、カスタム開発、ジョブの送信、依存関係の管理について説明します。

概要

Apache Flink Agents は、イベント駆動の AI エージェントを構築するために Apache Flink コミュニティから提供された新しいサブプロジェクトです。Flink の実運用で鍛えられたストリーミングエンジンを活用し、分散、ステートフル、耐障害性、ストリーミングの各機能を AI エージェントに提供することで、エンタープライズの本番環境で利用可能にします。

Flink Agents には、大規模言語モデル (LLM) の呼び出し、ツールの使用、メモリ管理、動的オーケストレーション、可観測性のための組み込みモジュールが含まれます。これらの機能により、大規模で継続的に稼働し、信頼性の高い本番品質の AI エージェントを迅速に構築できます。

Flink Agents には、次の主要な利点があります:

機能

説明

分散協調

フレームワークは、イベントルーティング、パーティショニング、分散ステートの整合性、自動障害回復などの中核機能を提供します。これにより、複数のエージェントレプリカを管理する必要がなくなります。

ステートフルなメモリ

Flink State がエージェントのメモリを管理します。メモリはチェックポイントの間に自動的に永続化、復元、再分配されます。これにより、ステートの整合性を維持するための外部ストレージシステムが不要になります。

ストリーム処理

イベントが継続的に到着すると、エージェントはリアルタイムで応答します。Flink のストリーム処理エンジンは、この運用モデルの中核として高スループットかつ低レイテンシーを提供します。

本番運用の信頼性

分散チェックポイントにより、厳密に 1 回の処理保証でノード障害から自動的に回復でき、データやイベントの損失が発生しないようにします。

エージェントタイプ

ユースケースに応じて Workflow または ReAct のエージェントを構築できます。

タイプ

ユースケース

説明

Workflow Agent

プロセスが明確に定義されているシナリオ

事前定義されたイベント駆動ワークフローを通じてエージェントの振る舞いをオーケストレーションします。詳細については、「Workflow Agent」をご参照ください。

ReAct Agent

柔軟な意思決定が必要なシナリオ

Reasoning と Action を組み合わせ、LLM が実行手順を自律的に決定できるようにします。詳細については、「ReAct Agent」をご参照ください。

バージョンとモデル

  • Flink Agents ジョブを送信する際は、VVR エンジンバージョンとして VVR-11.7 以降を選択してください。選択しない場合、ランタイム依存関係が不足するため、ジョブは失敗します。

    VVR エンジンバージョン

    Flink バージョン

    Flink Agents バージョン

    vvr-11.7.0-flink-1.20

    1.20

    0.2.1

  • モデルはプラットフォームによって提供されます。ジョブから呼び出すために、個別に API キーを申請する必要はありません。この機能はベータ版であり、アクセスするには許可リストへの登録が必要です。詳細については、「Flink AI Service (Built-in Models)」をご参照ください。

前提条件

  • 製品と権限

    • Realtime Compute for Apache Flink を有効化し、ワークスペースを作成済みであること。詳細については、「Activate Realtime Compute for Apache Flink」をご参照ください。

    • RAM ユーザーまたは RAM ロールを使用している場合、Flink コンソールに必要な権限が付与されていること。詳細については、「Permission management」をご参照ください。

  • ローカル開発環境

    • Python: Python 3.10 または 3.11。

    • Java: Java 11+ および Maven 3+。

クイックスタート

このセクションでは、製品レビュー分析の例を使用して一連の手順を説明します。Flink Agents フレームワークを使用して、レビュー分析エージェントを含むサンプル Flink ジョブを作成します。ジョブの実行中、エージェントは Flink 組み込みの大規模言語モデル (LLM) サービスを呼び出して製品レビューを分析し、満足度スコア (1~5) と、不満がある場合の理由を生成します。

手順 1:サンプルジョブファイルのダウンロード

Python ジョブ

次のファイルを含む quickstart-python.zip をダウンロードします:

ファイル

説明

main.py

ジョブのエントリポイントです。実行環境を作成し、LLM 接続を登録し、ストリーム処理パイプラインを構築します。

review_analysis_agent.py

エージェント実装です。プロンプトテンプレート、ChatModel の構成、アクション処理ロジックを定義します。

ダウンロードした ZIP パッケージは、解凍せずにそのままアップロードできます。この例で使用する openaidashscope などの Python 依存関係は、VVR エンジンイメージに事前インストールされています。

Java ジョブ

次のファイルをダウンロードします:

ファイル

説明

quickstart-java.jar

そのままアップロードできるテスト用のファット JAR です。

quickstart-java-src.zip

参照用として提供される Java ソースコードです。

手順 2:ジョブのアップロードとデプロイ

  1. Realtime Compute for Apache Flink コンソールにログインします。

  2. 対象ワークスペースの [Actions] 列で、[Console] をクリックします。

  3. 左側のナビゲーションウィンドウで [File Management] をクリックします。次に、[Upload Resource] をクリックして、ダウンロードしたジョブファイルをアップロードします。

  4. [Operations > Jobs] ページで、[Deploy Job] をクリックします。ジョブタイプに応じて [Python Job] または [JAR Job] を選択し、デプロイ情報を入力します。

Python ジョブの構成

パラメータ

Deployment mode

Streaming mode

Deployment name

flink-agents-quickstart-python

Engine version

vvr-11.7.0-flink-1.20

Python file address

quickstart-python.zip

Entry module

main

Deployment target

default-queue

Java ジョブの構成

重要

追加の依存関係ファイル flink-agents-dist.jar をアップロードする必要があります。

パラメータ

Deployment mode

Streaming mode

Deployment name

flink-agents-quickstart-java

Engine version

vvr-11.7.0-flink-1.20

JAR URI

quickstart-java.jar

Entry point class

org.apache.flink.agents.quickstart.Main

Additional dependency file

flink-agents-dist.jar

Deployment target

default-queue

ランタイムパラメータ

[Deployment Details > Runtime parameter configuration > Edit > Other Configurations] に移動し、Flink の構成項目を追加します。

  • Python ジョブ

    python.executable: python3.10
    python.client.executable: python3.10
    containerized.master.env.FLINK_HOME: /flink
    containerized.taskmanager.env.FLINK_HOME: /flink
    classloader.parent-first-patterns.default: java.;scala.;com.esotericsoftware.kryo;org.apache.hadoop.;javax.annotation.;org.xml;javax.xml;org.apache.xerces;org.w3c;org.rocksdb.;org.slf4j;org.apache.log4j;org.apache.logging;org.apache.commons.logging;ch.qos.logback
  • Java ジョブ

    classloader.parent-first-patterns.default: java.;scala.;com.esotericsoftware.kryo;org.apache.hadoop.;javax.annotation.;org.xml;javax.xml;org.apache.xerces;org.w3c;org.rocksdb.;org.slf4j;org.apache.log4j;org.apache.logging;org.apache.commons.logging;ch.qos.logback

    パラメータの説明

    パラメータ

    説明

    python.executable / python.client.executable

    Python インタプリタのバージョンを指定します (Python ジョブのみ)。

    containerized.{master,taskmanager}.env.FLINK_HOME

    JobManager と TaskManager の FLINK_HOME 環境変数を設定します (Python ジョブのみ)。

    classloader.parent-first-patterns.default

    親 ClassLoader から優先的にロードされるパッケージ名のプレフィックスを設定します。

    説明

    環境変数は、JobManager と TaskManager の両方で利用できるように、containerized.master.env.containerized.taskmanager.env. の両方のプレフィックスを付けて構成する必要があります。

手順 3:ジョブの開始と結果の確認

  1. [Operations > Jobs] ページでジョブを見つけ、[Actions] 列で [Start] をクリックします。

  2. [Start Job] ダイアログボックスで、[stateless start] を選択し、[Start] をクリックします。

  3. この例ではインメモリのデータソースを使用するため、処理が完了するとジョブは自動的に終了します。ステータスが [finished] に変わるまで待ち、ジョブ名をクリックして詳細ページに移動します。

  4. [TaskManager] タブでログを確認し、キーワード Review analysis result: を検索して出力を確認します。

説明

本番環境では、通常 Apache Kafka などのストリーミングデータソースを使用し、ジョブは継続的に実行されます。

カスタムエージェントの開発

Flink Agents のインストール

Python

仮想環境の使用を推奨します:

python3 -m venv flink-agents-env
source flink-agents-env/bin/activate
pip install flink-agents       

詳細については、「Flink Agents Installation Guide」をご参照ください。

Java

pom.xml ファイルに次の依存関係を追加します:

<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-agents-api</artifactId>
    <version>${flink-agents.version}</version>
    <scope>provided</scope>
</dependency>
説明

Flink Agents の依存関係は VVR エンジンによって提供されるため、<scope>provided</scope> で宣言する必要があります。

ローカル IDE でデバッグする場合は、次の依存関係を追加します:

<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-agents-ide-support</artifactId>
    <version>${flink-agents.version}</version>
    <scope>provided</scope>
</dependency>

エージェントの作成

Flink Agents ジョブの基本構造は次のとおりです:

  1. LLM 接続の登録AgentsExecutionEnvironment を使用して ChatModel 接続を登録します。API キーやエンドポイント URL などの接続情報は、ResourceDescriptor を通じて構成します。詳細については、「Chat Models」をご参照ください。

  2. エージェントの定義:カスタムエージェントを実装し、プロンプトテンプレートを構成します。さらに、@action (Python) または @Action (Java) アノテーションを使用してイベント処理ロジックを定義します。

  3. パイプラインの構築:入力データストリームをエージェントに接続して処理し、分析結果を出力します。

エージェント、プロンプト、ツール、メモリなどの概念の詳細については、「Flink Agents development documentation」をご参照ください。

ローカルでのテスト

ローカルテストは Flink MiniCluster によって自動的に処理されるため、別途クラスターをデプロイする必要はありません。

Python

python your_agent_job.py        

Java

mvn exec:java -Dexec.mainClass="com.example.YourAgentJob"       

詳細については、「Flink Agents deployment documentation」をご参照ください。

依存関係の管理

事前インストール済みの依存関係

VVR エンジンイメージには、Flink Agents のコアライブラリと関連する一部の依存関係が事前インストールされています。

Python 依存関係

依存関係

説明

flink-agents core library

Flink Agents Python API

openai

OpenAI 互換インターフェイス (Model Studio プラットフォームを含む)

dashscope

Alibaba Cloud Model Studio (Qwen 用ネイティブインターフェイス)

mcp

Model Context Protocol

事前インストールされていない依存関係は、ジョブと一緒にアップロードする必要があります。詳細については、「Manage Python dependencies」をご参照ください。

Java 依存関係

VVR エンジンには Flink Agents の薄い JAR (コアコード) のみが含まれるため、LLM 連携に必要なサードパーティ依存関係は、別途ジョブに含める必要があります。

ジョブをデプロイする際は、ビジネス用のファット JAR に加えて、追加の依存関係として flink-agents-dist.jar もアップロードする必要があります。この JAR には Flink Agents のランタイムと、コミュニティでサポートされるすべての連携が含まれており、カスタム Agent ジョブでも必要です。

Java ジョブの依存関係の管理

maven-shade-plugin を使用してジョブをファット JAR にパッケージ化します。依存関係のスコープは、次のルールに従って構成してください:

  • Flink Agents のコア依存関係 (flink-agents-apiflink-agents-runtime など):スコープを <scope>provided</scope> に設定し、ファット JAR にパッケージ化しないでください。

  • Flink のコア依存関係 (flink-streaming-java など):スコープを <scope>provided</scope> に設定します。

  • LLM 連携の依存関係: 以下のケースに応じて対応してください。

    • Flink Agents コミュニティで既にサポートされている連携 (OpenAI や Anthropic など) の場合:スコープを <scope>provided</scope> に設定し、ファット JAR にパッケージ化しないでください。Flink Agents 0.2.1 でサポートされる連携の完全な一覧については、「Built-in Providers」をご参照ください。

    • コミュニティで未サポートの連携の場合: スコープを <scope>compile</scope> に設定し、ファット JAR にパッケージ化してください。

  • Flink と競合するライブラリ (Jackson など): maven-shade-plugin で relocation を構成してください。

完全な pom.xml 構成例については、quickstart-java-src.zip ファイルをご参照ください。

Realtime Compute for Flink へのジョブの送信

Python ジョブ

送信手順は標準の PyFlink ジョブと同じです。詳細については、「Develop a Python job」をご参照ください。主要なパラメータは次のとおりです:

パラメータ

説明

Engine version

Flink Agents をサポートする VVR エンジンバージョンを選択します。具体的なバージョンについては、「バージョンとモデル」セクションをご参照ください。

Python file address

ジョブのエントリとなる Python ファイル、または ZIP パッケージです。

Entry module

ZIP パッケージのエントリモジュール名です。

Python libraries

追加の依存関係です。

Java ジョブ

送信手順は標準の Flink JAR ジョブと同じです。詳細については、「Develop a JAR job」をご参照ください。主要なパラメータは次のとおりです:

パラメータ

説明

Engine version

Flink Agents をサポートする VVR エンジンバージョンを選択します。具体的なバージョンについては、「バージョンとモデル」セクションをご参照ください。

JAR URI

ファット JAR へのパスです。

Entry point class

ジョブのエントリポイントクラスの完全修飾名です。

共通のランタイムパラメータ

Python インタプリタのバージョン

VVR エンジンイメージのデフォルトは Python 3.9 ですが、Flink Agents には Python 3.10 または 3.11 が必要です。Python ジョブでは次のように構成する必要があります:

python.executable: python3.10
python.client.executable: python3.10
containerized.master.env.FLINK_HOME: /flink
containerized.taskmanager.env.FLINK_HOME: /flink

カスタム環境変数

ジョブコードが環境変数 (エンドポイント URL やモデル選択など) から設定を読み取る場合は、それぞれのプレフィックスを使用して JobManager と TaskManager プロセスの両方に変数を設定する必要があります:

containerized.master.env.<ENV_VAR_NAME>: <value>
containerized.taskmanager.env.<ENV_VAR_NAME>: <value>        

モデルを切り替える例:

containerized.master.env.OPENAI_MODEL: qwen3.6-flash
containerized.taskmanager.env.OPENAI_MODEL: qwen3.6-flash