核心内容摘要
《高嫁柳家》:古韵新声,情牵三生,解锁宅斗宅斗的别样风华
前言本文介绍使用OpenAI完成特定文本理解任务。
构建环境本地安装Ollama或通过阿里云百炼平台获取API_KEY ,https://bailian.console.aliyun.com/cn-beijing/?spma2c4g.
11186623.
0.
2dab6323kanAoFtabmodel#/api-key配置到环境变量中后需要重启电脑生效。
初始化python环境然后添加OpenAI库配置大模型的API到环境变量中OpenAI库的基础使用OpenAI库是OpenAI官方推出的Python SDK核心作用是让开发者能简单、高效地调用OpenAI的各类API如GPT聊天、DALL·E绘图、语音转文字等无需手动处理HTTP请求、身份验证等底层细节。
由于其发布较早且比较易用现如今许多模型服务商如阿里云百炼平台均兼容OpenAI SDK的调用。
# 获取客户端对象fromopenaiimportOpenAI client:OpenAIOpenAI(api_keyyour_api_key_here,#已添加到环境变量中可不配置base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v
主要是用如上2个参数api_key模型服务商提供的APIKEY密钥base_url模型服务商的API接入地址主要基于此参数来切换不同的模型服务商如OpenAI、阿里云、腾讯云等//调用模型fromopenai.types.chat.chat_completionimportChatCompletion response:ChatCompletionclient.chat.completions.create(modelqwen3-max,messages[{role:system,content:你是一个Python编程专家。
},{role:assistant,content:我是一个Python编程专家。
请问有什么可以帮助您的吗},{role:user,content:for循环输出1到5的数字}])client.chat.completions.create创建 ChatCompletion 对象主要参数有2个model选择所用模型如代码中的 qwen3-maxmessages提供给模型的消息类型list可以包含多个字典消息每个字典消息包含2个keyrole角色content内容角色说明system角色设定助手的整体行为、角色和规则为对话提供上下文框架如指定助手身份、回答风格、核心要求是全局的背景设定影响后续所有交互。
assistant角色代表 AI 助手的回答可以在代码中预设user角色代表用户发送问题、指令或需求完整示例代码fromopenaiimportOpenAI clientOpenAI(base_urlhttp://localhost:11434/v1,# 调用本地Ollama服务)responseclient.chat.completions.create(modelqwen3:8b,messages[{role:system,content:You are a helpful assistant.},{role:user,content:你是谁},],# streamTrue # 开启流式输出功能)# 流式输出方式forchunkinresponse:print(chunk.choices[0].delta.content,end,flushTrue)# end每一段之间用空格分隔flush是否立刻刷新缓冲区# 非流式输出,可以直接打印response看结构# print(response.choices[0].message.content)messages可以有多个历史聊天记录fromopenaiimportOpenAI#
获取client对象OpenAI类对象clientOpenAI(base_urlhttp://localhost:11434/v1,)#
调用模型responseclient.chat.completions.create(modelqwen3:8b,messages[{role:system,content:你是AI助理回答很简洁},{role:user,content:小明有2条宠物狗},{role:assistant,content:好的},{role:user,content:小红有3只宠物猫},{role:assistant,content:好的},{role:user,content:总共有几个宠物}],streamTrue# 开启了流式输出的功能)#
处理结果forchunkinresponse:print(chunk.choices[0].delta.content,end ,# 每一段之间以空格分隔flushTrue# 立刻刷新缓冲区)OpenAI文本理解类任务提示词实战案例
需求背景金融领域信息化发展金融数据大量激增投资者和研究者希望通过深度分析获得有效决策支持减少决策失误金融数据分析方法研究是当前十分有益且热门的话题。
要求基于Few-Shot Zero-Shot的思想设计prompt提示词来应用大模型完成以下任务基于大模型完成金融文本分类基于大模型完成金融文本信息抽取基于大模型完成金融文本匹配
Zero-Shot思想Zero-shot学习Zero-shot Learning是指在训练阶段不存在与测试阶段完全相同的类别但模型可以使用训练过的知识推广到测试集中的新类别上这种能力被称为“零样本”学习。
例在模型训练中已知马四脚兽、虎有条纹、熊猫黑白色的特征。
但未训练过斑马的数据则可以告知模型斑马是四脚兽、有黑白色的条纹模型可通过已知数据四脚兽、有条纹、黑白色推理识别斑马。
总结Zero-shot思想用于基于已训练的能力不提供任何示例仅通过语言描述任务的要求、目标和约束让模型直接生成结果即用语言定义任务信任模型的预训练知识。
Few-Shot思想Few-shot 学习Few-shot Learning是指少样本学习当模型在学了一定类别的大量数据后对于新的类别只需要少量的样本就能快速学习。
对应的还有 one-shot learning单样本学习可视为样本数量为 1 的特殊 “few-shot learning”。
在提示词优化中的应用Few-shot主要用于基于少量示例让模型参考示例进行回答。
比如请抽取产品名称和核心卖点2个字段格式为Json我提供2个示例。
示例1输入MacBookPro高效节能性能强大适合牛马工作使用输出{“产品名称”“MacBookPro”“产品卖点”“高效节能性能强大”}示例2输入联想笔记本拥有RTX4060独立显卡畅玩游戏丝滑流畅输出{“产品名称”“联想笔记本”“产品卖点”“畅玩游戏丝滑流畅”}请处理华为MatepadPro高清大屏长效续航你的好帮手。
基于大模型完成金融文本分类任务目标对给定的金融领域文本自动识别其所属的报告类型。
示例文本来自某金融平台“今日央行发布公告宣布降低利率以刺激经济增长。
这一降息举措将影响贷款利率并在未来几个季度内对金融市场产生影响。
”“ABC公司今日发布公告称已成功完成对XYZ公司股权的收购交易……详情请见公司官方网站公告栏。
”“公司资产负债表显示公司偿债能力强劲现金流充足为未来投资和扩张提供了坚实的财务基础。
”“最新的分析报告指出可再生能源行业预计将在未来几年经历持续增长投资者应该关注这一领域的投资机会。
”期望输出类别[‘新闻报道’’公司公告‘’财务公告‘’分析师报告‘]我们借助FewShot的思想给我们一些正确的例子让大模型理解文本分类的概念确保模型按指定格式输出结果用户今日股市经历了一轮震荡受到宏观经济数据和全球贸易紧张局势的影响。
投资者密切关注美联储可能的政策调整以适应市场的不确定性。
这是「新闻报道」「公司公告」「财务报告」「分析师报告」中的什么类别 助手新闻报道 用户本公司年度财务报告显示去年公司实现了稳步增长的盈利 同时资产负债表呈现强劲的状况。
经济环境的稳定和管理层的有效战略 为公司的健康发展奠定了基础。
这是「新闻报道」「公司公告」「财务报告」「分析师报告」中的什么类别 助手财务报告用户代表我们输入给模型的句子助手代表模型的回复内容两者都是我们输入的目的是希望看到类似句子时模型可以做出类似助手的回答代码示例# 利用few-shot思想的提示词完成文本分类任务fromopenaiimportOpenAI# 准备好few-shot文本组装成历史对话结构messagesmessages[]examples_data{新闻报道:今日股市经历了一轮震荡受到宏观经济数据和全球贸易紧张局势的影响。
投资者密切关注美联储可能的对策调整以适应市场的不确定性。
,财务报告:本公司年度财务报告显示去年公司实现了稳步增长的盈利同时资产负债表呈现强劲的状况。
经济环境的稳定和管理层的有效战略执行为公司的健康增长奠定了基础。
,公司公告:本公司高兴地宣布成功完成最新一轮并购交易收购了一家在人工智能领域领先的公司。
,分析师报告:最新的行业分析报告指出科技公司的创新将称为未来增长的主要推动力。
}forkey,valueinexamples_data.items():messages.append({role:user,content:value})messages.append({role:assistant,content:key})# 准备好需要问的文本数据集合questions[今日央行发布公告宣布降低利率以刺激经济增长。
这一降息举措将影响贷款利率并在未来几个月内对金融市场产生影响。
,]#
获取client 对象OpenAI类对象client:OpenAIOpenAI(base_urlhttp://localhost:11434/v1,)#
像模型提问,结合历史对话然后问一个新的问题responseclient.chat.completions.create(modelqwen3:8b,messagesmessages[{role:user,content:按照示例回答这段文本的分类类别今日央行发布公告宣布降低利率以刺激经济增长。
这一降息举措将影响贷款利率并在未来几个月内对金融市场产生影响。
}],streamTrue,)forchunkinresponse:print(chunk.choices[0].delta.content,end,flushTrue)
基于大模型完成金融文本信息抽取
, 寓意吉祥的节日, 股票佰驾 [BD]美股开盘价10美元, 虽然经历了波动, 但最终以13美元收盘, 成交量微幅增加至460,000, 投资者情绪较为平稳。
, 市场迎来轻松氛围, 股票盘古 (
开盘价23元, 尽管经历了波动, 但最终以26美元收盘, 成交量缩小至310,000, 投资者保持观望态度。
根据提供的两个文件内容期望模型能够识别出这2段话中的SPO三元组信息结构化信息抽取即按照预定义的金融实体类型如下抽取相关信息。
schema { 金融: [日期, 股票名称, 开盘价, 收盘价, 成交量], }向模型解释什么是「信息抽取任务」让模型按照指定的JSON格式输出还是利用few-shot思想为模型提供正确的抽取示例使其通过示例学习如何执行任务。
User:
股市震荡。
股票古哥-D[EOOE]美股今日开盘价100美元一度飙升至105美元随后回落至98美元最终以102美元收盘成交量达到520000。
提取上述句子中“金融”‘日期’‘股票名称’‘开盘价’‘收盘价’‘成交量’类型的实体并按照JSON格式输出上述句子中没有的信息用‘原文中未提及’来表示多个值之间用‘;’分隔。
Bot: {日期: [
], 股票名称: [古哥-D[EOOE]美股], 开盘价: [100美元], 收盘价: [102美元], 成交量: [520000]}User代表我们输入给模型的句子Bot代表模型的回复内容示例代码fromopenaiimportOpenAIimportjson# 准备Few-shot示例数据到messages中examples_data[{content:
, 股市震荡。
股票强科技A股今日开盘价100人民币一度飙升至105人民币随后回落至98人民币最终以102人民币收盘成交量达到520000。
,answers:{日期:
,股票名称:强大科技A股,开盘价:100人民币,收盘价:102人民币,成交量:520000}},{content:
, 股市利好。
股票英伟达美股今日开盘价105美元一度飙升至109美元随后回落至100美元最终以116美元收盘成交量达到3560000。
,answers:{日期:
,股票名称:英伟达美股,开盘价:105美元,收盘价:116美元,成交量:3560000}}]schema[日期,股票名称,开盘价,收盘价,成交量]messages[{role:system,content:f你帮我完成信息抽取我给你句子你抽取{schema}信心按JSON字符串输出}]fordatainexamples_data:messages.append({role:user,content:data[content]})messages.append({role:assistant,content:json.dumps(data[answers],ensure_asciiFalse)})# 提问AIquestions[
, 股市利好。
股票行情数据A股今日开盘价66人民币一度飙升至70人民币随后回落至65人民币最终以68人民币收盘成交量达到123000。
,
, 股市利好。
股票黑马程序员A股今日开盘价200人民币一度飙升至211人民币随后回落至201人民币最终以206人民币收盘。
]forquestioninquestions:responseOpenAI(base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1,).chat.completions.create(modeldeepseek-v
2,messagesmessages[{role:user,content:f按照上述的示例现在抽取这个句子的信息:{question}}],streamTrue)forchunkinresponse:print(chunk.choices[0].delta.content,end,flushTrue)
基于大模型完成金融文本匹配我们期望模型能够帮我们识别出成对的句子中2句话是否是有关联的。
我们期望模型输出的结果为[‘是’‘不是’‘是’]如‘股票市场今日大涨投资者乐观。
’‘持续上涨的市场让投资者感到满意。
’‘油价大幅下跌能源公司面临挑战。
’‘未来智能城市的建设趋势愈发明显。
’‘利率上升影响房地产市场。
’‘高利率对房地产有一定冲击。
’输出的结果为[‘是’‘不是’‘是’]还是利用few-shot思想让模型知道什么是文本匹配任务然后给出几个例子User: 句子一公司ABC发布了季度财报显示盈利增长。
句子二财报披露公司ABC利润上升 Bot: 是 User: 句子一黄金价格下跌投资者抛售。
句子二外汇市场交易额创下新高 Bot: 不是代码示例fromopenaiimportOpenAI# 封装示例进messagesmessages[{role:system,content:f你帮我完成文本匹配我给你2个句子被[]包围你判断它们是否匹配回答是或不是请参考如下示例}]examples_data{是:[(公司ABC发布了季度财报显示盈利增长。
,财报披露公司ABC利润上升。
),(公司ITCAST发布了年度财报显示盈利大幅度增长。
,财报披露公司ITCAST更赚钱了。
)],不是:[(黄金价格下跌投资者抛售。
,外汇市场交易额创下新高。
),(央行降息刺激经济增长。
,新能源技术的创新。
)]}forkey,valueinexamples_data.items():fortinvalue:messages.append({role:user,content:f句子1: [{t[0]}], 句子2: [{t[1]}]})messages.append({role:assistant,content:key})# 提问新的问题检验效果questions[(利率上升影响房地产市场。
,高利率对房地产有一定的冲击。
),(油价大幅度下跌能源公司面临挑战。
,未来智能城市的建设趋势越加明显。
),(股票市场今日大涨投资者乐观。
,持续上涨的市场让投资者感到满意。
)]forqinquestions:responseOpenAI(base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v