Xây dựng ứng dụng trong kỷ nguyên AI

1. Tổng quan

Trong phòng thí nghiệm này, bạn sẽ sử dụng các sản phẩm AI tạo sinh của Google để xây dựng cơ sở hạ tầng trong Google Cloud với sự trợ giúp của Gemini Cloud Assist, truy vấn dữ liệu BigQuery bằng cách sử dụng các tính năng ngôn ngữ tự nhiên sang SQL của Data Canvas, viết mã trong sổ tay Colab Enterprise Jupyter và trong Eclipse Theia (Visual Studio Code) với sự trợ giúp của Gemini Code Assist, đồng thời tích hợp các tính năng tìm kiếm và trò chuyện bằng AI được xây dựng dựa trên các nguồn liên kết thực tế Cloud Storage và BigQuery trong Vertex AI Agent Builder.

Mục tiêu của chúng tôi là tạo ra một trang web về công thức nấu ăn và nấu nướng có tên là AI Recipe Haven. Trang web này sẽ được xây dựng bằng Python và Streamlit, đồng thời sẽ có 2 trang chính. Cooking Advice sẽ lưu trữ một chatbot mà chúng tôi tạo bằng Gemini và một nguồn cơ sở Vertex AI Agent Builder được liên kết với một nhóm sách dạy nấu ăn. Chatbot này sẽ đưa ra lời khuyên về cách nấu ăn và trả lời các câu hỏi liên quan đến việc nấu ăn. Recipe Search sẽ là một công cụ tìm kiếm do Gemini cung cấp, lần này dựa trên cơ sở dữ liệu công thức BigQuery.

Nếu bạn gặp khó khăn với bất kỳ đoạn mã nào trong bài tập này, thì giải pháp cho tất cả các tệp mã đều nằm trong kho lưu trữ GitHub của bài tập trên nhánh solution.

Mục tiêu

Trong bài thực hành này, bạn sẽ tìm hiểu cách thực hiện các thao tác sau:

  • Kích hoạt và sử dụng Gemini Cloud Assist
  • Tạo một ứng dụng tìm kiếm trong Vertex AI Agent Builder cho chatbot tư vấn nấu ăn
  • Tải và làm sạch dữ liệu trong sổ tay Colab Enterprise, với sự trợ giúp của Gemini Code Assist
  • Tạo một ứng dụng tìm kiếm trong Vertex AI Agent Builder cho trình tạo công thức
  • Lên khung cho ứng dụng web cốt lõi bằng Python và Streamlit, với sự trợ giúp của Gemini
  • Triển khai ứng dụng web lên Cloud Run
  • Kết nối trang Lời khuyên nấu ăn với ứng dụng Agent Builder tìm kiếm sách nấu ăn của chúng tôi
  • (Không bắt buộc) Kết nối trang Tìm kiếm công thức với ứng dụng Trình tạo tác nhân tìm kiếm công thức
  • (Không bắt buộc) Khám phá ứng dụng cuối cùng

2. Điều kiện tiên quyết

  1. Nếu chưa có Tài khoản Google, bạn phải tạo một Tài khoản Google.
    • Sử dụng tài khoản cá nhân thay vì tài khoản trường học hoặc tài khoản do nơi làm việc cấp. Tài khoản do nơi làm việc hoặc trường học cấp có thể có các hạn chế khiến bạn không bật được những API cần thiết cho lớp học này.

3. Thiết lập dự án

  1. Đăng nhập vào Google Cloud Console.
  2. Bật tính năng thanh toán trong Cloud Console.
    • Việc hoàn thành bài tập thực hành này sẽ tốn ít hơn 1 USD cho các tài nguyên trên đám mây.
    • Bạn có thể làm theo các bước ở cuối bài thực hành này để xoá tài nguyên nhằm tránh bị tính thêm phí.
    • Người dùng mới đủ điều kiện dùng thử miễn phí trị giá 300 USD.
    • Bạn sẽ tham dự một sự kiện phòng thí nghiệm thực hành ảo chứ? Bạn có thể nhận được khoản tín dụng trị giá 5 USD.
  3. Tạo một dự án mới hoặc chọn sử dụng lại một dự án hiện có.
  4. Xác nhận rằng bạn đã bật tính năng thanh toán trong phần Dự án của tôi trong phần Thanh toán trên Cloud
    • Nếu dự án mới của bạn có trạng thái Billing is disabled trong cột Billing account:
      1. Nhấp vào biểu tượng ba dấu chấm trong cột Actions
      2. Nhấp vào Thay đổi thông tin thanh toán
      3. Chọn tài khoản thanh toán mà bạn muốn sử dụng
    • Nếu bạn đang tham dự một sự kiện trực tiếp, thì tài khoản đó có thể sẽ có tên là Tài khoản thanh toán dùng thử Google Cloud Platform

4. Kích hoạt và sử dụng Gemini Cloud Assist

Trong nhiệm vụ này, chúng ta sẽ kích hoạt và sử dụng Gemini Cloud Assist. Trong khi bạn làm việc trong Bảng điều khiển Google Cloud, Gemini Cloud Assist có thể đưa ra lời khuyên, giúp bạn xây dựng, định cấu hình và giám sát cơ sở hạ tầng Google Cloud, đồng thời có thể đề xuất các lệnh gcloud và viết tập lệnh Terraform.

  1. Để kích hoạt Cloud Assist, hãy nhấp vào hộp Tìm kiếm ở đầu giao diện người dùng bảng điều khiển Cloud rồi chọn Hỏi Gemini hoặc Hỏi Gemini về bảng điều khiển Cloud.
  2. Di chuyển đến phần API bắt buộc của trang rồi Bật Gemini cho Google Cloud API.
  3. Nếu bạn không thấy giao diện trò chuyện ngay lập tức, hãy nhấp vào Bắt đầu trò chuyện. Bắt đầu bằng cách yêu cầu Gemini giải thích một số lợi ích của việc sử dụng Cloud Shell Editor. Dành vài phút để khám phá câu trả lời được tạo.
  4. Tiếp theo, hãy hỏi về những lợi ích của Agent Builder và cách công cụ này có thể giúp đưa ra các câu trả lời dựa trên thông tin thực tế.
  5. Cuối cùng, hãy xem một bảng so sánh. Trong cửa sổ trò chuyện của Gemini trên Google Cloud Console, hãy đặt câu hỏi sau:
    What are the major steps to creating a search app grounded in a GCS data source using Vertex AI Agent builder?
    

5. Tạo một ứng dụng tìm kiếm trong Vertex AI Agent Builder cho chatbot tư vấn nấu ăn

