Data Science/LLM

[LLM] LangChain으로 ChatGPT API 활용 & 프롬프트 템플릿

희스레저 2024. 2. 18. 18:14

 

출처: https://www.youtube.com/watch?v=BLM3KDaOTJM&list=PLQIgLu3Wf-q_Ne8vv-ZXuJ4mztHJaQb_v&index=3

https://www.youtube.com/watch?v=y6D5Hn_k4lE&list=PLQIgLu3Wf-q_Ne8vv-ZXuJ4mztHJaQb_v&index=5

 

 

API를 통해 ChatGPT와 대화하기

  • davinci-003 vs gpt-3.5-turbo: GPT 버전 차이(3과 3.5)
  • temperature: chat-gpt가 내놓는 답변의 일관성을 조절하는 매개변수
    • 0~2까지 설정 가능
    • 0일 경우 답변이 일관적, 2일 경우 random하게 나오는 경향이 있음
  • callbacks의 streaming_stdout 내에서 streamingstdoutcallbackhandler: 타이핑 하듯이 답변 출력
    • 채팅 답변이 느리더라도 용인하는 경향이 있음 → 챗봇 구축 시 중요함
  • systemMessage: ChatGPT에게 특정 역할을 부여할 수 있음 (gpt 3.5부터 가능)
    • 예시
      • SystemMessage(content="You are a helpful assistant that translate English to Korean."
      • HumanMessage(content="I love langchain")

 

 


 

Prompt란 무엇인가?

"프롬프트" 모델에 대한 입력, 우리가 챗지피티에 입력하는 "커맨드"라고 할 수 있음.

여러 구성요소를 함수화해서 서비스안에서 이용하는 경우가 많음

사용자의 하드 코딩이 아니라 고정된 부분이 있고, 가용적인 부분만 사용자가 입력하여 프롬프트를 쉽게 구성하고 작업할 수 있도록 하는 것이 프롬프트 템플릿임

 

 

 

Prompt Template

반복적인 프롬프트 삽입 시 간편하게 사용할 수 있는 '템플릿' 함수 라이브러리

  • Prompt Template / Chat PromptTemplate

 

1) Few-shot 예제 활용

딥러닝 모델이 결과를 출력할 때, 입력 시 결과물에 대한 예시를 함께 제공함으로써 원하는 결과가 나오도록 유도하는 방벌본

  • Few-shot PromptTemplate

Few-shot Learning 유무에 따른 결과 차이

 

 

2) 동적 Few-shot Learning

LLM에 입력해야할 명령의 개념이 모호하거나 광범위한 개념일 경우, 다양한 예제를 제공하고 입력물에서 비슷한 예제를 찾아 답변을 제공하도록 유도하는 방법론

  • Example Selector

 

3) 출력형태 고정: Output Parser

LLM의 답변을 원하는 형태로 고정하기 위한 함수이며 서비스 구축 단계에서 유용함

예) 리스트, JSON format

  • Output Parser