가천대학교 SW 아카데미 6기 워크숍 실습 프로젝트입니다.
LangChain과 Azure OpenAI를 활용해 문서 처리, 자연어 응답, 이미지 생성 등 고급 AI 기능을 단계적으로 학습했습니다.
PDF, DOCX, CSV 등 다양한 문서 포맷을 LangChain 문서 로더를 통해 불러옵니다.
- PDF:
PyPDFLoader - DOCX:
Docx2txtLoader - CSV:
CSVLoader
from langchain.document_loaders import PyPDFLoader
loader = PyPDFLoader("sample.pdf")
pages = loader.load_and_split()
print(pages[0].page_content)
Azure OpenAI의 GPT-4o-mini 모델과 LangChain 연동을 통해 다양한 프롬프트 응답을 테스트합니다.
- 기본 질의응답
- 창의적인 시 생성
- 스트리밍 응답 처리
from langchain.chat_models import AzureChatOpenAI
llm = AzureChatOpenAI(model_name="dev-gpt-4o-mini")
answer = llm.invoke("이순신 장군이 누구니?")
print(answer.content)
LangChain의 PromptTemplate과 ChatPromptTemplate을 사용하여 사용자 요청을 정형화된 프롬프트로 만들어줍니다.
- 변수화된 프롬프트 생성
- 템플릿 응답 조립 및 디버깅 용이
from langchain.prompts import ChatPromptTemplate
prompt = ChatPromptTemplate.from_template("Tell me a joke about {topic}")
print(prompt.format_prompt(topic="cats").to_string())
문서의 긴 내용을 GPT 모델 기준의 토큰 단위로 나누기 위한 실습입니다.
- 토큰 길이에 따라 자동 분할
- 중복(overlap)을 활용해 의미 보존
from langchain.text_splitter import RecursiveCharacterTextSplitter
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=20)
chunks = splitter.split_documents(pages)
Azure OpenAI의 text-embedding-3-small 모델을 활용하여 문서를 벡터화합니다.
from langchain.embeddings import AzureOpenAIEmbeddings
embedding_model = AzureOpenAIEmbeddings(model="dev-text-embedding-3-small")
vectors = embedding_model.embed_documents([chunk.page_content for chunk in docs])
문서를 벡터화한 후, Chroma DB에 저장하고 유사도 기반 검색을 수행합니다.
- 벡터 저장:
Chroma.from_documents() - 검색:
similarity_search,similarity_search_with_relevance_scores
from langchain.vectorstores import Chroma
db = Chroma.from_documents(docs, embeddings)
results = db.similarity_search("탄소중립이 뭐야?")
print(results[0].page_content)
LLM과 Prompt Template을 이용하여 논문 내용을 요약하고, 강점/한계점 분석, 평점 매기기까지 수행합니다.
template = """
너는 논문 리뷰어야. 다음 논문 내용을 보고 아래를 수행해줘:
1. 연구 목적 요약
2. 강점과 한계 정리
3. 평점 부여 (5점 기준)
논문 내용: {context}
"""
DALL·E 3 + GPT-4o-mini를 조합하여 사용자의 주제로 4컷 만화를 자동 생성하는 프로젝트입니다.
- 사용자 프롬프트 입력
- GPT가 컷별 스토리 생성
- DALL·E로 각 컷 이미지를 생성
- 전체 만화를 이어붙여 스토리 완성
# 1. 유저 프롬프트 수집 → 컷별 스토리 작성
# 2. GPT가 컷별 묘사 생성 → 이미지 프롬프트 생성
# 3. DALL-E로 이미지 4장 생성
# 4. 네 장의 이미지를 한 장으로 합성
- 문서 로드 → 텍스트 분할
- 문서 임베딩 → 벡터 저장
- 유사도 검색 → LLM으로 응답 생성
- LLM의 고급 프롬프트 활용 → 리뷰, 요약, 생성
- AI 생성 기술(DALL·E) 연동 → 시각적 스토리 제작
본 워크숍은 실무에서 바로 응용 가능한 AI 기술을 중심으로 구성되었으며, 모든 코드는 LangChain + Azure 기반으로 작성되었습니다.