Membangun asisten AI email bisnis dengan Gemma

Menangani pertanyaan pelanggan, termasuk email, adalah bagian yang diperlukan dalam menjalankan banyak bisnis, tetapi hal ini dapat dengan cepat menjadi merepotkan. Dengan sedikit upaya, model kecerdasan buatan (AI) seperti Gemma dapat membantu mempermudah hal ini.

Setiap bisnis menangani pertanyaan seperti email dengan cara yang sedikit berbeda, jadi penting untuk dapat menyesuaikan teknologi seperti AI generatif dengan kebutuhan bisnis Anda. Project ini menangani masalah spesifik terkait ekstraksi informasi pesanan dari email ke toko roti menjadi data terstruktur, sehingga dapat dengan cepat ditambahkan ke sistem penanganan pesanan. Dengan menggunakan 10 hingga 20 contoh pertanyaan dan output yang Anda inginkan, Anda dapat menyesuaikan model Gemma untuk memproses email dari pelanggan, membantu Anda merespons dengan cepat, dan berintegrasi dengan sistem bisnis yang ada. Project ini dibuat sebagai pola aplikasi AI yang dapat Anda perluas dan sesuaikan untuk mendapatkan nilai dari model Gemma untuk bisnis Anda.

Untuk video ringkasan proyek dan cara memperluasnya, termasuk wawasan dari pembuatnya, lihat Asisten AI Email Bisnis Video Membangun dengan AI Google. Anda juga dapat meninjau kode untuk project ini di repositori kode Gemma Cookbook. Jika tidak, Anda dapat mulai memperluas project menggunakan petunjuk berikut.

Ringkasan

Tutorial ini memandu Anda menyiapkan, menjalankan, dan memperluas aplikasi asisten email bisnis yang dibuat dengan Gemma, Python, dan Flask. Project ini menyediakan antarmuka pengguna web dasar yang dapat Anda ubah agar sesuai dengan kebutuhan Anda. Aplikasi ini dibuat untuk mengekstrak data dari email pelanggan ke dalam struktur untuk toko roti fiktif. Anda dapat menggunakan pola aplikasi ini untuk tugas bisnis apa pun yang menggunakan input teks dan output teks.

Screenshot antarmuka pengguna aplikasi web

Gambar 1. Antarmuka pengguna project untuk memproses pertanyaan email toko roti

Persyaratan hardware

Jalankan proses penyesuaian ini di komputer dengan unit pemrosesan grafis (GPU) atau Tensor processing unit (TPU), dan memori GPU atau TPU yang cukup untuk menyimpan model yang ada, ditambah data tuning. Untuk menjalankan konfigurasi tuning dalam , Anda membutuhkan memori GPU sekitar 16 GB, jumlah memori RAM, dan kapasitas disk minimum 50 GB.

Anda dapat menjalankan bagian penyesuaian model Gemma dari tutorial ini menggunakan Colab dengan runtime T4 GPU. Jika Anda mem-build project ini di instance VM Google Cloud, konfigurasi instance dengan mengikuti persyaratan berikut:

  • Hardware GPU: NVIDIA T4 diperlukan untuk menjalankan project ini (NVIDIA Direkomendasikan L4 atau lebih tinggi)
  • Operating System: Pilih opsi Deep Learning on Linux, khususnya Deep Learning VM dengan CUDA 12.3 M124 dengan Driver perangkat lunak GPU.
  • Ukuran boot disk: Sediakan ruang disk minimal 50 GB untuk data, model, dan software pendukung Anda.

Penyiapan project

Petunjuk ini akan memandu Anda menyiapkan project ini untuk pengembangan dan pengujian. Langkah-langkah pengaturan umumnya termasuk menginstal perangkat lunak prasyarat, meng-clone project dari repositori kode, menyetel beberapa lingkungan variabel, menginstal library Python, dan menguji aplikasi web.

Menginstal dan mengonfigurasi

Project ini menggunakan Python 3 dan Lingkungan Virtual (venv) untuk mengelola paket dan menjalankan aplikasi. Petunjuk penginstalan berikut ditujukan untuk mesin host Linux.

Untuk menginstal software yang diperlukan:

  • Instal Python 3 dan paket lingkungan virtual venv untuk Python:

    sudo apt update
    sudo apt install git pip python3-venv
    

