Mengelola masukan menggunakan Python SDK atau REST API

Halaman ini menjelaskan cara menggunakan API dan SDK layanan Masukan untuk mengelola entri dan konteks masukan. Anda dapat menerapkan kontrol masukan kustom (seperti tombol suka atau tidak suka) di antarmuka pengguna seperti widget chat atau aplikasi seluler dan menggunakan layanan Masukan untuk melacak masukan.

Sebelum memulai

Pastikan Anda memiliki:

  • Peran Pengguna Agent Platform (roles/aiplatform.user).
  • Siapkan autentikasi dengan mengikuti langkah-langkah Authentication.
  • Instance Agent Runtime yang di-deploy. Jika Anda tidak memiliki instance yang di-deploy, lihat Men-deploy agen atau lakukan inisialisasi dan buat instance dengan mengikuti langkah-langkah di bagian berikutnya.
  • Opsional: Untuk melihat entri masukan di samping peristiwa rekaman aktivitas di konsol, pastikan instance Agent Runtime Anda telah mengaktifkan tracing.

Membuat instance Agent Runtime

Jika Anda belum memiliki instance Agent Runtime, Anda dapat menginisialisasi klien dan membuatnya:

Python SDK

import os
import agentplatform

# Set this environment variable to enable the Enterprise features.
os.environ["GOOGLE_GENAI_USE_ENTERPRISE"] = "TRUE"

client = agentplatform.Client(
    project="PROJECT_ID",
    location="LOCATION"
)
# If you don't have an Agent Runtime instance already, create an instance.
agent_engine = client.runtimes.create()

# Optionally, print out the Agent Runtime resource name. You will need the
# resource name to interact with the Feedback service later on.
print(agent_engine.api_resource.name)

REST API

Nama resource Agent Runtime menggunakan format berikut: projects/PROJECT_ID/locations/LOCATION/reasoningEngines/AGENT_ENGINE_ID

Ganti kode berikut:

  • PROJECT_ID: Project ID Anda.
  • LOCATION: Region Anda. Lihat wilayah yang didukung untuk Runtime.
  • AGENT_ENGINE_ID: ID resource instance Agent Runtime Anda.

Membuat entri masukan

Sebelum mengirimkan masukan, Anda harus memiliki sesi yang sudah ada dengan beberapa pesan yang dipertukarkan antara pengguna dan agen. Identifikasi respons yang ingin Anda kirimi masukan, lalu dapatkan ID peristiwa dan ID sesinya.

Untuk melakukannya:

  1. Buat sesi interaksi dengan agen.

  2. Kirim kueri ke agen dan identifikasi respons yang ingin Anda beri masukan.

  3. Ambil ID sesi dan ID peristiwa respons (yang berfungsi sebagai ID peristiwa untuk entri masukan). Jika menggunakan Layanan Sesi terkelola dengan ADK, Anda bisa mendapatkan ID peristiwa dari kolom raw_event.id respons peristiwa daftar (lihat Mencantumkan peristiwa dalam sesi).

Mencatat entri masukan secara terprogram yang terikat langsung ke target session_id dan event_id yang menentukan peristiwa percakapan agen pengguna.

Python SDK

import os
import agentplatform

# Set this environment variable to enable the Enterprise features.
os.environ["GOOGLE_GENAI_USE_ENTERPRISE"] = "TRUE"

client = agentplatform.Client(
    project="PROJECT_ID",
    location="LOCATION"
)

operation = client.feedback_entries.create(
    name="projects/PROJECT_ID/locations/LOCATION/reasoningEngines/AGENT_ENGINE_ID",
    session_id="SESSION_ID",
    event_id="EVENT_ID",
    feedback_type="THUMBS_UP",
    config={
        "feedback_text": "The response was helpful and accurate.",
        "feedback_labels": ["accurate"],
        "user_id": "user-123",
        "source": "Chat UI",
        "custom_metadata": {"model_temperature": "0.7"},
    }
)

# Retrieve the created feedback entry details
feedback_entry = operation.response
print(f"Created feedback entry: {feedback_entry.name}")

Nilai yang didukung untuk feedback_type adalah:

  • "THUMBS_UP"
  • "THUMBS_DOWN"
  • "FEEDBACK_TYPE_UNSPECIFIED"

REST API

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: Project ID Anda.
  • LOCATION: Region tempat instance Agent Engine Anda berada.
  • AGENT_ENGINE_ID: ID resource instance Agent Engine Anda.
  • SESSION_ID: ID sesi yang menentukan percakapan yang terkait dengan masukan.
  • EVENT_ID: ID peristiwa yang mengidentifikasi pesan atau node tertentu yang menjadi target masukan.

