콘텐츠 빌더 에이전트 만들기

콘텐츠 빌더 에이전트 만들기

이 가이드는 Deep Agents를 이용해 콘텐츠 작성 에이전트를 처음부터 만들어 볼게요. 이 에이전트는 파일 읽기·쓰기를 위한 파일시스템 백엔드, 검색과 이미지 생성을 위한 커스텀 툴, 그리고 브랜드 톤을 지키기 위한 메모리까지 갖춘 실제 업무용 구조예요.

출처: 공식문서

개요

만들 에이전트는 이렇게 동작해요. 브랜드 목소리와 리서치 기대치는 AGENTS.md를 메모리로 로드해 매 실행마다 적용하고, 리서처 서브에이전트는 Tavily 검색을, 블로그·소셜 작업은 Gemini 이미지 생성을 사용해요. 핵심 개념은 장기 메모리, 스킬(Skills), 서브에이전트, 파일 읽기·쓰기용 파일시스템 백엔드, 그리고 검색·이미지 생성을 위한 커스텀 이에요.

준비 (Setup)

의존성을 설치해요. bash 환경에서는 pip로, uv 환경에서는 uv init / uv add / uv sync로 설치하면 돼요.

pip install deepagents google-genai pillow pyyaml rich tavily-python langchain
uv init
uv add deepagents google-genai pillow pyyaml rich tavily-python langchain
uv sync

자신의 프로젝트에서는 deepagents를 상위 예시와 맞추기 위해 지원 범위로 고정(pin)하는 걸 권장해요. 예를 들어 >=0.3.5,<0.4.0처럼요.

설정 파일 추가하기

먼저 프로젝트 루트에 AGENTS.md를 만들어요. 나중에 에이전트를 만들 때 이 파일을 memory 파라미터의 일부로 지정하면 이 내용이 시스템 프롬프트에 로드되어 브랜드 목소리와 리서치 기대치가 매 실행마다 적용돼요.

다음으로 skills/ 디렉터리를 만들고 스킬별로 폴더를 만들어요. 각 스킬 폴더에는 YAML frontmatter(name, description)와 스킬에 대한 지침을 담은 SKILL.md 파일이 들어가요.

스크립트 만들기

툴을 추가할게요. 리서처 서브에이전트는 Tavily 검색을 사용하고, 블로그·소셜 워크플로는 Gemini 이미지 생성을 사용해요.

import os
from pathlib import Path
from typing import Literal

import yaml
from langchain.tools import tool

EXAMPLE_DIR = Path(__file__).parent


@tool
def web_search(
    query: str,
    max_results: int = 5,
    ...

이제 create_deep_agent로 딥 에이전트를 만들 때, 메모리 경로, 스킬 디렉터리, 이미지 툴, YAML의 서브에이전트, 그리고 예시 디렉터리(./AGENTS.md 같은 상대 경로가 동작하도록)에 루트를 둔 FilesystemBackend를 전달해요.

return create_deep_agent(
    model="google_genai:gemini-3.6-flash",
    memory=["./AGENTS.md"],
    skills=["./skills/"],
    tools=[generate_cover, generate_social_image],
    subagents=load_subagents(EXAMPLE_DIR / "subagents.yaml"),
    ...
from deepagents.backends import FilesystemBackend


def create_content_writer():
    """Create a content writer agent configured by filesystem files."""
    return create_deep_agent(
        model="anthropic:claude-sonnet-4-6",
        memory=["./AGENTS.md"],
        skills=["./skills/"],
        tools=[generate_cover, generate_social_image],
        subagents=load_subagents(EXAMPLE_DIR / "subagents.yaml"),
        backend=FilesystemBackend(root_dir=EXAMPLE_DIR),
    )

OpenRouter, Fireworks, Baseten, Ollama 등 다른 공급자를 쓸 때는 model만 바꾸면 돼요. 예를 들어 model="openrouter:z-ai/glm-5.2", model="fireworks:accounts/fireworks/models/glm-5p2", model="baseten:zai-org/GLM-5.2", model="ollama:north-mini-code-1.0"처럼요.

전체 코드

Rich 기반 스트리밍 UI를 포함한 완전한 content-builder-agent 예시를 GitHub에서 확인할 수 있어요.

더 알아보기 (Learn more)