
반쯤 죽어있던 프로토타입에서 로컬 전용 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개월 전)
데모
링크: https://github.com/pulipatikeerthana9-wq/medclinic-voice-scribe
현재 변경된 모습
재기 스토리 (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)
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가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기








