Skip to content

HSU-AviationComputer-DevTeam/Medical-Artificial-Intelligence-Platform

Repository files navigation

Hi Medie - Medical AI Platform

isshoman123 dongsinwoo 	Jeon3458 espada105
Jaewon Kim Dongwoo Shin Hyunseong Jeon Seongin Hong
jaewon dongwoo hyunseong Building MCP servers, loading MCPs, building vector stores, generating virtual medical patient data, connecting AI agents to MCPs

의료 인곡지λŠ₯ ν”Œλž«νΌ

License Python A2A MCP

Agent2Agent(A2A) ν”„λ‘œν† μ½œκ³Ό Model Context Protocol(MCP)을 ν™œμš©ν•œ 의료 AI μ—μ΄μ „νŠΈ ν”Œλž«νΌ


ν”„λ‘œμ νŠΈ κ°œμš”

Hi MedieλŠ” μ˜λ£Œμ§„μ˜ 업무 νš¨μœ¨μ„±μ„ ν–₯μƒμ‹œν‚€κΈ° μœ„ν•΄ 개발된 AI 기반 의료 ν”Œλž«νΌμž…λ‹ˆλ‹€. A2A와 MCP ν”„λ‘œν† μ½œμ„ ν†΅ν•©ν•˜μ—¬ λ‹€μ–‘ν•œ 의료 μ‹œμŠ€ν…œκ³Ό μ—°λ™ν•˜κ³ , μ˜λ£Œμ§„μ΄ ν™˜μž 데이터λ₯Ό 효율적으둜 κ΄€λ¦¬ν•˜κ³  μ§„λ£Œ λ¬Έμ„œλ₯Ό μžλ™ 생성할 수 μžˆλ„λ‘ μ§€μ›ν•©λ‹ˆλ‹€.

μ£Όμš” λͺ©ν‘œ

  • ν‘œμ€€ν™”λœ 의료 AI μ—μ΄μ „νŠΈ 톡신: A2A ν”„λ‘œν† μ½œ 기반 μ—μ΄μ „νŠΈ κ°„ ν˜‘μ—…
  • μ™ΈλΆ€ μ‹œμŠ€ν…œ 연동: MCPλ₯Ό ν†΅ν•œ 병원 DB, 의료 기둝, λ…Όλ¬Έ 검색 μ‹œμŠ€ν…œ μ—°κ²°
  • 의료 업무 μžλ™ν™”: μ§„λ£Œ λ¬Έμ„œ μž‘μ„±, ν™˜μž 검색, 처방 관리 μžλ™ν™”
  • ν™•μž₯ κ°€λŠ₯ν•œ μ•„ν‚€ν…μ²˜: μƒˆλ‘œμš΄ 의료 μ‹œμŠ€ν…œ μ‰½κ²Œ 톡합 κ°€λŠ₯

μ•„ν‚€ν…μ²˜

[μ˜λ£Œμ§„] ↔ [A2A ν΄λΌμ΄μ–ΈνŠΈ] ↔ [A2A μ„œλ²„] ↔ [MCP ν΄λΌμ΄μ–ΈνŠΈ] ↔ [의료 μ‹œμŠ€ν…œλ“€]
                                      ↓
                              [의료 AI μ—μ΄μ „νŠΈ]
                                      ↓
                              [ν™˜μž 데이터 / 의료 지식]

핡심 μ»΄ν¬λ„ŒνŠΈ

  • A2A μ„œλ²„: μ—μ΄μ „νŠΈ κ°„ 톡신 및 νƒœμŠ€ν¬ 관리
  • MCP ν΄λΌμ΄μ–ΈνŠΈ: μ™ΈλΆ€ 의료 μ‹œμŠ€ν…œ 연동
  • 의료 AI μ—μ΄μ „νŠΈ: ν™˜μž 데이터 뢄석 및 μ§„λ£Œ 지원
  • 벑터 λ°μ΄ν„°λ² μ΄μŠ€: ν™˜μž μœ μ‚¬μ„± 검색 및 의료 지식 검색

