기업용 LinkedIn 페이지를 위한 멀티 에이전트 AI 구축 - 파트 6: Brief Agent 구축하기
요약
멀티 에이전트 시스템에서 작성 에이전트의 부담을 줄이기 위해 정보를 구조화하는 Brief Agent 구축 방법을 설명합니다. 조사된 데이터와 비판 지점을 하나의 콘텐츠 브리프(Content Brief)로 통합하여 일관된 결과물을 생성하는 과정을 다룹니다.
핵심 포인트
- Brief Agent를 통해 작성 에이전트의 의사결정 복잡도 감소
- Pydantic을 활용하여 에이전트 간 데이터 구조의 일관성(Contract) 보장
- 주제, 조사 내용, 예시, 비판 지점을 하나의 구조화된 JSON으로 패키징
- 시스템 프롬프트와 데이터 검증을 통한 안정적인 워크플로우 구축
이제 우리의 시스템은 주제를 분류하고, 조사를 수행하며, 예시를 통해 뒷받침하고, 약한 가정(weak assumptions), 근거 없는 주장(unsupported claims), 그리고 부적절한 예시(irrelevant examples)를 식별한 뒤 모든 정보를 작성 에이전트(writing agents)에게 전달할 수 있습니다. 하지만 이 모든 정보를 작성 에이전트에게 직접 전달하면, 에이전트가 한 번에 너무 많은 결정을 내려야 하는 상황이 발생합니다.
그것이 바로 우리가 Brief Agent를 구축한 이유입니다.
Brief Agent는 주제(topic), 조사 조각(research chunks), 예시(examples), 그리고 비판 지점(critique points)을 입력으로 받아 이를 하나의 콘텐츠 브리프(content brief)로 구조화합니다. 이를 통해 작성 에이전트들이 어떤 예시를 사용할지, 어떤 관점(angle)을 취할지, 어떤 통계(statistic)를 강조할지, 혹은 어떤 뉘앙스(nuance)를 인정해야 할지를 직접 결정할 필요가 없게 만듭니다.
Topic
│
Research Chunks
...
코드를 작성하기 전에, 시스템 프롬프트(system prompt)를 작성해 보겠습니다. 저는 에이전트에게 조사 내용, 예시 또는 비판 내용을 다시 작성하지 말라고 명시적으로 지시했습니다. 에이전트의 역할은 결정을 내리고, 정보를 정리하며, 구조화된 JSON 객체를 반환하는 것입니다.
SYSTEM_PROMPT = """
Create a structured content brief.
...
실제 프로덕션 프롬프트는 훨씬 더 길지만, 핵심 규칙을 강조하기 위해 여기서는 축약했습니다.
지금까지 에이전트들은 정보를 수집하는 역할을 담당했습니다. Brief Agent는 이 정보를 가지고 무엇을 해야 할지 계획하고, 작성 에이전트들이 사용할 수 있도록 정보를 잘 구조화하는 역할을 담당합니다.
모든 후속 작성 에이전트가 이 출력값에 의존하기 때문에, 저는 구조가 항상 일관되도록 보장하고 싶었습니다. 여기서 Pydantic이 등장합니다.
class ContentBrief(BaseModel):
angle: str
key_stat: str
...
이것을 Brief Agent와 작성 에이전트 사이의 계약(contract)이라고 생각하면 됩니다.
user_message = (
f"TOPIC: {cleaned_topic}\n\n"
"RESEARCH_CHUNKS:\n"
...
사용자 메시지(user message)는 주제, 조사 조각, 예시 및 비판 지점으로 구성됩니다. 모든 작성 에이전트가 이 컨텍스트(context)를 매번 다시 수집하는 대신, Brief Agent가 모든 것을 하나의 입력값으로 패키징합니다.
Topic
│
Research
...
따라서 전체 함수를 코딩하기 전에, 정확히 어떤 일이 일어나는지 세부적으로 살펴보겠습니다. 이 함수는 먼저 주제(topic)를 정제하고, 이전 모든 에이전트의 출력값을 포함하는 사용자 메시지(user message)를 생성하며, 시스템 프롬프트(system prompt)와 함께 LLM을 호출합니다. 그 후 마크다운 구분 기호(markdown fences)를 제거하고, JSON을 파싱(parse)하며, 마지막으로 ContentBrief 모델을 사용하여 이를 검증(validate)한 뒤 반환합니다.
def create_brief(topic:str, research_chunks: list[str], example: list[str], critique: list[str]) -> ContentBrief|None:
cleaned_topic = clean_topic(topic)
user_message = (
...
이 시점에서 우리의 시스템은 주제를 이해하고, 뒷받침하는 조사 자료를 수집하며, 실제 사례를 찾고, 모든 것을 비판적으로 평가한 뒤, 작성 에이전트(writing agents)에게 전달하기 전에 이 모든 것을 브리프(brief) 형태로 구조화할 수 있습니다.
다음 기사에서는 전체 게시물이 작성되기 전, 구조화된 브리프로부터 여러 개의 훅(hook) 방향을 생성하는 역할을 담당하는 Hook Agent를 구축할 것입니다.
Github Repo: https://github.com/Manav-N4/linkedin-agent#linkedin-agent
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기