AI APPLICATION ENGINEERING · 04
通过金融文本分类、信息提取和信息匹配案例实践结构化提示词。
- 案例
- 金融文本
提示词工程金融文本案例
通过金融文本分类、信息提取和信息匹配案例实践结构化提示词。
金融文本案例
1.金融文本分类案例
# 导包
from openai import OpenAI
# 准备文本
text = {'新闻报道':"今日,央行发布公告宣布降低利率,以刺激经济增长。这一降息举措将影响贷款利率,并在未来几个季度内对金融市场产生影响。",
'公司公告':"ABC公司今日发布公告称,已成功完成对XYZ公司股权的收购交易。本次交易是ABC公司在扩大业务范围、加强市场竞争力方面的重要举措。据悉,此次收购将进一步巩固ABC公司在行业中的地位,并为未来业务发展提供更广阔的发展空间。详情请见公司官方网站公告栏",
'财务公告':"公司资产负债表显示,公司偿债能力强劲,现金流充足,为未来投资和扩张提供了坚实的财务基础。",
'分析师报告':"最新的分析报告指出,可再生能源行业预计将在未来几年经历持续增长,投资者应该关注这一领域的投资机会",}
# 创建连接
client = OpenAI(base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")
# 创建一个函数来生成文本
def call_qwen(prompt):
response = client.chat.completions.create(
model="qwen-max",
messages=[
{"role": "system", "content": f"你是一个文本分类专家。你将把文本按照{text.keys()}进行分类,只显示类型名称。如果无法分类,显示无法分类"},
{"role": "user", "content": prompt}
]
)
return response.choices[0].message.content
if __name__ == '__main__':
for i in text.values():
print(call_qwen(i))
# que ="今天天气很热"
# print(call_qwen(que))
2.金融文本信息提取案例
# 导包
from openai import OpenAI
# 创建连接
client = OpenAI(base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")
# 定义不同实体下的具备属性
schema = {
'金融': ['日期', '股票名称', '开盘价', '收盘价', '成交量'],
}
# 提供一些例子供模型参考
ie_examples = {
'金融': [
{
'content': '2023-01-10,股市震荡。股票古哥-D[EOOE]美股今日开盘价100美元,一度飙升至105美元,随后回落至98美元,最终以102美元收盘,成交量达到520000。',
'answers': {
'日期': ['2023-01-10'],
'股票名称': ['古哥-D[EOOE]美股'],
'开盘价': ['100美元'],
'收盘价': ['102美元'],
'成交量': ['520000'],
}
}
]
}
sentences = [
'2023-02-15,寓意吉祥的节日,股票佰笃[BD]美股开盘价10美元,虽然经历了波动,但最终以13美元收盘,成交量微幅增加至460,000,投资者情绪较为平稳。',
'2023-04-05,市场迎来轻松氛围,股票盘古(0021)开盘价23元,尽管经历了波动,但最终以26美元收盘,成交量缩小至310,000,投资者保持观望态度。',
]
# 准备上下文
message = [
{
"role": "system",
"content": f"你是一个金融信息提取专家。你将从句子中提取金融实体,并按照{schema}的字段输出,多个值之间用','分隔。"
}
]
# 处理事例
for type, examples in ie_examples.items():
for example in examples:
for key in example:
if key == 'content':
message.append({
"role": "user",
"content": example[key]
})
if key == 'answers':
str_answers = str(example[key])
message.append({
"role": "assistant",
"content": str_answers
})
def call_qwen(message,ques):
response = client.chat.completions.create(
model="qwen-max",
messages=message+[{"role": "user", "content": ques}]
)
return response.choices[0].message.content
if __name__ == '__main__':
for i in sentences:
print(call_qwen(message, i))
3.金融文本信息匹配案例
import openai
from openai import OpenAI
client = OpenAI(base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")
examples = {
'是': [
('公司ABC发布了季度财报,显示盈利增长。', '财报披露,公司ABC利润上升。'),
],
'不是': [
('黄金价格下跌,投资者抛售。', '外汇市场交易额创下新高。'),
('央行降息,刺激经济增长。', '新能源技术的创新。')
]
}
sentence_pairs = [
('股票市场今日大涨,投资者乐观。', '持续上涨的市场让投资者感到满意。'),
('油价大幅下跌,能源公司面临挑战。', '未来智能城市的建设趋势愈发明显。'),
('利率上升,影响房地产市场。', '高利率对房地产有一定冲击。'),
]
messages = [
{
"role": "system",
"content": "你是一个文本匹配专家。你将判断两句话是否意思相同,并返回'是'或'不是'。大概解释思考过程"
}]
# 文本处理
# i是字典的键,j是字典的值,j是元组,j[0]是元组的第一个元素,j[1]是元组的第二个元素
for i in examples:
for j in examples[i]:
messages.append({
"role": "user",
"content": f"判断句子是否意思相同:第一句:{j[1]},第二句:{j[1]}"
})
messages.append({
"role": "assistant",
"content": i
})
def call_qwen(message,que):
response = client.chat.completions.create(
model="qwen-max",
messages=message+[{"role": "user", "content": que}]
)
return response.choices[0].message.content
if __name__ == '__main__':
for i in sentence_pairs:
res1 = call_qwen(messages,f"第一句:{i[0]},第二句:{i[1]}")
print(res1)