Gemini API 사고모델 사용시 주의사항

Thought Signature 오류로 인한 400 Error 문제

by 김동린

최근에 Gemini 3, 3 pro 모델이 나왔다.

가격도 가격인데 성능이 정말 뛰어나더라...

기존에 만들었던 번역툴 모델을 gemini 3 pro preview로 바꿨더니 성능이 2배 이상 좋아졌다.

인간시대의 끝이 온것인가...

조금 비싼것만 빼면 최고의 일상용 멀티모달이 아닐까?


이걸 활용해서 이것저것 해보던 와중 API Document에 사고 서명(Thought Signature)이라는게 보여서 쭉 한번 읽어보았다. 기존에 만들던 프로젝트들이 chating UI 기반이 아닌 structured output 기능을 활용한 업무 도구였기 때문에 한번도 겪지 못했지만 만약 그렇지 않았다면 이번 모델 사용 시 어마어마한 오류가 발생하지 않았을까?


기존에 내가 LLM을 쓰던 방식이다.

스크린샷 2025-12-25 오후 7.35.44.png


이제 나오는 2.5 flash/pro, 3 flash/pro 모델들에서는 모델이 복잡한 문제(수학/코딩, Tool Calling, Agent Workflow)를 풀때 '내부 메모'같은게 생성된다. 기본적으로 Gemini API는 Stateless(상태 비저장 이라고하는데 그냥 매번 api로 콜을 던질때 fresh 한 뇌로 맞이한다고 생각하면 된다)이기 때문에 이전 대화나 추론 과정을 기억하지 못한다. 그래서 위 사진처럼 나는 이전 질문, 대답을 컨텐츠에 같이 녹여 넣어서 맥락을 주입하곤 했던 것이다.


Gemini_Generated_Image_8mysp48mysp48mys.png

이 녀석 들이 나오면서 이전에 내가 쓰던 방식에 구멍이 생겼다.

아래 사진은 Gemini 2.5 시리즈, 3 시리즈 들의 소통 파이프라인이다.


스크린샷 2025-12-25 오후 7.51.06.png


중간에 Signature라는 친구가 메모리에 저장되게 되는데 단순히 나처럼 query, response text만 다시 query로 쏘는 케이스는 해당 Signature를 놓치게 된다. 아래 사진은 Signature를 놓치는 케이스.


스크린샷 2025-12-25 오후 7.56.11.png


옳게된 사용 방법 예시


https://gist.github.com/kimi230/420041c9ca504c16ed7b073c321a32eb


나처럼 텍스트만 추출하여 쓰던 사람들은 아래와 같은 방식으로 변화를 따라가도록 하자.

chat_session 을 쓰는것도 좋은 방식

https://gist.github.com/kimi230/8ffab8ba20cc40707c00b25c4448659d

스크린샷 2025-12-25 오후 8.01.01.png


이제부터는 response.text 만 챙기는 습관을 버리고, response.candidates[0].content 객체 전체를 대화 기록에 append 하는 습관을 들여보자.


참고 자료

- [Google AI - Thinking Guide] (https://ai.google.dev/gemini-api/docs/thinking)

- [Google AI - Thought Signatures] (https://ai.google.dev/gemini-api/docs/thought-signatures)

- [Google AI - Function Calling] (https://ai.google.dev/gemini-api/docs/function-calling)

keyword
작가의 이전글첫 프리퀀시 적립으로 다이어리를 수령했다