Mengalirkan jawaban menggunakan pengambilan agentic

Halaman ini memperkenalkan pengambilan berbasis agen dan menjelaskan cara menggunakannya dengan metode stream answers.

Tentang pengambilan agentic

Pengambilan berbasis agen yang digunakan dengan metode stream answers dapat memberikan hasil yang lebih baik untuk kasus penggunaan tertentu, misalnya, untuk mengaktifkan pengambilan multi-pass untuk aplikasi dengan beberapa penyimpanan data atau untuk menyesuaikan pembuatan jawaban untuk berbagai kelas kueri.

Penggunaan pengambilan berbasis agen menambahkan kompleksitas pada aplikasi Anda, tetapi sebagai gantinya, menawarkan kontrol yang lebih besar atas hasilnya.

Agent Search menyertakan agen yang telah ditentukan sebelumnya yang dapat Anda gunakan untuk menyesuaikan perilaku mesin telusur. Hal ini memungkinkan penyesuaian yang lebih banyak daripada yang tersedia melalui UI Konfigurasi aplikasi atau metode streaming jawaban tanpa pengambilan berbasis agen.

Penelusuran gabungan dengan dan tanpa pengambilan agentic

Pengambilan dengan agen sangat berguna untuk aplikasi penelusuran gabungan. Tanpa Agent Retrieval, penelusuran menggunakan fan-out sekali jalan yang mengkueri semua penyimpanan data Anda sekaligus. Sebaliknya, pengambilan agentic memungkinkan penelusuran multi-pass. Agen merencanakan dan menjalankan penelusuran secara berurutan, memilih alat terbaik untuk setiap langkah. Agen ini dapat menggabungkan hasil dari beberapa penyimpanan data Penelusuran Agen dan menggunakan alat seperti Google Penelusuran dan Google Maps.

Misalnya, Anda memiliki penyimpanan data terpisah untuk kebijakan perusahaan global dan detail kantor regional. Pengguna bertanya: "Apa saja aturan kepatuhan untuk kantor kami di Tokyo?":

  • Tanpa pengambilan berbasis agen: Mengirim kueri ke penyimpanan kebijakan dan penyimpanan kantor regional secara bersamaan dengan string kueri lengkap. Hal ini dapat menampilkan hasil yang terfragmentasi.

  • Dengan pengambilan agentic: Agen merencanakan eksekusi. Pertama-tama, aplikasi ini mengambil detail tentang kantor Tokyo dari toko regional. Kemudian, menggunakan konteks spesifik tersebut, ia melakukan penelusuran kedua yang ditargetkan di penyimpanan kebijakan.

    Agen menyintesis temuan ini menjadi satu jawaban yang koheren dan lebih akurat.

Pengambilan berbasis agen juga memungkinkan Anda melakukan kueri penelusuran multi-turn (pertanyaan lanjutan) di aplikasi penelusuran gabungan. Tanpa pengambilan berbasis agen, penelusuran multi-turn hanya berfungsi dengan aplikasi penyimpanan data tunggal. Untuk mempertahankan konteks percakapan di beberapa giliran, Anda dapat memasangkan pengambilan berbasis agen dengan sesi Agent Platform.

Klasifikasi kueri kustom

Metode answer dan streaming answer menyediakan dua jenis klasifikasi kueri: ADVERSARIAL_QUERY dan NON_ANSWER_SEEKING_QUERY.

Pengambilan berbasis agen memungkinkan Anda menentukan jenis klasifikasi tambahan agar sesuai dengan alur kerja bisnis Anda. Sistem menggunakan pengklasifikasi untuk menentukan maksud pengguna dan merutekan permintaan ke konfigurasi agen yang sesuai.

Misalnya, dari kueri, Anda menentukan bahwa maksud kueri adalah untuk melacak pesanan dan Anda telah menentukan klasifikasi TRACK_ORDER. Daripada menjalankan penelusuran umum di semua penyimpanan data Anda, sistem memuat agen khusus yang dilengkapi dengan alat dan data yang diperlukan untuk mengambil status pengiriman.

Cara mengaktifkan dan menggunakan pengambilan agentic

Ada dua cara untuk mengaktifkan pengambilan berbasis agen:

  • Agen jawaban Google yang telah ditentukan sebelumnya: Jika sudah memiliki aplikasi penelusuran di Agent Search, Anda dapat mengaktifkan pengambilan berbasis agen dengan menyetel enable_agent_invocation=true dalam permintaan API saat mengirim kueri ke aplikasi. Dalam hal ini, Anda mempertahankan konfigurasi penayangan penelusuran yang ada.

  • Aplikasi mode AI kustom: Saat membuat aplikasi Agent Search, Anda menentukan jenis konfigurasi penayangan yang berbeda, yaitu konfigurasi penayangan default_agent_answer. Hal ini juga dapat disebut sebagai mesin mode AI kustom karena "aplikasi" dan "mesin" digunakan secara bergantian di Penelusuran Agen.

Sebelum memulai

Sebelum Anda dapat menggunakan pengambilan berbasis agen, lakukan hal berikut:

Menyiapkan mesin penalaran untuk sesi multi-giliran

Untuk mempertahankan konteks percakapan di beberapa giliran, Anda perlu membuat Agent Runtime di Gemini Enterprise Agent Platform engine (juga disebut mesin penalaran).

Saat membuat permintaan streamAnswer, Anda meneruskan nama resource Agent Runtime sebagai kolom reasoningEngine pada permintaan streamAnswer.

  1. Aktifkan Agent Platform di project Google Cloud Anda.

  2. Buat instance Agent Runtime (juga disebut mesin penalaran) menggunakan Agent Engine REST API (atau Agent Development Kit). Instance menghosting sesi yang digunakan oleh metode streamAnswer.

    Nama resource instance memiliki format:

    projects/PROJECT_NUMBER/locations/LOCATION_ID/reasoningEngines/REASONING_ENGINE_ID
  3. Berikan akses agen layanan Discovery Engine ke mesin penalaran dengan memberikan peran roles/aiplatform.reasoningEngineServiceAgent ke akun layanan Discovery Engine:

    service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com

    dengan PROJECT_NUMBER adalah nomor project yang menghosting mesin penalaran. Izin ini memungkinkan backend streaming jawaban membuat, membaca, dan menambahkan peristiwa ke sesi atas nama Anda.

  4. Tinjau kuota yang berlaku. Sesi yang didukung oleh Agent Runtime menggunakan kuota dari Agent Platform API. Kouta yang menarik adalah:

    • aiplatform.googleapis.com/session_write_requests — membuat, menghapus, atau memperbarui sesi Agent Runtime per menit.

    • aiplatform.googleapis.com/session_event_append_requests — menambahkan peristiwa ke sesi Agent Runtime per menit.

    Untuk mengetahui informasi selengkapnya, lihat kuota Agent Engine di Gemini Enterprise Agent Platform.

  5. Catat nama resource Agent Runtime karena Anda perlu meneruskannya sebagai kolom reasoningEngine pada permintaan streamAnswer.

Opsional: Menyiapkan aplikasi mode AI kustom

Secara default, pengambilan berbasis agen menggunakan agen jawaban Google yang telah ditentukan sebelumnya. Class ini mengklasifikasikan kueri ke dalam maksud DEFAULT_ANSWER_SEEKING dan DO_NOT_ANSWER. Anda dapat membuat aplikasi mode AI kustom saat ingin menyesuaikan alat atau menambahkan dukungan untuk kelas maksud kueri baru. Setiap intent kustom (atau frame) mendeklarasikan kondisi saat agen mengklasifikasikan kueri ke dalam intent serta petunjuk dan alat yang digunakan agen untuk menanganinya.

  1. Buat mesin melalui metode REST engines.create dengan blok engine_config.answer_agent.

    Konfigurasi disusun sebagai berikut:

    engine {
     name: "YOUR_AI_MODE_ENGINE"
     display_name: "YOUR_AI_MODE_ENGINE_DISPLAY_NAME"
     engine_config {
       answer_agent {
         frames {
           vertical_intent: "YOUR_CUSTOM_INTENT"
           vertical_intent_prompt {
             instructions: "Instructions for when to classify a user query as YOUR_CUSTOM_INTENT."
           }
           initial_prompt {
             instructions: "Instructions for the agent on how to process a user query classified as YOUR_CUSTOM_INTENT."
             tools {
               discovery_engine_search_tool_config {
                 serving_config: "YOUR_SEARCH_SERVING_CONFIG_1"
                 page_size: 10
               }
               tool_description: "This tool can help search corpus 1."
             }
             tools {
               discovery_engine_search_tool_config {
                 serving_config: "YOUR_SEARCH_SERVING_CONFIG_2"
                 page_size: 10
               }
               tool_description: "This tool can help search corpus 2."
             }
           }
         }
       }
     }
    }
    engine_id: "SAMPLE_MULTI_SEARCH_RETRIEVAL"
  2. Setelah membuat mesin, arahkan permintaan melalui konfigurasi penayangan default_agent_answer-nya:

    projects/*/locations/*/collections/*/engines/YOUR_AI_MODE_ENGINE/servingConfigs/default_agent_answer
  3. Untuk mendapatkan bantuan dalam mendesain atau mendaftarkan aplikasi mode AI kustom, hubungi dukungan.

Mengalirkan jawaban menggunakan pengambilan berbasis agen

Perintah berikut menunjukkan cara memanggil metode streaming answer dengan mengaktifkan pengambilan berbasis agen. Mirip dengan output tanpa pengambilan berbasis agen, panggilan ini mengalirkan jawaban yang dihasilkan dalam bentuk serangkaian respons JSON.

Jika Anda telah menyiapkan mesin penalaran, sertakan nama resource-nya di kolom reasoningEngine untuk mempertahankan sesi di seluruh giliran.

REST

Untuk menelusuri dan mendapatkan hasil dengan jawaban yang dihasilkan secara streaming, lakukan hal berikut:

  1. Jalankan perintah curl berikut:

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/SERVING_CONFIG_ID:streamAnswer" \
      -d '{
            "query": { "text": "QUERY" },
            "session": "SESSION",
            "enableAgentInvocation": true,
            "userPseudoId": "USER_PSEUDO_ID",
            "reasoningEngine": "projects/PROJECT_NUMBER/locations/LOCATION_ID/reasoningEngines/REASONING_ENGINE_ID"
          }'
    

    Ganti kode berikut:

    • PROJECT_ID: ID Google Cloud project Anda.
    • APP_ID: ID aplikasi Agent Search yang ingin Anda kueri.
    • SERVING_CONFIG_ID: untuk menggunakan aplikasi mode AI kustom, tetapkan ini ke default_agent_answer. Untuk menggunakan agen jawaban Google yang telah ditentukan sebelumnya, tetapkan ini ke default_search.
    • PROJECT_NUMBER: nomor project yang menghosting mesin penalaran.
    • QUERY: string teks bebas yang berisi pertanyaan atau kueri penelusuran.
    • SESSION: jika melanjutkan percakapan multi-giliran, ini adalah nama resource sesi yang ditampilkan dalam respons giliran sebelumnya, misalnya, projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/sessions/SESSION_ID. Jika tidak melanjutkan percakapan, setel ini ke -, tanda hubung.
    • USER_PSEUDO_ID: ID unik yang digunakan untuk melacak pengunjung.
    • LOCATION_ID: lokasi mesin penalaran Anda, misalnya us-central1.
    • REASONING_ENGINE_ID: ID instance Agent Engine yang Anda buat.

Python

Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Agent Search.

Untuk melakukan autentikasi ke Agent Search, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Contoh berikut menggunakan klien Python Discovery Engine (v1alpha) untuk memanggil stream_answer_query dengan pengaktifan agen diaktifkan. Teruskan kolom reasoning_engine untuk sesi multi-turn.

from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine_v1alpha


def run_stream_answer_query():
    PROJECT_ID = "YOUR_PROJECT_ID"
    LOCATION = "global"  # or a specific region
    COLLECTION_ID = "default_collection"
    ENGINE_ID = "YOUR_ENGINE_ID"
    # Use "default_search" for the predefined Google answer agent, or
    # "default_agent_answer" if you have configured a custom AI_MODE app.
    SERVING_CONFIG_ID = "default_search"
    USER_ID = "user-id"
    QUERY_TEXT = "YOUR_QUERY_TEXT"
    REASONING_ENGINE_ID = "YOUR_REASONING_ENGINE_ID"
    # Use "-" to start a new session, or pass the sessionId returned in
    # the previous turn's response to continue an existing session.
    SESSION_ID = "-"

    SESSION_REF = (
        f"projects/{PROJECT_ID}/locations/{LOCATION}/collections/"
        f"{COLLECTION_ID}/engines/{ENGINE_ID}/sessions/{SESSION_ID}"
    )
    SERVING_CONFIG_ENGINE = (
        f"projects/{PROJECT_ID}/locations/{LOCATION}/collections/"
        f"{COLLECTION_ID}/engines/{ENGINE_ID}/servingConfigs/{SERVING_CONFIG_ID}"
    )
    REASONING_ENGINE = (
        f"projects/{PROJECT_ID}/locations/{LOCATION}/"
        f"reasoningEngines/{REASONING_ENGINE_ID}"
    )

    client_options = ClientOptions(
        api_endpoint="discoveryengine.googleapis.com"
    )

    client = discoveryengine_v1alpha.ConversationalSearchServiceClient(
        client_options=client_options
    )

    request = discoveryengine_v1alpha.AnswerQueryRequest(
        query=discoveryengine_v1alpha.Query(text=QUERY_TEXT),
        serving_config=SERVING_CONFIG_ENGINE,
        user_pseudo_id=USER_ID,
        enable_agent_invocation=True,
        session=SESSION_REF,
        reasoning_engine=REASONING_ENGINE,
    )

    print(f"Starting StreamAnswerQuery agentic session with: {request}")
    stream = client.stream_answer_query(request)

    try:
        for response in stream:
            print(f"Received response: {response}")
    except Exception as e:
        print(f"Error during streaming: {e}")


if __name__ == "__main__":
    run_stream_answer_query()

Mendapatkan versi pratinjau Discovery Engine SDK

Discovery Engine SDK mempermudah interaksi dengan layanan Google Cloud dari aplikasi Anda. SDK membantu penanganan error dan autentikasi, serta menyediakan fitur seperti percobaan ulang otomatis, penanganan penomoran halaman, dan pengelolaan operasi yang berjalan lama.

Karena fitur pengambilan berbasis agen berada dalam daftar yang diizinkan, SDK yang perlu Anda gunakan untuk fitur ini berbeda dengan library klien Discovery Engine yang tersedia secara umum.

Untuk mendapatkan versi pratinjau Discovery Engine SDK, lakukan hal berikut:

  1. Hubungi dukungan untuk mendapatkan akses ke folder Google Drive SDK pratinjau.

  2. Download paket untuk bahasa Anda.

Perubahan API

Karena fitur ini ada dalam daftar yang diizinkan, dokumentasi referensi API di halaman metode streaming answer tidak menampilkan semua kolom yang tersedia dan diperlukan untuk menggunakan pengambilan berbasis agen dengan metode streaming answer. Kolom yang tidak ada didokumentasikan sebagai berikut.

Kolom isi permintaan

  • enableAgentInvocation (boolean) — Setel true untuk beralih ke pemrosesan agentic dengan konfigurasi penayangan penelusuran yang ada. Kolom ini bersifat opsional jika Anda menentukan konfigurasi penayangan answer_agent dengan aplikasi mode AI kustom.

  • reasoningEngine (string) — Nama resource Agent Runtime yang menghosting sesi agen, diformat sebagai projects/*/locations/*/reasoningEngines/*.

Kolom respons

Jika pengambilan agentic diaktifkan, setiap Answer.Reference yang dihasilkan akan mencakup:

  • queries (string berulang) — Daftar kueri yang dikeluarkan agen untuk menghasilkan referensi.

Layanan sesi

Session service REST API tidak mendukung metode create atau update. Namun, metode ini mendukung metode lainnya: list, get, dan delete.

Session service RPC API tidak mendukung operasi Update atau Create pada resource sesi yang digunakan untuk percakapan multi-giliran. Namun, layanan ini mendukung layanan lainnya: operasi List, Get, dan Delete pada resource sesi yang digunakan untuk percakapan multi-giliran.