Skip to main content
Gemini 네이티브 형식은 Function Calling을 완전히 지원합니다: 모델은 “어떤 함수 + 어떤 인자”를 출력하고, 로컬에서 실행한 뒤 결과를 반환하면 모델이 최종 답변을 생성합니다. 이 루프는 OpenAI의 함수 호출과 일치하지만, 필드 형식은 완전히 다르며 섞어서 사용할 수 없습니다. 이 페이지는 공식 Google 문서(ai.google.dev/gemini-api/docs/function-calling, 2026년 6월 기준)를 바탕으로 합니다.

OpenAI와의 형식 차이

흔히 하는 실수 하나는 Gemini의 function_call.args구조화된 객체이지 JSON 문자열이 아니라는 점입니다. 따라서 json.loads가 필요하지 않습니다.

전체 호출 루프

Gemini 3 thought signatures를 반환해야 합니다: function_call 부분에는 암호화된 thought_signature가 포함되며, 두 번째 요청에는 모델의 전체 reply Content를 히스토리에서 변경 없이 그대로 포함해야 합니다(위의 4단계). signature가 누락되면 reasoning chain이 끊어져 요청이 실패할 수 있습니다. 공식 google-genai SDK는 위의 패턴을 사용해 이를 자동으로 처리합니다. 수동으로 작성한 REST 호출에서 이 필드를 제거하지 마십시오.

Calling Modes

병렬 및 다단계 호출

  • 병렬: 한 턴에서 여러 function_call 부분을 반환할 수 있습니다(예: 한 번에 두 도시); 각 부분을 실행하고 모든 function_response 부분을 함께 반환합니다
  • 다단계: 모델은 “호출 → 결과 확인 → 다시 호출”을 연쇄할 수 있습니다. 응답에 더 이상 function_call이 없을 때까지 반복하십시오. 무한한 비용 증가를 막기 위해 루프에 상한을 둡니다

모범 사례

  • 설명은 모델을 위해 작성합니다: “언제 호출해야 하는지”를 명확히 적고, 자유 형식 문자열 대신 enum로 매개변수를 좁히십시오
  • 도구 정의는 안정적으로 유지합니다: 이들은 캐시 접두사 매칭에 참여하므로, 잦은 변경은 캐시 적중에 불리합니다
  • 외부 도구 대신 결정적인 JSON 출력을 원하십니까? FC 대신 response_schema 구조화된 출력을 고려하십시오( 네이티브 호출 매개변수 표 참조 )
  • 샌드박스 환경의 계산에는 자체 계산기 함수를 작성하는 대신 내장 code_execution 도구를 사용하십시오

흔한 함정

관련 링크