1. Tổng quan
Loạt lớp học lập trình này (hướng dẫn thực hành theo tốc độ của riêng bạn) nhằm giúp nhà phát triển hiểu rõ các lựa chọn mà họ có khi triển khai ứng dụng. Trong lớp học lập trình này, bạn sẽ tìm hiểu cách sử dụng Google Cloud Translation API bằng Python và chạy cục bộ hoặc triển khai trên một nền tảng điện toán phi máy chủ trên đám mây (App Engine, Cloud Functions hoặc Cloud Run). Ứng dụng mẫu có trong kho lưu trữ của hướng dẫn này có thể được triển khai (ít nhất) theo 8 cách khác nhau chỉ với một số thay đổi nhỏ về cấu hình:
- Máy chủ Flask cục bộ (Python 2)
- Máy chủ Flask cục bộ (Python 3)
- App Engine (Python 2)
- App Engine (Python 3)
- Cloud Functions (Python 3)
- Cloud Run (Python 2 qua Docker)
- Cloud Run (Python 3 thông qua Docker)
- Cloud Run (Python 3 thông qua Cloud Buildpacks)
Lớp học lập trình này tập trung vào việc triển khai ứng dụng này cho(các) nền tảng được in đậm ở trên.
Bạn sẽ tìm hiểu cách
- Sử dụng API Google Cloud, cụ thể là Cloud Translation API (nâng cao/phiên bản 3)
- Chạy một ứng dụng web cơ bản trên máy tính hoặc triển khai vào nền tảng điện toán phi máy chủ trên đám mây
Bạn cần có
- Một dự án trên Google Cloud có Tài khoản thanh toán Cloud đang hoạt động
- Flask được cài đặt để chạy cục bộ hoặc một nền tảng điện toán phi máy chủ trên đám mây được bật cho các hoạt động triển khai dựa trên đám mây
- Kỹ năng cơ bản về Python
- Có kiến thức cơ bản về các lệnh cơ bản của hệ điều hành
Bản khảo sát
Bạn sẽ sử dụng hướng dẫn này như thế nào?
Bạn đánh giá thế nào về trải nghiệm của mình với Python?
Bạn đánh giá thế nào về trải nghiệm khi sử dụng các dịch vụ của Google Cloud?
2. Thiết lập và yêu cầu
Thiết lập môi trường theo tốc độ của riêng bạn
- Đăng nhập vào Google Cloud Console rồi tạo một dự án mới hoặc sử dụng lại một dự án hiện có. Nếu chưa có tài khoản Gmail hoặc Google Workspace, bạn phải tạo một tài khoản.



