-
[5월 3주차-5/22]🧠 LangChain과 GPT-4o를 활용한 대화형 AI 시스템 구축 실습Why Not SW CAMP 5기/수업 기록 2025. 5. 22. 14:36
오늘은 OpenAI의 최신 모델 gpt-4o와 LangChain을 활용하여, 다양한 대화형 AI 시스템 구축 실습을 진행했습니다. 주요 학습 포인트는 다음과 같습니다:
🔧 1. LangChain + OpenAI 기본 사용법
가장 먼저, langchain_openai를 활용한 기본적인 대화 구현을 실습했습니다.
from langchain_openai import ChatOpenAI from langchain_core.messages import HumanMessage model = ChatOpenAI(model="gpt-4o-mini") response = model.invoke([HumanMessage(content="안녕? 나는 홍길동이야.")])
이처럼 단순한 메시지 리스트를 전달하면 OpenAI 모델을 통해 응답을 받을 수 있습니다.
🧠 2. LangChain의 대화 기록 유지 (InMemoryChatMessageHistory)
LangChain에서는 세션 ID를 기반으로 대화의 흐름을 기억할 수 있도록 지원합니다.
from langchain_core.runnables.history import RunnableWithMessageHistory
이 기능을 사용하면 다음과 같은 문맥 유지가 가능합니다:
> 사용자: 안녕? 난 홍길동이야. > 사용자: 내 이름이 뭐지? → AI: 홍길동이요.
⚙️ 3. 툴 사용: 외부 함수 호출
LangChain에서는 LLM이 직접 외부 Python 함수를 호출할 수 있도록 툴을 등록할 수 있습니다.
@tool def get_current_time(timezone: str, location: str) -> str: ...
이렇게 도구를 등록하고 바인딩하면, AI가 사용자 질문을 이해하고 적절한 함수를 직접 호출해 결과를 포함시킬 수 있습니다.
예시 질문:
"부산은 지금 몇 시야?"
→ get_current_time() 호출 → 실제 시각 반환
📈 4. Pydantic을 활용한 함수 입력값 검증
pydantic.BaseModel을 활용하여 함수에 전달되는 매개변수를 명확하게 정의할 수 있습니다.
class StockHistoryInput(BaseModel): ticker: str period: str
이후 @tool로 감싸 LangChain 도구로 등록하면, 자연어로 받은 입력을 구조화하여 사용 가능합니다.
📄 5. PDF 문서 RAG(Retrieval Augmented Generation)
LangChain의 PyPDFLoader를 활용하여 문서 데이터를 읽고,
Chroma 벡터 DB에 저장 후 검색 기반 응답 시스템을 만들 수 있습니다.from langchain_community.document_loaders import PyPDFLoader loader = PyPDFLoader('2040_seoul_plan.pdf') documents = loader.load()
문서를 나누고 (RecursiveCharacterTextSplitter),
벡터화 (OpenAIEmbeddings) 후
Chroma 벡터스토어에 저장하여 질문에 따라 적절한 문서를 검색합니다.
💬 6. Prompt Template + Chain 조합
from langchain_core.prompts import ChatPromptTemplate
프롬프트 템플릿과 모델, 출력 파서를 체이닝하여 아래처럼 간단하게 파이프라인을 구성할 수 있습니다:
chain = prompt_template | model | StrOutputParser()
🧩 7. Query Augmentation (질문 명확화)
대화 중 사용자가 던진 애매한 질문을 문맥에 맞게 명확화하는 기능도 구현했습니다.
"뉴욕은?" → "뉴욕의 온실가스 저감 정책은 무엇인가요?"
이를 통해 검색 기반 질문-응답 시스템의 정밀도를 높일 수 있습니다.
📚 오늘 실습의 전체 흐름 요약
- 기본 LLM 호출
- 대화 문맥 기억 및 세션 관리
- 도구 활용 (현재 시각, 주가 정보 등)
- PDF 문서 → 벡터 DB 저장 및 검색 기반 질의응답 (RAG)
- Prompt Template + Chain으로 깔끔한 파이프라인 구성
- Query Augmentation으로 문맥 명확화
✅ 마무리
오늘 실습을 통해 LangChain과 GPT-4o를 결합하여, 문맥 유지 + 외부 정보 활용 + 검색 기반 응답이 가능한 진짜 ‘대화형 AI 시스템’을 만들어봤습니다.
📌 이 모든 과정은 추후 Chatbot, AI 비서, RAG 기반 검색 시스템, 데이터 요약 도우미 등으로 발전시킬 수 있습니다.
'Why Not SW CAMP 5기 > 수업 기록' 카테고리의 다른 글
[5월 4주차-5/27]ChatGPT와 뉴스 검색 챗봇 만들기: 자연어 처리 실전 프로젝트 (2) 2025.05.27 [5월 4주차-5/26]손글씨 인식부터 배경 제거까지, OCR 기반 이미지 처리 앱 만들기! (1) 2025.05.26 [5월 3주차-5/21]📈 GPT + Streamlit + yfinance로 주식 정보 챗봇 만들기 (2) 2025.05.21 [5월 3주차-5/20(2)]🎙️ Whisper + GPT-4로 회의록 자동 생성 시스템 만들기 (요약부터 교정, 워드 저장까지) (1) 2025.05.20 [5월 3주차-5/20(1)]AI 기반 문서 요약 및 회의록 자동화 시스템 (1) 2025.05.20