15분 만에 첫 AI 에이전트 만드는 법
프레임워크도, 강의도, 박사 학위도 필요 없습니다. 필요한 것은 Node.js, Anthropic SDK, 그리고 25줄의 TypeScript뿐입니다. 이 튜토리얼은 실제로 작동하는 에이전트—같은 세션 안에서 Cloudflare에 배포할 수 있는 구조화된 콘텐츠 요약기—를 만듭니다. 유일한 전제 조건은 무료 API 키입니다.
매주 수요일. 28,400명+ 구독자. 핵심만.
✓ 받은편지함을 확인하세요 — 확인 링크를 클릭해 가입을 완료하세요.
✓ 구독이 완료되었습니다!
✓ 이미 목록에 있습니다.
목차
2026년 6월 업데이트.
TL;DR: 프레임워크도, 강의도, 박사 학위도 필요 없습니다. 필요한 것은 Node.js, Anthropic SDK, 그리고 25줄의 TypeScript뿐입니다. 이 튜토리얼은 실제로 작동하는 에이전트—같은 세션 안에서 Cloudflare에 배포할 수 있는 구조화된 콘텐츠 요약기—를 만듭니다. 유일한 전제 조건은 무료 API 키입니다.
[운영자의 시각] AI로 자동화하고 싶어 하는 창업자들에게서 가장 자주 듣는 말은 “먼저 더 배워야 한다”입니다. 그럴 필요 없습니다. 에이전트 패턴은 단순하고, 그것을 이해하는 가장 빠른 방법은 직접 하나 만들어 보는 것입니다. 오늘 제가 처음부터 시작한다면 택할 정확한 경로를 소개합니다.
왜 대부분의 “AI 에이전트 만들기” 튜토리얼은 도움이 되지 않는가
그것들은 Python을 사용하거나(ML 엔지니어에게는 괜찮지만 그 외 모두에게는 마찰이 됩니다), LangChain 같은 프레임워크 뒤에 실제 코드를 숨기거나, 실제 업무에 연결하기에는 너무 추상적인 것을 만듭니다.
이 튜토리얼은 세 가지를 다르게 합니다.
- TypeScript만 사용 — JavaScript를 써 본 적이 있다면 이것을 따라올 수 있습니다
- 프레임워크 없음 — 모델에 닿는 모든 코드 줄을 보게 됩니다
- 유용한 결과물 — 고객 이메일, 리뷰, 회의 메모에 실제로 사용할 수 있는 구조화된 요약기를 만듭니다
무엇을 만드는가
콘텐츠 요약 에이전트: 어떤 텍스트 블록이든 붙여 넣으면 일관된 형식의 구조화된 요약이 돌아옵니다. HTTP 요청 하나가 들어가고, 깔끔한 요약 하나가 나옵니다.
이것을 첫 프로젝트로 삼는 이유: 이 패턴—시스템 프롬프트 + 사용자 입력 → 구조화된 출력—은 제가 운영하는 모든 에이전트의 토대입니다. 시스템 프롬프트만 바꾸면 질문 응답기, 어조 재작성기, 분류기, 초안 생성기가 됩니다. 이것을 한 번 익히면 프로덕션 에이전트가 실제로 하는 일의 80%를 배운 셈입니다.
사전 준비물 (2분)
- Node.js 18 이상 —
node --version으로 확인하세요. 필요하면 nodejs.org에서 설치하세요. - Anthropic API 키 — Claude에서 가입하고 콘솔에서 키를 받으세요. 무료 티어로 작동합니다.
- 터미널과 텍스트 편집기.
Docker 없음. 가상 환경 없음. pip install도 전혀 없음.
1단계: 프로젝트 생성 (2분)
mkdir my-first-agent && cd my-first-agent
npm init -y
npm install @anthropic-ai/sdk
npm install -D tsx typescript에이전트를 쉽게 실행할 수 있도록 package.json에 스크립트를 추가합니다.
{
"scripts": {
"agent": "tsx agent.ts"
}
}2단계: 에이전트 작성 (5분)
agent.ts를 만들고 이것을 붙여 넣으세요.
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY,
});
const SYSTEM_PROMPT = `You are a precise content summarizer. When given any block of text, return a structured summary in this exact format:
**One-line summary:** <the core point in one sentence>
**Key points:**
- <point 1>
- <point 2>
- <point 3 if applicable>
**Action item (if any):** <one concrete next step, or "None">
Be specific. No filler. Under 150 words total.`;
async function summarize(text: string): Promise<string> {
const message = await client.messages.create({
model: "claude-haiku-4-5",
max_tokens: 512,
system: SYSTEM_PROMPT,
messages: [{ role: "user", content: text }],
});
const block = message.content[0];
if (block.type !== "text") throw new Error("Unexpected response type");
return block.text;
}
const sample = `
Hey team — following up on the Q2 review meeting.
We agreed to push the launch to July 15th instead of June 30th
due to the payment integration delay. Marketing needs the new
landing page copy by June 20th or we can't start the email campaign.
Budget for the launch campaign is confirmed at $8,000.
Please confirm receipt.
`;
const result = await summarize(sample);
console.log(result);3단계: 실행하기 (1분)
ANTHROPIC_API_KEY=sk-ant-... npm run agent예상 출력:
**One-line summary:** Launch pushed to July 15th due to payment delay; landing page copy needed by June 20th to unblock email campaign.
**Key points:**
- Launch date moved from June 30th to July 15th
- Landing page copy deadline: June 20th (blocks email campaign)
- Campaign budget confirmed at $8,000
**Action item (if any):** Confirm receipt and deliver landing page copy by June 20th.이것이 작동하는 AI 에이전트입니다. 실제 입력, 맞춤 시스템 프롬프트, 구조화된 출력. 전체가 30줄의 코드입니다.
4단계: 당신의 사용 사례에 맞게 커스터마이즈하기
시스템 프롬프트는 이 에이전트를 당신만의 것으로 만드는 유일한 요소입니다. 바로 끼워 넣어 쓸 수 있는 세 가지 대안을 소개합니다.
고객 리뷰 분류기:
Classify this customer review as POSITIVE, NEGATIVE, or MIXED.
Then extract the main complaint or praise in one sentence.
Format: SENTIMENT: <label>
RESUME: <one sentence>회의록 → 액션 아이템:
Extract all action items from this meeting transcript.
Format each as: [OWNER if mentioned] [ACTION] by [DEADLINE if mentioned]
If owner or deadline is not stated, leave those fields blank.
Return a numbered list. No preamble.소셜용 어조 재작성기:
Rewrite this text in a direct, confident, first-person tone for LinkedIn.
Remove hedging language ("I think", "maybe", "sort of").
Keep it under 200 words. Return only the rewritten text, no commentary.이들은 모두 시스템 프롬프트만 다른 동일한 30줄짜리 에이전트입니다. 각각을 위한 새 프로젝트가 필요하지 않습니다—SYSTEM_PROMPT만 업데이트하고 다시 실행하면 됩니다.
5단계: 프로덕션에 배포하기
로컬 스크립트는 프로토타입입니다. 프로덕션 에이전트는 일정에 따라, 또는 이벤트에 반응하여 실행됩니다. 제가 사용하는 경로: Cloudflare Workers.
Workers는 하루 10만 요청까지 무료이고, 수 초 만에 배포되며, 어떤 인프라도 관리하지 않고 cron 트리거, KV 저장소, 큐를 제공합니다.
Wrangler를 설치하고 Worker 골격을 만듭니다.
npm install -g wrangler
wrangler init my-agent-worker --template worker-typescript
cd my-agent-worker
npm install @anthropic-ai/sdkAPI 키를 시크릿으로 저장합니다(절대 코드에 넣지 마세요).
wrangler secret put ANTHROPIC_API_KEYsrc/index.ts를 다음으로 교체합니다.
import Anthropic from "@anthropic-ai/sdk";
export default {
async fetch(request: Request, env: Env): Promise<Response> {
const { text } = await request.json<{ text: string }>();
const client = new Anthropic({ apiKey: env.ANTHROPIC_API_KEY });
const message = await client.messages.create({
model: "claude-haiku-4-5",
max_tokens: 512,
system: YOUR_SYSTEM_PROMPT,
messages: [{ role: "user", content: text }],
});
const block = message.content[0];
if (block.type !== "text") return Response.json({ error: "Bad response" }, { status: 500 });
return Response.json({ summary: block.text });
},
};배포합니다.
wrangler deploy이제 https://my-agent-worker.<your-subdomain>.workers.dev에 라이브 API 엔드포인트가 생겼습니다. Zapier, Google Sheets 스크립트, 모바일 앱—HTTP 요청을 보낼 수 있는 어디에서나 호출하세요.
다음에 무엇을 만들까
기본 패턴이 작동하기 시작하면 복잡성은 세 가지 형태로 찾아옵니다.
도구 사용 (tool use) — 외부 API를 언제 호출할지 모델이 결정하도록 합니다. 항상 같은 로직을 실행하는 대신, 모델이 입력에 따라 어떤 도구를 호출할지 선택합니다. 이것이 검색하고, 데이터베이스에 쓰고, 알림을 보내는 에이전트를 만드는 방법입니다.
체이닝 (chaining) — 한 에이전트의 출력을 다른 에이전트의 입력으로 넘깁니다. 분류기가 응답기로 라우팅하고, 요약기가 번역기에 공급합니다. 제가 프로덕션에서 운영하는 에이전트 대부분은 단일 호출이 아니라 2~3단계 체인입니다.
cron 트리거 — wrangler.toml에 [triggers] crons = ["0 8 * * *"]를 추가하면 에이전트가 일정에 따라 실행됩니다. 폴링도, 항상 켜져 있는 서버도 필요 없습니다. 이것이 제가 이 사이트를 운영하는 데 사용하는 콘텐츠 파이프라인의 작동 방식입니다.
세 가지 패턴 모두를 완전한 TypeScript 코드와 함께 프로덕션에서 30개 이상의 에이전트를 운영하는 데 사용하는 에이전트 스택에서 다루었습니다—그 글은 이 글이 끝나는 지점에서 이어집니다.
운영자의 결론
“에이전트를 만들까 생각하는” 상태와 “배포된 에이전트를 갖는” 상태 사이의 간극은 약 15분과 30줄의 코드입니다. 시스템 프롬프트가 곧 제품입니다—프레임워크 선택이 아니라 거기에 에너지를 쏟으세요. 에이전트가 주당 1시간을 절약해 준다면 그것은 연간 50시간입니다. 먼저 단순한 버전을 만들고, 그것이 제값을 하는지 확인한 다음, 사용 사례가 요구할 때만 복잡성을 더하세요.
매주 수요일. 28,400명+ 구독자. 핵심만.
✓ 받은편지함을 확인하세요 — 확인 링크를 클릭해 가입을 완료하세요.
✓ 구독이 완료되었습니다!
✓ 이미 목록에 있습니다.
AI 플레이북을 받아보세요
매주 수요일. 28,400명+ 구독자. 핵심만.
받은편지함을 확인하세요.
확인 이메일을 보냈습니다 — 링크를 클릭해 구독을 완료하세요. 1분 안에 보이지 않으면 스팸함을 확인하세요.
구독이 완료되었습니다.
환영합니다 — 다음 호가 곧 받은편지함에 도착합니다.
이미 목록에 있습니다 — 매주 수요일에 확인하세요.