프로그래밍/AI,ML

프롬프팅의 기법

Lou Park 2025. 1. 9. 16:44

제로샷 프롬프팅(Zero-shot Prompting)
어떤 예시나 설명없이 직접 모델에 응답을 요구하는 프롬프팅.

Q: 2+2는 무엇인가요?
A:
>> 4입니다.

 

원샷 프롬프팅(One-shot Prompting)
하나의 예시를 제공하여 응답을 요구하는 프롬프팅.

 

퓨샷 프롬프팅(Few-shot Prompting)
몇 가지 예시를 제공하여 응답을 요구하는 프롬프팅.

Q: 2+2는 무엇인가요?
A: 4

Q: 2*6은 무엇인가요?
A: 12

Q: 2/2?
A: 1

Q: 2^8?
A:
>> A: 256

 

CoT(Chain-of-Thought Prompting, 생각의 사슬)
중간 추론 단계를 통해 복잡한 추론을 가능하게 하는 프롬프팅.

CoT가 없는 프롬프트:

이 집합 {4, 8, 9, 15, 12, 2, 1}에서 홀수의 합은 짝수입니다.
A: 답은 거짓입니다.
이 집합 {17, 10, 19, 4, 8, 12, 24}에서 홀수의 합은 짝수입니다.
A: 정답은 참입니다.
이 집합 {16, 11, 14, 4, 8, 13, 24}에서 홀수의 합은 짝수입니다.
A: 
A: 답은 거짓입니다. 이 집합의 홀수들의 합은 총 25이며, 이는 홀수이기 때문에 짝수가 아닙니다.
CoT를 추가한 프롬프트:

집합 {4, 8, 9, 15, 12, 2, 1}에서 홀수를 모두 더하면 짝수야.
답변: 홀수(9, 15, 1)를 모두 더하면 25이므로 위의 명제는 거짓이야.
집합 {17, 10, 19, 4, 8, 12, 24}에서 홀수를 모두 더하면 짝수야.
답변: 홀수(17, 19)를 모두 더하면 36이므로 위의 명제는 참이야.
집합 {16, 11, 14, 4, 8, 13, 24}에서 홀수를 모두 더하면 짝수야.
답변:
홀수(11, 13)를 모두 더하면 24이므로 위의 명제는 참이야.

 

Self-Consistency(자기일관성)
Few-shot CoT를 통해 여러가지 다양한 추론 경로를 샘플링하고, 여러번의 출력 생성 과정을거쳐 가장 일관된 답을 선택하는 기법이다. 복잡한 산술적 추론이나 상식적 논리 문제에 효과적이다.

 

Generated Knowledge Prompting
AI가 주어진 문제를 해결할 때 먼저 관련 지식을 생성하게 한 후, 그 지식을 통합하여 질문하는 방식. 최종적으로 묻고싶은 질문이 골프의 목적 중 하나는 다른 사람보다 더 높은 점수를 얻기 위해 노력하는 것이다. 예, 아니오?일 경우, 먼저 골프에 대한 지식을 생성하게 한 후, 그 지식을 통합하여 다시 질문한다.

골프는 어떤 게임인가요?
>> 골프의 목적은 최소의 스트로크로 한 세트의 홀을 플레이하는 것이다. 골프 한 라운드는 일반적으로 18홀로 구성된다. 표준 골프 코스에서는 각 홀을 라운드마다 한 번씩 플레이합니다. 각 스트로크는 1점으로 계산되며 총 스트로크 수를 사용하여 게임의 승자를 결정한다.
Question: 골프의 목적 중 하나는 다른 사람보다 더 높은 총점을 얻기 위해 노력하는 것이다. 예, 아니오?

Knowledge: 골프의 목적은 최소의 스트로크로 한 세트의 홀을 플레이하는 것이다. 골프 한 라운드는 일반적으로 18홀로 구성된다. 표준 골프 코스에서는 각 홀을 라운드마다 한 번씩 플레이합니다. 각 스트로크는 1점으로 계산되며 총 스트로크 수를 사용하여 게임의 승자를 결정한다.

Describe and Answer:
>> 아니요, 골프의 목적은 다른 사람보다 더 높은 점수를 얻는 것이 아닙니다. 오히려 가장 적은 수의 스트로크로 한 세트의 홀을 플레이하는 것이 목표입니다. 게임의 승자를 결정하는 데에는 총 점수가 아니라 총 스트로크 수가 사용됩니다.

 

Prompt Chaining
복잡한 작업을 여러 단계로 분할하여 순차적으로 처리하는 기법. 하나의 문제 해결 과정에서 이전 단계의 결과를 다음 단계의 입력으로 연속적으로 사용한다.

 

프롬프트 함수(Prompt Function)
GPT를 쉽게 사용할 수 있도록 이름과 함께 재사용 가능한 프롬프트를 만든다. 프롬프트를 함수로 캡슐화하고, 일련의 함수를 만들어 워크플로우를 만들 수 있다.

함수의 정의 프롬프트:

안녕 ChatGPT! 그동안 잘 지냈니? 나는 특정 함수를 통해 너의 도움을 받고 싶어. 나는 네가 제공된 지침에 따라 다양한 작업을 수행할 수 있는 기능이 있다고 알고 있어. 내 요청을 알아듣기 쉽도록 함수, 입력 그리고 입력에 대한 지시사항을 설명하는 탬플릿을 쓸거야. 아래 자세한 내용을 확인해.

function_name: [함수 명]
input: [입력]
rule: [입력 처리 방법에 대한 지침]

내가 제공한 세부 정보를 바탕으로 이 함수에 대한 출력을 제공해. 도와주면 좋겠어. 땡큐!
대괄호 안의 텍스트는 내가 수행하고자 하는 기능에 대한 관련 정보로 대체할 거야. 이렇게 자세히 소개하면 내 요청을 더 효율적으로 이해하고 원하는 출력을 제공하는데 도움이 될거야. 형식은 function_name(input) 이며, 이해했으면 ok 한 단어만 출력해.
함수 추가:

function_name: [trans_word]
input: ["텍스트"]
rule: [너는 영어 번역가, 맞춤법 교정자이자 언어 개선자야. 내가 어떤 언어로든 "텍스트"를 포함한 입력 양식을 제공하면, 내 텍스트를 영어로 번역해.]
함수 사용:

trans_word(기타)

 

 

참고자료
https://www.promptingguide.ai/kr/techniques/prompt_chaining

'프로그래밍 > AI,ML' 카테고리의 다른 글

프롬프팅 팁  (0) 2025.01.09
Langchain으로 간단한 RAG 구현하기  (0) 2025.01.08