从Prompt工程到金融实战:基于Few-shot Learning的大模型信息抽取全解析

大家好,我是你们的技术伙伴。👋

在2026年的今天,大模型(LLM)已经不再是简单的聊天玩具,它正在成为金融、医疗等垂直领域的核心生产力工具。但在实际业务中,我们经常面临一个痛点:如何让通用的大模型精准地理解特定领域的"黑话"?

今天,我将基于金融领域 的实战案例,带你从零构建一套完整的大模型提示词工程(Prompt Engineering) 体系。我们将利用Few-shot Learning(少样本学习),让模型在没有经过专业微调的情况下,也能具备顶级金融专家的分析能力。

核心内容概览:

  1. Prompt工程核心原则:如何让模型"听懂人话"?
  2. 金融文本分类:自动识别新闻、公告与财报。
  3. 金融文本匹配:判断两段话是否描述同一事件。
  4. 信息抽取:从杂乱文本中挖出"金矿"(实体与关系)。

🛠️ 第一部分:提示词工程------与大模型的"心灵对话"

很多初学者觉得大模型"不好用",其实是因为没有掌握**Prompt Engineering(提示词工程)**的艺术。这不仅仅是写指令,而是引导模型思考的过程。

1. 核心原则:清晰的指令

不要让模型猜谜。你需要明确告诉它:角色、任务、格式、限制

  • 角色扮演:让模型充当"金融分析师",它会自动调用相关领域的知识库。
  • 思维链(Chain of Thought):给模型充足的"思考时间",要求它一步步推理,而不是直接蹦出答案。
2. 迭代优化

Prompt设计是一个循环迭代的过程:

  1. 初步想法 -> 编写初版Prompt。
  2. 输入模型 -> 观察输出。
  3. 结果检查 -> 分析错误(是理解错了任务,还是格式不对?)。
  4. 循环迭代 -> 调整指令,直到模型表现完美。

💰 第二部分:金融文本分类实战------给信息"贴标签"

在海量的金融资讯中,自动识别文本类型(如新闻报道、公司公告、财务报告、分析师报告)是风险控制和投资决策的第一步。

核心逻辑:

利用Few-shot思想,我们在Prompt中提供几个"标准答案"作为示例,让模型模仿学习。

代码实现:

python 复制代码
from openai import OpenAI
import os

