Prompt Engineering 本质不是“调教模型”,而是用结构化输入,约束模型行为。
在 RAG 场景中,Prompt 的职责非常明确:
让模型“只基于检索到的内容回答,并按指定格式输出”
提示词优化案例
1 金融文本分类
import os
from openai import OpenAI
from dotenv import load_dotenv
# 加载环境变量
load_dotenv()
# 创建客户端
client = OpenAI(
api_key=os.getenv('OPENAI_API_KEY'),
base_url=os.getenv("BASE_URL")
)
examples_data = { # 示例数据
'新闻报道': '今日,股市经历了一轮震荡,受到宏观经济数据和全球贸易紧张局势的影响。投资者密切关注美联储可能的政策调整,以适应市场的不确定性。',
'财务报告': '本公司年度财务报告显示,去年公司实现了稳步增长的盈利,同时资产负债表呈现强劲的状况。经济环境的稳定和管理层的有效战略执行为公司的健康发展奠定了基础。',
'公司公告': '本公司高兴地宣布成功完成最新一轮并购交易,收购了一家在人工智能领域领先的公司。这一战略举措将有助于扩大我们的业务领域,提高市场竞争力',
'分析师报告': '最新的行业分析报告指出,科技公司的创新将成为未来增长的主要推动力。云计算、人工智能和数字化转型被认为是引领行业发展的关键因素,投资者应关注这些趋势'
}
# 分类列表
examples_types = ['新闻报道', '财务报道', '公司公告', '分析师报告']
# 提问数据
questions = [
"今日,央行发布公告宣布降低利率,以刺激经济增长。这一降息举措将影响贷款利率,并在未来几个季度内对金融市场产生影响。",
"ABC公司今日发布公告称,已成功完成对XYZ公司股权的收购交易。本次交易是ABC公司在扩大业务范围、加强市场竞争力方面的重要举措。据悉,此次收购将进一步巩固ABC公司在行业中的地位,并为未来业务发展提供更广阔的发展空间。详情请见公司官方网站公告栏",
"公司资产负债表显示,公司偿债能力强劲,现金流充足,为未来投资和扩张提供了坚实的财务基础。",
"最新的分析报告指出,可再生能源行业预计将在未来几年经历持续增长,投资者应该关注这一领域的投资机会",
"小明喜欢小新哟"
]
messages = [
{"role": "system",
"content": "你是金融专家,将文本分类为['新闻报道', '财务报道', '公司公告', '分析师报告'],不清楚的分类为'不清楚类别' 下面有示例:"},
]
for k, v in examples_data.items():
messages.append({"role": "user", "content": v})
messages.append({"role": "assistant", "content": k})
ans = []
for q in questions:
messages.append({"role": "user", "content": q})
response = client.chat.completions.create(
# model='Qwen/Qwen3-8B',
model= 'qwen3-8b',
messages=messages + [{"role": "user", "content": f"按照示例,回答该文本{q}的类别为:(只回答类别)"}],
stream=False,
extra_body = { # qwen3-8b 特有的参数
"enable_thinking": False
}
)
print(q, ":", response.choices[0].message.content)
ans.append(response.choices[0].message.content)
print(ans)
2 提示词优化案例_金融文本匹配判断
import os
from openai import OpenAI
from dotenv import load_dotenv
# 加载环境变量
load_dotenv()
# 创建客户端
client = OpenAI(
api_key=os.getenv('OPENAI_API_KEY'),
base_url=os.getenv("BASE_URL")
)
examples_data = {
"是": [
("公司ABC发布了季度财报,显示盈利增长。", "财报披露,公司ABC利润上升。"),
("公司cba发布了年度财报,显示盈利大幅度增长。", "财报披露,公司cba更赚钱了。")
],
"不是": [
("黄金价格下跌,投资者抛售。", "外汇市场交易额创下新高。"),
("央行降息,刺激经济增长。", "新能源技术的创新。")
]
}
questions = [
("利率上升,影响房地产市场。", "高利率对房地产有一定的冲击。"),
("油价大幅度下跌,能源公司面临挑战。", "未来智能城市的建设趋势越加明显。"),
("股票市场今日大涨,投资者乐观。", "持续上涨的市场让投资者感到满意。")
]
messages = [
{"role": "system", "content": f"你帮我完成文本匹配,我给你2个句子,被[]包围,你判断它们是否匹配,回答是或不是,请参考如下示例:"},
]
for k,v in examples_data.items():
for i in v:
messages.append({"role": "user", "content": f"句子1[{i[0]}],句子2[{i[1]}]"})
messages.append({"role": "assistant", "content": k})
for q in questions:
response = client.chat.completions.create(
model='qwen3-8b',
messages=messages + [{"role": "user", "content": f"句子1[{q[0]}],句子2[{q[1]}]"}],
stream=False,
extra_body = {
"enable_thinking": False
}
)
print(q, ":", response.choices[0].message.content)
3 提示词优化案例_金融信息抽取
import json
import os
from openai import OpenAI
from dotenv import load_dotenv
# 加载环境变量
load_dotenv()
# 创建客户端
client = OpenAI(
api_key=os.getenv('OPENAI_API_KEY'),
base_url=os.getenv("BASE_URL")
)
schema = ['日期', '股票名称', '开盘价', '收盘价', '成交量']
examples_data = [ # 示例数据
{
"content": "2023-01-10,股市震荡。股票强大科技A股今日开盘价100人民币,一度飙升至105人民币,随后回落至98人民币,最终以102人民币收盘,成交量达到520000。",
"answers": {
"日期": "2023-01-10",
"股票名称": "强大科技A股",
"开盘价": "100人民币",
"收盘价": "102人民币",
"成交量": "520000"
}
},
{
"content": "2024-05-16,股市利好。股票英伟达美股今日开盘价105美元,一度飙升至109美元,随后回落至100美元,最终以116美元收盘,成交量达到3560000。",
"answers": {
"日期": "2024-05-16",
"股票名称": "英伟达美股",
"开盘价": "105美元",
"收盘价": "116美元",
"成交量": "3560000"
}
}
]
questions = [ # 提问问题
"2025-06-16,股市利好。股票传智教育A股今日开盘价66人民币,一度飙升至70人民币,随后回落至65人民币,最终以68人民币收盘,成交量达到123000。",
"2025-06-06,股市利好。股票黑马程序员A股今日开盘价200人民币,一度飙升至211人民币,随后回落至201人民币,最终以206人民币收盘。"
]
messages = [
{"role": "system", "content": f"你帮我完成信息抽取,我给你句子,你抽取{schema}信息,按JSON字符串输出,如果某些信息不存在,用'原文未提及'表示,请参考如下示例:"}
]
for example in examples_data:
messages.append({"role": "user", "content": example["content"]})
messages.append({"role": "assistant", "content": json.dumps(example["answers"], ensure_ascii=False)})
for q in questions:
response = client.chat.completions.create(
# model='Qwen/Qwen3-8B',
model= 'qwen3-8b',
messages=messages + [{"role": "user", "content": f"按照示例,抽取该文本{q}的信息为:"}],
stream=False,
extra_body = { # qwen3-8b 特有的参数
"enable_thinking": False
}
)
print(q, ":", response.choices[0].message.content)