Explorar el Código

智能体查询接口

yuchengwei hace 3 días
padre
commit
ccba7482d4
Se han modificado 1 ficheros con 26 adiciones y 8 borrados
  1. 26 8
      src/knowledge/main.py

+ 26 - 8
src/knowledge/main.py

@@ -161,12 +161,15 @@ async def get_symptom_diseases(
     }"""
           )
 async def get_disease_symptoms(
-        request: DiseaseSymptomsRequest
+        disease_id: str = Query(...,
+                  description="疾病ID,应为标准医学术语ID。该参数用于查询该疾病的所有症状及其严重程度权重。",
+                  examples="D001",
+                  min_length=1)
 ):
     try:
         # 实现获取疾病症状的逻辑
         search = SearchBusiness()
-        results = search.get_disease_symptoms(request.disease_id)
+        results = search.get_disease_symptoms(disease_id)
         return StandardResponse(success=True, data=results)
     except Exception as e:
         logger.error(f"获取疾病症状失败: {str(e)}")
@@ -271,12 +274,18 @@ class SimilarConceptsRequest(BaseModel):
           response_model=StandardResponse
           )
 async def search_concept(
-        request: ConceptSearchRequest
+        query: str = Query(...,
+                  description="概念名称,应为标准医学术语。该参数用于搜索匹配的概念节点。",
+                  examples="糖尿病",
+                  min_length=1),
+        type: str = Query(None,
+                  description="概念类型,可选参数。用于限定搜索的概念类型。",
+                  examples="疾病")
 ):
     try:
         # 实现搜索医学概念的逻辑
         search = SearchBusiness()
-        results = search.search_concept(name=request.query, type=request.type)
+        results = search.search_concept(name=query, type=type)
         return StandardResponse(success=True, data=results)
     except Exception as e:
         logger.error(f"搜索医学概念失败: {str(e)}")
@@ -309,12 +318,15 @@ async def search_concept(
           response_model=StandardResponse
           )
 async def get_relations(
-        request: ConceptRelationsRequest
+        concept_id: str = Query(...,
+                  description="概念ID,应为标准医学术语ID。该参数用于查询该概念的相关关系。",
+                  examples="D001",
+                  min_length=1)
 ):
     try:
         # 实现获取概念关系的逻辑
         search = SearchBusiness()
-        results = search.get_relations(src_id=request.concept_id)
+        results = search.get_relations(src_id=concept_id)
         return StandardResponse(success=True, data=results)
     except Exception as e:
         logger.error(f"获取概念关系失败: {str(e)}")
@@ -346,12 +358,18 @@ async def get_relations(
     }""",
           )
 async def get_similar_concepts(
-        request: SimilarConceptsRequest
+        concept_id: str = Query(...,
+                  description="概念ID,应为标准医学术语ID。该参数用于查询该概念的相似概念。",
+                  examples="D001",
+                  min_length=1),
+        top_k: int = Query(5,
+                  description="返回相似概念的数量限制,默认为5。",
+                  ge=1, le=20)
 ):
     try:
         # 1. 先根据ID获取节点名称
         search = SearchBusiness()
-        results = search.get_similar_concepts(id=request.concept_id, top_k=request.top_k)
+        results = search.get_similar_concepts(id=concept_id, top_k=top_k)
 
         return StandardResponse(success=True, data=results)
     except Exception as e: