시작하기 전에
에이전트 동작을 시뮬레이션하고 평가하려면 다음을 완료해야 합니다.
- 에이전트 버전 만들기: 시뮬레이션에는 시스템 안내, 도구, 모델 등을 포함한 에이전트 구성의 변경 불가능한 스냅샷이 필요합니다. 에이전트 레지스트리에 에이전트 버전을 하나 이상 만들었는지 확인하세요.
- SDK 초기화: 프로그래매틱 방식으로 시뮬레이션을 실행하려면 Agent Platform SDK를 설치하고 에이전트 평가에 설명된 대로 클라이언트를 초기화합니다.
시뮬레이션을 사용하면 기존 프로덕션 데이터가 없어도 처음부터 포괄적인 평가 모음을 빌드할 수 있습니다. 이 프로세스에서는 LLM을 사용하여 테스트 사례를 자동으로 생성한 다음 사용자로 역할극을 수행하여 에이전트의 다중 턴 대화 로직을 스트레스 테스트합니다.
2단계 시뮬레이션 워크플로
새 에이전트 테스트는 일반적으로 2단계 프로세스를 따릅니다.
시나리오 생성: 에이전트의 안내 및 도구 정의를 기반으로 '테스트 사양' 데이터 세트를 만듭니다.
세션 시뮬레이션: 시뮬레이션된 사용자가 에이전트와 상호작용하여 동작 추적 을 생성하도록 하여 이러한 사양을 실행합니다. 추적 은 모델 입력, 응답, 도구 호출을 포함한 에이전트 동작의 사실적이고 변경 불가능한 기록입니다.
첫 번째 단계에서 시스템은 평가 사례 를 만듭니다. 평가 사례 는 에이전트의 작업을 정의하는 사양입니다. 각 사례는 다음 두 가지 요소로 구성됩니다.
- 시작 프롬프트: 사용자가 에이전트에게 보내는 첫 번째 메시지입니다.
- 대화 계획: 시뮬레이션된 사용자의 숨겨진 '안내'로, 목표와 에이전트가 특정 질문을 하는 경우 어떻게 반응해야 하는지를 설명합니다.
2단계에서 시스템은 표준 에이전트 데이터 형식으로 에이전트 동작 목록을 생성합니다.
콘솔에서 시나리오 생성
콘솔에서 Agent Platform > Agents > Evaluation 페이지로 이동합니다. Google Cloud
새 평가 를 클릭하고 세션 시뮬레이션 을 선택합니다.
생성 안내 를 입력하여 시나리오를 안내합니다 (예: '사용자가 항공편을 예약하려고 하지만 마음을 바꾸는 시나리오 생성').
생성된 표를 검토합니다. 프롬프트를 수정하거나 테스트 사례를 직접 추가할 수 있습니다.
사용자 시뮬레이션 실행
시나리오가 생성되면 사용자 시뮬레이터 가 사용자로 작동하여 대화를 진행합니다.
사용자 시뮬레이션 설정
시뮬레이션을 실행할 때 다음 속성을 구성할 수 있습니다.
- 최대 턴: 다중 턴 에이전트 실행에서 허용되는 최대 호출 수입니다. 이 속성을 사용하면 에이전트와 사용자 시뮬레이터가 끝없는 루프에 빠지는 런오프 대화를 중지할 수 있습니다. (기본값은 5입니다.)
- 모델 이름: 다중 턴 에이전트 실행을 위해 다음 사용자 메시지를 시뮬레이션할 모델 이름입니다.
- 모델 구성: 사용자 메시지를 시뮬레이션할 모델의 구성입니다.
SDK 예시: 프로그래매틱 시뮬레이션
Agent Platform SDK를 사용하여 평가 모음을 부트스트랩할 수도 있습니다.
# 1. Define agent
travel_agent = Agent(
model="gemini-3-flash-preview",
name='travel_agent',
instruction='You are a travel expert, help users to find flights, book flights with flight ID',
tools=[find_flights, book_flight],
)
# 2. Generate scenarios from agent info
travel_agent_info = types.evals.AgentInfo.load_from_agent(agent=travel_agent)
eval_dataset = client.evals.generate_conversation_scenarios(
agent_info=travel_agent_info,
config={
"count": 5,
"generation_instruction": "Generate scenarios where the user tries to book a flight.",
"environment_context": "Today is Monday. I am located in San Francisco. Flights to Paris, New York, Tokyo, Chicago, Sydney, etc are available.",
},
)
# 3. Simulate multi-turn interactions
eval_dataset_with_traces = client.evals.run_inference(
agent=travel_agent,
src=eval_dataset,
config={
"user_simulator_config": {
"max_turn": 5
}
}
)