Trang web mà chúng tôi đang xây dựng sẽ có một trang tư vấn nấu ăn, trong đó có một chatbot được thiết kế để giúp người dùng tìm thấy câu trả lời cho các câu hỏi liên quan đến nấu ăn. Gemini sẽ cung cấp thông tin dựa trên một nguồn chứa 70 cuốn sách nấu ăn thuộc phạm vi công cộng. Sách dạy nấu ăn sẽ đóng vai trò là nguồn thông tin đáng tin cậy mà Gemini sử dụng khi trả lời câu hỏi.

  1. Sử dụng hộp tìm kiếm trên Cloud Console để chuyển đến Vertex AI. Trên trang Tổng quan, hãy nhấp vào Bật tất cả API được đề xuất. Quá trình này có thể mất vài phút. Nếu bạn thấy một hộp bật lên cho biết cần bật Vertex AI API, vui lòng Bật API này. Sau khi bật các API này, bạn có thể chuyển sang bước tiếp theo.
  2. Sử dụng tính năng tìm kiếm để chuyển đến Trình tạo tác nhân, sau đó nhấp vào Tiếp tục và kích hoạt API.
  3. Như Gemini đã đề xuất trong lời khuyên trước đó của chúng tôi, việc tạo một ứng dụng tìm kiếm trong Agent Builder bắt đầu bằng việc tạo một nguồn dữ liệu đáng tin cậy. Khi người dùng tìm kiếm, Gemini sẽ hiểu câu hỏi và cách soạn câu trả lời thông minh, nhưng sẽ tìm đến nguồn có cơ sở để lấy thông tin được dùng trong câu trả lời đó, thay vì lấy thông tin từ kiến thức vốn có của mình.Trong trình đơn bên trái, hãy chuyển đến Kho dữ liệu rồi nhấp vào Tạo kho dữ liệu.
  4. Các sách dạy nấu ăn thuộc phạm vi công cộng mà chúng tôi đang sử dụng để làm cơ sở cho trang lời khuyên nấu ăn hiện nằm trong một bộ chứa Cloud Storage trong một dự án bên ngoài. Chọn loại nguồn Cloud Storage.
  5. Kiểm tra nhưng không thay đổi các lựa chọn mặc định liên quan đến loại thông tin mà chúng ta đang nhập. Để loại nhập là Thư mục và đối với đường dẫn đến nhóm lưu trữ, hãy sử dụng: labs.roitraining.com/labs/old-cookbooks, sau đó nhấp vào Tiếp tục.
  6. Đặt tên cho kho lưu trữ dữ liệu: old-cookbooks. Nhấp vào CHỈNH SỬA rồi thay đổi mã nhận dạng thành old-cookbooks-idTạo kho dữ liệu.

Vertex AI Agent Builder hỗ trợ nhiều loại ứng dụng và Data Store đóng vai trò là nguồn thông tin đáng tin cậy cho từng loại. Ứng dụng tìm kiếm phù hợp cho mục đích sử dụng và tìm kiếm thông thường. Ứng dụng Chat dành cho các luồng tạo sinh trong các ứng dụng chatbot/voicebot dựa trên Dataflow. Các ứng dụng đề xuất giúp tạo ra những công cụ đề xuất hiệu quả hơn. Còn ứng dụng Agent dùng để tạo các tác nhân dựa trên AI tạo sinh. Cuối cùng, Agent có lẽ sẽ phục vụ chúng ta tốt nhất trong những việc chúng ta muốn làm, nhưng vì sản phẩm hiện đang ở giai đoạn xem trước, nên chúng ta sẽ sử dụng loại ứng dụng Tìm kiếm.

  1. Sử dụng trình đơn bên trái để chuyển đến Ứng dụng, sau đó nhấp vào Tạo ứng dụng mới.
  2. Nhấp vào Tạo trên thẻ Tìm trang web của bạn. Đặt tên cho ứng dụng cookbook-search. Nhấp vào Chỉnh sửa rồi đặt mã ứng dụng thành cookbook-search-id. Đặt công ty thành Google rồi nhấp vào Tiếp tục.
  3. Kiểm tra kho dữ liệu old-cookbooks mà bạn đã tạo ở một vài bước trước đó và Create (Tạo) Ứng dụng tìm kiếm.

Nếu kiểm tra thẻ Hoạt động, có thể bạn sẽ thấy rằng các sổ tay nấu ăn vẫn đang nhập và lập chỉ mục. Agent Builder sẽ mất hơn 5 phút để lập chỉ mục hàng nghìn trang có trong 70 cuốn sách nấu ăn mà chúng tôi đã cung cấp cho công cụ này. Trong khi chờ đợi, hãy tải và làm sạch một số dữ liệu cơ sở dữ liệu công thức cho trình tạo công thức của chúng ta.

6. Tải và làm sạch dữ liệu trong sổ tay Colab Enterprise, với sự trợ giúp của Gemini Code Assist

Google Cloud cung cấp một số cách chính để bạn có thể làm việc với sổ tay Jupyter. Chúng ta sẽ sử dụng sản phẩm mới nhất của Google là Colab Enterprise. Một số bạn có thể đã biết đến sản phẩm Colab của Google. Đây là sản phẩm thường được các cá nhân và tổ chức sử dụng để thử nghiệm sổ tay Jupyter trong một môi trường miễn phí. Colab Enterprise là một sản phẩm thương mại của Google Cloud, được tích hợp đầy đủ với các sản phẩm đám mây khác của Google và tận dụng tối đa các khả năng bảo mật và tuân thủ của môi trường GCP.