μ£Όμš” κΈ°λŠ₯

ν™˜μž 관리 μ‹œμŠ€ν…œ

  • 슀마트 ν™˜μž 검색: ID, 이름, 증상 기반 닀차원 검색
  • 벑터 μœ μ‚¬μ„± 검색: 증상 기반 μœ μ‚¬ ν™˜μž 탐색
  • μ§„λ£Œκ³Όλ³„ λΆ„λ₯˜: λ‚΄κ³Ό/μ™Έκ³Ό/λ‹ΉμΌμ§„λ£Œ ν™˜μž 관리
  • 처방 이λ ₯ 좔적: νŠΉμ • μ•½λ¬Ό 처방 이λ ₯ 검색

μ§„λ£Œ λ¬Έμ„œ μžλ™ν™”

  • SOAP λ…ΈνŠΈ 생성: κ΅¬μ‘°ν™”λœ μ§„λ£Œ 기둝 μžλ™ μž‘μ„±
  • μ²˜λ°©μ „ μž‘μ„±: AI 기반 μ•½λ¬Ό 처방 μΆ”μ²œ
  • μ§„λ£Œ μš”μ•½μ„œ: ν™˜μž 전체 이λ ₯ μ’…ν•© 뢄석
  • μ˜λ£Œμ§„ μΈκ³„μ„œ: κ΅λŒ€ μ‹œ ν™˜μž μƒνƒœ 인계 λ¬Έμ„œ

AI 뢄석 μ—”μ§„

  • 증상 뢄석: ν™˜μž 증상 기반 진단 지원
  • νŒ¨ν„΄ 뢄석: κ³Όκ±° μ§„λ£Œ 이λ ₯ 기반 예츑
  • 응급도 평가: ν™˜μž μƒνƒœ μš°μ„ μˆœμœ„ μžλ™ νŒμ •
  • μ•½λ¬Ό μƒν˜Έμž‘μš© 검사: 처방 μ•ˆμ „μ„± 검증

MCP μ™ΈλΆ€ μ‹œμŠ€ν…œ 연동

  • PubMed 연동: μ˜ν•™ λ…Όλ¬Έ μ‹€μ‹œκ°„ 검색
  • 병원 DB μ—°κ²°: ν™˜μž 기둝 μ‹œμŠ€ν…œ 톡합
  • 의료 기둝 μ‹œμŠ€ν…œ: μ „μžμ˜λ¬΄κΈ°λ‘(EMR) 연동
  • μ•½λ¬Ό λ°μ΄ν„°λ² μ΄μŠ€: 처방 정보 및 λΆ€μž‘μš© 확인
  • 검사 κ²°κ³Ό μ‹œμŠ€ν…œ: μž„μƒλ³‘λ¦¬/μ˜μƒμ˜ν•™ κ²°κ³Ό 쑰회

μ„€μΉ˜ 및 μ‹€ν–‰

1. ν™˜κ²½ μ„€μ •

# λ ˆν¬μ§€ν† λ¦¬ 클둠
git clone https://github.com/your-repo/hi_medei.git
cd hi_medei

# Python ν™˜κ²½ μ„€μ • (Python 3.11 이상 ꢌμž₯)
python -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate

# μ˜μ‘΄μ„± μ„€μΉ˜ (각 μ—μ΄μ „νŠΈλ³„)
# 의료 μ—μ΄μ „νŠΈ
cd hi_medei/samples/python/agents/medical_agent
pip install -r requirements_simplified.txt  # κΈ°λ³Έ κΈ°λŠ₯만 μ‚¬μš©μ‹œ
# pip install -r requirements_complete.txt  # λͺ¨λ“  κΈ°λŠ₯ μ‚¬μš©μ‹œ
pip install -r requirements_mcp.txt  # MCP μ„œλ²„ μ‚¬μš©μ‹œ

# 의료 μ˜μƒ 뢄석 μ—μ΄μ „νŠΈ
cd hi_medei/samples/python/agents/medical_image_agent
pip install -r requirements.txt

