Bangun agen eksplorasi data AI dengan Gemini

Buat antarmuka chat yang didukung kecerdasan buatan (AI) untuk antarmuka pemrograman sistem bisnis Anda dan biarkan rekan kerja Anda mengajukan pertanyaan tentang data bisnis Anda. Melakukan analisis dan pelaporan data organisasi Anda sangat penting untuk meningkatkan cara Anda menjalankan bisnis. Menemukan masalah, menemukan tren, dan menyelidiki hasil dapat dilakukan dengan data yang tepat, tetapi sebagai developer, membantu rekan kerja non-coding Anda menemukan data yang tepat bisa jadi menantang.

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 Panggilan Fungsi untuk mengubah pertanyaan data bisnis menjadi kueri SQL dan panggilan API, lalu mengubah hasilnya kembali menjadi bahasa biasa. Anda dapat menggunakan project ini sebagai titik awal untuk membuat agen data untuk bisnis Anda sendiri, dan membantu kolega Anda mendapatkan jawaban tanpa harus menulis banyak kode sekali pakai.

Untuk ringkasan video tentang project dan cara memperluasnya, termasuk insight dari orang yang membuatnya, lihat Agen Data AI | Membangun dengan Google AI. 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 Editor Google Cloud Shell, mendapatkan Project ID Google Cloud, dan menggunakan skrip untuk mengonfigurasi setelan project. Petunjuk ini menjelaskan cara menyiapkan project menggunakan Editor Cloud Shell, yang membuat penyiapan, pengoperasian, dan update project menjadi cepat dan praktis.

Membuat instance Cloud Shell untuk project

Anda dapat menyiapkan project SQL Talk dengan meng-clone repositori project ke dalam instance Cloud Shell. Proses ini menyiapkan instance lingkungan pengembangan virtual di dalam infrastruktur Google Cloud untuk project dan meng-clone repositori kode ke dalam 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 dengan kode project SQL Talk yang ditampilkan

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

Mendapatkan ID project Cloud

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

Untuk menghubungkan Editor Cloud Shell ke project ID:

  1. Buka konsol Google Cloud 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. 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 Editor Cloud Shell project:

  1. Di panel terminal jendela Cloud Shell Editor, buka direktori project Cloud 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 mirip dengan berikut ini di jendela terminal Editor Cloud Shell. Pesan ini menunjukkan bahwa proses penyiapan berhasil dan aplikasi SQL Talk 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 Editor Cloud Shell tidak ada aktivitas dan terputus, Anda mungkin perlu terhubung kembali ke project ID Cloud Anda.

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

    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 Editor Cloud Shell, 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 browser atau tab 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 ke aplikasi SQL Talk dengan mengubah 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 memecahkan masalah. Sintaksis ini tidak perlu sama persis dengan sintaksis panggilan API yang sebenarnya. Sebagai gantinya, Anda menggunakan fitur Panggilan Fungsi untuk memaksa model generatif memberikan input data atau parameter 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 Editor Cloud Shell, 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 lainnya

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