LangChain 실습 1 - Prompt

  • 응답 디버깅을 위해 LangSmith 연동 먼저 할 것

1. Simple Chain(Prompt+LLM+OutputParser)

  • 사용자 입력값을 바탕으로 프롬프트를 생성하고, 생성한 Prompt를 Chain을 통해 LLM에게 전달하고, LLM의 응답결과를 Chain을 통해 Output Parser로 전달하는 과정.

1) PromptTemplate 설정

  • PromptTemplate ? 사용자의 입력값을 활용하여 문자열 프롬프트를 만드는 데 사용되는 LangChain 기본 API.

2) LLM 설정

  • 프롬프트를 실행할 LLM 모델 설정

3) OutputParser 설정

4) Chain 설정

LCEC사용하여 체인 생성

5) Chain 실행


2. Chain Invoke Methods

  • 사용자가 정의한 체인을 실행할 수 있는 메서드들

1) invoke / ainvoke(동기/비동기)

  • 체인을 호출하고 결과를 반환하는 함수

2) stream / astream

  • 체인을 호출하고 결과값을 토큰 형태로 스트리밍 하는 함수

3) batch / abatch

  • 입력 목록에 대해 체인을 호출하고 목록형태로 값을 반환하는 함수


3. PromptTemplate

1) PromptTemplate

  • 사용자의 입력값을 활용하여 문자열 프롬프트를 만드는 데 사용되는 LangChain 기본 API.

1. format : 탬플릿에 값을 채워서 문자열을 생성하는 함수

2. input_variables : 템플릿 문자열의 변수와 비교하여 올바른 변수를 사용 중인지 유효성 검사를 하기 위해 사용하는 설정

4. prompt 결합

  • PromptTemplate은 문자열 기반 프롬프트를 생성하기 때문에 +연산자를 활용하여 여러 템플릿을 연결할 수 있다.

  • 템플릿 + 템플릿 (O) , 템플릿 + 문자열 (O)

2) ChatPromptTemplate

  • 대화목록(Chat)을 입력하여 응답결과를 생성할 때 사용하는 템플릿

  • 대화형 프롬프트, 챗봇 개발시 선택하는 프롬프트

  • 메세지는 튜플형태로 구성되며 (Role, Message)의 구조로 이루어져 있다.

3) MessagePlaceholder

  • 입력값으로 대화목록을 넣어야 하는 경우 사용하는 컴포넌트

4)FewShotPromptTemplate

  • FewShot Prompt로 템플릿 설계시 사용하는 컴포넌트

5) Example Selector

  • 2022

  • 주어진 예제들에서 사용자의 입력과 가장 유사한 예제를 선택하도록 도와주는 컴포넌트

  • 실습에서 사용할 SemanticSimilarityExampleSelector는 의미적 유사성(Semantic Similarity)을 기준으로 예제를 선택한다.

  • 유사도 분석에 대해서 여기에 설명하기

6) Langchain Hub를 활용한 Prompt 형상관리


Last updated