혈액 검사부터 진료 예약까지: LangGraph와 GPT-4를 활용한 자율 건강 에이전트 구축

발행: (2026년 2월 2일 오전 10:10 GMT+9)
8 분 소요
원문: Dev.to

Source: Dev.to

Beck_Moulton

우리는 모두 한 번쯤은 겪어봤을 겁니다: 혈액 검사 결과를 받고, “높음” 혹은 **“낮음”**을 나타내는 무서운 빨간 화살표들을 보면서 즉시 WebMD의 절망적인 구멍에 빠져들죠. 그런데 만약 당신의 AI가 결과를 설명하는 데 그치지 않고, 실제로 전문의를 찾아 예약까지 잡아주는 역할을 한다면 어떨까요?

이 튜토리얼에서는 LangGraph, GPT‑4, 그리고 함수 호출을 활용해 정교한 AI 헬스 에이전트를 구축합니다. 이것은 단순한 챗봇이 아니라, 의료 자동화를 위해 설계된 자율 시스템으로, 데이터 분석과 실제 행동 사이의 격차를 메워줍니다. LLM‑구동 워크플로우를 활용함으로써 임상 데이터에서 의사 일정 예약까지의 여정을 자동화할 수 있습니다.

💡 부가 설명: 이것은 에이전트 워크플로우에 대한 기술적 탐구일 뿐이며, 의료 조언은 반드시 인간 의사와 상의하세요. 의료 AI에 대한 보다 실무에 가까운 패턴을 찾고 있다면, WellAlly Tech Blog에서 고급 사례 연구를 확인해 보세요.

아키텍처: 루프 닫기

전통적인 LLM 체인은 선형이지만, 건강 관련 작업은 종종 순환적이며 상태 관리가 필요합니다. 그래서 우리는 LangGraph를 사용합니다 – 이를 통해 에이전트가 보고서에서 감지된 “비정상”에 따라 상태 머신을 정의하고, 다시 루프를 돌거나, 추가 정보를 검색하거나, 특정 도구를 트리거할 수 있습니다.

시스템 워크플로우

graph TD
    A[Input: Blood Test PDF/Text] --> B{GPT‑4 Analysis}
    B -- Normal --> C[Summarize & Finish]
    B -- Abnormal Findings --> D[Tavily API: Search Specialists]
    D --> E[GPT‑4: Select Best Match]
    E --> F[Google Calendar API: Check Slots]
    F --> G[Confirm & Book Appointment]
    G --> H[Final Report to User]

    style B fill:#f96,stroke:#333,stroke-width:2px
    style G fill:#00ff00,stroke:#333,stroke-width:2px

사전 요구 사항

  • Python 3.10+
  • LangGraph & LangChain – 에이전트 오케스트레이션을 위해
  • OpenAI GPT‑4 API key – 고급 추론 추출을 위해
  • Tavily API – 전문 의료 리소스 검색을 위해
  • Google Calendar API – 일정 관리 로직을 처리하기 위해

단계 1: 에이전트 상태 정의

LangGraph에서 state는 노드 간에 전달되는 유일한 진실의 원천입니다. 우리는 혈액 검사 결과, 식별된 이상 징후, 그리고 추천된 의사를 추적해야 합니다.

from typing import List, TypedDict
from langgraph.graph import StateGraph, END

class AgentState(TypedDict):
    raw_report: str
    abnormalities: List[str]
    specialist_recommendation: List[dict]
    appointment_confirmed: bool
    final_summary: str

단계 2: 분석 노드 (GPT‑4 + Pydantic)

우리는 에이전트가 구조화된 데이터를 추출하도록 하고 싶습니다. 텍스트가 길어지는 것을 방지하기 위해 특정 Pydantic 스키마와 함께 GPT‑4를 사용할 것입니다.

from pydantic import BaseModel, Field

class Finding(BaseModel):
    indicator: str = Field(description="The name of the test, e.g., LDL Cholesterol")
    value: str = Field(description="The numeric value detected")
    status: str = Field(description="High, Low, or Normal")

def analyze_report_node(state: AgentState):
    # Call GPT‑4 with the Findings schema
    # report = state["raw_report"]
    # structured_data = llm.with_structured_output(Finding).invoke(report)

    # Simulating a 'High Glucose' finding
    return {
        "abnormalities": ["High Glucose (120 mg/dL)"],
        "next_step": "search"
    }

