ChatModel 이해 및 구현
1. 개념
특징
1. 문맥 유지
대화 내역(컨텍스트)을 기반으로 사용자 입력에 맞는 적절한 응답 생성
여러 턴(Turn) 동안의 대화 흐름을 이해
2. 사전 학습
대규모 대화형 데이터셋으로 학습.
3. 미세 조정
특정 태스크(예: 고객 서비스) 에 맞춰 미세 조정
작동 원리
입력
대화 내역(`messages`) 및 사용자 메세지
예: "Tell me about LangChain"
출력
입력을 기반으로 생성된 모델의 응답.
예: "Langchain is a framework for building LLM applications."
컨텍스트 관리
대화 중 이전 메시지를 기반으로 응답
2. ChatModel 의 주요 구성 요소
1. 대화 컨텍스트
대화 내역(
messages
) 을 저장하고 이를 모델 입력으로 사용
2. 역할(Role)
메시지는 일반적으로
system
,user
,assistant
역할로 구분system
: 모델ㅇ의 행동과 성격을 정의user
: 사용자의 입력 메시지.assistant
: 모델이 생성한 응답.
3. 토큰 관리
대화 내역이 길어질 경우 토큰 제한에 도달할 수 있으므로 중요 메시지만 유지하거나 요약 필요
3. ChatModel 구현 방법
1. OpenAI API 를 활용한 ChatModel
OpenAI 의 ChatGPT API 는 대화형 모델을 간단히 활용할 수 있는 도구를 제공함.
import openai
# API 키 설정
openai.api_key = "your-api-key"
# 대화 내역 정의
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "What is LangChain?"}
]
# ChatModel 호출
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=messages
)
# 응답 출력
print(response['choices'][0]['message']['content'])
2. 대화 컨텍스트 관리
ChatModel 은 대화내역(messages
) 을 기반으로 작동함. 따라서, 이전 메시지를 저장하고 유지해야함.
messages.append({"role": "assistant", "content": "LangChain is a framework for building applications using LLMs."})
messages.append({"role": "user", "content": "Can you explain it in detail?"})
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=messages
)
print(response['choices'][0]['message']['content'])
3. LangChain 을 활용한 ChatModel
LangChain 은 ChatModel 을 효율적으로 관리하고, 대화 컨텍스트를 유지하는 데 도움을 줌.
LangChain 예제
from langchain.chains import ConversationChain
from langchain.memory import ConversationBufferMemory
from langchain.llms import OpenAI
# 메모리 초기화
memory = ConversationBufferMemory()
# LangChain ConversationChain 구성
llm = OpenAI(model="gpt-3.5-turbo")
conversation = ConversationChain(llm=llm, memory=memory)
# 대화
print(conversation.run("What is LangChain?"))
print(conversation.run("How does it manage memory?"))
4. Hugging Face 를 사용한 ChatModel
Hugging Face 는 오픈소스 ChatModel 을 사용할 수 있는 플랫폼을 제공함.
from transformers import AutoTokenizer, AutoModelForCausalLM
# 모델 및 토크나이저 로드
model_name = "microsoft/DialoGPT-medium"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
# 대화 입력
input_text = "What is LangChain?"
inputs = tokenizer.encode(input_text, return_tensors="pt")
# 모델 실행 및 응답 디코딩
outputs = model.generate(inputs, max_length=50)
print(tokenizer.decode(outputs[0]))
Last updated
Was this helpful?