# PDF QA μ—μ΄μ „νŠΈ
cd hi_medei/samples/python/agents/langgraph
pip install -e .  # pyproject.toml 기반 μ„€μΉ˜

2. ν™˜κ²½ λ³€μˆ˜ μ„€μ •

# 의료 μ—μ΄μ „νŠΈμš© .env 파일 생성
cd hi_medei/samples/python/agents/medical_agent
cp env_example.txt .env

# .env 파일 νŽΈμ§‘ν•˜μ—¬ ν•„μš”ν•œ API ν‚€ μ„€μ •
# OPENAI_API_KEY=your_openai_api_key
# GEMINI_API_KEY=your_gemini_api_key (선택)

3. μ„œλ²„ μ‹œμž‘

의료 μ—μ΄μ „νŠΈ μ„œλ²„ μ‹œμž‘ (MCP μ„œλ²„ 포함)

# 의료 μ—μ΄μ „νŠΈμ™€ MCP μ„œλ²„λ₯Ό ν•œ λ²ˆμ— μ‹œμž‘ (별도 터미널)
cd hi_medei/samples/python/agents/medical_agent
python start_all.py

의료 μ˜μƒ 뢄석 μ—μ΄μ „νŠΈ μ„œλ²„ μ‹œμž‘

# 의료 μ˜μƒ 뢄석 A2A μ„œλ²„ μ‹œμž‘ (별도 터미널)
cd hi_medei/samples/python/agents/medical_image_agent
python __main__.py

PDF QA μ—μ΄μ „νŠΈ μ„œλ²„ μ‹œμž‘

# LangGraph 기반 PDF QA μ—μ΄μ „νŠΈ μ„œλ²„ μ‹œμž‘ (별도 터미널)
cd hi_medei/samples/python/agents/langgraph
python __main__.py

4. μ„œλ²„ μƒνƒœ 확인

각 μ„œλ²„κ°€ μ •μƒμ μœΌλ‘œ μ‹€ν–‰λ˜μ—ˆλŠ”μ§€ 확인:

# MCP μ„œλ²„ μƒνƒœ 확인 (의료 μ—μ΄μ „νŠΈ μ‹€ν–‰μ‹œ μžλ™ μ‹œμž‘)
curl http://localhost:8080/health  # PubMed μ„œλ²„
curl http://localhost:8081/health  # Memory μ„œλ²„

# A2A μ„œλ²„ μƒνƒœ 확인
curl http://localhost:10001/health  # 의료 μ—μ΄μ „νŠΈ
curl http://localhost:10002/health  # 의료 μ˜μƒ 뢄석 μ—μ΄μ „νŠΈ
curl http://localhost:10003/health  # PDF QA μ—μ΄μ „νŠΈ

5. ν…ŒμŠ€νŠΈ μ‹€ν–‰ (의료 μ—μ΄μ „νŠΈλ§Œ ν•΄λ‹Ή)

# 의료 μ—μ΄μ „νŠΈ ν…ŒμŠ€νŠΈ
cd hi_medei/samples/python/agents/medical_agent

# κΈ°λ³Έ ν…ŒμŠ€νŠΈ
python test_agent_simple.py

# MCP 연동 ν…ŒμŠ€νŠΈ
python test_agent_mcp.py
python test_mcp_connection.py
python test_mcp_integration.py

# 벑터 검색 ν…ŒμŠ€νŠΈ
python test_vector.py

6. 문제 ν•΄κ²°

μ„œλ²„ μ‹€ν–‰ μ‹œ λ¬Έμ œκ°€ λ°œμƒν•˜λŠ” 경우:

  1. 포트 좩돌 확인: lsof -i :[포트번호] (Unix/Mac) λ˜λŠ” netstat -ano | findstr [포트번호] (Windows)
  2. ν™˜κ²½ λ³€μˆ˜ 확인: python -c "import os; print(os.getenv('OPENAI_API_KEY'))"
  3. μ˜μ‘΄μ„± 확인: 각 μ—μ΄μ „νŠΈ λ””λ ‰ν† λ¦¬μ˜ requirements 파일 확인
  4. 둜그 확인: 각 μ„œλ²„μ˜ 둜그 좜λ ₯ 확인

7. 개발 λͺ¨λ“œ μ‹€ν–‰ (의료 μ—μ΄μ „νŠΈλ§Œ ν•΄λ‹Ή)

# 의료 μ—μ΄μ „νŠΈ 디버그 λͺ¨λ“œ
cd hi_medei/samples/python/agents/medical_agent

# μ—μ΄μ „νŠΈ 호좜 디버그
python debug_invoke.py

# 검색 κΈ°λŠ₯ 디버그
python debug_search.py

# 쿼리 뢄석 디버그
python debug_query.py

μ‚¬μš© μ˜ˆμ‹œ

A2A ν”„λ‘œν† μ½œμ„ ν†΅ν•œ μ—μ΄μ „νŠΈ 호좜

import asyncio
from common.client import A2AClient

async def main():
    # 의료 μ—μ΄μ „νŠΈμ— μ—°κ²°
    client = A2AClient("http://localhost:10001")

    # ν™˜μž 검색 μš”μ²­
    response = await client.send_task({
        "message": {
            "text": "κΉ€μ² μˆ˜ ν™˜μžμ˜ 졜근 μ§„λ£Œ 기둝을 μ‘°νšŒν•΄μ£Όμ„Έμš”"
        }
    })

    print(response)

asyncio.run(main())

MCPλ₯Ό ν†΅ν•œ μ™ΈλΆ€ μ‹œμŠ€ν…œ 호좜

curl -X POST http://localhost:10001 \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "mcp/search_pubmed",
    "params": {
      "query": "diabetes treatment guidelines",
      "max_results": 5
    },
    "id": 1
  }'

개발 κ°€μ΄λ“œ

ν”„λ‘œμ νŠΈ ꡬ쑰