- Tên dự án là tên hiển thị của những người tham gia dự án này. Đây là một chuỗi ký tự mà các API của Google không dùng và bạn có thể cập nhật chuỗi này bất cứ lúc nào.
- Mã dự án phải là duy nhất trên tất cả các dự án trên Google Cloud và không thể thay đổi (bạn không thể thay đổi sau khi đã đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường thì bạn không cần quan tâm đến chuỗi này. Trong hầu hết các lớp học lập trình, bạn sẽ cần tham chiếu đến Mã dự án (thường được xác định là
PROJECT_ID). Vì vậy, nếu không thích mã này, bạn có thể tạo một mã ngẫu nhiên khác hoặc thử mã của riêng mình để xem mã đó có dùng được hay không. Sau đó, mã này sẽ "đóng băng" sau khi dự án được tạo. - Có một giá trị thứ ba là Số dự án mà một số API sử dụng. Tìm hiểu thêm về cả 3 giá trị này trong tài liệu.
- Tiếp theo, bạn cần bật tính năng thanh toán trong Cloud Console để sử dụng các tài nguyên/API trên Cloud. Việc thực hiện lớp học lập trình này sẽ không tốn nhiều chi phí, nếu có. Để tắt các tài nguyên nhằm tránh bị tính phí ngoài phạm vi hướng dẫn này, hãy làm theo mọi hướng dẫn "dọn dẹp" ở cuối lớp học lập trình. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí trị giá 300 USD.
3. Bật Translation API
Bật Cloud API
Trong phần này, bạn sẽ tìm hiểu cách bật các API của Google nói chung. Đối với ứng dụng mẫu của chúng tôi, bạn sẽ bật Cloud Translation API, Cloud Run và Cloud Artifact Registry.
Giới thiệu
Bất kể bạn muốn sử dụng API nào của Google trong ứng dụng, bạn đều phải bật các API đó. Ví dụ sau đây minh hoạ 2 cách để bật Cloud Vision API. Sau khi tìm hiểu cách bật một Cloud API, bạn sẽ có thể bật các API khác vì quy trình này tương tự nhau.
Cách 1: Từ Cloud Shell hoặc giao diện dòng lệnh
Mặc dù việc bật API từ Cloud Console phổ biến hơn, nhưng một số nhà phát triển lại thích làm mọi thứ từ dòng lệnh. Để làm như vậy, bạn cần tìm "tên dịch vụ" của một API. Có vẻ như đây là một URL: SERVICE_NAME.googleapis.com. Bạn có thể tìm thấy các sản phẩm này trong biểu đồ Sản phẩm được hỗ trợ hoặc bạn có thể truy vấn các sản phẩm này theo phương thức lập trình bằng Google Discovery API.
Với thông tin này, bằng cách sử dụng Cloud Shell (hoặc môi trường phát triển cục bộ có cài đặt công cụ dòng lệnh gcloud), bạn có thể bật một API như sau:
gcloud services enable SERVICE_NAME.googleapis.com
Ví dụ: lệnh này bật Cloud Vision API:
gcloud services enable vision.googleapis.com
Lệnh này bật App Engine:
gcloud services enable appengine.googleapis.com
Bạn cũng có thể bật nhiều API bằng một yêu cầu. Ví dụ: dòng lệnh này cho phép Cloud Run, Cloud Artifact Registry và Cloud Translation API:
gcloud services enable artifactregistry.googleapis.com run.googleapis.com translate.googleapis.com
Cách 2: Từ Bảng điều khiển trên đám mây
Bạn cũng có thể bật Vision API trong Trình quản lý API. Trên Cloud Console, hãy chuyển đến Trình quản lý API rồi chọn Thư viện.

Nếu bạn muốn bật Cloud Vision API, hãy bắt đầu nhập "vision" vào thanh tìm kiếm. Mọi nội dung khớp với nội dung bạn đã nhập cho đến thời điểm này sẽ xuất hiện:

Chọn API bạn muốn bật rồi nhấp vào Bật:

Chi phí
Mặc dù bạn có thể sử dụng nhiều API của Google mà không mất phí, nhưng việc sử dụng các sản phẩm và API của Google Cloud không miễn phí. Khi bật Cloud API, bạn có thể được yêu cầu cung cấp một tài khoản thanh toán đang hoạt động. Tuy nhiên, bạn cần lưu ý rằng một số sản phẩm của Google Cloud có bậc "Luôn miễn phí" (hằng ngày/hằng tháng). Bạn phải vượt quá bậc này thì mới bị tính phí; nếu không, thẻ tín dụng (hoặc phương thức thanh toán được chỉ định) của bạn sẽ không bị tính phí.
Người dùng nên tham khảo thông tin về giá của mọi API trước khi bật, đặc biệt là lưu ý xem API đó có cấp miễn phí hay không và nếu có thì cấp đó là gì. Nếu đang bật Cloud Vision API, bạn sẽ kiểm tra trang thông tin về giá của API đó. Cloud Vision có hạn mức miễn phí và miễn là bạn không vượt quá hạn mức này (trong mỗi tháng), bạn sẽ không phải trả bất kỳ khoản phí nào.
Mức giá và hạn mức miễn phí khác nhau giữa các API của Google. Ví dụ:
- Google Cloud/GCP – mỗi sản phẩm sẽ được tính phí theo cách khác nhau và thường là trả phí theo chu kỳ vCPU, mức tiêu thụ bộ nhớ, mức sử dụng bộ nhớ hoặc trả phí theo mức sử dụng; hãy xem thông tin về bậc miễn phí ở trên.
- Google Maps – có một bộ API và cung cấp cho người dùng 200 USD tín dụng miễn phí mỗi tháng.
- Các API của Google Workspace (trước đây là G Suite) – cung cấp mức sử dụng miễn phí (tối đa đến một số giới hạn nhất định) được tính vào gói thuê bao hằng tháng của Workspace, vì vậy, bạn không phải trả phí trực tiếp khi sử dụng các API của Gmail, Google Drive, Lịch, Tài liệu, Trang tính và Trang trình bày.
Các sản phẩm của Google được tính phí theo cách khác nhau, vì vậy, hãy nhớ tham khảo tài liệu về API của bạn để biết thông tin đó.
Tóm tắt
Giờ đây, bạn đã biết cách bật API của Google nói chung, hãy chuyển đến Trình quản lý API rồi bật Cloud Translation API, Cloud Run và Cloud Artifact Registry (nếu bạn chưa bật). Bạn bật tính năng trước vì ứng dụng của chúng tôi sử dụng tính năng này. Bạn bật lựa chọn thứ hai vì đó là nơi lưu trữ các hình ảnh vùng chứa của chúng tôi trước khi được triển khai để bắt đầu dịch vụ Cloud Run. Đó là lý do bạn phải bật lựa chọn đó. Nếu bạn muốn bật tất cả các tiện ích này bằng công cụ gcloud, hãy thực hiện lệnh sau trong cửa sổ dòng lệnh:
gcloud services enable artifactregistry.googleapis.com run.googleapis.com translate.googleapis.com
Mặc dù hạn mức hằng tháng của API này không được liệt kê trong trang tóm tắt chung về cấp "Luôn miễn phí", nhưng trang định giá của Translation API cho biết tất cả người dùng đều nhận được một số lượng cố định ký tự được dịch hằng tháng. Bạn sẽ không phải trả bất kỳ khoản phí nào cho API nếu không vượt quá ngưỡng đó. Nếu có bất kỳ khoản phí nào khác liên quan đến Google Cloud, chúng sẽ được thảo luận ở phần cuối trong mục "Dọn dẹp".
4. Nhận mã ứng dụng mẫu
Sao chép mã trong kho lưu trữ cục bộ hoặc trong Cloud Shell (bằng lệnh git clone) hoặc tải tệp ZIP xuống từ nút Code (Mã) màu xanh lục như minh hoạ trong ảnh chụp màn hình sau:

Giờ thì bạn đã có mọi thứ, hãy tạo một bản sao đầy đủ của thư mục để thực hiện hướng dẫn cụ thể này, vì có thể bạn sẽ phải xoá hoặc thay đổi các tệp. Nếu muốn triển khai theo cách khác, bạn có thể bắt đầu lại bằng cách sao chép bản gốc để không phải sao chép hoặc tải xuống lại.
5. Hướng dẫn về ứng dụng mẫu
Ứng dụng mẫu là một phiên bản đơn giản của Google Dịch, nhắc người dùng nhập văn bản bằng tiếng Anh và nhận bản dịch tương đương của văn bản đó bằng tiếng Tây Ban Nha. Bây giờ, hãy mở tệp main.py để xem cách hoạt động. Nếu bỏ qua các dòng được nhận xét về việc cấp phép, thì phần đầu và cuối sẽ trông như sau:
from flask import Flask, render_template, request
import google.auth
from google.cloud import translate
app = Flask(__name__)
_, PROJECT_ID = google.auth.default()
TRANSLATE = translate.TranslationServiceClient()
PARENT = 'projects/{}'.format(PROJECT_ID)
SOURCE, TARGET = ('en', 'English'), ('es', 'Spanish')
# . . . [translate() function definition] . . .
if __name__ == '__main__':
import os
app.run(debug=True, threaded=True, host='0.0.0.0',
port=int(os.environ.get('PORT', 8080)))
- Các lệnh nhập này sẽ đưa chức năng Flask, mô-đun
google.authvà thư viện ứng dụng Cloud Translation API vào. - Các biến chung đại diện cho ứng dụng Flask, mã dự án trên đám mây, ứng dụng Translation API, "đường dẫn vị trí" gốc cho các lệnh gọi Translation API, cũng như ngôn ngữ nguồn và ngôn ngữ đích. Trong trường hợp này, đó là tiếng Anh (
en) và tiếng Tây Ban Nha (es), nhưng bạn có thể thay đổi các giá trị này thành mã ngôn ngữ khác được Cloud Translation API hỗ trợ. - Khối
iflớn ở dưới cùng được dùng trong hướng dẫn để chạy ứng dụng này cục bộ – khối này sử dụng máy chủ phát triển Flask để phân phát ứng dụng của chúng ta. Phần này cũng có trong hướng dẫn triển khai Cloud Run trong trường hợp máy chủ web không được đi kèm trong vùng chứa. Bạn được yêu cầu bật tính năng kết hợp máy chủ trong vùng chứa, nhưng trong trường hợp bạn bỏ qua yêu cầu này, mã ứng dụng sẽ quay lại sử dụng máy chủ phát triển Flask. (Đây không phải là vấn đề với App Engine hoặc Cloud Functions vì đây là các nền tảng dựa trên nguồn, tức là Google Cloud cung cấp và chạy một máy chủ web mặc định.)
Cuối cùng, ở giữa main.py là phần cốt lõi của ứng dụng, hàm translate():
@app.route('/', methods=['GET', 'POST'])
def translate(gcf_request=None):
"""
main handler - show form and possibly previous translation
"""
# Flask Request object passed in for Cloud Functions
# (use gcf_request for GCF but flask.request otherwise)
local_request = gcf_request if gcf_request else request
# reset all variables (GET)
text = translated = None
# if there is data to process (POST)
if local_request.method == 'POST':
text = local_request.form['text']
data = {
'contents': [text],
'parent': PARENT,
'target_language_code': TARGET[0],
}
# handle older call for backwards-compatibility
try:
rsp = TRANSLATE.translate_text(request=data)
except TypeError:
rsp = TRANSLATE.translate_text(**data)
translated = rsp.translations[0].translated_text
# create context & render template
context = {
'orig': {'text': text, 'lc': SOURCE},
'trans': {'text': translated, 'lc': TARGET},
}
return render_template('index.html', **context)
Hàm chính có nhiệm vụ lấy hoạt động đầu vào của người dùng và gọi Translation API để thực hiện các thao tác phức tạp. Hãy cùng phân tích chi tiết:
- Kiểm tra xem các yêu cầu có đến từ Cloud Functions hay không bằng cách sử dụng biến
local_request. Cloud Functions gửi trong đối tượng Yêu cầu Flask của riêng mình, trong khi tất cả các đối tượng khác (chạy cục bộ hoặc triển khai cho App Engine hoặc Cloud Run) sẽ nhận được đối tượng yêu cầu trực tiếp từ Flask. - Đặt lại các biến cơ bản cho biểu mẫu. Điều này chủ yếu dành cho các yêu cầu GET vì các yêu cầu POST sẽ có dữ liệu thay thế các yêu cầu này.
- Nếu đó là một yêu cầu POST, hãy lấy văn bản cần dịch và tạo một cấu trúc JSON thể hiện yêu cầu về siêu dữ liệu API. Sau đó, hãy gọi API, quay lại phiên bản trước của API nếu người dùng đang sử dụng một thư viện cũ.
- Bất kể kết quả thực tế (POST) hay không có dữ liệu (GET) nào, hãy định dạng kết quả đó vào ngữ cảnh mẫu và hiển thị.
Phần hình ảnh của ứng dụng nằm trong tệp index.html mẫu. Công cụ này sẽ cho thấy mọi kết quả đã dịch trước đó (nếu không có thì sẽ trống) rồi đến biểu mẫu yêu cầu dịch nội dung:
<!doctype html>
<html><head><title>My Google Translate 1990s</title><body>
<h2>My Google Translate (1990s edition)</h2>
{% if trans['text'] %}
<h4>Previous translation</h4>
<li><b>Original</b>: {{ orig['text'] }} (<i>{{ orig['lc'][0] }}</i>)</li>
<li><b>Translated</b>: {{ trans['text'] }} (<i>{{ trans['lc'][0] }}</i>)</li>
{% endif %}
<h4>Enter <i>{{ orig['lc'][1] }}</i> text to translate to <i>{{ trans['lc'][1] }}</i>:</h4>
<form method="POST"><input name="text"><input type="submit"></form>
</body></html>
6. Triển khai dịch vụ
Giờ đây, bạn đã sẵn sàng triển khai dịch vụ dịch của mình lên Cloud Run bằng cách chạy lệnh sau:
gcloud run deploy translate --source . --allow-unauthenticated --platform managed
Kết quả đầu ra sẽ có dạng như sau và đưa ra một số lời nhắc cho các bước tiếp theo:
$ gcloud run deploy translate --source . --allow-unauthenticated --platform managed Please specify a region: [1] asia-east1 [2] asia-east2 . . . (other regions) . . . [28] us-west4 [29] cancel Please enter your numeric choice: REGION_CHOICE To make this the default region, run `gcloud config set run/region REGION`. Deploying from source requires an Artifact Registry repository to store build artifacts. A repository named [cloud-run-source-deploy] in region [REGION] will be created. Do you want to continue (Y/n)? This command is equivalent to running "gcloud builds submit --pack image=[IMAGE] ." and "gcloud run deploy translate --image [IMAGE]" Building . . . and deploying container to Cloud Run service [translate] in project [PROJECT_ID] region [REGION] ✓ Building and deploying... Done. ✓ Creating Container Repository... ✓ Uploading sources... ✓ Building Container... Logs are available at [https://console.cloud.google.com/cloud-build/builds/60e1b 9bb-b991-4b4e-8d8a-HASH?project=PROJECT_NUMBER]. ✓ Creating Revision... ✓ Routing traffic... ✓ Setting IAM Policy... Done. Service [translate] revision [translate-00001-xyz] has been deployed and is serving 100 percent of traffic. Service URL: https://SVC_NAME-HASH-REG_ABBR.a.run.app
Giờ đây, ứng dụng của bạn đã có mặt trên toàn cầu, bạn có thể truy cập vào ứng dụng tại URL có chứa mã dự án của bạn như trong đầu ra triển khai:

Hãy dịch một nội dung nào đó để xem tính năng này hoạt động!

7. Kết luận
Xin chúc mừng! Bạn đã tìm hiểu cách bật Cloud Translation API, lấy thông tin đăng nhập cần thiết và triển khai một ứng dụng web đơn giản vào Cloud Run Python 2! Bạn có thể tìm hiểu thêm về việc triển khai này trong bảng này trong kho lưu trữ.
Dọn dẹp
Cloud Translation API cho phép bạn dịch một số lượng ký tự cố định mỗi tháng mà không tốn phí. App Engine cũng có hạn mức miễn phí, tương tự như Cloud Functions và Cloud Run. Bạn sẽ bị tính phí nếu vượt quá một trong hai hạn mức này. Nếu dự định tiếp tục đến lớp học lập trình tiếp theo, bạn không cần tắt ứng dụng.
Tuy nhiên, nếu chưa sẵn sàng chuyển sang hướng dẫn tiếp theo hoặc lo ngại rằng Internet sẽ phát hiện ra ứng dụng mà bạn vừa triển khai, hãy tắt ứng dụng App Engine, xoá Cloud Function hoặc tắt dịch vụ Cloud Run để tránh bị tính phí. Khi đã sẵn sàng chuyển sang lớp học lập trình tiếp theo, bạn có thể bật lại tính năng này. Mặt khác, nếu không muốn tiếp tục với ứng dụng này hoặc các lớp học lập trình khác và muốn xoá hoàn toàn mọi thứ, bạn có thể tắt dự án của mình.
Ngoài ra, việc triển khai trên một nền tảng điện toán không máy chủ của Google Cloud sẽ phát sinh một khoản chi phí nhỏ cho việc xây dựng và lưu trữ. Cloud Build có hạn mức miễn phí riêng, tương tự như Cloud Storage. Để tăng tính minh bạch, Cloud Build sẽ tạo hình ảnh ứng dụng của bạn, sau đó lưu trữ hình ảnh đó trong Cloud Container Registry hoặc Artifact Registry (phiên bản kế nhiệm của Cloud Container Registry). Việc lưu trữ hình ảnh đó sẽ tiêu tốn một phần hạn mức, cũng như lưu lượng truyền dữ liệu ra khỏi mạng khi chuyển hình ảnh đó đến dịch vụ. Tuy nhiên, có thể bạn sinh sống ở một khu vực không có gói miễn phí như vậy, vì vậy, hãy lưu ý đến mức sử dụng bộ nhớ để giảm thiểu chi phí phát sinh.
8. Tài nguyên khác
Trong các phần sau, bạn có thể tìm thấy tài liệu đọc bổ sung cũng như các bài tập được đề xuất để bổ sung kiến thức mà bạn đã thu được khi hoàn thành hướng dẫn này.
Nghiên cứu bổ sung
Giờ thì bạn đã có một số kinh nghiệm sử dụng Translation API, hãy làm thêm một số bài tập để phát triển kỹ năng của mình. Để tiếp tục lộ trình học tập, hãy sửa đổi ứng dụng mẫu của chúng tôi để thực hiện những việc sau:
- Hoàn thành tất cả các phiên bản khác của lớp học lập trình này để chạy cục bộ hoặc triển khai trên nền tảng điện toán không máy chủ của Google Cloud (xem README của kho lưu trữ).
- Hoàn thành hướng dẫn này bằng một ngôn ngữ lập trình khác.
- Thay đổi ứng dụng này để hỗ trợ nhiều ngôn ngữ nguồn hoặc đích.
- Nâng cấp ứng dụng này để có thể dịch văn bản sang nhiều ngôn ngữ; thay đổi tệp mẫu để có một trình đơn thả xuống gồm các ngôn ngữ đích được hỗ trợ.
Tìm hiểu thêm
Google App Engine
- Trang chủ App Engine
- Tài liệu về App Engine
- Hướng dẫn nhanh về App Engine Python 3
- Tài khoản dịch vụ mặc định cho App Engine
- Thời gian chạy Python 2 App Engine (Chuẩn)
- Thời gian chạy Python 3 App Engine (Chuẩn)
- Sự khác biệt giữa thời gian chạy Python 2 và 3 App Engine (Chuẩn)
- Hướng dẫn di chuyển ứng dụng từ Python 2 sang Python 3 trên App Engine (chuẩn)
Google Cloud Functions
- Trang chủ Cloud Functions
- Tài liệu về Cloud Functions
- Hướng dẫn nhanh về Cloud Functions của Python
- Tài khoản dịch vụ mặc định cho Cloud Functions
Google Cloud Run
- Trang chủ Cloud Run
- Tài liệu về Cloud Run
- Hướng dẫn nhanh về Cloud Run bằng Python
- Tài khoản dịch vụ mặc định cho Cloud Run
Google Cloud Buildpacks, Container Registry, Artifact Registry
- Thông báo về Cloud Buildpacks
- Kho lưu trữ Cloud Buildpacks
- Trang chủ Cloud Artifact Registry
- Tài liệu về Cloud Artifact Registry
- Trang chủ của Cloud Container Registry
- Tài liệu về Cloud Container Registry
Google Cloud Translation và Bộ công cụ học máy của Google
- Trang chủ của Cloud Translation
- Tài liệu về Cloud Translation
- Trang định giá Translation API
- Tất cả các API "thành phần" AI/ML trên đám mây
- Google ML Kit (Tập hợp con của API AI/học máy trên đám mây dành cho thiết bị di động)
- API Dịch của Google ML Kit
Các sản phẩm/trang khác của Google Cloud
- Dịch vụ hỗ trợ Python của Google Cloud
- Thư viện ứng dụng Google Cloud
- Cấp "Luôn miễn phí" của Google Cloud
- Tất cả tài liệu của Google Cloud
Python và Flask
Giấy phép
Hướng dẫn này được cấp phép theo giấy phép Ghi công theo Creative Commons 2.0 chung, còn mã nguồn trong kho lưu trữ được cấp phép theo Apache 2.