Một trong những tính năng mà Colab Enterprise cung cấp là tích hợp với Gemini Code Assist của Google. Bạn có thể sử dụng Trợ lý lập trình trong một số trình chỉnh sửa mã khác nhau và nhận được lời khuyên cũng như các đề xuất nội tuyến liền mạch trong khi lập trình. Chúng ta sẽ tận dụng trợ lý tạo sinh này trong khi xử lý dữ liệu công thức.

  1. Sử dụng tính năng tìm kiếm để chuyển đến Colab Enterprise rồi nhấp vào Tạo sổ tay. Nếu bạn nhận được lời mời dùng thử các tính năng mới của Colab, hãy bỏ qua lời mời đó. Để khởi động và chạy thời gian chạy (sức mạnh tính toán đằng sau sổ tay), hãy nhấp vào Kết nối ở góc trên bên phải của sổ tay mới.Kết nối
  2. Nhấp vào Tệp > Đổi tên để đổi tên sổ tay thành Data Wrangling.Đổi tên bằng biểu tượng ba dấu chấm
  3. Nhấp vào + Văn bản để tạo một hộp văn bản mới, rồi dùng mũi tên lên để di chuyển hộp văn bản đó sao cho hộp văn bản đó là ô đầu tiên trên trang.+ Văn bản và Mũi tên lên
  4. Chỉnh sửa hộp văn bản và nhập:
    # Data Wrangling
    
    Import the Pandas library
    
  5. Trong khối mã bên dưới khối văn bản mà bạn vừa tạo, hãy bắt đầu nhập imp. Gemini Code Assist sẽ đề xuất phần còn lại của lệnh nhập bằng màu xám. Nhấn phím tab để chấp nhận nội dung đề xuất.
    import pandas as pd
    
  6. Bên dưới hộp nhập mã, hãy tạo một hộp văn bản khác rồi nhập:
    Create a Pandas DataFrame from: gs://labs.roitraining.com/labs/recipes/recipe_dataset.csv. View the first few records.
    
  7. Tạo và chỉnh sửa một khối mã khác. Một lần nữa, hãy bắt đầu nhập df = rồi xem xét mã do Gemini Code Assistant tạo. Nếu bạn thấy danh sách thả xuống tự động hoàn thành các từ khoá Python trên đề xuất được tạo, hãy nhấn phím thoát để xem mã được đề xuất màu xám nhạt. Nhấn phím Tab một lần nữa để chấp nhận đề xuất. Nếu đề xuất của bạn không chứa lệnh gọi hàm head(), hãy thêm lệnh gọi đó.
    df = pd.read_csv('gs://labs.roitraining.com/labs/recipes/recipe_dataset.csv')
    df.head()
    
  8. Nhấp vào ô mã đầu tiên (nơi bạn đã nhập Pandas) rồi sử dụng trình đơn Lệnh hoặc bàn phím để chạy ô đã chọn. Trên bàn phím, tổ hợp phím shift+enter sẽ chạy ô và chuyển tiêu điểm sang ô tiếp theo, đồng thời tạo một ô nếu cần. Đợi cho đến khi ô thực thi xong rồi mới chuyển sang bước tiếp theo.LƯU Ý: Bạn sẽ thấy [ ] ở ngay bên trái khi một ô chưa được thực thi. Trong khi một ô đang thực thi, bạn sẽ thấy một ảnh động cho biết ô đang hoạt động. Sau khi ô này kết thúc, một số sẽ xuất hiện, chẳng hạn như [13].
  9. Thực thi ô tải tệp CSV vào DataFrame. Đợi tệp tải xong rồi kiểm tra 5 hàng dữ liệu đầu tiên. Đây là dữ liệu về công thức mà chúng ta sẽ tải vào BigQuery và cuối cùng sẽ dùng dữ liệu này để làm cơ sở cho trình tạo công thức.
  10. Tạo một khối mã mới và nhập nhận xét bên dưới. Sau khi nhập nhận xét, hãy chuyển đến dòng mã tiếp theo và bạn sẽ nhận được đề xuất df.columns. Chấp nhận rồi chạy ô.
    # List the current DataFrame column names
    
    Chúng ta vừa minh hoạ rằng bạn thực sự có hai lựa chọn về cách nhận trợ giúp từ Gemini Code Assist trong sổ tay Jupyter: ô văn bản phía trên ô mã hoặc nhận xét bên trong chính ô mã. Các nhận xét bên trong ô mã hoạt động tốt trong sổ tay Jupyter, nhưng phương pháp này cũng sẽ hoạt động trong mọi IDE khác hỗ trợ Gemini Code Assist của Google.
  11. Hãy dọn dẹp một chút cho các cột. Đổi tên cột Unnamed: 0 thành idlink thành uri. Sử dụng kỹ thuật tạo câu lệnh > mã mà bạn chọn để tạo mã, sau đó chạy ô khi bạn hài lòng.
    # Rename the column 'Unnamed: 0' to 'id' and 'link' to 'uri'
    df.rename(columns={'Unnamed: 0': 'id', 'link': 'uri'}, inplace=True)
    
  12. Xoá các cột sourceNER, rồi dùng head() để xem một vài hàng đầu tiên. Một lần nữa, hãy nhờ Gemini trợ giúp. Chạy hai dòng cuối cùng và kiểm tra kết quả.
    # Remove the source and NER columns
    df.drop(columns=['source', 'NER'], inplace=True)
    df.head()
    
  13. Hãy xem có bao nhiêu bản ghi trong tập dữ liệu của chúng ta. Một lần nữa, hãy bắt đầu bằng kỹ thuật ra lệnh mà bạn chọn và xem liệu bạn có thể yêu cầu Gemini giúp bạn tạo mã hay không.
    # Count the records in the DataFrame
    df.shape # count() will also work
    
  14. 2,23 triệu bản ghi có lẽ là nhiều công thức hơn chúng ta có thời gian để xem. Quá trình lập chỉ mục trong Agent Builder có thể mất quá nhiều thời gian cho bài tập hôm nay của chúng ta. Để thoả hiệp, hãy lấy mẫu 150.000 công thức và làm việc với số lượng đó. Sử dụng phương pháp "dữ liệu đầu vào > mã" để lấy mẫu và lưu trữ mẫu đó trong một DataFrame mới có tên là dfs (s là viết tắt của small – nhỏ).
    # Sample out 150,000 records into a DataFrame named dfs
    dfs = df.sample(n=150000)
    
  15. Dữ liệu nguồn công thức của chúng tôi đã sẵn sàng để tải vào BigQuery. Trước khi tải, hãy chuyển đến BigQuery và chuẩn bị một tập dữ liệu để lưu trữ bảng của chúng ta. Trong Google Cloud Console, hãy sử dụng Hộp tìm kiếm để chuyển đến BigQuery. Bạn có thể nhấp chuột phải vào BigQuery rồi mở trong một thẻ trình duyệt mới.
  16. Nếu bảng điều khiển Gemini AI Chat chưa xuất hiện, hãy mở bảng điều khiển này bằng cách nhấp vào biểu trưng Gemini ở phía trên bên phải của Cloud Console. Nếu bạn được yêu cầu bật lại API, hãy nhấn vào nút bật hoặc làm mới trang. Chạy câu lệnh: What is a dataset used for in BigQuery? Sau khi bạn khám phá câu trả lời, hãy How can I create a dataset named recipe_data using the Cloud Console? So sánh kết quả với một vài bước sau.Mở Gemini Cloud Assist
  17. Trong ngăn BigQuery Explorer, hãy nhấp vào trình đơn có biểu tượng ba dấu chấm Xem các thao tác bên cạnh mã dự án của bạn. Sau đó, chọn Tạo tập dữ liệu.Khám phá các thao tác trong Chế độ xem
  18. Cung cấp tập dữ liệu và mã nhận dạng của recipe_data. Để loại vị trí là Hoa KỳTạo tập dữ liệu. Nếu bạn nhận được thông báo lỗi cho biết tập dữ liệu đã tồn tại, hãy chuyển sang bước tiếp theo.Sau khi tạo tập dữ liệu trong BigQuery, hãy chuyển lại sang sổ tay của chúng ta và thực hiện thao tác chèn.
  19. Quay lại sổ tay Xử lý dữ liệu trong Colab Enterprise. Trong một ô mã mới, hãy tạo một biến có tên là project_id và dùng biến này để lưu trữ mã dự án hiện tại của bạn. Hãy xem ở phía trên bên trái của các hướng dẫn này, bên dưới nút Kết thúc lớp học, bạn sẽ thấy mã dự án hiện tại. Bạn cũng có thể xem thông tin này trên trang chủ của Cloud Console. Chỉ định giá trị cho biến project_id rồi chạy ô.
    # Create a variable to hold the current project_id
    project_id='YOUR_PROJECT_ID'
    
  20. Sử dụng phương pháp > mã để tạo một khối mã sẽ chèn DataFrame dfs vào một bảng có tên là recipes trong tập dữ liệu mà chúng ta vừa tạo recipe_data. Chạy ô.
    dfs.to_gbq(destination_table='recipe_data.recipes', project_id=project_id, if_exists='replace')
    

7. Tạo một ứng dụng tìm kiếm trong Vertex AI Agent Builder cho trình tạo công thức

