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 dựa trên trí tuệ nhân tạo (AI) cho giao diện lập trình hệ thống kinh doanh và cho phép đồng nghiệp của bạn đặt câu hỏi về dữ liệu kinh doanh của bạn. Việc phân tích và báo cáo dữ liệu của tổ chức là điều cần thiết để cải thiện cách bạn kinh doanh. Bạn có thể tìm thấy vấn đề, khám phá xu hướng và điều tra kết quả bằng dữ liệu phù hợp. Tuy nhiên, với tư cách là nhà phát triển, bạn có thể gặp khó khăn khi giúp các đồng nghiệp không lập trình khám phá dữ liệu phù hợp.

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 kinh doanh. Dự án sử dụng API Gemini và tính năng Lệnh gọi hàm để chuyển đổi các câu hỏi về dữ liệu kinh doanh thành truy vấn SQL và lệnh gọi API, sau đó chuyển đổi kết quả trở lại 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 một tác nhân dữ liệu cho doanh nghiệp của riêng mình và giúp đồng nghiệp nhận được câu trả lời mà không cần phải viết một loạt mã chỉ 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ừ những người xây dựng dự án, hãy xem nội dung Đại lý 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 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ẽ hướng dẫn 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 là 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 Google Cloud và sử dụng tập lệnh để định cấu hình chế độ cài đặt dự án. 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. Trình chỉnh sửa này giúp bạn thiết lập, chạy và cập nhật dự án một cách nhanh chóng và thuận tiện.

Tạo một phiên bản 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 phiên bản Cloud Shell. Quy trình này 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 phiên bản Cloud Shell cho SQL Talk:

Đường liên kết này thiết lập một phiên bản Trình chỉnh sửa Google Cloud Shell và sao chép kho lưu trữ cho SQL Talk vào phiên bản đó.

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

Hình 2. Dự án SQL Talk được nhân bản vào môi trường phát triển của Trình chỉnh sửa Google Cloud Shell.

Nhận mã dự án trên Google Cloud

Dự án SQL Talk sử dụng mã dự á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 Trình chỉnh sửa Cloud Shell để 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 Trình chỉnh sửa Cloud Shell 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 Google Cloud của dự án.
  4. Kết nối thực thể Trình chỉnh sửa với dự án và định cấu hình dự án. Trong cửa sổ Trình chỉnh sửa Cloud Shell, bảng điều khiển dòng lệnh, hãy nhập lệnh sau:

    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 cả dịch vụ cơ sở dữ liệu BigQueryAPI Vertex AI để 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 bằng các dịch vụ Google Cloud bắt buộc 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 thực thể Trình chỉnh sửa Cloud Shell của dự án:

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

    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, 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 Trình chỉnh sửa Cloud Shell. 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ư mong đợi. Tập lệnh thiết lập sẽ tự động khởi động ứng dụng khi bạn chạy tập lệnh đó và bạn có thể khởi động lại ứng dụng bằng các bước sau.

Cách chạy ứng dụng SQL Talk:

  1. Nếu Trình chỉnh sửa Cloud Shell đang ở trạng thái rảnh và bị ngắt kết nối, bạn có thể cần phải kết nối lại với mã dự án trên Cloud.

    gcloud config set project YOUR_PROJECT_ID
    
  2. Trong bảng điều khiển dòng lệnh của cửa sổ Trình chỉnh sửa Cloud Shell, hãy chuyển đến thư mục dự án Cloud 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 cửa sổ Cloud Shell Editor (Trình chỉnh sửa Cloud Shell), hãy chọn nút Web Preview (Xem trước trên web), sau đó chọn Preview on port 8080 (Xem trước trên cổng 8080).

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

Cách xem nội dung cập nhật cho ứng dụng SQL Talk:

  • Trong ứng dụng web SQL Talk Web Preview (Xem trước trên web), hãy tải lại trình duyệt hoặc thẻ trình duyệt.

Cách dừng ứng dụng SQL Talk:

  • Trong bảng điều khiển dòng lệnh của cửa sổ Cloud Shell Editor, hãy nhập Ctrl-C.

Sửa đổi ứng dụng

Bạn có thể thay đổi hành vi và thêm chức năng vào ứ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ẽ sử dụng để trả lời 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 các tham số cụ thể tuân theo 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ã ứng dụng.

Ví dụ về cách 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 gần đây trong cơ sở dữ liệu, sau đó liên kết định nghĩa đó với lệnh gọi API thực tế trong mã ứng dụng SQL Talk.

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

Thêm lệnh gọi hàm mới để liệt kê các truy vấn hoặc công việc gần đây trong cơ sở dữ liệu. Mô hình tạo sinh sử dụng định nghĩa này để hiểu được lệnh gọi API thực hiện chức năng gì và yêu cầu những tham số đầu vào nào. Định nghĩa hàm mẫu này được xác định 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ệ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 khác

Để biết thêm thông tin về dự án Truy vấn SQL, hãy xem kho lưu trữ mã và tham khảo bài đăng trên blog của Cộng đồng Cloud về dự án SQL Talk. Nếu bạn cần được trợ giúp để xây dựng ứng dụng hoặc đang tìm cách 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 nhà phát triển GoogleDiễn đàn AI/ML của Google Cloud. Để biết thêm các dự án Xây dựng bằng công nghệ AI của Google, hãy xem danh sách phát video.