Bangun agen eksplorasi data AI dengan Gemini

Bangun antarmuka chat yang didukung kecerdasan buatan (AI) untuk antarmuka pemrograman sistem bisnis dan biarkan rekan kerja mengajukan pertanyaan tentang data bisnis Anda. Melakukan analisis dan pelaporan data organisasi sangat penting untuk meningkatkan cara Anda melakukan bisnis. Menemukan masalah, menemukan tren, dan menyelidiki hasil semuanya dapat dilakukan dengan data yang tepat, tetapi sebagai developer, membantu rekan yang tidak melakukan coding menemukan data yang tepat dapat menjadi tantangan.

Project SQL Talk adalah aplikasi open source yang menggunakan teknologi AI generatif untuk menjawab pertanyaan tentang data bisnis. Project ini menggunakan Gemini API dan fitur Function Calling untuk mentransformasi pertanyaan data bisnis menjadi kueri SQL dan panggilan API, lalu mengubah hasilnya ke bahasa yang sederhana. Anda dapat menggunakan project ini sebagai titik awal untuk membangun agen data bagi bisnis Anda sendiri, dan membantu rekan kerja mendapatkan jawaban tanpa harus menulis banyak kode sekali pakai.

Untuk video ringkasan project dan cara memperluasnya, termasuk insight dari orang-orang yang membuatnya, lihat Agen Data AI | Membangun dengan AI Google. Jika tidak, Anda dapat mulai memperluas project menggunakan petunjuk berikut.

Antarmuka pengguna aplikasi project SQL Talk

Gambar 1. Antarmuka pengguna aplikasi project SQL Talk.

Penyiapan project

Petunjuk ini akan memandu Anda menyiapkan project SQL Talk untuk pengembangan dan pengujian. Langkah-langkah umumnya adalah membuat project SQL Talk, menyiapkan project pengembangan Google Cloud Shell Editor, mendapatkan Project ID Google Cloud, dan menggunakan skrip untuk mengonfigurasi setelan project. Petunjuk ini menjelaskan cara menyiapkan project menggunakan Cloud Shell Editor, yang membuat penyiapan, menjalankan, dan mengupdate project menjadi cepat dan mudah.

Membuat instance Cloud Shell untuk project

Anda dapat menyiapkan project SQL Talk dengan meng-clone repositori project ke instance Cloud Shell. Proses ini menyiapkan instance lingkungan pengembangan virtual di dalam infrastruktur Google Cloud untuk project dan meng-clone repositori kode ke lingkungan virtual tersebut.

Untuk membuat instance Cloud Shell untuk SQL Talk:

Link ini menyiapkan instance Google Cloud Shell Editor dan meng-clone repositori untuk SQL Talk ke dalam instance.

Google Cloud Shell Editor yang menampilkan kode project SQL Talk

Gambar 2. Project SQL Talk di-clone ke lingkungan pengembangan Google Cloud Shell Editor.

Mendapatkan ID project Cloud

Project SQL Talk menggunakan project ID Google Cloud untuk terhubung ke layanan Google Cloud, termasuk model Gemini. Anda perlu mengonfigurasi project ID di dalam Cloud Shell Editor agar aplikasi dapat terhubung dengan layanan ini.

Untuk menghubungkan Cloud Shell Editor ke project ID:

  1. Buka Google Cloud Console dan login, jika perlu.
  2. Pilih Project Cloud yang ada atau buat project baru.
  3. Catat ID Project Cloud untuk project tersebut.
  4. Hubungkan instance Editor ke project Anda dan konfigurasikan project tersebut. Di jendela Cloud Shell Editor, panel terminal masukkan perintah berikut:

    gcloud config set project YOUR_PROJECT_ID
    

Mengonfigurasi project SQL Talk

Project SQL Talk menggunakan layanan Google Cloud untuk menjalankan project, termasuk layanan database BigQuery dan Vertex AI API untuk terhubung ke model Gemini. Project SQL Talk menyertakan skrip setup.sh yang mengonfigurasi project dengan layanan Google Cloud yang diperlukan dan memulai versi default project.

Untuk mengonfigurasi dan menjalankan instance Cloud Shell Editor project:

  1. Di panel terminal jendela Cloud Shell Editor, buka direktori project Cloud Shell SQL Talk (/sql-talk-app):

    cd ~/cloudshell_open/generative-ai/gemini/function-calling/sql-talk-app
    
  2. Di panel terminal, masukkan perintah berikut:

    bash setup.sh
    

Setelah skrip penyiapan berhasil diselesaikan, Anda akan melihat pesan yang serupa dengan berikut di jendela terminal Cloud Shell Editor. Pesan ini menunjukkan bahwa proses penyiapan berhasil dan aplikasi SQL Talk sedang berjalan:

You can now view your Streamlit app in your browser.
Network URL: http://##.##.##.##:8080
External URL: http://##.##.##.##:8080

Menguji project

