1) 現状の nlq-dev 構成(ツリーから読めること)
入口(API)
routers/nlq_plan.py:NLQ → plan を作る(現状ここが Router)routers/nlq_execute.py:plan を実行(現状ここが Executor)routers/nlq.py:たぶん統合エンドポイント(plan+execute or chat)routers/history.py:履歴routers/schema.py:スキーマ参照routers/chroma.py,routers/package.py:Chroma/パッケージ系(既存資産)
コアサービス(今回の修正主戦場)
services/nlq_plan.py:plan 生成ロジック(LLM①含む可能性高)services/nlq_stub.py:スタブ実装(開発用)services/graph_client.py:DeciKG/Neo4j 側のクライアントになり得るservices/sql_guard.py,services/sql_normalize.py:SQL生成/実行前提のガードservices/llm_client.py:LLMラッパservices/history_service.py:履歴永続化services/schema_service.py:スキーマ参照(どこのスキーマか要確認)
データモデル
schemas/nlq.py,schemas/execute.py,schemas/history.py:Plan/Execute/HistoryのPydantic- SQL DDL:
040_nlq_history.sql,050_nlq_pipeline.sql,060_nlq_history_artifacts.sql
2) 今回の議論(DeciKG優先)を入れるときの「修正点の当たり」
あなたの最新方針はこうでした:
- 数値だからSQLではない
- Mermaid/概念モデルに載っている対象は優先的にDeciKG(Cypher)を見る
- nlq-devは SQL/Cypher文を生成せず、QueryPlan(JSON) を生成して Route Executor が外部を叩く
これを既存構造に当てると、修正ポイントは主に 3箇所です。
A) Planのスキーマ&生成(Router)
- いま:
services/nlq_plan.pyが「SQL前提のplan」を作ってる可能性が高い - これから:planは route / preferred_source / concept_lookup / sql_params / cypher_params / merge.strategy を持つ必要あり
→ 変更対象: schemas/nlq.py(Planモデル拡張)services/nlq_plan.py(LLM①出力を QueryPlan に固定)routers/nlq_plan.py(入出力更新)
B) 実行(Route Executor を中心に再編)
- いま:
routers/nlq_execute.pyorservices/nlq_stub.pyが「SQL実行→結果→文章化」中心かも - これから:
SqlExecutor / CypherExecutor / HybridExecutor / ParallelExecutorを実装し、graph_client.pyと dev-portal 呼び出しをここへ集約
→ 変更対象: services/graph_client.py(Cypher実行+concept lookup が入る可能性)- 新設
services/route_executor.py(またはservices/executors/*) routers/nlq_execute.py(RouteExecutorを呼ぶだけに薄くする)schemas/execute.py(SQL結果+Graph結果+統合結果を保持)
C) 履歴/成果物(history + artifacts)
- いま:SQLだけ保存しているなら、routeやgraph結果の要約を保存できない
- これから:最低でも route / plan / 外部呼び出し要約 / 片系失敗 を履歴に残す
→ 変更対象: services/history_service.pyschemas/history.py- (必要なら)
060_nlq_history_artifacts.sqlの拡張
3) doc本文を見て「確定させたい観点」
次に貼ってくれる docs は、特にここを見たいです(ここが分かると修正が一気に確定します)。
- 現状の
nlq_planの出力フォーマット(Pydanticモデル) nlq_executeが何を入力にして何を返しているか(SQL文を持ってる?)graph_client.pyは今どこまで実装済みか(Neo4j接続・Cypher実行・ダミー?)- dev-portal との接続口が既にあるか(URL/認証/エンドポイント)
- history のスキーマ(plan/execute/answer/SQL/メタベースカード等をどう保存してるか)
4) 先に言っておく「たぶん要る作業」
docsを見て確定しますが、ほぼ確実に必要になるのは:
- Planスキーマを QueryPlan v1.1 相当に差し替え(route+preferred_source+concept_lookup)
- Executorを SQL単独前提から route分岐へ
sql_guard/sql_normalizeは “SQL_ONLY” と “HybridのSQLフェーズ” でのみ使う(常時適用しない)- executeの返却を (sql_result, graph_result, merged_result, narration) に分離
コメントを残す