本文目录
  1. 金融文本案例
  2. 1.金融文本分类案例
  3. 2.金融文本信息提取案例
  4. 3.金融文本信息匹配案例

提示词工程金融文本案例

通过金融文本分类、信息提取和信息匹配案例实践结构化提示词。

金融文本案例

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)