Deep Agents를 활용하여 기업 실사(Due Diligence) 에이전트 구축하기
요약
본 쿡북은 Deep Agents와 LangChain의 오케스트레이션, 그리고 Parallel의 Task API를 결합하여 기업 실사(Due Diligence) 자동화 에이전트를 구축하는 방법을 안내합니다. 이 시스템은 법인 구조, 재무 건전성, 규제 이슈 등 다단계 조사 트랙을 병렬로 수행하고, 발견된 정보를 바탕으로 계획을 수정하며 최종 보고서를 작성할 수 있습니다.
핵심 포인트
- Deep Agents를 활용하여 복잡한 기업 실사 워크플로우 자동화 가능
- 다양한 서브에이전트가 독립적으로 병렬 조사(fan-out) 수행
- 발견된 정보에 따라 다음 조사 계획을 동적으로 수정하는 적응성 구현
- 구조화된 보고서 작성 시 출처 추적 및 신뢰 점수 제공
에이전트 오케스트레이션과 구조화된 웹 지능을 통해 다단계 회사 조사를 자동화하세요.
기업 실사(Company due diligence)는 금융 서비스 전반에서 나타나는 워크플로우입니다. 사모펀드(PE) 분석가들은 거래를 검토하고, 은행 신용팀은 차입자를 평가하며, 컴플라이언스팀은 새로운 법인을 온보딩하고, 보험 인수자들은 상업 정책 보유자를 평가합니다. 이러한 조사는 일관된 패턴을 따릅니다. 회사를 선정하여 여러 차원에서 조사하고, 모든 주장에 출처 추적(source trail)이 가능한 구조화된 인텔리전스 보고서를 작성하는 것입니다.
본 쿡북은 LangChain의 Deep Agents를 오케스트레이션에, Parallel의 Task API를 웹 리서치에 결합하여 이 워크플로우를 자동화하는 에이전트를 구축합니다. Deep Agents는 계획 수립(planning), 서브에이전트 위임(subagent delegation), 그리고 컨텍스트 관리(context management)를 처리합니다. Parallel은 실제 조사를 담당하며, Basis를 통해 필드별 인용(citation), 추론 경로(reasoning traces), 그리고 보정된 신뢰 점수(calibrated confidence scores)와 함께 구조화된 조사 결과를 반환합니다. 한 트랙에서 얻은 결과가 새로운 질문을 제기할 때, Parallel의 인터랙티브 리서치 기능은 에이전트가 이전 조사 스레드의 전체 컨텍스트를 가지고 후속 질의를 연결하도록 합니다.
개요 (Overview)
이 에이전트는 5개의 연구 트랙을 오케스트레이션하며, 각 트랙은 전담 서브에이전트에 의해 처리됩니다:
기업 프로필(Corporate profile) — 법인 구조, 주요 임원, 설립 역사, 인원수, 사무실 위치
재무 건전성(Financial health) — 자금 조달 이력, 매출 신호, 가치 평가 지표, 수익성 마커
소송 및 규제(Litigation and regulatory) — 소송, SEC 제출 서류, 제재 심사, 규제 조치, 합의
뉴스 및 평판(News and reputation) — 최근 언론 보도, 리더십 변화, 논란 플래그, 미디어 감성
경쟁 환경(Competitive landscape) — 상위 3개 직접 경쟁업체와 대상 기업의 포지셔닝을 식별합니다.
competitive-landscape가 이름 목록을 반환하면, 오케스트레이터는 별도의 competitor-analysis를 전송합니다.
subagent는 경쟁사별로(once per competitor) 병렬로 실행됩니다. 이는 전형적인 Deep Agents의 팬아웃(fan-out) 구조이며, 각 인스턴스는 독립된 컨텍스트에서 실행됩니다. 그런 다음 오케스트레이터가 모든 작업 문서를 읽고, 모순점이나 신뢰도가 낮은 발견 사항을 교차 참조하며, 불일치가 발생하면 Parallel의 Search API를 통해 임시 조회를 수행하고, 위험 플래그와 인용 추적(citation trails)이 포함된 최종 보고서를 작성합니다.
DD는 이러한 다단계 아키텍처가 필요한데, 그 이유는 초기 발견 사항이 다음에 조사해야 할 내용을 변경하기 때문입니다. 만약 기업 프로필을 통해 대상 회사가 자회사임이 밝혀지면, 재무 분석은 모회사를 포함해야 합니다. 소송 검색에서 SEC 조사가 발견되면, 위험 평가 자체가 바뀝니다. Deep Agents의 플래닝 도구는 발견 사항이 연구 계획을 변경할 때 오케스트레이터가 적응하도록 돕습니다.
각 연구 트랙은 pro-fast 프로세서 Task API 호출을 사용합니다. Rivian Automotive (NASDAQ: RIVN)에서 엔드투엔드로 검증되었으며, 약 23분 동안 9번의 호출이 이루어졌습니다. 현재 요금은 Parallel 가격 정책을 참조하십시오.
구현 방법(Implementation)
uv pip install deepagents langchain-parallel langchain-anthropic
export ANTHROPIC_API_KEY="your-anthropic-api-key"
export PARALLEL_API_KEY="your-parallel-api-key"
병렬 연구 도구 정의하기(Defining the Parallel research tools)
두 가지 도구를 정의합니다. 첫 번째는 Basis 인식 기반의 신뢰도 처리와 구조화된 조사를 위해 Parallel의 Task API를 래핑합니다. 두 번째는 합성 과정 중 빠른 사실 조회용으로 LangChain 통합의 웹 검색 도구를 사용합니다.
from typing import Optional
from langchain_core.tools import tool
from langchain_parallel import (
...
이 도구는 단순한 API 호출 외에 세 가지 기능을 수행합니다. 필드별 인용(per-field citations)과 신뢰도가 낮은 모든 필드의 이름을 추출하기 위해 parse_basis(result)를 호출합니다. 그리고 이 이름들을 도구의 반환 값으로 명시적인 low_confidence_warning으로 노출하여, 호출하는 subagent의 추론 루프가 후속 조사를 체인할지 결정할 수 있게 합니다. 또한 interaction_id도 반환합니다.
따라서 체인된 호출은 previous_interaction_id를 통해 동일한 리서치 스레드에 연결될 수 있습니다.
리서치 서브 에이전트 정의하기
각 리서치 트랙은 전문화된 시스템 프롬프트와 research_task 도구 접근 권한을 가진 자체 서브 에이전트를 갖습니다.
corporate_profile_subagent = {
"name": "corporate-profile",
"description": "기업 구조, 리더십, 설립 역사 및 인원수 조사"
...
다른 Phase-1 서브 에이전트들(financial-health, litigation-regulatory, news-reputation, competitive-landscape)은 자체 집중 프롬프트를 가지고 동일한 형태를 따릅니다. 전체 세트는 agent.py에 있습니다.
Phase-2 팬아웃(fan-out) 서브 에이전트는 competitive-landscape가 식별한 경쟁업체당 한 번 호출됩니다:
competitor_analysis_subagent = {
"name": "competitor-analysis",
"description": "명시된 단일 경쟁업체에 대한 집중 프로필 작성"
...
오케스트레이터 에이전트 생성하기
메인 에이전트는 서브 에이전트를 조정하고, 모순점을 찾아 검토하며, 최종 보고서를 작성합니다. 작업 문건(workpapers)과 최종 메모가 에이전트 상태와 함께 사라지는 대신 ./reports/ 디스크에 영구 저장되도록 FilesystemBackend로 백업합니다.
from pathlib import Path
from deepagents import create_deep_agent
from deepagents.backends.filesystem import FilesystemBackend
...
에이전트 실행하기
result = agent.invoke({
"messages": [{
"role": "user",
...
실행 진행 상황 스트리밍하기
장시간의 실사(diligence) 실행을 위해, 에이전트의 진행 상황을 스트림으로 받아 계획 수립, 도구 호출 및 서브 에이전트 활동을 실시간으로 확인할 수 있습니다. subgraphs=True를 전달하여 서브 에이전트 내부 실행으로부터 이벤트를 받으세요.
for chunk in agent.stream(
{"messages": [{"role": "user", "content": "Rivian Automotive에 대한 전체 실사 보고서 작성"}]},
stream_mode="updates",
...
LangSmith를 이용한 관측 가능성(Observability)
FSI에서 관측 가능성이 중요한 이유
LangSmith를 이용한 관측 가능성(Observability)
FSI에서 관측 가능성이 중요한 이유
금융 서비스 산업(FSI)에서는 규제 기관, 감사관, 리스크 팀 등이 기업들이 AI 지원 출력물이 어떻게 생성되었는지 재구성할 것을 점점 더 기대하고 있습니다. 특히 이러한 출력물이 중대한 비즈니스 결정에 영향을 미칠 경우 더욱 그렇습니다. 6개월 후, 내부 감사관, 컴플라이언스 검토자, 모델 리스크 팀, 투자 위원회 또는 규제 기관은 AI 지원 실사 메모가 어떻게 생성되었는지 물어볼 수 있습니다. 어떤 출처들이 각 중대한 결론에 정보를 제공했습니까? 어떤 신뢰도가 부여되었습니까? 인간의 검토나 재정의(override)는 어디서 이루어졌습니까? 에이전트의 프로세스가 재구성하기에 충분히 기록되었습니까? FSI에서 “에이전트가 답을 주었다”라는 것은 방어 가능한 통제 태세가 아닙니다.
에이전트는 비결정성(non-determinism) (LLM 출력, 프롬프트 민감도, 공개 웹)을 증폭시키고, 실제 웹 리서치에 실질적인 비용을 지출하며, 결국 규제 기관이 감사할 수 있는 메모로 끝납니다. 모든 주장은 명시적인 신뢰 레이블과 함께 기본 출처에 매핑되어야 하며, 이 매핑은 실행이 완료된 몇 달 후에도 감사 가능하게 유지되어야 합니다. 에이전트가 프로덕션 단계에 도달하면, 그 실패의 대부분도 거기서 드러나는데, 이는 출시 전 테스트로는 거의 포착되지 않는 곳입니다. 트레이스(trace)는 실행을 거쳐 살아남는 아티팩트입니다.
이것이 FSI에서 트레이스가 특히 중요한 이유입니다:
로깅(Logging)은 점차 의무화되고 있습니다. EU AI Act는 고위험 AI 시스템에 대한 자동 이벤트 로깅을 요구하며, 미국 은행 규제 기관들은 공식적인 범위가 아직 확정되지 않은 경우에도 실질적으로 AI 에이전트에 모델 위험 관리 기대치를 적용하고 있습니다. 트레이스(trace)는 이 두 프레임워크가 모두 고려하는 아티팩트입니다.결정 설명 가능성에는 클레임별 근거 제시가 필요합니다. AI 입력이 소비자 신용, 투자 추천 또는 수탁 의무의 대상이 되는 모든 프로세스와 같은 규제된 결정에 사용될 때, 기관은 해당 입력이 어떻게 형성되었는지 설명해야 합니다. 베이스 페이로드(basis payload)(소스 URL 및 출력별 신뢰도)가 실행 몇 달 후에 그 설명을 재현 가능하게 만드는 요소입니다.서드파티 AI는 지속적인 감독을 필요로 합니다. 이 스택은 외부 모델 제공업체와 외부 리서치 API(Parallel)를 사용합니다. 트레이스는 각 제공업체에 무엇이 전송되었는지, 무엇이 돌아왔는지, 그리고 이러한 출력이 최종 메모에 어떻게 영향을 미쳤는지를 기록하여 이슈 조사 및 벤더 감독을 지원합니다.운영 복원력은 빠른 근본 원인 분석에 달려 있습니다. 에이전트 실패가 중대한 운영 중단 또는 보고 가능한 ICT 사고에 기여하는 경우, 트레이스는 팀에게 재구축, 개선 및 보고를 위한 구체적인 출발점을 제공합니다.### 오늘날 규정 준수와 감사는 어떻게 작동하는가FSI(금융 서비스 산업) 팀들은 이미 리서치 메모가 어떻게 생성되었는지 증명하는 시스템을 가지고 있습니다: 분석가 작업 문서(workpapers), 인용 목록, 소스 승인, 버전 기록 및 규정 준수 검토. 그 모델은 분석가가 책임의 단위이기 때문에 작동합니다. 심사관, 감사자 또는 규정 준수 검토자가 결론에 어떻게 도달했는지 물어볼 때, 분석가는 작업 문서와 인용 자료로 최종 결과물을 뒷받침하며 추론 과정을 설명할 수 있습니다. AI 에이전트는 그 모델을 변화시키고 있습니다.
“분석가(analyst)”는 더 이상 단순히 사람을 의미하지 않습니다. 그것은 LLM 호출, 도구 사용(tool invocations), 검색된 출처(retrieved sources), 중간 출력물(intermediate outputs), 그리고 상태 전환(state transitions)으로 구성된 그래프입니다. 이러한 단계들이 런타임에 포착되지 않는다면, 최종 메모는 남아 있을 수 있지만, 그것을 생성한 과정은 나중에 재구성하기 어려운 로그, 컨텍스트 창(context windows), 그리고 공급업체 호출 속으로 사라질 수 있습니다. 트레이스(trace)가 첨부 지점(attach point)을 복원합니다. 이는 기계 측의 작업 문서(machine-side workpaper)가 됩니다: 어떤 출처들이 각 주요 결론에 정보를 제공했는지, 얼마나 높은 신뢰도(confidence)가 부여되었는지, 어떤 도구들이 호출되었는지, 인간 검토가 어디에서 이루어졌는지, 그리고 최종 결과물이 어떻게 생성되었는지를 검사할 수 있는 기록입니다.
LangSmith가 포착하는 것
LangSmith는 Deep Agents의 모든 단계와 이 에이전트 내의 모든 ParallelTaskRunTool 호출을 기록합니다: 서브에이전트가 구성한 프롬프트, Parallel이 반환한 URL들, 신뢰도를 포함한 기본 페이로드(basis payload), 그리고 구조화된 발견 사항들이며, 이 과정에서 에이전트 코드는 변경되지 않습니다. 또한 각 실행은 모든 모델 호출, 도구 호출, 서브에이전트를 거치는 노드별 비용으로 세분화되어, 어떤 단계가 토큰과 시간의 어느 부분을 주도했는지 정확히 볼 수 있습니다. 두 실행 간의 비용 차이가 매우 클 경우, 트레이스는 그 차이가 서브에이전트 추론 과정, 추가적인 Parallel 호출, 또는 최종 합성(synthesis) 패스 중 어디에서 발생하는지 보여줍니다.
트레이스가 보여주는 것
어떤 실행을 열면 가장 먼저 오케스트레이터의 계획을 볼 수 있습니다: 어떤 서브에이전트가 실행되기 전에 연구 전략을 제시하는 4단계 TODO입니다.

실행 시작 시 write_todos를 통해 생성된 오케스트레이터의 4단계 계획.
1단계에서는 다섯 개의 연구 서브에이전트를 병렬로 배포합니다: corporate-profile, financial-health, litigation-regulatory, news-reputation, 그리고 competitive-landscape. 각 서브에이전트는 디스패치 도구 호출에서 평이한 영어로 설명된 집중적인 임무를 받습니다. 해당 task 중 어느 곳을 클릭하더라도
트레이스(trace) 내의 노드와 해당 서브에이전트가 정확히 무엇을 수행하고 있는지 확인할 수 있습니다. 즉, 발급한 프롬프트(prompt), 실행한 병렬 호출(Parallel calls), 그리고 반환된 출처를 볼 수 있습니다.

Phase 1 fan-out: 다섯 개의 리서치 서브에이전트가 병렬로 배포됩니다.
Phase 1이 완료된 후, 오케스트레이터(orchestrator)는 경쟁사별 분석(Phase 2), 모순점을 찾기 위해 작업 문서들을 교차 참조(Phase 3), 그리고 최종 메모를 종합합니다(Phase 4). 모든 도구 호출은 이 과정에서 기록됩니다.
임의 서브에이전트의 research_task를 선택하면, Parallel이 반환한 전체 구조화된 결과물(structured findings)을 볼 수 있습니다. 작업 문서에 포함되는 요약 내용 외에도 모든 필드, 모든 발췌문, 그리고 모든 URL이 포함됩니다.

서브에이전트의 research_task 출력: Parallel이 반환한 구조화된 결과물.
인용과 신뢰도 (Citations and confidence)
컴플라이언스 검토자(compliance reviewer)에게 중요한 부분은 parallel_task_run 내부의 기반 페이로드(basis payload)입니다. Parallel은 각 출력에 출처 URL, 신뢰도 레이블(높음/보통/낮음), 그리고 답변이 어떻게 구성되었는지 설명하는 한 줄 분량의 추론 트레이스(reasoning trace)를 첨부합니다.

기반 페이로드: 출처 URL, 신뢰도 레이블, 및 추론 트레이스.
위에서 보여준 Rivian 기업 프로필 호출에서, 에이전트의 medium
AI 자동 생성 콘텐츠
본 콘텐츠는 LangChain Blog의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기