import sys,os from agent.cdss.capbility import CDSSCapability from agent.cdss.models.schemas import CDSSInput, CDSSInt, CDSSText from model.response import StandardResponse current_path = os.getcwd() sys.path.append(current_path) import time from fastapi import APIRouter, Depends, Query from typing import Optional, List import sys sys.path.append('..') from utils.agent import call_chat_api,get_conversation_id import json router = APIRouter(prefix="/graph", tags=["Knowledge Graph"]) @router.get("/nodes/recommend", response_model=StandardResponse) async def recommend( chief: str ): start_time = time.time() app_id = "256fd853-60b0-4357-b11b-8114b4e90ae0" conversation_id = get_conversation_id(app_id) result = call_chat_api(app_id, conversation_id, chief) json_data = json.loads(result) keyword = " ".join(json_data["symptoms"]) result = await neighbor_search(keyword=keyword, neighbor_type='Check', limit=10) end_time = time.time() print(f"recommend执行完成,耗时:{end_time - start_time:.2f}秒") return result; @router.get("/nodes/neighbor_search", response_model=StandardResponse) async def neighbor_search( keyword: str = Query(..., min_length=2), limit: int = Query(10, ge=1, le=100), node_type: Optional[str] = Query(None), neighbor_type: Optional[str] = Query(None), min_degree: Optional[int] = Query(None) ): """ 根据关键词和属性过滤条件搜索图谱节点 """ try: print(f"开始执行neighbor_search,参数:keyword={keyword}, limit={limit}, node_type={node_type}, neighbor_type={neighbor_type}, min_degree={min_degree}") keywords = keyword.split(" ") record = CDSSInput( #pat_age=CDSSInt(type="month", value=24), #pat_sex=CDSSText(type="sex", value="女"), chief_complaint=keywords, ) # 使用从main.py导入的capability实例处理CDSS逻辑 output = capability.process(input=record) print(output.diagnosis.value) return StandardResponse( success=True, data={"可能诊断":output.diagnosis.value,"可能诊断2":output.diagnosis2.value,"推荐检验":output.checks.value,"症状":keywords} ) except Exception as e: print(e) raise e return StandardResponse( success=False, error_code=500, error_msg=str(e) ) capability = CDSSCapability() #def get_capability(): #from main import capability #return capability graph_router = router