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 κΈ°λ° μ½λ¬Ό μ²λ°© μΆμ²
- μ§λ£ μμ½μ: νμ μ 체 μ΄λ ₯ μ’ ν© λΆμ
- μλ£μ§ μΈκ³μ: κ΅λ μ νμ μν μΈκ³ λ¬Έμ
- μ¦μ λΆμ: νμ μ¦μ κΈ°λ° μ§λ¨ μ§μ
- ν¨ν΄ λΆμ: κ³Όκ±° μ§λ£ μ΄λ ₯ κΈ°λ° μμΈ‘
- μκΈλ νκ°: νμ μν μ°μ μμ μλ νμ
- μ½λ¬Ό μνΈμμ© κ²μ¬: μ²λ°© μμ μ± κ²μ¦
- PubMed μ°λ: μν λ Όλ¬Έ μ€μκ° κ²μ
- λ³μ DB μ°κ²°: νμ κΈ°λ‘ μμ€ν ν΅ν©
- μλ£ κΈ°λ‘ μμ€ν : μ μμ무기λ‘(EMR) μ°λ
- μ½λ¬Ό λ°μ΄ν°λ² μ΄μ€: μ²λ°© μ 보 λ° λΆμμ© νμΈ
- κ²μ¬ κ²°κ³Ό μμ€ν : μμλ³λ¦¬/μμμν κ²°κ³Ό μ‘°ν
# λ ν¬μ§ν 리 ν΄λ‘
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 κΈ°λ° μ€μΉ# μλ£ μμ΄μ νΈμ© .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 (μ ν)# μλ£ μμ΄μ νΈμ 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# LangGraph κΈ°λ° PDF QA μμ΄μ νΈ μλ² μμ (λ³λ ν°λ―Έλ)
cd hi_medei/samples/python/agents/langgraph
python __main__.pyκ° μλ²κ° μ μμ μΌλ‘ μ€νλμλμ§ νμΈ:
# 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 μμ΄μ νΈ# μλ£ μμ΄μ νΈ ν
μ€νΈ
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μλ² μ€ν μ λ¬Έμ κ° λ°μνλ κ²½μ°:
- ν¬νΈ μΆ©λ νμΈ:
lsof -i :[ν¬νΈλ²νΈ](Unix/Mac) λλnetstat -ano | findstr [ν¬νΈλ²νΈ](Windows) - νκ²½ λ³μ νμΈ:
python -c "import os; print(os.getenv('OPENAI_API_KEY'))" - μμ‘΄μ± νμΈ: κ° μμ΄μ νΈ λλ ν 리μ requirements νμΌ νμΈ
- λ‘κ·Έ νμΈ: κ° μλ²μ λ‘κ·Έ μΆλ ₯ νμΈ
# μλ£ μμ΄μ νΈ λλ²κ·Έ λͺ¨λ
cd hi_medei/samples/python/agents/medical_agent
# μμ΄μ νΈ νΈμΆ λλ²κ·Έ
python debug_invoke.py
# κ²μ κΈ°λ₯ λλ²κ·Έ
python debug_search.py
# 쿼리 λΆμ λλ²κ·Έ
python debug_query.pyimport 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())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 # λ¬Έμ μμ‘΄μ±
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.