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. Prompt Chaing과 멀티체인

  • 복잡한 하나의 문제를 작은 문제로 분할하여 해결하기 위한 방법이다

  • 하나의 프롬프트에서 생성된 응답을 다음 프롬프트의 입력으로 사용하여 , 점진적으로 응답내용을 고도화 시키는 방법.

  • 각 단계에서 AI가 생성한 출력을 활용하여 더 정교한 답을 도출할 수 있다.

Prompt Chaing 동작방식

  1. 첫번째 prompt를 바탕으로 ai에게 요청

  2. ai는 응답데이터1을 반환

  3. 두번째 프롬프트는 응답데이터1과 두번째 prompt 내용을 합쳐서 ai에게 요청

  4. ai는 응답데이터2를 반환

  5. 세번째 프롬프트는 응답데이터1,2와 프롬프트 내용을 합쳐서 ai에게 요청

  6. ai는 최종 응답 반환.

3. Chain Invoke Methods

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

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

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

2) stream / astream

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

3) batch / abatch

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


4. 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