Фиксация изменений
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from app.modules.rag.intent_router_v2.models import LayerQuery, RepoContext
|
||||
|
||||
|
||||
class LayerQueryBuilder:
|
||||
def build(self, intent: str, repo_context: RepoContext, *, domains: list[str], layers_map: dict[str, list[tuple[str, int]]]) -> list[LayerQuery]:
|
||||
available = set(repo_context.available_layers or [])
|
||||
result: list[LayerQuery] = []
|
||||
for layer_id, top_k in layers_map[intent]:
|
||||
if not self._layer_matches_domains(layer_id, domains):
|
||||
continue
|
||||
if available and layer_id not in available:
|
||||
continue
|
||||
result.append(LayerQuery(layer_id=layer_id, top_k=top_k))
|
||||
if result:
|
||||
return result
|
||||
return [
|
||||
LayerQuery(layer_id=layer_id, top_k=top_k)
|
||||
for layer_id, top_k in layers_map[intent]
|
||||
if self._layer_matches_domains(layer_id, domains)
|
||||
]
|
||||
|
||||
def _layer_matches_domains(self, layer_id: str, domains: list[str]) -> bool:
|
||||
if domains == ["CODE"]:
|
||||
return layer_id.startswith("C")
|
||||
if domains == ["DOCS"]:
|
||||
return layer_id.startswith("D")
|
||||
return layer_id.startswith("C") or layer_id.startswith("D")
|
||||
Reference in New Issue
Block a user