Xây dựng một tác nhân khám phá dữ liệu dựa trên AI bằng Gemini

Xây dựng giao diện trò chuyện sử dụng trí tuệ nhân tạo (AI) cho giao diện lập trình hệ thống của doanh nghiệp và cho phép đồng nghiệp đặt câu hỏi về dữ liệu doanh nghiệp của bạn. Việc phân tích và báo cáo về dữ liệu của tổ chức là điều cần thiết để cải thiện cách thức bạn kinh doanh. Việc tìm vấn đề, phát hiện xu hướng và điều tra kết quả đều có thể xảy ra với dữ liệu phù hợp, nhưng với tư cách là nhà phát triển, việc giúp các đồng nghiệp không viết mã của bạn khám phá ra dữ liệu phù hợp cũng có thể khó khăn.

Dự án SQL Talk là một ứng dụng nguồn mở sử dụng công nghệ AI tạo sinh để trả lời các câu hỏi về dữ liệu doanh nghiệp. Dự án này sử dụng API Gemini và tính năng Gọi hàm để biến đổi các câu hỏi về dữ liệu doanh nghiệp thành truy vấn SQL và lệnh gọi API, sau đó chuyển đổi kết quả trở về ngôn ngữ thuần tuý. Bạn có thể sử dụng dự án này làm điểm xuất phát để xây dựng tác nhân dữ liệu cho doanh nghiệp của mình và giúp đồng nghiệp tìm câu trả lời mà không cần phải viết một loạt mã dùng một lần.

Để xem video tổng quan về dự án và cách mở rộng dự án, bao gồm cả thông tin chi tiết từ đội ngũ sản xuất, hãy xem video AI Data Agent | Build with Google AI (Tác nhân dữ liệu AI | Xây dựng bằng AI của Google). Nếu không, bạn có thể bắt đầu mở rộng dự án bằng cách làm theo các hướng dẫn sau.

Giao diện người dùng của ứng dụng dự án SQL Talk

Hình 1. Giao diện người dùng của ứng dụng dự án SQL Talk.

Thiết lập dự án

Những hướng dẫn này sẽ chỉ cho bạn cách thiết lập dự án SQL Talk để phát triển và kiểm thử. Các bước chung bao gồm tạo dự án SQL Talk, thiết lập dự án phát triển Google Cloud Shell Editor, lấy mã dự án trên Google Cloud và sử dụng tập lệnh để định cấu hình chế độ cài đặt dự án. Những hướng dẫn này mô tả cách thiết lập dự án bằng Trình chỉnh sửa Cloud Shell, giúp việc thiết lập, chạy và cập nhật dự án nhanh chóng và thuận tiện.

Tạo một thực thể Cloud Shell cho dự án

Bạn có thể thiết lập dự án SQL Talk bằng cách sao chép kho lưu trữ dự án vào một thực thể Cloud Shell. Quy trình này sẽ thiết lập một thực thể môi trường phát triển ảo bên trong cơ sở hạ tầng Google Cloud cho dự án và sao chép kho lưu trữ mã vào môi trường ảo đó.

Cách tạo một phiên bản Cloud Shell cho SQL Talk:

Đường liên kết này sẽ thiết lập một thực thể Google Cloud Shell Editor và sao chép kho lưu trữ cho SQL Talk vào thực thể đó.

Trình chỉnh sửa Google Cloud Shell với mã dự án SQL Talk được hiển thị

Hình 2. Dự án SQL Talk được sao chép vào môi trường phát triển Google Cloud Shell Editor.

Nhận mã dự án Cloud

Dự án SQL Talk sử dụng mã dự án trên Google Cloud để kết nối với các dịch vụ của Google Cloud, bao gồm cả các mô hình Gemini. Bạn định cấu hình mã dự án trong Cloud Shell Editor để cho phép ứng dụng kết nối với các dịch vụ này.

Cách kết nối Cloud Shell Editor với mã dự án:

  1. Chuyển đến bảng điều khiển Google Cloud rồi đăng nhập nếu cần.
  2. Chọn một Dự án trên đám mây hiện có hoặc tạo một dự án mới.
  3. Ghi lại mã dự án trên Cloud cho dự án đó.
  4. Kết nối phiên bản Trình chỉnh sửa với dự án của bạn và định cấu hình dự án. Trong cửa sổ Cloud Shell Editor, hãy nhập lệnh sau trong bảng điều khiển dòng lệnh:

    gcloud config set project YOUR_PROJECT_ID
    

Định cấu hình dự án SQL Talk

Dự án SQL Talk sử dụng các dịch vụ của Google Cloud để chạy dự án, bao gồm dịch vụ cơ sở dữ liệu BigQueryVertex AI API để kết nối với các mô hình Gemini. Dự án SQL Talk bao gồm một tập lệnh setup.sh giúp định cấu hình dự án với các dịch vụ bắt buộc của Google Cloud và khởi động phiên bản mặc định của dự án.

Cách định cấu hình và chạy phiên bản Cloud Shell Editor của dự án:

  1. Trong bảng điều khiển đầu cuối của cửa sổ Cloud Shell Editor, hãy chuyển đến thư mục dự án Cloud Shell SQL Talk (/sql-talk-app):

    cd ~/cloudshell_open/generative-ai/gemini/function-calling/sql-talk-app
    
  2. Trong bảng điều khiển dòng lệnh, hãy nhập lệnh sau:

    bash setup.sh
    

