Developer Connect ile GitHub'ı Google Cloud'a bağlama

1. Giriş

Bu codelab'de, Developer Connect'i kullanarak bir GitHub deposuna güvenli bağlantı oluşturacak ve bu bağlantıyı kullanarak Gemini Enterprise Agent Platform'da Agent Runtime ile doğrudan bir aracı dağıtacaksınız.

Developer Connect, Google harici geliştirici araçlarına yönelik izin, yetkilendirme, kimlik doğrulama ve ağ yapılandırmaları konusunda size yol göstererek bağlantı oluşturur. Bu, uygulama kodunuzu Google Cloud hizmetlerine çekmek için doğrudan ve yerel bir yol sağlar.

Bu codelab'de, Gemini Enterprise Agent Platform'da Agent Runtime'ı kullanarak doğrudan bir aracı dağıtmak için Developer Connect Git Repository Connection'ı kullanacağız. Developer Connect; GitHub, GitHub Enterprise, Bitbucket Cloud, Bitbucket Data Center, GitLab ve GitLab Enterprise'ı destekler. Bu codelab'de GitHub'a bağlantı oluşturma sürecini adım adım inceleyeceğiz.

Yapacaklarınız

  • Agent Runtime'da temel bir aracı oluşturma ve bunu GitHub'a aktarma
  • GitHub deponuzu Google Cloud'a bağlamak için Developer Connect'i kullanma
  • Bağlı deponuzu yerel olarak kullanarak aracıyı Agent Runtime'da dağıtma
  • Dağıtılan uzak aracınızı çağırma ve test etme

İhtiyacınız olanlar

  • Chrome gibi bir web tarayıcısı
  • Faturalandırmanın etkin olduğu bir Google Cloud projesi
  • Depo erişimi olan bir GitHub hesabı ve kişisel erişim jetonu (klasik)

Bu codelab, yeni başlayanlar da dahil olmak üzere her seviyeden geliştiriciye yöneliktir. Bu codelab'de yönetilen kaynaklar çoğunlukla sunucusuz API'lerdir ve maliyeti 1 ABD dolarının altında olmalıdır.

2. Başlamadan önce

Google Cloud projesi oluşturma

  1. Google Cloud Console'daki proje seçici sayfasında bir Google Cloud projesi seçin veya oluşturun.
  2. Cloud projeniz için faturalandırmanın etkinleştirildiğinden emin olun. Bir projede faturalandırmanın etkin olup olmadığını kontrol etmeyi öğrenin.

Cloud Shell'i Başlatma

  1. Google Cloud Console'un üst kısmından Cloud Shell'i etkinleştir'i tıklayın.
  2. Cloud Shell'e bağlandıktan sonra kimlik doğrulamanızı onaylayın:
    gcloud auth list
    
  3. Projenizin yapılandırıldığını onaylayın:
    export PROJECT_ID=$(gcloud config get-value project)
    
  4. Projeniz beklendiği gibi ayarlanmamışsa şu şekilde ayarlayın:
    export PROJECT_ID=<YOUR_PROJECT_ID>
    gcloud config set project $PROJECT_ID
    

API'leri etkinleştir

Developer Connect ve Vertex AI için gerekli tüm API'leri etkinleştirmek üzere şu komutu çalıştırın:

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

3. Temsilci Kaynak Kodunu Hazırlama

İlk olarak, aracı kaynak kodunuzu barındırmak için yeni bir GitHub deposu oluşturacak ve bu depoya basit bir Python muhakeme aracısı ekleyeceksiniz.

  1. GitHub hesabınıza giriş yapın.
  2. devconnect-agent adlı yeni bir özel depo oluşturun.
  3. README veya .gitignore ile başlatmayın. Başlatmayın.

Ajan dosyalarını yerel olarak oluşturma

Cloud Shell terminalinize dönerek aracınız için bir dizin oluşturun ve bağımlılıklarını tanımlayın:

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

