feat: 添加线索引擎、NLQ、场景检测、前端界面等核心功能模块
This commit is contained in:
@@ -4,7 +4,7 @@ from __future__ import annotations
|
||||
|
||||
from app.config import EGRESS_PROVIDERS, LLMProviderName, Settings, get_settings
|
||||
from app.llm.base import LLMProvider
|
||||
from app.llm.providers import DashScopeProvider, VllmProvider
|
||||
from app.llm.providers import DashScopeProvider, MockProvider, VllmProvider
|
||||
|
||||
|
||||
class EgressPolicyError(RuntimeError):
|
||||
@@ -27,5 +27,7 @@ def get_llm_provider(settings: Settings | None = None) -> LLMProvider:
|
||||
)
|
||||
if settings.llm_provider == LLMProviderName.vllm:
|
||||
return VllmProvider(base_url=settings.vllm_base_url, model=settings.vllm_model)
|
||||
if settings.llm_provider == LLMProviderName.mock:
|
||||
return MockProvider()
|
||||
|
||||
raise ValueError(f"未知的 LLM Provider: {settings.llm_provider}")
|
||||
|
||||
@@ -78,3 +78,31 @@ class VllmProvider(LLMProvider):
|
||||
return resp.status_code == 200
|
||||
except httpx.HTTPError:
|
||||
return False
|
||||
|
||||
|
||||
class MockProvider(LLMProvider):
|
||||
"""本地确定性 Mock Provider:开发/测试用,不出域、不依赖外网。
|
||||
|
||||
返回可预测的回显内容,便于在无 API Key / 无 GPU 时打通链路与自动化测试。
|
||||
"""
|
||||
|
||||
name = "mock"
|
||||
egress = False
|
||||
|
||||
def __init__(self, model: str = "mock-llm") -> None:
|
||||
self._model = model
|
||||
|
||||
def chat(self, messages: list[ChatMessage], **kwargs) -> LLMResponse:
|
||||
last_user = next(
|
||||
(m.content for m in reversed(messages) if m.role == "user"), ""
|
||||
)
|
||||
return LLMResponse(
|
||||
content=f"[mock] 收到查询:{last_user}",
|
||||
model=self._model,
|
||||
provider=self.name,
|
||||
egress=False,
|
||||
raw={"echo": last_user},
|
||||
)
|
||||
|
||||
def health(self) -> bool:
|
||||
return True
|
||||
|
||||
Reference in New Issue
Block a user