Fix linting

This commit is contained in:
yangdx 2025-09-27 15:13:07 +08:00
parent 1766cddd6c
commit e7948df541

View file

@ -151,17 +151,16 @@ class QueryDataResponse(BaseModel):
class StreamChunkResponse(BaseModel): class StreamChunkResponse(BaseModel):
"""Response model for streaming chunks in NDJSON format""" """Response model for streaming chunks in NDJSON format"""
references: Optional[List[Dict[str, str]]] = Field( references: Optional[List[Dict[str, str]]] = Field(
default=None, default=None,
description="Reference list (only in first chunk when include_references=True)" description="Reference list (only in first chunk when include_references=True)",
) )
response: Optional[str] = Field( response: Optional[str] = Field(
default=None, default=None, description="Response content chunk or complete response"
description="Response content chunk or complete response"
) )
error: Optional[str] = Field( error: Optional[str] = Field(
default=None, default=None, description="Error message if processing fails"
description="Error message if processing fails"
) )
@ -182,7 +181,7 @@ def create_query_routes(rag, api_key: Optional[str] = None, top_k: int = 60):
"properties": { "properties": {
"response": { "response": {
"type": "string", "type": "string",
"description": "The generated response from the RAG system" "description": "The generated response from the RAG system",
}, },
"references": { "references": {
"type": "array", "type": "array",
@ -190,13 +189,13 @@ def create_query_routes(rag, api_key: Optional[str] = None, top_k: int = 60):
"type": "object", "type": "object",
"properties": { "properties": {
"reference_id": {"type": "string"}, "reference_id": {"type": "string"},
"file_path": {"type": "string"} "file_path": {"type": "string"},
} },
}, },
"description": "Reference list (only included when include_references=True)" "description": "Reference list (only included when include_references=True)",
} },
}, },
"required": ["response"] "required": ["response"],
}, },
"examples": { "examples": {
"with_references": { "with_references": {
@ -205,17 +204,23 @@ def create_query_routes(rag, api_key: Optional[str] = None, top_k: int = 60):
"value": { "value": {
"response": "Artificial Intelligence (AI) is a branch of computer science that aims to create intelligent machines capable of performing tasks that typically require human intelligence, such as learning, reasoning, and problem-solving.", "response": "Artificial Intelligence (AI) is a branch of computer science that aims to create intelligent machines capable of performing tasks that typically require human intelligence, such as learning, reasoning, and problem-solving.",
"references": [ "references": [
{"reference_id": "1", "file_path": "/documents/ai_overview.pdf"}, {
{"reference_id": "2", "file_path": "/documents/machine_learning.txt"} "reference_id": "1",
] "file_path": "/documents/ai_overview.pdf",
} },
{
"reference_id": "2",
"file_path": "/documents/machine_learning.txt",
},
],
},
}, },
"without_references": { "without_references": {
"summary": "Response without references", "summary": "Response without references",
"description": "Example response when include_references=False", "description": "Example response when include_references=False",
"value": { "value": {
"response": "Artificial Intelligence (AI) is a branch of computer science that aims to create intelligent machines capable of performing tasks that typically require human intelligence, such as learning, reasoning, and problem-solving." "response": "Artificial Intelligence (AI) is a branch of computer science that aims to create intelligent machines capable of performing tasks that typically require human intelligence, such as learning, reasoning, and problem-solving."
} },
}, },
"different_modes": { "different_modes": {
"summary": "Different query modes", "summary": "Different query modes",
@ -225,12 +230,12 @@ def create_query_routes(rag, api_key: Optional[str] = None, top_k: int = 60):
"global_mode": "Provides broader context from relationship patterns", "global_mode": "Provides broader context from relationship patterns",
"hybrid_mode": "Combines local and global approaches", "hybrid_mode": "Combines local and global approaches",
"naive_mode": "Simple vector similarity search", "naive_mode": "Simple vector similarity search",
"mix_mode": "Integrates knowledge graph and vector retrieval" "mix_mode": "Integrates knowledge graph and vector retrieval",
} },
} },
} },
} }
} },
}, },
400: { 400: {
"description": "Bad Request - Invalid input parameters", "description": "Bad Request - Invalid input parameters",
@ -238,15 +243,13 @@ def create_query_routes(rag, api_key: Optional[str] = None, top_k: int = 60):
"application/json": { "application/json": {
"schema": { "schema": {
"type": "object", "type": "object",
"properties": { "properties": {"detail": {"type": "string"}},
"detail": {"type": "string"}
}
}, },
"example": { "example": {
"detail": "Query text must be at least 3 characters long" "detail": "Query text must be at least 3 characters long"
} },
} }
} },
}, },
500: { 500: {
"description": "Internal Server Error - Query processing failed", "description": "Internal Server Error - Query processing failed",
@ -254,17 +257,15 @@ def create_query_routes(rag, api_key: Optional[str] = None, top_k: int = 60):
"application/json": { "application/json": {
"schema": { "schema": {
"type": "object", "type": "object",
"properties": { "properties": {"detail": {"type": "string"}},
"detail": {"type": "string"}
}
}, },
"example": { "example": {
"detail": "Failed to process query: LLM service unavailable" "detail": "Failed to process query: LLM service unavailable"
} },
} }
} },
} },
} },
) )
async def query_text(request: QueryRequest): async def query_text(request: QueryRequest):
""" """
@ -380,37 +381,37 @@ def create_query_routes(rag, api_key: Optional[str] = None, top_k: int = 60):
"type": "string", "type": "string",
"format": "ndjson", "format": "ndjson",
"description": "Newline-delimited JSON (NDJSON) format used for both streaming and non-streaming responses. For streaming: multiple lines with separate JSON objects. For non-streaming: single line with complete JSON object.", "description": "Newline-delimited JSON (NDJSON) format used for both streaming and non-streaming responses. For streaming: multiple lines with separate JSON objects. For non-streaming: single line with complete JSON object.",
"example": '{"references": [{"reference_id": "1", "file_path": "/documents/ai.pdf"}]}\n{"response": "Artificial Intelligence is"}\n{"response": " a field of computer science"}\n{"response": " that focuses on creating intelligent machines."}' "example": '{"references": [{"reference_id": "1", "file_path": "/documents/ai.pdf"}]}\n{"response": "Artificial Intelligence is"}\n{"response": " a field of computer science"}\n{"response": " that focuses on creating intelligent machines."}',
}, },
"examples": { "examples": {
"streaming_with_references": { "streaming_with_references": {
"summary": "Streaming mode with references (stream=true)", "summary": "Streaming mode with references (stream=true)",
"description": "Multiple NDJSON lines when stream=True and include_references=True. First line contains references, subsequent lines contain response chunks.", "description": "Multiple NDJSON lines when stream=True and include_references=True. First line contains references, subsequent lines contain response chunks.",
"value": '{"references": [{"reference_id": "1", "file_path": "/documents/ai_overview.pdf"}, {"reference_id": "2", "file_path": "/documents/ml_basics.txt"}]}\n{"response": "Artificial Intelligence (AI) is a branch of computer science"}\n{"response": " that aims to create intelligent machines capable of performing"}\n{"response": " tasks that typically require human intelligence, such as learning,"}\n{"response": " reasoning, and problem-solving."}' "value": '{"references": [{"reference_id": "1", "file_path": "/documents/ai_overview.pdf"}, {"reference_id": "2", "file_path": "/documents/ml_basics.txt"}]}\n{"response": "Artificial Intelligence (AI) is a branch of computer science"}\n{"response": " that aims to create intelligent machines capable of performing"}\n{"response": " tasks that typically require human intelligence, such as learning,"}\n{"response": " reasoning, and problem-solving."}',
}, },
"streaming_without_references": { "streaming_without_references": {
"summary": "Streaming mode without references (stream=true)", "summary": "Streaming mode without references (stream=true)",
"description": "Multiple NDJSON lines when stream=True and include_references=False. Only response chunks are sent.", "description": "Multiple NDJSON lines when stream=True and include_references=False. Only response chunks are sent.",
"value": '{"response": "Machine learning is a subset of artificial intelligence"}\n{"response": " that enables computers to learn and improve from experience"}\n{"response": " without being explicitly programmed for every task."}' "value": '{"response": "Machine learning is a subset of artificial intelligence"}\n{"response": " that enables computers to learn and improve from experience"}\n{"response": " without being explicitly programmed for every task."}',
}, },
"non_streaming_with_references": { "non_streaming_with_references": {
"summary": "Non-streaming mode with references (stream=false)", "summary": "Non-streaming mode with references (stream=false)",
"description": "Single NDJSON line when stream=False and include_references=True. Complete response with references in one message.", "description": "Single NDJSON line when stream=False and include_references=True. Complete response with references in one message.",
"value": '{"references": [{"reference_id": "1", "file_path": "/documents/neural_networks.pdf"}], "response": "Neural networks are computational models inspired by biological neural networks that consist of interconnected nodes (neurons) organized in layers. They are fundamental to deep learning and can learn complex patterns from data through training processes."}' "value": '{"references": [{"reference_id": "1", "file_path": "/documents/neural_networks.pdf"}], "response": "Neural networks are computational models inspired by biological neural networks that consist of interconnected nodes (neurons) organized in layers. They are fundamental to deep learning and can learn complex patterns from data through training processes."}',
}, },
"non_streaming_without_references": { "non_streaming_without_references": {
"summary": "Non-streaming mode without references (stream=false)", "summary": "Non-streaming mode without references (stream=false)",
"description": "Single NDJSON line when stream=False and include_references=False. Complete response only.", "description": "Single NDJSON line when stream=False and include_references=False. Complete response only.",
"value": '{"response": "Deep learning is a subset of machine learning that uses neural networks with multiple layers (hence deep) to model and understand complex patterns in data. It has revolutionized fields like computer vision, natural language processing, and speech recognition."}' "value": '{"response": "Deep learning is a subset of machine learning that uses neural networks with multiple layers (hence deep) to model and understand complex patterns in data. It has revolutionized fields like computer vision, natural language processing, and speech recognition."}',
}, },
"error_response": { "error_response": {
"summary": "Error during streaming", "summary": "Error during streaming",
"description": "Error handling in NDJSON format when an error occurs during processing.", "description": "Error handling in NDJSON format when an error occurs during processing.",
"value": '{"references": [{"reference_id": "1", "file_path": "/documents/ai.pdf"}]}\n{"response": "Artificial Intelligence is"}\n{"error": "LLM service temporarily unavailable"}' "value": '{"references": [{"reference_id": "1", "file_path": "/documents/ai.pdf"}]}\n{"response": "Artificial Intelligence is"}\n{"error": "LLM service temporarily unavailable"}',
} },
} },
} }
} },
}, },
400: { 400: {
"description": "Bad Request - Invalid input parameters", "description": "Bad Request - Invalid input parameters",
@ -418,15 +419,13 @@ def create_query_routes(rag, api_key: Optional[str] = None, top_k: int = 60):
"application/json": { "application/json": {
"schema": { "schema": {
"type": "object", "type": "object",
"properties": { "properties": {"detail": {"type": "string"}},
"detail": {"type": "string"}
}
}, },
"example": { "example": {
"detail": "Query text must be at least 3 characters long" "detail": "Query text must be at least 3 characters long"
} },
} }
} },
}, },
500: { 500: {
"description": "Internal Server Error - Query processing failed", "description": "Internal Server Error - Query processing failed",
@ -434,17 +433,15 @@ def create_query_routes(rag, api_key: Optional[str] = None, top_k: int = 60):
"application/json": { "application/json": {
"schema": { "schema": {
"type": "object", "type": "object",
"properties": { "properties": {"detail": {"type": "string"}},
"detail": {"type": "string"}
}
}, },
"example": { "example": {
"detail": "Failed to process streaming query: Knowledge graph unavailable" "detail": "Failed to process streaming query: Knowledge graph unavailable"
} },
} }
} },
} },
} },
) )
async def query_text_stream(request: QueryRequest): async def query_text_stream(request: QueryRequest):
""" """
@ -657,11 +654,11 @@ def create_query_routes(rag, api_key: Optional[str] = None, top_k: int = 60):
"status": { "status": {
"type": "string", "type": "string",
"enum": ["success", "failure"], "enum": ["success", "failure"],
"description": "Query execution status" "description": "Query execution status",
}, },
"message": { "message": {
"type": "string", "type": "string",
"description": "Status message describing the result" "description": "Status message describing the result",
}, },
"data": { "data": {
"type": "object", "type": "object",
@ -676,10 +673,10 @@ def create_query_routes(rag, api_key: Optional[str] = None, top_k: int = 60):
"description": {"type": "string"}, "description": {"type": "string"},
"source_id": {"type": "string"}, "source_id": {"type": "string"},
"file_path": {"type": "string"}, "file_path": {"type": "string"},
"reference_id": {"type": "string"} "reference_id": {"type": "string"},
} },
}, },
"description": "Retrieved entities from knowledge graph" "description": "Retrieved entities from knowledge graph",
}, },
"relationships": { "relationships": {
"type": "array", "type": "array",
@ -693,10 +690,10 @@ def create_query_routes(rag, api_key: Optional[str] = None, top_k: int = 60):
"weight": {"type": "number"}, "weight": {"type": "number"},
"source_id": {"type": "string"}, "source_id": {"type": "string"},
"file_path": {"type": "string"}, "file_path": {"type": "string"},
"reference_id": {"type": "string"} "reference_id": {"type": "string"},
} },
}, },
"description": "Retrieved relationships from knowledge graph" "description": "Retrieved relationships from knowledge graph",
}, },
"chunks": { "chunks": {
"type": "array", "type": "array",
@ -706,10 +703,10 @@ def create_query_routes(rag, api_key: Optional[str] = None, top_k: int = 60):
"content": {"type": "string"}, "content": {"type": "string"},
"file_path": {"type": "string"}, "file_path": {"type": "string"},
"chunk_id": {"type": "string"}, "chunk_id": {"type": "string"},
"reference_id": {"type": "string"} "reference_id": {"type": "string"},
} },
}, },
"description": "Retrieved text chunks from vector database" "description": "Retrieved text chunks from vector database",
}, },
"references": { "references": {
"type": "array", "type": "array",
@ -717,13 +714,13 @@ def create_query_routes(rag, api_key: Optional[str] = None, top_k: int = 60):
"type": "object", "type": "object",
"properties": { "properties": {
"reference_id": {"type": "string"}, "reference_id": {"type": "string"},
"file_path": {"type": "string"} "file_path": {"type": "string"},
} },
}, },
"description": "Reference list for citation purposes" "description": "Reference list for citation purposes",
} },
}, },
"description": "Structured retrieval data containing entities, relationships, chunks, and references" "description": "Structured retrieval data containing entities, relationships, chunks, and references",
}, },
"metadata": { "metadata": {
"type": "object", "type": "object",
@ -732,25 +729,41 @@ def create_query_routes(rag, api_key: Optional[str] = None, top_k: int = 60):
"keywords": { "keywords": {
"type": "object", "type": "object",
"properties": { "properties": {
"high_level": {"type": "array", "items": {"type": "string"}}, "high_level": {
"low_level": {"type": "array", "items": {"type": "string"}} "type": "array",
} "items": {"type": "string"},
},
"low_level": {
"type": "array",
"items": {"type": "string"},
},
},
}, },
"processing_info": { "processing_info": {
"type": "object", "type": "object",
"properties": { "properties": {
"total_entities_found": {"type": "integer"}, "total_entities_found": {
"total_relations_found": {"type": "integer"}, "type": "integer"
"entities_after_truncation": {"type": "integer"}, },
"relations_after_truncation": {"type": "integer"}, "total_relations_found": {
"final_chunks_count": {"type": "integer"} "type": "integer"
} },
} "entities_after_truncation": {
"type": "integer"
},
"relations_after_truncation": {
"type": "integer"
},
"final_chunks_count": {
"type": "integer"
},
},
},
}, },
"description": "Query metadata including mode, keywords, and processing information" "description": "Query metadata including mode, keywords, and processing information",
} },
}, },
"required": ["status", "message", "data", "metadata"] "required": ["status", "message", "data", "metadata"],
}, },
"examples": { "examples": {
"successful_local_mode": { "successful_local_mode": {
@ -767,7 +780,7 @@ def create_query_routes(rag, api_key: Optional[str] = None, top_k: int = 60):
"description": "Computational models inspired by biological neural networks", "description": "Computational models inspired by biological neural networks",
"source_id": "chunk-123", "source_id": "chunk-123",
"file_path": "/documents/ai_basics.pdf", "file_path": "/documents/ai_basics.pdf",
"reference_id": "1" "reference_id": "1",
} }
], ],
"relationships": [ "relationships": [
@ -779,7 +792,7 @@ def create_query_routes(rag, api_key: Optional[str] = None, top_k: int = 60):
"weight": 0.85, "weight": 0.85,
"source_id": "chunk-123", "source_id": "chunk-123",
"file_path": "/documents/ai_basics.pdf", "file_path": "/documents/ai_basics.pdf",
"reference_id": "1" "reference_id": "1",
} }
], ],
"chunks": [ "chunks": [
@ -787,28 +800,35 @@ def create_query_routes(rag, api_key: Optional[str] = None, top_k: int = 60):
"content": "Neural networks are computational models that mimic the way biological neural networks work...", "content": "Neural networks are computational models that mimic the way biological neural networks work...",
"file_path": "/documents/ai_basics.pdf", "file_path": "/documents/ai_basics.pdf",
"chunk_id": "chunk-123", "chunk_id": "chunk-123",
"reference_id": "1" "reference_id": "1",
} }
], ],
"references": [ "references": [
{"reference_id": "1", "file_path": "/documents/ai_basics.pdf"} {
] "reference_id": "1",
"file_path": "/documents/ai_basics.pdf",
}
],
}, },
"metadata": { "metadata": {
"query_mode": "local", "query_mode": "local",
"keywords": { "keywords": {
"high_level": ["neural", "networks"], "high_level": ["neural", "networks"],
"low_level": ["computation", "model", "algorithm"] "low_level": [
"computation",
"model",
"algorithm",
],
}, },
"processing_info": { "processing_info": {
"total_entities_found": 5, "total_entities_found": 5,
"total_relations_found": 3, "total_relations_found": 3,
"entities_after_truncation": 1, "entities_after_truncation": 1,
"relations_after_truncation": 1, "relations_after_truncation": 1,
"final_chunks_count": 1 "final_chunks_count": 1,
} },
} },
} },
}, },
"global_mode": { "global_mode": {
"summary": "Global mode data retrieval", "summary": "Global mode data retrieval",
@ -827,22 +847,29 @@ def create_query_routes(rag, api_key: Optional[str] = None, top_k: int = 60):
"weight": 0.92, "weight": 0.92,
"source_id": "chunk-456", "source_id": "chunk-456",
"file_path": "/documents/ai_overview.pdf", "file_path": "/documents/ai_overview.pdf",
"reference_id": "2" "reference_id": "2",
} }
], ],
"chunks": [], "chunks": [],
"references": [ "references": [
{"reference_id": "2", "file_path": "/documents/ai_overview.pdf"} {
] "reference_id": "2",
"file_path": "/documents/ai_overview.pdf",
}
],
}, },
"metadata": { "metadata": {
"query_mode": "global", "query_mode": "global",
"keywords": { "keywords": {
"high_level": ["artificial", "intelligence", "overview"], "high_level": [
"low_level": [] "artificial",
} "intelligence",
} "overview",
} ],
"low_level": [],
},
},
},
}, },
"naive_mode": { "naive_mode": {
"summary": "Naive mode data retrieval", "summary": "Naive mode data retrieval",
@ -858,25 +885,25 @@ def create_query_routes(rag, api_key: Optional[str] = None, top_k: int = 60):
"content": "Deep learning is a subset of machine learning that uses neural networks with multiple layers...", "content": "Deep learning is a subset of machine learning that uses neural networks with multiple layers...",
"file_path": "/documents/deep_learning.pdf", "file_path": "/documents/deep_learning.pdf",
"chunk_id": "chunk-789", "chunk_id": "chunk-789",
"reference_id": "3" "reference_id": "3",
} }
], ],
"references": [ "references": [
{"reference_id": "3", "file_path": "/documents/deep_learning.pdf"} {
] "reference_id": "3",
"file_path": "/documents/deep_learning.pdf",
}
],
}, },
"metadata": { "metadata": {
"query_mode": "naive", "query_mode": "naive",
"keywords": { "keywords": {"high_level": [], "low_level": []},
"high_level": [], },
"low_level": [] },
} },
} },
}
}
}
} }
} },
}, },
400: { 400: {
"description": "Bad Request - Invalid input parameters", "description": "Bad Request - Invalid input parameters",
@ -884,15 +911,13 @@ def create_query_routes(rag, api_key: Optional[str] = None, top_k: int = 60):
"application/json": { "application/json": {
"schema": { "schema": {
"type": "object", "type": "object",
"properties": { "properties": {"detail": {"type": "string"}},
"detail": {"type": "string"}
}
}, },
"example": { "example": {
"detail": "Query text must be at least 3 characters long" "detail": "Query text must be at least 3 characters long"
} },
} }
} },
}, },
500: { 500: {
"description": "Internal Server Error - Data retrieval failed", "description": "Internal Server Error - Data retrieval failed",
@ -900,17 +925,15 @@ def create_query_routes(rag, api_key: Optional[str] = None, top_k: int = 60):
"application/json": { "application/json": {
"schema": { "schema": {
"type": "object", "type": "object",
"properties": { "properties": {"detail": {"type": "string"}},
"detail": {"type": "string"}
}
}, },
"example": { "example": {
"detail": "Failed to retrieve data: Knowledge graph unavailable" "detail": "Failed to retrieve data: Knowledge graph unavailable"
} },
} }
} },
} },
} },
) )
async def query_data(request: QueryRequest): async def query_data(request: QueryRequest):
""" """