블로그로 돌아가기

에이전트 & 자동화가이드

에이전트가 도구를 만들게 하는 프롬프트 작성법: 3가지 부분

도구가 어디에 위치하는지, 무엇을 하는지, 어떤 세부 사항이 고정되는지: DeepSeek의 Creator Mode 예시로 구성한 세 부분 프롬프트와 빌드 세션 비용.

작성자: CheapTokens Team 게시됨읽는 시간 6분

빌드 프롬프트의 세 단계: 도구가 어디에 위치하는지, 무엇을 하는지, 요구 사항
이 페이지의 내용
  1. 실제 프롬프트에서 세 부분이 어떻게 보이는지
  2. 직접 작성하기, 한 부분씩
  3. API로 보내기
  4. 프롬프트 하나로는 거의 충분하지 않은 이유
  5. 빌드 세션 비용
  6. 보내기 전에 확인하기

에이전트에게 "도구를 만들어 줘"라고 요청했더니 앱에 맞지 않는 모호한 결과물이 나왔다면, 해결책은 더 긴 프롬프트가 아니라 세 가지 구체적인 부분으로 구성된 프롬프트입니다: 도구가 어디에 위치하는지, 무엇을 하는지, 반드시 지켜야 할 구체적인 세부 사항. 한 번의 라운드로 끝나지 않을 것도 예상해야 합니다. DeepSeek조차 자사 데모 플러그인 중 일부는 여러 차례의 대화 라운드를 거쳐 다듬어졌다고 밝히고 있습니다.

Harness Creator Mode 데모 영상용 DeepSeek의 프롬프트 모음에 있는 대부분의 프롬프트는 이 세 부분 구조를 보여줍니다. 해당 페이지(DeepSeek의 Creator Mode 프롬프트 모음, 2026년 11월 3일 확인, 페이지에 게시 날짜 없음)에는 일곱 개의 플러그인이 나열되어 있습니다: 유명 랜드마크 3D 갤러리, Transformer 3D 시각화, 픽셀화된 DSH 인터페이스, 포스터 디자인 워크벤치, 영상 편집 워크벤치, 논문 리더, 대화 통계. 사용하려면 프롬프트를 DeepSeek Harness에 붙여넣고 Creator Mode 옵션을 선택하면 됩니다. 각 프롬프트는 영어와 중국어로 제공됩니다.

실제 프롬프트에서 세 부분이 어떻게 보이는지#

해당 페이지의 Transformer 3D 시각화 프롬프트를 예로 들어 보겠습니다. "왼쪽 사이드바 항목이 있는 DeepSeek Harness 플러그인을 생성하라"로 시작합니다. 이것이 첫 번째 부분입니다: 도구가 어디에 위치하는지. 그다음 기능을 설명합니다: Transformer 연산을 설명하는 인터랙티브 3D 시연 게임. 두 번째 부분입니다. 마지막은 잊기 쉽고 나중에 고치기 번거로운 요구 사항으로 끝납니다: 패널 제목과 툴바가 네이티브 macOS 창 버튼과 겹치지 않아야 한다는 것. 세 번째 부분입니다.

페이지의 다른 프롬프트들도 같은 구조를 따르되 차이가 있습니다. 진입점은 다양합니다: 세 개는 왼쪽 사이드바 항목, 두 개는 대화에서 접근하는 지점, 논문 리더는 오른쪽 사이드바입니다. 끝부분에서 구체성이 드러납니다: 다섯 가지 스타일 중 하나는 픽셀화, 또는 기본 페이지 제목이 "Everything is a plugin"인 경우 등입니다. 이것이 따라 할 만한 패턴이며, 차이는 금방 드러납니다:

비교하기

모호한 프롬프트 vs 세 부분

이전

내 대화를 위한 도구를 만들어 줘.

이후

왼쪽 사이드바 항목이 있는 플러그인을 생성하라. 내 대화에 대한 통계를 보여준다: 대화 수, 각 대화의 길이, 가장 바빴던 날. 패널 제목은 창 버튼과 겹치지 않아야 한다.

첫 번째 버전은 에이전트에게 모든 것을 추측하게 남겨둡니다. 어디에 놓일까? 사이드바, 명령어, 별도 창? "내 대화를 위한"이란 무엇을 뜻할까? 두 번째 버전은 에이전트가 물어보기 전에 이런 질문에 답합니다.

빌드 프롬프트의 세 부분: 진입점, 기능, 요구 사항
세 부분으로 구성된 빌드 프롬프트의 골격

직접 작성하기, 한 부분씩#

논문을 읽고 그에 대해 질문할 수 있는 작은 패널을 원한다고 가정해 봅시다. 부분을 순서대로 살펴보세요.

어디에 위치하는지. 한 문장으로, 정확한 위치를 명시하세요: "왼쪽 사이드바 항목이 있는 플러그인", "툴바의 버튼", "메뉴에서 여는 페이지". 이것을 빼먹으면 에이전트가 대신 선택합니다.

무엇을 하는지. 어떻게 만들어지는지가 아니라 무엇을 보고 클릭하는지를 설명하세요. "PDF를 넣으면 왼쪽에는 텍스트가, 오른쪽에는 그것에 대한 채팅이 표시된다." 특별히 프레임워크를 지정할 이유가 없다면 생략하세요.

구체적인 요구 사항. 지난번에 잘못된 것들이 여기에 들어갑니다. 레이아웃 규칙, 겹치면 안 되는 것, 언어, 파일 형식, "네트워크 호출 금지" 같은 제한. 짧고 확인 가능한 줄로. 결과를 보고 요구 사항이 충족되었는지 판단할 수 없다면, 판단할 수 있을 때까지 다시 쓰세요.

