АРЧ - UI и domain loop: синхронизировать локальную LLM-модель через shared config + КВИН 3
This commit is contained in:
@@ -19,14 +19,15 @@ DEFAULT_ARTIFACTS_ROOT = REPO_ROOT / "artifacts" / "domain_runs"
|
||||
DEFAULT_SESSIONS_DIR = REPO_ROOT / "llm_normalizer" / "data" / "assistant_sessions"
|
||||
DEFAULT_REPORTS_DIR = REPO_ROOT / "llm_normalizer" / "reports"
|
||||
DEFAULT_LOOP_SCHEMA_DIR = REPO_ROOT / "docs" / "orchestration" / "schemas"
|
||||
SHARED_LLM_CONNECTION_CONFIG = REPO_ROOT / "llm_normalizer" / "data" / "shared_llm_connection.json"
|
||||
DEFAULT_BACKEND_URL = "http://127.0.0.1:8787"
|
||||
DEFAULT_PROMPT_VERSION = "address_query_runtime_v1"
|
||||
DEFAULT_LLM_PROVIDER = "local"
|
||||
DEFAULT_LLM_MODEL = "qwen2.5-14b-instruct-1m"
|
||||
DEFAULT_LLM_BASE_URL = "http://127.0.0.1:1234/v1"
|
||||
BASE_DEFAULT_LLM_PROVIDER = "local"
|
||||
BASE_DEFAULT_LLM_MODEL = "qwen2.5-14b-instruct-1m"
|
||||
BASE_DEFAULT_LLM_BASE_URL = "http://127.0.0.1:1234/v1"
|
||||
DEFAULT_LLM_API_KEY = ""
|
||||
DEFAULT_TEMPERATURE = 0.0
|
||||
DEFAULT_MAX_OUTPUT_TOKENS = 900
|
||||
BASE_DEFAULT_TEMPERATURE = 0.0
|
||||
BASE_DEFAULT_MAX_OUTPUT_TOKENS = 900
|
||||
TECH_SECTION_HEADER = "### technical_debug_payload_json"
|
||||
SCENARIO_MANIFEST_SCHEMA_VERSION = "domain_scenario_manifest_v1"
|
||||
SCENARIO_STATE_SCHEMA_VERSION = "domain_scenario_state_v1"
|
||||
@@ -35,6 +36,51 @@ SCENARIO_PACK_SCHEMA_VERSION = "domain_scenario_pack_v1"
|
||||
ACTIVE_DOMAIN_CONTRACT_SCHEMA_VERSION = "active_domain_contract_v1"
|
||||
AUTONOMOUS_LOOP_SCHEMA_VERSION = "domain_autonomous_loop_v1"
|
||||
|
||||
|
||||
def load_shared_local_llm_defaults(config_path: Path | None = None) -> dict[str, Any]:
|
||||
defaults: dict[str, Any] = {
|
||||
"llm_provider": BASE_DEFAULT_LLM_PROVIDER,
|
||||
"llm_model": BASE_DEFAULT_LLM_MODEL,
|
||||
"llm_base_url": BASE_DEFAULT_LLM_BASE_URL,
|
||||
"temperature": BASE_DEFAULT_TEMPERATURE,
|
||||
"max_output_tokens": BASE_DEFAULT_MAX_OUTPUT_TOKENS,
|
||||
}
|
||||
target = config_path or SHARED_LLM_CONNECTION_CONFIG
|
||||
if not target.exists():
|
||||
return defaults
|
||||
try:
|
||||
raw = json.loads(target.read_text(encoding="utf-8"))
|
||||
except (OSError, json.JSONDecodeError):
|
||||
return defaults
|
||||
connection = raw.get("connection")
|
||||
if not isinstance(connection, dict):
|
||||
return defaults
|
||||
if str(connection.get("llmProvider") or "").strip().lower() != "local":
|
||||
return defaults
|
||||
|
||||
model = str(connection.get("model") or "").strip()
|
||||
base_url = str(connection.get("baseUrl") or "").strip()
|
||||
temperature = connection.get("temperature")
|
||||
max_output_tokens = connection.get("maxOutputTokens")
|
||||
|
||||
if model:
|
||||
defaults["llm_model"] = model
|
||||
if base_url:
|
||||
defaults["llm_base_url"] = base_url
|
||||
if isinstance(temperature, (int, float)) and not isinstance(temperature, bool):
|
||||
defaults["temperature"] = float(temperature)
|
||||
if isinstance(max_output_tokens, (int, float)) and not isinstance(max_output_tokens, bool):
|
||||
defaults["max_output_tokens"] = max(1, int(max_output_tokens))
|
||||
return defaults
|
||||
|
||||
|
||||
SHARED_LLM_DEFAULTS = load_shared_local_llm_defaults()
|
||||
DEFAULT_LLM_PROVIDER = str(SHARED_LLM_DEFAULTS["llm_provider"])
|
||||
DEFAULT_LLM_MODEL = str(SHARED_LLM_DEFAULTS["llm_model"])
|
||||
DEFAULT_LLM_BASE_URL = str(SHARED_LLM_DEFAULTS["llm_base_url"])
|
||||
DEFAULT_TEMPERATURE = float(SHARED_LLM_DEFAULTS["temperature"])
|
||||
DEFAULT_MAX_OUTPUT_TOKENS = int(SHARED_LLM_DEFAULTS["max_output_tokens"])
|
||||
|
||||
TOP_LEVEL_NOISE_PATTERNS = (
|
||||
re.compile(r"^(?:status|статус(?: результата)?)\b", re.IGNORECASE),
|
||||
re.compile(r"^(?:что учтено|сводка)\b", re.IGNORECASE),
|
||||
|
||||
Reference in New Issue
Block a user