1. Omówienie
W tym praktycznym module skonfigurujesz potok CICD i zintegrujesz go z Gemini, aby zautomatyzować kroki weryfikacji kodu.
Czego się nauczysz
Z tego modułu nauczysz się:
- Jak dodać kroki automatyzacji weryfikacji kodu GenAI w GitHub, GitLab i CircleCI
- Jak używać agentów i narzędzi LangChain ReAct do automatyzacji zadań, takich jak komentowanie problemu w GitLab i otwieranie zgłoszeń JIRA
Wymagania wstępne
- W tym module zakładamy, że znasz środowiska konsoli Cloud i Cloud Shell.
2. Konfiguracja i wymagania
Konfiguracja projektu Cloud
- 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. Zawsze możesz ją zaktualizować.
- Identyfikator projektu jest niepowtarzalny w ramach wszystkich projektów Google Cloud i nie można go zmienić (po ustawieniu). Cloud Console automatycznie wygeneruje unikalny ciąg znaków. zwykle nieważne, co ona jest. W większości ćwiczeń w Codelabs musisz podać swój identyfikator projektu (zwykle identyfikowany jako
PROJECT_ID
). Jeśli nie podoba Ci się wygenerowany identyfikator, możesz wygenerować kolejny losowy. Możesz też spróbować użyć własnego adresu e-mail, aby sprawdzić, czy jest on dostępny. Po wykonaniu tej czynności nie można jej już zmienić. Pozostanie ona przez cały czas trwania projektu. - Informacyjnie: istnieje jeszcze 3 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ć rozliczenia w konsoli Cloud, aby korzystać z zasobów i interfejsów API Cloud. Ukończenie tego ćwiczenia z programowania nic nie kosztuje. Aby wyłączyć zasoby i uniknąć obciążenia opłatami po zakończeniu samouczka, możesz usunąć utworzone zasoby lub usunąć projekt. 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.
Konfiguracja środowiska
Otwórz czat z Gemini.
Możesz też wpisać „Zadaj pytanie Gemini” na pasku wyszukiwania.
Włącz interfejs Cloud AI Companion API:
Kliknij „Start chatting
” i postępuj zgodnie z jednym z przykładowych pytań lub wpisz własny prompt, żeby go wypróbować.
Prompty do wypróbowania:
- Wyjaśnij działanie Cloud Run w 5 najważniejszych punktach.
- Jesteś menedżerem usługi Google Cloud Run. W 5 krótkich punktach wyjaśnij uczniowi, jak działa Cloud Run.
- Jesteś menedżerem produktu Cloud Run w Google i chcesz wyjaśnić Cloud Run certyfikowanemu deweloperowi Kubernetes w 5 krótkich punktach.
- Jesteś menedżerem produktu w Google Cloud Run. Opisz w 5 krótkich punktach, na czym polega różnica między Cloud Run a GKE.
Zapoznaj się z przewodnikiem po promptach, aby dowiedzieć się więcej o tworzeniu lepszych promptów.
Jak Gemini w Google Cloud korzysta z Twoich danych
Zobowiązanie Google do ochrony prywatności
Firma Google jest jedną z pierwszych w branży, która opublikowała zobowiązanie dotyczące ochrony prywatności w ramach sztucznej inteligencji i systemów uczących się. Zgodnie z naszym przekonaniem klienci powinni mieć najwyższy poziom bezpieczeństwa i kontroli nad swoimi danymi przechowywanymi w chmurze.
Dane przesyłane i otrzymywane
Pytania zadane Gemini, w tym wszelkie informacje wejściowe lub kod, który przesyłasz do Gemini w celu przeanalizowania lub odpowiedzi, to tak zwane prompty. Odpowiedzi lub dokończenia kodu, które otrzymujesz od Gemini, nazywane są odpowiedziami. Gemini nie używa Twoich promptów ani swoich odpowiedzi jako danych do trenowania swoich modeli.
Szyfrowanie promptów
Gdy przesyłasz prompty do Gemini, Twoje dane są szyfrowane podczas przesyłania i przesyłane do modelu podstawowego w Gemini.
Dane programu wygenerowane przez Gemini
Gemini jest trenowany na własnym kodzie Google Cloud oraz wybranym kodzie innej firmy. Odpowiedzialność za bezpieczeństwo, testowanie i skuteczność kodu, w tym za wszelkie uzupełnianie, generowanie i analizy kodu, które oferuje Gemini, spoczywa na Tobie.
Dowiedz się więcej o tym, jak Google postępuje z Twoimi promptami.
3. Opcje testowania promptów
Jeśli chcesz zmienić/rozszerzyć istniejące prompty interfejsu Devai, masz kilka opcji.
Vertex AI Studio to część platformy Vertex AI stworzonej przez Google Cloud, która została zaprojektowana w celu uproszczenia i przyspieszenia tworzenia i wykorzystywania modeli generatywnej AI.
Google AI Studio to narzędzie internetowe do tworzenia prototypów i eksperymentowania z inżynierią promptów oraz interfejsem Gemini API. Zarejestruj się w Gemini 1.5 Pro z oknem kontekstu o milionie tokenów lub dowiedz się więcej.
- Aplikacja internetowa Gemini (gemini.google.com)
Aplikacja internetowa Google Gemini (gemini.google.com) to narzędzie internetowe zaprojektowane, aby pomóc Ci odkrywać i wykorzystywać możliwości modeli AI Gemini od Google.
- aplikacja mobilna Gemini od Google na Android oraz aplikacja Google na iOS;
4. Utwórz konto usługi
Aktywuj Cloud Shell, klikając ikonę po prawej stronie paska wyszukiwania.
W otwartym terminalu włącz wymagane usługi, aby korzystać z interfejsów API Vertex AI i czatu Gemini.
gcloud services enable \
aiplatform.googleapis.com \
cloudaicompanion.googleapis.com \
cloudresourcemanager.googleapis.com \
secretmanager.googleapis.com
Jeśli pojawi się prośba o autoryzację, kliknij „Autoryzuj”. aby kontynuować.
Uruchom te polecenia, aby utworzyć nowe konto usługi i klucze.
Użyjesz tego konta usługi do wywoływania interfejsu API Vertex AI Gemini z pipeline’ów CICD.
PROJECT_ID=$(gcloud config get-value project)
SERVICE_ACCOUNT_NAME='vertex-client'
DISPLAY_NAME='Vertex Client'
KEY_FILE_NAME='vertex-client-key'
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME --display-name "$DISPLAY_NAME"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/aiplatform.admin" --condition None
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/secretmanager.secretAccessor" --condition None
gcloud iam service-accounts keys create $KEY_FILE_NAME.json --iam-account=$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com
5. Utwórz rozwidlenie repozytorium GitHub na swoim osobistym repozytorium GitHub
Wejdź na https://github.com/GoogleCloudPlatform/genai-for-developers/fork i wybierz swój identyfikator użytkownika GitHub jako właściciela.
Odznacz tę opcję, aby skopiować tylko gałąź „główną”.
Kliknij „Create fork
”.
6. Włącz przepływy pracy w działaniach GitHub
Otwórz rozwidlone repozytorium GitHub w przeglądarce i przełącz się na kartę „Actions
”, aby włączyć workflow.
7. Dodawanie obiektów tajnych repozytorium
Tworzenie obiektu tajnego repozytorium w folderze „Settings / Secrets and variables / Actions
” w rozwidlonym repozytorium GitHub.
Dodaj obiekt tajny repozytorium o nazwie „GOOGLE_API_CREDENTIALS
”.
Przełącz się na okno lub kartę Google Cloud Shell i uruchom w terminalu Cloud Shell podane niżej polecenie.
cat ~/vertex-client-key.json
Skopiuj zawartość pliku i wklej ją jako wartość obiektu tajnego.
Dodaj PROJECT_ID
obiekt tajny z identyfikatorem projektu Qwiklabs jako wartość
8. Uruchamianie przepływu pracy działań GitHub
Otwórz w przeglądarce repozytorium GitHub i uruchom przepływ pracy.
Przepływ pracy jest skonfigurowany do uruchamiania po przesłaniu kodu lub ręcznie.
W sekcji Wszystkie przepływy pracy wybierz „GenAI For Developers
”, a potem kliknij „Run workflow
” w gałęzi „main
”.
Sprawdzanie wyników:
Wyniki polecenia testowania pokrycia kodu:
devai review testcoverage -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
Wyniki polecenia sprawdzania kodu:
devai review code -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
Wyniki polecenia sprawdzania skuteczności:
devai review performance -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
Wyniki polecenia kontroli zabezpieczeń:
devai review security -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
Wyniki polecenia sprawdzania blokujących:
devai review blockers -c ${{ github.workspace }}/sample-app/pom.xml
9. Klonowanie repozytorium
Wróć do terminala Cloud Shell i sklonuj repozytorium.
Utwórz folder dla repozytorium GitHub.
mkdir github
cd github
Przed wykonaniem poleceń zmień YOUR-GITHUB-USERID
na swój identyfikator użytkownika GitHub.
Ustaw nazwę użytkownika Git i adres e-mail w terminalu.
Zaktualizuj wartości, zanim uruchomisz polecenia.
git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"
git clone https://github.com/YOUR-GITHUB-USERID/genai-for-developers.git
Zmień folder i otwórz plik workflow w edytorze Cloud Shell.
cd genai-for-developers
cloudshell edit .github/workflows/devai-review.yml
Zaczekaj, aż plik konfiguracji wyświetli się w IDE.
10. Włączanie Gemini Code Assist
Kliknij „Gemini
” w prawym dolnym rogu ekranu .
kliknij „Login to Google Cloud
” i „Select a Google Cloud Project
”.
W wyskakującym okienku wybierz swój projekt Qwiklabs.
11. Wyjaśnianie kodu za pomocą Gemini Code Assist
Kliknij prawym przyciskiem myszy dowolne miejsce w pliku devai-review.yml
i wybierz Gemini Code Assist > Explain
.
Wyjaśnienie recenzji:
12. Uruchamianie interfejsu wiersza poleceń DEVAI lokalnie
Wróć do edytora Cloud Shell i otwórz nowy terminal.
Wróć do terminala Cloud Shell i uruchom podane niżej polecenia, aby zainstalować devai
lokalnie.
pip3 install devai-cli
Interfejs wiersza poleceń został zainstalowany, ale nie ma go w ścieżce PATH.
WARNING: The script devai is installed in '/home/student_00_478dfeb8df15/.local/bin' which is not on PATH. Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Uruchom poniższe polecenie, aby zaktualizować zmienną środowiskową PATH. Zastąp nazwę folderu domowego użytkownika. Na przykład: student_00_478dfeb8df15
export PATH=$PATH:/home/YOUR-USER-HOME-FOLDER/.local/bin
Aby przeprowadzić weryfikację kodu lokalnie, uruchom polecenie devai. Sprawdź dane wyjściowe w interfejsie wiersza poleceń.
export PROJECT_ID=$(gcloud config get-value project)
export LOCATION=us-central1
cd ~/github/genai-for-developers
devai review code -c ./sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
Otwórz skrypt sprawdzania, uruchamiając poniższe polecenie:
cloudshell edit devai-cli/src/devai/commands/review.py
Kliknij prawym przyciskiem myszy dowolne miejsce w pliku review.py
i wybierz Gemini Code Assist > Explain
.
Zapoznaj się z wyjaśnieniem.
13. Programowanie interfejsu wiersza poleceń DevAI
W tej sekcji wprowadzisz zmiany w devai cli.
Na początek skonfiguruj Pythona virtualenv, zainstaluj wymagania i uruchom przykładowe polecenie.
cd ~/github/genai-for-developers/devai-cli
python3 -m venv venv
. venv/bin/activate
pip3 install -r src/requirements.txt
pip3 install --editable ./src
devai echo
Uruchom polecenie przeglądu zasięgu testu, aby sprawdzić, czy wszystko działa prawidłowo:
devai review testcoverage -c ~/github/genai-for-developers/sample-app/src
Sprawdź wyniki za pomocą podglądu Markdown w edytorze Cloud Shell.
Utwórz nowy plik i wklej odpowiedź Gemini.
Następnie na palecie poleceń wybierz „Markdown: Open Preview
”.
14. Poznawanie poleceń interfejsu wiersza poleceń devai
Polecenie weryfikacji kodu
devai review code -c ~/github/genai-for-developers/sample-app/src/main/java
Komenda sprawdzania wyników
devai review performance -c ~/github/genai-for-developers/sample-app/src/main/java
Polecenie kontroli zabezpieczeń
devai review security -c ~/github/genai-for-developers/sample-app/src/main/java
Polecenie sprawdzania zasięgu testu
devai review testcoverage -c ~/github/genai-for-developers/sample-app/src
Polecenia sprawdzające osoby blokujące
devai review blockers -c ~/github/genai-for-developers/sample-app/pom.xml
devai review blockers -c ~/github/genai-for-developers/sample-app/setup.md
Sprawdzenie i podsumowanie obrazu/schematu:
Diagram wejściowy [~/github/genai-for-developers/images/extension-diagram.png
]:
Sprawdź polecenie:
devai review image \
-f ~/github/genai-for-developers/images/extension-diagram.png \
-p "Review and summarize this diagram"
Dane wyjściowe:
The diagram outlines a process for conducting local code reviews using a VS Code extension or CLI, leveraging Google Cloud's Vertex AI (Gemini Pro) for generating review prompts. **Process Flow:** 1. **Code Style Check:** Developers initiate the process by checking their code for adherence to pre-defined style guidelines. 2. **Prompt Generation:** The VS Code extension/CLI sends the code to Vertex AI (Gemini Pro) on Google Cloud. 3. **Vertex AI Review:** Vertex AI analyzes the code and generates relevant review prompts. 4. **Local Review:** The prompts are sent back to the developer's IDE for their consideration. 5. **Optional Actions:** Developers can optionally: - Create new JIRA issues directly from the IDE based on the review prompts. - Generate new issues in a GitLab repository. **Key Components:** * **VS Code Extension/CLI:** Tools facilitating the interaction with Vertex AI and potential integrations with JIRA and GitLab. * **Vertex AI (Gemini Pro):** Google Cloud's generative AI service responsible for understanding the code and generating meaningful review prompts. * **Google Cloud Secret Manager:** Securely stores API keys and access tokens required to authenticate and interact with Google Cloud services. * **JIRA/GitLab (Optional):** Issue tracking and project management tools that can be integrated for a streamlined workflow. **Benefits:** * **Automated Review Assistance:** Leveraging AI to generate review prompts saves time and improves the consistency and quality of code reviews. * **Local Development:** The process empowers developers to conduct reviews locally within their familiar IDE. * **Integration Options:** The flexibility to integrate with project management tools like JIRA and GitLab streamlines workflow and issue tracking.
Analiza różnic między obrazami:
devai review imgdiff \
-c ~/github/genai-for-developers/images/devai-api.png \
-t ~/github/genai-for-developers/images/devai-api-slack.png
Dane wyjściowe:
The following UI elements are missing in the "AFTER UPGRADE STATE" image compared to the "BEFORE UPGRADE STATE" image: 1. **Slack:** The entire Slack element, including the icon, "Team channel" label, and the arrow indicating interaction, is absent in the AFTER UPGRADE image. 2. **Storage Bucket:** The "Storage Bucket" element with its icon and "PDFs" label is missing in the AFTER UPGRADE image. 3. **"GenAI Agents" label in Vertex AI block:** The BEFORE UPGRADE image has "Vertex AI Agents" and "GenAI Agent" labels within the Vertex AI block, while the AFTER UPGRADE image only has "Vertex AI." 4. **"Open JIRA Issue" and "Team Project" labels:** In the BEFORE UPGRADE image, these labels are connected to the JIRA block with an arrow. These are missing in the AFTER UPGRADE image. **Decision Explanation:** The analysis is based on a direct visual comparison of the two provided images, noting the presence and absence of specific UI elements and their associated labels. The elements listed above are present in the BEFORE UPGRADE image but absent in the AFTER UPGRADE image.
Polecenie generowania dokumentacji:
devai document readme -c ~/github/genai-for-developers/sample-app/src/main/
Dane wyjściowe:
# Bank of Anthos - Balance Reader Service ## Table of Contents - [Description](#description) - [Features](#features) - [Technologies Used](#technologies-used) - [Installation](#installation) - [Configuration](#configuration) - [Usage](#usage) - [Health Checks](#health-checks) - [Metrics and Tracing](#metrics-and-tracing) - [Contributing](#contributing) - [License](#license) ## Description The Balance Reader service is a component of the Bank of Anthos sample application. It provides a REST endpoint for retrieving the current balance of a user account. This service demonstrates key concepts for building microservices with Spring Boot and deploying them to a Kubernetes cluster. ## Features - Securely retrieves account balances using JWT authentication. - Leverages a local cache for fast balance retrieval. - Asynchronously processes transactions from a central ledger. - Provides health check endpoints for Kubernetes liveness and readiness probes. - Exposes metrics to Stackdriver for monitoring and observability. - Supports distributed tracing with Zipkin. ## Technologies Used - Java - Spring Boot - Spring Data JPA - Hibernate - Google Cloud SQL (PostgreSQL) - JWT (JSON Web Token) - Guava Cache - Micrometer - Stackdriver - Zipkin ## Installation 1. **Prerequisites:** - Java 17 or later - Maven 3.5 or later - Docker (for containerization) - Kubernetes cluster (for deployment) - Google Cloud account (for Stackdriver and other GCP services)
Sprawdź dostępne polecenia devai w edytorze Cloud Shell:
cloudshell edit ~/github/genai-for-developers/devai-cli/README.md
Możesz też zapoznać się z plikiem README.md w repozytorium GitHub.
15. Śledzenie wszystkich zmiennych środowiskowych w pliku
Utwórz nowy plik, aby śledzić wszystkie zmienne środowiskowe (np. klucze interfejsu API, tokeny API itp.), które będziesz tworzyć.
Podczas pracy w ramach laboratorium będziesz ich używać wiele razy w różnych systemach, więc łatwiej będzie Ci się do nich odwoływać w jednym miejscu.
16. Konfiguracja śledzenia LangSmith LLM
Utwórz konto LangSmith i wygeneruj klucz interfejsu API usługi w sekcji Ustawienia. https://docs.smith.langchain.com/
Ustaw zmienne środowiskowe wymagane do integracji z LangSmith. Przed uruchomieniem poleceń zastąp klucz interfejsu API usługi.
export LANGCHAIN_API_KEY=langsmith-service-api-key
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_ENDPOINT="https://api.smith.langchain.com"
Aby uniknąć wyświetlania poufnych informacji w terminalu, sprawdzoną metodą jest użycie read -s
. Jest to bezpieczny sposób ustawiania zmiennych środowiskowych bez wartości wyświetlanej w historii poleceń konsoli. Po jego uruchomieniu musisz wkleić wartość i nacisnąć klawisz Enter.
17. Konfiguracja polecenia JIRA
Utwórz konto JIRA, jeśli jeszcze go nie masz.
Utwórz token API JIRA dla swojego projektu. https://id.atlassian.com/manage-profile/security/api-tokens
Ustaw te zmienne środowiskowe wymagane do integracji JIRA (zastąp wartości przed uruchomieniem poleceń).
export JIRA_API_TOKEN=your-token-value
export JIRA_USERNAME="email that you used to register with JIRA"
export JIRA_INSTANCE_URL="https://YOUR-PROJECT.atlassian.net"
export JIRA_PROJECT_KEY="JIRA project key"
export JIRA_CLOUD=true
Otwórz plik review.py
:
cloudshell edit ~/github/genai-for-developers/devai-cli/src/devai/commands/review.py
Sprawdź plik review.py
:
source=source.format(format_files_as_string(context)) code_chat_model = GenerativeModel(model_name) code_chat = code_chat_model.start_chat() code_chat.send_message(qry) response = code_chat.send_message(source) ... else: click.echo(response.text)
Znajdź wiersz poniżej tego wiersza i usuń znacznik komentarza:
# Uncomment after configuring JIRA and GitLab env variables - see README.md for details
Polecenie importowania JIRA u góry pliku
# from devai.commands.jira import create_jira_issue
Metoda tworzenia problemu JIRA w metodzie code
#create_jira_issue("Code Review Results", response.text)
Ponownie uruchom polecenie sprawdzania kodu i sprawdź dane wyjściowe agenta:
export PROJECT_ID=$(gcloud config get-value project)
export LOCATION=us-central1
devai review code -c ~/github/genai-for-developers/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
Przykładowe dane wyjściowe:
(venv) student_00_19a997c157f8@cloudshell:~/genai-for-developers/devai-cli (qwiklabs-gcp-02-71a9948ae110)$ devai review code -c ../sample-app/src/main/java/anthos/samples/bankofanthos/balancereader /home/student_00_19a997c157f8/genai-for-developers/devai-cli/venv/lib/python3.9/site-packages/langchain_core/_api/deprecation.py:117: LangChainDeprecationWarning: The function `initialize_agent` was deprecated in LangChain 0.1.0 and will be removed in 0.2.0. Use new agent constructor methods like create_react_agent, create_json_agent, create_structured_chat_agent, etc. instead. warn_deprecated( Response from Model: ```java // Class: TransactionRepository // Method: findBalance // Efficiency - Consider using a native SQL query to improve performance for complex database operations. - Use prepared statements to avoid SQL injection vulnerabilities. // Best Practices - Return a Optional<Long> instead of null to handle the case when no balance is found for the given account.
/home/student_00_19a997c157f8/genai-for-developers/devai-cli/venv/lib/python3.9/site-packages/langchain_core/_api/deprecation.py:117: LangChainDeprecationWarning: Funkcja __call__
została wycofana w wersji LangChain 0.1.0 i zostanie usunięta w wersji 0.2.0. Zamiast tego użyj wywołania. warn_deprecated(
Wchodzimy do nowego łańcucha AgentExecutor… Myśl: opis jest podany w pytaniu, więc nie ma co myśleć o Akcji:
{
"action": "create_issue",
"action_input": {
"description": "Class: TransactionRepository\nMethod: findBalance\n\nEfficiency\n- Consider using a native SQL query to improve performance for complex database operations.\n- Use prepared statements to avoid SQL injection vulnerabilities.\n\nBest Practices\n- Return a Optional<Long> instead of null to handle the case when no balance is found for the given account."
}
}
Utworzono nowy problem z kluczem: CYMEATS-117
Obserwacja: utworzono nowy problem z kluczem: CYMEATS-117 Thinkt:Final Answer: CYMEATS-117
Zakończono łańcuch.
Open your JIRA project in the browser and review the created issue.
Sample JIRA issue view.
<img src="img/9a93a958c30f0b51.png" alt="9a93a958c30f0b51.png" width="624.00" />
Open [LangSmith portal](https://smith.langchain.com/) and review LLM trace for JIRA issue creation call.
Sample LangSmith LLM trace.
<img src="img/6222ee1653a5ea54.png" alt="6222ee1653a5ea54.png" width="624.00" />
## Import GitHub repo to GitLab repo
Go to [https://gitlab.com/projects/new](https://gitlab.com/projects/new) and select "`Import project`" / "`Repository by URL`" option:
Git repository url:
https://github.com/GoogleCloudPlatform/genai-for-developers.git
Or
Your personal GitHub project that you created earlier in this lab.
Under Project URL - select your GitLab userid
Set Visibility to `Public`.
Click - "`Create Project`" to start the import process.
If you see an error about invalid GitHub Repository URL, [create a new GitHub token](https://github.com/settings/tokens)(fine-grained) with Public repositories read-only access, and retry import again providing your GitHub userid and token.
## Clone GitLab repo and setup SSH key
Return to Google Cloud Shell terminal and set up a new SSH key.
Update your email before running the commands. Hit enter multiple times to accept defaults.
ssh-keygen -t ed25519 -C "your-email-address"
eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed25519
cat ~/.ssh/id_ed25519.pub
Add a public key to your GitLab account.
Open [https://gitlab.com/-/profile/keys](https://gitlab.com/-/profile/keys) and click "Add new key".
For the key value copy/paste the output of the last command.
Go back to the terminal and clone the repository.
cd ~ mkdir gitlab cd gitlab
Replace with your GitLab userid and repository url that was just created.
```console
git clone git@gitlab.com:YOUR_GITLAB_USERID/genai-for-developers.git
Zmień katalog i otwórz plik .gitlab-ci.yml
.
cd genai-for-developers
cloudshell edit .gitlab-ci.yml
Jeśli usługa Gemini
nie była jeszcze włączona, włącz ją w edytorze Cloud Shell.
Kliknij prawym przyciskiem myszy dowolne miejsce w pliku .gitlab-ci.yml
i wybierz „Gemini Code Assist > Explain
this"
18. Konfiguracja polecenia GitLab
Otwórz GitLab i utwórz token dostępu do projektu w sekcji „Settings / Access Tokens
” w repozytorium GitLab utworzonym w poprzednich krokach.
Skopiuj i zapisz wartość tokena dostępu, aby użyć jej w kolejnych krokach.
Użyj tych informacji:
- Nazwa tokena:
devai-cli-qwiklabs
- Rola:
Maintainer
- Zakres:
api
Ustaw zmienne środowiskowe wymagane do integracji GitLab.
To polecenie wymaga aktualizacji tokena dostępu GitLab.
export GITLAB_PERSONAL_ACCESS_TOKEN=gitlab-access-token
To polecenie wymaga zaktualizowania identyfikatora użytkownika i nazwy repozytorium GitLab.
export GITLAB_REPOSITORY="USERID/REPOSITORY"
Ustaw pozostałe zmienne środowiskowe:
export GITLAB_URL="https://gitlab.com"
export GITLAB_BRANCH="devai"
export GITLAB_BASE_BRANCH="main"
Otwórz stronę GitLab i utwórz w swoim projekcie nowy problem GitLab zatytułowany „CICD AI Insights
”.
Inną opcją jest użycie polecenia curl. Potrzebujesz identyfikatora projektu GitLab, który możesz znaleźć w sekcji „Settings
/ General
”.
export GITLAB_PROJECT_ID=56390153 # replace
curl --request POST \
--header "PRIVATE-TOKEN: $GITLAB_PERSONAL_ACCESS_TOKEN" \
--header "Content-Type: application/json" \
--data '{"title":"CICD AI Insights"}' \
https://gitlab.com/api/v4/projects/$GITLAB_PROJECT_ID/issues
Wróć do Cloud Shell i otwórz plik review.py
:
cloudshell edit ~/gitlab/genai-for-developers/devai-cli/src/devai/commands/review.py
Znajdź kod i usuń komentarz poniżej
Linia do zaimportowania polecenia GitLab
# from devai.commands.gitlab import create_gitlab_issue_comment
Metoda komentowania problemu w GitLab
# create_gitlab_issue_comment(response.text)
19. Rozwój interfejsu wiersza poleceń DevAI
Ponieważ przełączyłeś się na repozytorium/katalog GitLab. Musisz ponownie wykonać czynności konfiguracyjne opisane poniżej.
W terminalu skonfiguruj środowisko wirtualne w języku Python, zainstaluj wymagania i uruchom przykładowe polecenie.
export PROJECT_ID=$(gcloud config get-value project)
export LOCATION=us-central1
cd ~/gitlab/genai-for-developers/devai-cli
python3 -m venv venv
. venv/bin/activate
pip3 install -r src/requirements.txt
pip3 install --editable ./src
devai echo
Możesz sprawdzić lokalizację cli – tym razem powinna znajdować się w folderze GitLab.
which devai
Uruchom polecenie weryfikacji kodu ponownie w terminalu:
devai review code -c ~/gitlab/genai-for-developers/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
Przykładowe dane wyjściowe – niektóre sekcje zostały skrócone:
(venv) student_00_19a997c157f8@cloudshell:~/genai-for-developers/devai-cli (qwiklabs-gcp-02-71a9948ae110)$ devai review code -c ../sample-app/src/main/java/anthos/samples/bankofanthos/balancereader . . Response from Model: **Class: Transaction** **Method: toString** **Maintainability:** * The formatting of the string representation could be more clear and concise. Consider using a dedicated method for formatting the amount, e.g., `formatAmount()`. . . > Entering new AgentExecutor chain... Thought: I need to first get the issue ID using the Get Issues tool, then I can comment on the issue using the Comment on Issue tool. Action: Get Issues Action Input: Observation: Found 1 issues: [{'title': 'CICD AI Insights', 'number': 1}] Thought:Thought: I found the issue ID, so now I can add the comment to the issue. Action: Comment on Issue Action Input: 1 Action: Get Issue Action Input: 1 Observation: {"title": "CICD AI Insights", "body": "", "comments": "[{'body': '**Transaction.java**\\n\\n\\n**Class:** Transaction\\n\\n\\n* **Security:** Consider using a custom date format like \\\\\"yyyy-MM-dd HH:mm:ss.SSS\\\\\" to handle timestamps more robustly.\\n\\n\\n**JWTVerifierGenerator.java**\\n\\n\\n* . . Thought:Now I can use the Comment on Issue tool to add the comment to the issue. Action: Comment on Issue Action Input: 1 **Class: Transaction** **Method: toString** **Maintainability:** . . . Observation: Commented on issue 1 Thought:I have now completed the necessary actions and added the comment to the issue 'CICD AI Insights'. Final Answer: Comment added to issue 'CICD AI Insights' > Finished chain.
Otwórz stronę GitLab i sprawdź zaktualizowany problem.
Sprawdź ślad LLM w LangSmith.
Przykładowy ślad LLM
20. Wypchnij zmiany do repozytorium GitLab
Wróć do edytora Google Cloud Shell.
Przełącz na: „Source Control
” .
Przygotuj, zatwierdź i wypchnij wprowadzone zmiany, aby zaktualizować plik review.py
.
21. Konfiguracja CICD w GitLab
Następnie włączysz potok GitLab CICD, aby uruchamiać weryfikację kodu po przesłaniu zmian do repozytorium.
Otwórz stronę GitLab i przejdź do sekcji „Settings / CICD"
”.
Rozwiń sekcję Variables
i kliknij „Add variable
”.
Podczas dodawania zmiennych odznacz wszystkie pola wyboru. Przykład:
W notatkach, w których przechowujesz wszystkie zmienne środowiskowe, dodaj zmienne środowiskowe dla JIRA, GitLab i LangSmith.
PROJECT_ID=qwiklabs-project-id LOCATION=us-central1 GOOGLE_CLOUD_CREDENTIALS - cat ~/vertex-client-key.json LANGCHAIN_TRACING_V2=true LANGCHAIN_ENDPOINT="https://api.smith.langchain.com" LANGCHAIN_API_KEY=your-service-api-key JIRA_API_TOKEN=your-token JIRA_USERNAME="email that you used to register with JIRA" JIRA_INSTANCE_URL="https://YOUR-PROJECT.atlassian.net" JIRA_PROJECT_KEY="JIRA project key" JIRA_CLOUD=true GITLAB_PERSONAL_ACCESS_TOKEN=your-gitlab-token GITLAB_URL="https://gitlab.com" GITLAB_REPOSITORY="USERID/REPOSITORY" GITLAB_BRANCH="devai" GITLAB_BASE_BRANCH="main"
W przypadku wartości zmiennej GOOGLE_CLOUD_CREDENTIALS
użyj klucza konta usługi utworzonego w sekcji powyżej.
cat ~/vertex-client-key.json
Widok Zmienne CI/CD:
22. Uruchamianie potoku CICD w GitLab
Otwórz „Build / Pipelines
” w interfejsie GitLab i kliknij „Run Pipeline
”.
23. Sprawdzanie danych wyjściowych potoku GitLab
Otwórz „Build / Jobs
” w interfejsie GitLab i sprawdzić dane wyjściowe potoku.
Otwórz stronę GitLab i sprawdź zaktualizowane komentarze do problemu „CICD Insights
”.
Wyłączanie wykonywania przepływu pracy GitLab
Wróć do edytora Google Cloud Shell. Odkomentuj wiersze, aby wyłączyć wykonywanie przepływu pracy GitLab po zdarzeniach push kodu. Nadal możesz wykonywać przepływ pracy z interfejsu na żądanie.
# workflow: # rules: # - if: $CI_PIPELINE_SOURCE == "web"
Otwórz plik .gitlab-ci.yml
w katalogu głównym projektu i usuń komentarze z tych wierszy:
cloudshell edit ~/gitlab/genai-for-developers/.gitlab-ci.yml
Przejdź na kartę „Source Control
” – zatwierdź, zatwierdź i prześlij zmiany.
24. Integracja z CircleCI
Co to jest CircleCI?
CircleCI to działająca w chmurze platforma CI/CD, która umożliwia zespołom automatyzację procesów tworzenia i wdrażania oprogramowania. Integruje się z systemami kontroli wersji, takimi jak GitHub, Bitbucket i GitLab, umożliwiając zespołom weryfikowanie zmian w kodzie w czasie rzeczywistym przez uruchamianie automatycznych testów i kompilacji. W przypadku ciągłej dostawy usług CircleCI może zautomatyzować wdrażanie oprogramowania w różnych środowiskach chmurowych, takich jak AWS, Google Cloud i Azure.
Konfiguracja
Otwórz stronę CircleCI i utwórz nowy projekt. Wybierz „GitLab
” lub „Cloud
” dla repozytorium.
Przyznaj CircleCI dostęp do konta GitLab.
W sekcji Najszybsza opcja wybierz gałąź main
. CircleCI może wykryć istniejący plik konfiguracji i przejść do następnego kroku.
Po utworzeniu projektu kliknij „Project Settings
”. / „Environment Variables
” .
Dodaj wszystkie zmienne środowiskowe, których używasz do tej pory.
Oto przykładowa lista zmiennych środowiskowych do dodania.
PROJECT_ID=qwiklabs-project-id LOCATION=us-central1 GOOGLE_CLOUD_CREDENTIALS - cat ~/vertex-client-key.json LANGCHAIN_TRACING_V2=true LANGCHAIN_ENDPOINT="https://api.smith.langchain.com" LANGCHAIN_API_KEY=your-service-api-key JIRA_API_TOKEN=your-token JIRA_USERNAME="email that you used to register with JIRA" JIRA_INSTANCE_URL="https://YOUR-PROJECT.atlassian.net" JIRA_PROJECT_KEY="JIRA project key" JIRA_CLOUD=true GITLAB_PERSONAL_ACCESS_TOKEN=your-gitlab-token GITLAB_URL="https://gitlab.com" GITLAB_REPOSITORY="USERID/REPOSITORY" GITLAB_BRANCH="devai" GITLAB_BASE_BRANCH="main"
25. Włączanie metod JIRA i GitLab
Otwórz edytor Google Cloud Shell i wprowadź zmianę w pliku review.py
.
Znajdź wiersze poniżej i usuń komentarz.
# from devai.commands.jira import create_jira_issue
create_jira_issue("Performance Review Results", response.text) create_gitlab_issue_comment(response.text) . . . create_jira_issue("Security Review Results", response.text) create_gitlab_issue_comment(response.text)
Przełącz na: „Source Control
” .
Otwórz stronę GitLab i przejdź do folderu „Build
” / „Pipelines
”.
Aby sprawdzić przepływ pracy, kliknij link do CircleCI.
Sprawdź komentarze do problemu w GitLab w repozytorium.
Sprawdź nowe problemy utworzone w projekcie Jira.
26. Gratulacje!
Gratulacje! Masz ukończony ten moduł.
Omówione zagadnienia:
- Dodaję kroki automatyzacji weryfikacji kodu GenAI w GitHub, GitLab i CircleCI.
- agentów LangChain ReAct do automatyzacji zadań takich jak komentowanie problemów w GitLab i otwieranie zgłoszeń w JIRA.
Co dalej:
- Wkrótce odbędą się kolejne praktyczne sesje.
Czyszczenie danych
Aby uniknąć obciążenia konta Google Cloud opłatami za zasoby zużyte w tym samouczku, możesz usunąć projekt zawierający te zasoby lub zachować projekt i usunąć poszczególne zasoby.
Usuwam projekt
Najprostszym sposobem na uniknięcie płatności jest usunięcie projektu utworzonego na potrzeby samouczka.
©2024 Google LLC. Wszelkie prawa zastrzeżone. Google i logo Google są znakami towarowymi Google LLC. Wszelkie inne nazwy firm i produktów mogą być znakami towarowymi odpowiednich podmiotów, z którymi są powiązane.