28 lines
1023 B
Python
28 lines
1023 B
Python
"""面向其他 Agent 的数据查询适配器。"""
|
|
from __future__ import annotations
|
|
|
|
from uuid import uuid4
|
|
|
|
from nl2sql.contracts import DataQueryRequest
|
|
from nl2sql.streaming import stream_query_events
|
|
from service.nl2sql.query_service import execute_query
|
|
|
|
|
|
class DataQueryAgent:
|
|
"""只依赖公共查询服务,不直接调用其他 Agent 或基础设施。"""
|
|
|
|
async def query(self, request: DataQueryRequest, **dependencies):
|
|
"""转发查询请求,缺省生成内部查询 ID。"""
|
|
dependencies.setdefault("query_id", uuid4().hex)
|
|
return await execute_query(request, **dependencies)
|
|
|
|
async def stream(self, request: DataQueryRequest, **dependencies):
|
|
"""以结构化事件流转发查询,不暴露 SQL、结果行和异常消息。"""
|
|
dependencies.setdefault("query_id", uuid4().hex)
|
|
async for event in stream_query_events(
|
|
request,
|
|
query_runner=execute_query,
|
|
**dependencies,
|
|
):
|
|
yield event
|