1. Tổng quan
Trong lớp học 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 tính năng Trợ lý trên đám mây của Gemini, truy vấn dữ liệu BigQuery bằng ngôn ngữ tự nhiên cho các tính năng SQL của Data Canvas, viết mã trong sổ tay Jupyter của Colab Enterprise và trong Eclipse Theia (Visual Studio Code) với sự trợ giúp của tính năng Trợ lý mã của Gemini, đồ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 trên Cloud Storage và các nguồn cơ sở BigQuery trong Trình tạo tác nhân AI của Vertex.
Mục tiêu của chúng tôi là tạo một trang web dạy nấu ăn và công thức nấu ăn có tên là AI Recipe Haven. Trang web sẽ được xây dựng bằng Python và Streamlit, đồng thời sẽ chứa hai trang chính. Cooking Advice sẽ lưu trữ một chatbot mà chúng ta sẽ tạo bằng Gemini và một nguồn dựa trên Trình tạo tác nhân Vertex AI 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ề nấu ăn và trả lời các câu hỏi liên quan đến nấu ăn. Tìm kiếm công thức nấu ăn 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 nấu ăn của BigQuery.
Nếu bạn gặp khó khăn với bất kỳ mã nào trong bài tập này, 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 (giải pháp).
Mục tiêu
Trong lớp học này, bạn sẽ tìm hiểu cách thực hiện các nhiệm vụ sau:
- Kích hoạt và sử dụng tính năng Trợ lý trên đám mây của Gemini
- Tạo ứng dụng tìm kiếm trong Vertex AI Agent Builder cho chatbot tư vấn nấu ăn
- Tải và dọn dẹp dữ liệu trong sổ tay Colab Enterprise nhờ sự trợ giúp của tính năng Gemini Code Assist
- Tạo ứng dụng tìm kiếm trong Vertex AI Agent Builder cho trình tạo công thức nấu ăn
- Xác định ứng dụng web Python và Streamlit cốt lõi, với một chút trợ giúp của Gemini
- Triển khai ứng dụng web lên Cloud Run
- Kết nối trang Cooking Advice với ứng dụng Trình tạo tác nhân tìm kiếm sách dạy nấu ăn
- (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 hoàn thiện
2. Cách thiết lập và yêu cầu
Trước khi bạn nhấp vào nút Bắt đầu lớp học
Đọc các hướng dẫn sau. Các lớp học này có tính giờ và bạn không thể tạm dừng. Đồng hồ hẹn giờ bắt đầu khi bạn nhấp vào Bắt đầu lớp học, cho biết thời lượng bạn có thể sử dụng các tài nguyên của Google Cloud.
Lớp học thực hành Qwiklabs này cho phép bạn tự thực hiện các hoạt động trong lớp học trong một môi trường đám mây thực tế, chứ không phải trong môi trường mô phỏng hoặc minh hoạ. Sandbox này thực hiện việc này bằng cách cung cấp cho bạn thông tin xác thực mới, tạm thời để bạn đăng nhập và truy cập vào Google Cloud trong suốt thời gian tham gia lớp học này.
Bạn cần có
Để hoàn thành lớp học lập trình này, bạn cần:
- Quyền truy cập vào một trình duyệt Internet tiêu chuẩn (nên dùng trình duyệt Chrome).
- Đã đến lúc hoàn thành lớp học này.
Lưu ý: Nếu bạn đã có tài khoản hoặc dự án Google Cloud cá nhân, đừng sử dụng tài khoản hoặc dự án đó cho lớp học này.
Lưu ý: Nếu bạn đang sử dụng Pixelbook, hãy mở một cửa sổ Ẩn danh để chạy lớp học này.
Cách bắt đầu lớp học lập trình và đăng nhập vào Google Cloud Console
- Nhấp vào nút Start Lab (Bắt đầu lớp học). Nếu bạn cần thanh toán cho lớp học lập trình, một cửa sổ bật lên sẽ mở ra để bạn chọn phương thức thanh toán. Ở bên trái là một bảng điều khiển chứa thông tin xác thực tạm thời mà bạn phải sử dụng cho lớp học này.
- Sao chép tên người dùng rồi nhấp vào Mở Google Console. Phòng thí nghiệm sẽ khởi động các tài nguyên, sau đó mở một thẻ khác hiển thị trang Đăng nhập.
Mẹo: Mở các thẻ trong các cửa sổ riêng biệt, cạnh nhau.
Nếu bạn thấy trang Chọn tài khoản, hãy nhấp vào Sử dụng một tài khoản khác.
- Trên trang Đăng nhập, hãy dán tên người dùng mà bạn đã sao chép từ bảng điều khiển Thông tin chi tiết về kết nối. Sau đó, hãy sao chép và dán mật khẩu.
Lưu ý quan trọng: Bạn phải sử dụng thông tin xác thực trong bảng Connection Details (Thông tin chi tiết về kết nối). Không sử dụng thông tin đăng nhập của bạn trên Qwiklabs. Nếu bạn có tài khoản Google Cloud của riêng mình, đừng sử dụng tài khoản đó cho lớp học này (để tránh bị tính phí). 4. Nhấp vào các trang tiếp theo:
- Chấp nhận các điều khoản và điều kiện.
- Không thêm các lựa chọn khôi phục hoặc tính năng xác thực hai yếu tố (vì đây là tài khoản tạm thời).
- Không đăng ký dùng thử miễn phí.
Sau vài phút, Cloud Console sẽ mở trong thẻ này.
Lưu ý: Bạn có thể xem trình đơn có danh sách Sản phẩm và dịch vụ của Google Cloud bằng cách nhấp vào trình đơn Điều hướng ở trên cùng bên trái.
3. Nhiệm vụ 0. Kiểm tra cụm Máy trạm
Trong phần sau của lớp học này, bạn sẽ sử dụng Google Cloud Workstation để thực hiện một số công việc phát triển. Quá trình khởi động cho lớp học này đã bắt đầu tạo cụm của máy trạm. Trước khi chuyển sang bước tiếp theo, hãy đảm bảo rằng cụm đang được tạo.
- Trong Google Cloud Console, hãy sử dụng hộp tìm kiếm để chuyển đến phần Máy trạm trên đám mây.
- Sử dụng trình đơn điều hướng bên trái để xem phần Quản lý cụm.
- Nếu có một cụm đang Cập nhật, bạn đã hoàn tất và có thể chuyển sang Nhiệm vụ 1. Nếu bạn không thấy cụm nào ở trạng thái nào, hãy làm mới trang. Nếu bạn vẫn không thấy cụm đang Cập nhật (tạo), hãy Kết thúc lớp học bằng cách sử dụng nút ở phía trên bên trái của hướng dẫn này rồi khởi động lại lớp học.
4. Nhiệm vụ 1. Kích hoạt và sử dụng tính năng Trợ lý trên đám mây của Gemini
Trong nhiệm vụ này, chúng ta sẽ kích hoạt và sử dụng tính năng Trợ lý trên đám mây của Gemini. Khi bạn làm việc trong Google Cloud Console, tính năng Trợ lý đám mây của Gemini có thể đưa ra lời khuyên, giúp bạn xây dựng, định cấu hình và theo dõi cơ sở hạ tầng Google Cloud, thậm chí có thể đề xuất các lệnh gcloud
và viết tập lệnh Terraform.
- Để kích hoạt tính năng Trợ lý trên đám mây để sử dụng, hãy nhấp vào hộp Tìm kiếm ở đầu giao diện người dùng Cloud Console rồi chọn Hỏi Gemini (hoặc có thể là Hỏi Gemini về Cloud Console).
- Di chuyển đến phần API bắt buộc trên trang rồi Bật API Gemini cho Google Cloud.
- 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 Máy trạm trên đám mây. Hãy dành vài phút để khám phá phản hồi đã tạo.
- Tiếp theo, hãy hỏi về các lợi ích của Trình tạo tác nhân và cách công cụ này có thể giúp tạo ra các câu trả lời tạo sinh.
- Cuối cùng, hãy xem xét một ví dụ so sánh. Trong cửa sổ trò chuyện Gemini của 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?
- Bây giờ, trong cửa sổ không ẩn danh, hãy truy cập vào trang web công khai của Gemini tại đây, đăng nhập nếu cần rồi đặt cùng một câu hỏi. Các câu trả lời có giống nhau hay ít nhất là tương tự nhau không? Các bước cụ thể? Có cách nào tốt hơn đáng kể không? Dù sao, hãy ghi nhớ các câu trả lời này khi chúng ta thực hiện các bước tiếp theo.
Lưu ý: Nếu cố gắng thực hiện bước trên bằng tài khoản Qwiklabs tạm thời, bạn sẽ bị chặn. Nếu tài khoản công việc của bạn cũng bị chặn vì tổ chức của bạn không cho phép sử dụng ứng dụng web Gemini, bạn chỉ cần bỏ qua bước này và tiếp tục. Điều này sẽ không ảnh hưởng đến khả năng hoàn thành bài tập này.
5. Nhiệm vụ 2. Tạo ứ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 ta đang xây dựng sẽ có một trang tư vấn nấu ăn chứa một chatbot được thiết kế để giúp người dùng tìm câu trả lời cho các câu hỏi liên quan đến việc nấu ăn. Ứng dụng này sẽ được Gemini cung cấp dựa trên một nguồn chứa 70 sách dạy 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 đáng tin cậy mà Gemini sử dụng khi trả lời câu hỏi.
- Sử dụng hộp tìm kiếm 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. Nếu bạn thấy một hộp bật lên về việc cần bật chính API Vertex AI, vui lòng Bật API đó.
- Sử dụng tính năng tìm kiếm để chuyển đến Agent Builder (Trình tạo tác nhân), sau đó Tiếp tục và kích hoạt API.
- Như Gemini đã đề xuất trong phần tư vấn trước, việc tạo ứng dụng tìm kiếm trong Trình tạo tác nhân 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 thông tin được sử dụng trong câu trả lời đó trong nguồn đáng tin cậy thay vì lấy từ kiến thức bẩm sinh của mình.
Trong trình đơn bên trái, hãy chuyển đến Kho dữ liệu và Tạo kho dữ liệu. 4. 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 để xây dựng trang tư vấn nấu ăn hiện đang 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 bộ nhớ trên đám mây. 5. Kiểm tra nhưng không thay đổi các tuỳ chọn mặc định liên quan đến loại thông tin mà chúng ta đang nhập. Giữ nguyên loại nhập là Thư mục và sử dụng đường dẫn bộ chứa: labs.roitraining.com/labs/old-cookbooks
, sau đó Tiếp tục. 6. Đặt tên cho kho dữ liệu: old-cookbooks
. Chỉnh sửa và thay đổi mã nhận dạng thành old-cookbooks-id
rồi Tạo kho dữ liệu.
Trình tạo Vertex AI Agent hỗ trợ một số loại ứng dụng và Kho dữ liệu đóng vai trò là nguồn đáng tin cậy cho từng loại ứng dụng. Ứng dụng tìm kiếm phù hợp để sử dụng chung và tìm kiếm. Ứng dụng trò chuyện dành cho các luồng tạo sinh trong các ứng dụng bot trò chuyện/bot thoại dựa trên luồng dữ liệu. Ứng dụng đề xuất giúp tạo ra các công cụ đề xuất hiệu quả hơn. Ngoài ra, ứng dụng Agent dùng để tạo các tác nhân do GenAI điều khiển. Cuối cùng, Agent có thể 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ới sản phẩm đang được xem trước, chúng ta sẽ gắn bó với loại ứng dụng Tìm kiếm. 7. Sử dụng trình đơn bên trái để chuyển đến Apps (Ứng dụng), sau đó nhấp vào Create App (Tạo ứng dụng). 8. Chọn loại ứng dụng Tìm kiếm. Kiểm tra nhưng không thay đổi các tuỳ chọn. Đặt tên cho ứng dụng: cookbook-search
. Chỉnh sửa và đặt mã ứng dụng thành cookbook-search-id
. Đặt công ty thành Google
rồi Tiếp tục. 9. Kiểm tra kho dữ liệu old-cookbooks
mà bạn đã tạo ở một vài bước trước và Tạo Ứng dụng tìm kiếm.
Nếu kiểm tra thẻ Hoạt động, bạn có thể thấy sách nấu ăn vẫn đang nhập và lập chỉ mục. Trình tạo tác nhân sẽ mất hơn 5 phút để lập chỉ mục hàng nghìn trang trong 70 cuốn sách dạy nấu ăn mà chúng ta đã cung cấp. Trong khi chờ quá trình này diễn ra, hãy tải và dọn dẹp một số dữ liệu cơ sở dữ liệu công thức nấu ăn cho trình tạo công thức nấu ăn của chúng ta.
6. Nhiệm vụ 3. Tải và dọn dẹp dữ liệu trong sổ tay Colab Enterprise nhờ sự trợ giúp của tính năng 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 Jupiter. Chúng ta sẽ sử dụng sản phẩm mới nhất của Google, Colab Enterprise. Một số bạn có thể đã quen thuộc với sản phẩm Colab của Google. Sản phẩm này thường được các cá nhân và tổ chức muốn thử nghiệm với sổ tay Jupiter trong môi trường miễn phí sử dụng. 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 còn lại của Google và tận dụng tối đa các tính 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 tính năng Hỗ trợ mã Gemini của Google. Bạn có thể sử dụng tính năng Hỗ trợ mã trong một số trình soạn thảo mã khác nhau. Tính năng này có thể đưa ra lời khuyên cũng như các đề xuất nội tuyến liền mạch trong khi bạn 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 nấu ăn.
- Sử dụng tính năng tìm kiếm để chuyển đến Colab Enterprise và Tạo sổ tay. Nếu bạn nhận được lời mời thử nghiệm các tính năng mới của Colab, hãy đóng lời mời đó. Để bắt đầu sử dụng thời gian chạy, sức mạnh điện toán đằng sau máy tính xách tay, hãy nhấn vào Connect (Kết nối) ở góc trên bên phải của máy tính xách tay mới.
- Sử dụng trình đơn có biểu tượng ba dấu chấm bên cạnh tên sổ tay hiện tại trong ngăn Tệp Colab Enterprise để đổi tên sổ tay thành
Data Wrangling
.
- Tạo một hộp + Văn bản mới và sử dụng mũi tên lên để di chuyển hộp đó sao cho hộp đó là ô đầu tiên trên trang.
- Chỉnh sửa hộp văn bản rồi nhập:
# Data Wrangling
Import the Pandas library
- Trong khối mã bên dưới khối văn bản bạn vừa tạo, hãy bắt đầu nhập imp và tính năng Trợ giúp mã Gemini sẽ đề xuất phần còn lại của lệnh nhập có màu xám. Nhấn phím tab để chấp nhận mục đề xuất.
import pandas as pd
- Bên dưới hộp mã nhập, 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.
- 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 và kiểm tra mã do Trợ lý mã Gemini tạo. Nếu bạn thấy danh sách thả xuống tự động hoàn thành gồm các từ khoá Python trên đề xuất đã tạo, hãy nhấn phím thoát để xem mã đề xuất màu xám nhạt. Nhấn phím Tab 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()
- Nhấp vào ô mã đầu tiên, nơi bạn đã nhập Pandas, rồi sử dụng trình đơn Commands (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, tạo một ô nếu cần. Chờ ô thực thi trước khi tiếp tục.
Lưu ý: Bạn sẽ thấy dấu [ ] ở 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 đang quay và hoạt động. Sau khi ô hoàn tất, một con số sẽ xuất hiện, chẳng hạn như [13]. 9. Thực thi ô tải tệp CSV vào DataFrame. Chờ tệp tải và kiểm tra 5 hàng dữ liệu đầu tiên. Đây là dữ liệu công thức nấu ăn mà chúng ta sẽ tải vào BigQuery và cuối cùng sẽ sử dụng dữ liệu này để xây dựng trình tạo công thức nấu ăn. 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 chú thích, 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 tôi vừa chứng minh rằng bạn thực sự có hai lựa chọn để nhận trợ giúp từ tính năng Trợ giúp mã của Gemini 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 các ô 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ợ tính năng hỗ trợ mã Gemini của Google.
- Hãy dọn dẹp một chút cột. Đổi tên cột
Unnamed: 0
thànhid
vàlink
thànhuri
. Sử dụng lựa chọn của bạn về câu lệnh > kỹ thuật mã để 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)
- Xoá cột
source
vàNER
rồi sử dụnghead()
để xem 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()
- Hãy xem tập dữ liệu của chúng ta có bao nhiêu bản ghi. Xin nhắc lại, hãy bắt đầu bằng kỹ thuật nhắc 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
- 2,23 triệu bản ghi có thể 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 Trình tạo tác nhân có thể sẽ mất quá nhiều thời gian cho bài tập hôm nay. Để có một giải pháp trung gian, hãy lấy mẫu 150.000 công thức nấu ăn và xử lý dữ liệu đó. Sử dụng phương pháp lời nhắc > mã để lấy mẫu và lưu trữ mẫu đó trong một DataFrame mới có tên là
dfs
(s cho nhỏ).
# Sample out 150,000 records into a DataFrame named dfs
dfs = df.sample(n=150000)
- Dữ liệu nguồn công thức của chúng ta đã 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.
- Nếu chưa thấy, hãy mở bảng điều khiển Chat AI của Gemini bằng biểu tượng Gemini ở trên cùng 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 hỏi: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.
- Trong ngăn BigQuery Explorer (Trình khám phá BigQuery), hãy nhấp vào trình đơn View actions (Xem hành động) có biểu tượng ba dấu chấm bên cạnh mã dự án của bạn. Sau đó, hãy chọn Tạo tập dữ liệu.
- 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ỳ và 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, bạn chỉ cần tiếp tục.
Với tập dữ liệu đã tạo trong BigQuery, hãy quay lại sổ tay và thực hiện thao tác chèn. 19. Chuyển về sổ tay Data Wrangling (Sắp xếp 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à sử dụng biến đó để lưu trữ mã dự án hiện tại của bạn. Hãy nhìn vào 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ể tìm thấy thông tin này trên trang chủ của Cloud Console nếu muốn. Chỉ định giá trị vào biến project_id
và chạy ô.
# Create a variable to hold the current project_id
project_id='YOUR_PROJECT_ID'
- Sử dụng phương pháp lời nhắc > mã để tạo một khối mã sẽ chèn DataFrame
dfs
vào một bảng có tênrecipes
trong tập dữ liệu mà chúng ta vừa tạorecipe_data
. Chạy ô.
dfs.to_gbq(destination_table='recipe_data.recipes', project_id=project_id, if_exists='replace')
7. Nhiệm vụ 4. Tạo ứng dụng tìm kiếm trong Vertex AI Agent Builder cho trình tạo công thức nấu ăn
Tuyệt vời! Chúng ta đã tạo bảng dữ liệu công thức, hãy sử dụng bảng này để xây dựng nguồn dữ liệu cơ sở cho trình tạo công thức. Phương pháp chúng ta sẽ sử dụng sẽ tương tự như cách chúng ta đã làm cho chatbot nấu ăn. Chúng ta sẽ sử dụng Vertex AI Agent Builder để tạo một Data Store (Kho dữ liệu), sau đó sử dụng kho dữ liệu đó làm nguồn đá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 các bước để tạo ứng dụng tìm kiếm Agent Builder hoặc làm theo các bước được liệt kê bên dưới.
- 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 (Kho dữ liệu) và Create Data Store (Tạo kho dữ liệu). Lần này, hãy Chọn loại BigQuery Data Store.
- Trong ô lựa chọn bảng, hãy nhấn vào Browse (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ừ các 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 rồi 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 tuỳ chọn mặc định còn lại, sau đó Tiếp tục. 4. Trên trang xem xét giản đồ, hãy kiểm tra các cấu hình mặc định ban đầu nhưng không thay đổi bất kỳ nội dung nào. Tiếp tục 5. Đặt tên cho kho dữ liệu là recipe-data
. Chỉnh sửa mã nhận dạng kho dữ liệu rồi đặt thành recipe-data-id
. Tạo Kho dữ liệu. 6. Chuyển đến Apps (Ứng dụng) bằng trình đơn điều hướng bên trái và Create App (Tạo ứng dụng). 7. Chọn ứng dụng Tìm kiếm một lần nữa. Đặt tên ứng dụng là recipe-search
và đặt mã nhận dạng thành recipe-search-id
. Đặt tên công ty thành Google
rồi 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.
Sẽ mất một khoảng thời gian để bảng cơ sở dữ liệu của chúng ta lập chỉ mục. Trong khi chờ đợi, hãy thử nghiệm với 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. 9. 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 Bảng điều khiển dữ liệu. Đặt khu vực thành us-central1.
- Trong hộp tìm kiếm Canvas dữ liệu, hãy tìm
recipes
rồi Thêm vào canvas bảng của bạn. - Bảng minh hoạ công thức nấu ăn 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à kiểm tra các thông tin chi tiết khác. Bên dưới phần trình bày bảng, hãy nhấp vào Truy vấn.
- Canvas sẽ tải một hộp thoại truy vấn BigQuery tương đối thông thường, với một điểm khác biệt: phía trên cửa sổ truy vấn là một hộp văn bản mà bạn có thể sử dụng để yêu cầu Gemini trợ giúp. Hãy xem chúng ta có thể tìm thấy một số công thức làm bánh trong mẫu hay không. Chạy lời nhắc 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.
- Xem SQL được tạo. Khi đã hài lòng, hãy Chạy truy vấn.
- Không tệ lắm! Bạn có thể thử nghiệm với 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ử sử dụng 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 hiệu quả. Ví dụ: câu lệnh sau:
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 nấu món ớt nhưng bỏ qua 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 "vui lòng" khi đưa ra câu lệnh. Mẹ tôi sẽ rất tự hào.)
Tôi nhận thấy một công thức nấu món ớt có chứa nấm, ai muốn ăn nấm trong món ớt? Tôi đã yêu cầu Gemini giúp tôi loại trừ những công thức nấu ăn đó.
Do I have any chili recipes? Please include their title and ingredients, and ignore any recipes with mushrooms as an ingredient.
8. Nhiệm vụ 5. Xác định ứng dụng web Python và Streamlit cốt lõi, với một chút trợ giúp của Gemini
Khi cả hai kho dữ liệu của Vertex AI Agent Builder đều đã lập chỉ mục và ứng dụng tìm kiếm của chúng ta sắp ra mắt, hãy bắt tay vào xây dựng ứng dụng web.
Chúng ta sẽ tận dụng tính năng Hỗ trợ lập trình của Gemini trong quá trình làm việc. Để biết thêm thông tin về cách sử dụng tính năng Trợ giúp lập trình Gemini trong Visual Studio Code, hãy xem tài liệu tại đây
Chúng ta sẽ phát triển trong Google Cloud Workstation; một môi trường phát triển dựa trên đám mây, trong trường hợp này, được tải sẵn Eclipse Theia (Visual Studio Code nguồn mở). Tập lệnh tự động trong bài tập này đã tạo cụm và cấu hình Máy trạm trên đám mây cho chúng ta, nhưng chúng ta vẫn cần tạo chính Máy trạm trên đám mây. Nếu muốn biết thêm thông tin về Máy trạm trên đám mây và cách sử dụng, bạn nên hỏi Trợ lý trên đám mây của Gemini :-)
- Sử dụng tính năng tìm kiếm để chuyển đến Máy trạm trên đám mây, rồi chọn Tạo máy trạm. Đặt tên cho Workstation là
dev-env
và sử dụng cấu hình my-config. Tạo máy trạm. - Sau vài phút, bạn sẽ thấy máy trạm mới trong danh sách Máy trạm của tôi. Bắt đầu
dev-env
và sau khi chạy, hãy Khởi chạy môi trường phát triển. - Trình chỉnh sửa máy trạm sẽ mở trên một thẻ trình duyệt mới và sau vài phút, bạn sẽ thấy giao diện Theia (Visual Studio Code) quen thuộc. Ở bên trái giao diện, hãy mở rộng thẻ Source Control (Kiểm soát nguồn) rồi nhấn vào Clone Repository (Sao chép kho lưu trữ).
- Nhập
https://github.com/haggman/recipe-app
cho URL kho lưu trữ. Sao chép kho lưu trữ vào thư mụcuser
, sau đó Mở kho lưu trữ đã sao chép để chỉnh sửa. - Trước khi khám phá thư mục được nhân bản 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 (Mã trên đám mây – Đă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.
- 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 làm theo các bước để cấp quyền truy cập vào môi trường Google Cloud cho Cloud Code. Hãy nhớ sử dụng tài khoản
student-...
tạm thời cho bài tập thể dục chứ không phải tài khoản Google Cloud cá nhân của bạn khi xác thực. Trong hộp thoại cuối cùng, hãy Sao chép mã xác minh rồi dán lại vào cửa sổ dòng lệnh đang chờ trong thẻ trình duyệt của Máy trạm trên đám mây. - Sau vài phút, đường liên kết đến 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 – No Project (Mã trên đám mây – 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 Google Cloud rồi chọn dự án qwiklabs-gcp-.... Sau vài phút, đường liên kết ở dưới cùng 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 rằng bạn đã đính kèm thành công Mã trên đám mây vào dự án đang hoạt động của mình.
- Giờ đây, khi Cloud Code đã kết nối với dự án, bạn có thể kích hoạt tính năng Trợ giúp lập trình của Gemini. Ở dưới cùng 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 điều khiển lệnh mở ra, hãy chọn dự án qwiklabs-gcp-.... Nếu đã làm theo các bước một cách chính xác (và Google không thay đổi gì), thì giờ đây, bạn sẽ thấy một cửa sổ trò chuyện Gemini đang hoạt động.
- Cuối cùng, hãy định cấu hình cửa sổ dòng lệnh của trình chỉnh sửa tương tự. Sử dụng trình đơn có biểu tượng ba dấu gạch ngang > Xem > Dòng lệnh để mở cửa sổ dòng lệnh. Thực thi
gcloud init
. Một lần nữa, hãy sử dụng đường liên kết để cho phép thiết bị đầu cuối Cloud Shell hoạt động với dự ánqwiklabs-gcp-...
. Khi được yêu cầu, hãy chọn tuỳ chọn dạng số của dự ánqwiklabs-gcp-...
. - Tuyệt vời, với các cấu hình của dòng lệnh, cuộc trò chuyện trên 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.
- 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?
- Vì vậy, chúng ta đang xây dựng một ứng dụng web tương tác bằng Python và Streamlit, ứng dụng này sẽ tương tác với Vertex AI và công cụ Khám phá. Hiện tại, hãy tập trung vào các thành phần ứ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?s
Đây là nơi Gemini thường gặp vấn đề. Gemini có thể truy cập vào tệp bạ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 như sau:
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 có câu trả lời chính xác hơn?
- Hãy tìm hiểu thêm một số thông tin về Streamlit:
What can you tell me about Streamlit?
Tuyệt vời, chúng ta có thể thấy Gemini cung cấp cho chúng ta thông tin tổng quan hữu ích, bao gồm cả ưu và khuyết điểm.
- Nếu muốn tìm hiểu về những điểm bất lợi, bạn có thể hỏi:
What are the major downsides or shortcomings?
Xin lưu ý rằng chúng ta không cần phải nói "của Streamlit" vì Gemini Chat là cuộc trò chuyện (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á toàn bộ nhật ký trò chuyện trên Gemini, hãy sử dụng biểu tượng thùng rác ở đầu cửa sổ trò chuyện về mã Gemini.
9. Nhiệm vụ 6: 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, chúng ta nên lưu trữ ứng dụng này ở đâu trong Google Cloud?
- Trong cửa sổ trò chuyện của Gemini, hãy hỏi:
If I containerize this application, what compute technologies
in Google Cloud would be best for hosting it?
- Hãy nhớ rằng nếu chưa làm việc trong IDE, bạn cũng có thể sử dụng Google Cloud Assist. 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 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ư một trợ lý con người, bạn 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 luôn có trình trợ giúp đó bên cạnh khi bạn làm việc trong 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.
- Đối với ứng dụng web dạng vùng chứa có thời gian tồn tại ngắn và không có trạng thái, Cloud Run sẽ là một lựa chọn tuyệt vời. Trong cửa sổ trò chuyện Gemini của trình soạn thảo mã, hãy thử câu lệnh sau:
What steps would be required to run this application in
Cloud Run?
- 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. Hãy đảm bảo bạn không vô tình đặt tệp đó vào thư mục trang. Mở tệp để chỉnh sửa. - Hãy sử dụng bảng điều khiển trò chuyện Gemini bên để tạo
Dockerfile
. Sử dụng câu lệnh như bên dưới. Khi kết quả xuất hiện trong cuộc trò chuyện, hãy sử dụng biểu tượng + 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 tạo một Dockerfile, tôi đã nhận được tệp chính xác mà tôi sẽ đề xuất bạn sử dụng. Tôi vừa nhận được đề xuất:
```docker
# 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"]
That's a heck of a Dockerfile. I'd simplify it a bit. We don't need the apt-get section as anything needed for Python is already in our base image. Also, using a virtual environment in a Python container is a waste of space, so I'd remove that. The expose command isn't strictly necessary, but it's fine. Also, it's trying to start main.py which I don't have.
6. Tweak the Dockerfile so it resembles the following:
FROM python:3.11-slim-bookworm
WORKDIR /app
COPY requirements.txt . CHẠY pip install –no-cache-dir –upgrade pip &&
pip install –no-cache-dir -r requirements.txt
SAO CHÉP . .
CMD ["streamlit", "run", "Home.py"]
7. We need a place in Google cloud where we can store our container image. Let's get a little help from Gemini. In the Google Cloud Console Gemini Cloud Assist ask:
Nơi tốt nhất trong Google Cloud để lưu trữ hình ảnh Docker là ở đâu?
8. If one of the answers you received is the Google Container Registry, then I guess Gemini hasn't gotten word that GCR is deprecated. Again, just like human assistants, you may get out of date or simply wrong answers (hallucinations). Always make sure to consider your choices carefully, even when Gemini is recommending something.
Let's go with Artifact Registry. Ask Gemini Cloud Assist how to create a docker registry in Artifact Registry named cooking-images.
Làm cách nào để sử dụng gcloud để tạo kho lưu trữ docker trong Artifact Registry?
9. Now ask Gemini how you could use Cloud Build to build a new image named `recipe-web-app` from the Dockerfile in the current folder.
Làm cách nào để sử dụng gcloud để tạo một dịch vụ Cloud Run mới có tên là recipe-web-app từ một hình ảnh có cùng tên trong kho lưu trữ Cấu phần phần mềm mà chúng ta vừa tạo?
10. To save you a little time, I've created a script that will create the Artifact Registry repo (if needed), use Cloud Build to build and push the image to the repo, and finally to deploy the application to Cloud Run. In your code editor use the **Explorer** view to open `build.sh` and explore the file.
11. Gemini can operate via the chat window, but it can also work directly in your code file using comments, like we used in the Data Wrangling notebook, and it also may be invoked using Control+i on Windows or Command+i on Mac. Click somewhere in the build.sh script file, activate Gemini using the appropriate Command+i / Control+i command.
<img src="img/61ac2c9a245a3695.png" alt="61ac2c9a245a3695.png" width="624.00" />
12. At the prompt enter the below. Examine and **Accept** the change.
Vui lòng nhận xét về tệp hiện tại.
How cool is that?! How many times have you had to work with someone elses code, only to have to waste time gaining a base understanding of their commentless work before you can even start making your changes. Gemini to the rescue!
13. Let's build and deploy our application. In the terminal window execute the `build.sh` file.
. build.sh
14. If you watch the build process, first it will build the Artifact Registry docker repo. Then, it uses Cloud Build to create the container image from the Dockerfile in the local folder (since we didn't supply a `cloudbuild.yaml`). Lastly, the docker image will be deployed into a new Cloud Run service. At the end of the script you'll get a Cloud Run test URL to use.
Open the returned link in a new tab of your browser. Take a moment and explore the application's structure and pages. Nice, now we need a hook in our generative AI functionality.
## Task 7: Connect the Cooking Advice page to our cookbook-search Agent Builder app
We have the framework for the web application running, but we need to connect the two work pages to our two Vertex AI Agent Builder search apps. Let's start with Cooking Advice.
1. In the Google Cloud console use search to navigate to **Chat** in Vertex AI.
2. In the right hand settings page pane set the model to **gemini-1.5-flash-002**. Slide the output token limit up to the max so the model can return longer answers if needed. Open the **Safety Filter Settings**. Set Hate speech, Sexually explicit content, and Harassment content to **Block some**. Set Dangerous content to **Block few** and **Save**. We're setting Dangerous Content a bit lower because talking about knives and cutting can be misinterpreted by Gemini as violence.
3. Slide on the toggle to enable **Grounding** then click **Customize**. Set the grounding source to **Vertex AI search** and for the datastore path use the following. Change YOUR_PROJECT_ID to the project ID found up near the End Lab button in these instructions, then **Save** the grounding settings
projects/YOUR_PROJECT_ID/locations/global/collections/default_collection/dataStores/old-cookbooks-id
**Note:** If you get an error then you either didn't change the project ID to your actual project ID, or you may have missed the step where you changed the old-cookbooks Agent Builder Data Store ID. Check your Agent Builder > Data Stores > old-cookbooks for its actual Data store ID.
4. Test a couple of chat messages. Perhaps start with the below. Try a few others if you like.
Làm cách nào để biết cà chua đã chín?
5. The model works, now let's experiment with the code. Click **Clear Conversation** so our conversations don't become part of the code then click **Get Code**.
<img src="img/dce8ad7ee006cca1.png" alt="dce8ad7ee006cca1.png" width="624.00" />
6. At the top of the code window, press Open Notebook so we can experiment and perfect the code in Colab Enterprise before integrating it into our app.
7. Take a few minutes to familiarize yourself with the code. Let's make a couple of changes to adapt it to what we want. Before we start, run the first code cell to connect to the compute and install the AI Platform SDK. After the block runs you will be prompted to restart the session. Go ahead and do that.
8. Move to the code we pulled out of Vertex AI Studio. Change the name of the method *multiturn_generate_content* to `start_chat_session`.
9. Scroll to the `model = GenerativeModel(` method call. The existing code defines the `generation_config` and `safety_settings` but doesn't actually use them. Modify the creation of the `GenerativeModel` so it resembles:
model = GenerativeModel( "gemini-1.5-flash-002", tools=tools, generation_config=generation_config, safety_settings=safety_settings, )
10. Lastly, add a final line to the method, just below `chat = model.start_chat()`, so the function returns the `chat` object. The finished function should look like the below.
**Note:** DO NOT COPY this code into your notebook. It is simply here as a sanity check.
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. Scroll to the bottom of the code cell and change the final line calling the old function so it calls the new function name and stores the returned object in a variable `chat`. Once you are satisfied with your changes, run the cell.
chat = start_chat_session()
12. Create a new code cell and add the comment `# Use chat to invoke Gemini and print out the response`. Move to the next line and type resp and Gemini should auto complete the block for you. Update the prompt to `How can I tell if a tomato is ripe?`. Run the cell
response = chat.send_message("How can I tell if a tomato is ripe?") print(response)
13. That's the response alright, but the part we really want is that nested text field. Modify the codeblock to print just that section, like:
response = chat.send_message("How can I tell if a tomato is ripe?") print(response.candidates[0].content.parts[0].text)
14. Good, now that we have working chat code, let's integrate it into our web application. Copy all the contents of the code cell that creates the `start_chat_session` function (we won't need the test cell). If you click into the cell you can click the triple dot menu in the upper right corner and copy from there
<img src="img/17bf8d947393d4b.png" alt="17bf8d947393d4b.png" width="326.00" />
15. Switch to your Cloud Workstation editor and open pages\Cooking_Advice.py for editing.
16. Locate the comment:
Thêm mã bạn đã sao chép từ sổ tay vào bên dưới thông báo này
17. Paste your copied code just below the above comment. Nice, now we have the section which drives the chat engine via a grounded call to Gemini. Now let's integrate it into Streamlit.
18. Locate section of commented code directly below the comment:
Dưới đây là mã để thiết lập các biến phiên
Bỏ ghi chú khỏi khối này khi được hướng dẫn
19. Uncomment this section of code (Up till the next `Setup done, let's build the page UI` section) and explore it. It creates or retrieves the chat and history session variables.
20. Next, we need to integrate the history and chat functionality into the UI. Scroll in the code until you locate the below comment.
Dưới đây là mã để tạo giao diện trò chuyện
Bỏ ghi chú mã dưới đây khi được hướng dẫn
21. Uncomment the rest of the code below the comment and take a moment to explore it. If you like, highlight it and get Gemini to explain its functionality.
22. Excellent, now let's build the application and deploy it. When the URL comes back, launch the application and give the Cooking Advisor page a try. Perhaps ask it about ripe tomatoes, or the bot knows a good way to prepare brussels sprouts.
. build.sh
How cool is that! Your own personal AI cooking advisor :-)
## Task 8: (Optional) Connect the Recipe Search page to the recipe-search Agent Builder app
When we connected the Cooking Advice page to its grounded source, we did so using the Gemini API directly. For Recipe Search, let's connect to the Vertex AI Agent Builder search app directly.
1. In your Cloud Workstation editor, open the `pages/Recipe_Search.py` page for editing. Investigate the structure of the page.
2. Towards the top of the file, set your project ID.
3. Examine the `search_sample` function. This code more or less comes directly from the Discovery Engine documentation [here](https://cloud.google.com/generative-ai-app-builder/docs/preview-search-results#genappbuilder_search-python). You can find a working copy in this notebook [here](https://github.com/GoogleCloudPlatform/generative-ai/blob/main/search/create_datastore_and_search.ipynb).
4. The only change I made was to return the `response.results` instead of just the results. Without this, the return type is an object designed to page through results, and that's something we don't need for our basic application.
5. Scroll to the very end of the file and uncomment the entire section below `Here are the first 5 recipes I found`.
6. Highlight the whole section you just uncommented and open Gemini Code chat. Ask, `Explain the highlighted code`. If you don't have something selected, Gemini can explain the whole file. If you highlight a section and ask Gemini to explain, or comment, or improve it, Gemini will.
Take a moment and read through the explanation. For what it's worth, using a Colab Enterprise notebook is a great way to explore the Gemini APIs before you integrate them into your application. It's especially helpful at exploring some of the newer APIs which may not be documented as well as they could be.
7. At your editor terminal window, run `build.sh` to deploy the final application. Wait until the new version is deployed before moving to the next step.
## Task 9: (Optional) Explore the final application
Take a few minutes to explore the final application.
1. In the Google Cloud console, use search to navigate to **Cloud Run**, then click into your **recipe-web-app**.
2. Locate the application test URL (towards the top) and open it in a new browser tab.
3. The application home page should appear. Note the basic layout and navigation provided by Streamlit, with the python files from the `pages` folder displayed as navigational choices, and the `Home.py` loaded as the home page. Navigate to the **Cooking Advice** page.
4. After a few moments the chat interface will appear. Again, note the nice core layout provided by Streamlit.
5. Try a few cooking related questions and see how the bot functions. Something like:
Bạn có lời khuyên nào về cách chế biến bông cải xanh không?
Bạn có muốn thử công thức nấu súp gà truyền thống không?
Hãy cho tôi biết về bánh meringue.
6. Now let's find a recipe or two. Navigate to the Recipe Search page and try a few searches. Something like:
Chili con carne
Ớt, ngô, gạo
Bánh kem trứng chanh
Một món tráng miệng có dâu tây
## Congratulations!
You have created an application leveraging Vertex AI Agent Builder applications. Along the way you've explored Gemini Cloud Assist, Gemini Code Assist, and the natural language to SQL features of BigQuery's Data Canvas. Fantastic job!