langchain-openai 1.8.0: OpenAIClassifier의 베타 표시와 질문 거부 처리
여러 질문을 묶는 OpenAIClassifier가 추가됐다. 베타 표시와 질문 하나의 거부가 전체 응답에 미치는 영향, 미디어 입력·실행 환경 조건을 확인한다.

LangChain은 2026년 11월 13일 langchain-openai 1.8.0을 배포하고 OpenAIClassifier를 추가했다. 이 클래스는 같은 상태를 두고 여러 질문을 묶어 보낸다. 애플리케이션은 응답을 분기 판단에 활용할 수 있다. 공식 릴리스는 이 변경을 GA Decisions API 연동으로 소개한다.
이 설명을 읽을 때 API와 연동 클래스의 제공 상태를 나눠 볼 필요가 있다. 이번 배포 태그의 클래스에는 @beta()가 붙어 있다. 따라서 릴리스의 GA라는 표현만으로 LangChain의 OpenAIClassifier까지 안정화됐다고 판단하기는 어렵다. 베타 표시는 1.8.0의 공식 소스에서 확인할 수 있다.
여러 질문을 같은 상태에 적용한다
OpenAIClassifier는 BaseDecisionModel 인터페이스에 맞춘 연동이다. 텍스트나 메시지, 이미지를 대상으로 질문을 구성한다. Noul은 확률, Choice는 선택지, Score는 점수를 다루며 한 요청에 이 질문들을 함께 담는다. 공식 예제는 고객 문의를 놓고 담당 부서와 긴급 여부, 불만 정도를 묻는다.
개발자 입장에서는 문의를 어느 팀에 보낼지 정하거나 사람에게 검토를 넘기는 코드를 구성할 때 참고할 만하다. 이 활용 예시는 응답 형식에서 도출한 설계 제안이다. 분류 정확도나 운영 비용이 개선됐다는 실험 결과를 뜻하지 않는다.
거부 하나가 전체 결과에 영향을 준다
질문 가운데 하나라도 거부되면 invoke는 ModelRefusalError를 던지고 다른 질문의 답도 반환하지 않는다. 여러 판단을 한 번에 요청하는 코드라면 정상 응답과 거부 경로를 따로 처리해야 한다. 일부 답이 항상 남는다고 가정하면 후속 업무가 잘못 실행될 수 있다.
입력에도 제약이 있다. 이 클래스는 텍스트와 이미지를 받으며 파일과 오디오는 ValueError를 일으킨다. 이미지를 포함한 메시지는 루트 상태로 전달해야 한다. 딕셔너리 같은 구조화 상태는 JSON으로 전송되므로 그 안에 중첩된 메시지의 미디어 블록은 경고와 함께 빠진다. Box 질문은 지원하지 않고 Choice에는 최소 두 개의 라벨이 필요하다. 이 조건들은 배포 태그에 고정한 클래스 설명과 구현에 명시돼 있다.
실행 환경과 의존성을 함께 확인한다
PyPI 배포 정보에서 1.8.0의 공개일과 Python 요구사항을 확인했다. 이 버전은 Python >=3.11.0,<4.0.0을 요구한다. 같은 태그의 pyproject.toml에는 langchain-core>=1.8.0,<2.0.0과 openai>=2.45.0도 적혀 있다. 공식 릴리스에 따르면 Python 3.10 사용자는 1.7.x 계열을 계속 설치하게 된다.
도입 전에는 현재 잠금 파일에서 이 조건을 만족하는지 확인하자. 별도 환경에서 정상 분류, 질문 거부, 지원하지 않는 입력을 나눠 시험하는 편이 좋다. 이번 글에서는 공식 릴리스와 배포 소스를 대조했으며 유료 API 호출이나 분류 성능 시험은 하지 않았다.



Discussion
No comments yet