[LLM] Langchain - Prompt engineering

gunny·2024년 1월 21일
0

LLM

목록 보기
3/12

langchain을 활용해서 openai 라이브러리로 prompt engineering을 간단히 수행해본다.

Prompt engineerning

  • 프롬프트는 여러 구성요소로 구성 될 수 있는데 크게 4가지로 보자면
    (1) Instructions (지침)
    (2) External information (외부정보) 및 context(컨텍스트, 문맥)
    (3) User input(유저 입력값) 및 query(쿼리)
    (4) Output indicator(출력 표시)

모든 프롬프트에 이러한 구성 요소가 모두 필요한 것은 아니지만,
좋은 프롬프트에서는 두 개 이상의 구성 요소를 사용하는 경우가 많다.

(1) Instructions

모델에 수행할 작업으로 일반적으로 원하는 출력을 생성하기 위해
입력 및/또는 외부 정보를 사용하는 방법을 알려주는 것

(2) External information or context

프롬프트에 수동으로 삽입하거나, 벡터 데이터베이스(장기 메모리)를 통해 검색하거나, 다른 수단(API 호출, 계산 등)을 통해 가져오는 추가 정보

(3) User input or query

사용자 입력 또는 질의는 일반적으로 시스템의 사용자가 직접 입력하는 질의

(4) Output indicator

생성된 텍스트의 시작 부분

이러한 각 구성 요소는 일반적으로 설명된 순서대로 배치되어야 한다.
지침(Instructions)부터 시작하여 컨텍스트(필요한 경우)를 제공한 다음 사용자 입력을 추가하고 마지막으로 출력 표시기로 끝난다.

예를 들어

prompt = """Answer the question based on the context below. If the
question cannot be answered using the information provided answer
with "I don't know".

Context: Large Language Models (LLMs) are the latest models used in NLP.
Their superior performance over smaller models has made them incredibly
useful for developers building NLP enabled applications. These models
can be accessed via Hugging Face's `transformers` library, via OpenAI
using the `openai` library, and via Cohere using the `cohere` library.

Question: Which libraries and model providers offer LLMs?

Answer: """

Few Shot PromptTemplate

LangChain이 제공하는 또 다른 유용한 기능은 Few Shot PromptTemplate이다.

[1] Parametric knowledge(파라메트릭 지식) - 모델 훈련용 학습 능력이 있는 모델 내부에 저장

[2] Source knowledge(지식) — 소스를 통해 지식을 제공받을 수 있음

Few Shot PromptTemplate의 기본 아이디어는 지식으로 몇 가지 상세한 교육을 제공하는 것이다. 이를 위해 모델을 만들 수 있고 사용자 입력에 적용할 수 있는 몇 가지 예를 추가할 수 있다.

profile
꿈꾸는 것도 개발처럼 깊게

0개의 댓글