Meng-clone project

Download kode project ke komputer pengembangan Anda. Anda memerlukan software kontrol sumber git untuk mengambil kode sumber project.

Untuk mendownload kode project:

  1. Clone repositori git menggunakan perintah berikut:

    git clone https://github.com/google-gemini/gemma-cookbook.git
    
  2. Secara opsional, konfigurasikan repositori git lokal Anda untuk menggunakan checkout sparse, jadi Anda hanya memiliki file untuk project ini:

    cd gemma-cookbook/
    git sparse-checkout set Demos/business-email-assistant/
    git sparse-checkout init --cone
    

Menginstal library Python

Instal library Python dengan lingkungan virtual Python venv yang diaktifkan untuk mengelola paket dan dependensi Python. Pastikan Anda mengaktifkan lingkungan virtual Python sebelum menginstal library Python dengan penginstal pip. Untuk informasi selengkapnya tentang penggunaan lingkungan virtual Python, lihat Dokumentasi Python venv.

Untuk menginstal library Python:

  1. Di jendela terminal, buka direktori business-email-assistant:

    cd Demos/business-email-assistant/
    
  2. Konfigurasikan dan aktifkan lingkungan virtual Python (venv) untuk project ini:

    python3 -m venv venv
    source venv/bin/activate
    
  3. Instal library Python yang diperlukan untuk project ini menggunakan Skrip setup_python:

    ./setup_python.sh
    

Menetapkan variabel lingkungan

Project ini memerlukan beberapa variabel lingkungan untuk dijalankan, termasuk nama pengguna Kaggle dan token Kaggle API. Anda harus memiliki Kaggle dan meminta akses ke model Gemma agar dapat mendownloadnya. Untuk project ini, Anda menambahkan Nama Pengguna Kaggle dan token Kaggle API ke dua file .env, yang masing-masing dibaca oleh aplikasi web dan program penyesuaian.

Untuk menetapkan variabel lingkungan:

  1. Dapatkan nama pengguna Kaggle Anda dan kunci token Anda dengan mengikuti instruksi di dokumentasi Kaggle.
  2. Dapatkan akses ke model Gemma dengan mengikuti petunjuk Mendapatkan akses ke Gemma di halaman Penyiapan Gemma.
  3. Buat file variabel lingkungan untuk project, dengan membuat File teks .env di setiap lokasi berikut dalam clone project Anda:
    email-processing-webapp/.env
    model-tuning/.env
    
  4. Setelah membuat file teks .env, tambahkan setelan berikut ke kedua file:

    KAGGLE_USERNAME=<YOUR_KAGGLE_USERNAME_HERE>
    KAGGLE_KEY=<YOUR_KAGGLE_KEY_HERE>
    

Menjalankan dan menguji aplikasi

Setelah Anda menyelesaikan penginstalan dan konfigurasi project, jalankan aplikasi web untuk mengonfirmasi bahwa Anda telah mengonfigurasinya dengan benar. Anda harus melakukannya sebagai pemeriksaan dasar sebelum mengedit project untuk penggunaan Anda sendiri.

Untuk menjalankan dan menguji project:

  1. Di jendela terminal, buka direktori email-processing-webapp:

    cd business-email-assistant/email-processing-webapp/
    
  2. Jalankan aplikasi menggunakan skrip run_app:

    ./run_app.sh
    
  3. Setelah memulai aplikasi web, kode program akan mencantumkan URL tempat Anda dapat menjelajahi dan menguji. Biasanya, alamat ini adalah:

    http://127.0.0.1:5000/
    
  4. Di antarmuka web, tekan tombol Dapatkan data di bawah input pertama kolom untuk menghasilkan respons dari model.

Respons pertama dari model setelah Anda menjalankan aplikasi memerlukan waktu lebih lama karena harus menyelesaikan langkah-langkah inisialisasi pada generasi pertama yang dijalankan. Permintaan dan pembuatan perintah berikutnya pada aplikasi web yang sudah berjalan selesai dalam waktu lebih singkat.

Memperluas aplikasi

Setelah menjalankan aplikasi, Anda dapat memperluasnya dengan memodifikasi pengguna antarmuka dan logika bisnis agar dapat berfungsi untuk tugas yang relevan bagi Anda atau bisnis Anda. Anda juga dapat mengubah perilaku model Gemma menggunakan kode aplikasi dengan mengubah komponen prompt yang dikirim aplikasi model AI generatif.