Tuyệt vời! Sau khi tạo bảng dữ liệu công thức, hãy sử dụng bảng này để tạo nguồn dữ liệu có cơ sở cho trình tạo công thức. Phương pháp mà chúng ta sẽ sử dụng tương tự như phương pháp chúng ta đã dùng cho chatbot nấu ăn. Chúng ta sẽ dùng Vertex AI Agent Builder để tạo một Kho dữ liệu, sau đó dùng kho dữ liệu đó làm nguồn thông tin đáng tin cậy cho một Ứng dụng tìm kiếm.

Nếu muốn, bạn có thể yêu cầu Gemini trong Google Cloud Console nhắc bạn về các bước tạo một ứng dụng tìm kiếm Agent Builder hoặc bạn có thể làm theo các bước bên dưới.

  1. Sử dụng tính năng Tìm kiếm để chuyển đến Trình tạo tác nhân. Mở Data Stores (Lưu trữ dữ liệu) và Create Data Store (Tạo kho dữ liệu). Lần này, hãy Chọn loại Kho dữ liệu BigQuery.
  2. Trong ô chọn bảng, hãy nhấn vào Duyệt qua rồi tìm recipes. Chọn nút chọn bên cạnh bảng của bạn. Nếu bạn thấy các công thức từ những dự án qwiklabs-gcp-... khác, hãy nhớ Chọn công thức thuộc về bạn.LƯU Ý: Nếu bạn nhấp vào recipes thay vì chọn nút chọn bên cạnh, thao tác này sẽ mở một thẻ mới trong trình duyệt và đưa bạn đến trang tổng quan về bảng trong BigQuery. Bạn chỉ cần đóng thẻ trình duyệt và chọn nút chọn trong Trình tạo tác nhân.
  3. Kiểm tra nhưng không thay đổi các lựa chọn mặc định còn lại, sau đó nhấp vào Tiếp tục.
  4. Trong trang xem xét giản đồ, hãy xem xét các cấu hình mặc định ban đầu nhưng không thay đổi nội dung nào. Tiếp tục
  5. Đặt tên cho kho dữ liệu recipe-data. Chỉnh sửa mã nhận dạng kho dữ liệu và đặt mã nhận dạng đó thành recipe-data-id. Tạo Kho dữ liệu.
  6. Chuyển đến Ứng dụng bằng trình đơn điều hướng bên trái rồi nhấp vào Tạo ứng dụng mới.
  7. Nhấp vào Tạo trên thẻ Tìm trang web của bạn. Đặt tên cho ứng dụng recipe-search rồi nhấp vào CHỈNH SỬA để đặt mã nhận dạng thành recipe-search-id. Đặt tên công ty thành Google rồi nhấp vào Tiếp tục.
  8. Lần này, hãy kiểm tra nguồn dữ liệu recipe-data. Tạo ứng dụng.

Bảng cơ sở dữ liệu của chúng ta sẽ mất một khoảng thời gian để lập chỉ mục. Trong thời gian chờ đợi, hãy thử nghiệm Data Canvas mới của BigQuery và xem liệu chúng ta có thể tìm thấy một hoặc hai công thức thú vị hay không.

  1. Sử dụng hộp tìm kiếm để chuyển đến BigQuery. Ở đầu BigQuery Studio, hãy nhấp vào mũi tên xuống bên cạnh thẻ ở ngoài cùng bên phải rồi chọn Canvas dữ liệu. Đặt khu vực thành us-central1.Mở Canvas dữ liệu
  2. Nhấp vào Tìm kiếm dữ liệu. Trong hộp tìm kiếm của Canvas dữ liệu, hãy tìm kiếm recipes, nhấn Enter/Return để tìm kiếm rồi nhấp vào nút Thêm vào canvas bên cạnh tên bảng.
  3. Một bản trình bày trực quan về bảng công thức của bạn sẽ được tải vào Canvas dữ liệu BigQuery. Bạn có thể khám phá giản đồ của bảng, xem trước dữ liệu trong bảng và xem xét các thông tin chi tiết khác. Bên dưới biểu diễn bảng, hãy nhấp vào Truy vấn.
  4. Canvas sẽ tải một hộp thoại truy vấn BigQuery ít nhiều điển hình với một điểm bổ sung: phía trên cửa sổ truy vấn là một hộp văn bản mà bạn có thể dùng để yêu cầu Gemini trợ giúp. Hãy xem chúng ta có thể tìm thấy công thức làm bánh nào trong mẫu này không. Chạy câu lệnh sau (bằng cách nhập văn bản và nhấn Enter/Return để kích hoạt quá trình tạo SQL):
    Please select the title and ingredients for all the recipes with a title that contains the word cake.
    
  5. Xem SQL được tạo. Khi bạn đã hài lòng, hãy Chạy truy vấn.
  6. Không tệ chút nào! Bạn có thể thử nghiệm một vài câu lệnh và cụm từ tìm kiếm khác trước khi tiếp tục. Khi thử nghiệm, hãy thử các câu lệnh ít cụ thể hơn để xem câu lệnh nào hiệu quả và câu lệnh nào không. Ví dụ: câu lệnh này:
    Do I have any chili recipes?
    
    (Đừng quên chạy truy vấn mới) Trả về danh sách các công thức làm ớt nhưng không có nguyên liệu cho đến khi tôi sửa đổi thành:
    Do I have any chili recipes?  Please include their title and ingredients.
    
    (Có, tôi nói "làm ơn" khi nhắc. Mẹ tôi sẽ rất tự hào.) Tôi nhận thấy một công thức ớt có nấm, mà ai lại muốn ăn nấm trong món ớt chứ? Tôi đã yêu cầu Gemini giúp tôi loại trừ những công thức đó.
    Do I have any chili recipes?  Please include their title and ingredients, and ignore any recipes with mushrooms as an ingredient.
    

8. Mở Trình chỉnh sửa Cloud Shell

  1. Chuyển đến Cloud Shell Editor
  2. Nếu thiết bị đầu cuối không xuất hiện ở cuối màn hình, hãy mở thiết bị đầu cuối:
    • Nhấp vào trình đơn có biểu tượng ba dấu gạch ngang Biểu tượng trình đơn ba đường kẻ
    • Nhấp vào Terminal (Thiết bị đầu cuối)
    • Nhấp vào New Terminal (Thiết bị đầu cuối mới) Mở cửa sổ dòng lệnh mới trong Trình chỉnh sửa Cloud Shell
  3. Trong thiết bị đầu cuối, hãy thiết lập dự án bằng lệnh sau:
    • Định dạng:
      gcloud config set project [PROJECT_ID]
      
    • Ví dụ:
      gcloud config set project lab-project-id-example
      
    • Nếu bạn không nhớ mã dự án của mình, hãy làm như sau:
      • Bạn có thể liệt kê tất cả mã dự án bằng cách sử dụng:
        gcloud projects list | awk '/PROJECT_ID/{print $2}'
        
      Đặt mã dự án trong thiết bị đầu cuối Cloud Shell Editor
  4. Nếu được nhắc uỷ quyền, hãy nhấp vào Uỷ quyền để tiếp tục. Nhấp để uỷ quyền cho Cloud Shell
  5. Bạn sẽ thấy thông báo sau:
    Updated property [core/project].
    
    Nếu thấy biểu tượng WARNING và được yêu cầu Do you want to continue (Y/N)?, thì có thể bạn đã nhập sai mã dự án. Nhấn N, nhấn Enter rồi thử chạy lại lệnh gcloud config set project.

