Anda dapat menghubungkan Gemini ke sumber data eksternal dengan melakukan perujukan menggunakan API penelusuran Anda. Dengan begitu, Anda dapat menggunakan layanan penelusuran apa pun sebagai sumber perujukan untuk Gemini, yang membantu memastikan bahwa respons didasarkan pada informasi terbaru dan paling relevan dari sistem Anda. Hal ini sangat berguna untuk data khusus perusahaan yang tidak tersedia secara publik.
Halaman ini menjelaskan cara mengonfigurasi dan menggunakan perujukan menggunakan API penelusuran apa pun dengan Gemini.
Cara kerja perujukan dengan Search API Anda
Saat Anda melakukan perujukan dengan API penelusuran, Gemini dapat membuat kueri endpoint API eksternal yang Anda berikan. Hal ini memungkinkan Gemini menggunakan fungsi penelusuran kustom Anda sebagai alat untuk meningkatkan kualitas responsnya. Fitur ini memungkinkan interaksi yang lebih dinamis dan sadar konteks, karena model dapat mencari informasi dari sumber data yang Anda tentukan jika diperlukan.
Selama permintaan pembuatan, Gemini dapat melakukan panggilan ke endpoint API eksternal dengan kueri penelusuran. Kemudian, API Anda harus menampilkan cuplikan data yang relevan. Gemini menggunakan cuplikan ini sebagai sumber tepercaya untuk membuat respons yang lebih akurat dan berisi rujukan.
Anda dapat menggabungkan perujukan menggunakan Search API Anda dengan sumber perujukan lain seperti Google Penelusuran. Permintaan pembuatan mendukung hingga 10 sumber perujukan dan kueri multi-alat yang memungkinkan Gemini memanfaatkan berbagai sumber informasi untuk menghasilkan jawaban terbaik.
Model yang didukung
Model berikut mendukung perujukan dengan API Anda:
Untuk mengetahui informasi selengkapnya, lihat Model Gemini.
Sebelum memulai
Untuk menggunakan perujukan dengan Search API Anda, lakukan hal berikut:
- Pastikan Vertex AI API diaktifkan di Google Cloud project Anda.
- Jika Anda berencana mengikuti panduan penyiapan mendetail untuk membuat endpoint API penelusuran baru, pastikan Anda telah menginstal dan menginisialisasi Google Cloud CLI.
Persyaratan Search API
Untuk menggunakan infrastruktur penelusuran yang ada dengan Gemini, endpoint API Anda harus memenuhi persyaratan berikut:
Skema API
- Metode HTTP:
POST
Isi Permintaan (dari Gemini ke API Anda):
{ "query": "the user's search query string" }
Isi respons (dari API Anda ke Gemini): Array JSON objek. Setiap objek merepresentasikan hasil penelusuran dan harus berisi kolom cuplikan dan uri.
[ { "snippet": "A text snippet containing the answer or relevant information.", "uri": "A URI/URL linking to the source of the information, or a relevant identifier." }, { "snippet": "Another piece of information.", "uri": "https://example.com/another-source" } ]
Jika tidak ada hasil yang ditemukan, endpoint API Anda harus menampilkan array kosong.
Autentikasi
Perujukan dengan Search API Anda mendukung penggunaan kunci API, yang mengamankan endpoint API Anda. Gemini mengirimkan kunci API ini sebagai parameter kueri
bernama key
.
Menggunakan perujukan dengan API penelusuran Anda dengan endpoint yang kompatibel
Jika sudah memiliki endpoint API yang memenuhi persyaratan skema dan autentikasi, Anda dapat mengonfigurasinya secara langsung dalam panggilan Gemini API.
Mengonfigurasi alat externalApi
Saat membuat permintaan ke Gemini API, sertakan parameter alat dengan alat pengambilan yang dikonfigurasi untuk externalApi
. Kolom utama
mencakup hal berikut:
api_spec: "SIMPLE_SEARCH"
: Ini memberi tahu Gemini untuk menggunakan skema input dan output yang telah ditentukan sebelumnya.endpoint
: URL lengkap ke endpoint Gateway API Anda, sepertihttps://YOUR_GATEWAY_HOSTNAME/v0/search
.apiAuth.apiKeyConfig.apiKeyString
: Kunci API yang digunakan Gemini untuk mengautentikasi dengan API Anda. Gemini menambahkan kunci ini sebagai?key=<YOUR_API_KEY>
ke URL endpoint.
REST
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- LOCATION: Region untuk memproses permintaan, seperti
us-central1
. - PROJECT_ID: ID project Google Cloud Anda.
- MODEL_ID: ID model Gemini yang kompatibel, seperti
gemini-2.0-flash-001
. - USER_PROMPT: Petunjuk teks yang akan disertakan dalam perintah.
- EXTERNAL_API_ENDPOINT: URL lengkap ke endpoint Gateway API yang diamankan yang dipanggil Gemini, seperti
https://YOUR_GATEWAY_HOSTNAME/v0/search
. Endpoint ini harus mematuhi skema API yang ditentukan. - EXTERNAL_API_KEY: Kunci API yang Anda buat dan konfigurasi untuk API Gateway. Gemini menggunakan kunci ini untuk mengautentikasi dengan endpoint Anda.
Metode HTTP dan URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:generateContent
Meminta isi JSON:
{
"contents": [{
"role": "user",
"parts": [{
"text": "USER_PROMPT"
}]
}],
"tools": [{
"retrieval": {
"externalApi": {
"api_spec": "SIMPLE_SEARCH",
"endpoint": "EXTERNAL_API_ENDPOINT",
"apiAuth": {
"apiKeyConfig": {
"apiKeyString": "EXTERNAL_API_KEY"
}
}
}
}
}]
}
Untuk mengirim permintaan Anda, gunakan salah satu opsi berikut:
curl
Perintah berikut mengasumsikan bahwa Anda telah login ke gcloud CLI dengan akun pengguna Anda dengan menjalankan gcloud CLI init atau gcloud CLI auth login , atau dengan menggunakan Cloud Shell, yang secara otomatis membuat Anda login ke gcloud CLI. Anda dapat memeriksa akun aktif dengan menjalankan gcloud CLI auth list.
Simpan isi permintaan dalam file bernama request.json
, lalu jalankan
perintah berikut:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:generateContent"
Powershell
Perintah berikut mengasumsikan bahwa Anda telah login ke gcloud CLI dengan akun pengguna Anda dengan menjalankan gcloud CLI init atau gcloud CLI auth login. Anda dapat memeriksa akun aktif dengan menjalankan gcloud CLI auth list.
Simpan isi permintaan dalam file bernama request.json
, lalu 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/publishers/google/models/MODEL_ID:generateContent" | Select-Object -Expand Content
Anda akan melihat respons JSON seperti berikut:
{
"candidates": [
{
"content": {
"role": "model",
"parts": [
{
"text": "You can make an appointment on the website https://dmv.gov/"
}
]
},
"finishReason": "STOP",
"safetyRatings": [
"..."
],
"groundingMetadata": {
"retrievalQueries": [
"How to make appointment to renew driving license?"
],
"groundingChunks": [
{
"retrievedContext": {
"uri": "https://...",
"snippet": "Snippet text about driving license renewal"
}
}
],
"groundingSupport": [
{
"segment": {
"startIndex": 25,
"endIndex": 147
},
"segment_text": "ipsum lorem ...",
"supportChunkIndices": [1, 2],
"confidenceScore": [0.9541752, 0.97726375]
},
{
"segment": {
"startIndex": 294,
"endIndex": 439
},
"segment_text": "ipsum lorem ...",
"supportChunkIndices": [1],
"confidenceScore": [0.9541752, 0.9325467]
}
]
}
}
],
"usageMetadata": {
"..."
}
}
Menyiapkan endpoint API penelusuran
Jika Anda tidak memiliki endpoint API yang ada dan memenuhi persyaratan, bagian ini akan memandu Anda menyiapkan endpoint menggunakan Cloud Functions dan API Gateway.
Membuat wrapper API eksternal dengan Cloud Functions
Cloud Function dapat bertindak sebagai perantara yang menerima kueri dari Gemini, mengeluarkan kueri yang sesuai ke infrastruktur penelusuran yang ada, seperti database, mesin telusur internal, atau penelusuran vektor, lalu memformat hasilnya dalam skema yang dipahami Gemini.
Untuk mengetahui informasi selengkapnya, lihat dokumentasi Cloud Run Functions.
Contoh penyiapan Cloud Function (Python)
Contoh ini menggunakan daftar produk yang di-hardcode untuk demonstrasi. Anda harus mengganti logika pengambilan data dengan panggilan ke sistem penelusuran Anda yang sebenarnya.
main.py
import functions_framework import json from flask import jsonify @functions_framework.http def custom_search_wrapper_minimal(request): """ HTTP Cloud Function to provide a minimal, fixed response for Gemini grounding. """ if request.method != 'POST': return 'Only POST requests are accepted', 405 request_json = request.get_json(silent=True) if not request_json or 'query' not in request_json: return jsonify({"error": "Invalid request. JSON body with 'query' field is required."}), 400 user_query = request_json['query'] print(f"Received query: '{user_query}'. Responding with fixed data.") # --- FIXED RESPONSE --- # This is a hardcoded response. In a real scenario, you would # use the 'user_query' to fetch relevant data. fixed_results = [ { "snippet": "This is a fixed snippet from your custom Search API. The original query was: " + user_query, "uri": "https://example.com/docs/fixed-test-data" }, { "snippet": "Another piece of fixed information to demonstrate the list format.", "uri": "https://example.com/another-fixed-source" } ] # --- END OF FIXED RESPONSE --- return jsonify(fixed_results)
requirements.py
functions-framework>=3.0.0 Flask>=2.0.0
Deployment: Buka direktori yang berisi
main.py
danrequirements.txt
, lalu jalankan:gcloud functions deploy custom_search_wrapper \ --runtime python311 \ --trigger-http \ --entry-point custom_search_wrapper \ --region YOUR_REGION \ --allow-unauthenticated \ --gen2
- Ganti YOUR_REGION dengan region Google Cloud pilihan Anda, seperti
us-central1
. --allow-unauthenticated
ditentukan karena API Gateway menangani autentikasi.
- Ganti YOUR_REGION dengan region Google Cloud pilihan Anda, seperti
Mengamankan Cloud Functions dengan API Gateway dan kunci API
API Gateway menyediakan titik entri terkelola yang aman ke Cloud Functions Anda dan memungkinkan Anda menerapkan autentikasi kunci API.
Untuk mengetahui informasi selengkapnya, lihat dokumentasi API Gateway.
Buat spesifikasi OpenAPI (
openapi-spec.yaml
): File ini menentukan cara API Gateway mengekspos Cloud Functions Anda. Kebijakan ini menetapkan bahwa gateway mengharapkan permintaanPOST
ke jalur/v0/search
dan memerlukan kunci API yang dikirim sebagai parameter kueri bernamakey
.swagger: '2.0' info: title: Custom Search API for Gemini Grounding description: Wraps an internal search function, secured by API Key for Gemini. version: 1.0.0 schemes: - https produces: - application/json consumes: - application/json paths: /v0/search: # TODO: This will be part of API endpoint URL change if necessary post: summary: Custom search endpoint for Gemini operationId: customSearchForGemini # TODO: Change if needed x-google-backend: address: YOUR_CLOUD_FUNCTION_TRIGGER_URL # TODO: Replace with your Cloud Function trigger URL parameters: - name: body in: body required: true schema: type: object properties: query: type: string security: - api_key_query: [] responses: '200': description: Search results schema: type: array items: type: object properties: snippet: type: string uri: type: string '400': description: Invalid request '401': description: Unauthorized (Missing or invalid API key) '500': description: Internal server error securityDefinitions: api_key_query: type: apiKey name: key # Gemini will send its API key using this query parameter name in: query
Deploy API Gateway: Setelah mengganti variabel berikut, jalankan perintah gcloud CLI:
- YOUR_PROJECT_ID: ID project Google Cloud Anda.
- YOUR_REGION: Region Google Cloud yang Anda
gunakan untuk Cloud Functions, seperti
us-central1
.
# 1. Create an API gcloud api-gateway apis create custom-search-gemini-api --project=YOUR_PROJECT_ID # 2. Create an API Config from your OpenAPI spec gcloud api-gateway api-configs create v1 \ --api=custom-search-gemini-api \ --openapi-spec=openapi-spec.yaml \ --project=YOUR_PROJECT_ID \ --display-name="Version 1" # 3. Create a Gateway gcloud api-gateway gateways create custom-search-gateway \ --api=custom-search-gemini-api \ --api-config=v1 \ --location=YOUR_REGION \ --project=YOUR_PROJECT_ID
Setelah deployment, nama host (URL gateway) memiliki format berikut:
https://custom-search-gateway-UNIQUE_ID.nw.gateway.dev
Anda dapat menggunakan nama host untuk membuat URL endpoint lengkap untuk Gemini. Contoh:
https://custom-search-gateway-UNIQUE_ID.nw.gateway.dev/v0/search
Buat dan batasi Kunci API: Anda harus membuat kunci API yang digunakan Gemini untuk mengakses endpoint API Gateway Anda. Untuk mengetahui informasi selengkapnya, lihat Mengelola kunci API.
Untuk membuat dan membatasi kunci API, lakukan hal berikut:
Di konsol Google Cloud , buka halaman API Gateway / Enable APIs.
Jika API Gateway API belum diaktifkan, klik Launch, lalu klik Enable.
Pilih Credentials.
Klik Buat kredensial, lalu pilih Kunci API.
Klik Show key, lalu salin kunci API yang dibuat. Simpan kunci di lokasi yang aman. Kunci ini digunakan oleh Gemini.
Klik Edit API key, atau klik nama kunci.
Di bagian API restrictions, lakukan tindakan berikut:
Pilih opsi Restrict key.
Pilih layanan terkelola API Gateway Anda. File ini harus diberi nama sesuai dengan API Anda, seperti
Custom Search API for Gemini Grounding API
.Jika kunci tidak disertakan atau jika Anda ingin mengelola gateway dengan API menggunakan kunci ini, pastikan API Gateway API (
apigateway.googleapis.com
) dipilih. Untuk perujukan, kunci memerlukan akses ke layanan API spesifik Anda yang dihosting oleh API Gateway.
Klik Simpan. Endpoint API Gateway Anda diamankan, dan saat menggunakan endpoint API Gateway, Anda harus meneruskan kunci API sebagai parameter kueri. Contoh:
https://custom-search-gateway-UNIQUE_ID.nw.gateway.dev/v0/search?key=YOUR_GENERATED_API_KEY
Pertimbangan untuk Search API Anda
Tinjau pertimbangan berikut untuk membantu Anda memilih Search API:
- Kualitas cuplikan: Teks cuplikan yang ditampilkan oleh API Anda sangat penting. Ringkas, tetapi cukup informatif bagi Gemini untuk digunakan sebagai dasar faktual untuk responsnya.
- Latensi: API penelusuran Anda harus merespons dengan cepat. Latensi tinggi di API Anda akan meningkatkan waktu respons keseluruhan dari Gemini.
- Penanganan error: Terapkan penanganan error yang andal di Cloud Functions atau Search API Anda. Jika API Anda sering mengalami error atau waktu tunggu habis, hal ini akan berdampak negatif pada kemampuan Gemini untuk menghasilkan respons yang memiliki rujukan.