Kết nối GitHub với Google Cloud bằng Developer Connect

1. Giới thiệu

Trong lớp học lập trình này, bạn sẽ tạo một kết nối an toàn đến kho lưu trữ GitHub bằng Developer Connect và sử dụng kết nối đó để triển khai trực tiếp một tác nhân bằng Agent Runtime trên Nền tảng tác nhân Gemini Enterprise.

Developer Connect thiết lập kết nối bằng cách hướng dẫn bạn các bước cấp quyền, uỷ quyền, xác thực và thiết lập cấu hình mạng cho các công cụ dành cho nhà phát triển không phải của Google. Điều này cung cấp một cách thức trực tiếp, nguyên bản để kéo mã xử lý ứng dụng vào các dịch vụ của Google Cloud.

Trong lớp học lập trình này, chúng ta sẽ sử dụng Developer Connect Git Repository Connection để triển khai trực tiếp một tác nhân bằng Agent Runtime trên Nền tảng tác nhân Gemini Enterprise. Developer Connect hỗ trợ GitHub, GitHub Enterprise, Bitbucket Cloud, Bitbucket Data Center, Gitlab và GitLab Enterprise. Trong lớp học lập trình này, chúng ta sẽ tìm hiểu cách kết nối với GitHub.

Bạn sẽ thực hiện

  • Tạo một tác nhân cơ bản trên Agent Runtime và đẩy tác nhân đó lên GitHub
  • Sử dụng Developer Connect để liên kết kho lưu trữ GitHub với Google Cloud
  • Triển khai tác nhân trên Thời gian chạy tác nhân bằng kho lưu trữ được kết nối một cách tự nhiên
  • Gọi và kiểm thử tác nhân từ xa đã triển khai

Bạn cần có

  • Một trình duyệt web như Chrome
  • Một dự án trên Google Cloud đã bật tính năng thanh toán
  • Tài khoản GitHub và Mã truy cập cá nhân (cổ điển) có quyền truy cập vào kho lưu trữ

Lớp học lập trình này dành cho nhà phát triển ở mọi cấp độ, kể cả người mới bắt đầu. Các tài nguyên được quản lý trong lớp học lập trình này chủ yếu là các API không máy chủ và có chi phí dưới 1 USD.

2. Trước khi bắt đầu

Tạo một dự án trên Google Cloud

  1. Trong Google Cloud Console, trên trang chọn dự án, hãy chọn hoặc tạo một dự án trên Google Cloud.
  2. Đảm bảo rằng bạn đã bật tính năng thanh toán cho dự án trên Cloud. Tìm hiểu cách kiểm tra xem tính năng thanh toán có được bật trên một dự án hay không.

Khởi động Cloud Shell

  1. Nhấp vào Kích hoạt Cloud Shell ở đầu bảng điều khiển Cloud.
  2. Sau khi kết nối với Cloud Shell, hãy xác minh thông tin xác thực của bạn:
    gcloud auth list
    
  3. Xác nhận rằng dự án của bạn đã được định cấu hình:
    export PROJECT_ID=$(gcloud config get-value project)
    
  4. Nếu dự án của bạn không được thiết lập như mong đợi, hãy thiết lập dự án:
    export PROJECT_ID=<YOUR_PROJECT_ID>
    gcloud config set project $PROJECT_ID
    

Bật API

Chạy lệnh này để bật tất cả các API cần thiết cho Developer Connect và Vertex AI:

gcloud services enable \
  developerconnect.googleapis.com \
  aiplatform.googleapis.com

3. Chuẩn bị mã nguồn của tác nhân

Trước tiên, bạn sẽ tạo một kho lưu trữ GitHub mới để lưu trữ mã nguồn của tác nhân và thêm một tác nhân suy luận Python đơn giản vào đó.

  1. Đăng nhập vào tài khoản GitHub của bạn.
  2. Tạo một kho lưu trữ riêng tư mới có tên là devconnect-agent.
  3. Không khởi chạy bằng tệp README hoặc .gitignore.

Tạo tệp tác nhân trên máy

Trong thiết bị đầu cuối Cloud Shell, hãy tạo một thư mục cho tác nhân của bạn và xác định các phần phụ thuộc của thư mục đó:

