본문 바로가기
Q&A해결2026년 7월 22일2분 읽기

함수콜링에서 tool 인자(arguments)가 가끔 깨진 JSON으로 와서 json.loads가 터집니다

g
gpt_taeho
조회 737댓글 2

OpenAI 함수콜링으로 유저 요청을 툴 호출로 라우팅하는 걸 만들고 있어요. 90%는 잘 되는데, 열 번에 한 번쯤 tool_calls의 arguments 문자열을 json.loads 하면 Unterminated string 이나 Expecting ',' delimiter 같은 에러가 납니다.

스트리밍으로 받고 있어서 delta로 오는 arguments 조각을 문자열로 계속 이어 붙인 다음, 매 청크마다 파싱을 시도하는 구조입니다. 대략 이런 식이에요.

buf += delta.tool_calls[0].function.arguments
try:
    args = json.loads(buf)   # 여기서 가끔 터짐
except Exception:
    pass

실패한 걸 로그로 찍어보면 {"query": "서울 날씨 이렇게 문자열이 중간에 뚝 끊긴 상태예요. 모델이 이상한 JSON을 뱉는 건지, 제 파싱 로직이 문제인지 헷갈립니다. 인자 스키마는 필드 두어 개짜리로 단순한데도 이러네요.

댓글 0

아직 댓글이 없습니다.
Ctrl+Enter로 등록