Metode HTTP dan URL:

POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/AGENT_ENGINE_ID/feedbackEntries

Meminta isi JSON:

{
  "sessionId": "SESSION_ID",
  "eventId": "EVENT_ID",
  "feedbackType": "THUMBS_DOWN",
  "feedbackLabels": ["inaccurate"],
  "feedbackText": "The answer was incorrect.",
  "userId": "user-123",
  "source": "Chat UI",
  "customMetadata": {
    "temperature": "0.7"
  }
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/AGENT_ENGINE_ID/feedbackEntries"

PowerShell

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/AGENT_ENGINE_ID/feedbackEntries" | Select-Object -Expand Content

Anda menerima operasi yang berjalan lama yang menunjukkan status pembuatan entri masukan.

Mengambil entri masukan

Ambil payload terstruktur lengkap dari catatan masukan terisolasi menggunakan alamat resource uniknya.

Python SDK

import os
import agentplatform

# Set this environment variable to enable the Enterprise features.
os.environ["GOOGLE_GENAI_USE_ENTERPRISE"] = "TRUE"

client = agentplatform.Client(
    project="PROJECT_ID",
    location="LOCATION"
)

feedback_entry = client.feedback_entries.get(
    name="projects/PROJECT_ID/locations/LOCATION/reasoningEngines/AGENT_ENGINE_ID/feedbackEntries/FEEDBACK_ENTRY_ID"
)

print(f"Feedback Type: {feedback_entry.feedback_type}")
print(f"Feedback Text: {feedback_entry.feedback_text}")

REST API

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: Project ID Anda.
  • LOCATION: Region tempat instance Agent Engine Anda berada.
  • AGENT_ENGINE_ID: ID resource instance Agent Engine Anda.
  • FEEDBACK_ENTRY_ID: ID resource entri masukan.

Metode HTTP dan URL:

GET https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/AGENT_ENGINE_ID/feedbackEntries/FEEDBACK_ENTRY_ID

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Jalankan perintah berikut:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/AGENT_ENGINE_ID/feedbackEntries/FEEDBACK_ENTRY_ID"

PowerShell

Jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/AGENT_ENGINE_ID/feedbackEntries/FEEDBACK_ENTRY_ID" | Select-Object -Expand Content

Respons mencakup detail entri masukan seperti ID sesi, jenis, label, dan teks.

Mencantumkan entri masukan

Mencantumkan entri masukan di instance Agent Runtime Anda. Anda dapat menerapkan filter dan properti pengurutan.

Python SDK

import os
import agentplatform

# Set this environment variable to enable the Enterprise features.
os.environ["GOOGLE_GENAI_USE_ENTERPRISE"] = "TRUE"

client = agentplatform.Client(
    project="PROJECT_ID",
    location="LOCATION"
)

response = client.feedback_entries.list(
    name="projects/PROJECT_ID/locations/LOCATION/reasoningEngines/AGENT_ENGINE_ID",
    config={
        "filter": 'session_id="SESSION_ID"',
        "order_by": "create_time desc"
    }
)

for entry in response:
    print(f"Entry name: {entry.name}, Type: {entry.feedback_type}")

REST API

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: Project ID Anda.
  • LOCATION: Region tempat instance Agent Engine Anda berada.
  • AGENT_ENGINE_ID: ID resource instance Agent Engine Anda.

Metode HTTP dan URL:

GET https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/AGENT_ENGINE_ID/feedbackEntries

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Jalankan perintah berikut:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/AGENT_ENGINE_ID/feedbackEntries"

PowerShell

Jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/AGENT_ENGINE_ID/feedbackEntries" | Select-Object -Expand Content

Respons mencakup daftar entri masukan yang cocok dengan filter yang diterapkan, beserta token penomoran halaman jika ada entri tambahan.

Anda dapat menggunakan parameter kueri filter untuk membuat kueri menurut atribut tertentu. Untuk mengurutkan, gunakan parameter kueri order_by.

Kolom yang didukung untuk pemfilteran:

  • session_id, seperti session_id="SESSION_ID"
  • user_id, seperti user_id="YOUR_USER_ID"
  • feedback_type, seperti feedback_type="THUMBS_DOWN"
  • feedback_labels, seperti feedback_labels: "inaccurate"
  • create_time
  • update_time

Kolom yang didukung untuk pengurutan:

  • create_time
  • update_time

Memperbarui entri masukan

Memperbarui detail pada entri masukan yang ada seperti mengubah label, komentar, atau metadata kustom.

Python SDK

import os
import agentplatform

# Set this environment variable to enable the Enterprise features.
os.environ["GOOGLE_GENAI_USE_ENTERPRISE"] = "TRUE"

client = agentplatform.Client(
    project="PROJECT_ID",
    location="LOCATION"
)

operation = client.feedback_entries.update(
    name="projects/PROJECT_ID/locations/LOCATION/reasoningEngines/AGENT_ENGINE_ID/feedbackEntries/FEEDBACK_ENTRY_ID",
    feedback_type="THUMBS_DOWN",
    config={
        "feedback_text": "Actually, this response was not accurate.",
        "feedback_labels": ["inaccurate"],
    }
)

updated_entry = operation.response
print(f"Updated entry: {updated_entry.name}")

REST API

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: Project ID Anda.
  • LOCATION: Region tempat instance Agent Engine Anda berada.
  • AGENT_ENGINE_ID: ID resource instance Agent Engine Anda.
  • FEEDBACK_ENTRY_ID: ID resource entri masukan yang akan diperbarui.

Metode HTTP dan URL:

PATCH https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/AGENT_ENGINE_ID/feedbackEntries/FEEDBACK_ENTRY_ID?updateMask=feedbackType,feedbackLabels,feedbackText

Meminta isi JSON:

{
  "feedbackType": "THUMBS_DOWN",
  "feedbackLabels": ["inaccurate", "incomplete"],
  "feedbackText": "The response was details-lacking and inaccurate."
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/AGENT_ENGINE_ID/feedbackEntries/FEEDBACK_ENTRY_ID?updateMask=feedbackType,feedbackLabels,feedbackText"

PowerShell

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/AGENT_ENGINE_ID/feedbackEntries/FEEDBACK_ENTRY_ID?updateMask=feedbackType,feedbackLabels,feedbackText" | Select-Object -Expand Content

Anda menerima operasi yang berjalan lama yang menunjukkan progres operasi update.

Menghapus entri masukan

Menghapus entri masukan secara permanen dari project Anda.

Python SDK

import os
import agentplatform

# Set this environment variable to enable the Enterprise features.
os.environ["GOOGLE_GENAI_USE_ENTERPRISE"] = "TRUE"

client = agentplatform.Client(
    project="PROJECT_ID",
    location="LOCATION"
)

client.feedback_entries.delete(
    name="projects/PROJECT_ID/locations/LOCATION/reasoningEngines/AGENT_ENGINE_ID/feedbackEntries/FEEDBACK_ENTRY_ID"
)

print("Feedback entry deleted.")

REST API

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: Project ID Anda.
  • LOCATION: Region tempat instance Agent Engine Anda berada.
  • AGENT_ENGINE_ID: ID resource instance Agent Engine Anda.
  • FEEDBACK_ENTRY_ID: ID resource entri masukan yang akan dihapus.

Metode HTTP dan URL:

DELETE https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/AGENT_ENGINE_ID/feedbackEntries/FEEDBACK_ENTRY_ID

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Jalankan perintah berikut:

curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/AGENT_ENGINE_ID/feedbackEntries/FEEDBACK_ENTRY_ID"

PowerShell

Jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/AGENT_ENGINE_ID/feedbackEntries/FEEDBACK_ENTRY_ID" | Select-Object -Expand Content

Anda menerima operasi yang berjalan lama yang menampilkan status penghapusan.

Konteks masukan

Konteks masukan (FeedbackContext) adalah resource turunan dari entri masukan (FeedbackEntry) yang dibuat dan dihapus secara otomatis bersama dengan entri masukan induknya. Secara default, konteks masukan berisi daftar peristiwa kosong.

Konteks masukan menyimpan transkrip atau status peristiwa yang terkait dengan entri masukan. Pemisahan resource ini:

  • Mempertahankan histori percakapan: Meskipun sesi asli dihapus, transkrip atau log yang disimpan dalam konteks masukan akan dipertahankan.
  • Mengurangi ukuran respons: Saat mengambil entri masukan, Anda tidak perlu mengambil detail konteks yang mendetail.

Resource FeedbackContext memiliki struktur berikut:

projects/PROJECT_ID/locations/LOCATION/reasoningEngines/AGENT_ENGINE_ID/feedbackEntries/FEEDBACK_ENTRY_ID/feedbackContext

Mengambil konteks masukan

Dapatkan detail dan peristiwa percakapan yang disimpan dalam konteks masukan:

Python SDK

import os
import agentplatform

# Set this environment variable to enable the Enterprise features.
os.environ["GOOGLE_GENAI_USE_ENTERPRISE"] = "TRUE"

client = agentplatform.Client(
    project="PROJECT_ID",
    location="LOCATION"
)

feedback_context = client.feedback_entries.feedback_contexts.get(
    name="projects/PROJECT_ID/locations/LOCATION/reasoningEngines/AGENT_ENGINE_ID/feedbackEntries/FEEDBACK_ENTRY_ID/feedbackContext"
)

# Point to event list
for event in feedback_context.context_events:
    print(f"Author: {event.author}")
    if event.content and event.content.parts:
        print(f"Content: {event.content.parts[0].text}")

REST API

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: Project ID Anda.
  • LOCATION: Region tempat instance Agent Engine Anda berada.
  • AGENT_ENGINE_ID: ID resource instance Agent Engine Anda.
  • FEEDBACK_ENTRY_ID: ID resource entri masukan.

Metode HTTP dan URL:

GET https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/AGENT_ENGINE_ID/feedbackEntries/FEEDBACK_ENTRY_ID/feedbackContext

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Jalankan perintah berikut:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/AGENT_ENGINE_ID/feedbackEntries/FEEDBACK_ENTRY_ID/feedbackContext"

PowerShell

Jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/AGENT_ENGINE_ID/feedbackEntries/FEEDBACK_ENTRY_ID/feedbackContext" | Select-Object -Expand Content

Respons mencakup detail untuk konteks masukan yang diminta, termasuk daftar peristiwa percakapan yang terkait dengan entri masukan induk.

Membuat dan memperbarui konteks masukan

Python SDK

Untuk mengisi atau mengubah histori percakapan yang terkait dengan entri masukan, perbarui konteks masukan menggunakan alur dua langkah berikut:

  1. Buat entri masukan: Panggil metode standar untuk membuat catatan masukan utama.
  2. Perbarui konteks masukan: Setelah mendapatkan ID entri masukan, kirim permintaan untuk mengisi peristiwa konteks.
import os
import agentplatform

# Set this environment variable to enable the Enterprise features.
os.environ["GOOGLE_GENAI_USE_ENTERPRISE"] = "TRUE"

client = agentplatform.Client(
    project="PROJECT_ID",
    location="LOCATION"
)

# Construct conversation events
session_event = {
    "author": "user",
    "content": {
        "role": "user",
        "parts": [{"text": "Hello Agent"}]
    }
}

operation = client.feedback_entries.feedback_contexts.update(
    name="projects/PROJECT_ID/locations/LOCATION/reasoningEngines/AGENT_ENGINE_ID/feedbackEntries/FEEDBACK_ENTRY_ID",
    context_events=[session_event]
)

updated_context = operation.response
print("Feedback context updated successfully.")

REST API

Untuk mengisi atau mengubah histori percakapan yang terkait dengan entri masukan, perbarui konteks masukan menggunakan alur dua langkah berikut:

  1. Buat entri masukan: Panggil CreateFeedbackEntry untuk membuat catatan masukan utama.
  2. Perbarui konteks masukan: Setelah Anda mendapatkan ID entri masukan, kirim permintaan PATCH ke resource turunan konteks (UpdateFeedbackContext) untuk mengisi contextEvents.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: Project ID Anda.
  • LOCATION: Region tempat instance Agent Engine Anda berada.
  • AGENT_ENGINE_ID: ID resource instance Agent Engine Anda.
  • FEEDBACK_ENTRY_ID: ID resource entri masukan.

Metode HTTP dan URL:

PATCH https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/AGENT_ENGINE_ID/feedbackEntries/FEEDBACK_ENTRY_ID/feedbackContext?updateMask=contextEvents

Meminta isi JSON:

{
  "contextEvents": [
    {
      "author": "user",
      "content": {
        "role": "user",
        "parts": [
          {
            "text": "What is the capital of France?"
          }
        ]
      }
    },
    {
      "author": "agent",
      "content": {
        "role": "model",
        "parts": [
          {
            "text": "Paris is the capital of France."
          }
        ]
      }
    }
  ]
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/AGENT_ENGINE_ID/feedbackEntries/FEEDBACK_ENTRY_ID/feedbackContext?updateMask=contextEvents"

PowerShell

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/AGENT_ENGINE_ID/feedbackEntries/FEEDBACK_ENTRY_ID/feedbackContext?updateMask=contextEvents" | Select-Object -Expand Content

Anda menerima operasi yang berjalan lama yang menunjukkan progres update konteks masukan.

Untuk menghapus konteks masukan, kirim update kosong (misalnya, dengan context_events ditetapkan ke daftar kosong).