채팅 모델
채팅 모델은 언어 모델의 변형입니다. 채팅 모델은 기본 수준에서 언어 모델 (LLM)을 사용하지만, 공개 인터페이스는 다소 다릅니다. "입력 텍스트, 출력 텍스트"를 위한 API를 노출하는 대신, 입력으로 "채팅 메시지"를 받아들이고 출력으로 처리합니다. 채팅 모델의 전체 상호 작용 과정은 채팅 메시지를 주고받는 과정과 유사합니다.
채팅 모델 시작하기
이 장은 OpenAI 모델을 기반으로 합니다.
구성
기본적으로 LangChain에는 모델 종속성이 설치되어 있지 않습니다. 먼저 OpenAI Python 패키지를 설치하세요:
pip install langchain-openai
API에 액세스하려면 환경 변수를 통해 API 키를 구성해야 합니다. 다음 예는 리눅스 환경에서 이를 설정하는 방법을 보여줍니다:
export OPENAI_API_KEY="..."
환경 변수를 설정하기를 원치 않는 경우, OpenAI LLM 클래스를 초기화할 때 openai_api_key
라는 이름의 매개변수를 통해 키를 직접 전달할 수 있습니다:
from langchain_openai import ChatOpenAI
chat = ChatOpenAI(openai_api_key="...")
또는 매개변수 없이 초기화할 수도 있습니다:
from langchain_openai import ChatOpenAI
chat = ChatOpenAI()
메시지
채팅 모델 인터페이스는 원시 텍스트가 아닌 메시지를 기반으로 합니다. LangChain이 현재 지원하는 메시지 유형에는 AIMessage
, HumanMessage
, SystemMessage
, FunctionMessage
, ChatMessage
가 있습니다. 대부분의 경우 HumanMessage
, AIMessage
, SystemMessage
만 다룰 것입니다.
LCEL
채팅 모델은 Runnable interface
를 구현하여 invoke
, ainvoke
, stream
, astream
, batch
, abatch
, astream_log
와 같은 메소드를 지원합니다. 따라서 채팅 모델은 LangChain 표현 언어 (LCEL) 표현에도 사용할 수 있습니다.
채팅 모델은 입력으로 List[BaseMessage]
를 받아들이거나, str
( HumanMessage
로 변환됨) 및 PromptValue
와 같이 메시지로 강제 변환할 수 있는 객체를 수용할 수 있습니다.
from langchain_core.messages import HumanMessage, SystemMessage
messages = [
SystemMessage(content="도움이 되는 도우미입니다."),
HumanMessage(content="모델 정규화의 목적은 무엇인가요?"),
]
메시지 배열을 사용하여 모델 호출:
chat.invoke(messages)
반환된 메시지의 예:
AIMessage(content="AI 응답 내용...세부 정보 생략...")
AI 응답 출력을 스트리밍:
for chunk in chat.stream(messages):
print(chunk.content, end="", flush=True)