안녕하세요, 개인 공부한 내용을 정리하는 게시글입니다.
LLM 핵심 개념 요약 정리
1. 실습 환경 구성
● Python 버전: 3.12
● API Key 관리:
- .env 파일에 API Key 저장 → python-dotenv 설치 필요
from dotenv import load_dotenv
load_dotenv() # .env에서 OPENAI_API_KEY 로드
● TTS (Text to Speech): tts-1-hd 모델을 사용.
from openai import OpenAI
client.audio.speech.create(
model="tts-1-hd",
voice="alloy",
input="Hello tts!"
)
● 음성 → 텍스트 (STT):
- OpenAI Whisper API
- Hugging Face Whisper 직접 설치 후 chunk 분리
● 문장/화자 구분 (Speaker Diarization):
- pyannote.audio의 Pipeline 사용
● 웹 인터페이스(view) 실습:
- streamlit 사용
2. LLM 프롬프트 설계 및 대화 방식
● 원샷 / 퓨샷 프롬프팅:
- 예시를 통해 모델의 응답 유도
● 멀티턴 대화:
- InMemoryChatMessageHistory 등 이용
● System / Human / AI Message 구조:
messages = [
SystemMessage("너는 친절한 선생님이야"),
HumanMessage("안녕하세요"),
]
response = model.invoke(messages)
● 스트리밍 응답:
- model.invoke() → model.stream() 으로 변경
3. LangChain 기본
● LangChain이란?
- 빠르게 LLM 기반 앱을 만들기 위한 프레임워크
● 기본 구성 요소:
- ChatOpenAI
- SystemMessage, HumanMessage, AIMessage
- @tool 데코레이터
● LangChain Expression Language (LCEL):
- 파이프라인 정의, 메시지 흐름 제어 가능
- @tool 사용 시 """ """로 Docstring 정확히 작성
● .env를 사용하면 API Key 명시 생략 가능
4. LangGraph 기본
● LangGraph란?
- 복잡한 다단계 흐름, 워크플로우, 에이전트를 상태 기반으로 제어
● 차이점 요약:
- LangChain → LLM 기반 앱의 기본 구조
- LangGraph → 복잡한 흐름을 위한 컨트롤러
5. 문서 요약 및 RAG
■ 기본 개념
● 청킹 & 오버랩 설정:
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=100)
splits = text_splitter.split_documents(docs)
● 오버랩 수동 처리 예시:
for i in range(len(splits) - 1):
splits[i].page_content += "\n" + splits[i + 1].page_content[:100]
● 임베딩 유사도 측정:
- 코사인 유사도, 유클리디안 거리 등 ( 유사도 측정은 임베딩 모델에 따라 결과가 달라짐 )
■ 벡터 DB 저장
● FAISS
from langchain.vectorstores import FAISS
vector_store = FAISS.from_documents(docs, embedding=OpenAIEmbeddings())
vector_store.save_local("faiss_index")
from langchain_chroma import Chroma
vectorstore = Chroma.from_documents(docs, embedding=embedding, persist_directory="chroma_db")
retriever = vectorstore.as_retriever(k=3)
6. 웹 검색 기능
■ DuckDuckGo 검색 기능
from langchain_community.utilities import DuckDuckGoSearchAPIWrapper
from langchain_community.tools import DuckDuckGoSearchResults
wrapper = DuckDuckGoSearchAPIWrapper(region="kr-kr", time="d")
search = DuckDuckGoSearchResults(api_wrapper=wrapper, source="news")
docs = search.invoke("국제 유가")
docs = search.invoke("site:ytn.co.kr 최근 국제 유가")
■ 웹 콘텐츠 크롤링
- BeautifulSoup 사용
- WebBaseLoader로 로딩
7. 유튜브 요약
pip install youtube-search
pip install youtube_transcript_api
8. 주식시장 이용
● yfinance API 사용:
- 미국 주식 정보 수집
import yfinance as yf
ticker = yf.Ticker("AAPL")
info = ticker.info
8. RLHF & 기타
- Reinforcement Learning from Human Feedback
- → LLM 편향 제거, 사용자 피드백 반영
● Fine-tuning:
- 개인화 목적, 고유 도메인 데이터로 학습
● 할루시네이션 문제:
- RAG 또는 고품질 프롬프트로 완화
● PDF → 텍스트:
* 추가 정리
항목 | 요약 설명 |
LangSmith | LangChain 기반 앱의 디버깅, 로그 분석 도구 |
Memory 종류 | ConversationBufferMemory, SummaryMemory 등 |
LLM 평가법 | Exact Match, BLEU, ROUGE, Human Evaluation 등 |
Embeddings 종류 | text-embedding-3-small, sentence-transformers 등 비교 |
Prompt Template | 동적 입력을 위한 PromptTemplate 구성법 |
감사합니다.
'AI' 카테고리의 다른 글
PostgreSQL에서 vectorData를 저장하는법은? (0) | 2025.07.03 |
---|---|
[AI] 딥러닝 핵심 개념 요약 정리 (0) | 2025.06.06 |
[AI] 머신러닝 핵심 개념 요약 정리 - Day_2 (1) | 2025.05.31 |
[AI] 머신러닝 핵심 개념 요약 정리 - Day_1 (0) | 2025.05.30 |
LangChain(랭체인)이란? (2) | 2025.03.22 |