Gen Ai - Contoh Springboot / Langchain4J
AI Generatif mengacu pada subset kecerdasan buatan yang dapat menghasilkan konten baru berdasarkan masukan data. Ini mencakup model yang dapat membuat teks, gambar, musik, dan bahkan video. Contoh AI generatif mencakup model bahasa seperti GPT-3 dan DALL-E OpenAI, yang masing-masing dapat menghasilkan teks dan gambar mirip manusia dari deskripsi tekstual.
Model AI generatif biasanya dilatih pada kumpulan data yang luas dan menggunakan teknik pembelajaran mendalam untuk mempelajari pola dan struktur dalam data. Mereka memiliki berbagai macam aplikasi, termasuk:
- Pemrosesan Bahasa Alami (NLP): Menghasilkan teks mirip manusia untuk chatbot, terjemahan, dan pembuatan konten.
- Seni Kreatif: Menciptakan karya seni, musik, dan elemen desain.
- Augmentasi Data: Menghasilkan data tambahan untuk melatih model pembelajaran mesin lainnya.
- Layanan Kesehatan: Membantu dalam pencitraan medis dan membuat rencana perawatan yang dipersonalisasi.
Bagaimana LangChain4J Gen AI API Membantu Pengembang Membangun Aplikasi Spring Boot AI
LangChain4J adalah perpustakaan Java yang dirancang untuk menyederhanakan integrasi model bahasa besar (LLM) dan kemampuan AI ke dalam aplikasi Java, termasuk yang dibangun dengan Spring Boot. Inilah cara ini membantu pengembang:
- API Terpadu untuk LLM: LangChain4J menyediakan API terpadu yang mendukung beberapa penyedia LLM seperti OpenAI dan Google Vertex AI. Abstraksi ini memungkinkan pengembang untuk beralih di antara LLM yang berbeda tanpa mengubah basis kode mereka secara signifikan.
- Integrasi Penyimpanan Penyematan: Terintegrasi dengan berbagai penyimpanan penyematan, memungkinkan penanganan data vektorisasi secara efisien. Hal ini sangat berguna untuk tugas-tugas retrieval-augmented generation (RAG), di mana informasi yang relevan diambil dari basis pengetahuan untuk meningkatkan respons AI.
- Toolbox Fitur: Pustaka mencakup seperangkat alat lengkap untuk templating cepat, manajemen memori, dan penguraian keluaran. Alat-alat ini membantu membangun aplikasi AI yang kompleks dengan menyediakan abstraksi tingkat tinggi dan komponen siap pakai.
- Integrasi Spring Boot: LangChain4J mendukung Spring Boot, sehingga memudahkan pengembang untuk membuat aplikasi AI yang kuat dan terukur. Integrasi ini memungkinkan penggabungan layanan AI secara lancar ke dalam aplikasi Spring Boot, memanfaatkan fitur injeksi ketergantungan dan manajemen konfigurasi Spring.
- Contoh dan Dokumentasi: LangChain4J menawarkan dokumentasi dan contoh ekstensif, memandu pengembang melalui berbagai kasus penggunaan dan menunjukkan cara menerapkan fungsionalitas yang didukung AI dalam aplikasi mereka.
Studi Kasus: Aplikasi Perawatan Kesehatan - Layanan Mikro Diagnosis yang Diaktifkan Gen Ai
Contoh Gen AI: Perbandingan 8 LLM (3 berbasis Cloud & 5 Lokal) pada Fitur Perusahaan
Perbandingan berikut didasarkan pada fitur yang tersedia di LangChain4J API (yang didukung oleh OpenAI ChatGPT). Fitur-fitur ini penting untuk Pengembangan Aplikasi Perusahaan berbasis Gen AI.
# | Contoh | GPT 4o | Meta Llama3 | Mistral | Microsoft Phi-3 | Google Permata | TII Falcon 2 | Claude 3 | Gemini 1.5 |
---|
1. | Halo Dunia | ? | ? | ? | ? | ? | ? | ? | ? |
2. | Dunia yang Kompleks | ? | ? | ? M1 | ? | ? | ? | ? | ? |
3. | Data Khusus | ? | ? | ? | ? | ? | ? F1 | ? | ? |
4. | Pembuatan Gambar | ? | ? L1 | ? M2 | ? P1 | ? | ? F2 | ? | ? |
5. | Templat Cepat | ? | ? | ? M3 | ? | ? | ? | ? | ? |
6. | Peralatan | ? | ? L2 | ? M4 | ? hal2 | ? G1 | ? F3 | ? | ? G1 |
7. | Memori Obrolan | ? | ? | ? | ? hal3 | ? G2 | ? | ? | ? G2 |
8. | Beberapa Tembakan | ? | ? | ? M5 | ? | ? | ? | ? | ? G3 |
9. | Penerjemah Bahasa | ? | ? | ? M6 | ? | ? | ? | ? | ? |
10. | Penganalisis Sentimen | ? | ? | ? | ? | ? | ? | ? | ? |
11. | Ekstraktor Data | ? O1 | ? L3 | ? M7 | ? hal4 | ? G3 | ? F4 | ? | ? G4 |
12. | Toko Persisten | ? | ? | ? M8 | ? hal5 | ? G4 | ? | ? | ? |
Retrieval Augmented Generation (RAG) Contoh 8 LLM
# | Contoh | GPT 4o | Meta Llama3 | Mistral | Microsoft Phi-3 | Google Permata | TII Falcon 2 | Claude 3 | Gemini 1.5 |
---|
51. | Sederhana | ? | ? | ? | ? | ? | ? | ? | ? |
52. | Segmen | ? | ? | ? | ? | ? | ? | ? | ? |
53. | Transformator Kueri | ? | ? | ? | ? | ? | ? | ? | ? |
54. | Router Kueri | ? | ? L4 | ? M9 | ? hal6 | ? G4 | ? F5 | ? | ? G5 |
55. | Pemeringkatan Ulang | ? | ? | ? | ? | ? | ? | ? | ? |
56. | MetaData | ? | ? | ? | ? | ? | ? | ? | ? |
57. | Beberapa Pengambil Konten | ? | ? | ? | ? | ? | ? | ? | ? |
58. | Melewatkan Pengambilan Konten | ? | ? | ? | ? | ? | ? | ? | ? |
59. | Aplikasi Perawatan Kesehatan | ? | ? | ? | ? | ? | ? | ? | ? |
Peringkat LLM Teratas berdasarkan Fitur Perusahaan
# | Pangkat | Perusahaan | LLM | Skor | Kategori |
---|
1 | 1 | Antropis | Claude 3 Haiku | 21/21 | Awan |
2 | 2 | Buka AI | Obrolan GPT 4o | 20/21 | Awan |
3 | 3 | Meta | Lama 3 | 17/21 | Lokal |
4 | 4 | TII | elang 2 | 16/21 | Lokal |
5 | 4 | Google | Gemini 1.5 Pro | 16/21 | Awan |
6 | 4 | Google | permata | 16/21 | Lokal |
7 | 5 | Microsoft | PHI 3 | 15/21 | Lokal |
8 | 6 | Mistral | Mistral | 21/12 | Lokal |
Catatan: LLM berbasis cloud akan memiliki lebih dari 500 miliar parameter yang didukung sedangkan LLM lokal sebagian besar didasarkan pada 8 Miliar parameter.
Lihat detail lebih lanjut tentang Skor Pengujian
Instal LLM Lokal
Untuk Menginstal LLM Lokal menggunakan Ollama
- Meta Llama3
- Google Permata
- Microsoft PHI-3
- TII Falcon 2
- Mistral
- Penyihir Matematika
Lihat panduan instalasi.
Dapatkan Kunci untuk Menguji Cloud LLM
Daftar untuk mendapatkan Kunci API
- Open AI - ChatGPT (Kunci API dapat dibuat di sini: https://platform.openai.com/api-keys)
- Anthropic - Claude 3 (kunci API dapat dibuat di sini: https://console.anthropic.com/settings/keys)
- Google Cloud - (https://console.cloud.google.com/ - Periksa AiConstants.java untuk Petunjuknya)
- Cohere - (kunci API di sini: https://dashboard.cohere.com/welcome/register)
- HuggingFace - (kunci API di sini: https://huggingface.co/settings/tokens)
- Cepat - (kunci API di sini: https://rapidapi.com/judge0-official/api/judge0-ce)
Atur Kunci ini di lingkungan Anda
// API Keys -----------------------------------------------------------------------
// OpenAI API key here: https://platform.openai.com/account/api-keys
public static final String OPENAI_API_KEY = System.getenv("OPENAI_API_KEY");
// Cohere API key here: // https://dashboard.cohere.com/welcome/register
public static final String COHERE_API_KEY = System.getenv("COHERE_API_KEY");
// Anthropic API key here:: https://console.anthropic.com/settings/keys
public static final String ANTHROPIC_API_KEY = System.getenv("ANTHROPIC_API_KEY");
// HuggingFace API key here: https://huggingface.co/settings/tokens
public static final String HF_API_KEY = System.getenv("HF_API_KEY");
// Judge0 RapidAPI key here: https://rapidapi.com/judge0-official/api/judge0-ce
public static final String RAPID_API_KEY = System.getenv("RAPID_API_KEY");
Gen AI - Struktur Paket Kode
Paket io.fusion.air.microservice.ai.genai
- pengontrol (Titik Akhir Istirahat untuk menguji contoh)
- inti
- asisten (Berdasarkan LangChain4J AiService)
- model (Model Data yang digunakan dalam kode)
- prompt (Permintaan Terstruktur untuk memiliki keluaran spesifik)
- layanan (Logika Bisnis Khusus LLM digunakan kembali di semua contoh.)
- alat (Fungsi dipanggil berdasarkan pencarian LLM)
- contoh (Claude 3, Falcon 2, GPT 4o, Gemini, Gemma, Llama3, Mistral, Phi-3, Wizard Math)
- utils (Kode Generik untuk membuat Model dan Konfigurasi ChatLanguage, Kunci API, dan Pelari Konsol)
Struktur Kode
Tes Cepat setelah memulai Aplikasi SpringBoot
Analisis Sentimen menggunakan ChatGPT 4o
Moderasi Konten menggunakan ChatGPT 4o
ChatBot menggunakan RAG (Data Khusus) - Studi Kasus: Layanan Penyewaan Mobil
Arsitektur RAG
Retrieval-Augmented Generation (RAG) meningkatkan keluaran model bahasa besar (LLM) dengan menggabungkan basis pengetahuan eksternal yang otoritatif. Meskipun LLM dilatih pada kumpulan data yang sangat besar dan memanfaatkan miliaran parameter untuk menghasilkan respons terhadap tugas-tugas seperti menjawab pertanyaan, terjemahan bahasa, dan penyelesaian teks, RAG mengoptimalkan keluaran ini dengan merujuk pada sumber informasi spesifik dan terkini di luar data pelatihan model. Proses ini secara signifikan memperluas kemampuan LLM untuk memenuhi domain khusus atau pengetahuan internal organisasi tanpa memerlukan pelatihan ulang model. Oleh karena itu, RAG memberikan solusi hemat biaya untuk memastikan bahwa konten yang dihasilkan tetap relevan, akurat, dan sesuai konteks.
Model Bahasa Besar (LLM) menghadapi beberapa tantangan:
- Mereka mungkin memberikan informasi palsu ketika mereka tidak mempunyai jawaban yang benar.
- Mereka dapat memberikan informasi yang sudah ketinggalan zaman atau umum ketika pengguna mengharapkan tanggapan yang spesifik dan terkini.
- Mereka mungkin menghasilkan tanggapan berdasarkan sumber yang tidak berwenang.
- Mereka dapat menghasilkan tanggapan yang tidak akurat karena kebingungan terminologi, dimana sumber pelatihan yang berbeda menggunakan istilah yang sama untuk menjelaskan konsep yang berbeda.
Retrieval-Augmented Generation (RAG) mengatasi beberapa tantangan yang terkait dengan LLM dengan mengarahkan model untuk mengambil informasi yang relevan dari sumber pengetahuan yang berwenang dan telah ditentukan sebelumnya. Pendekatan ini memungkinkan organisasi untuk melakukan kontrol lebih besar terhadap konten yang dihasilkan oleh model, memastikan keakuratan dan relevansi. Selain itu, ini memberikan pengguna wawasan yang lebih jelas tentang sumber dan proses yang digunakan LLM untuk merumuskan tanggapannya.
Percakapan menggunakan LLM dengan Perjanjian Layanan Sewa Mobil (Data Khusus).
Ekstraksi Data menggunakan ChatGPT 4o
LangChain4J beroperasi pada dua tingkat abstraksi:
- Tingkat rendah. Pada tingkat ini, Anda memiliki kebebasan dan akses paling besar ke semua komponen tingkat rendah seperti ChatLanguageModel, UserMessage, AiMessage, EmbeddingStore, Embedding, dll. Ini adalah "primitif" dari aplikasi yang didukung LLM. Anda memiliki kendali penuh atas cara menggabungkannya, tetapi Anda perlu menulis lebih banyak kode lem.
- Tingkat tinggi. Pada tingkat ini, Anda berinteraksi dengan LLM menggunakan API tingkat tinggi seperti AiServices dan Chains, yang menyembunyikan semua kompleksitas dan boilerplate dari Anda. Anda masih memiliki fleksibilitas untuk menyesuaikan dan menyempurnakan perilaku, namun hal ini dilakukan secara deklaratif.
Baca selengkapnya... Pengenalan LangChain4J
Struktur Paket
Prasyarat
- SpringBoot 3.2.4
- Jawa 22
- Jakarta EE 10 (jakarta.servlet. , jakarta.persistence. , javax.validation.*)
- Basis Data PostgreSQL 14
- Ollama 0.1.38
Secara default aplikasi akan menggunakan H2 In-Memory Database. Tidak diperlukan pengaturan Basis Data untuk ini.
Langkah 1.1 - Memulai
- git clone https://github.com/arafkarsh/ms-springboot-324-ai.git
- cd ms-springboot-324-ai
- basis data cd
- Baca README.md untuk mengatur database Anda (Database PostgreSQL)
- Secara Default (Mode Dev) Aplikasi akan menggunakan Database H2 Dalam Memori
Langkah 1.2 - Kompilasi (Setelah kode Anda siap)
1.2.1 Menyusun Kode
Jalankan "kompilasi" dari ms-springboot-324-ai
- kompilasi ATAU ./kompilasi (Berjalan di Linux dan Mac OS)
- mvn bersih; mvn -e paket; (Semua Platform)
- Gunakan opsi Kompilasi IDE
1.2.2 Apa yang akan dilakukan oleh Skrip "Kompilasi".
- Bersihkan folder target
- Hasilkan build no. dan tanggal pembuatan (mengambil cadangan properti aplikasi)
- buat toples lemak SpringBoot hasil akhir dan toples tipis pakar
- salin file jar (dan dependensi) ke folder src/docker
- salin file application.properties ke folder saat ini dan folder src/docker
Pada Langkah 1.2.2 file application.properties akan dibuat secara otomatis oleh skrip "kompilasi". Ini adalah langkah penting. Tanpa file application.properties yang dihasilkan, layanan TIDAK akan berjalan. Ada file properti aplikasi yang dibuat sebelumnya.
Langkah 1.3 - Jalankan
1.3.1 Memulai Layanan
- run OR ./run (Berjalan di Linux atau Mac OS)
- jalankan prod (untuk menjalankan profil produksi, defaultnya adalah profil dev)
- mvn spring-boot:run (Semua Platform - Database Dalam Memori Profile dev H2)
- mvn spring-boot:run -Dspring-boot.run.profiles=prod (Semua platform - Profil prod PostgreSQL DB)
1.3.2 Menguji Layanan
- test OR ./test (Berjalan di Linux atau Mac OS)
- Jalankan perintah curl secara langsung (dari skrip pengujian)
Model Obrolan
- OpenAI (Contoh tersedia)
- Ollama - jalankan model AI di mesin lokal Anda (Contoh tersedia)
- AI Terbuka Azure
- Batuan Dasar Amazon
- Perintah Cohere
- Jurassic-2 Lab AI21
- Llama Meta 2
- Titan Amazon
- Google Vertex AI Palm
- Google Gemini
- HuggingFace - akses ribuan model, termasuk model dari Meta seperti Llama2
- MistralAI
Model Teks-ke-gambar
- OpenAI dengan DALL-E (Contoh tersedia)
- StabilitasAI
Model Transkripsi (audio ke teks).
Menanamkan Model
- OpenAI
- Ollama
- Azure OpenAI
- ONNX
- PostgresML
- Batuan Dasar Kohere
- Batuan Dasar Titan
- Google VertexAI
- AI Mistal
Vector Store API menyediakan portabilitas di berbagai penyedia, menampilkan API pemfilteran metadata mirip SQL baru yang menjaga portabilitas.
Basis Data Vektor
- Pencarian Vektor Azure
- Kroma
- Milvus
- Neo4j
- PostgreSQL/PGVector
- kerucut pinus
- ulang
- lemah
- Qdrant
Model yang didukung adalah
- OpenAI
- Azure OpenAI
- VertexAI
- AI Mistral
Lihat Contoh Operasi CRUD
- Menyiapkan Tukang Pos dengan Titik Akhir REST untuk Pengujian
- Contoh KRUD
- Contoh Token JWT
Periksa CRUD_Examples.md
(C) Hak Cipta 2024 : Lisensi Apache 2 : Penulis: Araf Karsh Hamid
* Berlisensi di bawah Lisensi Apache, Versi 2.0 ("Lisensi");
* Anda tidak boleh menggunakan file ini kecuali sesuai dengan Lisensi.
* Anda dapat memperoleh salinan Lisensi di
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Kecuali diwajibkan oleh hukum yang berlaku atau disetujui secara tertulis, perangkat lunak
* didistribusikan di bawah Lisensi didistribusikan berdasarkan DASAR "APA ADANYA",
* TANPA JAMINAN ATAU KETENTUAN APAPUN, baik tersurat maupun tersirat.
* Lihat Lisensi untuk bahasa tertentu yang mengatur izin dan
* batasan berdasarkan Lisensi.