NIRVANA
[LangChain] LangChain 노트 CH02 정리 본문
CH02. 프롬프트
프롬포트 단계
- 검색기에서 검색된 문서들을 바탕으로 언어 모델이 사용할 질문이나 명령을 생성하는 과정
- 검색된 정보를 바탕으로, 최종 사용자의 질문에 가장 잘 대응할 수 있는 응답을 생성하기 위한 필수 단계
프롬프트의 필요성
1. 문맥 설정: 프롬프트는 언어 모델이 특정 문맥에서 작동하도록 설정하는 역할을 함. 이를 통해 모델은 제공된 정보를 바탕으로, 보다 정확하고 관련성 높은 답변을 생성할 수 있음
2. 정보 통합: 여러 문서에서 검색된 정보는 서로 다른 관점이나 내용을 포함할 수 있음. 프롬프트 단계에서 이러한 정보를 통합하고, 모델이 이를 효율적으로 활용할 수 있는 형식으로 조정.
3. 응답 품질 향상: 질문에 대한 모델의 응답 품질은 프롬프트의 구성에 크게 의존. 잘 구성된 프롬프트는 모델이 보다 정확하고 유용한 정보를 제공하도록 도움
RAG 프롬프트 구조
- 지시사항(Instruction)
- 질문(사용자 입력 질문)
- 문맥 (검색된 정보)
프롬프트의 중요성
- 프롬프트 단계는 RAG 시스템에서 중요한 역할
- 해당 단계를 통해, 언어 모델은 사용자의 질문에 대해 최적화된 방식으로 응답을 생성 가능
- 시스템 전체의 성능과 사용자 만족도에 직접적인 영향을 미침
01. 프롬프트
Prompt
방법1. from_template() 메서드를 사용, PromptTemplate 객체 생성
방법2. PromptTemplate 객체 생성과 동시에 Prompt 생성
- 유효성 검사를 위해 input_variables를 명시적으로 지정
- 인스턴스화 중 템플릿 문자열에 있는 변수와 비교, 불일치하는 경우 예외를 발생
Partial_variables: 부분 변수 채움
- parial을 사용하는 일반적인 용도는 함수를 부분적으로 사용하기 위함
- ex) 항상 공통된 방식으로 가져오고 싶은 변수가 있는 경우 사용
- 날짜
- 시간
- ex) 항상 공통된 방식으로 가져오고 싶은 변수가 있는 경우 사용
파일로부터 template 읽어오기
ChatPromptTemplate
- 대화목록을 프롬프트로 주입하고자 할 때 활용 가능
- 메시지는 튜플 형식으로 구성, (role, message)로 구성하여 리스트로 생성
- role-"system" : 시스템 설정 메시지. 주로 전역 설정과 관련된 프롬프트
- role-"human" : 사용자 입력 메시지
- role - "ai" : AI 의 답변 메시지
MessagePlaceholder
- 포맷하는 동안 랜더링할 메시지를 완전히 제어할 수 있도록 함
- 메시지 프롬프트 템플릿에 어떤 역할을 사용해야 할지 확실하지 않거나, 서식 지정 중 메시지 목록을 삽입하려는 경우에 유용
- 대화목록을 나중에 추가하고자 할 때 사용 가능
02. 퓨샷 프롬프트
FewShot Prompt Template
실습 코드 참고
Example Selector
- 예제가 많은 경우 프롬프트에 포함할 예제를 선택해야 할 수 있음.
- 이때, Example Selecotr 클래스를 사용
FewShotChatMessagePromptTemplate
실습 코드 참고
Example Selector의 유사도 검색 문제 해결
- 유사도 계산시 instruction과 input을 사용
- 단, instruction만을 사용하여 검색 시, 제대로 된 유사도 결과가 나오지 않을 때도 존재
- 해당 문제를 해결하기 위해 커스텀 유사도 계산을 위한 클래스 정의 가능
03. LangChain Hub
- 랭체인 허브에서 프롬프트 확인 가능
- repo의 아이디 값이나 commit id를 붙여 특정 버전에 대한 프롬프트를 받아올 수도 있음
해당 문서를 정리한 내용입니다!
https://wikidocs.net/book/14314
<랭체인LangChain 노트> - LangChain 한국어 튜토리얼🇰🇷
**추천**은 공유할 수 있는 무료 전자책을 집필하는데 정말 큰 힘이 됩니다. **추천** 한 번씩만 부탁 드리겠습니다🙏🙏 ✅ **랭체인 한국어 튜토리얼 강의** …
wikidocs.net
'AI > LangChain' 카테고리의 다른 글
[LangChain] LangChain노트 CH04 정리 (0) | 2024.07.12 |
---|---|
[LangChain] LangChain 노트 CH03 정리 (0) | 2024.07.12 |
[LangChain] LangChain 노트 CH01 정리 (+ env파일에서 API KEY 읽기) (0) | 2024.07.04 |