본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 05. 25. 23:01

반쯤 죽어있던 프로토타입에서 로컬 전용 AI 의료 보조 도구로: GitHub Copilot을 활용한 MedClinic의 재설계

요약

GitHub Copilot을 활용하여 외부 API 없이 로컬에서 작동하는 의료 보조 도구 MedClinic을 재설계한 사례를 소개합니다. MedGamma-2B 모델을 기반으로 온디바이스 추론 파이프라인과 오케스트레이션 레이어를 직접 구축했습니다.

핵심 포인트

  • 외부 API 및 클라우드 서비스 없는 완전한 로컬 환경 구축
  • MedGamma-2B 모델을 활용한 온디바이스 추론 파이프라인 구현
  • 사전 학습된 래퍼 없이 직접 작성한 오케스트레이션 레이어
  • GitHub Copilot을 통한 개발 프로세스 효율화

이 게시물은 GitHub Finish‑Up‑A‑Thon Challenge를 위한 제출물입니다.

내가 만든 것

나는 제3자 API나 클라우드 서비스 없이 MedGamma-2B급 모델에서 실행되는 완전한 로컬 AI 기반 의료 보조 도구인 MedClinic을 구축했습니다.

기성 API에 화려한 프론트엔드(Frontend)를 덧씌우는 대신, 나는 다음과 같은 작업을 수행했습니다:

  • 오케스트레이션 레이어(Orchestration layer) 전체를 직접 작성했습니다 (사전 학습된 래퍼(Wrapper)를 사용하지 않음).
  • 일반 사용자 텍스트 → MedGamma-2B 추론(Inference) → 구조화된 JSON 응답으로 이어지는 과정을 순수 추론 파이프라인(Inference pipeline)으로 구축했습니다.
  • 외부 API를 전혀 사용하지 않았습니다 — 모든 것이 온디바이스(On-device)에서 작동합니다.

버려졌던 프로토타입 (3개월 전)

BEFORE PROTOTYPE

BEFORE

데모

링크: https://github.com/pulipatikeerthana9-wq/medclinic-voice-scribe

현재 변경된 모습

CHANGED TO

CHANGED TO

CHANGED TO

CHANGED TO

재기 스토리 (The Comeback Story)

MedClinic은 잊혀진 브랜치에 묻혀 있던, 반쯤 죽어있던 프로토타입으로 시작되었습니다. 이전 버전은 다음과 같은 상태였습니다:

  • 사전 경험이 부족한 상태에서 구축하느라 애를 먹었던, 제대로 작동시키기조차 매우 힘들었던 기본적인 음성-텍스트 변환 (voice-to-text) 기능.
  • 단일 모놀리식 함수 (monolithic function).
  • 최적화되지 않은 추론 (inference)으로 인해 모든 답변 전에 90초간의 대기 시간 발생.

저에게는 단 하나의 재료뿐이었습니다. 제 컴퓨터에서 유휴 상태로 돌아가고 있던 MedGamma-2B와 유사한 로컬 모델 하나였습니다. Play-Cloud도, "API의 마법"도 없었습니다. 오직 가공되지 않은 모델 가중치 (model weights)와, 노트북 안에 로컬 전용 의사를 구현하는 것이 가능하다는 고집스러운 아이디어뿐이었습니다.

모든 것을 바꾼 것은 바로 GitHub Copilot이었습니다:

  • Copilot은 파이프라인 (pipeline)을 위한 저의 설계자 (architect)가 되었습니다.
  • 저의 역할은 모델 설계를 검증 (sanity-check)하고, 상용구 코드 (boilerplate)를 다듬으며, 안전 가드레일 (safety guardrails)을 책임지는 것이었습니다.

한 달도 채 되지 않아, MedClinic 브랜치는 단 한 번의 API 호출 없이도 일관되고 구조화된 의료 스타일의 답변을 제공하는 실용적인 어시스턴트로 "개념 증명 (proof of concept)" 단계를 넘어섰습니다.

GitHub Copilot의 역할 (어떻게 모든 것을 바꾸었나)

Copilot이 개입한 지점은 다음과 같습니다:

파이프라인 설계 (Pipeline design)

저는 다음과 같이 질문했습니다:

"음성 입력 (voice-input) → MedGamma-2B 추론 (inference) → 구조화된 JSON 의료 어시스턴트 파이프라인을 어떻게 구성해야 할까요?"

Copilot은 세 가지 레이어 (layer)를 제안했습니다:

  • 입력 정화기 (input-sanitizer)
  • 추론 라우터 (inference-router)
  • JSON 포맷터 (JSON-formatter)

