1. Panoramica
In questo lab configurerai la pipeline CICD e l'integrerai con Gemini per automatizzare i passaggi di revisione del codice.
Cosa imparerai a fare
In questo lab imparerai a:
- Come aggiungere i passaggi di automazione della revisione del codice di IA generativa in GitHub, GitLab e CircleCI
- Come utilizzare gli agenti e i toolkit LangChain ReAct per automatizzare attività come l'aggiunta di commenti a GitLab e l'apertura di ticket JIRA
Prerequisiti
- In questo lab si presuppone che tu abbia familiarità con gli ambienti della console Cloud e Cloud Shell.
2. Configurazione e requisiti
Configurazione del progetto cloud
- Accedi alla console Google Cloud e crea un nuovo progetto o riutilizzane uno esistente. Se non hai ancora un account Gmail o Google Workspace, devi crearne uno.
- Il Nome progetto è il nome visualizzato dei partecipanti del progetto. Si tratta di una stringa di caratteri non utilizzata dalle API di Google. Puoi sempre aggiornarla.
- L'ID progetto è univoco per tutti i progetti Google Cloud ed è immutabile (non può essere modificato dopo essere stato impostato). La console Cloud genera automaticamente una stringa univoca; di solito non ti interessa quale sia. Nella maggior parte dei codelab, dovrai fare riferimento al tuo ID progetto (in genere identificato come
PROJECT_ID
). Se l'ID generato non ti piace, puoi generarne un altro casuale. In alternativa, puoi provarne una personalizzata per verificare se è disponibile. Non può essere modificato dopo questo passaggio e rimane invariato per tutta la durata del progetto. - Per informazione, c'è un terzo valore, il numero di progetto, utilizzato da alcune API. Scopri di più su tutti e tre questi valori nella documentazione.
- Successivamente, dovrai abilitare la fatturazione nella console Cloud per utilizzare le API/risorse Cloud. La partecipazione a questo codelab non ha costi, o quasi. Per arrestare le risorse ed evitare di incorrere in fatturazione al termine di questo tutorial, puoi eliminare le risorse che hai creato o il progetto. I nuovi utenti di Google Cloud sono idonei al programma prova senza costi di 300$.
Configurazione dell'ambiente
Apri la chat di Gemini.
In alternativa, digita "Chiedi a Gemini" nella barra di ricerca.
Abilita l'API Cloud AI Companion:
Fai clic su "Start chatting
" e segui una delle domande di esempio o digita il tuo prompt per provarlo.
Prompt da provare:
- Spiega Cloud Run in 5 punti chiave.
- Sei un Product Manager di Google Cloud Run e devi spiegare Cloud Run a uno studente in 5 brevi punti chiave.
- Sei Product Manager di Google Cloud Run. Spiega Cloud Run a uno sviluppatore Kubernetes certificato in 5 brevi punti chiave.
- Sei Product Manager di Google Cloud Run. Spiega in 5 brevi punti chiave quando useresti Cloud Run rispetto a GKE a uno sviluppatore senior.
Consulta la Guida ai prompt per scoprire di più su come scrivere prompt migliori.
In che modo Gemini per Google Cloud utilizza i dati
L'impegno di Google per la privacy
Google è stata una delle prime aziende del settore a pubblicare un impegno in materia di privacy AI/ML, che illustra la nostra convinzione che i clienti debbano disporre del massimo livello di sicurezza e controllo sui propri dati archiviati nel cloud.
Dati che invii e ricevi
Le domande che fai a Gemini, incluse eventuali informazioni di input o codice che invii a Gemini per l'analisi o la compilazione, sono chiamate prompt. Le risposte o i completamenti di codice che ricevi da Gemini sono chiamati risposte. Gemini non utilizza i tuoi prompt o le sue risposte come dati per addestrare i suoi modelli.
Crittografia dei prompt
Quando invii prompt a Gemini, i tuoi dati sono criptati in transito come input per il modello sottostante in Gemini.
Dati del programma generati da Gemini
Gemini viene addestrato sul codice proprietario di Google Cloud e su codice di terze parti selezionato. Sei responsabile della sicurezza, dei test e dell'efficacia del tuo codice, incluse eventuali attività di completamento, generazione o analisi del codice offerte da Gemini.
Scopri di più su come Google gestisce i tuoi prompt.
3. Opzioni per testare i prompt
Se vuoi modificare/estendere i prompt esistenti dell'interfaccia a riga di comando devai, hai diverse opzioni.
Vertex AI Studio fa parte della piattaforma Vertex AI di Google Cloud, progettata specificamente per semplificare e accelerare lo sviluppo e l'utilizzo di modelli di IA generativa.
Google AI Studio è uno strumento basato sul web per la prototipazione e la sperimentazione della progettazione di prompt e dell'API Gemini. Abbonati a Gemini 1.5 Pro con una finestra contestuale di 1 milione di token o scopri di più.
- App web Gemini (gemini.google.com)
L'app web Gemini di Google (gemini.google.com) è uno strumento basato sul web progettato per aiutarti a esplorare e utilizzare la potenza dei modelli di AI Gemini di Google.
- App mobile Google Gemini per Android e app Google su iOS
4. Crea service account
Attiva Cloud Shell facendo clic sull'icona a destra della barra di ricerca.
Nel terminale aperto, abilita i servizi richiesti per utilizzare le API Vertex AI e la chat Gemini.
gcloud services enable \
aiplatform.googleapis.com \
cloudaicompanion.googleapis.com \
cloudresourcemanager.googleapis.com \
secretmanager.googleapis.com
Se ti viene chiesto di autorizzare, fai clic su "Autorizza" per continuare.
Esegui i seguenti comandi per creare un nuovo account di servizio e le relative chiavi.
Utilizzerai questo account di servizio per effettuare chiamate API all'API Gemini di Vertex AI dalle pipeline 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. Crea un fork del repository GitHub nel tuo repository GitHub personale
Vai alla pagina https://github.com/GoogleCloudPlatform/genai-for-developers/fork e seleziona il tuo ID utente GitHub come proprietario.
Deseleziona l'opzione per copiare solo il ramo "principale".
Fai clic su "Create fork
".
6. Abilita flussi di lavoro delle azioni GitHub
Apri il repository GitHub creato con fork nel browser e passa a "Actions
" per abilitare i flussi di lavoro.
7. Aggiungi secret dei repository
Crea un secret del repository in "Settings / Secrets and variables / Actions
" nel repository GitHub sottoposto a fork.
Aggiungi il secret del repository con il nome "GOOGLE_API_CREDENTIALS
".
Passa alla finestra/scheda di Google Cloud Shell ed esegui il comando seguente nel terminale Cloud Shell.
cat ~/vertex-client-key.json
Copia il contenuto del file e incollalo come valore per il secret.
Aggiungi il secret PROJECT_ID
con l'ID progetto Qwiklabs come valore
8. Esegui flusso di lavoro delle azioni GitHub
Passa al tuo repository GitHub nel browser ed esegui il flusso di lavoro.
Il flusso di lavoro è configurato per essere eseguito con push del codice o esecuzione manuale.
Seleziona "GenAI For Developers
" in Tutti i flussi di lavoro e fai clic su "Run workflow
" con "main
" ramo.
Esamina i risultati:
Testa i risultati del comando di copertura:
devai review testcoverage -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
Risultati del comando di revisione del codice:
devai review code -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
Risultati del comando di revisione del rendimento:
devai review performance -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
Risultati del comando di revisione della sicurezza:
devai review security -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
I blocchi esaminano i risultati del comando:
devai review blockers -c ${{ github.workspace }}/sample-app/pom.xml
9. Clona il repository
Torna al terminale Cloud Shell e clona il repository.
Creare una cartella per il repository GitHub.
mkdir github
cd github
Sostituisci YOUR-GITHUB-USERID
con il tuo ID utente GitHub prima di eseguire i comandi.
Imposta il nome utente e l'email Git nel terminale.
Aggiorna i valori prima di eseguire i comandi.
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
Cambia la cartella e apri il file del flusso di lavoro nell'editor di Cloud Shell.
cd genai-for-developers
cloudshell edit .github/workflows/devai-review.yml
Attendi finché il file di configurazione non viene visualizzato nell'IDE.
10. Attivare Gemini Code Assist
Fai clic sull'icona "Gemini
" nell'angolo in basso a destra .
Fai clic su "Login to Google Cloud
" e "Select a Google Cloud Project
".
Dalla finestra popup, seleziona il tuo progetto Qwiklabs.
11. Spiegare il codice con Gemini Code Assist
Fai clic con il tasto destro del mouse in un punto qualsiasi del file devai-review.yml
e seleziona Gemini Code Assist > Explain
.
Spiegazione della recensione:
12. Esegui DEVAI CLI in locale
Torna all'editor di Cloud Shell e apri un nuovo terminale.
Torna al terminale Cloud Shell ed esegui i comandi riportati di seguito per installare devai
in locale.
pip3 install devai-cli
Il client è stato installato, ma non è presente nel 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.
Esegui il comando seguente per aggiornare la variabile di ambiente PATH. Sostituisci con il nome della home directory dell'utente. Ad esempio: student_00_478dfeb8df15
export PATH=$PATH:/home/YOUR-USER-HOME-FOLDER/.local/bin
Esegui il comando devai cli per eseguire la revisione del codice in locale. Esamina l'output dell'interfaccia a riga di comando.
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
Apri lo script di revisione eseguendo il comando seguente:
cloudshell edit devai-cli/src/devai/commands/review.py
Fai clic con il tasto destro del mouse in un punto qualsiasi del file review.py
e seleziona Gemini Code Assist > Explain
.
Esamina la spiegazione.
13. Sviluppo dell'interfaccia a riga di comando DevAI
In questa sezione apporterai modifiche all'interfaccia a riga di comando di Devai.
Per iniziare, configura l'ambiente virtuale Python, installa i requisiti ed esegui il comando di esempio.
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
Esegui il comando di revisione della copertura del test per verificare che tutto funzioni correttamente:
devai review testcoverage -c ~/github/genai-for-developers/sample-app/src
Esamina i risultati utilizzando l'anteprima di Markdown nell'editor di Cloud Shell.
Crea un nuovo file e incolla la risposta di Gemini.
A questo punto, utilizza la tavolozza dei comandi e seleziona "Markdown: Open Preview
".
14. Esplora i comandi dell'interfaccia a riga di comando di Devai
Comando di revisione del codice
devai review code -c ~/github/genai-for-developers/sample-app/src/main/java
Comando di revisione del rendimento
devai review performance -c ~/github/genai-for-developers/sample-app/src/main/java
Comando di revisione della sicurezza
devai review security -c ~/github/genai-for-developers/sample-app/src/main/java
Comando di revisione della copertura del test
devai review testcoverage -c ~/github/genai-for-developers/sample-app/src
Comandi di revisione dei blocchi
devai review blockers -c ~/github/genai-for-developers/sample-app/pom.xml
devai review blockers -c ~/github/genai-for-developers/sample-app/setup.md
Revisione e riassunto di immagini/diagrammi:
Diagramma di input[~/github/genai-for-developers/images/extension-diagram.png
]:
Rivedi il comando:
devai review image \
-f ~/github/genai-for-developers/images/extension-diagram.png \
-p "Review and summarize this diagram"
Output:
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.
Analisi delle differenze di immagini:
devai review imgdiff \
-c ~/github/genai-for-developers/images/devai-api.png \
-t ~/github/genai-for-developers/images/devai-api-slack.png
Output:
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.
Comando di generazione della documentazione:
devai document readme -c ~/github/genai-for-developers/sample-app/src/main/
Output:
# 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)
Esamina i comandi devai cli disponibili nell'editor di Cloud Shell:
cloudshell edit ~/github/genai-for-developers/devai-cli/README.md
In alternativa, consulta il file README.md nel repository GitHub.
15. Tieni traccia di tutte le variabili di ambiente in un file
Crea un nuovo file per tenere traccia di tutte le variabili di ambiente (ad es. chiavi API, token API e così via) che creerai.
Li utilizzerai per diversi sistemi molte volte durante il lab, quindi sarà più facile farvi riferimento in un unico posto.
16. Configurazione di tracciamento LLM LangSmith
Crea un account LangSmith e genera una chiave API di servizio nella sezione Impostazioni. https://docs.smith.langchain.com/
Imposta le variabili di ambiente richieste per l'integrazione di LangSmith. Sostituisci la chiave API del servizio prima di eseguire i comandi.
export LANGCHAIN_API_KEY=langsmith-service-api-key
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_ENDPOINT="https://api.smith.langchain.com"
Per evitare di esporre informazioni sensibili nel terminale, è consigliabile utilizzare read -s
, un modo sicuro per impostare le variabili di ambiente senza che il valore venga visualizzato nella cronologia dei comandi della console. Dopo averlo eseguito, devi incollare il valore e premere Invio.
17. Configurazione del comando JIRA
Crea un account JIRA, se non ne hai uno.
Crea un token API JIRA per il tuo progetto. https://id.atlassian.com/manage-profile/security/api-tokens
Imposta queste variabili di ambiente richieste per l'integrazione JIRA (sostituisci i valori prima di eseguire i comandi).
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
Apri il file review.py
:
cloudshell edit ~/github/genai-for-developers/devai-cli/src/devai/commands/review.py
Esamina il file 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)
Trova la riga sotto questa e rimuovi il commento:
# Uncomment after configuring JIRA and GitLab env variables - see README.md for details
Importa comando JIRA nella parte superiore del file
# from devai.commands.jira import create_jira_issue
Metodo per creare un problema JIRA nel metodo code
#create_jira_issue("Code Review Results", response.text)
Esegui di nuovo il comando di revisione del codice e controlla l'output dell'agente:
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
Esempio di output:
(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: la funzione __call__
è stata deprecata in LangChain 0.1.0 e verrà rimossa in 0.2.0 Utilizza invece invoke. warn_deprecated(
Inserimento della nuova catena AgentExecutor… Pensiero: la descrizione è fornita nella domanda, quindi non c'è nulla da pensare all'azione:
{
"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."
}
}
Nuovo problema creato con la chiave: CYMEATS-117
Osservazione: Nuovo problema creato con la chiave: CYMEATS-117 Thought:Final Answer: CYMEATS-117
Catena terminata.
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 "indirizzo-email"
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
Cambia directory e apri il file .gitlab-ci.yml
.
cd genai-for-developers
cloudshell edit .gitlab-ci.yml
Se non l'hai ancora fatto, abilita Gemini
nell'editor di Cloud Shell.
Fai clic con il tasto destro del mouse in un punto qualsiasi del file .gitlab-ci.yml
e seleziona "Gemini Code Assist > Explain
this"
.
18. Configurazione del comando GitLab
Apri GitLab e crea un token di accesso al progetto in "Settings / Access Tokens
" nel repository GitLab creato nei passaggi precedenti.
Copia e memorizza il valore del token di accesso da utilizzare nei passaggi successivi.
Utilizza i seguenti dettagli:
- Nome token:
devai-cli-qwiklabs
- Ruolo:
Maintainer
- Ambito:
api
Imposta le variabili di ambiente richieste per l'integrazione di GitLab.
Questo comando richiede l'aggiornamento del token di accesso GitLab.
export GITLAB_PERSONAL_ACCESS_TOKEN=gitlab-access-token
Questo comando richiede l'aggiornamento dell'ID utente e del nome del repository GitLab.
export GITLAB_REPOSITORY="USERID/REPOSITORY"
Imposta le altre variabili di ambiente:
export GITLAB_URL="https://gitlab.com"
export GITLAB_BRANCH="devai"
export GITLAB_BASE_BRANCH="main"
Apri il sito web GitLab e crea un nuovo problema GitLab nel tuo progetto con il titolo "CICD AI Insights
".
Un'altra opzione è utilizzare il comando curl riportato di seguito. Devi avere un ID progetto GitLab. Puoi cercarlo nel campo "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
Torna a Cloud Shell e apri il file review.py
:
cloudshell edit ~/gitlab/genai-for-developers/devai-cli/src/devai/commands/review.py
Trova e rimuovi il commento del codice di seguito
Riga per importare il comando GitLab
# from devai.commands.gitlab import create_gitlab_issue_comment
Metodo per commentare un problema di GitLab
# create_gitlab_issue_comment(response.text)
19. Sviluppo dell'interfaccia a riga di comando DevAI
Dato che sei passato al repository/directory GitLab. Dovrai eseguire nuovamente la procedura di configurazione riportata di seguito.
Nel terminale, configura il tuo ambiente virtuale Python, installa i requisiti ed esegui il comando di esempio.
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
Puoi confermare la posizione dell'interfaccia a riga di comando, che questa volta dovrebbe trovarsi nella cartella GitLab.
which devai
Esegui di nuovo il comando di revisione del codice nel terminale:
devai review code -c ~/gitlab/genai-for-developers/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
Esempio di output, con alcune sezioni abbreviate:
(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.
Apri il sito web di GitLab ed esamina il problema aggiornato.
Esamina la traccia LLM in LangSmith.
Esempio di traccia LLM.
20. Esegui il push delle modifiche nel repository GitLab
Torna all'editor di Google Cloud Shell.
Passa a "Source Control
" .
Esegui la gestione delle fasi, il commit e il push delle modifiche apportate per aggiornare il file review.py
.
21. Configurazione CICD di GitLab
A questo punto, abiliterai la pipeline CICD di GitLab a eseguire la revisione del codice quando le modifiche vengono inviate al repository.
Apri il sito web di GitLab e vai alla sezione "Settings / CICD"
.
Espandi la sezione Variables
e fai clic su "Add variable
".
Assicurati di deselezionare tutte le caselle di controllo quando aggiungi le variabili. Esempio:
Utilizzando le tue note, in cui conservi tutte le variabili di ambiente, aggiungi le variabili di ambiente per JIRA, GitLab e 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"
Per il valore della variabile GOOGLE_CLOUD_CREDENTIALS
, utilizza la chiave dell'account di servizio creata nella sezione precedente.
cat ~/vertex-client-key.json
Visualizzazione delle variabili CI/CD:
22. Esegui pipeline CICD GitLab
Apri "Build / Pipelines
" nell'interfaccia utente di GitLab e fai clic su "Run Pipeline
".
23. Rivedi l'output della pipeline GitLab
Apri "Build / Jobs
" nell'interfaccia utente di GitLab e controlla l'output della pipeline.
Apri il sito web di GitLab ed esamina i commenti aggiornati sulla "CICD Insights
" problema.
Disabilita l'esecuzione del flusso di lavoro GitLab
Torna all'editor Google Cloud Shell. Rimuovi il commento dalle righe per disabilitare l'esecuzione del flusso di lavoro di GitLab sugli eventi push del codice. Puoi comunque eseguire il flusso di lavoro dall'UI on demand.
# workflow: # rules: # - if: $CI_PIPELINE_SOURCE == "web"
Apri .gitlab-ci.yml
nella directory principale del progetto e rimuovi il commento dalle righe:
cloudshell edit ~/gitlab/genai-for-developers/.gitlab-ci.yml
Passa alla scheda "Source Control
": esegui la gestione delle fasi, il commit e il push di questa modifica.
24. Integrazione con CircleCI
Che cos'è CircleCI?
CircleCI è una piattaforma CI/CD basata su cloud che consente ai team di automatizzare i processi di sviluppo e deployment del software. Si integra con i sistemi di controllo della versione come GitHub, Bitbucket e GitLab, consentendo ai team di convalidare le modifiche al codice in tempo reale eseguendo test e build automatizzati. Per la distribuzione continua, CircleCI può automatizzare il deployment del software in vari ambienti cloud come AWS, Google Cloud e Azure.
Configurazione
Apri il sito web CircleCI e crea un nuovo progetto. Seleziona "GitLab
" /"Cloud
" per il repository.
Concedi a CircleCI l'accesso al tuo account GitLab.
Sotto l'opzione Più veloce, seleziona il ramo main
. CircleCI potrebbe rilevare un file di configurazione esistente e saltare questo passaggio.
Dopo aver creato il progetto, fai clic sulla scheda "Project Settings
" /"Environment Variables
" .
Aggiungi tutte le variabili di ambiente che hai utilizzato finora.
Ecco un elenco di esempio di variabili env da aggiungere.
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. Attiva i metodi JIRA e GitLab
Apri l'editor di Google Cloud Shell e apporta una modifica al file review.py
.
Trova e rimuovi i commenti dalle righe riportate di seguito.
# 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)
Passa a "Source Control
" - Stage, commit ed push di questa modifica.
Apri il sito web di GitLab e vai a "Build
"/"Pipelines
".
Segui il link a CircleCI per esaminare il flusso di lavoro.
Esamina i commenti sul problema GitLab nel tuo repository.
Esamina i nuovi problemi creati nel tuo progetto JIRA.
26. Complimenti!
Complimenti, hai completato il lab.
Argomenti trattati:
- Aggiunta dei passaggi per l'automazione della revisione del codice di IA generativa in GitHub, GitLab e CircleCI.
- Agenti LangChain ReAct per automatizzare attività come aggiungere commenti ai problemi di GitLab e aprire ticket JIRA.
Passaggi successivi
- Stanno per arrivare altre sessioni pratiche.
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.
Elimina il progetto
Il modo più semplice per eliminare la fatturazione è quello di eliminare il progetto che hai creato per il tutorial.
©2024 Google LLC. Tutti i diritti riservati. Google e il logo Google sono marchi di Google LLC. Tutti gli altri nomi di società e prodotti sono marchi delle rispettive società a cui sono associati.