📌 개요
- RunConfig는 ADK 에이전트 실행 시 런타임 동작 방식을 제어하는 설정 객체입니다.
- LLM 호출 제한, 스트리밍 방식, 음성 합성, 아티팩트 저장 등 다양한 실행 옵션을 제공합니다.
🧩 주요 설정 항목 정리
파라미터 설명 기본값 비고
streaming_mode |
응답 스트리밍 방식 지정 |
StreamingMode.NONE |
SSE, BIDI 가능 |
max_llm_calls |
LLM 호출 최대 횟수 제한 |
500 |
0 이하이면 무제한(경고 발생) |
speech_config |
음성 합성 설정 |
없음 |
language_code, voice_name 포함 |
response_modalities |
응답 모달리티 지정 |
None → 기본은 "AUDIO" |
예: ["TEXT", "AUDIO"] |
save_input_blobs_as_artifacts |
입력 데이터를 아티팩트로 저장 |
False |
디버깅/감사용 |
support_cfc |
CFC(조합적 함수 호출) 사용 |
False |
Python only, streaming_mode=SSE 필수 |
output_audio_transcription |
음성 출력 자동 텍스트 변환 |
없음 |
접근성/기록용 |
🔊 음성 관련 설정 (speech_config)
구조
- language_code: 음성 언어 코드 (ISO 639, 예: "en-US")
- voice_name: 사전 구축된 음성 이름 (예: "Kore")
- Live API 사용 시만 적용됨
🔁 스트리밍 모드 (streaming_mode)
모드설명
NONE |
일반 모드 (전체 응답 단위로 반환) |
SSE |
Server-Sent Events, 텍스트를 토큰 단위로 스트리밍 |
BIDI |
양방향 스트리밍 (실시간 상호작용) |
💡 SSE는 실시간 반응성에 유리하며, support_cfc 활성화 시 필요
🔧 고급 기능: support_cfc
- CFC (Compositional Function Calling): LLM이 함수 조합 호출을 스스로 결정하도록 허용
- 조건:
- streaming_mode가 반드시 SSE
- 현재 Python에서만 지원
- 실험적 기능 (향후 변경 가능성 있음)
🧠 LLM 호출 제한 (max_llm_calls)
값 범위의미
1 ~ 500+ |
지정한 횟수로 제한 |
0 이하 |
무제한 (주의 요망) |
너무 큰 값 (sys.maxsize 등) |
오류 발생 가능성 있음 |
⚠️ API 비용 및 실행 안정성을 위해 제한 설정 권장
💾 입력 아티팩트 저장 (save_input_blobs_as_artifacts)
- 사용자가 업로드한 파일 등을 Artifact로 자동 저장
- 디버깅, 기록, 감사를 위한 옵션
- 기본값은 False
🛠 예시별 RunConfig 설정
✅ 기본 설정 (비스트리밍, 100회 제한)
✅ SSE 스트리밍 활성화
✅ 음성 + CFC + 아티팩트 저장
⚠️ 유의 사항
- 지원되지 않는 조합: support_cfc=True이지만 streaming_mode≠SSE → 오류
- 응답 모달리티를 지정하지 않으면 기본 "AUDIO" 사용
- Java ADK에서는 해당 클래스가 immutable data class 형태로 구현됨