개요
- 대규모 언어 모델(LLM): 다양한 언어 관련 작업을 수행하는 고급 모델로 이미 방대한 양의 데이터로 학습되어 다양한 도메인 작업에 대한 지식을 갖추고 있음
- 최신 챗 모델의 주요 기능:
- Tool calling(도구 호출): 외부 서비스, API와 상호작용
- Structured output(구조화된 출력): JSON 등 특정 형식으로 응답
- Multimodality(다중 모달리티): 텍스트, 이미지, 오디오, 비디오 처리
주요 기능
- 다양한 모델 제공업체(OpenAI, Anthropic, Ollama 등)와 통합
- LangChain 또는 OpenAI 메시지 형식 지원
- 표준화된 도구 호출 API
- 구조화된 출력을 위한 API
- LangSmith와 통합(모니터링, 디버깅)
- 토큰 사용량, 속도 제한, 캐싱 기능
인터페이스
- BaseChatModel 인터페이스 구현
- 메시지를 입력으로 받아 메시지를 출력
- 주요 메서드:
invoke
: 채팅 모델과 상호작용하는 기본 메서드, 메세지 목록을 입출력함stream
: 모델의 출력을 스트리밍함batch
: 효율을 위해 여러 요청을 일괄 처리함bindTools
: 모델의 실행 컨텍스트에서 사용될 수 있또록 여러 도구를 바인딩함withStructuredOutput
: invoke의 래퍼로 구조화된 출력을 지원함
Chat 접두사 유무 비교
Chat
접두사 모델(예: ChatOpenAI): 메시지 리스트를 입력받고 메시지를 출력- 접두사 없는 모델(예: OpenAI) 또는
LLM
접미사 모델: 문자열을 입력받고 문자열을 출력
langchain 문서에서는 일반적으로 Chat
접두사가 있는 모델 사용을 권장,
이는 최신 모델이 주로 채팅 인터페이스를 통해 노출되기 때문임
이러한 인터페이스 차이가 존재하는 이유는 LLM의 발전 과정에서 초기 모델은 단순 텍스트 완성에 집중했고, 최신 모델은 대화 형식(메시지 교환)에 최적화되었기 때문이라고 함
표준 매개변수
표준 매개변수는 모델 공급자에 따라 달라질 수 있음
- model: 사용하려는 모델의 이름
- temperature: 모델 출력의 무작위성 제어
- timeout: 요청 후 응답 타임아웃
- maxTokens: 응답의 토큰 수 제어
- stop: 모델이 토큰 생성을 중지해야 하는 시퀀스를 지정, 예를 들어 특정 문자열에서 응답의 끝을 알림
- maxRetries: 요청이 실패하는 경우 재전송 시도의 최대 횟수
- apiKey: 모델 접근 권한을 위한 API 키
- baseUrl: 요청이 전송되는 API 엔드포인트
고급 기능
- 컨텍스트 윈도우: 모델이 처리할 수 있는 입력의 최대 크기
- 캐싱: 이전 대화 결과 저장을 통한 성능 향상(단, 복잡한 문제로 주의 필요)
- 시맨틱 캐싱: 입력의 의미에 기반한 캐싱(특정 상황에서 유용)