15 分钟给客服反馈装上情绪风险筛查:用 llm 的 schema 与模板串起批量流水线
【免费下载链接】llmAccess large language models from the command-line项目地址: https://gitcode.com/gh_mirrors/llm/llm
客服后台每天沉淀几百条用户留言,偶尔藏着“最近撑不下去了”这种需要立刻人工跟进的信号,逐条人肉翻根本来不及。llm 是把大语言模型接进终端的命令行工具,内置结构化输出、提示词模板和嵌入向量库。读完可以用几条命令跑通单条筛查、模板复用与整文件批处理这条链路。
场景与价值:把反馈筛查变成可复用的流水线
从零自研要自己写 API 调用、解析模型返回的 JSON、再想办法存结果,每一步都可能出错;换成固定的情感分析模型,标签只有正面/中性/负面,给不出“判断依据 + 跟进建议”。用 llm 的做法是把整套流程压成命令行组合,核心能力有这么几条:
--schema结构化输出:让模型按你定义的字段返回风险等级、依据与建议,而不是一段自由文本- 模板机制:把“系统提示词 + schema”打包成一个名字,之后
llm -t 名字一条命令跑完 - 嵌入向量(
llm embed/llm similar)支持相似案例检索;本地模型插件可让敏感文本不出网
环境与准备:最小可运行配置
前置要求 Python 3.10+。用 pip 安装命令行工具(OpenAI 模型支持默认内置):
pip install llm装完后终端里能执行llm --version,返回一个版本号即安装成功。
把 API key 存一次(按提示粘贴),之后所有命令都不用再传:
llm keys set openai保存成功会返回一条确认信息。
(可选)跑llm models查看当前可用的模型与别名列表,方便后面在批量筛查时挑一个更便宜的模型。
相关文档:安装、API key 管理与日志开关
核心实操:从单条留言到整文件风险清单 🔍
第一步:单条留言跑通结构化提取
做什么:让模型读一条用户留言,输出情绪标签、风险等级(0-3)、判断依据和一句话跟进建议。字段用简洁语法传,冒号后的描述会作为提示给模型:
echo '最近连续失眠,感觉活着没什么意思' | llm \ --system '你是客服情绪风险筛查助手,只输出结构化结果。' \ --schema 'emotion: 情绪标签, risk int: 风险等级0到3, evidence: 判断依据, suggestion: 一句话跟进建议'你会看到一行符合字段的 JSON,比如{"emotion": "低落", "risk": 3, "evidence": "持续失眠且提到'活着没什么意思'", "suggestion": "建议24小时内人工回访"}。
容易踩的坑:别把类型写成risk: 0-3,那样该字段按字符串处理,模型可能直接返回“0-3”;显式写risk int声明整数。拿不准简洁语法是否正确,可先用llm schemas dsl '...'验证。
相关文档:Schemas 结构化输出与简洁语法
第二步:把筛查规则固化成模板
做什么:把上一步的系统提示词和 schema 打包成可复用模板,之后不必再复制长串参数:
llm --system '你是客服情绪风险筛查助手,只输出结构化结果。' \ --schema 'emotion: 情绪标签, risk int: 风险等级0到3, evidence: 判断依据, suggestion: 一句话跟进建议' \ --save risk-screen保存后用llm templates能看到risk-screen条目,之后任何文本直接管道喂入即可:
cat message.txt | llm -t risk-screen得到与第一步相同结构的 JSON 结果。这里的坑是一次只能使用一个模板,换模型要配合-m,模板内容可以随时用llm templates show risk-screen核对。
第三步:批量处理整份留言文件
做什么:把一批留言(每行一条)放进messages.txt,用 fragment 选项-f一次载入整个文件,--schema-multi让模型对每条留言各输出一个对象、外层包在items数组里:
llm -f messages.txt \ --system '逐条分析文件中的每条用户留言,分别给出情绪标签、风险等级(0到3)、判断依据和一句话跟进建议。' \ --schema-multi 'emotion: 情绪标签, risk int: 风险等级0到3, evidence: 判断依据, suggestion: 一句话跟进建议'看到{"items": [ ... ]},每条留言一个结构化对象。这些数据会同时写进本地 SQLite 日志,随时可用同一 schema 取回:
llm logs --schema-multi 'emotion, risk int, evidence, suggestion' \ --data-key items --data-array > screen_results.json得到一份可筛选、可入库的 JSON 数组风险清单,加--data-ids还能带上日志 ID 方便回溯原始 prompt。要留意的坑:批量是一次请求处理整个文件,文件过长会超出模型上下文,应拆分文件或退回逐行--schema。
相关文档:SQLite 日志查询与 --data 选项
进阶用法:向量库找相似案例与本地模型
用嵌入向量库做相似案例匹配
先设默认嵌入模型,再把历史高危留言写入cases集合(--store同时保存原文):
llm embed-models default 3-small llm embed cases case-001 -c '用户连续一周失眠,称对什么都没兴趣' --store llm similar cases -c '最近总睡不着,提不起劲'similar命令按相似度返回集合中的条目,JSON 行里带id、score和content,新留言进来时可以直接调出历史案例的处理经验。坑在于:集合的模型在首次写入时就固定了,不同嵌入模型不要混写进同一个集合。
相关文档:Embeddings CLI:embed 与 similar
敏感数据切到本地模型
文本含个人信息、不想出网时,装一个本地模型插件,模板调用时加-m即可:
llm install llm-ollama llm -t risk-screen -m <本地模型ID>本地模型推理更慢、结构化输出不如云端模型稳,更适合隐私要求高、对速度不敏感的场景。
边界与注意:提前说好的几件事
- 风险等级是模型的判断,同一条留言在不同模型下打分可能不同;高危案例必须人工复核,输出不能当诊断依据
- 留言属于不可信外部文本,若开启
--functions等工具能力,要防提示注入——模型可能被文本诱导执行非预期动作 - 所有 prompt 与结果默认写入本地 SQLite 日志,文本含个人数据时优先本地模型,或
llm logs off关闭日志 llm similar目前是暴力检索,百万级案例库不适用- 各模型对 schema 的支持程度不同,换模型前先确认它支持结构化输出
流水线已经跑通,下一步看 Schemas 文档把字段扩展成自己的工单结构,或按插件目录接入本地模型。
【免费下载链接】llmAccess large language models from the command-line项目地址: https://gitcode.com/gh_mirrors/llm/llm
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考