Mengalirkan jawaban menggunakan pengambilan agentic

Halaman ini memperkenalkan pengambilan agentic dan menjelaskan cara menggunakannya dengan metode jawaban streaming.

Tentang pengambilan agentic

Pengambilan agentic yang digunakan dengan metode jawaban streaming dapat memperoleh 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 class kueri.

Penggunaan pengambilan agentic akan menambah kompleksitas pada aplikasi Anda, tetapi sebagai gantinya, Anda akan memiliki kontrol yang lebih besar atas hasilnya.

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

Penelusuran gabungan dengan dan tanpa pengambilan agentic

Pengambilan agentic sangat berguna untuk aplikasi penelusuran gabungan. Tanpa pengambilan agentic, penelusuran menggunakan fan-out satu kali 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 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 Tokyo kita?":

  • Tanpa pengambilan agentic: Mengkueri 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, agen mengambil detail tentang kantor Tokyo dari penyimpanan regional. Kemudian, dengan menggunakan konteks tertentu tersebut, agen melakukan penelusuran kedua yang ditargetkan di penyimpanan kebijakan.

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

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

Klasifikasi kueri kustom

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

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

Misalnya, dari kueri, Anda menentukan bahwa intent kueri adalah untuk melacak pesanan dan Anda telah menentukan klasifikasi TRACK_ORDER. Daripada menjalankan penelusuran umum di semua penyimpanan data Anda, sistem akan 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 agentic:

  • Agen jawaban Google yang telah ditentukan: Jika sudah memiliki aplikasi penelusuran di Penelusuran Agen, Anda dapat mengaktifkan pengambilan agentic dengan menetapkan 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 Penelusuran Agen, Anda menentukan jenis konfigurasi penayangan yang berbeda, yaitu konfigurasi penayangan default_agent_answer. Konfigurasi ini juga dapat disebut sebagai mesin mode AI kustom karena "aplikasi" dan "mesin" digunakan secara bergantian di Penelusuran Agen.

Sebelum memulai

Sebelum dapat menggunakan pengambilan agentic, lakukan hal berikut:

Menyiapkan mesin penalaran untuk sesi multi-giliran

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

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

  1. Aktifkan Platform Agen di project Anda Google Cloud .

  2. Buat instance Agent Runtime (juga disebut mesin penalaran) menggunakan Agent Engine REST API (atau Agent Development Kit). Instance ini 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 jawaban streaming 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. Kuota 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 Platform Agen Gemini Enterprise.

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

Opsional: Menyiapkan aplikasi mode AI kustom

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

  1. Buat mesin melalui metode REST dengan blok.engines.createengine_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, kirimkan permintaan melalui konfigurasi penayangan default_agent_answer:

    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.

Streaming jawaban menggunakan pengambilan agentic

Perintah berikut menunjukkan cara memanggil metode jawaban streaming answer dengan pengambilan agentic yang diaktifkan. Mirip dengan output tanpa pengambilan agentic, panggilan ini melakukan streaming jawaban yang dihasilkan dalam bentuk serangkaian respons JSON.

Jika telah menyiapkan mesin penalaran, sertakan nama resourcenya di kolom reasoningEngine untuk mempertahankan sesi di beberapa 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 project Anda. Google Cloud
    • APP_ID: ID aplikasi Penelusuran Agen yang ingin Anda kueri.
    • SERVING_CONFIG_ID: untuk menggunakan aplikasi mode AI kustom, tetapkan nilai ini ke default_agent_answer. Untuk menggunakan agen jawaban Google yang telah ditentukan, tetapkan nilai 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, tetapkan nilai 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 Agent Search Python API dokumentasi referensi.

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

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

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 memudahkan interaksi dengan Google Cloud layanan dari aplikasi Anda. SDK ini membantu penanganan error dan autentikasi, serta menyediakan fitur seperti percobaan ulang otomatis, penanganan penomoran halaman, dan pengelolaan operasi yang berjalan lama.

Karena fitur pengambilan agentic berada dalam daftar yang diizinkan, SDK yang Anda perlukan untuk menggunakan 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 berada dalam daftar yang diizinkan, dokumentasi referensi API di halaman metode jawaban streaming tidak menampilkan semua kolom yang tersedia dan diperlukan untuk menggunakan pengambilan agentic dengan metode jawaban streaming. Kolom yang tidak ada didokumentasikan sebagai berikut.

Kolom isi permintaan

  • enableAgentInvocation (boolean) — Tetapkan 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 yang dihasilkan Answer.Reference menyertakan:

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

Layanan sesi

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

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