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
2) 동적 Few-shot Learning
LLM에 입력해야할 명령의 개념이 모호하거나 광범위한 개념일 경우, 다양한 예제를 제공하고 입력물에서 비슷한 예제를 찾아 답변을 제공하도록 유도하는 방법론
- Example Selector
3) 출력형태 고정: Output Parser
LLM의 답변을 원하는 형태로 고정하기 위한 함수이며 서비스 구축 단계에서 유용함
예) 리스트, JSON format
- Output Parser