웹 앱에서 스트리밍 응답 형식으로 질문에 대한 답변을 받을 수 있습니다. 이 문서에서는 REST API를 사용하여 답변을 얻는 방법을 보여줍니다. Gemini Enterprise 웹 앱을 사용하려면 어시스턴트와 채팅하기를 참고하세요.
StreamAssist 개요
StreamAssist는 사용자 질문을 처리하는 강력하고 대화형 방식을 제공합니다. 스트리밍 방식으로 작동하여 실시간 양방향 상호작용을 지원합니다.
API의 주요 기능은 다음과 같습니다.
대화 컨텍스트 유지: 세션을 사용하여 대화 컨텍스트를 유지하므로 이전 상호작용 범위 내에서 후속 질문을 이해할 수 있습니다.
제공된 파일 통합: 첨부된 파일을 컨텍스트로 포함하여 더 많은 정보를 제공하고 관련성 높은 대답을 제공합니다.
원활한 통합: 다양한 에이전트 및 도구와 통합되어 광범위한 사용자 요청을 처리합니다.
시작하기 전에
다음 항목이 준비되었는지 확인하세요.
Google Cloud에 사용 설정된 Discovery Engine API Google Cloud 콘솔의 Discovery Engine API 페이지에서 사용 설정할 수 있습니다.
discoveryengine.assistants.assist권한이 할당된 검색 엔진 역할기존 Gemini Enterprise 앱. 앱을 만들려면 앱 만들기를 참조하세요.
검색결과 가져오기
streamAssist 메서드를 사용하여 Gemini Enterprise에 쿼리하고 답변을 받을 수 있습니다. 다음 curl 명령어는 필수 필드를 나열합니다.
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID/assistants/default_assistant:streamAssist" \
-d '
{
"query": {
"text": "QUERY_TEXT_1"
}
}'
다음을 바꿉니다.
- ENDPOINT_LOCATION: API 요청의 멀티 리전입니다. 다음 값 중 하나를 지정합니다.
- 미국 멀티 리전의 경우
us - EU 멀티 리전의 경우
eu - 전역 위치의 경우
global
- 미국 멀티 리전의 경우
- PROJECT_ID: Google Cloud 프로젝트의 ID입니다.
- APP_ID: Gemini Enterprise 앱의 고유 식별자입니다.
- LOCATION: 데이터 스토어의 멀티 리전입니다(
global,us또는eu). - QUERY_TEXT_1: 검색어 텍스트입니다.
필드 및 반환되는 항목에 대한 자세한 내용은 응답 본문을 참고하세요.
Python
이 샘플을 사용해 보기 전에 Gemini Enterprise 빠른 시작: 클라이언트 라이브러리 사용의 Python 설정 안내를 따르세요. 자세한 내용은 Gemini Enterprise Python API 참고 문서를 참고하세요.
Gemini Enterprise에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine_v1 as discoveryengine
# TODO(developer): Update these variables before running the sample.
project_id = "YOUR_PROJECT_ID"
location = "YOUR_LOCATION"
engine_id = "YOUR_APP_ID"
query = "What is Gemini Enterprise?"
def stream_assist_sample(
project_id: str,
location: str,
engine_id: str,
query: str,
):
# For more information, refer to:
# https://docs.cloud.google.com/gemini/enterprise/docs/locations#specify_a_multi-region_for_your_data_store
client_options = (
ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
if location != "global"
else None
)
client = discoveryengine.AssistantServiceClient(client_options=client_options)
request = discoveryengine.StreamAssistRequest(
name=client.assistant_path(
project=project_id,
location=location,
collection="default_collection",
engine=engine_id,
assistant="default_assistant",
),
query=discoveryengine.Query(text=query),
)
# Make the request
stream = client.stream_assist(request=request)
# Handle the response
for response in stream:
print(response)
동일한 세션을 사용하여 검색 결과 가져오기
기존 세션 내에서 대화를 계속하고 Gemini Enterprise로부터 답변을 받으려면 streamAssist 메서드를 사용하세요. 다음 코드 샘플은 필수 필드를 보여줍니다.
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID/assistants/default_assistant:streamAssist" \
-d '
{
"session": "projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/sessions/SESSION_ID",
"query": {
"text": "QUERY_TEXT_2"
}
}'
다음을 바꿉니다.
- ENDPOINT_LOCATION: API 요청의 멀티 리전입니다. 다음 값 중 하나를 지정합니다.
- 미국 멀티 리전의 경우
us - EU 멀티 리전의 경우
eu - 전역 위치의 경우
global
- 미국 멀티 리전의 경우
- PROJECT_ID: Google Cloud 프로젝트의 ID입니다.
- APP_ID: Gemini Enterprise 앱의 고유 식별자입니다.
- LOCATION: 데이터 스토어의 멀티 리전입니다(
global,us또는eu). - QUERY_TEXT_2: 검색어 텍스트입니다.
- SESSION_ID: 이전 대화 또는 질문의 세션 ID입니다.
필드 및 반환되는 항목에 대한 자세한 내용은 응답 본문을 참고하세요.
Python
이 샘플을 사용해 보기 전에 Gemini Enterprise 빠른 시작: 클라이언트 라이브러리 사용의 Python 설정 안내를 따르세요. 자세한 내용은 Gemini Enterprise Python API 참고 문서를 참고하세요.
Gemini Enterprise에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine_v1 as discoveryengine
# TODO(developer): Update these variables before running the sample.
project_id = "YOUR_PROJECT_ID"
location = "YOUR_LOCATION"
engine_id = "YOUR_APP_ID"
session = "projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/sessions/SESSION_ID" # From previous session
query = "What is Gemini Enterprise?"
def stream_assist_session_sample(
project_id: str,
location: str,
engine_id: str,
session: str,
query: str,
):
# For more information, refer to:
# https://docs.cloud.google.com/gemini/enterprise/docs/locations#specify_a_multi-region_for_your_data_store
client_options = (
ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
if location != "global"
else None
)
client = discoveryengine.AssistantServiceClient(client_options=client_options)
request = discoveryengine.StreamAssistRequest(
name=client.assistant_path(
project=project_id,
location=location,
collection="default_collection",
engine=engine_id,
assistant="default_assistant",
),
session=session,
query=discoveryengine.Query(text=query),
)
# Make the request
stream = client.stream_assist(request=request)
# Handle the response
for response in stream:
print(response.answer)
# Get Session ID
print(response.session_info.session)
파일을 업로드하고 검색 결과 가져오기 (미리보기)
어시스턴트에게 더 많은 컨텍스트를 제공하려면 세션에 파일을 업로드한 다음 콘텐츠를 쿼리하세요. 다음 단계를 따르세요.
addContextFile메서드를 사용하여 세션에 파일을 업로드합니다.REST
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID/sessions/SESSION_ID:addContextFile" \ -d ' { "fileName": "FILE_NAME", "mimeType": "MIME_TYPE", "fileContents": "BASE64_ENCODED_FILE" }'다음을 바꿉니다.
- ENDPOINT_LOCATION: API 요청의 멀티 리전입니다. 다음 값 중 하나를 지정합니다.
- 미국 멀티 리전의 경우
us - EU 멀티 리전의 경우
eu - 전역 위치의 경우
global
- 미국 멀티 리전의 경우
- PROJECT_ID: Google Cloud 프로젝트의 ID입니다.
- LOCATION: 데이터 스토어의 멀티 리전입니다(
global,us또는eu). - APP_ID: Gemini Enterprise 앱의 고유 식별자입니다.
- SESSION_ID: 이전 대화 또는 질문의 세션 ID입니다.
- FILE_NAME: 파일의 이름입니다.
- MIME_TYPE: 파일의 MIME 유형입니다(예:
text/plain또는application/pdf). 다양한 미디어 유형에 대한 자세한 내용은 미디어 유형을 참고하세요. - BASE64_ENCODED_FILE: 파일의 base64로 인코딩된 표현입니다.
필드 및 반환되는 항목에 대한 자세한 내용은 응답 본문을 참고하세요.
- ENDPOINT_LOCATION: API 요청의 멀티 리전입니다. 다음 값 중 하나를 지정합니다.
동일한 세션을 사용하여
streamAssist메서드로 업로드한 파일에 관해 질문합니다.REST
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID/assistants/default_assistant:streamAssist" \ -d ' { "session": "projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/sessions/SESSION_ID", "fileIds": ["FILE_ID"], "query": { "text": "QUERY_TEXT_3" } }'다음을 바꿉니다.
- ENDPOINT_LOCATION: API 요청의 멀티 리전입니다. 다음 값 중 하나를 지정합니다.
- 미국 멀티 리전의 경우
us - EU 멀티 리전의 경우
eu - 전역 위치의 경우
global
- 미국 멀티 리전의 경우
- PROJECT_ID: Google Cloud 프로젝트의 ID입니다.
- APP_ID: Gemini Enterprise 앱의 고유 식별자입니다.
- LOCATION: 데이터 스토어의 멀티 리전입니다(
global,us또는eu). - QUERY_TEXT_3: 검색어 텍스트입니다.
- SESSION_ID: 이전 대화 또는 질문의 세션 ID입니다.
- FILE_ID: 어시스턴트에 업로드한 파일의 ID입니다.
필드 및 반환되는 항목에 대한 자세한 내용은 응답 본문을 참고하세요.
- ENDPOINT_LOCATION: API 요청의 멀티 리전입니다. 다음 값 중 하나를 지정합니다.