자연어 처리 작업에서 사용되는 언어 모델을 연결하고 체인화, 오픈 소스 프레임워크
→ 여러 모델을 순차적으로 연결하여 실행
각각의 LangChain 모듈을 파이프(|)를 통해 체인으로 연결
암호화하고자 하는 내용을 알파벳 별로 일정한 거리만큼 밀어서, 다른 알파벳으로 치환하는 방식
원리와 방식
평문의 각 알파벳을 오른쪽(또는 왼쪽)으로 일정한 칸수만큼 이동시켜 암호문을 만듭니다.
예를 들어, 이동 거리(키)가 3이라면 'A'는 'D', 'B'는 'E', 'C'는 'F'가 됩니다.
알파벳의 끝에 도달하면 다시 처음으로 돌아가 순환합니다. 예를 들어 'Z'를 3만큼 밀면 'C'가 됩니다.
대소문자 구분이 가능하며, 공백이나 숫자, 기호 등은 암호화 대상에서 제외할 수 있습니다.
예시
평문 (Plaintext) | 키(이동거리) | 암호문 (Ciphertext) |
---|---|---|
ABC | 3 | DEF |
HELLO | 3 | KHOOR |
z | 1 | a |
a B z | 4 | e F d |
수식 표현
암호화(Encrypt):
복호화(Decrypt):
여기서
는 평문의 알파벳 인덱스(0~25)
는 암호문의 알파벳 인덱스
는 이동 거리(키)입니다.
특징 및 한계
간단함: 구현이 매우 쉽고, 암호화와 복호화 모두 동일한 규칙을 사용합니다.
키 공간: 이동 거리는 1~25까지 총 25가지 경우의 수가 있습니다(0이나 26은 평문과 동일).
보안성: 현대 기준에서는 매우 약한 암호로, 모든 가능한 이동 거리를 대입해 보면 쉽게 해독할 수 있습니다(무차별 대입 공격).
순환 암호: 알파벳이 끝나면 처음으로 돌아가는 순환 구조를 가집니다.
데이터 전처리
데이터 변환
데이터 분할
# 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()에서 실행 가능한 함수만 제한적으로 등록하는 역할을 합니다.
적은 예제를 통해, 이 예시들로 모델이 그 작업을 일반화할 수 있도록 훈련하는 방식
FewShotPromptTemplate
은 적은 수의 예시를 사용하여 모델이 패턴을 학습하고 새로운 입력에 대해 적절히 응답할 수 있도록 도와줍니다.
examples
는 모델에게 제공될 예시들을 정의하며,example_prompt
는 예시를 어떻게 표현할지 정의합니다.
prefix
와suffix
는 템플릿의 앞뒤를 구성하여 모델이 작업을 이해하도록 돕습니다.
input_variables
는 사용자가 제공할 입력 변수를 정의하여, 템플릿 내에서 이 변수를 동적으로 바꿀 수 있게 해줍니다.
공개되지 않은, 즉 소스코드나 모델 구조, 학습 데이터 등이 비공개인 언어 모델.
이런 모델들은 보통 특정 기업이나 연구기관에서 개발하고 운영하며, 사용자는 API나 웹 서비스를 통해서만 접근할 수 있고, 내부 구조는 알 수 없다.
모델 자체를 튜닝할 수 없음
구분 | Closed-source | Open-source |
---|---|---|
공개 여부 | 비공개 | 공개 |
활용 범위 | 제한적 (API 등) | 자유롭게 수정 및 재학습 가능 |
예시 | GPT-4, Claude | LLaMA, Mistral, Falcon 등 |
비용 | 주로 유료 | 무료 또는 자체 운영 가능 |
Closed-source 모델은 상업적 가치와 서비스 품질을 유지하기 위해 비공개로 운영되는 경우가 많고, 연구보다는 비즈니스 중심으로 활용.
joke = fun_chat_template1 | fun_chat_template2 | llm
|
는 파이프라인 또는 체인을 연결하는 연산자로 사용
LangChain에서 파이프라인을 통해 여러 처리를 순차적으로 연결할 수 있다.
이 경우, fun_chat_template1
의 출력을 fun_chat_template2
가 이어받아 처리할 수 있도록 함.
파서는 출력 형식을 변환
: 출력 결과를 String 형식으로 변환
: 파서는 스트링이 아닌 json 형식으로도 만들 수 있다.
AI 모델, 데이터셋공유커뮤니티