建立樣本儲存庫執行個體後,您就可以開始撰寫並上傳範例。您可以在範例儲存器例項中儲存的範例數量沒有限制。您上傳範例至範例商店執行個體後,範例就會立即可供使用。
以下列舉幾個需要上傳範例的情況:
查詢與現有範例無關。
模型無法順利完成某些推理。
可用的範例未涵蓋您預期的所有函式、結果或推理。
只要編寫符合預期格式的相關範例,即可達成以下目標:
改善 LLM 注意及使用範例的能力,避免因提示內容稍微變更而導致回覆模式發生非預期變化。
減少為不相關查詢新增範例的潛在負面影響。
LLM 可正常執行類似查詢。
如果 LLM 顯示非預期的行為或推論,您可以上傳修正的回覆,引導模型在後續請求中遵循預期的模式或推論。
您可以使用本頁的範例,根據 LLM 輸出內容撰寫示例。相較於手動撰寫範例,根據 LLM 輸出內容撰寫範例具有下列優點:
根據預期的 LLM 輸出內容編寫範例,可減少手動作業。
您可以根據非預期的 LLM 行為撰寫範例,直接修正失敗案例。
您可以根據成效良好的模型回覆撰寫範例,改善其他模型的行為。舉例來說,如果 Gemini 1.5 Pro 提供的回覆比 Gemini 1.5 Flash 更優異,但延遲時間較長,您可以使用這些回覆撰寫範例,以便在使用 Gemini 1.5 Flash 時,以較低的延遲時間達到類似的效能。
使用範例改善函式呼叫效能
您可以使用少量範例來改善函式呼叫效能,方法是展示下列項目: * 何時會叫用特定函式。
如何擷取要在函式呼叫中使用的引數。
模型如何根據函式傳回的回應做出回應,或是在多步驟推理情況下傳回多個函式。
如要進一步瞭解函式呼叫,請參閱函式呼叫說明文件。
事前準備
使用本頁 Python 範例前,請先在本機 Python 環境中安裝並初始化 Vertex AI SDK for Python for Example Store。
執行下列指令,安裝範例商店的 Vertex AI SDK for Python。
pip install --upgrade google-cloud-aiplatform>=1.87.0
使用下列程式碼範例,匯入並初始化 Example Store 的 SDK。
import vertexai from vertexai.preview import example_stores vertexai.init( project="PROJECT_ID", location="LOCATION" )
更改下列內容:
PROJECT_ID:您的專案 ID。
LOCATION:您的區域。系統僅支援
us-central1
。
上傳樣本
請使用下列範例,將範例上傳至 Example Store 執行個體。每個要求最多可上傳五個示例。
Python
您可以使用下列範例,利用從 LLM 收到的回覆,在 Example Store 執行個體中建立及上傳範例,以改善 LLM 行為和函式呼叫效能。使用下列範例前,請先確認您已完成下列步驟:請按照 Vertex AI 快速入門:使用用戶端程式庫中的操作說明設定 Python 環境。詳情請參閱 Vertex AI Python API 參考說明文件。
設定應用程式預設憑證,向 Vertex AI 進行驗證。詳情請參閱「為本機開發環境設定驗證機制」。
根據預期回應上傳範例
在 LLM 回應符合預期格式的情況下,使用下列範例撰寫及上傳範例。這個範例可讓您傳送要求、根據回應建立範例,然後將範例上傳至 Example Store 執行個體。
from vertexai.preview.example_stores import ContentsExample, StoredContentsExample
client = genai.Client(
http_options=genai_types.HttpOptions(api_version="v1"),
vertexai=True,
project="PROJECT_ID",,
location="LOCATION")
user_content = Content(
role="user",
parts=[Part(text="EXAMPLE_QUERY")],
)
response = client.models.generate_content(
model="MODEL_NAME",
user_content,
config=genai_types.GenerateContentConfig(
tools=[FUNCTION_OR_FUNCTION_DECLARATION]
)
)
# Upload example.
example = {
"contents_example": {
"contents": [user_content.to_json_dict()],
"expected_contents": [
{"content": response.candidates[0].content.to_json_dict()},
{"content": EXPECTED_FUNCTION_RESPONSE.to_json_dict()},
{"content": EXPECTED_FINAL_MODEL_RESPONSE.to_json_dict()},
],
},
"search_key": user_content.parts[0].text,
}
example_store.upsert_examples(examples=[example])
更改下列內容:
PROJECT_ID:您的專案 ID。
LOCATION:您的區域。系統僅支援
us-central1
。EXAMPLE_QUERY:使用者向 LLM 或代理程式提出的要求或查詢。
MODEL_NAME:模型名稱。例如:
gemini-2.0-flash
。FUNCTION_OR_FUNCTION_DECLARATION:在要求中使用的函式或函式宣告。如需將函式定義為工具的相關說明,請參閱 GenAI SDK 的函式呼叫文件。
EXPECTED_FUNCTION_RESPONSE:預期函式呼叫的預期函式回應 (
FunctionResponse
物件)。如需定義函式回應的相關說明,請參閱 GenAI SDK 的函式呼叫說明文件。EXPECTED_FINAL_MODEL_RESPONSE:預期函式呼叫和回應的預期最終模型回應 (
Content
物件)。
上傳範例來修正非預期的回應
如果 LLM 未依預期產生回覆,您可以根據修正的回覆建立範例。這有助於 LLM 遵循後續要求的預期推理。
使用下列範例,上傳含有修正回應的示例至 Example Store 例項。
user_content = Content(
role="user",
parts=[Part(text="EXAMPLE_QUERY")],
)
example = {
"contents_example": {
"contents": [user_content.to_json_dict()],
"expected_contents": [
{"content": EXPECTED_FUNCTION_CALL.to_json_dict()},
{"content": EXPECTED_FUNCTION_RESPONSE.to_json_dict()},
{"content": EXPECTED_FINAL_MODEL_RESPONSE.to_json_dict()},
],
},
"search_key": user_content.parts[0].text,
}
example_store.upsert_examples(examples=[example])
更改下列內容:
EXAMPLE_QUERY:使用者向 LLM 或代理程式提出的要求或查詢。
EXPECTED_FUNCTION_CALL:針對提供的使用者查詢,預期的函式呼叫 (
FunctionCall
物件)。如需定義函式呼叫的相關說明,請參閱 GenAI SDK 的函式呼叫說明文件。EXPECTED_FUNCTION_RESPONSE:預期函式呼叫的預期函式回應 (
FunctionResponse
物件)。如需定義函式回應的相關說明,請參閱 GenAI SDK 的函式呼叫說明文件。EXPECTED_FINAL_MODEL_RESPONSE:預期函式呼叫和回應的預期最終模型回應 (
Content
物件)。
REST
如要將範例上傳至 Example Store 執行個體,請使用 exampleStores.upsertExamples
方法傳送 POST
要求。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的專案 ID。
- LOCATION:您要建立範例商店的區域。系統僅支援
us-central1
區域。 - EXAMPLE_STORE_ID:您要上傳範例的 Example Store 執行個體 ID。
HTTP 方法和網址:
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/exampleStores/EXAMPLE_STORE_ID:upsertExamples
JSON 要求主體:
{ "examples": [ { "stored_contents_example": { "contents_example": { "contents": [ { "role": "user", "parts": [ { "text": "Is there a store in Mountain View, CA that I can visit to try the new Pixel 8 Pro?" } ] } ], "expected_contents": [ { "content": { "role": "model", "parts": [ { "text": ""Yes, there is a store located at 2000 N Shoreline Blvd, Mountain View, CA 94043, US." } ] } } ] }, "search_key_generation_method": { "last_entry": {} } } } ] }
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為 request.json
的檔案中,然後執行下列指令:
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/exampleStores/EXAMPLE_STORE_ID:upsertExamples"
PowerShell
將要求主體儲存在名為 request.json
的檔案中,然後執行下列指令:
$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/exampleStores/EXAMPLE_STORE_ID:upsertExamples" | Select-Object -Expand Content
您應該會收到類似以下的 JSON 回應,其中 EXAMPLE_ID 代表為範例產生的數字 ID。
後續步驟
- 瞭解如何擷取範例。