Skip to content

Prompt Engineering — 提示词工程

核心原则

好的 Prompt 应该:角色明确、任务清晰、格式约束、示例引导

基础技巧

角色设定

python
system_prompt = """
你是一位拥有15年经验的银行信贷风险分析师,专注于:
- 企业信用评估和贷款审批
- 财务报表分析和风险识别
- 金融监管合规

回答要求:
1. 基于数据和事实,避免主观臆断
2. 风险评估要量化,给出具体数值
3. 建议要可操作,避免空泛表述
4. 涉及不确定信息时明确说明
"""

结构化输出

python
prompt = """
分析以下企业的贷款申请,按照指定格式输出:

企业信息:
- 公司名称:{company}
- 成立年限:{years}
- 年营收:{revenue}万元
- 资产负债率:{debt_ratio}%

请按以下 JSON 格式输出分析结果:
{{
  "risk_level": "高/中/低",
  "risk_score": 0-100的整数,
  "key_risks": ["风险1", "风险2", "风险3"],
  "recommendation": "批准/拒绝/条件批准",
  "conditions": "如果条件批准,列出具体条件",
  "reasoning": "简要说明判断依据"
}}
"""

Chain-of-Thought(思维链)

python
cot_prompt = """
分析以下贷款申请的风险,请一步步思考:

企业:某科技公司
- 成立2年
- 年营收300万
- 负债率75%
- 主营AI软件开发

请按以下步骤分析:

第一步:分析企业基本面
- 成立时间:...
- 业务稳定性:...

第二步:分析财务状况
- 营收规模评估:...
- 负债率分析:...

第三步:行业风险评估
- AI软件行业特点:...
- 市场竞争情况:...

第四步:综合风险评级
- 综合以上分析,风险等级为:...
- 建议:...
"""

Few-Shot 示例

python
few_shot_prompt = """
你是信贷风险评估专家。根据企业信息给出风险评级。

示例1:
输入:成立8年,年营收2000万,负债率45%,制造业
输出:低风险(评分85)- 经营稳定,财务健康,行业成熟

示例2:
输入:成立1年,年营收100万,负债率85%,互联网创业
输出:高风险(评分25)- 经营时间短,高负债,盈利不确定

示例3:
输入:成立5年,年营收800万,负债率60%,餐饮连锁
输出:中风险(评分60)- 有一定经营历史,负债偏高,行业竞争激烈

现在评估:
输入:{company_info}
输出:
"""

输出格式控制

python
# Markdown 格式
markdown_prompt = """
生成一份信贷评估报告,使用 Markdown 格式,包含以下章节:
## 企业概况
## 财务分析
## 风险评估
## 授信建议

企业信息:{info}
"""

# 表格格式
table_prompt = """
对比分析以下三家银行的风险指标,以 Markdown 表格输出:
| 指标 | 招商银行 | 平安银行 | 兴业银行 |
|------|---------|---------|---------|
| 不良贷款率 | ... | ... | ... |
| 资本充足率 | ... | ... | ... |
| 净息差 | ... | ... | ... |
"""

防止幻觉

python
anti_hallucination_prompt = """
基于以下文档内容回答问题。

重要规则:
1. 只使用文档中明确提到的信息
2. 如果文档中没有相关信息,回答"文档中未提及此信息"
3. 不要推测或补充文档以外的内容
4. 引用具体数据时注明来源段落

文档内容:
{context}

问题:{question}
"""

Prompt 模板管理

python
from string import Template
from dataclasses import dataclass
from typing import Dict

@dataclass
class PromptTemplate:
    name: str
    template: str
    required_vars: list[str]
    
    def format(self, **kwargs) -> str:
        missing = [v for v in self.required_vars if v not in kwargs]
        if missing:
            raise ValueError(f"缺少必要变量: {missing}")
        return self.template.format(**kwargs)

# 模板库
PROMPTS = {
    "risk_assessment": PromptTemplate(
        name="风险评估",
        template="评估企业 {company} 的信贷风险,营收 {revenue},负债率 {debt_ratio}%",
        required_vars=["company", "revenue", "debt_ratio"]
    ),
    "rag_qa": PromptTemplate(
        name="RAG问答",
        template="基于文档回答:\n{context}\n\n问题:{question}",
        required_vars=["context", "question"]
    )
}

# 使用
prompt = PROMPTS["risk_assessment"].format(
    company="某科技公司",
    revenue="500万",
    debt_ratio=65
)

本站内容由 褚成志 整理编写,仅供学习参考