이 Codelab 정보
1. 개요
이 실습에서는 생성형 AI를 사용하여 JIRA 사용자 스토리 구현을 자동화하는 솔루션을 빌드합니다.
학습할 내용
실험에는 다음과 같은 몇 가지 주요 부분이 있습니다.
- Gemini API와 통합하도록 Cloud Run 애플리케이션 배포
- JIRA용 Atlassian Forge 앱 만들기 및 배포
- GitLab 작업 자동화에 LangChain ReAct 에이전트 사용
기본 요건
- 이 실습에서는 Cloud 콘솔 및 Cloud Shell 환경에 익숙하다고 가정합니다.
2. 설정 및 요건
Cloud 프로젝트 설정
- Google Cloud Console에 로그인하여 새 프로젝트를 만들거나 기존 프로젝트를 재사용합니다. 아직 Gmail이나 Google Workspace 계정이 없는 경우 계정을 만들어야 합니다.
- 프로젝트 이름은 이 프로젝트 참가자의 표시 이름입니다. 이는 Google API에서 사용하지 않는 문자열이며 언제든지 업데이트할 수 있습니다.
- 프로젝트 ID는 모든 Google Cloud 프로젝트에서 고유하며, 변경할 수 없습니다(설정된 후에는 변경할 수 없음). Cloud 콘솔은 고유한 문자열을 자동으로 생성합니다. 일반적으로는 신경 쓰지 않아도 됩니다. 대부분의 Codelab에서는 프로젝트 ID (일반적으로
PROJECT_ID
로 식별됨)를 참조해야 합니다. 생성된 ID가 마음에 들지 않으면 다른 임의 ID를 생성할 수 있습니다. 또는 직접 시도해 보고 사용 가능한지 확인할 수도 있습니다. 이 단계 이후에는 변경할 수 없으며 프로젝트 기간 동안 유지됩니다. - 참고로 세 번째 값은 일부 API에서 사용하는 프로젝트 번호입니다. 이 세 가지 값에 대한 자세한 내용은 문서를 참고하세요.
- 다음으로 Cloud 리소스/API를 사용하려면 Cloud 콘솔에서 결제를 사용 설정해야 합니다. 이 Codelab 실행에는 많은 비용이 들지 않습니다. 이 튜토리얼이 끝난 후에 요금이 청구되지 않도록 리소스를 종료하려면 만든 리소스 또는 프로젝트를 삭제하면 됩니다. Google Cloud 신규 사용자는 300달러(USD) 상당의 무료 체험판 프로그램에 참여할 수 있습니다.
환경 설정
Gemini 채팅을 엽니다.
또는 검색창에 'Gemini에게 물어보기'를 입력합니다.
Google Cloud API용 Gemini를 사용 설정합니다.
'Start chatting
'를 클릭하고 샘플 질문 중 하나를 따르거나 직접 프롬프트를 입력하여 사용해 봅니다.
프롬프트 예시:
- Cloud Run을 5가지 주요 사항으로 설명합니다.
- Google Cloud Run 제품 관리자로서 학생에게 Cloud Run을 5가지 핵심 사항으로 간단히 설명합니다.
- Google Cloud Run 제품 관리자로서 인증된 Kubernetes 개발자에게 Cloud Run을 5가지 핵심사항으로 간단히 설명합니다.
- Google Cloud Run 제품 관리자입니다. Cloud Run과 GKE 중 어느 쪽을 사용해야 하는지 선임 개발자에게 5가지 핵심 사항으로 설명합니다.
프롬프트 가이드에서 더 나은 프롬프트 작성에 대해 자세히 알아보세요.
Google Cloud를 위한 Gemini에서 사용자 데이터를 사용하는 방법
Google 개인 정보 보호 약정
Google은 업계 최초로 AI/ML 개인 정보 보호 약정을 발표했습니다. 여기에는 클라우드에 저장된 고객 데이터에 대해 고객이 최고 수준의 보안 및 제어 권한을 가져야 한다는 Google의 신념이 표명되어 있습니다.
제출 및 수신하는 데이터
분석하거나 완료하기 위해 Gemini에 제출하는 모든 입력 정보나 코드를 포함하여 Gemini에 묻는 질문을 프롬프트라고 합니다. Gemini로부터 받는 답변이나 코드 완성을 '응답'이라고 합니다. Gemini는 프롬프트나 해당 응답을 데이터로 사용하여 모델을 학습시키지 않습니다.
프롬프트 암호화
Gemini에 프롬프트를 제출하면 Gemini의 기본 모델에 입력으로 전송 중인 데이터가 암호화됩니다.
Gemini에서 생성된 프로그램 데이터
Gemini는 퍼스트 파티 Google Cloud 코드와 선택된 서드 파티 코드로 학습됩니다. Gemini가 제공하는 코드 완성, 생성, 분석을 포함해 코드의 보안, 테스트, 효과에 대한 책임은 사용자에게 있습니다.
Google에서 메시지를 처리하는 방식을 자세히 알아보세요.
3. 프롬프트 테스트 옵션
프롬프트를 테스트하는 방법에는 여러 가지가 있습니다.
Vertex AI Studio는 Google Cloud의 Vertex AI 플랫폼에 포함된 도구로, 생성형 AI 모델의 개발과 사용을 간소화하고 가속화하도록 설계되었습니다.
Google AI Studio는 프롬프트 엔지니어링 및 Gemini API를 프로토타입으로 제작하고 실험하기 위한 웹 기반 도구입니다.
- Gemini 웹 앱 (gemini.google.com)
Google Gemini 웹 앱 (gemini.google.com)은 Google의 Gemini AI 모델을 살펴보고 활용하는 데 도움이 되도록 설계된 웹 기반 도구입니다.
- Android용 Google Gemini 모바일 앱 및 iOS의 Google 앱
4. 신청서 검토
서비스 계정 만들기
Google Cloud 콘솔로 돌아가 검색창 오른쪽에 있는 아이콘을 클릭하여 Cloud Shell을 활성화합니다.
열린 터미널에서 다음 명령어를 실행하여 새 서비스 계정과 키를 만듭니다.
이 서비스 계정을 사용하여 Cloud Run 애플리케이션에서 Vertex AI Gemini API를 호출합니다.
Qwiklabs 프로젝트 세부정보를 사용하여 프로젝트 세부정보를 구성합니다.
예: qwiklabs-gcp-00-2c10937585bb
gcloud config set project YOUR_QWIKLABS_PROJECT_ID
서비스 계정을 만듭니다.
PROJECT_ID=$(gcloud config get-value project)
SERVICE_ACCOUNT_NAME='vertex-client'
DISPLAY_NAME='Vertex Client'
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME --project $PROJECT_ID --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"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/aiplatform.user"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/cloudbuild.builds.editor"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/artifactregistry.admin"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/storage.admin"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/run.admin"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/secretmanager.secretAccessor"
승인하라는 메시지가 표시되면 '승인'을 클릭하여 계속합니다.
Vertex AI API 및 Gemini 채팅을 사용하기 위해 필요한 서비스를 사용 설정합니다.
gcloud services enable \
generativelanguage.googleapis.com \
aiplatform.googleapis.com \
cloudaicompanion.googleapis.com \
run.googleapis.com \
cloudresourcemanager.googleapis.com
Vertex AI API 및 Gemini 채팅을 사용하기 위해 필요한 서비스를 사용 설정합니다.
gcloud services enable \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
runapps.googleapis.com \
workstations.googleapis.com \
servicemanagement.googleapis.com \
secretmanager.googleapis.com \
containerscanning.googleapis.com
GitHub 저장소 클론
GitHub 저장소를 클론합니다.
git clone https://github.com/GoogleCloudPlatform/genai-for-developers.git
Cloud Shell 편집기 열기
'File / Open Folder
' 메뉴 항목을 사용하여 'genai-for-developers
'를 엽니다.
'devai-api/app/routes.py
' 파일을 연 다음 파일의 아무 곳이나 마우스 오른쪽 버튼으로 클릭하고 컨텍스트 메뉴에서 'Gemini > Explain
this"
'를 선택합니다.
선택한 파일에 대한 Gemini의 설명을 검토합니다.
5. GitLab 저장소 및 도구 키트 구성
이 실습에서는 GitLabToolkit을 사용하여 GitLab 병합 요청 생성을 자동화합니다.
LangChain 도구 키트 개요
LangChain 툴킷은 LangChain으로 애플리케이션 개발을 간소화하고 개선하도록 설계된 도구 모음입니다. 특정 툴킷에 따라 다양한 기능을 제공하지만 일반적으로 다음과 같은 작업에 도움이 됩니다.
- 외부 데이터 소스에 연결: API, 데이터베이스, 기타 외부 소스의 정보에 액세스하여 LangChain 애플리케이션에 통합합니다.
- 고급 프롬프트 기법: 사전 빌드된 프롬프트를 활용하거나 맞춤 프롬프트를 만들어 언어 모델과의 상호작용을 최적화합니다.
- 체인 생성 및 관리: 복잡한 체인을 쉽게 빌드하고 효율적으로 관리할 수 있습니다.
- 평가 및 모니터링: LangChain 애플리케이션 및 체인의 성능을 분석합니다.
인기 있는 LangChain 도구 키트는 다음과 같습니다.
- 에이전트 실행자 도구 키트: 웹 탐색이나 코드 실행과 같은 작업을 통해 실제 세계와 상호작용할 수 있는 에이전트를 개발하기 위한 도구입니다.
- 프롬프트 엔지니어링 도구 키트: 효과적인 프롬프트를 작성하기 위한 리소스 모음입니다.
GitLab Toolkit 개요
Gitlab 도구 키트에는 LLM 에이전트가 gitlab 저장소와 상호작용할 수 있는 도구가 포함되어 있습니다. 이 도구는 python-gitlab
라이브러리의 래퍼입니다.
GitLab 툴킷은 다음 작업을 실행할 수 있습니다.
- 파일 만들기 - 저장소에 새 파일을 만듭니다.
- 파일 읽기 - 저장소에서 파일을 읽습니다.
- 파일 업데이트: 저장소의 파일을 업데이트합니다.
- Create Pull Request(풀 요청 만들기): 봇의 작업 브랜치에서 기본 브랜치로 풀 요청을 만듭니다.
- Get Issue: 저장소에서 문제를 가져옵니다.
- Get Issue: 특정 문제에 관한 세부정보를 가져옵니다.
- 문제에 관한 의견: 특정 문제에 관한 의견을 게시합니다.
- 파일 삭제: 저장소에서 파일을 삭제합니다.
GitLab 프로젝트 설정
GitLab을 열고 새 프로젝트를 만든 다음 'Settings / Access Tokens
'에서 프로젝트 액세스 토큰을 설정합니다.
다음 세부정보를 사용하세요.
- 토큰 이름:
devai-api-qwiklabs
- 역할:
Maintainer
- 범위 선택:
api
액세스 토큰 값을 노트북의 임시 파일에 복사하여 붙여넣습니다. 이 값은 다음 단계에서 사용됩니다.
6. Cloud Run에 애플리케이션 배포 준비
Cloud Shell 편집기로 돌아가 기존 터미널을 사용하거나 새 터미널을 엽니다.
Qwiklabs 프로젝트 세부정보를 사용하여 프로젝트 세부정보를 구성합니다.
예: qwiklabs-gcp-00-2c10937585bb
gcloud config set project YOUR-QWIKLABS-PROJECT-ID
나머지 환경 변수를 설정합니다.
export PROJECT_ID=$(gcloud config get-value project)
export LOCATION=us-central1
export REPO_NAME=devai-api
export SERVICE_NAME=devai-api
GitLab 통합에 필요한 환경 변수를 설정합니다.
export GITLAB_PERSONAL_ACCESS_TOKEN=gitlab-token
터미널에 민감한 정보가 노출되지 않도록 하려면 read -s GITLAB_PERSONAL_ACCESS_TOKEN
를 사용하는 것이 좋습니다. read -s GITLAB_PERSONAL_ACCESS_TOKEN
는 콘솔의 명령어 기록에 값이 표시되지 않고 환경 변수를 설정할 수 있는 안전한 방법입니다. 실행한 후 값을 붙여넣고 Enter 키를 눌러야 합니다. 환경 변수도 내보내야 합니다. export GITLAB_PERSONAL_ACCESS_TOKEN
이 명령어를 사용하려면 GitLab 사용자 ID와 저장소 이름을 업데이트해야 합니다.
예: export GITLAB_REPOSITORY="gitrey/qwiklabs-test"
export GITLAB_REPOSITORY="USERID/REPOSITORY"
나머지 환경 변수를 설정합니다.
export GITLAB_URL="https://gitlab.com"
export GITLAB_BRANCH="devai"
export GITLAB_BASE_BRANCH="main"
LangSmith LLM 추적 구성
LangSmith에서 상담사 추적 정보를 보려면 계정을 설정하고, 그렇지 않으면 명령어를 그대로 실행합니다.
LangSmith 계정을 만들고 설정 섹션에서 서비스 API 키를 생성합니다. https://smith.langchain.com/settings
LangSmith 통합에 필요한 환경 변수를 설정합니다.
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_ENDPOINT="https://api.smith.langchain.com"
export LANGCHAIN_API_KEY=langchain-service-api-key
JIRA 구성
이 값은 이 실습에서 사용되지 않으므로 명령어를 실행하기 전에 특정 JIRA 프로젝트 값으로 업데이트할 필요가 없습니다.
Cloud Run 서비스 배포에 필요한 환경 변수를 설정합니다.
export JIRA_API_TOKEN=jira-token
export JIRA_USERNAME="YOUR-EMAIL"
export JIRA_INSTANCE_URL="https://YOUR-JIRA-PROJECT.atlassian.net"
export JIRA_PROJECT_KEY="YOUR-JIRA-PROJECT-KEY"
export JIRA_CLOUD=true
API 키 만들기
Cloud 콘솔 / API 및 서비스 / 사용자 인증 정보 섹션에서 새 API 키를 만듭니다.
이 키는 Cloud Run 애플리케이션에 대한 JIRA API 호출을 인증하는 데 사용됩니다.
프로덕션 환경의 경우 생성된 API 키에 애플리케이션 및 API 제한사항을 구성합니다. 애플리케이션 제한사항은 API 키 사용을 특정 웹사이트(예: JIRA 인스턴스)로 제한합니다.
Cloud Run 서비스 배포에 필요한 환경 변수를 설정합니다.
export DEVAI_API_KEY=your-api-key
Secret Manager에서 보안 비밀 만들기
이 실습에서는 권장사항에 따라 Secret Manager를 사용하여 Cloud Run에 액세스 토큰, API 키, LangChain API 키 값을 저장하고 참조합니다.
Secret Manager에서 필요한 보안 비밀을 만들고 저장합니다.
echo -n $DEVAI_API_KEY | \
gcloud secrets create DEVAI_API_KEY \
--data-file=-
echo -n $JIRA_API_TOKEN | \
gcloud secrets create JIRA_API_TOKEN \
--data-file=-
echo -n $GITLAB_PERSONAL_ACCESS_TOKEN | \
gcloud secrets create GITLAB_PERSONAL_ACCESS_TOKEN \
--data-file=-
echo -n $LANGCHAIN_API_KEY | \
gcloud secrets create LANGCHAIN_API_KEY \
--data-file=-
7. Cloud Run에 Devai-API 배포
현재 위치가 올바른 폴더인지 확인합니다.
cd ~/genai-for-developers/devai-api
Cloud Run에 애플리케이션을 배포합니다.
gcloud run deploy "$SERVICE_NAME" \
--source=. \
--region="$LOCATION" \
--allow-unauthenticated \
--service-account vertex-client \
--set-env-vars PROJECT_ID="$PROJECT_ID" \
--set-env-vars LOCATION="$LOCATION" \
--set-env-vars GITLAB_URL="$GITLAB_URL" \
--set-env-vars GITLAB_REPOSITORY="$GITLAB_REPOSITORY" \
--set-env-vars GITLAB_BRANCH="$GITLAB_BRANCH" \
--set-env-vars GITLAB_BASE_BRANCH="$GITLAB_BASE_BRANCH" \
--set-env-vars JIRA_USERNAME="$JIRA_USERNAME" \
--set-env-vars JIRA_INSTANCE_URL="$JIRA_INSTANCE_URL" \
--set-env-vars JIRA_PROJECT_KEY="$JIRA_PROJECT_KEY" \
--set-env-vars JIRA_CLOUD="$JIRA_CLOUD" \
--set-env-vars LANGCHAIN_TRACING_V2="$LANGCHAIN_TRACING_V2" \
--update-secrets="LANGCHAIN_API_KEY=LANGCHAIN_API_KEY:latest" \
--update-secrets="GITLAB_PERSONAL_ACCESS_TOKEN=GITLAB_PERSONAL_ACCESS_TOKEN:latest" \
--update-secrets="JIRA_API_TOKEN=JIRA_API_TOKEN:latest" \
--update-secrets="DEVAI_API_KEY=DEVAI_API_KEY:latest" \
--min-instances=1 \
--max-instances=3
Y
를 선택하여 Artifact Registry Docker 저장소를 만듭니다.
Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in
region [us-central1] will be created.
Do you want to continue (Y/n)? y
아래에서 gcloud run deploy SERVICE_NAME --source=.
흐름을 검토하세요. 자세히 알아보기
백그라운드에서 이 명령어는 Google Cloud의 buildpacks
및 Cloud Build
를 사용하여 머신에 Docker를 설치하거나 빌드팩 또는 Cloud Build를 설정할 필요 없이 소스 코드에서 자동으로 컨테이너 이미지를 빌드합니다. 즉, 위에서 설명한 단일 명령어에서는 gcloud builds submit
및 gcloud run deploy
명령어가 필요한 작업을 수행합니다.
Dockerfile을 제공한 경우(이 저장소에서 제공함) Cloud Build는 빌드팩을 사용하여 컨테이너 이미지를 자동으로 감지하고 빌드하는 대신 이를 사용하여 컨테이너 이미지를 빌드합니다. 빌드팩에 관해 자세히 알아보려면 문서를 참고하세요.
Console에서 Cloud Build 로그를 검토합니다.
Artifact Registry에서 생성된 Docker 이미지를 검토합니다.
Cloud 콘솔에서 Cloud Run 인스턴스 세부정보를 검토합니다.
애플리케이션 테스트
curl 명령어를 실행하여 엔드포인트를 테스트합니다.
명령어를 실행하기 전에 Cloud Run 서비스 URL로 업데이트합니다.
예:
curl -H "X-devai-api-key: $DEVAI_API_KEY" https://devai-api-1110000001.us-central1.run.app/test
8. 스토리 구현 자동화
Forge는 개발자가 Jira, Confluence, Compass, Bitbucket과 같은 Atlassian 제품과 통합되는 앱을 빌드할 수 있는 플랫폼입니다.
Forge CLI 설치
다음을 실행하여 Forge CLI를 전역적으로 설치합니다.
npm install -g @forge/cli
이 실습에서는 환경 변수를 사용하여 로그인합니다.
JIRA 프로젝트 설정
개인 계정을 사용하여 JIRA 프로젝트를 만들고 확인합니다.
기존 JIRA 프로젝트를 검토합니다. https://admin.atlassian.com/
개인 계정을 사용하여 새 JIRA 프로젝트를 만듭니다.
https://team.atlassian.com/your-work로 이동하여 아이콘을 클릭한 다음
를 선택합니다. 그런 다음 'JIRA Software' - 'Try it now'(지금 사용해 보기)를 선택합니다. 표시되는 메시지에 따라 프로젝트/사이트 생성을 완료합니다.
JIRA Software를 선택합니다.
새 프로젝트를 만듭니다.
Atlassian API 토큰 만들기
기존 Atlassian API 토큰을 만들거나 사용하여 CLI에 로그인합니다.
CLI는 명령어를 실행할 때 토큰을 사용합니다.
- https://id.atlassian.com/manage/api-tokens으로 이동합니다.
- Create API token(API 토큰 만들기)을 클릭합니다.
- API 토큰을 설명하는 라벨을 입력합니다. 예를 들어 forge-api-token이 있습니다.
- 만들기를 클릭합니다.
- 클립보드에 복사를 클릭하고 대화상자를 닫습니다.
Forge 환경 설정 구성
Cloud 콘솔로 돌아가 터미널에서 아래 명령어를 실행합니다.
Forge CLI에 로그인하여 Forge 명령어를 사용합니다.
JIRA/FORGE 이메일 주소를 설정합니다. 이메일 주소로 바꿉니다.
export FORGE_EMAIL=your-email
Forge API 토큰을 설정합니다. JIRA API 토큰으로 바꿉니다.
export FORGE_API_TOKEN=your-jira-api-token
아래 명령어를 실행하여 forge cli를 테스트합니다. 분석을 수집하라는 메시지가 표시되면 'No
'으로 응답합니다.
forge settings set usage-analytics false
로그인되어 있는지 확인합니다.
forge whoami
샘플 출력.
Logged in as John Green (johngreen@email.com) Account ID: 123090:aaabbcc-076a-455c-99d0-d1aavvccdd
Forge 애플리케이션 만들기
현재 위치가 '~/genai-for-developers
' 폴더인지 확인합니다.
명령어를 실행하여 Forge 애플리케이션을 만듭니다.
forge create
메시지가 표시되면 다음 값을 사용합니다.
- 앱 이름:
devai-jira-ui-qwiklabs
- 카테고리 선택:
UI Kit
- 제품을 선택합니다.
Jira
- 템플릿을 선택합니다.
jira-issue-panel
애플리케이션 폴더로 변경합니다.
cd devai-jira-ui-qwiklabs/
명령어를 실행하여 종속 항목을 설치합니다.
npm install
배포 명령어를 실행합니다.
forge deploy
샘플 출력:
Deploying your app to the development environment. Press Ctrl+C to cancel. Running forge lint... No issues found. ✔ Deploying devai-jira-ui-qwiklabs to development... ℹ Packaging app files ℹ Uploading app ℹ Validating manifest ℹ Snapshotting functions ℹ Deploying to environment ✔ Deployed Deployed devai-jira-ui-qwiklabs to the development environment.
애플리케이션을 설치합니다.
forge install
메시지가 표시되면 다음 값을 사용합니다.
- 제품을 선택합니다.
Jira
- 사이트 URL(
your-domain.atlassian.net
)을 입력합니다.
샘플 출력:
Select the product your app uses. ? Select a product: Jira Enter your site. For example, your-domain.atlassian.net ? Enter the site URL: genai-for-developers.atlassian.net Installing your app onto an Atlassian site. Press Ctrl+C to cancel. ? Do you want to continue? Yes ✔ Install complete! Your app in the development environment is now installed in Jira on genai-for-developers.atlassian.net
JIRA 사이트를 열고 다음 설명이 포함된 새 JIRA 작업을 만듭니다.
Create HTML, CSS and JavaScript using React.js framework to implement Login page with username and password fields, validation and documentation. Provide complete implementation, do not omit anything.
작업을 열면 'devai-jira-ui-qwiklabs
' 버튼이 표시됩니다.
버튼을 클릭하고 UI에서 변경사항을 검토합니다.
Forge 백엔드 로그 보기
forge logs
Atlassian Developer Console
Atlassian Developer Console에서도 배포된 앱을 보고 관리할 수 있습니다.
로그 검토 - Development
환경으로 전환
Forge 애플리케이션 매니페스트 및 소스 코드 검토
'devai-jira-ui-qwiklabs/manifest.yml
' 파일을 열고 Gemini Code Assist를 사용하여 구성을 설명합니다.
설명을 검토합니다.
다음 파일을 열고 Gemini Code Assist에 설명을 요청합니다.
devai-jira-ui-qwiklabs/src/frontend/index.jsx
devai-jira-ui-qwiklabs/src/resolvers/index.js
DevAI API Cloud Run 엔드포인트로 Forge 앱 업데이트
GCP 프로젝트 ID가 설정되어 있는지 확인합니다.
gcloud config get project
그렇지 않은 경우 Qwiklabs 실습 페이지의 프로젝트 ID를 사용하여 GCP 프로젝트를 설정합니다.
예: qwiklabs-gcp-00-2c10937585bb
gcloud config set project YOUR_QWIKLABS_PROJECT_ID
Cloud Run 서비스 URL을 설정합니다.
export DEVAI_API_URL=$(gcloud run services list --filter="(devai-api)" --format="value(URL)")
forge variables set DEVAI_API_URL $DEVAI_API_URL
DEVAI API 키 설정:
export DEVAI_API_KEY=api-key-that-you-created
forge variables set --encrypt DEVAI_API_KEY $DEVAI_API_KEY
아래 명령어를 실행하여 확인합니다.
forge variables list
샘플 출력
Forge 애플리케이션 매니페스트 및 코드 업데이트
이러한 코드 스니펫은 저장소의 sample-devai-jira-ui
폴더에서 확인할 수 있습니다.
편집기에서 매니페스트 파일(devai-jira-ui-qwiklabs/manifest.yml
)을 엽니다.
파일 끝에 아래 줄을 추가합니다. Cloud Run 엔드포인트를 배포한 엔드포인트로 바꿉니다.
permissions:
scopes:
- read:jira-work
- write:jira-work
external:
fetch:
client:
- devai-api-gjerpi6qqq-uc.a.run.app/create-gitlab-mr # replace with YOUR CLOUD RUN URL
편집기에서 리졸버/색인 파일(devai-jira-ui-qwiklabs/src/resolvers/index.js
)을 엽니다.
기존 getText
함수 뒤에 아래 줄을 추가합니다.
resolver.define('getApiKey', (req) => {
return process.env.DEVAI_API_KEY;
});
resolver.define('getDevAIApiUrl', (req) => {
return process.env.DEVAI_API_URL;
});
편집기에서 프런트엔드/색인 파일(devai-jira-ui-qwiklabs/src/frontend/index.jsx
)을 엽니다.
index.jsx
를 아래 콘텐츠로 바꿉니다. GitLab 사용자 ID/저장소 링크를 업데이트합니다.
YOUR-GIT-USERID 및 YOUR-GIT-REPO를 업데이트해야 하는 위치는 두 곳입니다.
파일에서 다음 줄을 검색하여 변경합니다.
https://gitlab.com/
YOUR-GIT-USERID/YOUR-GIT-REPO
/-/merge_requests
import React from 'react';
import ForgeReconciler, { Text, Link, useProductContext } from '@forge/react';
import { requestJira } from '@forge/bridge';
import { invoke } from '@forge/bridge';
import api, { route, assumeTrustedRoute } from '@forge/api';
const devAIApiKey = await invoke("getApiKey")
const devAIApiUrl = await invoke("getDevAIApiUrl")
const App = () => {
const context = useProductContext();
const [description, setDescription] = React.useState();
const fetchDescriptionForIssue = async () => {
const issueId = context?.extension.issue.id;
const res = await requestJira(`/rest/api/2/issue/${issueId}`);
const data = await res.json();
const bodyGenerateData = `{"prompt": ${JSON.stringify(data.fields.description)}}`;
const generateRes = await api.fetch(devAIApiUrl+'/create-gitlab-mr,
{
body: bodyGenerateData,
method: 'post',
headers: {
'Content-Type': 'application/json',
'x-devai-api-key': devAIApiKey,
},
}
)
const resData = await generateRes.text();
// Add link to the GitLab merge request page as a comment
await requestJira(`/rest/api/2/issue/${issueId}/comment`, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: `{"body": "[GitLab Merge Request|https://gitlab.com/YOUR-GIT-USERID/YOUR-GIT-REPO/-/merge_requests]"}`
});
return "Response will be added as a comment. Please refresh in a few moments.";
};
React.useEffect(() => {
if (context) {
fetchDescriptionForIssue().then(setDescription);
}
}, [context]);
return (
<>
<Text>{description}</Text>
<Link href='https://gitlab.com/YOUR-GIT-USERID/YOUR-GIT-REPO/-/merge_requests' openNewTab={true}>GitLab Merge Request</Link>
</>
);
};
ForgeReconciler.render(
<React.StrictMode>
<App />
</React.StrictMode>
);
Forge 애플리케이션 재배포
package.json
파일에 종속 항목을 추가합니다.
"@forge/api": "4.0.0",
종속 항목을 설치하는 명령어를 실행합니다.
npm install
업데이트된 애플리케이션을 배포합니다.
forge deploy
샘플 출력:
ℹ Uploading app ℹ Validating manifest ℹ Snapshotting functions ℹ Deploying to environment ✔ Deployed Deployed devai-jira-ui-qwiklabs to the development environment. We've detected new scopes or egress URLs in your app. Run forge install --upgrade and restart your tunnel to put them into effect.
업데이트된 애플리케이션을 설치합니다.
forge install --upgrade
샘플 출력:
Upgrading your app on the Atlassian site. Your app will be upgraded with the following additional scopes: - read:jira-work - write:jira-work Your app will exchange data with the following urls: - devai-api-7su2ctuqpq-uc.a.run.app ? Do you want to continue? Yes ✔ Upgrade complete! Your app in the development environment is now the latest in Jira on genai-for-developers.atlassian.net.
Forge 애플리케이션 테스트
JIRA 프로젝트에서 기존 JIRA 작업을 열거나 새 JIRA 작업을 만듭니다.
이전 패널이 이미 추가된 경우 삭제해야 합니다.
'...
' 아이콘을 클릭하고 메뉴에서 삭제를 선택합니다. 그런 다음 버튼을 다시 클릭할 수 있습니다.
Jira 댓글 확인
DEVAI API에서 응답을 받으면 JIRA 문제에 댓글이 추가됩니다.
- GitLab 병합 요청 링크
'History
' 탭과 'Comments
' 탭 간에 전환하여 뷰를 새로고침합니다.
GitLab 병합 요청 확인
GitLab을 열고 프로젝트에서 새 병합 요청이 있는지 확인합니다.
LangSmith LLM 트레이스
LLM 추적을 구성한 경우 LangSmith 포털을 열고 GitLab 병합 요청 생성 호출의 LLM 트레이스를 검토합니다.
샘플 LangSmith LLM 트레이스
9. GitHub 저장소에 변경사항 푸시
(선택사항 섹션)
GitHub 웹사이트로 이동하여 새 저장소를 만들어 이 실습의 변경사항을 개인 저장소로 푸시합니다.
Cloud 콘솔로 돌아가 터미널에서 Git 사용자 이름과 이메일을 설정합니다.
명령어를 실행하기 전에 값을 업데이트합니다.
git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"
SSH 키를 생성하고 GitHub 저장소에 추가합니다.
명령어를 실행하기 전에 이메일을 업데이트하세요.
암호를 입력하고 키 생성을 완료하기 위해 Enter 키를 여러 번 누르지 마세요.
ssh-keygen -t ed25519 -C "your-email-address"
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
cat ~/.ssh/id_ed25519.pub
생성된 공개 키를 GitHub 계정에 추가합니다.
https://github.com/settings/keys를 열고 'New SSH key
'를 클릭합니다.
키 이름에는 'qwiklabs-key
'를 사용하고 마지막 명령어의 출력을 복사/붙여넣습니다.
터미널로 돌아가 변경사항을 커밋하고 푸시합니다.
cd ~/genai-for-developers
git remote rm origin
위에서 만든 저장소를 사용하여 원격 출처를 설정합니다.
저장소 URL로 바꿉니다.
git remote add origin git@github.com:YOUR-GITHUB-USERID/YOUR-GITHUB-REPO.git
변경사항을 추가, 커밋, 푸시합니다.
git add .
git commit -m "lab changes"
git push -u origin main
10. 축하합니다.
축하합니다. 실습을 완료했습니다.
학습한 내용
- Gemini API와 통합되도록 Cloud Run 애플리케이션을 배포하는 방법
- JIRA용 Atlassian Forge 앱을 만들고 배포하는 방법
- GitLab 작업 자동화에 LangChain ReAct 에이전트를 사용하는 방법
- LangSmith에서 LLM 트레이스를 검토하는 방법
다음 단계:
- 더 많은 실습 세션이 제공될 예정입니다.
삭제
이 튜토리얼에서 사용된 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 리소스가 포함된 프로젝트를 삭제하거나 프로젝트를 유지하고 개별 리소스를 삭제하세요.
프로젝트 삭제
비용이 청구되지 않도록 하는 가장 쉬운 방법은 튜토리얼에서 만든 프로젝트를 삭제하는 것입니다.
©2024 Google LLC All rights reserved. Google 및 Google 로고는 Google LLC의 상표입니다. 기타 모든 회사명 및 제품명은 해당 업체의 상표일 수 있습니다.