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

+ Recent posts