스트리밍은 같은 응답을 조각으로 받는 계약이야
client.chat_completion(..., stream=True)는 ChatCompletionStreamOutput을 차례로 내놓는 generator를 돌려줘. 새 텍스트는 각 조각의 .choices[0].delta.content에 있어. 모양이 OpenAI 스트림과 호환되므로 같은 UI 처리기를 재사용할 수 있어.
도구 호출은 실행 루프까지 완성해야 해
tools에 JSON Schema 형태의 정의를 넘기면 모델이 tool_calls를 돌려줄 수 있어. 애플리케이션이 호출을 검증하고 로컬에서 실행한 뒤 결과를 role='tool' 메시지로 붙여 다시 요청해야 한 차례가 끝나.
구조화 출력은 생성보다 검증이 중요해
프롬프트 뒤 검증, provider의 response_format, Pydantic 기반 Outlines나 Instructor를 쓸 수 있어. 여러 provider를 오갈 때는 스키마 검증과 재시도까지 묶어 주는 세 번째 방식이 가장 일관적이야.