kyma_poc
Kyma (bahasa Yunani untuk Wave, https://www.howtopronounce.com/kyma) adalah bukti demonstrasi konsep menggunakan AI Generatif di dalam Konveyor.io untuk membantu upaya modernisasi kode.
Slide: Konveyor KymaML: Migrasi Kode GenAI
Ringkasan
- Kyma berfokus pada pemanfaatan data yang sudah dikumpulkan Konveyor melalui Migration Waves dan pandangannya tentang Portofolio Aplikasi organisasi.
- Kyma akan melihat laporan analisis aplikasi tertentu dan akan menghasilkan patch potensial untuk setiap insiden.
- Hal ini dilakukan dengan melihat insiden serupa yang diselesaikan di aplikasi lain dan mengambil perbedaan kode yang memperbaiki insiden tersebut dan bekerja dengan LLM untuk memanfaatkan cara organisasi memecahkan masalah di masa lalu untuk aplikasi dan insiden spesifik ini.
- Untuk POC ini akan melibatkan melihat aplikasi yang memiliki solusi javaee dan quarkus, kami akan mensimulasikan seperti apa pengalaman di Konveyor di mana kami memiliki akses ke portofolio aplikasi yang lebih besar dan dapat menemukan aplikasi serupa yang telah dimigrasi dan menggunakannya sebagai contoh.
- Pendekatan ini memanfaatkan rekayasa cepat dengan contoh Few Shots dan serangkaian agen untuk bekerja dengan LLM guna meningkatkan patch yang dihasilkan.
- Catatan: Pelatihan Model dan Penyempurnaan tidak diperlukan dalam fase ini. Kami memiliki rencana untuk melakukan penyesuaian bersama dengan Open Data Hub di masa depan, dengan memanfaatkan model dasar sumber terbuka dari huggingface.co, namun hal tersebut berada di luar cakupan fase saat ini.
- Kami berasumsi bahwa Kyma akan bekerja dengan berbagai model, fokus kami adalah pada perkakas/rekayasa cepat dan berharap untuk memperlakukan koordinat model sebagai entitas yang dapat dipertukarkan. Hal ini memungkinkan kami bereksperimen dengan model yang terus berkembang.
Apa kriteria keberhasilan Bukti Konsep kami
- Kami ingin menilai tingkat kualitas apa yang bisa kami peroleh dari rekayasa cepat, yaitu tanpa penyesuaian.
- Fase masa depan mungkin memanfaatkan penyempurnaan, namun fase ini adalah tentang pendekatan yang lebih sederhana dalam membangun alat untuk mengumpulkan data yang berguna di Konveyor dan menggunakan rekayasa cepat untuk membantu Migrator dengan perubahan kode
- POC ini dimaksudkan sebagai proyek python kecil untuk bekerja dengan beberapa contoh aplikasi dan laporan analisis untuk mengukur kegunaan patch yang dihasilkan dalam domain modernisasi aplikasi Java EE ke Quarkus
- Sukses bagi kami adalah mampu menghasilkan patch yang menghemat waktu Migrator dalam mengerjakan modernisasi aplikasi.
- Kami berasumsi patch tersebut tidak akan berfungsi 100% sepanjang waktu dan akan melibatkan beberapa intervensi pengguna. Keberhasilan akan berhubungan dengan seberapa banyak intervensi yang diperlukan dan apakah patch tersebut memberikan bantuan yang cukup untuk menghemat waktu.
Pengaturan
-
python -m venv env
-
source env/bin/activate
-
pip install -r ./requirements.txt
- Instal podman agar Anda dapat menjalankan Kantra untuk analisis kode statis
Berlari
Jalankan analisis aplikasi sampel (contoh untuk MacOS)
-
cd data
-
./fetch.sh
# ini akan mengkloning beberapa contoh aplikasi kode sumber -
./darwin_restart_podman_machine.sh
# menyiapkan VM podman di MacOS sehingga akan memasang sistem file host ke dalam VM -
./darwin_get_latest_kantra_cli.sh
# mengambil 'kantra' alat analisa kami -
./analyzer_coolstuff.sh
# Menganalisis direktori 'coolstuff-javaee' dan menulis keluaran analisis ke example_reports/coolstuff-javaee/output.yaml- Ikuti contoh tersebut untuk menganalisis contoh aplikasi lainnya
Hasilkan versi penurunan harga dari laporan analisis tertentu
- Ini akan mengambil keluaran YAML dan mengonversinya ke Penurunan harga untuk tampilan yang lebih mudah
- Mulai di root proyek dan jalankan
-
./kyma.py report data/example_reports/coolstuff-javaee/output.yaml example_output/coolstuff-quarkus
Ini dengan asumsi bahwa laporan analisis Kantra di YAML ada di data/example_reports/coolstuff-javaee/output.yaml
Contoh keluaran yang dijalankan:
$ time ./kyma.py report data/example_reports/coolstuff-javaee/output.yaml example_output/coolstuff-quarkus
We have results from 4 RuleSet(s) in data/example_reports/coolstuff-javaee/output.yaml
Writing eap7/websphere to example_output/coolstuff-quarkus/eap7_websphere.md
Writing eap8/eap7 to example_output/coolstuff-quarkus/eap8_eap7.md
Writing openshift to example_output/coolstuff-quarkus/openshift.md
Writing quarkus/springboot to example_output/coolstuff-quarkus/quarkus_springboot.md
./kyma.py report data/example_reports/coolstuff-javaee/output.yaml 1.28s user 2.12s system 337% cpu 1.007 total
Contoh keluaran dapat dilihat dari github untuk data/example_reports/coolstuff-javaee/output.yaml
- contoh_output/coolstuff-quarkus/eap7_websphere.md
- contoh_output/coolstuff-quarkus/eap8_eap7.md
- contoh_output/coolstuff-quarkus/openshift.md
- contoh_output/coolstuff-quarkus/quarkus_springboot.md
Hasilkan hasil dari interaksi LLM
-
export OPENAI_API_KEY="mysecretkey"
- Lihat https://platform.openai.com/api-keys untuk membuat Kunci API
-
./generate_coolstuff.sh
- Lihat generate_coolstuff.sh sebagai contoh cara memanggil
- Lihat hasilnya di atas di example_output/coolstuff-quarkus
- 2 jenis file dihasilkan sebagai keluaran untuk Insiden pertama dari setiap Pelanggaran (saat ini kami hanya mengerjakan insiden pertama)
- '*_full_run.md' File penurunan harga yang menunjukkan Prompt yang dikirim ke LLM dan Hasil lengkapnya
- ".diff" - Perbedaan yang dihasilkan untuk insiden pertama setiap pelanggaran
- Perhatikan bahwa kami membagi keluaran berdasarkan model yang ingin dicari:
- example_output/coolstuff-quarkus/gpt-3.5-turbo-16k
- example_output/coolstuff-quarkus/gpt-4-1106-preview
- Contoh masalah dan hasil tertentu:
- example_output/coolstuff-quarkus/gpt-4-1106-preview/quarkus_springboot_cdi-to-quarkus-00050_2_full_run.md
Catatan
- Ide waktu berjalan saat kita memproses coolstuff-store untuk:
-
-t "quarkus" -t "jakarta-ee" -t "jakarta-ee8+" -t "jakarta-ee9+" -t "cloud-readiness"
- 'gpt-3.5-turbo-16k'
-
time ./generate_coolstuff.sh 5.12s user 3.46s system 1% cpu 11:02.25 total
- 'gpt-4-1106-pratinjau'
-
./generate_coolstuff.sh 4.86s user 3.73s system 0% cpu 15:52.24 total