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