메인 콘텐츠로 건너뛰기
stream: true로 스트리밍을 켜고 API에 맞는 스키마로 클라이언트 도구를 정의하세요. 스트리밍과 도구 호출 지원은 모델마다 다릅니다. 앱에 적용하기 전에 사용할 Model ID로 작은 요청을 테스트하세요.

준비 사항

먼저 SDK 예제로 일반 텍스트 요청을 성공시키세요. 모델 광장에서 테스트할 프로토콜에 맞는 정확한 Model ID를 복사하세요. 확인할 항목은 모델 선택 가이드를 참고하세요. 프로젝트의 Python 가상 환경에 openai와 anthropic을 설치하고 같은 터미널에서 자리표시자를 바꾸세요.
아래 Python 코드 블록은 각각 독립적으로 실행할 수 있습니다. 120초 타임아웃은 짧은 테스트를 위한 예시입니다. 앱의 타임아웃은 타임아웃 설정 안내에 따라 정하세요. max_tokens 또는 max_output_tokens를 설정하기 전에 모델의 출력 토큰 한도를 확인하세요.

텍스트 응답 스트리밍하기

스트리밍은 하나의 HTTP 응답으로 서버 전송 이벤트(SSE)를 보냅니다. SSE 이벤트 하나가 완전한 문장이나 JSON 인수 객체에 해당하지는 않습니다. SDK가 SSE 형식을 파싱합니다. 예제는 텍스트의 증분과 완료 정보를 출력합니다. 앱에서는 오류 이벤트도 처리하세요.

프로토콜별 날씨 도구 정의하기

모델이 함수 호출을 요청하면 앱이 인수를 검증하고 함수를 실행한 뒤 결과를 반환합니다. 예제는 get_weather 함수 하나에 location 인수를 전달하며, 실시간 날씨가 아닌 고정된 데모 데이터를 반환합니다. 날씨 서비스나 추가 Key는 필요하지 않습니다. 지원 여부는 모델과 프로토콜에 따라 다릅니다. 일반 텍스트가 작동하더라도 사용할 Model ID로 이 작은 도구 요청을 테스트하세요. 도구를 선언한다고 호스팅된 검색이나 제공자 측에서 실행하는 다른 도구가 활성화되지는 않습니다.

도구를 호출하고 결과 반환하기

아래 비스트리밍 예제는 완성된 인수를 확인할 수 있도록 도구 호출과 결과 반환을 한 차례 수행합니다. 첫 응답의 모든 도구 호출을 처리하고 후속 요청을 한 번 보냅니다. 더 긴 에이전트 워크플로에는 별도의 횟수 제한과 종료 조건을 갖춘 루프가 필요합니다.
도구 결과를 추가하기 전에 어시스턴트의 전체 응답을 보존하세요. Responses는 추론 항목이 반환되면 이를 포함한 모든 output 항목을 유지하세요. Messages는 콘텐츠 블록과 순서를 보존하세요. ID를 새로 만들지 말고 반환된 호출 ID에 결과를 연결하세요.

자주 묻는 질문

도구 인수를 받는 즉시 실행해도 되나요?

도구 호출 인덱스나 항목 ID별로 조각을 모은 뒤 완성된 인수를 파싱하고 검증하세요. 일부만 받은 JSON은 파싱되지 않을 수 있습니다. 스트리밍과 도구를 결합하기 전에 위의 비스트리밍 예제로 시작하세요.

일반 텍스트는 작동하는데 도구는 왜 실패하나요?

지원 여부는 모델과 프로토콜에 따라 다릅니다. 사용할 Model ID로 작은 도구 요청을 검증하세요. 도구 스키마, 반환된 인수, 결과 ID, 메시지 순서를 확인하세요. 타입을 이용한 JSON 검증은 구조화된 출력 FAQ를 참고하세요.

스트림이 끊기면 재시도해야 하나요?

다시 보내기 전에 요청 기록을 확인하세요. 연결이 끊겼다는 사실만으로 요청 완료 여부를 알 수는 없습니다. 재시도는 별도의 시도이므로 이미 실행한 도구 작업을 반복하지 않아야 합니다. 오류 및 재시도 안내를 참고하세요.

관련 가이드

공식 참고 자료

아래 자료는 업스트림 프로토콜 필드를 정의합니다. 사용하기 전에 BetterToken Model ID로 해당 기능을 검증하세요.