생성형 AI 서비스 개발 (1)

이영진·2025년 4월 21일
0

LLM

목록 보기
2/25

1. Introduction

Langchain

자연어 처리 작업에서 사용되는 언어 모델을 연결하고 체인화, 오픈 소스 프레임워크

→ 여러 모델을 순차적으로 연결하여 실행

LCEL: Langchain Expression Language

각각의 LangChain 모듈을 파이프(|)를 통해 체인으로 연결


시저 암호화

암호화하고자 하는 내용을 알파벳 별로 일정한 거리만큼 밀어서, 다른 알파벳으로 치환하는 방식


원리와 방식

  • 평문의 각 알파벳을 오른쪽(또는 왼쪽)으로 일정한 칸수만큼 이동시켜 암호문을 만듭니다.

  • 예를 들어, 이동 거리(키)가 3이라면 'A'는 'D', 'B'는 'E', 'C'는 'F'가 됩니다.

  • 알파벳의 끝에 도달하면 다시 처음으로 돌아가 순환합니다. 예를 들어 'Z'를 3만큼 밀면 'C'가 됩니다.

  • 대소문자 구분이 가능하며, 공백이나 숫자, 기호 등은 암호화 대상에서 제외할 수 있습니다.


예시

평문 (Plaintext)키(이동거리)암호문 (Ciphertext)
ABC3DEF
HELLO3KHOOR
z1a
a B z4e F d

수식 표현

암호화(Encrypt):

C=(P+K)mod26C = (P + K) \mod 26

복호화(Decrypt):

P=(CK)mod26P = (C - K) \mod 26

여기서

  • PP는 평문의 알파벳 인덱스(0~25)

  • CC는 암호문의 알파벳 인덱스

  • KK는 이동 거리(키)입니다.


특징 및 한계

  • 간단함: 구현이 매우 쉽고, 암호화와 복호화 모두 동일한 규칙을 사용합니다.

  • 키 공간: 이동 거리는 1~25까지 총 25가지 경우의 수가 있습니다(0이나 26은 평문과 동일).

  • 보안성: 현대 기준에서는 매우 약한 암호로, 모든 가능한 이동 거리를 대입해 보면 쉽게 해독할 수 있습니다(무차별 대입 공격).

  • 순환 암호: 알파벳이 끝나면 처음으로 돌아가는 순환 구조를 가집니다.


LCEL을 통한 데이터 전처리

  • 데이터 전처리

  • 데이터 변환

  • 데이터 분할

# count_words 함수 정의
def count_words(text):
    return len(text.split())

# 간단한 LCEL 환경을 정의하는 딕셔너리
lcel_env = {
    "count_words": count_words
}

# LCEL 명령어를 파이썬 코드로 실행하는 방식
expression = 'count_words("Hello, World!")'
result = eval(expression, {}, lcel_env)

print(result)  # 출력: 2

⇒ lcel_env는 LCEL(Lightweight Custom Execution Language) 환경을 정의하는 딕셔너리로, eval()에서 실행 가능한 함수만 제한적으로 등록하는 역할을 합니다.

Few-shot prompting

적은 예제를 통해, 이 예시들로 모델이 그 작업을 일반화할 수 있도록 훈련하는 방식

  • FewShotPromptTemplate적은 수의 예시를 사용하여 모델이 패턴을 학습하고 새로운 입력에 대해 적절히 응답할 수 있도록 도와줍니다.
  • examples는 모델에게 제공될 예시들을 정의하며, example_prompt는 예시를 어떻게 표현할지 정의합니다.
  • prefixsuffix템플릿의 앞뒤를 구성하여 모델이 작업을 이해하도록 돕습니다.
  • input_variables는 사용자가 제공할 입력 변수를 정의하여, 템플릿 내에서 이 변수를 동적으로 바꿀 수 있게 해줍니다.

#2. Closed-sources LLMs

공개되지 않은, 즉 소스코드나 모델 구조, 학습 데이터 등이 비공개인 언어 모델.

이런 모델들은 보통 특정 기업이나 연구기관에서 개발하고 운영하며, 사용자는 API나 웹 서비스를 통해서만 접근할 수 있고, 내부 구조는 알 수 없다.

모델 자체를 튜닝할 수 없음

🆚 Open-source 모델과의 차이

구분Closed-sourceOpen-source
공개 여부비공개공개
활용 범위제한적 (API 등)자유롭게 수정 및 재학습 가능
예시GPT-4, ClaudeLLaMA, Mistral, Falcon 등
비용주로 유료무료 또는 자체 운영 가능

Closed-source 모델은 상업적 가치와 서비스 품질을 유지하기 위해 비공개로 운영되는 경우가 많고, 연구보다는 비즈니스 중심으로 활용.


#3. Langchain

joke = fun_chat_template1 | fun_chat_template2 | llm

|파이프라인 또는 체인을 연결하는 연산자로 사용

LangChain에서 파이프라인을 통해 여러 처리를 순차적으로 연결할 수 있다.

이 경우, fun_chat_template1의 출력을 fun_chat_template2가 이어받아 처리할 수 있도록 함.

LCEL의 체인에서의 파서(Parser)

파서는 출력 형식을 변환

StrOutputParser

: 출력 결과를 String 형식으로 변환

sonOutputParser

: 파서는 스트링이 아닌 json 형식으로도 만들 수 있다.

HuggingFace

AI 모델, 데이터셋공유커뮤니티

0개의 댓글