9. Bật API

Trong dòng lệnh, hãy bật các API:

gcloud services enable \
  compute.googleapis.com \
  sqladmin.googleapis.com \
  run.googleapis.com \
  artifactregistry.googleapis.com \
  cloudbuild.googleapis.com \
  networkconnectivity.googleapis.com \
  servicenetworking.googleapis.com \
  cloudaicompanion.googleapis.com

Nếu được nhắc uỷ quyền, hãy nhấp vào Uỷ quyền để tiếp tục. Nhấp để uỷ quyền cho Cloud Shell

Lệnh này có thể mất vài phút để hoàn tất, nhưng cuối cùng sẽ tạo ra một thông báo thành công tương tự như thông báo này:

Operation "operations/acf.p2-73d90d00-47ee-447a-b600" finished successfully.

10. Lên khung cho ứng dụng web cốt lõi bằng Python và Streamlit, với sự trợ giúp của Gemini

Với cả hai kho dữ liệu của Vertex AI Agent Builder đều đang lập chỉ mục và các ứng dụng tìm kiếm của chúng ta gần như đã sẵn sàng ra mắt, hãy bắt đầu xây dựng ứng dụng web.

Chúng tôi sẽ tận dụng Gemini Code Assist trong quá trình làm việc. Để biết thêm thông tin về cách sử dụng Gemini Code Assist trong Visual Studio Code, hãy xem tài liệu tại đây

  1. Trong thiết bị đầu cuối Cloud Shell Editor, hãy chạy lệnh này để sao chép kho lưu trữ ứng dụng công thức.
    git clone https://github.com/haggman/recipe-app
    
  2. Chạy lệnh này để mở thư mục ứng dụng trong Cloud Shell Editor.
    cloudshell open-workspace recipe-app/
    
  3. Trước khi khám phá thư mục được sao chép và bắt đầu làm việc trên ứng dụng web, chúng ta cần đăng nhập trình bổ trợ Cloud Code của trình chỉnh sửa vào Google Cloud và bật Gemini. Hãy thực hiện ngay. Ở dưới cùng bên trái của trình chỉnh sửa, hãy nhấp vào Cloud Code – Sign in (Cloud Code – Đăng nhập). Nếu bạn không thấy đường liên kết, hãy đợi một phút rồi kiểm tra lại.Cloud Code – Đăng nhập
  4. Cửa sổ dòng lệnh sẽ hiển thị một URL dài. Mở URL trong trình duyệt rồi thực hiện các bước để cấp cho Cloud Code quyền truy cập vào môi trường Google Cloud của bạn. Trong hộp thoại cuối cùng, hãy nhấp vào Sao chép mã xác minh rồi dán mã đó vào cửa sổ dòng lệnh đang chờ trong thẻ trình duyệt Cloud Shell Editor.
  5. Sau vài giây, đường liên kết Cloud Code ở dưới cùng bên trái của trình chỉnh sửa sẽ thay đổi thành Cloud Code – Không có dự án. Nhấp vào đường liên kết mới để chọn một dự án. Bảng lệnh sẽ mở ra ở đầu trình chỉnh sửa. Nhấp vào Chọn một dự án trong Google Cloud rồi chọn dự án của bạn. Sau một lát, đường liên kết ở phía dưới bên trái của trình chỉnh sửa sẽ cập nhật để hiển thị mã dự án của bạn. Điều này cho biết Cloud Code đã được đính kèm thành công vào dự án đang hoạt động của bạn.
  6. Khi Cloud Code được kết nối với dự án của bạn, bạn có thể kích hoạt Gemini Code Assist. Ở phía dưới bên phải của giao diện trình chỉnh sửa, hãy nhấp vào biểu trưng Gemini bị gạch chéo. Ngăn Gemini Chat sẽ mở ra ở bên trái của trình chỉnh sửa. Nhấp vào Chọn một dự án trên Google Cloud. Khi bảng lệnh mở ra, hãy chọn dự án của bạn. Nếu đã làm theo đúng các bước (và Google chưa thay đổi bất cứ điều gì), thì giờ đây, bạn sẽ thấy một cửa sổ trò chuyện đang hoạt động của Gemini.Đã tắt Gemini
  7. Tuyệt vời! Sau khi thiết lập xong cấu hình cho thiết bị đầu cuối, cuộc trò chuyện với Gemini và Cloud Code, hãy mở thẻ Explorer (Trình khám phá) và dành vài phút để khám phá các tệp trong dự án hiện tại.Trình khám phá
  8. Trong Explorer, hãy mở tệp requirements.txt để chỉnh sửa. Chuyển sang ngăn trò chuyện Gemini rồi hỏi:
    From the dependencies specified in the requirements.txt file, what type of application are we building?
    
  9. Vì vậy, chúng ta sẽ tạo một ứng dụng web có tính tương tác bằng Python và Streamlit, ứng dụng này sẽ tương tác với Vertex AI và Discovery Engine. Hiện tại, hãy tập trung vào các thành phần của ứng dụng web. Theo Gemini, Streamlit là một khung để xây dựng các ứng dụng web dựa trên dữ liệu bằng Python. Bây giờ, hãy hỏi:
    Does the current project's folder structure seem appropriate for a Streamlit app?
    
    Đây là điểm mà Gemini thường gặp vấn đề. Gemini có thể truy cập vào tệp mà bạn hiện đang mở trong trình chỉnh sửa, nhưng không thể xem toàn bộ dự án. Hãy thử hỏi:
    Given the below, does the current project's file and folder structure seem appropriate for a Streamlit app?
    - build.sh
    - Home.py
    - requirements.txt
    - pages
    -- Cooking_Advice.py
    -- Recipe_Search.py
    
    Bạn muốn nhận được câu trả lời chính xác hơn?
  10. Hãy tìm hiểu thêm thông tin về Streamlit:
    What can you tell me about Streamlit?
    
    Tuyệt vời! Gemini đã cung cấp cho chúng ta một bản tổng quan hữu ích, bao gồm cả ưu và nhược điểm.
  11. Nếu muốn tìm hiểu về nhược điểm, bạn có thể hỏi:
    What are the major downsides or shortcomings?
    
    Lưu ý: Chúng ta không cần phải nói "của Streamlit" vì cuộc trò chuyện với Gemini là một mô hình đàm thoại (nhiều lượt). Gemini biết chúng ta đang nói về điều gì vì chúng ta đang trong một phiên trò chuyện. Nếu bạn muốn xoá nhật ký trò chuyện trên Gemini bất cứ lúc nào, hãy sử dụng biểu tượng thùng rác ở đầu cửa sổ trò chuyện về mã của Gemini.

11. Triển khai ứng dụng web lên Cloud Run

