提示词工程

1. 大模型Prompt工程指南

1.1 技巧

  • 详细的描述
  • 让模型充当某个角色
  • 使用分隔符标明输入的不同部分
    • <>
    • []
    • “”
  • 指定任务的步骤
  • 提供例子
  • 使用参考文本(知识库)

提示词工程就是更好地向模型提问的技巧。

大模型本身是一种很简单的结构,即:用户输入-> 模型输出

  • 用更详细、更清晰、有逻辑、有参考的提问,获取期望中的回答效果
  • 不管是RAG还是Agent抑或是其他围绕模型的各类复杂的开发工作,本质上都可以总结为在提示词上下功夫

1.2 提示词案例与两种样本

需求

当前金融领域信息化发展的时代,金融数据大量激增,许多投资者和研究者试图通过对这些数据进行深度分析而获得一些有效的决策和帮助,尽可能减少决策失误带来的损失。

所以,针对金融数据的分析方法研究是目前十分有益且热门的话题。

当前案例主要有三大业务场景实现:

  • 基于大模型完成:金融文本分类

  • 基于大模型完成:金融文本信息抽取

  • 基于大模型完成:金融文本匹配

采用方法

  • Few-Shot: 少量样本
  • Zero-Shot:零样本

运用

下面几段文本来自某平台发布的金融领域文本:

1.”今日,央行发布公告宣布降低利率,以刺激经济增长。这一降息举措将影响贷款利率,并在未 来几个季度内对金融市场产生影响。”

2.”ABC公司今日发布公告称,已成功完成对XYZ公司股权的收购交易。本次交易是ABC公司在扩大业务范围、加强市场竞争力方面的重要举措。据悉,此次收购将进一步巩固ABC公司在行业中的地位,并为未来业务发展提供更广阔的发展空间。详情请见公司官方网站公告栏”

3.”公司资产负债表显示,公司偿债能力强劲,现金流充足,为未来投资和扩张提供了坚实的财务基础。”

4.”最新的分析报告指出,可再生能源行业预计将在未来几年经历持续增长,投资者应该关注这一领域的投资机会”,

我们的目的是期望模型能够帮助我们识别出这4段话中,每一句话描述的是一个什么类型的报告。

即期望的输出结果为:[“新闻报道”, “公司公告”,”财务公告”, “分析师报告”]

分析

  • 向模型解释什么是’文本分类任务‘
  • 让模型按照我们指定的格式输出

例子

user: ”今日,央行发布公告宣布降低利率,以刺激经济增长。这一降息举措将影响贷款利率,并在未 来几个季度内对金融市场产生影响。” 这段文本是如下文本分类中的哪一种文本?[“新闻报道”, “公司公告”,”财务公告”, “分析师报告”]

python语法技巧

1
2
3
import json
json.dumps(字典或列表, ensure_ascii=False) : 返回json字符串
json.loads(json字符串) 返回字典或列表(数组)

实战

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
from openai import OpenAI
import json

client = OpenAI(
base_url="http://localhost:11434/v1",
api_key="1233"
)

schema = {'日期', '股票名称', '开盘价', '收盘价', '成交量'}

example_data = [
{
"content": "2023-01-01, 股市震荡。股票强大科技A股开盘价100元,一度飙升至104人民币,随后跌落至89人民币,最终收盘价为90人民币,成交量为100万股。",
"answer": {
"日期": "2023-01-01",
"股票名称": "强大科技A股",
"开盘价": 100,
"收盘价": 90,
"成交量": 1000000
}
},
{
"content": "2023-01-02, 股市继续震荡。股票英伟达美股开盘价90元,一度飙升至95人民币,随后跌落至85人民币,最终收盘价为88人民币,成交量为150万股。",
"answer": {
"日期": "2023-01-02",
"股票名称": "英伟达美股",
"开盘价": 90,
"收盘价": 88,
"成交量": 1500000
}
}
]

question = [
"2026-05-03, 股市利好。腾讯科技A股开盘价150元,一度飙升至160人民币,随后跌落至140人民币,最终收盘价为155人民币",
"2026-05-04, 股市下跌。阿里巴巴美股开盘价80元,一度跌至75人民币,随后回升至85人民币,最终收盘价为82人民币"
]

messages = [
{
"role": "system",
"content": f"你是一个AI金融助手,专门为用户完成信息抽取。你会根据{schema}信息,按照JSON字符串输出,如果某些信息不存在,用<原文未提供>替换。严格按照示例格式输出,不要添加任何多余的解释和文本。"
},
{
"role": "assistant",
"content": "你好!我是你的AI助手,很高兴为你服务。请告诉我你需要什么帮助,我会尽力满足你的需求。"
}
]

for example in example_data:
messages.append({
"role": "user",
"content": example["content"]
})
messages.append({
"role": "assistant",
"content": json.dumps(example["answer"], ensure_ascii=False) # 防止中文被转义
})

for q in question:
print("问题:", q)
messages.append({
"role": "user",
"content": q
})
response = client.chat.completions.create(
model="qwen3:0.6b",
messages=messages
)
print(response.choices[0].message.content)