mkdir -p devconnect-agent/test
cd devconnect-agent

Tạo một tệp requirements.txt trong thư mục test, chỉ định các thư viện Thời gian chạy của tác nhân:

cat <<EOF > test/requirements.txt
google-cloud-aiplatform[agent_engines]
EOF

Tạo một tệp my_agent.py trong thư mục test. Tập lệnh này xác định một tác nhân đơn giản trả lời các truy vấn danh sách:

cat <<EOF > test/my_agent.py
class MyAgent:

  def query_none(self):
    return None

  def query_list(self):
    return [1, 2, 3]

  def register_operations(self):
    return {
        "": ["query_none", "query_list"],
    }

agent = MyAgent()
EOF

Đẩy mã lên GitHub

Khởi tạo một kho lưu trữ Git và đẩy mã của bạn vào kho lưu trữ GitHub mới tạo.

Thay thế "<YOUR_GITHUB_USERNAME>" bằng tên người dùng GitHub của bạn và "<YOUR_GITHUB_TOKEN>" bằng mã thông báo truy cập cá nhân.

git init
git branch -M main
git add .
git commit -m "Initial commit of agent source"
git remote add origin https://<YOUR_GITHUB_TOKEN>@github.com/<YOUR_GITHUB_USERNAME>/devconnect-agent.git
git push -u origin main

4. Định cấu hình Developer Connect

Giờ đây, khi kho lưu trữ của bạn đã có trên GitHub, Developer Connect sẽ liên kết dự án trên đám mây của Google Cloud của bạn với kho lưu trữ đó một cách an toàn.

Thiết lập quyền IAM

Uỷ quyền cho Developer Connect truy cập vào dự án trên đám mây của bạn trên Google Cloud bằng cách tạo một danh tính dịch vụ.

gcloud beta services identity create \
    --service=developerconnect.googleapis.com \
    --project=$PROJECT_ID

Bạn có thể tạo mối kết nối và liên kết bằng bảng điều khiển Cloud của Google hoặc CLI gcloud.

Cách 1: Sử dụng bảng điều khiển Cloud

  1. Trong bảng điều khiển Google Cloud, hãy chuyển đến Developer Connect (Kết nối nhà phát triển).
  2. Nhấp vào Kết nối trong phần GitHub
  3. Đặt tên cho Kết nối my-github-connection rồi chọn kết nối đó trong us-central1
  4. Làm theo lời nhắc để uỷ quyền cho ứng dụng Developer Connect trên GitHub.
  5. Chọn kho lưu trữ devconnect-agent để liên kết kho lưu trữ đó với dự án của bạn.

Cách 2: Sử dụng giao diện dòng lệnh gcloud

Chạy các lệnh sau trong Cloud Shell để liên kết kho lưu trữ GitHub.

Trước tiên, bạn cần cấp cho tài khoản dịch vụ Developer Connect quyền truy cập vào Secret Manager.

# Get the service account
SERVICE_ACCOUNT=$(gcloud beta services identity create \
    --service=developerconnect.googleapis.com \
    --project=$PROJECT_ID \
    --format="value(email)")

# Grant access to Secret Manager
gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member="serviceAccount:$SERVICE_ACCOUNT" \
    --role="roles/secretmanager.admin"
# 1. Create the general Developer Connect connection to GitHub
gcloud developer-connect connections create my-github-connection \
    --location=us-central1 \
    --github-config-app=developer-connect
# 2. Link your specific agent repository to the connection
# Replace <YOUR_GITHUB_USERNAME> with your actual GitHub username
gcloud developer-connect connections git-repository-links create devconnect-agent \
    --connection=my-github-connection \
    --location=us-central1 \
    --clone-uri=https://github.com/<YOUR_GITHUB_USERNAME>/devconnect-agent.git

5. Triển khai Agent từ Developer Connect

Khi kho lưu trữ của bạn được kết nối an toàn, bạn có thể triển khai trực tiếp một tác nhân Agent Runtime bằng cách tận dụng đường liên kết Developer Connect một cách tự nhiên.

Triển khai Thời gian chạy của tác nhân

Tạo và chạy một tập lệnh Python cục bộ trong Cloud Shell để triển khai tác nhân bằng Vertex AI SDK.

