Realtime Compute for Apache Flink mendukung pengembangan pekerjaan AI agent berbasis aliran dan berbasis event menggunakan framework open-source Apache Flink Agents. Dokumen ini menjelaskan konsep inti Flink Agents, mencakup persyaratan versi, panduan memulai cepat, pengembangan kustom, pengiriman pekerjaan, dan manajemen dependensi.
Ikhtisar
Apache Flink Agents adalah subproyek baru dari komunitas Apache Flink untuk membangun AI agent berbasis event. Framework ini memanfaatkan mesin streaming Flink yang telah teruji guna memberikan kemampuan terdistribusi, stateful, toleransi kesalahan, dan pemrosesan aliran kepada AI agent, sehingga siap digunakan di lingkungan produksi enterprise.
Flink Agents menyertakan modul bawaan untuk panggilan large language model (LLM), penggunaan tool, manajemen memori, orkestrasi dinamis, dan observabilitas. Dengan fitur-fitur ini, Anda dapat dengan cepat membangun AI agent skala besar, berjalan terus-menerus, dan andal tingkat produksi.
Flink Agents menyediakan keunggulan inti berikut:
|
Capability |
Description |
|
Distributed coordination |
Framework ini menyediakan kemampuan inti seperti perutean event, partisi, konsistensi state terdistribusi, dan pemulihan kegagalan otomatis, sehingga menghilangkan kebutuhan untuk mengelola beberapa replika agent. |
|
Stateful memory |
Flink State mengelola memori agent, yang secara otomatis dipersist, dipulihkan, dan didistribusikan ulang selama checkpoint. Hal ini menghilangkan kebutuhan sistem penyimpanan eksternal untuk menjaga konsistensi state. |
|
Stream processing |
Saat event terus-menerus tiba, agent merespons secara real time. Mesin stream processing Flink menyediakan inti ber-throughput tinggi dan latensi rendah untuk model operasional ini. |
|
Production reliability |
Checkpoint terdistribusi memungkinkan pemulihan otomatis dari kegagalan node dengan jaminan pemrosesan exactly-once, memastikan tidak ada kehilangan data atau event. |
Agent types
Anda dapat membangun Workflow Agent atau ReAct Agent untuk berbagai kasus penggunaan.
|
Type |
Use cases |
Description |
|
Workflow Agent |
Skenario dengan proses yang terdefinisi dengan baik |
Mengatur perilaku agent melalui alur kerja berbasis event yang telah ditentukan sebelumnya. Untuk informasi lebih lanjut, lihat Workflow Agent. |
|
ReAct Agent |
Skenario yang memerlukan pengambilan keputusan fleksibel |
Menggabungkan Reasoning dan Action, memungkinkan LLM menentukan langkah eksekusi secara otonom. Untuk informasi lebih lanjut, lihat ReAct Agent. |
Versi dan model
-
Saat mengirimkan pekerjaan Flink Agents, pilih versi engine VVR VVR-11.7 atau yang lebih baru. Jika tidak, pekerjaan akan gagal karena dependensi waktu proses tidak tersedia.
VVR engine version
Flink version
Flink Agents version
vvr-11.7.0-flink-1.20
1.20
0.2.1
-
Model disediakan oleh platform. Anda tidak perlu mengajukan Kunci API terpisah untuk memanggilnya dalam pekerjaan Anda. Fitur ini masih dalam tahap Beta dan memerlukan akses melalui daftar izin (allowlist). Untuk informasi lebih lanjut, lihat Flink AI Service (Built-in Models).
Prasyarat
-
Produk dan izin
-
Anda telah mengaktifkan Realtime Compute for Apache Flink dan membuat ruang kerja. Untuk informasi lebih lanjut, lihat Aktifkan Realtime Compute for Apache Flink.
-
Jika Anda menggunakan Pengguna RAM atau Peran RAM, Anda harus memiliki izin yang diperlukan untuk Konsol Flink. Untuk informasi lebih lanjut, lihat Manajemen izin.
-
-
Lingkungan pengembangan lokal
-
Python: Python 3.10 atau 3.11.
-
Java: Java 11+ dan Maven 3+.
-
Memulai cepat
Bagian ini menggunakan contoh analisis ulasan produk untuk memandu Anda melalui seluruh proses. Anda akan membangun pekerjaan Flink contoh dengan agent analisis ulasan menggunakan framework Flink Agents. Saat pekerjaan berjalan, agent memanggil layanan large language model (LLM) bawaan Flink untuk menganalisis ulasan produk, menghasilkan skor kepuasan (dari 1 hingga 5) dan alasan ketidakpuasan.
Langkah 1: Unduh file pekerjaan contoh
Python job
Unduh quickstart-python.zip, yang berisi file berikut:
|
File |
Description |
|
main.py |
Titik masuk pekerjaan ini membuat lingkungan eksekusi, mendaftarkan koneksi LLM, dan membangun pipeline pemrosesan aliran. |
|
review_analysis_agent.py |
Implementasi agent. File ini mendefinisikan templat prompt, konfigurasi ChatModel, dan logika penanganan aksi. |
Anda dapat mengunggah paket ZIP yang diunduh secara langsung tanpa perlu mengekstraknya. Dependensi Python yang digunakan dalam contoh ini, seperti openai dan dashscope, telah dipra-instal dalam image engine VVR.
Java job
Unduh file berikut:
|
File |
Description |
|
Fat JAR uji coba yang dapat Anda unggah langsung. |
|
|
Kode sumber Java, disediakan sebagai referensi. |
Langkah 2: Unggah dan terapkan pekerjaan
-
Login ke Konsol Realtime Compute for Apache Flink.
-
Pada kolom Actions ruang kerja target, klik Console.
-
Di panel navigasi sebelah kiri, klik File Management. Kemudian, klik Upload Resource untuk mengunggah file pekerjaan yang telah Anda unduh.
-
Pada halaman Operations > Jobs, klik Deploy Job. Pilih Python Job atau JAR Job sesuai jenis pekerjaan Anda dan isi informasi penerapan.
Konfigurasi pekerjaan Python
|
Parameter |
Contoh |
|
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 |
quickstart.main |
|
Deployment target |
default-queue |
Konfigurasi pekerjaan Java
Anda harus mengunggah file dependensi tambahan flink-agents-dist.jar.
|
Parameter |
Contoh |
|
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 |
|
|
Deployment target |
default-queue |
Parameter waktu proses
Buka Deployment Details > Runtime parameter configuration > Edit > Other Configurations, lalu tambahkan item konfigurasi Flink.
-
Python job
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 job
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.logbackDeskripsi parameter
Parameter
Description
python.executable/python.client.executableMenentukan versi interpreter Python (hanya untuk pekerjaan Python).
containerized.{master,taskmanager}.env.FLINK_HOMEMenetapkan variabel lingkungan
FLINK_HOMEuntuk JobManager dan TaskManager (hanya untuk pekerjaan Python).classloader.parent-first-patterns.defaultMenetapkan awalan nama paket yang dimuat terlebih dahulu dari parent ClassLoader.
CatatanAnda harus mengonfigurasi variabel lingkungan dengan awalan
containerized.master.env.dancontainerized.taskmanager.env.untuk memastikan variabel tersebut tersedia bagi JobManager maupun TaskManager.
Langkah 3: Mulai pekerjaan dan lihat hasilnya
-
Pada halaman Operations > Jobs, temukan pekerjaan Anda dan klik Start pada kolom Actions.
-
Pada kotak dialog Start Job, pilih stateless start dan klik Start.
-
Contoh ini menggunakan sumber data in-memory, sehingga pekerjaan secara otomatis berhenti setelah pemrosesan selesai. Tunggu hingga status berubah menjadi finished, lalu klik nama pekerjaan untuk membuka halaman detail.
-
Pada tab TaskManager, lihat log dan cari kata kunci
Review analysis result:untuk melihat output.
Di lingkungan produksi, Anda biasanya akan menggunakan sumber data streaming seperti Apache Kafka, dan pekerjaan akan berjalan terus-menerus.
Mengembangkan agent kustom
Menginstal Flink Agents
Python
Kami menyarankan Anda menggunakan virtual environment:
python3 -m venv flink-agents-env
source flink-agents-env/bin/activate
pip install flink-agents
Untuk informasi lebih lanjut, lihat Panduan Instalasi Flink Agents.
Java
Tambahkan dependensi berikut ke file pom.xml Anda:
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-agents-api</artifactId>
<version>${flink-agents.version}</version>
<scope>provided</scope>
</dependency>
Dependensi Flink Agents harus dideklarasikan dengan <scope>provided</scope> karena sudah disediakan oleh engine VVR.
Untuk debugging di IDE lokal Anda, tambahkan dependensi berikut:
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-agents-ide-support</artifactId>
<version>${flink-agents.version}</version>
<scope>provided</scope>
</dependency>
Menulis agent
Struktur inti pekerjaan Flink Agents adalah sebagai berikut:
-
Daftarkan koneksi LLM: Daftarkan koneksi ChatModel menggunakan
AgentsExecutionEnvironment. Konfigurasikan clazz layanan model bawaan Flink menggunakanResourceDescriptor. Untuk informasi lebih lanjut, lihat Chat Models. Contoh:@chat_model_connection @staticmethod def openai_connection() -> ResourceDescriptor: return ResourceDescriptor( clazz="flink_agents.integrations.chat_models.openai.openai_chat_model.OpenAIChatModelConnection" ) @chat_model_setup @staticmethod def openai_chat_model() -> ResourceDescriptor: return ResourceDescriptor( clazz="flink_agents.integrations.chat_models.openai.openai_chat_model.OpenAIChatModelSetup", connection="openai_connection", model="qwen3.7-flash", temperature=0.7 ) -
Definisikan agent: Implementasikan agent kustom Anda, konfigurasikan templat prompt-nya, dan definisikan logika penanganan event menggunakan anotasi
@action(Python) atau@Action(Java). -
Bangun pipeline: Hubungkan aliran data masukan ke agent untuk diproses dan keluarkan hasil analisis.
Untuk informasi lebih lanjut tentang konsep seperti agent, prompt, tool, dan memori, lihat dokumentasi pengembangan Flink Agents.
Pengujian lokal
Pengujian lokal ditangani secara otomatis oleh Flink MiniCluster, sehingga Anda tidak perlu menerapkan kluster terpisah.
Python
python your_agent_job.py
Java
mvn exec:java -Dexec.mainClass="com.example.YourAgentJob"
Untuk informasi lebih lanjut, lihat dokumentasi penerapan Flink Agents.
Manajemen dependensi
Dependensi yang telah dipra-instal
Image engine VVR telah dipra-instal dengan pustaka inti Flink Agents dan beberapa dependensi terkait.
Dependensi Python
|
Dependency |
Description |
|
flink-agents core library |
API Python Flink Agents |
|
openai |
Antarmuka kompatibel OpenAI (termasuk platform Model Studio) |
|
dashscope |
Alibaba Cloud Model Studio (antarmuka native untuk Qwen) |
|
mcp |
Model Context Protocol |
Dependensi yang tidak dipra-instal harus diunggah bersama pekerjaan Anda. Untuk informasi lebih lanjut, lihat Kelola dependensi Python.
Dependensi Java
Engine VVR hanya berisi thin JAR Flink Agents (kode inti). Dependensi pihak ketiga untuk semua integrasi LLM harus dikemas ke dalam JAR pekerjaan.
Saat menerapkan pekerjaan, selain fat JAR bisnis Anda, Anda juga harus mengunggah flink-agents-dist.jar sebagai dependensi tambahan. JAR ini berisi runtime Flink Agents beserta semua integrasi yang didukung komunitas, dan diperlukan juga untuk pekerjaan Agent kustom.
Mengelola dependensi pekerjaan Java
Gunakan maven-shade-plugin untuk mengemas pekerjaan Anda ke dalam fat JAR. Konfigurasikan cakupan dependensi sesuai aturan berikut:
-
Dependensi inti Flink Agents (seperti
flink-agents-apidanflink-agents-runtime): Tetapkan cakupan ke<scope>provided</scope>dan jangan masukkan ke dalam fat JAR. -
Dependensi inti Flink (seperti
flink-streaming-java): Tetapkan cakupan ke<scope>provided</scope>. -
Dependensi integrasi LLM: Tangani berdasarkan kasus berikut.
-
Untuk integrasi yang sudah didukung komunitas Flink Agents (seperti OpenAI dan Anthropic): Tetapkan cakupan ke
<scope>provided</scope>dan jangan masukkan ke dalam fat JAR. Untuk daftar lengkap integrasi yang didukung di Flink Agents 0.2.1, lihat Built-in Providers. -
Untuk integrasi yang belum didukung komunitas: Tetapkan cakupan ke
<scope>compile</scope>dan masukkan ke dalam fat JAR.
-
-
Pustaka yang bentrok dengan Flink (seperti Jackson): Konfigurasikan relocation di
maven-shade-plugin.
Untuk contoh konfigurasi lengkap file pom.xml, lihat file quickstart-java-src.zip.
Mengirimkan pekerjaan ke Realtime Compute for Flink
Python job
Proses pengiriman sama seperti pekerjaan PyFlink standar. Untuk informasi lebih lanjut, lihat Mengembangkan pekerjaan Python. Parameter utamanya adalah sebagai berikut:
|
Parameter |
Description |
|
Engine version |
Pilih versi engine VVR yang mendukung Flink Agents. Untuk versi spesifik, lihat bagian "Versi dan model". |
|
Python file address |
File Python entri pekerjaan atau paket ZIP. |
|
Entry module |
Nama modul entri untuk paket ZIP. |
|
Python libraries |
Dependensi tambahan. |
Java job
Proses pengiriman sama seperti pekerjaan JAR Flink standar. Untuk informasi lebih lanjut, lihat Mengembangkan pekerjaan JAR. Parameter utamanya adalah sebagai berikut:
|
Parameter |
Description |
|
Engine version |
Pilih versi engine VVR yang mendukung Flink Agents. Untuk versi spesifik, lihat bagian "Versi dan model". |
|
JAR URI |
Jalur ke fat JAR. |
|
Entry point class |
Nama lengkap kelas entri pekerjaan. |
Parameter waktu proses umum
Versi interpreter Python
Image engine VVR secara default menggunakan Python 3.9, tetapi Flink Agents memerlukan Python 3.10 atau 3.11. Anda harus mengonfigurasi hal berikut untuk pekerjaan Python:
python.executable: python3.10
python.client.executable: python3.10
containerized.master.env.FLINK_HOME: /flink
containerized.taskmanager.env.FLINK_HOME: /flink
Variabel lingkungan kustom
Jika kode pekerjaan Anda membaca konfigurasi dari variabel lingkungan (seperti URL titik akhir atau pemilihan model), Anda harus menetapkan variabel tersebut untuk proses JobManager dan TaskManager menggunakan awalan masing-masing:
containerized.master.env.<ENV_VAR_NAME>: <value>
containerized.taskmanager.env.<ENV_VAR_NAME>: <value>
Contoh penggantian model:
containerized.master.env.OPENAI_MODEL: qwen3.6-flash
containerized.taskmanager.env.OPENAI_MODEL: qwen3.6-flash