저는 이 세 가지를 모두 유지하며 MedGamma-2B를 중심으로 연결했습니다.

모델 컨텍스트 스캐폴딩 (Model-context scaffolding)

Copilot은 다음을 생성했습니다:

  • 프롬프트 템플릿 (Prompt templates)
  • 역할 시스템 메시지 (Role-system messages)
  • 안전 가드레일 (Safety guardrails)

이것들은 MedGamma-2B의 역량에 맞게 맞춤화되었습니다.

토큰 인식 로직 (Token-aware logic)

Copilot은 저에게 다음 사항을 상기시켜 주었습니다:

  • 사용자 입력 청킹 (Chunk user input)
  • 오래된 컨텍스트 제거 (Trim old context)
  • MedGamma-2B의 컨텍스트 창 (context window) 범위 내 유지

이는 API 재시도 (retry)를 사용할 수 없고 타임아웃 (timeout)을 피해야 하는 상황에서 매우 중요합니다.

테스트 스크립트 (Testing scripts)

Copilot은 환자 스타일의 입력을 시뮬레이션하고 MedClinic의 JSON 출력 형태를 검증하는 유닛 테스트 (unit-style tests) 스타일의 테스트를 작성했습니다.

내가 반대했던 부분 (Where I pushed back)

  • Copilot이 한 번은 모든 대화 내용을 매 호출마다 직렬화 (serializing)할 것을 제안했는데, 이는 10k 토큰의 부하 (10k-token-drag)를 초래합니다. 나는 예산 (budget) 내에 머물 수 있도록 마지막 3번의 대화 (3 turns)만 유지하도록 강제했습니다.
  • 초기 템플릿은 너무 장황했습니다. Copilot이 제안한 자체적인 "더 나은 프롬프트 (better-prompt)" 제안들을 검토한 후, 프롬프트의 약 40%를 줄였습니다.

이전 VS 이후 (BEFORE VS AFTER)

측면 (Aspect)Copilot 및 MedGamma-2B 적용 전Copilot으로 재설계된 MedClinic 적용 후
소스 코드 (Source code)단일 파일, 스파게티 추론 (spaghetti inference)모듈형 (Modular): 음성 → 파서 (parser) → 추론 (inference) → JSON 포맷터 (JSON formatter)
...

SOAP Note 전사 (SOAP Note transcription)

SOAP Note transcription

SOAP Note transcription

SOAP Note transcription

SOAP Note transcription

SOAP Note transcription

GitHub Copilot 사용 경험

용이성 (Ease)

Copilot은 코드 작성이 아니라 **설계 마찰 (design friction)**을 제거해 주었습니다.

  • 저는 챌린지의 이커머스(e-commerce) 사례와 마찬가지로 HTML/CSS를 계속 직접 작성하고 있습니다.
  • 하지만 MedGamma-2B 오케스트레이션 (orchestration) 로직을 건드릴 때마다, Copilot이 아키텍처 (architecture)를 스케치하면 제가 이를 다듬었습니다.

토큰으로 증폭된 강력함 (Power amplified by tokens)

MedGamma-2B의 컨텍스트 윈도우 (context window)는 엄격한 한계이며, 재시도 (retries)가 불가능합니다.

Copilot은 토큰을 낭비하지 않는 파이프라인 (pipeline)을 설계하는 데 도움을 주었습니다:

  • 긴 환자 기록을 자동으로 요약.
  • 모델로 보내기 전에 무관한 컨텍스트 (context)를 제거.
  • 반복되는 정보를 짧은 태그 (tags)로 사전 압축.

실제 적용 결과:

  • 2분 분량의 환자 음성 전사 (transcript) → MedGamma-2B로 약 1.2k 토큰 전송.
  • Copilot이 생성한 로직을 통해 불필요한 미사여구를 제거하고 문장을 재구성함으로써 약 400개의 불필요한 토큰을 절감.

MedClinic은 예산 범위 내를 유지하면서도, 챗봇 (chat-bot) 스타일의 정보 나열이 아닌 인간 스타일의 상담처럼 느껴지는 답변을 제공합니다.

공동 창업자로서의 Copilot

GitHub Copilot은 단순히 개발 속도를 높여준 것이 아니라, MedClinic의 두뇌를 재설계 (rewired) 했습니다.

  • 이전: 장난감처럼 느껴지는 로컬 모델 (local-model) 프로토타입.
  • 이후: 클라우드 의존성 (cloud dependencies) 없이 제 노트북에서 바로 실행할 수 있는, 토큰을 인지하고 구조화된 로컬 전용 (local-only) AI 의사 보조 도구.

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0