Commit 496f92df by luoqi

feat(ai): 画像/历史联系摘要去掉「一句话」与字数约束

按反馈放开:画像标签、历史联系两处摘要的 prompt 去掉"只输出一句话/≤30-40字"等约束,
schema 去掉 .max(80) 与字数说明(保留 .min(4) 防空)。只留"重点提炼不罗列 + 不无中生有"取向。
promptVersion bump 到 -d,旧缓存已清,重生成不再被掐短。召回简报不动。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
parent 8b12272e
import type { DraftPersonaSummaryInput } from './input.types'; import type { DraftPersonaSummaryInput } from './input.types';
export const DRAFT_PERSONA_SUMMARY_PROMPT_VERSION = 'draft_persona_summary@2026-06-16-b'; export const DRAFT_PERSONA_SUMMARY_PROMPT_VERSION = 'draft_persona_summary@2026-06-16-d';
export const DRAFT_PERSONA_SUMMARY_SYSTEM = `你是牙科诊所客服主管。下面是一个患者的画像标签(结构化、一堆标签看着累)。请提炼成**一句话重点**,让接手客服**一眼抓住关键**,而不是逐条复述所有标签。 export const DRAFT_PERSONA_SUMMARY_SYSTEM = `你是牙科诊所客服主管。下面是一个患者的画像标签(结构化、一堆标签看着累)。请提炼成**重点**,让接手客服**一眼抓住关键**,而不是逐条复述所有标签。
# 关键要求 # 关键要求
1. 只输出**一句话**(中文,**≤30 字**最佳,最多 40 字),不要换行/列表/Markdown。 1. 输出中文,不要换行/列表/Markdown。
2. **是"重点提炼"不是"标签罗列"**:抓最值得注意的一两点——价值层级、流失风险、应治未治的项目、触达需注意的点(免打扰 / 屡次爽约 / 看牙恐惧)。**不要**把所有标签都念一遍。 2. **是"重点提炼"不是"标签罗列"**:抓最值得注意的一两点——价值层级、流失风险、应治未治的项目、触达需注意的点(免打扰 / 屡次爽约 / 看牙恐惧)。**不要**把所有标签都念一遍。
3. **只能用给出的标签里有的信息,严禁无中生有 / 拔高**: 3. **只能用给出的标签里有的信息,严禁无中生有 / 拔高**:
- 「潜在治疗」= 医生诊断或建议过、但患者**还没做**的治疗(临床应治未治的缺口),**不是患者的意愿**。只能说成"有种植/修复待跟进""缺牙待修复""有应治未治项",**绝不能**说成"有种植意向""想做""有意愿""考虑中"——那是另一类信息,这里没有。 - 「潜在治疗」= 医生诊断或建议过、但患者**还没做**的治疗(临床应治未治的缺口),**不是患者的意愿**。只能说成"有种植/修复待跟进""缺牙待修复""有应治未治项",**绝不能**说成"有种植意向""想做""有意愿""考虑中"——那是另一类信息,这里没有。
...@@ -29,5 +29,5 @@ export function buildDraftPersonaSummaryPrompt(input: DraftPersonaSummaryInput): ...@@ -29,5 +29,5 @@ export function buildDraftPersonaSummaryPrompt(input: DraftPersonaSummaryInput):
画像标签(共 ${input.items.length} 项): 画像标签(共 ${input.items.length} 项):
${lines} ${lines}
用一句话概括以上画像的重点。`; 请概括以上画像的重点。`;
} }
...@@ -5,9 +5,8 @@ export const DraftPersonaSummarySchema = z.object({ ...@@ -5,9 +5,8 @@ export const DraftPersonaSummarySchema = z.object({
summary: z summary: z
.string() .string()
.min(4) .min(4)
.max(80)
.describe( .describe(
'一句话中文画像重点(≤30 字最佳,最多 40 字,不带换行/列表/Markdown)。' + '中文画像重点(不带换行/列表/Markdown)。' +
'提炼最值得注意的一两点(价值层级 / 流失风险 / 应治未治项目 / 触达注意),' + '提炼最值得注意的一两点(价值层级 / 流失风险 / 应治未治项目 / 触达注意),' +
'让客服一眼抓住"这是谁、该怎么对待"。只用标签里有的信息,严禁无中生有:' + '让客服一眼抓住"这是谁、该怎么对待"。只用标签里有的信息,严禁无中生有:' +
'「潜在治疗」是应治未治的临床缺口,不是患者意愿,只能说"待跟进",不能说成"有意向/想做"。' + '「潜在治疗」是应治未治的临床缺口,不是患者意愿,只能说"待跟进",不能说成"有意向/想做"。' +
......
import type { DraftRecallSummaryInput } from './input.types'; import type { DraftRecallSummaryInput } from './input.types';
export const DRAFT_RECALL_SUMMARY_PROMPT_VERSION = 'draft_recall_summary@2026-06-16-b'; export const DRAFT_RECALL_SUMMARY_PROMPT_VERSION = 'draft_recall_summary@2026-06-16-d';
export const DRAFT_RECALL_SUMMARY_SYSTEM = `你是牙科诊所客服主管。下面是一个患者的历史联系/回访记录(结构化、看着累)。请提炼成**一句话重点**,让接手客服**一眼抓住关键**,而不是逐条复述。 export const DRAFT_RECALL_SUMMARY_SYSTEM = `你是牙科诊所客服主管。下面是一个患者的历史联系/回访记录(结构化、看着累)。请提炼成**重点**,让接手客服**一眼抓住关键**,而不是逐条复述。
# 关键要求 # 关键要求
1. 只输出**一句话**(中文,**≤30 字**最佳,最多 40 字),不要换行/列表/Markdown。 1. 输出中文,不要换行/列表/Markdown。
2. **是"重点提炼"不是"总结罗列"**:抓最值得注意的那一点——比如"近期联系密但未到诊""多次未接通""有种植意向待跟进""术后回访已完成、可推新项目"。**不要**把所有回访类型都列出来。 2. **是"重点提炼"不是"总结罗列"**:抓最值得注意的那一点——比如"近期联系密但未到诊""多次未接通""有种植意向待跟进""术后回访已完成、可推新项目"。**不要**把所有回访类型都列出来。
3. 优先突出**对下一步有用的信号**(还没接通 / 已表达意向 / 长期未到诊 / 刚成交别打扰 等)。 3. 优先突出**对下一步有用的信号**(还没接通 / 已表达意向 / 长期未到诊 / 刚成交别打扰 等)。
4. 客观,**禁止**承诺疗效、编造、给医疗建议。 4. 客观,**禁止**承诺疗效、编造、给医疗建议。
...@@ -38,5 +38,5 @@ export function buildDraftRecallSummaryPrompt(input: DraftRecallSummaryInput): s ...@@ -38,5 +38,5 @@ export function buildDraftRecallSummaryPrompt(input: DraftRecallSummaryInput): s
历史联系 / 回访记录(时间倒序,共 ${input.items.length} 条): 历史联系 / 回访记录(时间倒序,共 ${input.items.length} 条):
${lines} ${lines}
用一句话概括以上历史联系。`; 概括以上历史联系的重点。`;
} }
...@@ -5,9 +5,8 @@ export const DraftRecallSummarySchema = z.object({ ...@@ -5,9 +5,8 @@ export const DraftRecallSummarySchema = z.object({
summary: z summary: z
.string() .string()
.min(4) .min(4)
.max(80)
.describe( .describe(
'一句话中文回访历史摘要(≤60 字,不带换行/列表/Markdown)。' + '中文回访历史摘要(不带换行/列表/Markdown)。' +
'概括:联系过几次、主要结果(是否约到/拒绝/未接通)、是否有下次回访约定。' + '概括:联系过几次、主要结果(是否约到/拒绝/未接通)、是否有下次回访约定。' +
'客观陈述,不承诺疗效、不臆测。例:"近 3 次电话回访,1 次约到诊、2 次未接通,暂无下次约定。"', '客观陈述,不承诺疗效、不臆测。例:"近 3 次电话回访,1 次约到诊、2 次未接通,暂无下次约定。"',
), ),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment