kyma_poc
Kyma (กรีกสำหรับ Wave, https://www.howtopronounce.com/kyma) เป็นการพิสูจน์การสาธิตแนวคิดโดยใช้ Generative AI ภายใน Konveyor.io เพื่อช่วยในการปรับปรุงโค้ดให้ทันสมัย
สไลด์: Konveyor KymaML: การย้ายรหัส GenAI
ภาพรวม
- Kyma มุ่งเน้นไปที่การใช้ประโยชน์จากข้อมูลที่ Konveyor รวบรวมไว้แล้วผ่าน Migration Waves และมุมมองของ Application Portfolio ขององค์กร
- Kyma จะดูรายงานการวิเคราะห์ของแอปพลิเคชันที่กำหนด และจะสร้างแพตช์ที่เป็นไปได้สำหรับแต่ละเหตุการณ์
- ซึ่งทำได้โดยการดูเหตุการณ์ที่คล้ายกันที่ได้รับการแก้ไขในแอปพลิเคชันอื่นๆ และคว้าส่วนต่างของโค้ดที่แก้ไขเหตุการณ์นั้น และทำงานร่วมกับ LLM เพื่อใช้ประโยชน์จากวิธีที่องค์กรแก้ไขปัญหาในอดีตสำหรับแอปพลิเคชันและเหตุการณ์เฉพาะนี้
- สำหรับ POC สิ่งนี้จะเกี่ยวข้องกับการดูแอปพลิเคชันที่มีทั้งโซลูชัน javaee และ quarkus เราจะจำลองว่าประสบการณ์จะเป็นอย่างไรใน Konveyor ซึ่งเราสามารถเข้าถึงพอร์ตโฟลิโอแอปพลิเคชันที่ใหญ่กว่า และสามารถค้นหาแอปพลิเคชันที่คล้ายกันซึ่งถูกย้ายแล้วและใช้เป็น ตัวอย่าง
- แนวทางนี้ใช้ประโยชน์จากวิศวกรรมที่รวดเร็วด้วยตัวอย่าง Few Shots และชุดตัวแทนเพื่อทำงานร่วมกับ LLM เพื่อปรับปรุงแพตช์ที่สร้างขึ้น
- หมายเหตุ: ไม่จำเป็นต้องมีการฝึกโมเดลและการปรับแต่งแบบละเอียดในระยะนี้ เรามีแผนสำหรับการปรับแต่งอย่างละเอียดร่วมกับ Open Data Hub ในอนาคต โดยใช้ประโยชน์จากโมเดลพื้นฐานโอเพ่นซอร์สจาก Huggingface.co แต่นั่นอยู่นอกขอบเขตสำหรับระยะปัจจุบันนี้
- เรากำลังสมมติว่า Kyma จะทำงานร่วมกับโมเดลต่างๆ ได้ โดยมุ่งเน้นไปที่วิศวกรรมเครื่องมือ/พร้อมท์ และคาดว่าจะถือว่าพิกัดของโมเดลเป็นเอนทิตีที่ใช้แทนกันได้ เพื่อให้เราสามารถทดลองกับโมเดลที่กำลังพัฒนาได้
เกณฑ์ความสำเร็จของ Proof of Concept คืออะไร
- เราต้องการประเมินว่าเราสามารถได้รับคุณภาพระดับใดจากวิศวกรรมที่รวดเร็ว กล่าวคือ ไม่มีการปรับแต่งอย่างละเอียด
- ระยะในอนาคตอาจใช้ประโยชน์จากการปรับแต่งอย่างละเอียด แต่ระยะนี้เป็นแนวทางที่ง่ายกว่าในการสร้างเครื่องมือเพื่อรวบรวมข้อมูลที่เป็นประโยชน์ใน Konveyor และใช้วิศวกรรมทันทีเพื่อช่วยผู้ย้ายข้อมูลในการเปลี่ยนแปลงโค้ด
- POC นี้มีวัตถุประสงค์เพื่อเป็นโครงการ Python ขนาดเล็กเพื่อทำงานร่วมกับแอปพลิเคชันตัวอย่างและรายงานการวิเคราะห์เพื่อประเมินประโยชน์ของแพตช์ที่สร้างขึ้นในโดเมนของการปรับแอปพลิเคชัน Java EE ให้ทันสมัยเป็น Quarkus
- ความสำเร็จสำหรับเราคือความสามารถในการสร้างแพตช์ที่ช่วยประหยัดเวลาจาก Migrator ที่ทำงานเพื่อปรับปรุงแอปพลิเคชันให้ทันสมัย
- เราถือว่าแพตช์จะไม่สามารถทำงานได้ 100% ตลอดเวลา และจะเกี่ยวข้องกับการแทรกแซงของผู้ใช้ ความสำเร็จจะเกี่ยวข้องกับจำนวนการแทรกแซงที่จำเป็น และหากโปรแกรมแก้ไขให้ผลช่วยประหยัดเวลาได้เพียงพอหรือไม่
ตั้งค่า
-
python -m venv env
-
source env/bin/activate
-
pip install -r ./requirements.txt
- ติดตั้ง podman เพื่อให้คุณสามารถเรียกใช้ Kantra สำหรับการวิเคราะห์โค้ดแบบคงที่ได้
วิ่ง
เรียกใช้การวิเคราะห์แอปตัวอย่าง (ตัวอย่างสำหรับ MacOS)
-
cd data
-
./fetch.sh
# สิ่งนี้จะคอมไพล์โคลนแอปซอร์สโค้ดตัวอย่างบางส่วน -
./darwin_restart_podman_machine.sh
# ตั้งค่า podman VM บน MacOS เพื่อที่จะเมานต์ระบบไฟล์โฮสต์ใน VM -
./darwin_get_latest_kantra_cli.sh
# ดึงข้อมูล 'kantra' เครื่องมือวิเคราะห์ของเรา -
./analyzer_coolstuff.sh
# วิเคราะห์ไดเร็กทอรี 'coolstuff-javaee' และเขียนเอาต์พุตการวิเคราะห์ไปที่ example_reports/coolstuff-javaee/output.yaml- ทำตามตัวอย่างนั้นเพื่อวิเคราะห์การใช้งานตัวอย่างอื่นๆ
สร้างเวอร์ชัน Markdown ของรายงานการวิเคราะห์ที่กำหนด
- ซึ่งจะใช้เอาต์พุต YAML และแปลงเป็น Markdown เพื่อให้ดูได้ง่ายขึ้น
- เริ่มต้นในโปรเจ็กต์รูทและดำเนินการ
-
./kyma.py report data/example_reports/coolstuff-javaee/output.yaml example_output/coolstuff-quarkus
สร้างผลลัพธ์จากการโต้ตอบ LLM
-
export OPENAI_API_KEY="mysecretkey"
- ดู https://platform.openai.com/api-keys เพื่อสร้างคีย์ API
-
./generate_coolstuff.sh
- ดู Generate_coolstuff.sh เป็นตัวอย่างของวิธีการเรียกใช้
- ดูผลลัพธ์ข้างต้นได้ที่ example_output/coolstuff-quarkus
- ไฟล์ 2 ประเภทถูกสร้างเป็นเอาต์พุตสำหรับเหตุการณ์แรกของการละเมิดแต่ละครั้ง (ปัจจุบันเรากำลังดำเนินการกับเหตุการณ์แรกเท่านั้น)
- '*_full_run.md' ไฟล์มาร์กดาวน์ที่แสดงพรอมต์ที่ส่งไปยัง LLM และผลลัพธ์ทั้งหมด
- ".diff" - ส่วนต่างที่เกิดขึ้นสำหรับเหตุการณ์แรกของการละเมิดแต่ละครั้ง
- โปรดทราบว่าเรากำลังแจกแจงผลลัพธ์ตามโมเดลเพื่อค้นหา:
- example_output/coolstuff-quarkus/gpt-3.5-turbo-16k
- example_output/coolstuff-quarkus/gpt-4-1106-preview
- ตัวอย่างของปัญหาเฉพาะและผลลัพธ์:
- example_output/coolstuff-quarkus/gpt-4-1106-preview/quarkus_springboot_cdi-to-quarkus-00050_2_full_run.md
หมายเหตุ
- แนวคิดเกี่ยวกับเวลาทำงานเมื่อเราประมวลผล coolstuff-store สำหรับ:
-
-t "quarkus" -t "jakarta-ee" -t "jakarta-ee8+" -t "jakarta-ee9+" -t "cloud-readiness"
- 'gpt-3.5-เทอร์โบ-16k'
-
time ./generate_coolstuff.sh 5.12s user 3.46s system 1% cpu 11:02.25 total
- 'gpt-4-1106-ตัวอย่าง'
-
./generate_coolstuff.sh 4.86s user 3.73s system 0% cpu 15:52.24 total