优化技巧提示工程(Prompt Engineering)也称为 In-Context Prompting是指在不更新模型权重的情况下如何与大模型交互, 以引导其行为以获得所需结果的方法。在人工智能领域Prompt指的是用户给大型语言模型发出的指令。例如“「讲个笑话」、「用Python编个贪吃蛇游戏」 、「写封情书」等。虽然看似简单但实际上Prompt的设计对于模型的结果影响很大。因此如何设计prompt进而与模型更好的交互是研究人员必备的必不可少的技能(提示工程)。任何Promp技巧都不如清晰的表达你的需求。这就类似人与人沟通如果话说不明白不可能让别人理解你的思想。因此写出清晰的指令是核心。技巧1: 详细的描述技巧2: 让模型充当某个角色技巧3: 使用分隔符标明输入的不同部分中括号、XML标签、三引号等分隔符可以帮助划分要区别对待的文本也可以帮助模型更好的理解文本内容。常用把内容框起来技巧4: 对任务指定步骤对于可以拆分的任务可以尽量拆开最好能为其指定一系列步骤明确步骤可以让模型更容易实现它们。技巧5: 提供例子本质类似于few-shot leaning。先扔给大模型举例然后让模型按照例子来输出基于文本文档辅助大模型问答降低模型幻觉”(一本正经的胡说八道)问题。即使用参考文本作答经典的知识库用法让大模型使用我们提供的信息来组成答案。Zero-shot思想Zero-shot学习(Zero-shot Learning)是指在训练阶段不存在与测试阶段完全相同的类别但是模型可以使用训练过的知识来推广到测试集中的新类别上。这种能力被称为零样本”学习因为模型在训练时从未见过测试集中的新类别Zero-shot中文译为零样本”学习, 简单来说就是用语言定义任务, 依赖大模型的推理能力得到结果Few-shot思想Few-shot学习(Few-shot Learning)是指少样本学习当模型在学习了一定类别的大量数据后对于新的类别只需要少量的样本就能快速学习对应的有one-shot learning单样本学习也算样本少到为一的情况下的一种few-shot learning。Few-shot中文译为少量样本”学习, 简单来说就是用语言加少量示例定义任务, 在大模型的推理能力的基础上, 得到更高质量的结果零样本思想和少量样本思想, 在模型训练和提示词优化中均有体现。在模型训练层面:Zero-shot:零样本基于模型训练阶段学习的属性/语义关联去迁移到未知的新类别Few-shot:少样本基于少量样本快速泛化识别新样本在提示词优化层面:Zero-shot:无提示语言描述任务依赖模型预训练知识回答Few-shot:给与模型少量示例引导模型对齐示例输出结果JSON数据JSON(JavaScript Object Notation)是一种轻量级的数据交换格式易于人阅读和编写同时也易于机器解析和生成。Json是带有格式的字符串主要用于数据交换即程序和程序之间的信息互传使用Json会更加方便如下示例:Json主要有2种结构: Json对象和Json数组Python中使用Json主要完成:将Python字典、列表转换为Json字符串读取Json字符串转换为Python字典或列表主要使用Python内置的json库序列化: json.dumps(字典或列表,ensure_asciiFalse)将字典或列表转换为Json字符串ensure ascii参数确保中文能正常显示返回值: Json字符串反序列化: json.loads(json字符串)将Json字符串转换为Python字典或列表返回值: Python字典 或Python列表示例代码import json d { name: 周杰轮, age: 11, gender: 男 } s json.dumps(d, ensure_asciiFalse) print(s) l [ { name: 周杰轮, age: 11, gender: 男 }, { name: 蔡依临, age: 12, gender: 女 }, { name: 小明, age: 16, gender: 男 } ] print(json.dumps(l, ensure_asciiFalse)) json_str {name: 周杰轮, age: 11, gender: 男} json_array_str [{name: 周杰轮, age: 11, gender: 男}, {name: 蔡依临, age: 12, gender: 女}, {name: 小明, age: 16, gender: 男}] res_dict json.loads(json_str) print(res_dict, type(res_dict)) res_list json.loads(json_array_str) print(res_list, type(res_list))实战案例案例背景当前金融领域信息化发展的时代金融数据大量激增,许多投资者和研究者试图通过对这些数据进行深度分析, 而获得一些有效的决策和帮助, 尽可能减少决策失误带来的损失.所以,针对金融数据的分析方法研究是目前十分有益且热门的话题。当前案例主要有三大业务场景实现:基于大模型完成: 金融文本分类基于大模型完成: 金融文本信息抽取基于大模型完成: 金融文本匹配大模型选择: Qwen在线大模型(阿里云通义千问qwen3-max)采用方法: 基于Few-ShotZero-Shot的思想设计prompt(提示词)进而应用大模型完成相应的任务LLM文本分类LLM文本分类任务介绍下面几段文本来自某平台发布的金融领域文本:我们的目的是期望模型能够帮助我们识别出这4段话中每一句话描述的是一个什么类型的报告。即期望的输出结果为:提示词设计在该任务的prompt设计中我们主要考虑2点:需要向模型解释什么叫作「文本分类任务」需要让模型按照我们指定的格式输出为了让模型知道什么叫做「文本分类」我们借用FewShot的方式给模型展示一些正确的例子:其中User代表我们输入给模型的句子Bot代表模型的回复内容。注意: 上述例子中Bot 的部分也是由人工输入的其目的是希望看到在看到类似User中的句子时模型应当做出类似Bot的回答。代码实现from openai import OpenAI # 1. 获取client对象OpenAI类对象 client OpenAI( api_key, base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1, ) # 示例数据 examples_data { 新闻报道: 今日股市经历了一轮震荡受到宏观经济数据和全球贸易紧张局势的影响。投资者密切关注美联储可能的政策调整以适应市场的不确定性。, 财务报告: 本公司年度财务报告显示去年公司实现了稳步增长的盈利同时资产负债表呈现强劲的状况。经济环境的稳定和管理层的有效战略执行为公司的健康发展奠定了基础。, 公司公告: 本公司高兴地宣布成功完成最新一轮并购交易收购了一家在人工智能领域领先的公司。这一战略举措将有助于扩大我们的业务领域提高市场竞争力, 分析师报告: 最新的行业分析报告指出科技公司的创新将成为未来增长的主要推动力。云计算、人工智能和数字化转型被认为是引领行业发展的关键因素投资者应关注这些趋势 } # 分类列表 examples_types [新闻报道, 财务报道, 公司公告, 分析师报告] # 提问数据 questions [ 今日央行发布公告宣布降低利率以刺激经济增长。这一降息举措将影响贷款利率并在未来几个季度内对金融市场产生影响。, ABC公司今日发布公告称已成功完成对XYZ公司股权的收购交易。本次交易是ABC公司在扩大业务范围、加强市场竞争力方面的重要举措。据悉此次收购将进一步巩固ABC公司在行业中的地位并为未来业务发展提供更广阔的发展空间。详情请见公司官方网站公告栏, 公司资产负债表显示公司偿债能力强劲现金流充足为未来投资和扩张提供了坚实的财务基础。, 最新的分析报告指出可再生能源行业预计将在未来几年经历持续增长投资者应该关注这一领域的投资机会, 小明喜欢小新哟 ] # 模拟对话过程 [ {role: system, content: 你是金融专家将文本分类为[新闻报道, 财务报道, 公司公告, 分析师报告]不清楚的分类为不清楚类别 下面有示例}, {role: user, content: 今日央行发布公告宣布降.............}, {role: assistant, content: 新闻报道}, {role: user, content: ABC公司今日发布公告称已成功完成对XYZ公司股.................}, {role: assistant, content: 财务报告}, {role: user, content: 公司资产负债表显示公司偿债能力强劲现金流充足...................}, {role: assistant, content: 公司公告}, {role: user, content: 最新的分析报告指出可再生能源.............}, {role: assistant, content: 分析师报告}, {role: user, content: 要提问的问题} ] messages [ { role: system, content: f你是金融专家将文本分类为{examples_types}不清楚的分类为不清楚类别 下面有示例 }, ] for key, value in examples_data.items(): messages.append({role: user, content: value}) messages.append({role: assistant, content: key}) # 向模型提问 for q in questions: response client.chat.completions.create( modelqwen3-max, messagesmessages [{role: user, content: f按照示例回答这段文本的分类类别{q}}] ) print(response.choices[0].message.content)LLM信息抽取LLM信息抽取任务介绍首先我们定义信息抽取的Schema:下面几段文本来自某平台发布的股票信息:我们的目的是期望模型能够帮助我们识别出这2段话中的SPO三元组信息。Prompt设计在该任务的prompt设计中我们主要考虑2点:需要向模型解释什么叫作「信息抽取任务」需要让模型按照我们指定的格式(json)输出, 为了让模型知道什么叫做[信息抽取」我们借用FewShot的方式先给模型展示几个正确的例子:其中User代表我们输入给模型的句子Bot代表模型的回复内容。注意:上述例子中Bot 的部分也是由人工输入的其目的是希望看到在看到类似User中的句子时模型应当做出类似Bot的回答。代码实现from openai import OpenAI import json client OpenAI( api_key, base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1, ) 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人民币收盘。 ] # 模拟对话过程 [ {role: system, content: f你帮我完成信息抽取我给你句子你抽取{schema}信息按JSON字符串输出如果某些信息不存在用原文未提及表示请参考如下示例}, {role: user, content: 2023-01-10股市震荡。股票强大科技A股今日开盘价100人民币一度飙升至105人民币随后回落至98人民币最终以102人民币收盘成交量达到520000。}, {role: assistant, content: {日期:2023-01-10,股票名称:强大科技A股,开盘价:100人民币,收盘价:102人民币,成交量:520000}}, {role: user, content: 2024-05-16股市利好。股票英伟达美股今日开盘价105美元一度飙升至109美元随后回落至100美元最终以116美元收盘成交量达到3560000。}, {role: assistant, content: {日期:2024-05-16,股票名称:英伟达美股,开盘价:105美元,收盘价:116美元,成交量:3560000}}, {role: user, content: f按照上述示例现在抽取这个句子的信息{要抽取的句子文本}}]} ] 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_asciiFalse)} ) for q in questions: response client.chat.completions.create( modelqwen3-max, messagesmessages [{role: user, content: f按照上述的示例现在抽取这个句子的信息{q}}] ) print(response.choices[0].message.content)LLM文本匹配LLM信息文本匹配任务介绍首先我们构造几个短文本对:我们期望模型能够帮我们识别出成对的句子中2句话是否是有关联的。我们期望模型输出的结果为:Prompt设计在该任务的prompt设计中我们主要考虑2点:需要向模型解释什么叫作「文本匹配任务」需要让模型按照我们指定的格式输出为了让模型知道什么叫做「文本匹配任务」我们借用FewShot的方式先给模型展示几个正确的例子:其中User代表我们输入给模型的句子Bot代表模型的回复内容。注意: 上述例子中Bot的部分也是由人工输入的其目的是希望看到在看到类似User中的句子时模型应当做出类似Bot的回答。代码实现from openai import OpenAI client OpenAI( api_key, base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1, ) examples_data { 是: [ (公司ABC发布了季度财报显示盈利增长。, 财报披露公司ABC利润上升。), (公司ITCAST发布了年度财报显示盈利大幅度增长。, 财报披露公司ITCAST更赚钱了。) ], 不是: [ (黄金价格下跌投资者抛售。, 外汇市场交易额创下新高。), (央行降息刺激经济增长。, 新能源技术的创新。) ] } questions [ (利率上升影响房地产市场。, 高利率对房地产有一定的冲击。), (油价大幅度下跌能源公司面临挑战。, 未来智能城市的建设趋势越加明显。), (股票市场今日大涨投资者乐观。, 持续上涨的市场让投资者感到满意。) ] {role: system, content: f你帮我完成文本匹配我给你2个句子被[]包围你判断它们是否匹配回答是或不是请参考如下示例}, {role: user, content: 句子1[公司ABC发布了季度财报显示盈利增长。]句子2[财报披露公司ABC利润上升。]}, {role: assistant, content: 是}, {role: user, content: 句子1[公司ITCAST发布了年度财报显示盈利大幅度增长。]句子2[财报披露公司ITCAST更赚钱了。]}, {role: assistant, content: 是}, {role: user, content: 句子1[黄金价格下跌投资者抛售。]句子2[外汇市场交易额创下新高。]}, {role: assistant, content: 不是}, {role: user, content: 句子1[央行降息刺激经济增长。]句子2[新能源技术的创新。]}, {role: assistant, content: 不是}, {role: user, content: f按照上述示例回答这2个句子的情况。句子1: [...]句子2: [...]} messages [ { role: system, content: f你帮我完成文本匹配我给你2个句子被[]包围你判断它们是否匹配回答是或不是请参考如下示例 }, ] for key, value in examples_data.items(): for t in value: messages.append( {role: user, content: f句子1[{t[0]}]句子2[{t[1]}]} ) messages.append( {role: assistant, content: key} ) for q in questions: response client.chat.completions.create( modelqwen3-max, messagesmessages [{role: user, content: f句子1[{q[0]}]句子2[{q[1]}]}] ) print(response.choices[0].message.content)
[RAG开发]-提示词工程
优化技巧提示工程(Prompt Engineering)也称为 In-Context Prompting是指在不更新模型权重的情况下如何与大模型交互, 以引导其行为以获得所需结果的方法。在人工智能领域Prompt指的是用户给大型语言模型发出的指令。例如“「讲个笑话」、「用Python编个贪吃蛇游戏」 、「写封情书」等。虽然看似简单但实际上Prompt的设计对于模型的结果影响很大。因此如何设计prompt进而与模型更好的交互是研究人员必备的必不可少的技能(提示工程)。任何Promp技巧都不如清晰的表达你的需求。这就类似人与人沟通如果话说不明白不可能让别人理解你的思想。因此写出清晰的指令是核心。技巧1: 详细的描述技巧2: 让模型充当某个角色技巧3: 使用分隔符标明输入的不同部分中括号、XML标签、三引号等分隔符可以帮助划分要区别对待的文本也可以帮助模型更好的理解文本内容。常用把内容框起来技巧4: 对任务指定步骤对于可以拆分的任务可以尽量拆开最好能为其指定一系列步骤明确步骤可以让模型更容易实现它们。技巧5: 提供例子本质类似于few-shot leaning。先扔给大模型举例然后让模型按照例子来输出基于文本文档辅助大模型问答降低模型幻觉”(一本正经的胡说八道)问题。即使用参考文本作答经典的知识库用法让大模型使用我们提供的信息来组成答案。Zero-shot思想Zero-shot学习(Zero-shot Learning)是指在训练阶段不存在与测试阶段完全相同的类别但是模型可以使用训练过的知识来推广到测试集中的新类别上。这种能力被称为零样本”学习因为模型在训练时从未见过测试集中的新类别Zero-shot中文译为零样本”学习, 简单来说就是用语言定义任务, 依赖大模型的推理能力得到结果Few-shot思想Few-shot学习(Few-shot Learning)是指少样本学习当模型在学习了一定类别的大量数据后对于新的类别只需要少量的样本就能快速学习对应的有one-shot learning单样本学习也算样本少到为一的情况下的一种few-shot learning。Few-shot中文译为少量样本”学习, 简单来说就是用语言加少量示例定义任务, 在大模型的推理能力的基础上, 得到更高质量的结果零样本思想和少量样本思想, 在模型训练和提示词优化中均有体现。在模型训练层面:Zero-shot:零样本基于模型训练阶段学习的属性/语义关联去迁移到未知的新类别Few-shot:少样本基于少量样本快速泛化识别新样本在提示词优化层面:Zero-shot:无提示语言描述任务依赖模型预训练知识回答Few-shot:给与模型少量示例引导模型对齐示例输出结果JSON数据JSON(JavaScript Object Notation)是一种轻量级的数据交换格式易于人阅读和编写同时也易于机器解析和生成。Json是带有格式的字符串主要用于数据交换即程序和程序之间的信息互传使用Json会更加方便如下示例:Json主要有2种结构: Json对象和Json数组Python中使用Json主要完成:将Python字典、列表转换为Json字符串读取Json字符串转换为Python字典或列表主要使用Python内置的json库序列化: json.dumps(字典或列表,ensure_asciiFalse)将字典或列表转换为Json字符串ensure ascii参数确保中文能正常显示返回值: Json字符串反序列化: json.loads(json字符串)将Json字符串转换为Python字典或列表返回值: Python字典 或Python列表示例代码import json d { name: 周杰轮, age: 11, gender: 男 } s json.dumps(d, ensure_asciiFalse) print(s) l [ { name: 周杰轮, age: 11, gender: 男 }, { name: 蔡依临, age: 12, gender: 女 }, { name: 小明, age: 16, gender: 男 } ] print(json.dumps(l, ensure_asciiFalse)) json_str {name: 周杰轮, age: 11, gender: 男} json_array_str [{name: 周杰轮, age: 11, gender: 男}, {name: 蔡依临, age: 12, gender: 女}, {name: 小明, age: 16, gender: 男}] res_dict json.loads(json_str) print(res_dict, type(res_dict)) res_list json.loads(json_array_str) print(res_list, type(res_list))实战案例案例背景当前金融领域信息化发展的时代金融数据大量激增,许多投资者和研究者试图通过对这些数据进行深度分析, 而获得一些有效的决策和帮助, 尽可能减少决策失误带来的损失.所以,针对金融数据的分析方法研究是目前十分有益且热门的话题。当前案例主要有三大业务场景实现:基于大模型完成: 金融文本分类基于大模型完成: 金融文本信息抽取基于大模型完成: 金融文本匹配大模型选择: Qwen在线大模型(阿里云通义千问qwen3-max)采用方法: 基于Few-ShotZero-Shot的思想设计prompt(提示词)进而应用大模型完成相应的任务LLM文本分类LLM文本分类任务介绍下面几段文本来自某平台发布的金融领域文本:我们的目的是期望模型能够帮助我们识别出这4段话中每一句话描述的是一个什么类型的报告。即期望的输出结果为:提示词设计在该任务的prompt设计中我们主要考虑2点:需要向模型解释什么叫作「文本分类任务」需要让模型按照我们指定的格式输出为了让模型知道什么叫做「文本分类」我们借用FewShot的方式给模型展示一些正确的例子:其中User代表我们输入给模型的句子Bot代表模型的回复内容。注意: 上述例子中Bot 的部分也是由人工输入的其目的是希望看到在看到类似User中的句子时模型应当做出类似Bot的回答。代码实现from openai import OpenAI # 1. 获取client对象OpenAI类对象 client OpenAI( api_key, base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1, ) # 示例数据 examples_data { 新闻报道: 今日股市经历了一轮震荡受到宏观经济数据和全球贸易紧张局势的影响。投资者密切关注美联储可能的政策调整以适应市场的不确定性。, 财务报告: 本公司年度财务报告显示去年公司实现了稳步增长的盈利同时资产负债表呈现强劲的状况。经济环境的稳定和管理层的有效战略执行为公司的健康发展奠定了基础。, 公司公告: 本公司高兴地宣布成功完成最新一轮并购交易收购了一家在人工智能领域领先的公司。这一战略举措将有助于扩大我们的业务领域提高市场竞争力, 分析师报告: 最新的行业分析报告指出科技公司的创新将成为未来增长的主要推动力。云计算、人工智能和数字化转型被认为是引领行业发展的关键因素投资者应关注这些趋势 } # 分类列表 examples_types [新闻报道, 财务报道, 公司公告, 分析师报告] # 提问数据 questions [ 今日央行发布公告宣布降低利率以刺激经济增长。这一降息举措将影响贷款利率并在未来几个季度内对金融市场产生影响。, ABC公司今日发布公告称已成功完成对XYZ公司股权的收购交易。本次交易是ABC公司在扩大业务范围、加强市场竞争力方面的重要举措。据悉此次收购将进一步巩固ABC公司在行业中的地位并为未来业务发展提供更广阔的发展空间。详情请见公司官方网站公告栏, 公司资产负债表显示公司偿债能力强劲现金流充足为未来投资和扩张提供了坚实的财务基础。, 最新的分析报告指出可再生能源行业预计将在未来几年经历持续增长投资者应该关注这一领域的投资机会, 小明喜欢小新哟 ] # 模拟对话过程 [ {role: system, content: 你是金融专家将文本分类为[新闻报道, 财务报道, 公司公告, 分析师报告]不清楚的分类为不清楚类别 下面有示例}, {role: user, content: 今日央行发布公告宣布降.............}, {role: assistant, content: 新闻报道}, {role: user, content: ABC公司今日发布公告称已成功完成对XYZ公司股.................}, {role: assistant, content: 财务报告}, {role: user, content: 公司资产负债表显示公司偿债能力强劲现金流充足...................}, {role: assistant, content: 公司公告}, {role: user, content: 最新的分析报告指出可再生能源.............}, {role: assistant, content: 分析师报告}, {role: user, content: 要提问的问题} ] messages [ { role: system, content: f你是金融专家将文本分类为{examples_types}不清楚的分类为不清楚类别 下面有示例 }, ] for key, value in examples_data.items(): messages.append({role: user, content: value}) messages.append({role: assistant, content: key}) # 向模型提问 for q in questions: response client.chat.completions.create( modelqwen3-max, messagesmessages [{role: user, content: f按照示例回答这段文本的分类类别{q}}] ) print(response.choices[0].message.content)LLM信息抽取LLM信息抽取任务介绍首先我们定义信息抽取的Schema:下面几段文本来自某平台发布的股票信息:我们的目的是期望模型能够帮助我们识别出这2段话中的SPO三元组信息。Prompt设计在该任务的prompt设计中我们主要考虑2点:需要向模型解释什么叫作「信息抽取任务」需要让模型按照我们指定的格式(json)输出, 为了让模型知道什么叫做[信息抽取」我们借用FewShot的方式先给模型展示几个正确的例子:其中User代表我们输入给模型的句子Bot代表模型的回复内容。注意:上述例子中Bot 的部分也是由人工输入的其目的是希望看到在看到类似User中的句子时模型应当做出类似Bot的回答。代码实现from openai import OpenAI import json client OpenAI( api_key, base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1, ) 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人民币收盘。 ] # 模拟对话过程 [ {role: system, content: f你帮我完成信息抽取我给你句子你抽取{schema}信息按JSON字符串输出如果某些信息不存在用原文未提及表示请参考如下示例}, {role: user, content: 2023-01-10股市震荡。股票强大科技A股今日开盘价100人民币一度飙升至105人民币随后回落至98人民币最终以102人民币收盘成交量达到520000。}, {role: assistant, content: {日期:2023-01-10,股票名称:强大科技A股,开盘价:100人民币,收盘价:102人民币,成交量:520000}}, {role: user, content: 2024-05-16股市利好。股票英伟达美股今日开盘价105美元一度飙升至109美元随后回落至100美元最终以116美元收盘成交量达到3560000。}, {role: assistant, content: {日期:2024-05-16,股票名称:英伟达美股,开盘价:105美元,收盘价:116美元,成交量:3560000}}, {role: user, content: f按照上述示例现在抽取这个句子的信息{要抽取的句子文本}}]} ] 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_asciiFalse)} ) for q in questions: response client.chat.completions.create( modelqwen3-max, messagesmessages [{role: user, content: f按照上述的示例现在抽取这个句子的信息{q}}] ) print(response.choices[0].message.content)LLM文本匹配LLM信息文本匹配任务介绍首先我们构造几个短文本对:我们期望模型能够帮我们识别出成对的句子中2句话是否是有关联的。我们期望模型输出的结果为:Prompt设计在该任务的prompt设计中我们主要考虑2点:需要向模型解释什么叫作「文本匹配任务」需要让模型按照我们指定的格式输出为了让模型知道什么叫做「文本匹配任务」我们借用FewShot的方式先给模型展示几个正确的例子:其中User代表我们输入给模型的句子Bot代表模型的回复内容。注意: 上述例子中Bot的部分也是由人工输入的其目的是希望看到在看到类似User中的句子时模型应当做出类似Bot的回答。代码实现from openai import OpenAI client OpenAI( api_key, base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1, ) examples_data { 是: [ (公司ABC发布了季度财报显示盈利增长。, 财报披露公司ABC利润上升。), (公司ITCAST发布了年度财报显示盈利大幅度增长。, 财报披露公司ITCAST更赚钱了。) ], 不是: [ (黄金价格下跌投资者抛售。, 外汇市场交易额创下新高。), (央行降息刺激经济增长。, 新能源技术的创新。) ] } questions [ (利率上升影响房地产市场。, 高利率对房地产有一定的冲击。), (油价大幅度下跌能源公司面临挑战。, 未来智能城市的建设趋势越加明显。), (股票市场今日大涨投资者乐观。, 持续上涨的市场让投资者感到满意。) ] {role: system, content: f你帮我完成文本匹配我给你2个句子被[]包围你判断它们是否匹配回答是或不是请参考如下示例}, {role: user, content: 句子1[公司ABC发布了季度财报显示盈利增长。]句子2[财报披露公司ABC利润上升。]}, {role: assistant, content: 是}, {role: user, content: 句子1[公司ITCAST发布了年度财报显示盈利大幅度增长。]句子2[财报披露公司ITCAST更赚钱了。]}, {role: assistant, content: 是}, {role: user, content: 句子1[黄金价格下跌投资者抛售。]句子2[外汇市场交易额创下新高。]}, {role: assistant, content: 不是}, {role: user, content: 句子1[央行降息刺激经济增长。]句子2[新能源技术的创新。]}, {role: assistant, content: 不是}, {role: user, content: f按照上述示例回答这2个句子的情况。句子1: [...]句子2: [...]} messages [ { role: system, content: f你帮我完成文本匹配我给你2个句子被[]包围你判断它们是否匹配回答是或不是请参考如下示例 }, ] for key, value in examples_data.items(): for t in value: messages.append( {role: user, content: f句子1[{t[0]}]句子2[{t[1]}]} ) messages.append( {role: assistant, content: key} ) for q in questions: response client.chat.completions.create( modelqwen3-max, messagesmessages [{role: user, content: f句子1[{q[0]}]句子2[{q[1]}]}] ) print(response.choices[0].message.content)