ai.google.dev/gemini-api/docs/function-calling, 2026년 6월 기준)를 바탕으로 합니다.
OpenAI와의 형식 차이
흔히 하는 실수 하나는 Gemini의
function_call.args가 구조화된 객체이지 JSON 문자열이 아니라는 점입니다. 따라서 json.loads가 필요하지 않습니다.
전체 호출 루프
Calling Modes
병렬 및 다단계 호출
- 병렬: 한 턴에서 여러
function_call부분을 반환할 수 있습니다(예: 한 번에 두 도시); 각 부분을 실행하고 모든function_response부분을 함께 반환합니다 - 다단계: 모델은 “호출 → 결과 확인 → 다시 호출”을 연쇄할 수 있습니다. 응답에 더 이상
function_call이 없을 때까지 반복하십시오. 무한한 비용 증가를 막기 위해 루프에 상한을 둡니다
모범 사례
- 설명은 모델을 위해 작성합니다: “언제 호출해야 하는지”를 명확히 적고, 자유 형식 문자열 대신
enum로 매개변수를 좁히십시오 - 도구 정의는 안정적으로 유지합니다: 이들은 캐시 접두사 매칭에 참여하므로, 잦은 변경은 캐시 적중에 불리합니다
- 외부 도구 대신 결정적인 JSON 출력을 원하십니까? FC 대신
response_schema구조화된 출력을 고려하십시오( 네이티브 호출 매개변수 표 참조 ) - 샌드박스 환경의 계산에는 자체 계산기 함수를 작성하는 대신 내장 code_execution 도구를 사용하십시오
흔한 함정
관련 링크
- 이 그룹: 네이티브 호출 · 멀티모달 및 코드 실행 · 캐시 과금
- OpenAI 대응 항목: OpenAI Function Calling
- 공식 Google 문서:
ai.google.dev/gemini-api/docs/function-calling