단계 3: 도구 통합 (Tavily 및 Google 캘린더)

에이전트가 이상 징후를 감지하면 Tavily API를 호출해 지역 내 내분비학자를 찾고, 이어서 Google Calendar API를 사용해 가능한 시간을 확인합니다.

from langchain_community.tools.tavily_search import TavilySearchResults

def search_specialist_node(state: AgentState):
    search = TavilySearchResults(k=3)
    query = f"Best endocrinologists for {state['abnormalities'][0]} in San Francisco"
    results = search.run(query)
    return {"specialist_recommendation": results}

def book_appointment_node(state: AgentState):
    # In a real app this would use the Google Calendar API:
    # service.events().insert(calendarId='primary', body=event).execute()
    print("🚀 Auto‑booking appointment for next Tuesday at 10:00 AM...")
    return {"appointment_confirmed": True}

Step 4: 그래프 구축

이제 점들을 연결합니다. 조건부 엣지는 이상이 존재할 경우 흐름을 검색 단계로 보내고, 그렇지 않으면 그래프가 종료됩니다.

workflow = StateGraph(AgentState)

workflow.add_node("analyzer", analyze_report_node)
workflow.add_node("searcher", search_specialist_node)
workflow.add_node("scheduler", book_appointment_node)

workflow.set_entry_point("analyzer")

def should_continue(state: AgentState):
    return "continue" if state["abnormalities"] else "end"

workflow.add_conditional_edges(
    "analyzer",
    should_continue,
    {
        "continue": "searcher",
        "end": END,
    },
)

workflow.add_edge("searcher", "scheduler")
workflow.add_edge("scheduler", END)

app = workflow.compile()

왜 이것이 중요한가: 행동 중심 AI로의 전환

대부분의 AI 튜토리얼은 “문서 요약”에 머무릅니다. 실제 현장에서는 기업과 사용자가 결과를 필요로 합니다. LangGraph의 상태 유지 오케스트레이션을 LLM 추론 및 외부 도구와 결합함으로써, 우리는 수동적인 인사이트에서 능동적인 지원으로 전환합니다—혈액 검사 보고서를 자동으로 전문의 예약으로 바꾸는 식입니다.

코딩 즐겁게! 🚀

Tavily와 Google Calendar 같은 강력한 도구를 활용한 상태 관리가 수동적인 LLM을 사용자의 건강 여정에 적극 참여하는 존재로 바꿉니다.

이 패턴—Detect → Search → Act—은 차세대 기업 AI의 청사진입니다.

PHI(보호된 건강 정보)를 안전하게 다루는 방법이나 이러한 에이전트 프롬프트를 낮은 지연 시간으로 최적화하는 방법에 대해 더 깊이 알아보려면 , 에 있는 심층 가이드를 확인하세요. 이 가이드는 단순 MVP를 넘어서는 프로덕션 수준의 미묘한 차이를 다룹니다.

결론

우리는 다음과 같은 자율 루프를 성공적으로 구축했습니다:

  • 복잡한 검사 데이터를 이해합니다.
  • 조치가 필요한지 결정합니다.
  • 실제 API 호출을 실행하여 예약을 잡습니다.

헬스케어의 미래는 단순히 더 나은 약이 아니라; 더 나은 접근성과 환자의 인지 부하 감소입니다.

다음에 무엇을 자동화하고 싶으신가요? 수면 데이터를 기반으로 운동을 조정해 주는 피트니스 에이전트는 어떨까요? 댓글로 알려 주세요! 👇

Back to Blog

관련 글

더 보기 »

FunctionGemma 파인튜닝 가이드

2026년 1월 16일 Agentic AI 세계에서, 도구를 호출하는 능력이 자연어를 실행 가능한 소프트웨어 동작으로 변환합니다. 지난달 우리는…

FunctionGemma 파인튜닝 가이드

2026년 1월 16일 Agentic AI 세계에서, **tools**를 호출하는 능력이 **natural language**를 **executable software actions**으로 변환합니다. 지난 달 우리는…

FunctionGemma 파인튜닝 가이드

markdown January 16, 2026 Agentic AI 세계에서, 툴을 호출하는 능력이 자연어를 실행 가능한 소프트웨어 동작으로 변환합니다. 지난 달...