INDEX
LLM
LLM 가본 개념
개요
- Large Language Model
- 다양한 언어 작업을 수행
- 방대한 텍스트 데이터를 학습
- 맥락을 통해 데이터를 조합
주요 기능
- 자연어 이해(NLU): 질문이나 명령을 이해하고 적절히 응답
- 텍스트 생성: 자연스러운 텍스트 생성
- 번역 및 요약: 텍스트를 요약하거나 다른 언어로 번역
- 질문 응답 시스템(Q&A): 정확한 답변 제공
RAG
개요
- Retrieval-Augmented Generation
- RAG는 검색 기반 생성 기법
- LLM의 한계를 보완하기 위해 외부 데이터베이스에서 관련 정보를 검색하여 답변을 생성
동작 원리
- 질문 입력: 질문에 맞는 답변 생성 전 검색 단계 진행
- 문서 검색: 질문과 관련된 문서를 검색
- 답변 생성: 검색된 문서를 바탕으로 답변 생성
장점
- 최신 정보 활용
- 특정 도메인 정보 제공
- 효율성
Vector DB
개요
- 텍스트, 이미지 데이터를 벡터 형태로 변환해 저장
- 임베딩을 통해 데이터를 벡터화하여 유사성을 기반으로 검색
동작 과정
- Embedding 생성: 텍스트를 벡터로 변환
- 벡터 저장: 데이터베이스에 저장
- 벡터 검색: 유사한 벡터를 검색
- 결과 제공: 유사한 벡터를 가진 데이터를 검색 결과로 제공
장점
- 의미 기반 검색
- 고성능 처리
LangChain
개요
- LLM과 외부 리소스를 결합
- 다양한 애플리케이션을 효율적으로 개발할 수 있는 프레임워크
주요 기능
- LLM과 데이터 소스 결합
- 작업 흐름 자동화
- 대화형 AI 개발
동작 원리
- 프롬프트 체인: 여러 단계의 프롬프트를 연결.
- 메모리 기능: 대화의 맥락 유지.
- 외부 리소스 통합: API, 데이터베이스 등을 결합.
LangChain의 장점
- 유연한 애플리케이션 개발
- 확장성
- 대화형 AI
Prompt 작성
OpenAI Playground
- GPT 모델을 실험할 수 있는 웹 기반의 환경으로
- 다양한 프롬프트를 입력하고 실시간으로 결과를 확인할 수 있는 플랫폼
주요 목적
- 프롬프트 테스트: 입력 프롬프트에 따른 결과를 확인
- 모델 성능 평가: 다양한 설정을 통해 모델의 성능을 평가
- 텍스트 생성 실험: 실시간으로 텍스트를 생성하여 언어 모델의 동작 방식을 파악
주요 가능
- 텍스트 생성: 입력된 프롬프트를 바탕으로 GPT 모델이 답변을 생성
- 다양한 작업 테스트: 요약, 번역, 질문 답변, 창의적 글쓰기를 포함한 다양한 작업을 시험
- 프롬프트 엔지니어링 실험: 프롬프트의 작성 방식이나 내용에 따라 모델의 응답 변화를 실험
주요 설정
- 모델 선택:
- GPT-4 family: 복잡한 작업과 창의적 응답
- GPT-3.5 family: 빠르고 효율적인 응답
- Temperature:
- 값이 높을수록 창의적이고 예측 불가능한 응답.
- 값이 낮을수록 일관적이고 안정적인 응답
- Max Tokens: 생성할 텍스트 길이를 조절
-
Top-p: 응답 다양성을 제어
- Stop Sequences: 특정 기호에서 응답 종료
주의점
- Frequency Penalty: 반복 방지를 위한 설정
- Presence Penalty: 다양한 표현을 유도하기 위한 설정
사용법
- 웹 브라우저에서 간단히 접근.
- 로그인 후, 모델과 설정을 선택하고 프롬프트를 입력하여 결과 확인.
실습 예시
- 목표 설정: 예: 글을 요약하는 모델
- 프롬프트 작성: 요약할 본문 입력
- 파라미터 설정: 모델과 다른 변수 조정
- 결과 확인: 모델이 생성한 요약 확인
- 활용 팁: 다양한 파라미터와 프롬프트 조합 시도
역할 설정
- User: 프롬프트 입력
- Assistant: 모델의 응답 생성
- System: 지침 제공
주의사항
- 비용: 사용한 토큰 수에 따라 비용 발생
- 모델의 한계: 항상 정확하지 않은 응답 가능성
- 프라이버시와 보안: 민감한 정보 입력 금지
- 출력 조정: 필요시 프롬프트 및 파라미터 수정
Shot 기법
Zero-Shot
- 예제를 주지 않고 지침만 전달함으로써 모델이 추론하도록 하는 기법
One-Shot
- 예제를 하나 제공하여 모델의 추론을 유도
Few-Shot
- 여러 예제를 제공하여 모델이 더 다양한 추론을 할 수 있도록 도와주는 기법
Tip
- 과정을 예시로 제공하면 모델이 더 정확하게 추론
Act As 기법
- 역할 ; Persona 부여
- 모델에게 특정 직업이나 역할을 부여하여 해당 직업이나 성격에 맞는 답변을 얻는 기법
역할 부여
- 변호사, 법률가, 상담가, 프로그래밍 강사 등 직업으로 설정하여 전문적인 답변 유도
- 성격, 취향, 배경 등을 설정한 가상인물로 부여하여 해당 성향의 답변 유도
- 번역기, 계산기, 프로그래밍 언어 등 역할을 부여하여 연산 결과 유도
CoT 기법
- Chain of Thinking
- 논리적인 추론 과정을 단계별로 설명하도록 유도
자동화된 CoT 기법
- 모델에게 중간 과정을 설명해 달라고 요청함으로써, 문제 해결 과정을 상세히 풀이하도록 유도하는 기법
직접 중간 과정 넣어주기
- 중간 추론 단계를 직접 입력해 논리적 과정을 상세히 설명하도록 유도
정보 제공 기법
System에 전달
- 정보를 한 번에 제공하며 모델이 이후에 그 정보를 잊지 않도록 보장
Assistant에 전달
- 대화 중에 정보를 제공
- 기억할 수 있는 대화량에 한계가 있기 떄문에 한계가 있음
정리
- 모델이 답변을 생성하는 데 부족한 추가 정보를 제공
- Prompt에 작성하여 제공
- 자료의 형태로 제공
- 대화를 통해 정보 제공
형식 지정 기법
- 입력을 모델이 이해하기 쉬운 형태로 변형하여 전달
Markdown
#
헤더,-
리스트,-, |
등을 활용한 표 제공
JSON
- 데이터를 키-값 쌍으로 표현하며, 데이터 처리 및 시스템 연동에 주로 사용
Symbol
- 중요한 부분을 강조하기 위해 사용
**강조**
등을 이용하여 중요한 부분 강조
Prompt 실습
OpenAI Playground 사용
- gpt-4o
- Temperature, Top P = 1
Prompt 작성
- 형식 지정: markdown
- 언어 : 영어
- 정보 제공: system 메시지에 전달
- one shot 기법: 예시 구조 제시
# system : document summarize system
# user : answer_type = markdown
# user : structure = index - content - summary
# user : index = using markdown function '[](#)'
# user : content = list
# user : content_style = itemization
# user : summary = sentence
# exemple :
---
# title
# index
- [subtitle 1](#subtitle-1)
- [subtitle 2](#subtitle-2)
- [subtitle 3](#subtitle-3)
# content
## subtitle 1
-
## subtitle 2
-
## subtitle 3
-
# summary
---
입력
결과
프롬프트 엔지니어링
목차
내용
프롬프트 엔지니어링 정의
- AI 모델, 특히 LLM이 적절한 응답을 생성하도록 프롬프트를 설계하고 최적화하는 기술.
- 프롬프트는 모델이 사용자의 의도를 이해하고 의미 있는 응답을 하도록 컨텍스트, 안내, 예시를 제공.
- AI에 로드맵을 제공하여 목표한 결과물을 도출하는 방향 조정 역할을 수행.
프롬프트 설계 및 최적화 요소
- 프롬프트 형식: AI 응답에 중요한 역할.
- 컨텍스트 및 예: AI가 작업을 이해하도록 도움.
- 미세 조정 및 적응: 특정 작업에 맞춰 성능 향상.
- 멀티턴 대화: 지속적인 상호작용 가능.
프롬프트 유형
- 직접 프롬프트(제로샷)
- 원샷, 퓨샷, 멀티샷 프롬프트
- 연쇄적 사고(CoT) 프롬프트
- 제로샷 CoT 프롬프트
프롬프트 엔지니어링의 사용 사례
- 언어 및 텍스트 생성
- 질의 응답
- 코드 생성
- 이미지 생성
더 나은 프롬프트 작성 전략
- 명확한 목표 및 목적 설정
- 맥락 및 배경 정보 제공
- 퓨샷 프롬프팅 사용
- 구체적으로 작성
- 반복 및 실험
- 연쇄적 사고(CoT) 프롬프팅 활용
프롬프트 엔지니어링의 이점
- 모델 성능 향상
- 편향 및 유해한 대답 감소
- 제어 및 예측 가능성 향상
- 향상된 사용자 환경
요약
프롬프트 엔지니어링은 AI 모델이 원하는 응답을 생성하도록 프롬프트를 설계하고 최적화하는 기술로, 다양한 유형과 설계 요소를 통해 효과적으로 AI와 소통하고 모델의 잠재력을 최대한 활용할 수 있습니다.