from typing import Any, Dict, TypedDict, List
class AgentState(TypedDict):
# 输入
input: str
# 是否跟中医有关系
is_zhongyi_intent: bool
# 直接回答
direct_out: str
# 用户输入的实体抽取
user_input_effects: List[str]
user_input_diseases: List[str]
user_input_symptoms: List[str]
user_input_formulas: List[str]
user_input_herbs: List[str]
user_input_sources: List[str]
# 匹配的实体
matched_effects: List[str]
matched_diseases: List[str]
matched_symptoms: List[str]
matched_formulas: List[str]
matched_herbs: List[str]
matched_sources: List[str]
# cypher查询语句
cypher_query: List[str]
is_all_validate_cypher: bool
# cypher 生成了几次(首次生成算 1)。检查不通过时回到生成节点重试,靠这个计数刹车
cypher_retry_count: int
# run_cypher 返回的是 list[dict],每条 cypher 一份结果
cypher_results: List[List[Dict[str, Any]]]
neo4j_answer: str
# 输出
output: str
# 历史数据
history_messages: List[dict]
input_semantic_trans: str