hi_medei/ # 의료 AI ν”Œλž«νΌ
β”œβ”€β”€ demo_clovax_05/ # μ›Ή μΈν„°νŽ˜μ΄μŠ€
β”‚ β”œβ”€β”€ ui/ # UI μ»΄ν¬λ„ŒνŠΈ
β”‚ β”‚ β”œβ”€β”€ main.py # 메인 UI μ„œλ²„
β”‚ β”‚ β”œβ”€β”€ components/ # UI μ»΄ν¬λ„ŒνŠΈ
β”‚ β”‚ β”‚ β”œβ”€β”€ form_render.py # 폼 λ Œλ”λ§
β”‚ β”‚ β”‚ └── ... # 기타 UI μ»΄ν¬λ„ŒνŠΈ
β”‚ β”‚ └── static/ # 정적 파일
β”‚ └── requirements.txt # UI μ˜μ‘΄μ„±
β”‚
β”œβ”€β”€ samples/python/agents/ # AI μ—μ΄μ „νŠΈ κ΅¬ν˜„
β”‚ β”œβ”€β”€ medical_agent/ # 의료 AI μ—μ΄μ „νŠΈ
β”‚ β”‚ β”œβ”€β”€ main.py # A2A μ„œλ²„ 메인
β”‚ β”‚ β”œβ”€β”€ agent.py # 의료 μ—μ΄μ „νŠΈ 둜직
β”‚ β”‚ β”œβ”€β”€ medical_tools.py # 의료 도ꡬ듀
β”‚ β”‚ β”œβ”€β”€ mcp_client.py # MCP ν΄λΌμ΄μ–ΈνŠΈ
β”‚ β”‚ β”œβ”€β”€ mcp_config.py # MCP μ—°κ²° 관리
β”‚ β”‚ └── task_manager.py # νƒœμŠ€ν¬ 관리
β”‚ β”‚
β”‚ β”œβ”€β”€ medical_image_agent/ # 의료 μ˜μƒ 뢄석 μ—μ΄μ „νŠΈ
β”‚ β”‚ β”œβ”€β”€ main.py # A2A μ„œλ²„ 메인
β”‚ β”‚ β”œβ”€β”€ agent.py # μ˜μƒ 뢄석 μ—μ΄μ „νŠΈ 둜직
β”‚ β”‚ β”œβ”€β”€ simple_vision_pipeline.py # μ˜μƒ 뢄석 νŒŒμ΄ν”„λΌμΈ
β”‚ β”‚ └── task_manager.py # νƒœμŠ€ν¬ 관리
β”‚ β”‚
β”‚ β”œβ”€β”€ langgraph/ # PDF QA μ—μ΄μ „νŠΈ
β”‚ β”‚ β”œβ”€β”€ main.py # A2A μ„œλ²„ 메인
β”‚ β”‚ β”œβ”€β”€ agent.py # PDF QA μ—μ΄μ „νŠΈ 둜직
β”‚ β”‚ β”œβ”€β”€ task_manager.py # νƒœμŠ€ν¬ 관리
β”‚ β”‚ └── chroma_db/ # 벑터 λ°μ΄ν„°λ² μ΄μŠ€
β”‚ β”‚
β”‚ └── masking_agent/ # PHI λ§ˆμŠ€ν‚Ή μ—μ΄μ „νŠΈ
β”‚ β”œβ”€β”€ app/ # FastAPI μ• ν”Œλ¦¬μΌ€μ΄μ…˜
β”‚ β”œβ”€β”€ a2a/ # A2A ν”„λ‘œν† μ½œ κ΅¬ν˜„
β”‚ β”œβ”€β”€ start_masking_agent.py # μ„œλ²„ μ‹œμž‘ 슀크립트
β”‚ └── requirements.txt # μ˜μ‘΄μ„±
β”‚
β”œβ”€β”€ docs/ # λ¬Έμ„œ
β”œβ”€β”€ specification/ # A2A ν”„λ‘œν† μ½œ μŠ€νŽ™
β”œβ”€β”€ tests/ # ν…ŒμŠ€νŠΈ
β”œβ”€β”€ lychee.toml # ν”„λ‘œμ νŠΈ μ„€μ •
β”œβ”€β”€ mkdocs.yml # λ¬Έμ„œ μ„€μ •
β”œβ”€β”€ noxfile.py # ν…ŒμŠ€νŠΈ μ„€μ •
└── requirements-docs.txt # λ¬Έμ„œ μ˜μ‘΄μ„±

μƒˆλ‘œμš΄ MCP μ„œλ²„ μΆ”κ°€

new_endpoint = MCPEndpoint(
    name="new_system",
    url="http://localhost:8085/mcp/new",
    description="μƒˆλ‘œμš΄ 의료 μ‹œμŠ€ν…œ"
)
mcp_manager.add_endpoint(new_endpoint)

μ»€μŠ€ν…€ 의료 도ꡬ 개발

from medical_tools import BaseTool

class CustomMedicalTool(BaseTool):
    name = "custom_tool"
    description = "μ»€μŠ€ν…€ 의료 도ꡬ"

    def _run(self, query: str) -> str:
        return "처리 결과"

λ³΄μ•ˆ 및 μ€€μˆ˜μ‚¬ν•­

의료 정보 보호

  • HIPAA μ€€μˆ˜: ν™˜μž 정보 μ•”ν˜Έν™” 및 μ ‘κ·Ό μ œμ–΄
  • 데이터 읡λͺ…ν™”: 개발/ν…ŒμŠ€νŠΈ ν™˜κ²½μ—μ„œ μ‹€μ œ ν™˜μž 데이터 보호
  • 감사 둜그: λͺ¨λ“  의료 데이터 μ ‘κ·Ό 이λ ₯ 기둝

Β© 2025 ν•œμ„œλŒ€ν•™κ΅ μœ΅ν•©ν”„λ‘œμ νŠΈ Agentic AI HiMedei Team. All rights reserved.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors