金融场景 Prompt 的合规设计:不能推荐不能说,但要说清楚为什么 金融场景 Prompt 的合规设计不能推荐不能说但要说清楚为什么一、个性化深度引言金融场景的 Prompt 设计和其他领域完全不同。普通场景的 Prompt 目标是“让模型尽可能准确地完成任务”金融场景的目标是“在不对用户造成损失的前提下提供信息”。一次内部测试中模型在回答“推荐一个好的理财产品”时给出了一串代码编号。这看起来是“成功完成任务”但在合规审核中被判定为最高级别违规。金融 AI 不是不能说话而是不能在错误的时间说错误的话。见证奇迹的时刻在于当我们把合规约束从“事后过滤”前移到“Prompt 设计层”时模型拒绝给出投资建议的同时还能解释“为什么不建议”。二、个性化原理剖析金融 Prompt 的合规四层架构合规提示词的核心原则不推荐原则不输出任何具体金融产品名称或代码不预测原则不对市场涨跌做确定性预测不操作原则不执行任何交易、转账、投资操作可解释原则拒绝建议时必须解释拒绝的原因可追溯原则所有数据引用必须标注来源日期意图分类的决策树用户输入经过三层分类第一层是否涉及金融话题→ 否正常回答→ 是进入第二层第二层是否涉及具体产品/建议→ 否基于公开信息回答→ 是进入第三层第三层是否是分析性请求→ 是可以提供分析框架和方法论但不能给结论→ 否必须给出合规拒绝回复三、个性化代码实践from typing import Dict, List, Tuple from enum import Enum from dataclasses import dataclass class IntentType(Enum): 用户意图分类 NON_FINANCIAL 非金融话题 FINANCIAL_INFO 金融资讯 # 问定义/概念 FINANCIAL_ANALYSIS 金融分析 # 问分析方法/框架 FINANCIAL_ADVICE 金融建议 # 问推荐/预测 FINANCIAL_ACTION 金融操作 # 要求执行交易 dataclass class ComplianceResponse: 合规回复结构 intent: IntentType can_answer: bool response_text: str disclaimer: str data_sources: List[str] class FinancialPromptGuard: 金融场景 Prompt 合规守卫 # 设计原因关键词不是唯一判断标准但作为第一道防线 ADVICE_KEYWORDS [ 推荐, 建议, 哪个好, 买什么, 该不该, 何时买入, 何时卖出, 预测, 会不会涨, 一定能, 保证, 稳赚, 必涨, 必跌, 理财产品编号, 基金代码, 股票代码, ] ANALYSIS_KEYWORDS [ 怎么分析, 方法论, 评价体系, 怎么看, 估值方法, 技术指标, 基本面, 如何判断, ] INFO_KEYWORDS [ 什么是, 定义, 解释, 区别, 概念, ] DISCLAIMER ( \n\n---\n 免责声明以上内容仅为信息参考不构成任何投资建议。 投资有风险决策需谨慎。具体投资决策请咨询持牌金融机构。 ) COMPLIANCE_REFUSAL_TEMPLATES { IntentType.FINANCIAL_ADVICE: ( 关于您提到的产品/策略我不能给出具体的推荐或预测。\n\n 原因\n 1. 每个人的财务状况和风险承受能力不同适合的产品也不同\n 2. 市场受多重因素影响短期走势难以预测\n 3. 根据合规要求AI 不应替代专业的投资顾问。\n\n 建议\n - 如果想了解分析方法我可以介绍相关的分析框架\n - 如有投资需求建议咨询持牌金融机构 ), IntentType.FINANCIAL_ACTION: ( 我不能执行任何金融交易操作。\n\n 请通过您开户机构的官方渠道App/网银/柜台进行操作。 ), } def __init__(self): # 设计原因规则引擎做第一层LLM 做第二层 # 规则保证底线LLM 保证灵活性 pass def classify_intent(self, user_input: str) - IntentType: 意图分类 # 设计原因先检查最高风险意图安全优先 # 检查操作类最高风险 action_patterns [帮我买, 帮我卖, 买入, 卖出, 下单, 转账] for pattern in action_patterns: if pattern in user_input: return IntentType.FINANCIAL_ACTION # 检查建议类高风险 advice_count sum( 1 for kw in self.ADVICE_KEYWORDS if kw in user_input ) if advice_count 0: return IntentType.FINANCIAL_ADVICE # 检查分析类中风险 analysis_count sum( 1 for kw in self.ANALYSIS_KEYWORDS if kw in user_input ) if analysis_count 0: return IntentType.FINANCIAL_ANALYSIS # 检查信息类低风险 info_count sum( 1 for kw in self.INFO_KEYWORDS if kw in user_input ) if info_count 0 or any( term in user_input for term in [利率, 通胀, GDP, ETF, 基金, 股票, 期货] ): return IntentType.FINANCIAL_INFO return IntentType.NON_FINANCIAL def handle_financial_query(self, user_input: str) - ComplianceResponse: 处理金融查询 intent self.classify_intent(user_input) # 设计原因建议和操作类必须拦截不能交给 LLM 自由生成 if intent in [IntentType.FINANCIAL_ADVICE, IntentType.FINANCIAL_ACTION]: return ComplianceResponse( intentintent, can_answerFalse, response_textself.COMPLIANCE_REFUSAL_TEMPLATES[intent], disclaimerself.DISCLAIMER, data_sources[], ) # 分析类允许回答方法论但需要加免责声明 if intent IntentType.FINANCIAL_ANALYSIS: return ComplianceResponse( intentintent, can_answerTrue, response_text, # 交给 LLM 生成 disclaimerself.DISCLAIMER, data_sources[请用户自行查阅最新市场数据], ) # 信息类允许回答标注信息来源 if intent IntentType.FINANCIAL_INFO: return ComplianceResponse( intentintent, can_answerTrue, response_text, # 交给 LLM 生成 disclaimerself.DISCLAIMER, data_sources[公开市场数据], ) return None # 非金融不走合规处理 def build_compliance_prompt( self, user_input: str, base_prompt: str ) - str: 构建带合规约束的 Prompt intent self.classify_intent(user_input) if intent IntentType.NON_FINANCIAL: return base_prompt # 设计原因合规约束直接注入 System Prompt不是事后追加 # 事后追加可能被模型忽略 compliance_rules # 合规要求严格遵循 1. 不推荐任何具体金融产品名称或代码 2. 不做确定性涨跌预测 3. 所有数据引用必须标注来源和时间 4. 回复末尾必须附加免责声明 5. 如果用户要求投资建议给出分析框架而非结论 return compliance_rules \n base_prompt # 使用示例 guard FinancialPromptGuard() test_cases [ 推荐一个好的基金给我, 怎么分析一只股票的投资价值, ETF 和普通基金有什么区别, 帮我买入 1000 股贵州茅台, ] for query in test_cases: intent guard.classify_intent(query) response guard.handle_financial_query(query) print(f输入{query}) print(f意图{intent.value}) print(f可回答{response.can_answer}) print(f回复{response.response_text[:100]}...) print(---)四、个性化边界权衡合规策略安全性信息量用户满意度误杀率完全屏蔽金融话题100%0%极低100%关键词硬过滤95%40%低15%意图分类 合规 Prompt90%75%中5%意图分类 合规 Prompt LLM 审核98%70%中高3%关键权衡安全 vs 可用完全屏蔽最安全但用户会流失。意图分类在安全性和可用性之间寻找平衡。规则 vs 模型判断关键词规则简单可靠但误杀率高LLM 判断更灵活但存在绕过风险。建议规则做一层过滤 LLM 做二层判断。拒绝 vs 引导拒绝回答是最简单的方案但不友好。更好的做法是拒绝建议的同时引导用户去了解分析方法或咨询专业机构。五、总结金融场景的 Prompt 合规设计是一个多层次约束系统。核心原则是不推荐、不预测、不操作、可解释、可追溯。技术上建议采用意图分类 分级处理的架构建议类和操作类必须在规则层拦截不交给 LLM 自由生成分析类和信息类允许回答但需注入合规约束和免责声明。意图分类逻辑应基于关键词 语义理解的混合方案关键词规则保证底线漏网率趋近 0语义模型保证灵活性降低误杀率。拒绝回复的设计要点是说清楚拒绝原因引导用户转向合法的信息获取渠道。

本月热点