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

分章浏览。完整说明见 首页

商家知识库与用户-商家沟通

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

structure_merchant_kb_*(整理为 RAG 检索句)

app/routers/merchant_kb.py · LLMClient.for_merchant_kb_structure()

可配置独立 DeepSeek key;system 要求多句一行、兼顾检索与商家独特性。

展开:_structure_merchant_kb_rag_summary_lines · system
你是商家知识库与向量检索(RAG)编写助手。用户提供的是与该商家、某条知识相关的原始文字(可复制自文档、网页或笔记)。
请将其改写为**多条中文单句**,严格**一句一行**(句间仅用换行分隔,句末可用句号)。每一句须是**完整陈述**,可单独被语义检索命中。

每一句必须同时体现两方面:
1) **共性/可检索面**:含有用户常会问到的**通用角度**(如营业时段、位置到达、预约、消费水平与价位档次、适用人群、注意事项等同类门店常被检索的需求),用语贴近真实用户问法,便于与广泛查询对齐。
2) **独特性**:在涵盖上述角度的前提下,**显式写入本条知识中该商家与众不同、不可替代的信息**(店名地标、独有规则、专属服务、本地特色等),避免只有放之四海皆准的空话;**此处用定性描述即可**(如价位感受、时段特点、拥挤程度、服务风格),**勿写具体数字**(金额、精确时刻、编号、定量上限等一律改写为定性说法)。

硬性规则:
- 只输出这些句子本身,不要开场白、章节标题、列表符号或 Markdown 代码块。
- 信息须能**在原文中找到依据**;**专名、地名、店名等地标可保留**;**禁止臆造**。
- 原文很短时可只输出 1~2 句;信息多则多分句,每句聚焦一个可检索要点,忌一句堆砌全部细节。

merchant_kb_ctx · 主对话挂载的商家知识正文段

拼装见 app/routers/matches.py · _assemble_chat_system_final

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

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

【商家会话参考(知识块已与本轮会话挂接,未调用结束工具前不再重新检索替换)】或【商家会话参考(本轮新检索并挂接知识块)】
对接商家 merchant_user_id 对应对外名称:**{商家名}**(可在适当时委婉确认用户是否需要了解)
(可选)cosine 检索说明句
【店铺基本资料】…
【知识库·知识块目录】(启用分类下块标题;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。

merchant_kb_tool_suffix · 商家工具轮 system 尾部补注

拼装见 app/routers/matches.py · _assemble_chat_system_final

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

展开:与主对话挂载关系 · 修改备忘
工具轮追加段(format_merchant_kb_tool_fetched_append)固定头:

【按目录 block_id/标题补注知识块(追加于上方挂接块之后)】
【挂接知识块 1/n】标题:…
正文:
…
(正文 cap 随块数变化;与上方挂接块同形。)

infer_user_merchant_preference_score 等

app/user_merchant_communication.py · infer_and_patch_merchant_communication_preference_async

对用户-店沟通节选打偏好分、≤10 字态度摘要;实现为 llm_client 内强制 tool(infer_merchant_comm_touch_bundle / infer_merchant_comm_attitude 等),详见对应 async def

展开: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~10 个字,概括或摘录用户对该店的态度;禁止空串、禁止仅标点。

── infer_merchant_communication_preference_and_attitude_snippet · system ──
你只负责调用工具 infer_merchant_comm_touch_bundle,不要输出自然语言。preference_score 只能取 0 到 5(整数)。attitude_snippet_zh **必填**:简体中文 2~10 个字,概括用户对该店的态度或当轮沟通基调;不必逐字摘录用户话;禁止空串、禁止仅标点。