agentV2 / GraphDatabase /models.py
shenli
Add GraphDatabase module with Neo4j + Redis caching
8a17806
Raw
History Blame Contribute Delete
1.87 kB
import os
from pydantic import BaseModel, Field
from typing import Optional, List, Dict, Any
from enum import Enum
class QueryType(str, Enum):
MATCH = "MATCH"
CREATE = "CREATE"
MERGE = "MERGE"
DELETE = "DELETE"
SET = "SET"
REMOVE = "REMOVE"
class NL2CypherRequest(BaseModel):
natural_language_query: str = Field(
description="自然语言描述的需求",
examples=["查找'心血管和血栓栓塞综合征'建议服用什么药物?"]
)
query_type: Optional[QueryType] = Field(
default=None,
description="指定查询类型,如果不指定则由模型推断"
)
limit: Optional[int] = Field(
default=10,
description="结果限制数量",
ge=1,
le=1000
)
class CypherResponse(BaseModel):
cypher_query: str = Field(
...,
description="生成的Cypher查询语句"
)
explanation: str = Field(
...,
description="对生成的Cypher查询的解释"
)
confidence: float = Field(
...,
description="模型对生成查询的信心度(0-1)",
ge=0,
le=1
)
validated: bool = Field(
default=False,
description="查询是否通过验证"
)
validation_errors: List[str] = Field(
default_factory=list,
description="验证过程中发现的错误"
)
class ValidationRequest(BaseModel):
cypher_query: str = Field(
...,
description="需要验证的Cypher查询"
)
class ValidationResponse(BaseModel):
is_valid: bool = Field(
...,
description="查询是否有效"
)
errors: List[str] = Field(
default_factory=list,
description="发现的错误列表"
)
suggestions: List[str] = Field(
default_factory=list,
description="改进建议"
)