예시 검색

이 페이지에서는 Example Store에서 예시를 검색하는 방법을 보여줍니다. 예시를 검색하는 방법은 다음과 같습니다.

  • FetchExamples: 필터링 기준에 정확하게 일치하는 모든 예시를 검색합니다. 예가 몇 개만 있거나 지연 시간이 짧아야 하는 경우에 이 옵션을 사용하세요.

  • SearchExamples: 사용자 쿼리와 저장된 예시 간의 유사성 검색을 사용하여 예시를 가져옵니다. 예시가 많은 경우 이 옵션을 사용합니다.

기본 요건

이 페이지의 Python 샘플을 사용하기 전에 로컬 Python 환경에 Vertex AI SDK for Python을 설치하고 초기화해야 합니다.

  1. 다음 명령어를 실행하여 Example Store용 Vertex AI SDK for Python을 설치합니다.

    pip install --upgrade google-cloud-aiplatform>=1.87.0
  2. 다음 코드 샘플을 사용하여 Example Store용 SDK를 가져오고 초기화합니다.

    import vertexai
    from vertexai.preview import example_stores
    
    vertexai.init(
      project="PROJECT_ID",
      location="LOCATION"
    )
    

    다음을 바꿉니다.

    • PROJECT_ID: 프로젝트 ID입니다.

    • LOCATION: 리전 us-central1만 지원됩니다.

예시 가져오기

다음 샘플을 사용하여 예시를 가져옵니다. FetchExamples는 필터링 기준에 정확하게 일치하는 모든 예시를 검색합니다.

Python용 Vertex AI SDK

다음 코드는 페이지당 최대 100개의 예시를 Example Store에서 모두 반환합니다.

from vertexai.preview import example_stores

example_store = example_stores.ExampleStore(EXAMPLE_STORE_NAME)
# Returns the dictionary representation of FetchExamplesResponse.
examples = example_store.fetch_examples()

function_names를 사용하여 반환되는 예시를 제한하는 필터를 하나 이상 지정할 수 있습니다. 다음 예에서는 flight_booking_toolhotel_booking_tool 함수가 포함된 예만 반환합니다.

# Returns examples that include either tool.
example_store.fetch_examples(
    filter={
        "function_names": {
            "values": ["flight_booking_tool", "hotel_booking_tool"],
            "array_operator": "CONTAINS_ANY"
        }
    }
)

# Returns examples that include *both* tools.
example_store.fetch_examples(
    filter={
        "function_names": {
            "values": ["flight_booking_tool", "hotel_booking_tool"],
            "array_operator": "CONTAINS_ALL"
        }
    }
)

search_keys 필터를 사용하여 검색 키에 의해 반환되는 예시를 제한할 수 있습니다.

# Returns examples that include any of the following search keys.
example_store.fetch_examples(
    filter={"search_keys": ["How do I get to the airport?"]}
)

example_ids 필터를 사용하여 예시 ID별로 반환되는 예시를 제한할 수 있습니다. 예시 ID는 exampleTypes/stored_contents_example/examples/<var>EXAMPLE_ID</var> 형식을 사용합니다. 여기서 EXAMPLE_ID는 예시용으로 생성된 숫자 ID를 나타냅니다.

# Returns examples that have any of the following Example IDs.
example_store.fetch_examples(
  example_ids=["exampleTypes/stored_contents_example/examples/09b1d383f92c47e7a2583a44ebbc7854"]
)

REST API

예시를 가져오려면 exampleStores.fetchExamples 메서드를 사용하여 POST 요청을 전송합니다.

요청 JSON 본문 예시에 지정된 function_names 필터는 flight_booking_toolhotel_booking_tool 함수가 포함된 예시만 반환합니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID입니다.
  • LOCATION: 예시 스토어를 만들 리전입니다. 지원되는 리전은 us-central1뿐입니다.
  • EXAMPLE_STORE_ID: 예시를 업로드할 Example Store 인스턴스의 ID입니다.

HTTP 메서드 및 URL:

POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/exampleStores/EXAMPLE_STORE_ID:fetchExamples

JSON 요청 본문:

{
  "stored_contents_example_filter": {
    "function_names": {
      "values": ["flight_booking_tool", "hotel_booking_tool"],
      "array_operator": "CONTAINS_ANY"
     }
  }
}

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

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:fetchExamples"

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:fetchExamples" | Select-Object -Expand Content

다음과 유사한 JSON 응답이 표시됩니다. 여기서 EXAMPLE_ID는 예시용으로 생성된 ID를 나타냅니다.

검색 예시

예시 저장소는 stored_contents_example_key와 저장된 예시의 검색 키 간의 유사성 점수를 기반으로 가장 관련성이 높은 예시를 찾습니다. 대화와 관련된 예시를 사용하면 모델이 예상되는 동작을 학습하는 데 도움이 됩니다.

Python용 Vertex AI SDK

다음 코드 샘플을 사용하여 Python용 Vertex AI SDK를 사용하여 관련 예시를 검색합니다.

example_store.search_examples(
    parameters={
        "stored_contents_example_key": "what's the weather in nyc"
    },
    # Only fetch the most similar examaple. The default value is 3.
    top_k=1
)

"""
Response -- dictionary representation of SearchExamplesResponse.
{'results': [{'example': {'exampleId': 'exampleTypes/stored_contents_example/examples/16834837b178453783e471b459d99195',
    'storedContentsExample': {'searchKey': 'What is the weather like in Boston?',
    'contentsExample': {'contents': [{'role': 'user',
        'parts': [{'text': 'What is the weather like in Boston?'}]}],
      'expectedContents': [{'content': {'parts': [{'functionCall': {'name': 'get_current_weather',
            'args': {'location': 'New York, NY'}}}]}},
      {'content': {'parts': [{'functionResponse': {'name': 'get_current_weather',
            'response': {'humidity': 65.0,
            'description': 'Partly Cloudy',
            'icon': 'partly-cloudy',
            'temperature': 38.0,
            'location': 'Boston, MA',
            'wind': {'speed': 10.0, 'direction': 'NW'}}}}]}},
      {'content': {'role': 'model',
        'parts': [{'text': 'The weather in Boston is 38 degrees and partly cloudy.'}]}}]}}},
  'similarityScore': 0.73527116}]}
"""

function_names 필터를 사용하여 유사성 검색에 포함할 예시를 제한할 수 있습니다.

example_store.search_examples(
  parameters={
    "stored_contents_example_key": "What's the weather in nyc",
    "function_names": {
      "values": ["weather_tool", "hotel_booking_tool"],
      "array_operator": "CONTAINS_ANY"
    }
  }
)