# 1. 配置客户端 (以Qwen为例)
client = OpenAI(api_key=os.getenv("DASHSCOPE_API_KEY"), base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")

# 2. 定义金融专家角色与示例样本
class_examples = {
    '新闻报道': '今日,股市经历了一轮震荡,受到宏观经济数据和全球贸易紧张局势的影响...',
    '财务报告': '本公司年度财务报告显示,去年公司实现了稳步增长的盈利...',
    '公司公告': '本公司高兴地宣布成功完成最新一轮并购交易...',
    '分析师报告': '最新的行业分析报告指出,科技公司的创新将成为未来增长的主要推动力...'
}

def classify_financial_text(text):
    # 构建Prompt:系统指令 + 少量示例 + 待分类文本
    prompt = [
        {"role": "system", "content": "你是一个资深金融专家,请严格将文本分类为:新闻报道、财务报告、公司公告、分析师报告。如果不确定,回答'其他'。"}
    ]
    
    # 加入示例(Few-shot Learning的核心)
    for cls, example in class_examples.items():
        prompt.append({"role": "user", "content": f"请分类:{example}"})
        prompt.append({"role": "assistant", "content": cls})
    
    # 加入待预测文本
    prompt.append({"role": "user", "content": f"请分类:{text}"})
    
    # 调用模型
    response = client.chat.completions.create(
        model="qwen-plus",
        messages=prompt,
        temperature=0.1 # 降低随机性,保证分类稳定
    )
    
    return response.choices[0].message.content

# 测试
text = "ABC公司今日发布公告称,已成功完成对XYZ公司股权的收购交易..."
print(f"分类结果: {classify_financial_text(text)}")

🔗 第三部分:金融文本匹配实战------寻找"孪生"信息

场景需求:

判断两条新闻是否在描述同一件事(例如:判断市场上的两条关于"降息"的消息是否指向同一政策)。

代码实现:

python 复制代码
def init_matching_prompt():
    # 定义匹配逻辑与示例
    examples = {
        '是': [
            ('公司ABC发布了季度财报,显示盈利增长。', '财报披露,公司ABC利润上升。'),
        ],
        '不是': [
            ('黄金价格下跌,投资者抛售。', '外汇市场交易额创下新高。'),
            ('央行降息,刺激经济增长。', '新能源技术的创新。')
        }
    }
    
    history = [
        {"role": "system", "content": "判断两个句子语义是否相似,相似返回'是',不相似返回'不是'。"}
    ]
    
    for label, pairs in examples.items():
        for pair in pairs:
            history.append({"role": "user", "content": f"句子一:{pair[0]}\n句子二:{pair[1]}"})
            history.append({"role": "assistant", "content": label})
    
    return history

def check_similarity(sentence1, sentence2):
    prompt = init_matching_prompt()
    prompt.append({"role": "user", "content": f"句子一:{sentence1}\n句子二:{sentence2}"})
    
    response = client.chat.completions.create(
        model="qwen-plus",
        messages=prompt
    )
    return response.choices[0].message.content

# 测试
print(check_similarity("油价大幅下跌,能源公司面临挑战。", "原油价格跳水,导致相关企业市值缩水。"))

📝 第四部分:金融信息抽取实战------从文本到结构化数据

这是大模型在金融领域最硬核的应用之一:实体抽取(NER)。我们需要从一段杂乱的文本中,提取出"日期"、"股票名称"、"涨跌幅"等关键信息,并整理成JSON格式。

核心技巧:

  1. Schema定义:明确告诉模型要提取哪些字段。
  2. 结果后处理:模型输出的可能是带Markdown格式的JSON,需要清洗。

代码实现:

python 复制代码
import json
import re

# 定义抽取的Schema
SCHEMA = {
    '金融': ['日期', '股票名称', '开盘价', '收盘价', '成交量']
}

IE_PATTERN = "{}\n\n提取上述句子中{}的实体,并按照JSON格式输出。如果句子中没有的信息用['原文中未提及']来表示,多个值之间用','分隔。"

def extract_financial_info(raw_text):
    # 1. 构建Prompt (包含系统指令和Few-shot示例)
    prompt = [
        {"role": "system", "content": "你是信息提取专家,请严格按照JSON格式输出,不要添加任何解释。"}
    ]
    
    # 这里可以加入一些预定义的示例...
    # prompt.append(...)
    
    # 2. 添加当前任务
    user_content = IE_PATTERN.format(raw_text, SCHEMA['金融'])
    prompt.append({"role": "user", "content": user_content})
    
    # 3. 推理
    response = client.chat.completions.create(
        model="qwen-plus",
        messages=prompt
    )
    
    raw_response = response.choices[0].message.content
    # 4. 后处理:去除```json等Markdown标签
    return clean_response(raw_response)

def clean_response(response: str):
    """清洗模型输出,提取纯JSON"""
    if '```json' in response:
        # 使用正则提取json代码块
        res = re.findall(r'```json(.*?)```', response, re.S)
        if res:
            response = res[0].strip()
    try:
        return json.loads(response)
    except:
        return {"error": "解析失败", "raw": response}

# 测试
text = "2023-02-15,股票佰笃[BD]美股开盘价10美元,最终以13美元收盘..."
result = extract_financial_info(text)
print(json.dumps(result, indent=2, ensure_ascii=False))

🏁 结语

通过上述三个实战案例(分类、匹配、抽取),我们看到了大模型在金融领域的巨大潜力。Few-shot Learning 让我们无需海量标注数据,仅通过精心设计的Prompt,就能让模型具备专业能力。

给读者的建议:

  1. 多迭代:不要指望一次Prompt就完美,多试几次。
  2. 多用Role:给模型一个身份(如"资深审计师"),效果往往更好。
  3. 关注输出格式:在金融领域,数据的结构化(JSON)比文本本身更重要。

如果你觉得这篇文章对你有帮助,希望点赞、收藏、关注!你的支持是我持续输出硬核内容的最大动力!

相关推荐
DolphinDB智臾科技13 小时前
DolphinDB 流计算在商品期货交易的应用:波动率计算与拟合
算法·金融·流计算
AIFQuant14 小时前
低延迟金融行情推送优化:WebSocket 心跳、断线重连、流量控制最佳实践(附 Python 代码)
python·websocket·金融·api·数据接口
meilindehuzi_a14 小时前
AI 时代的高效编程:从 Python 切片基础到魔塔社区大模型 Prompt 实战
python·prompt
醒醒该学习了!14 小时前
Prompt提示词——RAG与Agent的提示方法(理论篇)
prompt
SLD_Allen15 小时前
从Prompt、Context到Harness,工程的三次进化与终局之战
人工智能·prompt
多年小白1 天前
开盘策略】2026年5月28日(周四)
大数据·人工智能·物联网·金融·区块链
醒醒该学习了!1 天前
Prompt提示词——视频与数字人生成的提示词设计(理论篇)
prompt
乐兮创想 小林1 天前
金融投资官网的工程化设计:投资者关系信息架构、合规内容管理与系统对接
金融·架构·网站建设·企业官网·北京网站建设公司