LLM
LLM
- 방대한 양의 텍스트 데이터를 학습하여 사람과 유사한 방식으로 이해하거나 생성하는 AI 시스템
- 예시 : ChatGPT, Claude, Gemini
- 작동 방식
- 다음에 오는 단어를 예측하는 방식으로 텍스트 생성
- 인터넷의 방대한 데이터로 사전 훈련
- 특정 작업에 맞게 미세 조정 가능
트랜스포머 아키텍처

- 인코더 : 입력 텍스트 이해
- 어텐션 : 단어 간 관계 동적으로 가중
- 포지셔널 인코딩 : 단어 순서 정보 등록
- 디코더 : 입축된 의미로 새 텍스트 생성
어텐션 메커니즘
- 트랜스포머 아키텍처 핵심 : 모든 내용을 같은 집중도로 읽기 보다는 중요한 것에 집중
토큰과 토큰화
- LLM은 텍스트를 토큰으로 분할 후 처리
- 한국어는 영어보다 더 많은 토큰 필요(비용 증가)
- 예시
- 인공지능이 세상을 바꾸고 있습니다
- 인공 지능 이 세상 을 바꾸 고 있습니다
다음 단어 예측 원리
- 확률 분호와 샘플링
- Temperature로 무작위성 조절
- 0 : 일관된 응답
- 0.7 : 균형잡힌 창의성
- 1.5 : 창의적이지만 예측 불가능
OpenAI 이해
Chat Completion API 구조

- Request 구조

- Response 구조
메시지 역할의 이해
- system : AI의 성격과 규칙 정의
- user : 사용자의 질문
- assistant : AI 응답
OpenAI 핵심 매개변수
- temperature : LLM의 창조성을 조절하는 부분
- top_p : 단어 선택 범위를 확률 기준으로 제한
- max_tokes : 생성되는 응답의 최대 토큰 수 제한
- frequency_penalty : 이미 나온 단어 재등장 억제 조절
- presence_penalty : 새로운 주제로의 전환 유도 조절
토큰 수 추정과 비용 최적화
- 영어 1토큰 = 4글자 = 0.75 단어
- 한국어 1토큰 = 1-2글자
- 비용 최적화
- max_tokens 제한
- 캐싱 활용
- 프롬프트 최적화
- 적절한 모델
고급 기능
- 멀티모달 : 이미지와 오디오 처리하는 것
- Function Calling : LLM이 외부 함수를 호출할 수 있게 하는 것
- 예시 : 서울 날씨 알려줘 - LLM이 날씨 API 호출 판단
- Streaming : 응답을 토큰 단위로 실시간 수신하기(한번에 받지 않는 것)
LangChain Framework
LangChain이 필요한 이유
- API 직접 호출 한계
- 반복적인 코드
- 복잡한 워크플로우 구현 어려움
- 모델 교체시 코드 전면 교체
- 프레임 워크 장점
- 모듈성
- 통일된 인터페이스
- 생산성
LangChain 아키텍처
LangChain은 다양한 컴포넌트로 구성된 모듈식 프레임워크
- 언어 처리 : Models, Prompts, Output Parsers
- 문서 처리 : Document Loaders, Text Splitters, Embeddings
- 저장/검색 : Vector Stores, Retrievers
- 실행 : Chains, Agents
모델 래퍼의 통일된 인터페이스

- OpenAI 모델

- Google 모델
메시지 타입 심화
- LangChain은 OpenAI API의 메시지 역할을 클래스로 표현

프롬프트 엔지니어링
프롬프트
- 명확성
- 구체성
- 맥락
템플릿의 필요성
- 하드 코딩

템플릿 종류
- PromptTemplate : 단순 텍스트 생성
- {topic}에 대해 {length}자로 설명
- 시나리오 : 단순 질문 - 답변, 텍스트 생성
- ChatPromptTemplate : 대화형 AI 구성
- 당신은 {role}입니다 - {question}
- 시나리오 : 페르소나 설정, 역할 기반 응답
- MessagesPlaceholder : 동적 메시지 삽입, 대화 기록을 템플릿에 삽입
- chat_history 변수에 이전 대화 전달
- 시나리오 : 멀티턴 대화, 히스토리 유지
변수 바인딩과 동적 프롬프트
- 템플릿 정의
- 변수 준비
- invoke로 바인딩
- 최종 프롬프트

출력파서와 구조화된 응답
출력 파싱 이유
- 구조화된 출력
StrOutputParser
- 기본적인 파서
- AI 응답 객체에서 텍스ㅡ만 추출
Structured Output
- Pydantic 모델 정의

- with_structured_output

LCEL(LangChain Expression Language)
LCEL
- LangChain 컴포넌트들을 파이프 연산자로 연결하여 워크플로우를 구성하는 표

- Prompt | LLM : 프롬프트 생성 후 LLM 호출
- Prompt | LLM | Parser : 출력까지 처리
Runnable 인터페이스 종류
- RunnableSequence : 순차 실행, 여러 Runnable를 순서대로 실행
- RunnableParallel : 병렬 실행, 같은 질문을 여러 모델이 동시 전송, 결과는 딕셔너리
- RunnablePassthrough : 원본 입력 유지, 원본과 가공 결과 동시 유지
- RunnableLambda : 커스텀 함수, 일반 함수를 Runnable로 변환
- 전처리/후처리 로직 삽입
- 중간 단계 커스텀 처리
실행 메소드
- invoke : 단일 입력 처리(동기)
- batch : 여러 입력 일괄 처리(동기)
- stream : 스트리밍 출력(동기)
- ainvoke : 단일 입력 처리(비동기)
- astream : 스트리밍 출력(비동기)
단일 요청 : invoke
여러 요청 : batch
실시간 출력 : stream
웹서버/비동기 : ainvoke, astream
'AI' 카테고리의 다른 글
| AICE 만점 (1) | 2025.08.31 |
|---|---|
| 3학년 여름학기 : 인공지능 수업 정리 노트 (0) | 2025.06.29 |
| AICE (0) | 2025.04.22 |
| 구글과 네이버 (0) | 2024.11.12 |
| AI에서 LLM과 RAG의 관계 (1) | 2024.11.12 |