Aplikasi memberikan petunjuk ke model beserta data input dari pengguna, yaitu perintah lengkap model. Anda dapat mengubah petunjuk ini untuk mengubah perilaku model, seperti menentukan nama parameter dan struktur JSON yang akan dihasilkan. Cara yang lebih sederhana untuk mengubah perilaku model untuk memberikan petunjuk atau panduan tambahan bagi seperti menetapkan bahwa balasan yang dihasilkan tidak boleh berisi respons Pemformatan Markdown.

Untuk mengubah petunjuk dialog:

  1. Dalam proyek pengembangan, buka File kode business-email-assistant/email-processing-webapp/app.py.
  2. Dalam kode app.py, tambahkan petunjuk tambahan ke fungsi get_prompt()::

    def get_prompt():
      return """
        Extract the relevant details of this request and return them in
        JSON code, with no additional markdown formatting:\n"""
    

Contoh ini menambahkan frasa "tanpa pemformatan markdown tambahan" ke petunjuk.

Memberikan petunjuk perintah tambahan dapat sangat memengaruhi output yang dihasilkan, dan memerlukan lebih sedikit upaya untuk diterapkan. Anda harus coba ini terlebih dahulu untuk melihat apakah Anda bisa mendapatkan perilaku yang diinginkan dari model tersebut. Namun, penggunaan petunjuk perintah untuk mengubah perilaku model Gemma memiliki batas. Secara khusus, batas token input keseluruhan model, yang 8.192 token untuk Gemma 2, mengharuskan Anda menyeimbangkan petunjuk petunjuk yang mendetail dengan ukuran data baru yang Anda berikan sehingga Anda tidak melebihi batas tersebut.

Menyesuaikan model

Melakukan fine-tuning model Gemma adalah cara yang direkomendasikan untuk membuatnya merespons tugas-tugas tertentu dengan lebih andal. Secara khusus, jika Anda ingin model membuat JSON dengan struktur tertentu, termasuk parameter yang diberi nama khusus, Anda harus mempertimbangkan untuk menyesuaikan model untuk perilaku tersebut. Bergantung pada tugas yang Anda inginkan untuk diselesaikan model, Anda dapat mencapai tujuan fungsionalitas dengan 10 hingga 20 contoh. Bagian tutorial ini menjelaskan cara menyiapkan dan menjalankan penyesuaian pada model Gemma untuk tugas tertentu.

Petunjuk berikut menjelaskan cara melakukan operasi penyesuaian di lingkungan VM. Namun, Anda juga dapat melakukan operasi penyesuaian ini menggunakan notebook Colab terkait untuk project ini.

Persyaratan hardware

Persyaratan komputasi untuk fine-tuning sama dengan persyaratan hardware untuk keseluruhan project. Anda dapat menjalankan operasi penyesuaian di lingkungan Colab dengan runtime GPU T4 jika Anda membatasi token input menjadi 256 dan ukuran batch menjadi 1.

Menyiapkan data

Sebelum mulai men-tuning model Gemma, Anda harus menyiapkan data untuk tuning. Saat menyesuaikan model untuk tugas tertentu, Anda memerlukan serangkaian contoh permintaan dan respons. Contoh berikut akan menampilkan teks permintaan, tanpa keterangan petunjuk, dan teks respons yang diharapkan. Untuk memulai, Anda harus mempersiapkan satu set data dengan sekitar 10 contoh. Contoh-contoh ini harus mewakili jenis permintaan dan respons yang ideal. Pastikan permintaan dan respons tidak berulang, karena hal itu dapat menyebabkan respons model menjadi berulang dan tidak menyesuaikan dengan tepat terhadap variasi permintaan. Jika Anda menyesuaikan model untuk menghasilkan format data terstruktur, pastikan semua respons yang diberikan benar-benar sesuai dengan format output data yang Anda inginkan. Hal berikut tabel ini menunjukkan beberapa contoh {i>record<i} dari {i>dataset<i} contoh kode ini:

Permintaan Respons
Halo Indian Bakery Central,\nApakah Anda memiliki 10 pendas, dan tiga puluh bundi ladoos? Apakah Anda juga menjual frosting vanila dan kue rasa cokelat. Saya mencari ukuran 6 inci { &quot;type&quot;: &quot;inquiry&quot;, "item": [ { &quot;name&quot;: &quot;pendas&quot;, "quantity": 10 }, { &quot;name&quot;: &quot;bundi ladoos&quot;, "quantity": 30 }, { "name": "kue", &quot;filling&quot;: null, "frosting": "vanila", "flavor": "cokelat", "size": "6 inci" } ] }
Saya melihat bisnis Anda di Google Maps. Apa Anda menjual jellabi dan gulab jamun? { &quot;type&quot;: &quot;inquiry&quot;, "item": [ { &quot;name&quot;: &quot;jellabi&quot;, &quot;quantity&quot;: null }, { &quot;name&quot;: &quot;gulab jamun&quot;, &quot;quantity&quot;: null } ] }

Tabel 1. Listingan sebagian set data penyesuaian untuk data email toko roti ekstraktor.

Format data dan pemuatan

Anda dapat menyimpan data penyesuaian dalam format apa pun yang praktis, termasuk data database, file JSON, CSV, atau file teks biasa, selama Anda memiliki cara untuk mengambil data dengan kode Python. Project ini membaca file JSON dari direktori data ke dalam array objek kamus. Dalam contoh program balik ini, set data tuning dimuat dalam Modul model-tuning/main.py menggunakan fungsi prepare_tuning_dataset():

def prepare_tuning_dataset():
    # collect data from JSON files
    prompt_data = read_json_files_to_dicts("./data")
    ...

Seperti yang disebutkan sebelumnya, Anda dapat menyimpan set data dalam format yang nyaman, selama Anda dapat mengambil permintaan dengan respons terkait dan menyusunnya menjadi string teks yang digunakan sebagai data penyesuaian.

Menyusun kumpulan data tuning

Untuk proses penyesuaian yang sebenarnya, program ini menggabungkan setiap permintaan dan respons menjadi satu string dengan petunjuk perintah dan konten respons. Program penyesuaian kemudian membuat token string untuk digunakan oleh model. Anda bisa melihat kode untuk menyusun kumpulan data tuning di fungsi prepare_tuning_dataset() modul model-tuning/main.py, sebagai berikut:

def prepare_tuning_dataset():
    ...
    # prepare data for tuning
    tuning_dataset = []
    template = "{instruction}\n{response}"

    for prompt in prompt_data:
        tuning_dataset.append(template.format(instruction=prompt["prompt"],
                                              response=prompt["response"]))

    return tuning_dataset

Fungsi ini mengambil data sebagai inputnya dan memformatnya dengan menambahkan pemisah baris antara petunjuk dan respons.

Membuat bobot model

Setelah menyiapkan dan memuat data tuning, Anda bisa menjalankan program ini. Proses penyesuaian untuk aplikasi contoh ini menggunakan Keras NLP untuk men-tuning model dengan Low Rank Adaptation atau teknik LoRA. untuk membuat bobot model baru. Dibandingkan dengan tuning presisi penuh, menggunakan LoRA lebih lebih hemat-memori karena memperkirakan perubahan bobot model. Anda kemudian dapat menempatkan perkiraan bobot ini ke atas bobot model untuk mengubah perilaku model.

Untuk melakukan run tuning dan menghitung bobot baru:

  1. Di jendela terminal, buka direktori model-tuning/.

    cd business-email-assistant/model-tuning/
    
  2. Jalankan proses penyesuaian menggunakan skrip tune_model:

    ./tune_model.sh
    

Proses penyesuaian memerlukan waktu beberapa menit, bergantung pada resource komputasi yang tersedia. Setelah berhasil diselesaikan, program tuning akan menulis *.h5 baru file bobot dalam direktori model-tuning/weights dengan format berikut:

gemma2-2b_inquiry_tuned_4_epoch##.lora.h5

Pemecahan masalah