Tuyệt vời, chúng ta đã có cấu trúc ứng dụng cốt lõi, nhưng liệu tất cả có hoạt động không? Tốt hơn nữa là chúng ta nên lưu trữ ở đâu trong Google Cloud?

  1. Trong cửa sổ cuộc trò chuyện với Gemini, hãy hỏi:
    If I containerize this application, what compute technologies in Google Cloud would be best for hosting it?
    
  2. Xin lưu ý rằng nếu chưa làm việc trong IDE, bạn cũng có thể yêu cầu Trợ lý Google Cloud. Mở Google Cloud Console, sau đó mở Gemini Cloud Assist và hỏi:
    If I have a containerized web application, where would be the best place to run it in Google Cloud?
    
    Hai bộ lời khuyên này có giống nhau không? Bạn có đồng ý/không đồng ý với lời khuyên nào không? Hãy nhớ rằng Gemini là một trợ lý AI tạo sinh và giống như trợ lý là con người, bạn sẽ không phải lúc nào cũng đồng ý với mọi điều mà Gemini nói. Tuy nhiên, việc có trợ lý luôn bên cạnh trong khi bạn làm việc trên Google Cloud và trong trình soạn thảo mã có thể giúp bạn làm việc hiệu quả hơn nhiều.
  3. Đối với một ứng dụng web trong vùng chứa ngắn hạn không trạng thái, Cloud Run sẽ là một lựa chọn tuyệt vời. Trong cửa sổ cuộc trò chuyện với Gemini trong trình soạn thảo mã, hãy thử câu lệnh:
    What steps would be required to run this application in Cloud Run?
    
  4. Có vẻ như việc đầu tiên chúng ta cần làm là tạo một Dockerfile. Sử dụng trình chỉnh sửa, hãy tạo một tệp có tên là Dockerfile trong thư mục gốc của dự án. Đảm bảo rằng bạn không vô tình đặt tệp này vào thư mục pages. Mở tệp để chỉnh sửa.
  5. Hãy sử dụng bảng điều khiển bên của cuộc trò chuyện với Gemini để tạo tệp Docker. Hãy dùng một câu lệnh như câu lệnh bên dưới. Khi kết quả xuất hiện trong cuộc trò chuyện, hãy dùng dấu + bên cạnh biểu tượng sao chép ngay phía trên Dockerfile được đề xuất để chèn mã được đề xuất vào Dockerfile.
    Create a Dockerfile for the application in the current folder. The dependencies are defined in requirements.txt and I want you to use the Python 3 slim bookworm base image.
    
    Gemini không phải lúc nào cũng trả về cùng một câu trả lời cho cùng một câu lệnh. Lần đầu tiên tôi yêu cầu Gemini cung cấp một Dockerfile, tôi đã nhận được chính xác tệp mà tôi sẽ đề xuất bạn sử dụng. Tôi vừa nhận được đề xuất:
    # Base image
    FROM python:3-bookworm-slim
    
    # Set working directory
    WORKDIR /app
    
    # Install dependencies
    RUN apt-get update && apt-get install -y \
        build-essential \
        libpq-dev \
        gcc \
        python3-dev \
        && rm -rf /var/lib/apt/lists/*
    
    # Install pip and virtualenv
    RUN pip install --upgrade pip virtualenv
    
    # Create virtual environment
    RUN python3 -m venv venv
    
    # Activate virtual environment
    WORKDIR /app/venv/bin
    RUN . activate
    
    # Install Streamlit and libraries from requirements.txt
    RUN pip install -r requirements.txt
    
    # Copy application files
    COPY . /app
    
    # Expose port 8501 for Streamlit
    EXPOSE 8501
    
    # Start Streamlit app
    CMD ["streamlit", "run", "main.py"]
    
    Đó là một tệp Dockerfile rất lớn. Tôi sẽ đơn giản hoá nó một chút. Chúng ta không cần phần apt-get vì mọi thứ cần thiết cho Python đều đã có trong hình ảnh cơ sở của chúng ta. Ngoài ra, việc sử dụng môi trường ảo trong vùng chứa Python là một sự lãng phí không gian, vì vậy, tôi sẽ xoá môi trường đó. Bạn không nhất thiết phải dùng lệnh expose, nhưng cũng không sao cả. Ngoài ra, nó đang cố gắng khởi động main.py mà tôi không có.
  6. Trong thư mục recipe-app, hãy tạo một tệp có tên là Dockerfile rồi dán nội dung sau:
    FROM python:3.11-slim-bookworm
    
    WORKDIR /app
    
    COPY requirements.txt .
    RUN pip install --no-cache-dir --upgrade pip && \
        pip install --no-cache-dir -r requirements.txt
    
    COPY . .
    
    CMD ["streamlit", "run", "Home.py"]
    
  7. Gemini có thể hoạt động thông qua cửa sổ trò chuyện, nhưng cũng có thể hoạt động trực tiếp trong tệp mã của bạn bằng cách sử dụng các nhận xét, chẳng hạn như cách chúng ta đã sử dụng trong sổ tay Data Wrangling (Xử lý dữ liệu). Gemini cũng có thể được gọi bằng cách sử dụng tổ hợp phím Control+i trên Windows hoặc Command+i trên máy Mac. Nhấp vào một vị trí nào đó trong Dockerfile, kích hoạt Gemini bằng lệnh Command+i / Control+i thích hợp.
  8. Tại dấu nhắc, hãy nhập nội dung bên dưới. Xem xét và Chấp nhận thay đổi.
    Please comment the current file.
    
    Thật tuyệt vời phải không?! Bạn đã bao nhiêu lần phải làm việc với mã của người khác, chỉ để lãng phí thời gian tìm hiểu kiến thức cơ bản về công việc không có chú thích của họ trước khi bạn có thể bắt đầu thực hiện các thay đổi. Gemini sẽ giúp bạn!
  9. Giờ đây, hãy hỏi Gemini cách bạn có thể dùng Cloud Run để tạo và triển khai một hình ảnh mới có tên là recipe-web-app từ Dockerfile trong thư mục hiện tại.
    How could I use gcloud to build a new Cloud Run service named recipe-web-app from the current directory?
    
  10. Hãy tạo và triển khai ứng dụng của chúng ta. Trong cửa sổ dòng lệnh, hãy thực thi lệnh gcloud run deploy
    gcloud run deploy recipe-web-app \
        --allow-unauthenticated \
        --source=. \
        --region=us-central1 \
        --port=8501
    
    Nếu bạn thấy lời nhắc yêu cầu tạo một kho lưu trữ Artifact Registry, hãy nhấn enter/return
    Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository
    named cloud-run-source-deploy in region us-central1 will be created.
    
    Do you want to continue (Y/n)?
    
  11. Nếu bạn xem quy trình xây dựng, trước tiên, quy trình này sẽ tạo kho lưu trữ Docker của Artifact Registry. Sau đó, Cloud Build sẽ dùng Dockerfile trong thư mục cục bộ để tạo hình ảnh vùng chứa. Cuối cùng, hình ảnh Docker sẽ được triển khai vào một dịch vụ Cloud Run mới. Khi kết thúc tập lệnh, bạn sẽ nhận được một URL kiểm thử Cloud Run để sử dụng.

Mở đường liên kết được trả về trong một thẻ mới của trình duyệt. Hãy dành chút thời gian tìm hiểu cấu trúc và các trang của ứng dụng. Tuyệt vời, giờ chúng ta cần móc vào chức năng AI tạo sinh.

12. Kết nối trang Lời khuyên nấu ăn với ứng dụng Agent Builder tìm kiếm sách nấu ăn của chúng tôi

Chúng ta đã có khung cho ứng dụng web đang chạy, nhưng cần kết nối 2 trang công việc với 2 ứng dụng tìm kiếm Vertex AI Agent Builder. Hãy bắt đầu với Cooking Advice.

  1. Để thẻ Cloud Shell Editor mở. Trong bảng điều khiển Cloud, hãy dùng tính năng tìm kiếm để chuyển đến Chat trong Vertex AI.
  2. Trong ngăn cài đặt ở bên phải của trang, hãy đặt mô hình thành gemini-1.5-flash-002. Trượt giới hạn mã thông báo đầu ra lên mức tối đa để mô hình có thể trả về câu trả lời dài hơn nếu cần. Mở phần Cài đặt bộ lọc an toàn. Đặt Lời nói hận thù, Nội dung khiêu dâm và Nội dung quấy rối thành Chặn một phần. Đặt chế độ Nội dung nguy hiểm thành Chặn một số rồi nhấp vào Lưu. Chúng tôi sẽ đặt mức độ nghiêm trọng của Nội dung nguy hiểm xuống một chút vì Gemini có thể hiểu nhầm việc nói về dao và việc cắt là bạo lực.
  3. Trượt nút bật/tắt để bật tính năng liên kết thực tế, sau đó nhấp vào Tuỳ chỉnh. Đặt nguồn liên kết thực tế thành Vertex AI Search và sử dụng đường dẫn sau cho kho dữ liệu. Thay đổi YOUR_PROJECT_ID thành mã dự án mà bạn thấy ở gần nút Kết thúc bài thực hành trong các hướng dẫn này, sau đó Lưu chế độ cài đặt cơ sở
    projects/YOUR_PROJECT_ID/locations/global/collections/default_collection/dataStores/old-cookbooks-id
    
    LƯU Ý: Nếu gặp lỗi, có nghĩa là bạn chưa thay đổi mã dự án thành mã dự án thực tế của mình hoặc bạn có thể đã bỏ lỡ bước thay đổi mã nhận dạng Kho dữ liệu của Trình tạo tác nhân old-cookbooks. Kiểm tra Agent Builder > Data Stores > old-cookbooks để biết Data store ID thực tế của nó.
  4. Thử gửi một vài tin nhắn trò chuyện. Có lẽ bạn nên bắt đầu với những thông tin dưới đây. Bạn có thể thử một vài lựa chọn khác nếu muốn.
    How can I tell if a tomato is ripe?
    
  5. Mô hình hoạt động, giờ hãy thử nghiệm với mã. Nhấp vào Xoá cuộc trò chuyện để cuộc trò chuyện của chúng ta không trở thành một phần của mã, sau đó nhấp vào Lấy mã.Xoá cuộc trò chuyện và lấy mã
  6. Ở đầu cửa sổ mã, hãy nhấn vào Mở sổ tay để chúng tôi có thể thử nghiệm và hoàn thiện mã trong Colab Enterprise trước khi tích hợp mã đó vào ứng dụng của mình.
  7. Hãy dành vài phút để làm quen với đoạn mã này. Hãy thực hiện một số thay đổi để điều chỉnh cho phù hợp với những gì chúng ta muốn. Trước khi bắt đầu, hãy chạy ô mã đầu tiên để kết nối với tài nguyên điện toán và cài đặt SDK Nền tảng Trí tuệ nhân tạo. Sau khi khối chạy, bạn sẽ được nhắc khởi động lại phiên. Hãy tiếp tục và làm việc đó.
  8. Chuyển sang mã mà chúng ta đã lấy ra từ Vertex AI Studio. Đổi tên phương thức multiturn_generate_content thành start_chat_session.
  9. Di chuyển đến lệnh gọi phương thức model = GenerativeModel(. Mã hiện có xác định generation_configsafety_settings nhưng không thực sự sử dụng chúng. Sửa đổi quá trình tạo GenerativeModel để quá trình này giống với:
    model = GenerativeModel(
        "gemini-1.5-flash-002",
        tools=tools,
        generation_config=generation_config,
        safety_settings=safety_settings,
    )
    
  10. Cuối cùng, hãy thêm một dòng cuối cùng vào phương thức, ngay bên dưới chat = model.start_chat(), để hàm trả về đối tượng chat. Hàm đã hoàn tất sẽ có dạng như bên dưới.LƯU Ý: KHÔNG SAO CHÉP mã này vào sổ tay của bạn. Nó chỉ đơn giản là ở đây để kiểm tra tính hợp lý.
    def start_chat_session():
        vertexai.init(project="qwiklabs-gcp-02-9a7298ceaaec", location="us-central1")
        tools = [
            Tool.from_retrieval(
                retrieval=grounding.Retrieval(
                    source=grounding.VertexAISearch(datastore="projects/qwiklabs-gcp-02-9a7298ceaaec/locations/global/collections/default_collection/dataStores/old-cookbooks-id"),
                )
            ),
        ]
        model = GenerativeModel(
            "gemini-1.5-flash-002",
            tools=tools,
            generation_config=generation_config,
            safety_settings=safety_settings,
        )
        chat = model.start_chat()
        return chat
    
  11. Di chuyển xuống cuối ô mã và thay đổi dòng cuối cùng gọi hàm cũ để dòng này gọi tên hàm mới và lưu trữ đối tượng được trả về trong một biến chat. Khi bạn hài lòng với các thay đổi, hãy chạy ô.
    chat = start_chat_session()
    
  12. Tạo một ô mã mới và thêm nhận xét # Use chat to invoke Gemini and print out the response. Chuyển đến dòng tiếp theo rồi nhập resp. Gemini sẽ tự động hoàn thành khối mã cho bạn. Cập nhật câu lệnh thành How can I tell if a tomato is ripe?. Chạy ô
    response = chat.send_message("How can I tell if a tomato is ripe?")
    print(response)
    
  13. Đó là phản hồi chính xác, nhưng phần chúng ta thực sự muốn là trường text được lồng. Sửa đổi khối mã để chỉ in phần đó, chẳng hạn như:
    response = chat.send_message("How can I tell if a tomato is ripe?")
    print(response.candidates[0].content.parts[0].text)
    
  14. Tốt rồi, giờ chúng ta đã có mã trò chuyện hoạt động, hãy tích hợp mã này vào ứng dụng web của mình. Sao chép tất cả nội dung của ô mã tạo hàm start_chat_session (chúng ta sẽ không cần ô kiểm thử). Nếu nhấp vào ô, bạn có thể nhấp vào trình đơn có biểu tượng ba dấu chấm ở góc trên bên phải rồi sao chép từ đóSao chép ô
  15. Chuyển sang thẻ Cloud Shell Editor rồi mở pages\Cooking_Advice.py để chỉnh sửa.
  16. Tìm bình luận:
    #
    # Add the code you copied from your notebook below this message
    #
    
  17. Dán mã bạn đã sao chép ngay bên dưới chú thích Thêm mã. Tuyệt vời! Giờ đây, chúng ta đã có phần điều khiển công cụ trò chuyện thông qua một lệnh gọi có căn cứ đến Gemini. Bây giờ, hãy tích hợp nó vào Streamlit.
  18. Tìm phần mã được nhận xét ngay bên dưới dòng nhận xét:
    #
    # Here's the code to setup your session variables
    # Uncomment this block when instructed
    #
    
  19. Huỷ đánh dấu phần mã này (cho đến phần Setup done, let's build the page UI tiếp theo) và khám phá phần mã này. Thao tác này tạo hoặc truy xuất các biến phiên trò chuyện và nhật ký.
  20. Tiếp theo, chúng ta cần tích hợp chức năng nhật ký và trò chuyện vào giao diện người dùng. Di chuyển trong mã cho đến khi bạn tìm thấy nhận xét bên dưới.
    #
    # Here's the code to create the chat interface
    # Uncomment the below code when instructed
    #
    
  21. Huỷ chú thích phần còn lại của mã bên dưới chú thích và dành chút thời gian để khám phá mã đó. Nếu muốn, bạn có thể đánh dấu đoạn văn bản đó và yêu cầu Gemini giải thích chức năng của đoạn văn bản.
  22. Tuyệt vời, bây giờ hãy tạo ứng dụng và triển khai ứng dụng đó. Khi URL xuất hiện, hãy chạy ứng dụng và thử dùng trang Cooking Advisor. Có thể bạn hỏi về cà chua chín hoặc bot biết cách chế biến cải Brussels ngon.
    gcloud run deploy recipe-web-app \
        --allow-unauthenticated \
        --source=. \
        --region=us-central1 \
        --port=8501
    

Thật tuyệt vời! Trợ lý nấu ăn AI cá nhân của riêng bạn :-)

13. (Không bắt buộc) Kết nối trang Tìm kiếm công thức với ứng dụng Trình tạo tác nhân tìm kiếm công thức

Khi kết nối trang Lời khuyên nấu ăn với nguồn có căn cứ, chúng tôi đã thực hiện việc này bằng cách sử dụng trực tiếp Gemini API. Đối với tính năng Tìm kiếm công thức, hãy kết nối trực tiếp với ứng dụng tìm kiếm Vertex AI Agent Builder.

  1. Trong Cloud Shell Editor, hãy mở trang pages/Recipe_Search.py để chỉnh sửa. Tìm hiểu cấu trúc của trang.
  2. Ở gần đầu tệp, hãy đặt mã dự án.
  3. Kiểm tra hàm search_sample. Đoạn mã này ít nhiều đến trực tiếp từ tài liệu về Discovery Engine tại đây. Bạn có thể tìm thấy bản sao đang hoạt động trong sổ tay này tại đây.Thay đổi duy nhất mà tôi thực hiện là trả về response.results thay vì chỉ trả về kết quả. Nếu không có tham số này, kiểu dữ dữ liệu trả về sẽ là một đối tượng được thiết kế để phân trang qua kết quả và đó là điều chúng ta không cần cho ứng dụng cơ bản của mình.
  4. Di chuyển đến cuối tệp và bỏ chú thích toàn bộ phần bên dưới Here are the first 5 recipes I found.
  5. Đánh dấu toàn bộ phần bạn vừa bỏ chú thích và mở Gemini Code Chat. Hỏi Explain the highlighted code. Nếu bạn không chọn nội dung nào, Gemini có thể giải thích toàn bộ tệp. Nếu bạn đánh dấu một đoạn văn và yêu cầu Gemini giải thích, bình luận hoặc cải thiện đoạn văn đó, Gemini sẽ thực hiện.Hãy dành chút thời gian đọc phần giải thích. Việc sử dụng sổ tay Colab Enterprise là một cách tuyệt vời để khám phá Gemini API trước khi tích hợp các API này vào ứng dụng của bạn. Điều này đặc biệt hữu ích khi khám phá một số API mới hơn có thể chưa được ghi lại đầy đủ.
  6. Tại cửa sổ dòng lệnh của trình chỉnh sửa, hãy chạy build.sh để triển khai ứng dụng cuối cùng. Vui lòng đợi cho đến khi phiên bản mới được triển khai rồi mới chuyển sang bước tiếp theo.

14. (Không bắt buộc) Khám phá ứng dụng cuối cùng

Dành vài phút để khám phá ứng dụng cuối cùng.

  1. Trong bảng điều khiển Google Cloud, hãy dùng tính năng tìm kiếm để chuyển đến Cloud Run, sau đó nhấp vào recipe-web-app.
  2. Tìm URL kiểm thử ứng dụng (gần phía trên cùng) rồi mở URL đó trong một thẻ trình duyệt mới.
  3. Trang chủ của ứng dụng sẽ xuất hiện. Lưu ý bố cục và chế độ điều hướng cơ bản do Streamlit cung cấp, trong đó các tệp python trong thư mục pages xuất hiện dưới dạng các lựa chọn điều hướng và Home.py được tải dưới dạng trang chủ. Chuyển đến trang Lời khuyên về nấu ăn.
  4. Sau vài giây, giao diện trò chuyện sẽ xuất hiện. Một lần nữa, hãy lưu ý đến bố cục cốt lõi đẹp mắt do Streamlit cung cấp.
  5. Hãy thử đặt một vài câu hỏi liên quan đến nấu ăn và xem cách bot hoạt động. Chẳng hạn như:
    Do you have any advice for preparing broccoli?
    
    How about a classic chicken soup recipe?
    
    Tell me about meringue.
    
  6. Giờ thì hãy tìm một hoặc hai công thức nấu ăn. Chuyển đến trang Tìm kiếm công thức và thử tìm kiếm một vài công thức. Chẳng hạn như:
    Chili con carne
    
    Chili, corn, rice
    
    Lemon Meringue Pie
    
    A dessert containing strawberries
    

15. Xin chúc mừng!

Bạn đã tạo một ứng dụng tận dụng các ứng dụng Vertex AI Agent Builder. Trong quá trình này, bạn đã khám phá Gemini Cloud Assist, Gemini Code Assist và các tính năng chuyển đổi ngôn ngữ tự nhiên sang SQL của Data Canvas trong BigQuery. Thật tuyệt vời!

Dọn dẹp

Cloud SQL không có bậc miễn phí và sẽ tính phí nếu bạn tiếp tục sử dụng dịch vụ này. Bạn có thể xoá dự án trên đám mây để tránh phát sinh thêm chi phí.

Mặc dù Cloud Run không tính phí khi dịch vụ không được sử dụng, nhưng bạn vẫn có thể bị tính phí khi lưu trữ hình ảnh vùng chứa trong Artifact Registry. Khi bạn xoá dự án trên đám mây, hệ thống sẽ ngừng tính phí cho tất cả tài nguyên được dùng trong dự án đó.

Nếu muốn, hãy xoá dự án:

gcloud projects delete $GOOGLE_CLOUD_PROJECT

Bạn cũng có thể xoá các tài nguyên không cần thiết khỏi ổ đĩa cloudshell. Bạn có thể:

  1. Xoá thư mục dự án của lớp học lập trình:
    rm -rf ~/task-app
    
  2. Cảnh báo! Bạn không thể huỷ thao tác tiếp theo này sau khi thực hiện! Nếu muốn xoá mọi thứ trên Cloud Shell để giải phóng dung lượng, bạn có thể xoá toàn bộ thư mục gốc. Hãy cẩn thận để đảm bảo rằng mọi thứ bạn muốn giữ lại đều được lưu ở nơi khác.
    sudo rm -rf $HOME