Setelah menyelesaikan penyiapan project SQL Talk, Anda dapat menguji aplikasi untuk memverifikasi bahwa aplikasi berfungsi seperti yang diharapkan. Skrip penyiapan akan otomatis memulai aplikasi saat Anda menjalankannya, dan Anda dapat memulai ulang aplikasi menggunakan langkah-langkah berikut.

Untuk menjalankan aplikasi SQL Talk:

  1. Jika Cloud Shell Editor tidak ada aktivitas dan tidak terhubung, Anda mungkin perlu menghubungkan kembali ke project ID Cloud Anda.

    gcloud config set project YOUR_PROJECT_ID
    
  2. Di panel terminal jendela Cloud Shell Editor, buka direktori project Cloud Shell SQL Talk.

    cd ~/cloudshell_open/generative-ai/gemini/function-calling/sql-talk-app
    
  3. Di panel terminal, masukkan perintah berikut.

    ~/miniforge/bin/streamlit run app.py --server.enableCORS=false \
        --server.enableXsrfProtection=false --server.port 8080
    
  4. Lihat aplikasi SQL Talk. Di kanan atas jendela Cloud Shell Editor, pilih tombol Web Preview, lalu Preview on port 8080.

Header Cloud Shell Editor dengan tombol Pratinjau Web ditandai

Untuk melihat update pada aplikasi SQL Talk:

  • Di Pratinjau Web aplikasi web SQL Talk, muat ulang tab browser atau browser.

Untuk menghentikan aplikasi SQL Talk:

  • Di panel terminal jendela Cloud Shell Editor, ketik Ctrl-C.

Mengubah aplikasi

Anda dapat mengubah perilaku dan menambahkan kemampuan pada aplikasi SQL Talk dengan memodifikasi kode Python untuk aplikasi. Bagian ini menjelaskan cara menambahkan panggilan fungsi baru ke aplikasi SQL Talk.

Fitur Panggilan Fungsi Gemini API menggunakan sintaksis tertentu untuk menentukan fungsi yang akan digunakan oleh model generatif untuk menjawab pertanyaan atau menyelesaikan masalah. Sintaksis ini tidak harus sama persis dengan sintaksis panggilan API yang sebenarnya. Sebagai gantinya, Anda dapat menggunakan fitur Panggilan Fungsi untuk memaksa model generatif memberikan input atau parameter data tertentu yang sesuai dengan sintaksis panggilan API, lalu menggunakan parameter tersebut untuk menjalankan panggilan API yang sebenarnya dalam kode aplikasi Anda.

Contoh implementasi ini menunjukkan cara membuat definisi panggilan fungsi untuk mencantumkan kueri atau tugas database terbaru, lalu memetakan definisi tersebut ke panggilan API yang sebenarnya dalam kode aplikasi SQL Talk.

Menambahkan definisi panggilan fungsi

Tambahkan panggilan fungsi baru untuk mencantumkan kueri atau tugas database terbaru. Definisi ini digunakan oleh model generatif untuk memahami fungsi panggilan API dan parameter input yang diperlukan. Contoh definisi fungsi ini ditentukan tanpa parameter.

Untuk menambahkan panggilan fungsi baru ke aplikasi:

  1. Di jendela Cloud Shell Editor, buka file kode sql-talk-app/app.py.
  2. Setelah deklarasi fungsi list_datasets_func, tambahkan FunctionDeclaration baru.

    list_jobs_func = FunctionDeclaration(
        name="list_jobs",
        description="Get a list of the 10 most recent database requests to help answer the user's question",
        parameters={
            "type": "object",
            "properties": {
      },
    },
    )
    
  3. Tambahkan fungsi baru ke objek sql_query_tool.

    sql_query_tool = Tool(
        function_declarations=[
            sql_query_func,
            list_datasets_func,
            List_jobs_func,  # add this new function
            list_tables_func,
            get_table_func,
        ],
    )
    

Untuk menambahkan kode guna menjalankan panggilan API untuk fungsi baru:

  • Dalam file kode sql-talk-app/app.py, tambahkan klausa if baru ke loop while function_calling_in_process:.

    if response.function_call.name == "list_datasets":
        ...
    
    # add this if clause for list_jobs function
    if response.function_call.name == "list_jobs":
        api_response = client.list_jobs(max_results=10)  # API request(s)
        api_response = str([job.job_id for job in api_response])
        api_requests_and_responses.append(
          [response.function_call.name,params, api_response])
    

Referensi tambahan

Untuk informasi selengkapnya tentang project Kueri SQL, lihat repositori kode dan lihat postingan blog Komunitas Cloud tentang project SQL Talk. Jika Anda memerlukan bantuan untuk membangun aplikasi atau ingin berkolaborasi dengan developer lain, buka server Discord Komunitas Developer Google dan Forum AI/ML Google Cloud. Untuk mengetahui project Membangun dengan AI Google lainnya, lihat playlist video.