https://www.promptingguide.ai/kr
프롬프트 엔지니어링 가이드 – Nextra
A Comprehensive Overview of Prompt Engineering
www.promptingguide.ai
3차 프로젝트를 진행하면서 마지막에 Ragas 평가 점수를 개선하면서 프롬프트에대한 중요성을 더 많이 느낄 수 있었다. 프롬프트 구성과 예제, CoT와 ToT, GoT에대해 복습해보려한다.
[플레이데이터 SK네트웍스 Family AI 캠프 21기] 1월 2주차 회고 - 3차 프로젝트
RAG 수업이 끝나갈때쯤 3차 프로젝트 팀이 발표되었다. 3차 프로젝트에 주어진 시간은,,, 2일,,,😱짧은 시간안에 RAG를 설계부터 개발까지 해야하는 상황이라 팀원들과 미리 모여서 주제선정하고
itstudentstudy.tistory.com
프롬프트 구성 요소
네가지 구성 요소가 존재하며 항상 이 네가지 모두 필요한 건 아니다.
## 지시(Instruction)
모델이 수행해야할 작업에 대한 명확한 지침
"다음 뉴스 기사를 읽고 핵심 내용을 요약하라."
## 문맥
더 정확한 응답을 유도하기 위해 제공하는 배경 정보나 추가 문맥
"사용자는 바쁜 직장인으로, 전체 기사를 읽을 시간이 없다. 핵심 정보만 빠르게 파악하고 싶어한다."
## 입력 데이터
모델이 처리해야하는 구체적인 입력값. 질문일수도, 문서일수도, 표일수도,,, 다양한 형태의 데이터
"[기사 원문]"
## 출력 지시자
모델이 생성할 응답의 형식이나 조건을 지정하는 요소
"한 문단(3줄 이내)로 요약하라. 일반인이 쉽게 이해할 수 있는 문장을 사용하라."
프롬프트 설계에 관한 일반적인 팁 : https://www.promptingguide.ai/kr/introduction/tips
OpenAI API를 활용한 신속한 엔지니어링을 위한 모범 사례 : https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-the-openai-api
Zero-shot Prompting
"텍스트를 중립, 부정 또는 긍정으로 분류합니다.
텍스트: 휴가는 괜찮을 것 같아요.
감정:"
Few-shot Prompting
""whatpu"는 탄자니아에 서식하는 작은 털복숭이 동물입니다. whatpu를 사용하는 문장의 예
라는 단어를 사용하는 문장의 예입니다:
우리는 아프리카를 여행하고 있었는데 아주 귀여운 whatpu를 보았습니다.
"farduddle"을 한다는 것은 정말 빠르게 위아래로 점프한다는 뜻입니다. farduddle을 사용하는 문장의 예
를 사용하는 문장의 예입니다:"
프롬프트 공유 사이트
LangChain Hub : https://smith.langchain.com/hub
LangSmith
smith.langchain.com
오픈프롬프트 : https://www.prpt.ai
오픈프롬프트 | OpenPrompt
당신의 AI 경험을 한층 높여줄 국내 최고의 프롬프트 라이브러리
www.prpt.ai
PromptHero : https://prompthero.com
Search Prompts for AI Image & Video Generation | PromptHero
The #1 website for Artificial Intelligence and Prompt Engineering. Search the world's best AI prompts for models like Stable Diffusion, ChatGPT, Midjourney...
prompthero.com
Chain of Thought (사고 연쇄-CoT)
https://arxiv.org/abs/2201.11903
Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
We explore how generating a chain of thought -- a series of intermediate reasoning steps -- significantly improves the ability of large language models to perform complex reasoning. In particular, we show how such reasoning abilities emerge naturally in su
arxiv.org
CoT 프롬프트는 복잡한 문제를 한 번에 풀지 않고, 단계별(Step-by-step)로 나누어 순차적으로 해결하는 방식이다. 선형(Linear)구조로 (A ➡️ B ➡️ C ➡️ output) 형태를 가진다.
"먼저 ~을 하고, 그 다음 ~를 계산하면, 최종적으로 ~입니다."와 같은 추론 방식.
Few-shot-CoT의 경우 질문과 답변 예시를 적는다. Automatic Chain-of-Thought (Auto-CoT, https://arxiv.org/abs/2210.03493)는 프롬프트에 추가할 질문과 답변도 모델에게 스스로 만들고 추가하게 하는 것이다. 질문 데이터셋에서 비슷한 유형의 질문끼리 그룹(클러스터)를 묶어, 각 그룹에서 대표 질문을 하나씩 뽑아 사용한다. 이것을 클러스터링 한다고 함.
뽑힌 질문들에대해 "Let`s think step by step" 차근차근 생각해보자 라는 문구를 붙여 답변을 생성하게 한다.
하나의 통일된 추론 방식만 가질 수 있다는 것이 CoT의 한계점이다. 그래서 나온 Tree-of-Thought 프롬프트 방식!
Tree-of-Thought (사고의 나무-ToT)

언어모델이 생각을 생성하고 평가하는 능력은 탐색 알고리즘(예: BFS, DFS)과 결합되어, 선제적 탐색과 백트래킹이 가능한 생각의 체계적인 탐색을 가능하게 한다.
음,,, 뭔말이냐? LLM이 여러 경우를 스스로 검토해서 최적의 길을 찾아가는 방식. 가지치기와 되돌아오기(백트래킹)가 가능함.
중간 단계에서 여러 경우의 후보를 만들고, LLM 스스로 정답과 어떤 방향이 맞는지 판단한다. 탐색 알고리즘을 사용하여 가장 좋은 경로를 선택하거나 이전 단계로 돌아온다.
from langchain_openai import ChatOpenAI
from langchain.schema import HumanMessage
class LLMWrapper:
def __init__(self, model_instance):
self.model = model_instance
def generate_candidates(self, question, n=3):
# 1. 모델에게 "N개의 서로 다른 해결책을 제시해줘"라는 프롬프트를 보냅니다.
prompt = f"질문: {question}\n이 문제를 해결하기 위한 서로 다른 전략 {n}가지를 리스트 형식으로 써줘."
# 2. 모델로부터 응답을 받습니다.
response = self.model.invoke([HumanMessage(content=prompt)])
# 3. 텍스트로 온 답변을 파싱해서 리스트 ["전략1", "전략2", "전략3"]로 반환합니다.
candidates = [c.strip() for c in response.content.strip().split('\n') if c.strip()]
return candidates[:n]
def evaluate(self, thought):
# ToT의 핵심: LLM이 스스로 점수를 매기게 함 (Self-Evaluation)
prompt = f"다음 생각의 타당성을 1점부터 10점 사이로 평가하고 숫자만 대답해줘.\n생각: {thought}"
response = self.model.invoke([HumanMessage(content=prompt)])
try:
# 숫자만 추출해서 반환
return int(''.join(filter(str.isdigit, response.content)))
except:
return 0 # 파싱 실패 시 0점
def invoke(self, question):
# 후보 생성
thoughts = generate_candidates(question, n=3) # ["전략1", "전략2", "전략3"]
# 점수 평가
scored_thoughts = []
for t in thoughts:
# 각 생각의 타당성 평가 (Self-Evaluation)
score = self.evaluate(t)
scored_thoughts.append((t, score))
if not scored_thoughts:
return "답변을 생성할 수 없습니다."
# 점수가 높은 상위 1개의 생각만 남기고 다음 단계로 진행 (Pruning)
best_thought = max(scored_thoughts, key=lambda x: x[1])[0]
return best_thought
###### 실행 단계 ######
# 이것이 코드에서의 'llm' 객체가 됩니다.
llm = ChatOpenAI(
model="gpt-4o",
temperature=0.7,
api_key="your_api_key"
)
llm_wrapper = LLMWrapper(llm)
response = llm_wrapper.invoke("이번달 삼성전자 매수에대한 가장 좋은 전략은?")
Generated Knowledge Prompting(GKP)
질문과 연관된 지식을 LLM에게 가져오라고 해서 가져온 정보와 질문을 함께 생성 프롬프트에 추가하는 방식. 이 때, 가져온 정보는 이미 학습되어있는 정보에서 가져오게 된다. (RAG는 내가 지정한 외부 정보에서도 가져올 수 있도록 하는 것.) 모델 스스로 '이 주제에 대한 이런 정보들을 알고 있었지'라고 알게 해주는 것.
질문이 너무 짧거나 복잡하면 의도에 맞는 답변을 하지 못하는 경우를 방지할 수 있음.
"이 질문에대해 분석하고, 대답에 필요한 배경지식을 먼저 정리해줘. 정리된 지식들을 프롬프트에 추가하고 질문에 답변해"

Graph of Thought (GoT)
CoT와 ToT에서 한 단계 더 나아간 개념으로 그래프(Graph) 형태로 구조화한다.
비선형(Non-Linear) 구조 ➡️ 트리 구조를 벗어나 노드들이 서로 병합하고 순환될 수 있다.
정답이 뚜렷한 경우 ToT가 유리하지만, 신제품 기획이나 보고서 작성, 코드 리뷰 같은 정답이 없는 경우에는 GoT가 유리하다.

https://arxiv.org/abs/2308.09687
Graph of Thoughts: Solving Elaborate Problems with Large Language Models
We introduce Graph of Thoughts (GoT): a framework that advances prompting capabilities in large language models (LLMs) beyond those offered by paradigms such as Chain-of-Thought or Tree of Thoughts (ToT). The key idea and primary advantage of GoT is the ab
arxiv.org
https://github.com/spcl/graph-of-thoughts
GitHub - spcl/graph-of-thoughts: Official Implementation of "Graph of Thoughts: Solving Elaborate Problems with Large Language M
Official Implementation of "Graph of Thoughts: Solving Elaborate Problems with Large Language Models" - spcl/graph-of-thoughts
github.com
'AI' 카테고리의 다른 글
| AI에서 화이트박스와 블랙박스🤖⁉️ (0) | 2025.11.04 |
|---|---|
| 의사결정나무(Decision Tree) + ID3 알고리즘 (1) | 2025.10.16 |
| [AI] 아나콘다 패키지 목록 중 많이 사용하는 라이브러리 (0) | 2025.09.02 |