cd ~
cat <<EOF > deploy.py
import vertexai

PROJECT_ID = "$PROJECT_ID"
LOCATION = "us-central1"

vertexai.init(project=PROJECT_ID, location=LOCATION)
client = vertexai.Client(project=PROJECT_ID, location=LOCATION)

# Define the full URI string for the Developer Connect repository link
repo_link = f"projects/{PROJECT_ID}/locations/{LOCATION}/connections/my-github-connection/gitRepositoryLinks/devconnect-agent"

print("Deploying to Agent Runtime from Developer Connect...")

remote_agent = client.agent_engines.create(
    config={
        "developer_connect_source": {
            "git_repository_link": repo_link,
            "revision": "main",
            "dir": "test",
        },
        "entrypoint_module": "my_agent",
        "entrypoint_object": "agent",
        "requirements_file": "requirements.txt",
        "class_methods": [
            {"name": "query_list", "api_mode": ""}
        ],
        "display_name": "DevConnect Agent",
    },
)

print(f"Agent Runtime deployed successfully: {remote_agent.api_resource.name}")
EOF

Định cấu hình thông tin xác thực mặc định của ứng dụng trong gcloud.

gcloud auth application-default login

Chạy tập lệnh triển khai. Xin lưu ý rằng cấu trúc này cho phép Vertex AI hoàn toàn bỏ qua các phạm vi thực thi cục bộ và tạo hình ảnh tác nhân từ xa từ nguồn.

python3 deploy.py

Kiểm thử Tác nhân

Sau khi quá trình triển khai hoàn tất, hãy chạy một tập lệnh để truy vấn điểm cuối của nhân viên hỗ trợ.

cat <<EOF > invoke.py
import vertexai

PROJECT_ID = "$PROJECT_ID"
LOCATION = "us-central1"

client = vertexai.Client(project=PROJECT_ID, location=LOCATION)

# Retrieve the latest reasoning engine
engines = list(client.agent_engines.list())
if engines:
    agent = client.agent_engines.get(name=engines[0].api_resource.name)
    print("Invoking remote agent via endpoint...")
    # NOTE: Invoking remote agent
    response = agent.query_list()
    print(f"Agent response: {response}")
else:
    print("No deployment found.")
EOF

python3 invoke.py

Bạn sẽ thấy kết quả tương tự như sau:

Invoking remote agent via endpoint...
Agent response: [1, 2, 3]

6. Dọn dẹp

Để tránh các khoản phí phát sinh cho tài khoản Google Cloud của bạn, hãy xoá các tài nguyên đã tạo trong lớp học lập trình này.

Dọn dẹp các tài nguyên Developer Connect và Agent Runtime:

cat <<EOF > cleanup.py
import vertexai

PROJECT_ID = "$PROJECT_ID"
LOCATION = "us-central1"

client = vertexai.Client(project=PROJECT_ID, location=LOCATION)

for engine in client.agent_engines.list():
    print(f"Deleting {engine.api_resource.name}")
    engine.delete()
EOF

python3 cleanup.py

Dọn dẹp tài nguyên Developer Connect:

gcloud developer-connect connections git-repository-links delete devconnect-agent \
    --connection=my-github-connection \
    --location=us-central1 \
    --quiet

gcloud developer-connect connections delete my-github-connection \
    --location=us-central1 \
    --quiet

7. Xin chúc mừng

Xin chúc mừng! Bạn đã thiết lập một cách an toàn chế độ tích hợp kho lưu trữ GitHub bằng Developer Connect và triển khai một tác nhân AI trực tiếp từ cây nguồn của mình.

Kiến thức bạn học được

  • Đã định cấu hình một dự án trên đám mây của Google bằng Developer Connect và Vertex AI
  • Lưu trữ an toàn Mã truy cập cá nhân vào Trình quản lý bí mật
  • Tạo các mối kết nối Developer Connect một cách rõ ràng thông qua gcloud CLI
  • Đã tạo một phiên bản Vertex AI Agent Runtime theo phương thức lập trình, bằng cách sử dụng ánh xạ đối tượng developer_connect_source.

Các bước tiếp theo

Tài liệu tham khảo