Khi tập lệnh thiết lập hoàn tất thành công, bạn sẽ thấy một thông báo tương tự như sau trong cửa sổ dòng lệnh của Cloud Shell Editor. Thông báo này cho biết quá trình thiết lập đã thành công và ứng dụng SQL Talk đang chạy:

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

Kiểm thử dự án

Sau khi hoàn tất việc thiết lập dự án SQL Talk, bạn có thể kiểm thử ứng dụng để xác minh rằng ứng dụng đang hoạt động như dự kiến. Tập lệnh thiết lập sẽ tự động khởi động ứng dụng khi bạn chạy và bạn có thể khởi động lại ứng dụng bằng các bước sau.

Để chạy ứng dụng SQL Talk:

  1. Nếu Cloud Shell Editor không hoạt động và bị ngắt kết nối, bạn có thể cần kết nối lại với mã dự án Cloud của mình.

    gcloud config set project YOUR_PROJECT_ID
    
  2. Trong bảng điều khiển đầu cuối của cửa sổ Cloud Shell Editor, hãy chuyển đến thư mục dự án Cloud Shell SQL Talk.

    cd ~/cloudshell_open/generative-ai/gemini/function-calling/sql-talk-app
    
  3. Trong bảng điều khiển dòng lệnh, hãy nhập lệnh sau.

    ~/miniforge/bin/streamlit run app.py --server.enableCORS=false \
        --server.enableXsrfProtection=false --server.port 8080
    
  4. Xem ứng dụng SQL Talk. Ở trên cùng bên phải cửa sổ Cloud Shell Editor, hãy chọn nút Web Preview (Xem trước trên web) rồi chọn Preview on cổng 8080 (Xem trước trên cổng 8080).

Phần đầu Trình chỉnh sửa Cloud Shell, trong đó nút Xem trước trên web được làm nổi bật

Để xem các bản cập nhật cho ứng dụng SQL Talk:

  • Trong Bản xem trước trên web của ứng dụng web SQL Talk, hãy tải lại trình duyệt hoặc thẻ trình duyệt.

Để dừng ứng dụng SQL Talk:

  • Trong bảng điều khiển đầu cuối của cửa sổ Cloud Shell Editor, hãy nhấn Ctrl-C.

Sửa đổi ứng dụng

Bạn có thể thay đổi hành vi và thêm tính năng cho ứng dụng SQL Talk bằng cách sửa đổi mã Python cho ứng dụng. Phần này mô tả cách thêm lệnh gọi hàm mới vào ứng dụng SQL Talk.

Tính năng Gọi hàm của API Gemini sử dụng một cú pháp cụ thể để xác định các hàm mà mô hình tạo sinh sẽ dùng để trả lời các câu hỏi hoặc giải quyết vấn đề. Cú pháp này không cần phải khớp chính xác với cú pháp của lệnh gọi API thực tế. Thay vào đó, bạn sử dụng tính năng Gọi hàm để buộc mô hình tạo sinh cung cấp dữ liệu đầu vào hoặc tham số cụ thể phù hợp với cú pháp lệnh gọi API, sau đó sử dụng các tham số đó để thực thi các lệnh gọi API thực tế trong mã xử lý ứng dụng của bạn.

Ví dụ triển khai này cho bạn biết cách tạo định nghĩa lệnh gọi hàm để liệt kê các truy vấn hoặc công việc trong cơ sở dữ liệu gần đây, sau đó ánh xạ định nghĩa đó với lệnh gọi API thực tế trong mã xử lý ứng dụng SQL Talk.

Thêm định nghĩa lệnh gọi hàm

Thêm một lệnh gọi hàm mới để liệt kê các truy vấn cơ sở dữ liệu hoặc công việc gần đây. Định nghĩa này được mô hình tạo sinh sử dụng để tìm hiểu chức năng của lệnh gọi API và các tham số đầu vào mà lệnh gọi đó yêu cầu. Ví dụ này xác định định nghĩa hàm mà không có tham số.

Cách thêm lệnh gọi hàm mới vào ứng dụng:

  1. Trong cửa sổ Trình chỉnh sửa Cloud Shell, hãy mở tệp mã sql-talk-app/app.py.
  2. Sau phần khai báo hàm list_datasets_func, hãy thêm một FunctionDeclaration mới.

    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. Thêm hàm mới vào đối tượng 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,
        ],
    )
    

Cách thêm mã để chạy lệnh gọi API cho hàm mới:

  • Trong tệp mã sql-talk-app/app.py, hãy thêm một mệnh đề if mới vào vòng lặp 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])
    

Tài nguyên bổ sung

Để biết thêm thông tin về dự án SQL Query, hãy xem kho lưu trữ mã và xem bài đăng trên blog Cộng đồng Cloud về dự án SQL Talk. Nếu bạn cần trợ giúp về việc xây dựng ứng dụng hoặc muốn cộng tác với các nhà phát triển khác, hãy xem máy chủ Discord của cộng đồng Google DevelopersDiễn đàn về trí tuệ nhân tạo/học máy của Google Cloud. Để tìm hiểu các dự án AI khác trong ứng dụng Xây dựng với Google, hãy xem danh sách phát video.