- match: require candidate ordinal to equal the query ordinal in fuzzy search (deterministic typo recall 73% -> 80%, no wrong houses) - resolver: compatibleVariant guard — LLM may only fix street spelling, keeping the same words, ordinal and house unit; damerau distance for transpositions - llm: prompt moved out of code (go:embed default_prompt.txt) with llm.system_prompt / llm.system_prompt_file overrides; guided JSON parsing tolerant of thinking blocks - address: recognize ordinals appearing after the street name - tests: first coverage for the LLM adapter and config prompt loading; README Measured (sample 200): deterministic 94.7-95.8% exact / 0 wrong across 4 seeds; LLM+guard typo 90.7-89.8% / 0 wrong. LLM fallback latency ~1.2-1.9s.
27 lines
547 B
JSON
27 lines
547 B
JSON
{
|
|
"addr": ":6171",
|
|
"data_path": "registry.db",
|
|
"log_level": "info",
|
|
"resolve": {
|
|
"fuzzy_threshold": 0.82,
|
|
"ambiguity_margin": 0.06,
|
|
"max_candidates": 5
|
|
},
|
|
"portal": {
|
|
"url": "${ADDRKIT_PORTAL_URL}",
|
|
"timeout_seconds": 2,
|
|
"retries": 1
|
|
},
|
|
"llm": {
|
|
"enabled": false,
|
|
"url": "${ADDRKIT_LLM_URL}",
|
|
"token": "${ADDRKIT_LLM_TOKEN}",
|
|
"model": "qwen3-14b-awq",
|
|
"timeout_seconds": 3,
|
|
"max_tokens": 512,
|
|
"disable_thinking": true,
|
|
"system_prompt": "",
|
|
"system_prompt_file": ""
|
|
}
|
|
}
|