You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.6 KiB
Python
52 lines
1.6 KiB
Python
# backend/app/agents/connectors_bridge.py
|
|
# CONNECTOR_KNOWLEDGE 라우팅 — 웹검색/지식 출처 커넥터.
|
|
from ..config import get_settings
|
|
|
|
|
|
class MockSearchConnector:
|
|
"""시드 기반 출처(research-data.js 출처군: 논문 3 / 뉴스 5 / 보고서 2)를 반환.
|
|
오프라인에서도 종합 리포트가 생성되도록 데모 결정성을 보장."""
|
|
|
|
SEED_HITS = (
|
|
[
|
|
{
|
|
"title": f"학술 논문 {i + 1}",
|
|
"url": "",
|
|
"kind": "pdf",
|
|
"snippet": "추론 비용의 병목은 메모리 대역폭",
|
|
"group": "논문",
|
|
}
|
|
for i in range(3)
|
|
]
|
|
+ [
|
|
{
|
|
"title": f"뉴스 기사 {i + 1}",
|
|
"url": "",
|
|
"kind": "web",
|
|
"snippet": "HBM4 양산 경쟁",
|
|
"group": "뉴스",
|
|
}
|
|
for i in range(5)
|
|
]
|
|
+ [
|
|
{
|
|
"title": f"산업 보고서 {i + 1}",
|
|
"url": "",
|
|
"kind": "pdf",
|
|
"snippet": "데이터센터 전력 규제",
|
|
"group": "보고서·블로그",
|
|
}
|
|
for i in range(2)
|
|
]
|
|
)
|
|
|
|
def search(self, query: str, k: int = 8) -> list[dict]:
|
|
return self.SEED_HITS[:k]
|
|
|
|
|
|
def get_knowledge_connector():
|
|
mode = getattr(get_settings(), "connector_knowledge", "mock")
|
|
if mode == "real": # phase-13 (Tavily/검색 API 등)
|
|
raise NotImplementedError("phase-13: real knowledge connector")
|
|
return MockSearchConnector()
|