1. Omówienie
Ta seria laboratoriów programistycznych (samodzielnych, praktycznych samouczków) ma pomóc deweloperom zrozumieć różne opcje, z których mogą korzystać podczas wdrażania aplikacji. Z tego laboratorium z kodem dowiesz się, jak korzystać z interfejsu Google Cloud Translation API w Pythonie i uruchamiać go lokalnie lub wdrażać na bezserwerowej platformie obliczeniowej w chmurze (App Engine, Cloud Functions lub Cloud Run). Przykładową aplikację znajdującą się w repozytorium tego samouczka można wdrożyć (co najmniej) na 8 sposobów za pomocą zaledwie drobnych zmian konfiguracji:
- Lokalny serwer Flask (Python 2)
- Lokalny serwer Flask (Python 3)
- App Engine (Python 2)
- App Engine (Python 3)
- Cloud Functions (Python 3)
- Cloud Run (Python 2 w Dockerze)
- Cloud Run (Python 3 w Dockerze)
- Cloud Run (Python 3 za pomocą pakietów kompilacji Cloud)
Ten warsztat dotyczy wdrażania tej aplikacji na platformy oznaczone pogrubieniem powyżej.
Dowiedz się, jak
- Używanie interfejsów Google Cloud, w szczególności Cloud Translation API (zaawansowana wersja 3).
- Uruchamianie podstawowej aplikacji internetowej lokalnie lub wdrażanie jej na platformę bezserwerową w chmurze
Czego potrzebujesz
- projekt Google Cloud z aktywnym kontem rozliczeniowym Cloud.
- Flask zainstalowany do uruchamiania lokalnie lub bezserwerowa platforma obliczeniowa w chmurze włączona do wdrożeń w chmurze.
- podstawowe umiejętności w Pythonie,
- znajomość podstawowych poleceń systemu operacyjnego;
Ankieta
Jak będziesz korzystać z tego samouczka?
Jak oceniasz swoje doświadczenie z Pythonem?
Jak oceniasz korzystanie z usług Google Cloud?
2. Konfiguracja i wymagania
Konfiguracja środowiska w samodzielnym tempie
- Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub użyj istniejącego. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.
- Nazwa projektu to wyświetlana nazwa uczestników tego projektu. Jest to ciąg znaków, którego nie używają interfejsy API Google, i który możesz zaktualizować w dowolnym momencie.
- Identyfikator projektu musi być niepowtarzalny we wszystkich projektach Google Cloud i jest niezmienny (nie można go zmienić po jego ustawieniu). Konsole Google Cloud automatycznie generuje unikalny ciąg znaków. Zwykle nie ma znaczenia, jaki to ciąg. W większości laboratoriów z kodem musisz podać identyfikator projektu (zazwyczaj jest to
PROJECT_ID
). Jeśli Ci się nie podoba, wygeneruj inny losowy identyfikator lub spróbuj użyć własnego i sprawdź, czy jest dostępny. Następnie po utworzeniu projektu jest „zamrażany”. - Istnieje jeszcze trzecia wartość, numer projektu, której używają niektóre interfejsy API. Więcej informacji o wszystkich 3 wartościach znajdziesz w dokumentacji.
- Następnie musisz włączyć płatności w konsoli Cloud, aby móc korzystać z zasobów i interfejsów API usługi Cloud. Przejście przez ten moduł Codelab nie powinno wiązać się z wielkimi kosztami, jeśli w ogóle z nimi będzie. Aby wyłączyć zasoby i uniknąć opłat po zakończeniu samouczka, wykonaj instrukcje „czyszczenia” podane na końcu ćwiczenia. Nowi użytkownicy Google Cloud mogą skorzystać z bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.
3. Włączanie interfejsu Translation API
W przypadku naszej przykładowej aplikacji włączysz zamiast tego interfejs Cloud Translation API i usługę App Engine, korzystając z podobnych instrukcji podanych poniżej.
Włączanie interfejsów Cloud API
Wprowadzenie
Niezależnie od tego, którego interfejsu Google API chcesz używać w aplikacji, musisz go włączyć. Ten przykład pokazuje 2 sposoby włączania interfejsu Cloud Vision API. Gdy już się nauczysz, jak włączyć jeden interfejs Cloud API, będziesz mieć możliwość włączenia innych interfejsów API, ponieważ proces jest podobny.
Opcja 1. Z Cloud Shell lub interfejsu wiersza poleceń
Chociaż częstsze jest włączanie interfejsów API w konsoli Cloud, niektórzy deweloperzy wolą wykonywać wszystkie czynności za pomocą wiersza poleceń. W tym celu musisz sprawdzić „nazwa usługi” interfejsu API. Wygląda jak adres URL: SERVICE_NAME
.googleapis.com
. Znajdziesz je w tabeli obsługiwanych usług lub możesz wysłać zapytanie programowe za pomocą interfejsu Google Discovery API.
Mając te informacje, możesz włączyć interfejs API za pomocą Cloud Shell (lub lokalnego środowiska programistycznego z zainstalowanym narzędziem wiersza poleceń gcloud
). Aby to zrobić, wykonaj te czynności:
gcloud services enable SERVICE_NAME.googleapis.com
Na przykład to polecenie włącza interfejs Cloud Vision API:
gcloud services enable vision.googleapis.com
To polecenie włącza App Engine:
gcloud services enable appengine.googleapis.com
Możesz też włączyć wiele interfejsów API za pomocą jednego żądania. Na przykład to polecenie włącza Cloud Run, Cloud Artifact Registry i interfejs Cloud Translation API:
gcloud services enable artifactregistry.googleapis.com run.googleapis.com translate.googleapis.com
Opcja 2. Z poziomu Cloud Console
Możesz też włączyć Vision API w Menedżerze interfejsów API. W konsoli Cloud otwórz Menedżera interfejsów API i wybierz Biblioteka.
Jeśli chcesz włączyć interfejs Cloud Vision API, zacznij wpisywać „vision” na pasku wyszukiwania. Pojawi się wszystko, co pasuje do tego, co zostało do tej pory wpisane:
Wybierz interfejs API, który chcesz włączyć, i kliknij Włącz:
Koszt
Chociaż wiele interfejsów API Google można używać bez opłat, nie można tego powiedzieć o produktach i interfejsach API Google Cloud. Podczas włączania interfejsów API Cloud możesz zostać poproszony o podanie aktywnego konta rozliczeniowego. Pamiętaj jednak, że niektóre usługi Google Cloud mają poziom „Zawsze bezpłatnie” (dobowy/miesięczny), który musisz przekroczyć, aby naliczać opłaty. W przeciwnym razie Twoja karta kredytowa (lub wskazany instrument rozliczeniowy) nie zostanie obciążona.
Przed włączeniem interfejsu API użytkownicy powinni zapoznać się z informacjami o cenach, zwracając szczególną uwagę na to, czy interfejs ma bezpłatny poziom dostępu i jakie są jego warunki. Jeśli włączasz interfejs Cloud Vision API, powinieneś sprawdzić informacje o cenach. Cloud Vision ma bezpłatny limit, a dopóki nie przekroczysz go łącznie (w danym miesiącu), nie powinieneś ponosić żadnych opłat.
Ceny i poziomy bezpłatnego korzystania z interfejsów API Google różnią się w zależności od interfejsu. Przykłady:
- Google Cloud/GCP – każda usługa jest rozliczana inaczej i zwykle płaci się za cykl vCPU, zużycie miejsca na dane, wykorzystanie pamięci lub płatność za użycie; patrz informacje o bezpłatnym poziomie powyżej.
- Mapy Google – pakiet interfejsów API, który oferuje użytkownikom 200 USD miesięcznie.
- Interfejsy API Google Workspace (dawniej G Suite) – zapewniają bezpłatne korzystanie (w ramach określonych limitów) w ramach miesięcznej opłaty abonamentowej Workspace, więc nie ma bezpośredniego rozliczenia za korzystanie z interfejsów API Gmaila, Dysku Google, Kalendarza, Dokumentów, Arkuszy i Prezentacji.
Różne usługi Google są rozliczane na różne sposoby, dlatego zapoznaj się z dokumentacją interfejsu API, aby uzyskać te informacje.
Podsumowanie
Teraz, gdy już wiesz, jak ogólnie włączyć interfejsy API Google, otwórz Menedżer interfejsów API i włącz interfejs Cloud Translation API oraz usługę App Engine (jeśli jeszcze tego nie zrobiono). Pierwszy z nich będzie używany przez naszą aplikację, a drugi, ponieważ wdrażasz aplikację App Engine. Jeśli wolisz to zrobić z poziomu wiersza poleceń, wykonaj to polecenie:
gcloud services enable appengine.googleapis.com translate.googleapis.com
Chociaż limit miesięczny nie jest wymieniony na ogólnej stronie podsumowania poziomu „Zawsze bezpłatnie”, na stronie z cenami interfejsu API Tłumacz podano, że wszyscy użytkownicy otrzymują stałą liczbę przetłumaczonych znaków miesięcznie. Jeśli nie przekroczysz tego progu, nie poniesiesz żadnych opłat za korzystanie z interfejsu API. Jeśli są jakieś inne opłaty związane z Google Cloud, zostaną omówione na końcu w sekcji „Usuwanie”.
4. Pobieranie przykładowego kodu aplikacji
Skopiuj kod z repozytorium lokalnie lub w Cloud Shell (za pomocą polecenia git clone
) albo pobierz plik ZIP, klikając zielony przycisk Kod, jak pokazano na poniższym zrzucie ekranu:
Gdy wszystko będzie gotowe, utwórz pełną kopię folderu, aby wykonać ten samouczek, ponieważ będzie on prawdopodobnie wymagał usunięcia lub zmiany plików. Jeśli chcesz przeprowadzić inną implementację, możesz zacząć od kopiowania oryginału, aby nie trzeba było go ponownie klonować ani pobierać.
5. Prezentacja przykładowej aplikacji
Przykładowa aplikacja to prosta odmiana Tłumacza Google, która prosi użytkowników o wpisanie tekstu w języku angielskim, a następnie wyświetla jego tłumaczenie na język hiszpański. Teraz otwórz plik main.py
, aby zobaczyć, jak to działa. Pomijając skomentowane wiersze dotyczące licencjonowania, na górze i na dole wygląda to tak:
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)))
- Importy umożliwiają korzystanie z funkcji Flask, modułu
google.auth
i biblioteki klienta Cloud Translation API. - Zmienne globalne reprezentują aplikację Flask, identyfikator projektu Cloud, klienta Translation API, nadrzędną „ścieżkę lokalizacji” dla wywołań Translation API oraz język źródłowy i docelowy. W tym przypadku są to angielski (
en
) i hiszpański (es
), ale możesz zmienić te wartości na inne kody języków obsługiwane przez Cloud Translation API. - Duży blok
if
na dole jest używany w tym samouczku do uruchamiania aplikacji lokalnie – korzysta z serwera deweloperskiego Flask do obsługi aplikacji. Ta sekcja jest też dostępna w samouctkach dotyczących wdrażania Cloud Run na wypadek, gdyby serwer WWW nie był zawarty w kontenerze. Pojawi się prośba o włączenie tworzenia pakietu serwera w kontenerze, ale jeśli ją przeoczysz, kod aplikacji będzie używać serwera deweloperskiego Flask. (Nie jest to problem z App Engine ani Cloud Functions, ponieważ są to platformy oparte na źródłach, co oznacza, że Google Cloud udostępnia i uruchamia domyślny serwer WWW).
W środku pliku main.py
znajduje się serce aplikacji, czyli funkcja 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)
Funkcja główna pobiera dane wejściowe od użytkownika i wywołuje interfejs Translation API, aby wykonać ciężką pracę. Przeanalizujmy to:
- Sprawdź, czy żądania pochodzą z Cloud Functions, korzystając ze zmiennej
local_request
. Cloud Functions wysyła własny obiekt żądania Flask, podczas gdy wszystkie inne (uruchamiane lokalnie lub wdrażane w App Engine lub Cloud Run) otrzymają obiekt żądania bezpośrednio z Flask. - Zresetuj podstawowe zmienne formularza. Dotyczy to przede wszystkim żądań GET, ponieważ żądania POST będą zawierać dane, które je zastąpią.
- Jeśli jest to żądanie POST, pobierz tekst do przetłumaczenia i utwórz strukturę JSON reprezentującą wymagania dotyczące metadanych interfejsu API. Następnie wywołaj interfejs API, korzystając w razie potrzeby z poprzedniej wersji interfejsu API, jeśli użytkownik używa starszej biblioteki.
- Niezależnie od tego, czy w ramach kontekstu szablonu i renderowania sformatujesz rzeczywiste wyniki (POST), czy nie będzie żadnych danych (GET),
Część wizualna aplikacji znajduje się w pliku szablonu index.html
. Pokazuje wcześniej przetłumaczone wyniki (w przeciwnym razie puste pole) oraz formularz z prośbą o coś do przetłumaczenia:
<!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. Instalowanie lokalnych pakietów/zależności (do pliku lib)
Jak już wspomnieliśmy, przykładowa aplikacja korzysta z mikroplatformy internetowej Flask i biblioteki klienta Google Cloud Translation API w wersji dla Pythona. Zainstaluj i zaktualizuj pip
oraz te 2 pakiety za pomocą polecenia pip
(lub pip3
):
pip install -t lib -r requirements.txt
Po wykonaniu powyższego polecenia zobaczysz dane wyjściowe instalacji, które mogą wyglądać tak:
$ pip install -t lib -r requirements.txt DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support pip 21.0 will remove support for this functionality. Collecting flask>=1.1.2 Using cached Flask-1.1.4-py2.py3-none-any.whl (94 kB) Collecting google-cloud-translate>=2.0.1 Using cached google_cloud_translate-2.0.2-py2.py3-none-any.whl (91 kB) Collecting click<8.0,>=5.1 Using cached click-7.1.2-py2.py3-none-any.whl (82 kB) Collecting Jinja2<3.0,>=2.10.1 Using cached Jinja2-2.11.3-py2.py3-none-any.whl (125 kB) Collecting Werkzeug<2.0,>=0.15 Using cached Werkzeug-1.0.1-py2.py3-none-any.whl (298 kB) Collecting itsdangerous<2.0,>=0.24 Using cached itsdangerous-1.1.0-py2.py3-none-any.whl (16 kB) Collecting google-api-core[grpc]<2.0.0dev,>=1.15.0 Downloading google_api_core-1.29.0-py2.py3-none-any.whl (93 kB) |████████████████████████████████| 93 kB 2.1 MB/s Collecting google-cloud-core<2.0dev,>=1.1.0 Using cached google_cloud_core-1.6.0-py2.py3-none-any.whl (28 kB) Collecting MarkupSafe>=0.23 Using cached MarkupSafe-1.1.1-cp27-cp27m-macosx_10_6_intel.whl (17 kB) Collecting protobuf>=3.12.0 Downloading protobuf-3.17.2-cp27-cp27m-macosx_10_9_x86_64.whl (958 kB) |████████████████████████████████| 958 kB 21.6 MB/s Collecting futures>=3.2.0; python_version < "3.2" Using cached futures-3.3.0-py2-none-any.whl (16 kB) Collecting six>=1.13.0 Using cached six-1.16.0-py2.py3-none-any.whl (11 kB) Collecting packaging>=14.3 Using cached packaging-20.9-py2.py3-none-any.whl (40 kB) Collecting googleapis-common-protos<2.0dev,>=1.6.0 Using cached googleapis_common_protos-1.52.0-py2.py3-none-any.whl (100 kB) Collecting requests<3.0.0dev,>=2.18.0 Using cached requests-2.25.1-py2.py3-none-any.whl (61 kB) Collecting google-auth<2.0dev,>=1.25.0 Using cached google_auth-1.30.1-py2.py3-none-any.whl (146 kB) Collecting pytz Using cached pytz-2021.1-py2.py3-none-any.whl (510 kB) Collecting setuptools>=40.3.0 Using cached setuptools-44.1.1-py2.py3-none-any.whl (583 kB) Collecting grpcio<2.0dev,>=1.29.0; extra == "grpc" Using cached grpcio-1.38.0-cp27-cp27m-macosx_10_10_x86_64.whl (3.8 MB) Collecting pyparsing>=2.0.2 Using cached pyparsing-2.4.7-py2.py3-none-any.whl (67 kB) Collecting chardet<5,>=3.0.2 Using cached chardet-4.0.0-py2.py3-none-any.whl (178 kB) Collecting urllib3<1.27,>=1.21.1 Using cached urllib3-1.26.5-py2.py3-none-any.whl (138 kB) Collecting idna<3,>=2.5 Using cached idna-2.10-py2.py3-none-any.whl (58 kB) Collecting certifi>=2017.4.17 Downloading certifi-2021.5.30-py2.py3-none-any.whl (145 kB) |████████████████████████████████| 145 kB 61.1 MB/s Collecting pyasn1-modules>=0.2.1 Using cached pyasn1_modules-0.2.8-py2.py3-none-any.whl (155 kB) Collecting rsa<4.6; python_version < "3.6" Using cached rsa-4.5-py2.py3-none-any.whl (36 kB) Collecting cachetools<5.0,>=2.0.0 Using cached cachetools-3.1.1-py2.py3-none-any.whl (11 kB) Collecting enum34>=1.0.4; python_version < "3.4" Using cached enum34-1.1.10-py2-none-any.whl (11 kB) Collecting pyasn1<0.5.0,>=0.4.6 Using cached pyasn1-0.4.8-py2.py3-none-any.whl (77 kB) Installing collected packages: click, MarkupSafe, Jinja2, Werkzeug, itsdangerous, flask, six, protobuf, futures, pyparsing, packaging, googleapis-common-protos, chardet, urllib3, idna, certifi, requests, pyasn1, pyasn1-modules, rsa, cachetools, setuptools, google-auth, pytz, enum34, grpcio, google-api-core, google-cloud-core, google-cloud-translate ERROR: pip's legacy dependency resolver does not consider dependency conflicts when selecting packages. This behaviour is the source of the following dependency conflicts. matplotlib 1.3.1 requires nose, which is not installed. matplotlib 1.3.1 requires tornado, which is not installed. Successfully installed Jinja2-2.11.3 MarkupSafe-1.1.1 Werkzeug-1.0.1 cachetools-3.1.1 certifi-2021.5.30 chardet-4.0.0 click-7.1.2 enum34-1.1.10 flask-1.1.4 futures-3.3.0 google-api-core-1.29.0 google-auth-1.30.1 google-cloud-core-1.6.0 google-cloud-translate-2.0.2 googleapis-common-protos-1.52.0 grpcio-1.38.0 idna-2.10 itsdangerous-1.1.0 packaging-20.9 protobuf-3.17.2 pyasn1-0.4.8 pyasn1-modules-0.2.8 pyparsing-2.4.7 pytz-2021.1 requests-2.25.1 rsa-4.5 setuptools-44.1.1 six-1.16.0 urllib3-1.26.5
7. Wdrażanie usługi
Aby wdrożyć usługę tłumaczenia w usłudze App Engine w Pythonie 2, uruchom to polecenie:
gcloud app deploy
Dane wyjściowe powinny wyglądać tak i zawierać instrukcje dotyczące dalszych kroków:
$ gcloud app deploy Services to deploy: descriptor: [/private/tmp/nebulous-serverless-python/app.yaml] source: [/private/tmp/nebulous-serverless-python] target project: [PROJECT_ID] target service: [default] target version: [20210422t161025] target url: [https://PROJECT_ID.appspot.com] Do you want to continue (Y/n)? Beginning deployment of service [default]... ╔════════════════════════════════════════════════════════════╗ ╠═ Uploading 1290 files to Google Cloud Storage ═╣ ╚════════════════════════════════════════════════════════════╝ File upload done. Updating service [default]...done. Setting traffic split for service [default]...done. Deployed service [default] to [https://PROJECT_ID.appspot.com] You can stream logs from the command line by running: $ gcloud app logs tail -s default To view your application in the web browser run: $ gcloud app browse
Teraz, gdy Twoja aplikacja jest dostępna na całym świecie, powinna być dostępna pod adresem URL (zawierającym identyfikator projektu) podanym w wyniku wdrożenia:
Przetłumacz coś, aby zobaczyć, jak to działa.
8. Podsumowanie
Gratulacje! Wiesz już, jak włączyć interfejs Cloud Translation API, uzyskać niezbędne poświadczenia tożsamości i wdrażać proste aplikacje internetowe do App Engine w Pythonie 2. Więcej informacji o tym wdrożeniu znajdziesz w tabeli w repozytorium.
Czyszczenie danych
Interfejs Cloud Translation API umożliwia bezpłatne przetłumaczenie stałej liczby znaków miesięcznie. App Engine ma też bezpłatny limit, co dotyczy również Cloud Functions i Cloud Run. W przypadku przekroczenia któregokolwiek z tych limitów zostaną naliczone opłaty. Jeśli chcesz przejść do następnego ćwiczenia, nie musisz zamykać aplikacji.
Jeśli jednak nie chcesz jeszcze przejść do następnego samouczka lub obawiasz się, że aplikacja, którą właśnie wdrożyłeś/wdrożyłaś, zostanie odkryta w internecie, wyłącz aplikację App Engine, usuń funkcję Cloud Functions lub wyłącz usługę Cloud Run, aby uniknąć opłat. Gdy będziesz gotowy/gotowa przejść do kolejnego Codelab, możesz ponownie włączyć tę funkcję. Jeśli z drugiej strony nie chcesz kontynuować pracy nad tą aplikacją ani innymi projektami w Codelab i chcesz wszystko całkowicie usunąć, możesz zamknąć projekt.
Wdrażanie na bezserwerowej platformie obliczeniowej Google Cloud wiąże się też z niewielkimi kosztami kompilacji i przechowywania. Cloud Build ma własną bezpłatną pulę, podobnie jak Cloud Storage. Aby zwiększyć przejrzystość, usługa Cloud Build kompiluje obraz aplikacji, który jest następnie przechowywany w Cloud Container Registry lub Artifact Registry, która jest następcą tej pierwszej. Przechowywanie tego obrazu zużywa część tej puli, podobnie jak przesyłanie sieciowe podczas przesyłania obrazu do usługi. Możesz jednak mieszkać w regionie, w którym nie ma bezpłatnego poziomu, więc aby zminimalizować potencjalne koszty, zwróć uwagę na wykorzystanie miejsca na dane.
9. Dodatkowe materiały
W kolejnych sekcjach znajdziesz dodatkowe materiały do czytania oraz ćwiczenia, które pomogą Ci poszerzyć wiedzę zdobytą w trakcie samouczka.
Dodatkowe badania
Masz już pewne doświadczenie w korzystaniu z interfejsu Translation API, więc wykonaj kilka dodatkowych ćwiczeń, aby doskonalić swoje umiejętności. Aby kontynuować naukę, zmodyfikuj naszą przykładową aplikację, aby wykonać te czynności:
- Wykonaj wszystkie inne wersje tego ćwiczenia, aby uruchomić je lokalnie lub wdrożyć na bezserwerowych platformach obliczeniowych Google Cloud (patrz README repozytorium).
- Przejdź przez ten samouczek, używając innego języka programowania.
- Zmień tę aplikację, aby obsługiwała inne języki źródłowe lub docelowe.
- Zaktualizuj tę aplikację, aby umożliwić tłumaczenie tekstu na więcej niż 1 język. Zmień plik szablonu, aby wyświetlić menu obsługiwanych języków docelowych.
Więcej informacji
Google App Engine
- Strona główna App Engine
- Dokumentacja App Engine
- Krótkie wprowadzenie do App Engine w Pythonie 3
- Domyślne konta usługi App Engine
- Środowisko wykonawcze Python 2 App Engine (standardowe)
- Środowisko wykonawcze Pythona 3 App Engine (standardowe)
- Różnice między środowiskiem uruchomieniowym Python 2 a Python 3 w App Engine (standardowym)
- Przewodnik po migracji z Pythona 2 do App Engine (standardowego) w Pythonie 3
Google Cloud Functions
- Strona główna Cloud Functions
- Dokumentacja Cloud Functions
- Krótki przewodnik po Pythonie i Cloud Functions
- Domyślne konta usługi w Cloud Functions
Google Cloud Run
- Strona główna Cloud Run
- Dokumentacja Cloud Run
- Krótki przewodnik po Pythonie w Cloud Run
- Domyślne konta usługi w Cloud Run
Google Cloud Buildpacks, Container Registry, Artifact Registry
- Ogłoszenie dotyczące Cloud Buildpacks
- Repozytorium Cloud Buildpacks
- Strona główna Cloud Artifact Registry
- Dokumentacja Cloud Artifact Registry
- Strona główna Cloud Container Registry
- Dokumentacja Cloud Container Registry
Google Cloud Translation i Google ML Kit
- Strona główna Cloud Translation
- Dokumentacja usługi Cloud Translation
- Strona z cenami Translation API
- Wszystkie interfejsy API „elementów składowych” AI/ML w chmurze
- Google ML Kit (podzbiór interfejsów Cloud AI/ML na urządzenia mobilne)
- Google ML Kit Translation API
Inne usługi/strony Google Cloud
- Pomoc Google Cloud dotycząca Pythona
- Biblioteki klienta Google Cloud
- Poziom „Always Free” Google Cloud
- Cała dokumentacja Google Cloud
Python i Flask
Licencja
Ten samouczek jest objęty licencją Creative Commons Attribution 2.0 Generic License, a kod źródłowy w repozytorium jest objęty licencją Apache 2.