OpenAI: Migrating to HTTPX2

개요

OpenAI Python SDK가 동기 및 비동기 HTTP 클라이언트로 HTTPX2를 사용하도록 마이그레이션되었으며, 이 변경 사항은 SDK의 HTTP 계층과 상호 작용하는 애플리케이션에 영향을 미칩니다.

주요 내용

* HTTPX2 기본 적용: openai 패키지를 설치하면 HTTPX2가 자동으로 설치되며, 이전 버전인 httpx는 더 이상 설치되지 않습니다.
* TLS 인증서 및 신뢰 저장소 변경: HTTPX2는 기본 TLS 신뢰 저장소를 변경하여 운영 체제 신뢰 저장소를 사용합니다. 이로 인해 최소한의 컨테이너 이미지, 기업 TLS-인스펙팅 프록시 환경, 사용자 정의 certifi 번들 사용 시 인증서 검증 문제가 발생할 수 있습니다. 해결을 위해 운영 체제 신뢰 저장소에 CA 인증서를 설치하거나 SSL_CERT_FILE, SSL_CERT_DIR 환경 변수를 설정해야 합니다.
* 사용자 정의 HTTP 클라이언트: 사용자 정의 HTTP 클라이언트를 제공하는 경우, httpx2 클라이언트 및 구성 객체를 사용해야 하며, SDK는 권장되는 타임아웃, 연결 풀, 리디렉션 기본값을 유지하는 도우미를 제공합니다.
* 객체 및 클래스 변경: httpx의 다양한 객체(Client, Timeout, URL 등)가 httpx2의 해당 객체로 대체되었습니다.
* 인증 핸들러 및 이벤트 후크: 사용자 정의 인증 핸들러 및 이벤트 후크는 httpx2 요청 및 응답 객체를 받으므로 업데이트가 필요합니다.
* 원시 응답, 스트리밍 및 예외: SDK 응답 모델은 변경되지 않았지만, 네이티브 httpx2 클라이언트를 사용할 때 전송 관련 객체는 httpx2의 객체입니다.
* aiohttp 지원: aiohttp 추가 기능은 httpx2-네이티브 전송을 사용하며, 이전 httpx 또는 httpx-aiohttp 어댑터를 설치하지 않습니다.
* 요청 모킹 및 테스트: 테스트에서 HTTPX2 요청을 가로채고 HTTPX2 응답을 반환해야 합니다. RESPX와 같은 라이브러리는 httpx2 호환 버전으로 업데이트해야 합니다.
* 임시 레거시 HTTPX 클라이언트 사용: httpx-전용 전송, 통합 또는 모킹 라이브러리에 의존하는 애플리케이션은 pip install httpx를 통해 레거시 httpx를 명시적으로 설치하고 레거시 클라이언트를 주입하여 사용할 수 있습니다. 이 기능은 마이그레이션 지원을 위한 것이며 향후 중단될 수 있습니다.
* 레거시 aiohttp 어댑터: 기존 httpx-aiohttp 통합을 유지해야 하는 경우, 명시적으로 설치하고 레거시 클라이언트를 주입해야 합니다.

시사점

이번 HTTPX2로의 마이그레이션은 OpenAI SDK 사용 시 HTTP 통신 방식에 대한 변경 사항을 인지하고, 특히 TLS 인증서 처리, 사용자 정의 클라이언트 구성, 그리고 레거시 통합 사용 시 호환성을 확보하기 위한 코드 수정이 필요함을 시사합니다.

원문 읽기 →
원문을 불러오는 중...

댓글

GitHub Discussions