종합하면:

text
Create a plugin with a left sidebar entry.
It is a paper reader: I open a PDF, the text is shown
on the left, and a chat about the paper is on the right.
Requirements:
- the panel title must not overlap the window buttons
- the chat answers only from the paper's text
- keep everything in one file

API로 보내기#

Creator Mode는 DeepSeek Harness의 기능이며, 프롬프트 자체는 일반 텍스트이므로 프롬프트를 읽는 무엇이든 실행할 수 있습니다. CheapTokens API를 호출하는 스크립트도 포함됩니다. 아래 프롬프트는 위의 프롬프트를 DeepSeek-V4-Flash(전체 id deepseek-ai/DeepSeek-V4-Flash-0731, 380K 컨텍스트, 한 답변에 최대 32,768 토큰으로 플러그인 전체를 한 번의 응답에 담을 여유가 있음)로 보낸 것입니다:

python
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.cheaptokens.dev/v1",
    api_key=os.environ["CHEAPTOKENS_API_KEY"],
)

prompt = """Create a plugin with a left sidebar entry.
It is a paper reader: I open a PDF, the text is shown
on the left, and a chat about the paper is on the right.
Requirements:
- the panel title must not overlap the window buttons
- the chat answers only from the paper's text
- keep everything in one file"""

resp = client.chat.completions.create(
    model="deepseek-ai/DeepSeek-V4-Flash-0731",
    messages=[{"role": "user", "content": prompt}],
    max_tokens=8000,
)
print(resp.choices[0].message.content)
print(resp.choices[0].finish_reason, resp.usage)

키는 환경 변수에 넣고 파일에는 절대 넣지 마세요. finish_reason이 length을 출력하면 플러그인이 max_tokens에 의해 잘린 것이므로 한도를 높이세요. 커스텀 프로바이더로 DeepSeek Harness 자체를 설정하는 것은 별개의 작업이며, DeepSeek Harness를 CheapTokens에 연결하기에서 다룹니다. 첫 요청의 기본 사항은 CheapTokens 문서에 있습니다.

프롬프트 하나로는 거의 충분하지 않은 이유#

DeepSeek도 분명히 말합니다: 데모 플러그인 중 일부는 여러 차례의 대화 라운드를 거쳐 다듬어졌으므로, 프롬프트 하나로 영상을 정확히 재현하지 못할 수 있습니다. 시공업자에게 브리핑하는 것과 비슷합니다. 첫 도면으로 방의 대부분을 파악하고, 둘러보면서 "문이 반대쪽으로 열려요"라고 말하는 것입니다.

직접 해보기해보기: 두 번째 라운드에서는 무엇을 말해야 할까?정답 보기

느낌이 아니라 본 것을 말하세요. "제목이 닫기 버튼과 겹칩니다; 오른쪽으로 40 px 옮겨 주세요"는 수정으로 이어집니다. "레이아웃이 이상해요"는 또 다른 추측으로 이어집니다. 각 수정은 다음번을 위한 요구 사항 부분에 한 줄씩 추가됩니다.

각 라운드가 다음 요청에 이력을 추가한다
빌드 세션: 프롬프트, 그리고 이력을 함께 이어가는 수정들

그리고 여기서 비용이 발생합니다. 에이전트는 매 라운드마다 대화를 다시 보내므로(긴 채팅이 더 비싼 이유와 같은 효과), 다섯 번째 라운드는 프롬프트, 이전 네 개의 답변, 지금까지의 모든 코드를 함께 전달합니다.

빌드 세션 비용#

다음은 측정값이 아닌 가정한 세션입니다: 다섯 라운드, 라운드당 약 12,000 토큰 전송(프롬프트, 이력, 현재 코드) 및 약 6,000 토큰 응답. 아래 표는 각 모델의 실시간 CheapTokens 가격을 사용하며, OpenRouter 열은 입력과 출력을 합산한 동일 세션의 총액을 비교하기 위해 있습니다.

모델 요청당 5회 요청 OpenRouter, 5회 요청
GLM-5.3-Flash $0.00048 $0.0024 $0.0045
DeepSeek-V4-Flash $0.00078 $0.0039 $0.0084
MiniMax-M2.7 $0.0015 $0.0075 $0.09

요청당 입력 12,000개 및 출력 6,000개 토큰입니다. 100만 토큰당 가격은 현재 기준이며 당사 요금제에 따라 함께 변경됩니다. OpenRouter 열은 동일한 작업량에 대한 참고 가격을 보여줍니다.

DeepSeek-V4-Flash 한 라운드의 경우 같은 수치로 $0.00078이 됩니다. 플러그인이 더 크다면 이력이 라운드마다 늘어나므로 두 수치를 바꾸고 추정을 다시 실행하세요. 에이전트 비용 추정에 대한 자세한 내용은 AI 에이전트 비용을 추정하는 방법에, 모델 목록은 가격 페이지에 있습니다.

보내기 전에 확인하기#

체크리스트

빌드 프롬프트를 보내기 전에

첫 프롬프트를 작성하고, 돌아온 결과를 읽고, 모든 수정을 다음 버전의 요구 사항에 넣으세요. 두세 번의 세션을 거치면 매번 새 프롬프트에 붙여넣을 짧은 줄 목록이 생기고, 첫 라운드가 의도에 더 가깝게 나올 것입니다. 모든 프롬프트의 기본 습관은 좋은 프롬프트 작성 방법을 참고하세요.