NIRVANA

[LangChain] LangChain 노트 CH02 정리 본문

AI/LangChain

[LangChain] LangChain 노트 CH02 정리

녜잉 2024. 7. 5. 20:22

CH02. 프롬프트 

프롬포트 단계

  • 검색기에서 검색된 문서들을 바탕으로 언어 모델이 사용할 질문이나 명령을 생성하는 과정
  • 검색된 정보를 바탕으로, 최종 사용자의 질문에 가장 잘 대응할 수 있는 응답을 생성하기 위한 필수 단계

 

프롬프트의 필요성 

1. 문맥 설정: 프롬프트는 언어 모델이 특정 문맥에서 작동하도록 설정하는 역할을 함. 이를 통해 모델은 제공된 정보를 바탕으로, 보다 정확하고 관련성 높은 답변을 생성할 수 있음

 

2. 정보 통합: 여러 문서에서 검색된 정보는 서로 다른 관점이나 내용을 포함할 수 있음. 프롬프트 단계에서 이러한 정보를 통합하고, 모델이 이를 효율적으로 활용할 수 있는 형식으로 조정. 

 

3. 응답 품질 향상: 질문에 대한 모델의 응답 품질은 프롬프트의 구성에 크게 의존. 잘 구성된 프롬프트는 모델이 보다 정확하고 유용한 정보를 제공하도록 도움 

 

 

RAG 프롬프트 구조 

  • 지시사항(Instruction)
  • 질문(사용자 입력 질문)
  • 문맥 (검색된 정보)

 

프롬프트의 중요성

  • 프롬프트 단계는 RAG 시스템에서 중요한 역할
    • 해당 단계를 통해, 언어 모델은 사용자의 질문에 대해 최적화된 방식으로 응답을 생성 가능
    • 시스템 전체의 성능과 사용자 만족도에 직접적인 영향을 미침

 


 

 

01. 프롬프트 

Prompt

방법1. from_template() 메서드를 사용, PromptTemplate 객체 생성 

방법2. PromptTemplate 객체 생성과 동시에 Prompt 생성 

  • 유효성 검사를 위해 input_variables를 명시적으로 지정
    • 인스턴스화 중 템플릿 문자열에 있는 변수와 비교, 불일치하는 경우 예외를 발생 

 

Partial_variables: 부분 변수 채움 

  • parial을 사용하는 일반적인 용도는 함수를 부분적으로 사용하기 위함
    • 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