test dizininde, Agent Runtime kitaplıklarını belirten bir requirements.txt dosyası oluşturun:

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

test dizininde bir my_agent.py dosyası oluşturun. Bu komut dosyası, liste sorgularını yanıtlayan basit bir aracı tanımlar:

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

Kodu GitHub'a gönderme

Git deposunu başlatın ve kodunuzu yeni oluşturduğunuz GitHub deposuna aktarın.

`<YOUR_GITHUB_USERNAME>` kısmını GitHub kullanıcı adınızla, `<YOUR_GITHUB_TOKEN>` kısmını ise kişisel erişim jetonunuzla değiştirin.

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. Developer Connect'i yapılandırma

Deponuz GitHub'da olduğuna göre Developer Connect, Google Cloud projenizi güvenli bir şekilde depoya bağlar.

IAM izinlerini ayarlama

Bir hizmet kimliği oluşturarak Developer Connect'in Google Cloud projenize erişmesine izin verin.

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

Bağlantıyı ve bağlantıyı Google Cloud Console veya gcloud KSA'yı kullanarak oluşturabilirsiniz.

1. seçenek: Google Cloud Console'u kullanma

  1. Google Cloud Console'da Developer Connect'e gidin.
  2. GitHub'ın altında Bağlan'ı tıklayın.
  3. Bağlantınızı adlandırın my-github-connection ve us-central1 bölümünde seçin.
  4. Developer Connect GitHub uygulamasının yetkilendirilmesi için istemleri uygulayın.
  5. Projenize bağlamak için devconnect-agent deposunu seçin.

2. seçenek: gcloud CLI'yı kullanma

GitHub deponuzu bağlamak için Cloud Shell'de aşağıdaki komutları çalıştırın.

Öncelikle Developer Connect hizmet hesabına Secret Manager'a erişim izni vermeniz gerekir.

# 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. Aracıyı Developer Connect'ten dağıtma

Deponuz güvenli bir şekilde bağlandıktan sonra, Developer Connect bağlantısını yerel olarak kullanarak doğrudan bir Agent Runtime aracısı dağıtabilirsiniz.

Agent Runtime'ı dağıtma

Vertex AI SDK'yı kullanarak aracınızı dağıtmak için Cloud Shell'de yerel olarak bir Python komut dosyası oluşturun ve çalıştırın.

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

gcloud'da varsayılan uygulama kimlik bilgilerini yapılandırın.

gcloud auth application-default login

Dağıtım komut dosyasını çalıştırın. Bu mimarinin, Vertex AI'ın yerel yürütme kapsamlarını tamamen atlamasına ve uzak aracı görüntüsünü kaynaktan oluşturmasına olanak tanıdığını unutmayın.

python3 deploy.py

Aracıyı test etme

Dağıtım tamamlandıktan sonra, aracı uç noktanızı sorgulamak için bir komut dosyası çalıştırın.

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

Şuna benzer bir çıkış alırsınız:

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

6. Temizleme

Google Cloud hesabınızın sürekli olarak ücretlendirilmesini önlemek için bu codelab sırasında oluşturulan kaynakları silin.

Developer Connect ve Agent Runtime kaynaklarını temizleyin:

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

Developer Connect kaynaklarını temizleyin:

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. Tebrikler

Tebrikler! Developer Connect'i kullanarak güvenli bir şekilde GitHub deposu entegrasyonu oluşturdunuz ve doğrudan kaynak ağacınızdan yerel olarak bir yapay zeka aracısı dağıttınız.

Öğrendikleriniz

  • Developer Connect ve Vertex AI ile bir Google Cloud projesi yapılandırmış olmanız gerekir.
  • Kişisel erişim jetonunu Secret Manager'da güvenli bir şekilde saklama
  • gcloud CLI aracılığıyla açıkça oluşturulan Developer Connect bağlantıları
  • developer_connect_source nesne eşlemesini kullanarak programatik olarak Vertex AI Agent Runtime örneği oluşturduysanız.

Sonraki adımlar

Referans belgeleri