Jika penyesuaian tidak berhasil diselesaikan, ada dua kemungkinan alasan:

  • Kehabisan memori atau resource habis: Error ini terjadi saat proses tuning meminta memori yang melebihi memori GPU atau CPU yang tersedia memori. Pastikan Anda tidak menjalankan aplikasi web saat proses penyesuaian berjalan. Jika Anda menyesuaikan pada perangkat dengan memori GPU 16 GB, pastikan token_limit Anda disetel ke 256 dan batch_size ditetapkan ke 1.
  • Driver GPU tidak diinstal atau tidak kompatibel dengan JAX: Proses pengaktifan memerlukan penginstalan driver hardware di perangkat komputasi yang kompatibel dengan versi library JAX. Untuk mengetahui detail selengkapnya, lihat dokumentasi penginstalan JAX.

Men-deploy model yang disesuaikan

Proses tuning menghasilkan beberapa bobot berdasarkan data tuning dan jumlah total epoch yang ditetapkan dalam aplikasi tuning. Secara default, penyesuaian menghasilkan 3 file bobot model, satu untuk setiap epoch tuning. Masing-masing epoch penyesuaian berturut-turut menghasilkan bobot yang mereproduksi hasil data tuning. Anda dapat melihat rasio akurasi untuk setiap epoch dalam output terminal proses penyesuaian, sebagai berikut:

...
8/8 ━━━━━━━━━━━━━━━━━━━━ 121s 195ms/step - loss: 0.5432 - sparse_categorical_accuracy: 0.5982
Epoch 2/3
8/8 ━━━━━━━━━━━━━━━━━━━━ 2s 194ms/step - loss: 0.3320 - sparse_categorical_accuracy: 0.6966
Epoch 3/3
8/8 ━━━━━━━━━━━━━━━━━━━━ 2s 192ms/step - loss: 0.2135 - sparse_categorical_accuracy: 0.7848

Meskipun Anda ingin tingkat akurasi yang relatif tinggi, sekitar 0,80, Anda tidak perlu menginginkan laju yang terlalu tinggi, atau sangat mendekati 1,00, bobot yang mendekati overfitting data tuning. Ketika hal itu terjadi, tidak berperforma baik pada permintaan yang berbeda secara signifikan dengan contoh tuning. Secara default, skrip deployment memilih epoch 3 bobot, yang biasanya memiliki tingkat akurasi sekitar 0,80.

Untuk men-deploy bobot yang dihasilkan ke aplikasi web:

  1. Di jendela terminal, buka direktori model-tuning:

    cd business-email-assistant/model-tuning/
    
  2. Jalankan proses tuning menggunakan skrip deploy_weights:

    ./deploy_weights.sh
    

Setelah menjalankan skrip ini, Anda akan melihat file *.h5 baru di Direktori email-processing-webapp/weights/.

Menguji model baru

Setelah Anda men-deploy bobot baru ke aplikasi, saatnya untuk mencoba model yang baru di-tuning. Anda dapat melakukannya dengan menjalankan ulang aplikasi web dan menghasilkan respons.

Untuk menjalankan dan menguji project:

  1. Di jendela terminal, buka direktori email-processing-webapp:

    cd business-email-assistant/email-processing-webapp/
    
  2. Jalankan aplikasi menggunakan skrip run_app:

    ./run_app.sh
    
  3. Setelah memulai aplikasi web, kode program akan mencantumkan URL tempat Anda dapat menjelajahi dan menguji, biasanya alamat ini adalah:

    http://127.0.0.1:5000/
    
  4. Di antarmuka web, tekan tombol Dapatkan data di bawah input pertama kolom untuk menghasilkan respons dari model.

Sekarang Anda telah menyesuaikan dan men-deploy model Gemma dalam aplikasi. Bereksperimen dengan aplikasi dan mencoba menentukan batas pembuatan model yang di-tuning kemampuan untuk tugas Anda. Jika Anda menemukan skenario saat model tidak berperforma baik, pertimbangkan untuk menambahkan beberapa permintaan tersebut ke daftar data contoh penyesuaian dengan menambahkan permintaan dan memberikan respons yang ideal. Kemudian, jalankan ulang proses penyesuaian, deploy ulang bobot baru, dan uji output.

Referensi lainnya

Untuk mengetahui informasi selengkapnya tentang project ini, lihat repositori kode Gemma Cookbook. Jika Anda memerlukan bantuan untuk membuat aplikasi atau ingin berkolaborasi dengan developer lainnya, lihat Perselisihan Komunitas Google Developers server tertentu. Untuk project Build with Google AI lainnya, lihat playlist video.