e-pigeon 后端 · LLM 调用场景索引

分章浏览。完整说明见 首页�?/p>

商家知识库与用户-商家沟�?/h2>

橙黄边条�?strong>RAG 整理 / UMC 偏好推断等单�?LLM 请求�?strong>白底卡片�?code>merchant_kb_ctx / tool suffix 在主对话里的挂载方式说明�?/p>

structure_merchant_kb_*(整理为 RAG 检索句�?/h3>
app/routers/merchant_kb.py · LLMClient.for_merchant_kb_structure()

可配置独�?DeepSeek key;system 要求多句一行、兼顾检索与商家独特性�?/p>

展开:_structure_merchant_kb_rag_summary_lines · system
你是商家知识库与向量检索(RAG)编写助手。用户提供的是与该商家、某条知识相关的原始文字(可复制自文档、网页或笔记)�?请将其改写为**多条中文单句**,严�?*一句一�?*(句间仅用换行分隔,句末可用句号)。每一句须�?*完整陈述**,可单独被语义检索命中�?
每一句必须同时体现两方面�?1) **共�?可检索面**:含有用户常会问到的**通用角度**(如营业时段、位置到达、预约、消费水平与价位档次、适用人群、注意事项等同类门店常被检索的需求),用语贴近真实用户问法,便于与广泛查询对齐�?2) **独特�?*:在涵盖上述角度的前提下�?*显式写入本条知识中该商家与众不同、不可替代的信息**(店名地标、独有规则、专属服务、本地特色等),避免只有放之四海皆准的空话;**此处用定性描述即�?*(如价位感受、时段特点、拥挤程度、服务风格)�?*勿写具体数字**(金额、精确时刻、编号、定量上限等一律改写为定性说法)�?
硬性规则:
- 只输出这些句子本身,不要开场白、章节标题、列表符号或 Markdown 代码块�?- 信息须能**在原文中找到依据**�?*专名、地名、店名等地标可保�?*�?*禁止臆�?*�?- 原文很短时可只输�?1�? 句;信息多则多分句,每句聚焦一个可检索要点,忌一句堆砌全部细节�?/pre>
          

merchant_kb_ctx · 主对话挂载的商家知识正文�?/h3>
拼装�?app/routers/matches.py · _assemble_chat_system_final

商家咨询链路下,非工具轮或首轮检索得到的 KB 概要写入 system(与向量命中展示格式以源码为准)�?/p>

展开:与主对话挂载关�?· 修改备忘
主对话中�?merchant_kb_ctx �?app/rag/merchant_chat_context.py · _format_injection 等拼装,典型结构(段落以空行连接):

【商家会话参考(知识块已与本轮会话挂接,未调用结束工具前不再重新检索替换)】或【商家会话参考(本轮新检索并挂接知识块)�?对接商家 merchant_user_id 对应对外名称�?*{商家名}**(可在适当时委婉确认用户是否需要了解)
(可选)cosine 检索说明句
【店铺基本资料】�?【知识库·知识块目录】(启用分类下块标题�?code>format_merchant_kb_catalog_for_system,行数上限默�?200�?若含目录则追�?MERCHANT_KB_TITLE_TOOL_INSTRUCTION(扩展知识块 / block_id 工具说明�?若干【挂接知识块 i/n】标题:�?正文:…(_format_kb_sections,正文长度按块数分摊 cap�?最后追�?_MERCHANT_CHAT_POLICY(商家信息使用规范,含结束工具、补拉工具说明)�?
── resolve_merchant_kb_chat_turn · 隐式挂接门控(非 LLM,与 Milvus 检索同级)──
全库隐式检索(请求体未�?merchant_user_id、且无已�?pin)前:用户句去空白后字数�?�?MERCHANT_KB_CHAT_IMPLICIT_MIN_QUERY_CHARS(默�?6�?env 可配);不足�?skip_implicit_short_query,不�?Milvus、不�?pin�?显式单店 scoped 检索不受此限。挂接余弦阈值见 MERCHANT_KB_CHAT_MIN_COSINE(默�?0.62);全库隐式命中后还须过 UMC 门禁 merchant_shop_implicit_kb_auto_pin_allowed�?/pre>
          

merchant_kb_tool_suffix · 商家工具�?system 尾部补注

拼装�?app/routers/matches.py · _assemble_chat_system_final

工具轮动态追加的可取块清单、已�?block 提示等后缀(具体内容随轮次累积)�?/p>

展开:与主对话挂载关�?· 修改备忘
工具轮追加段�?code>format_merchant_kb_tool_fetched_append)固定头�?
【按目录 block_id/标题补注知识块(追加于上方挂接块之后)�?【挂接知识块 1/n】标题:�?正文�?�?(正�?cap 随块数变化;与上方挂接块同形。)

infer_user_merchant_preference_score �?/h3>
app/user_merchant_communication.py · infer_and_patch_merchant_communication_preference_async

对用�?店沟通节选打偏好分、≤10 字态度摘要;实现为 llm_client 内强�?tool�?code>infer_merchant_comm_touch_bundle / infer_merchant_comm_attitude 等),详见对�?async def�?/p>

展开:UMC 偏好推断 · 修改备忘
── infer_user_merchant_preference_score · system ──
你只负责调用工具 infer_consumer_merchant_preference,不要输出自然语言。严禁把「静默超时」「会话结束工具」等非对话字样当作压低分数的唯一理由。preference_score 只能�?0 �?5 的整数(含端点);勿输出负数或大�?5�?
user 块含:可选【讨论的商家对外名称】、可选【本条连续商家沟�?user 气泡数】、【本轮节选(与同店连续商家沟通相关)】正文�?
── infer_merchant_communication_attitude_snippet_only · system ──
你只负责调用工具 infer_merchant_comm_attitude;不要输出自然语言。attitude_snippet_zh **必填**:简体中�?2�?0 个字,概括或摘录用户对该店的态度;禁止空串、禁止仅标点�?
── infer_merchant_communication_preference_and_attitude_snippet · system ──
你只负责调用工具 infer_merchant_comm_touch_bundle,不要输出自然语言。preference_score 只能�?0 �?5(整数)。attitude_snippet_zh **必填**:简体中�?2�?0 个字,概括用户对该店的态度或当轮沟通基调;不必逐字摘录用户话;禁止空串、禁止仅标点�?/pre>