鱼C论坛

 找回密码
 立即注册
查看: 159|回复: 7

[AI工作流] 5.大模型prompt工程

[复制链接]
发表于 2026-3-6 21:36:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 糖逗 于 2026-3-7 11:55 编辑
1. 提示工程是什么?
是指在不更新模型权重的情况下,如何与大模型交互以,引导其行为,以获得所需结果的方法。
  • 不管是RAG还是Agent智能体,亦或是其它围绕模型的各类复杂的开发工作,本质上都可以简单总结为在提示词上下功夫。
  • 提示词优化是所有大模型应用开发的基础必修课,一个好的提示词,甚至能让基础模型的输出效果媲美经过简单微调的模型。


2. 提示词技巧

  • 详细的描述
  • 让模型充当某个角色
  • 使用分隔符表明输入的不同部分
    eg:
    用20个字符总结由三引号分割的文本。"""在此插入文本"""
  • 对任务指定步骤
  • 提供例子
  • 使用参考文本:基于文本文档,辅助大模型问答,降低模型“幻觉”



3. 提示词实战案例
  • 整体项目背景

  1. 提示词工程实战的业务需求是在金融业务内完成:
  2. 文本分类
  3. 信息抽取
  4. 文本匹配
  5. 共3个任务目标,通过zero-shot、few-shot思想设计提示词完成。

复制代码
下载 (7).png 下载 (8).png

  • 案例1:LLM实现金融文本分类

①任务介绍
下载 (9).png
②Prompt设计
下载 (10).png
③Prompt代码实战
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Fri Mar  6 21:26:36 2026

  4. @author: DELL
  5. """

  6. from openai import OpenAI

  7. # 1. 获取client对象,OpenAI类对象
  8. client = OpenAI(
  9.     # base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
  10.     base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
  11. )

  12. examples_data = {       # 示例数据
  13.     '新闻报道': '今日,股市经历了一轮震荡,受到宏观经济数据和全球贸易紧张局势的影响。投资者密切关注美联储可能的政策调整,以适应市场的不确定性。',
  14.     '财务报告': '本公司年度财务报告显示,去年公司实现了稳步增长的盈利,同时资产负债表呈现强劲的状况。经济环境的稳定和管理层的有效战略执行为公司的健康发展奠定了基础。',
  15.     '公司公告': '本公司高兴地宣布成功完成最新一轮并购交易,收购了一家在人工智能领域领先的公司。这一战略举措将有助于扩大我们的业务领域,提高市场竞争力',
  16.     '分析师报告': '最新的行业分析报告指出,科技公司的创新将成为未来增长的主要推动力。云计算、人工智能和数字化转型被认为是引领行业发展的关键因素,投资者应关注这些趋势'
  17. }
  18. # 分类列表
  19. examples_types = ['新闻报道', '财务报道', '公司公告', '分析师报告']

  20. # 提问数据
  21. questions = [
  22.     "今日,央行发布公告宣布降低利率,以刺激经济增长。这一降息举措将影响贷款利率,并在未来几个季度内对金融市场产生影响。",
  23.     "ABC公司今日发布公告称,已成功完成对XYZ公司股权的收购交易。本次交易是ABC公司在扩大业务范围、加强市场竞争力方面的重要举措。据悉,此次收购将进一步巩固ABC公司在行业中的地位,并为未来业务发展提供更广阔的发展空间。详情请见公司官方网站公告栏",
  24.     "公司资产负债表显示,公司偿债能力强劲,现金流充足,为未来投资和扩张提供了坚实的财务基础。",
  25.     "最新的分析报告指出,可再生能源行业预计将在未来几年经历持续增长,投资者应该关注这一领域的投资机会",
  26.     "小明喜欢小新哟"
  27. ]

  28. """
  29. [
  30.     {"role": "system",      "content": "你是金融专家,将文本分类为['新闻报道', '财务报道', '公司公告', '分析师报告'],不清楚的分类为'不清楚类别' 下面有示例:"},
  31.      
  32.     {"role": "user",        "content": "今日,央行发布公告宣布降............."},
  33.     {"role": "assistant",   "content": "新闻报道"},
  34.     {"role": "user",        "content": "ABC公司今日发布公告称,已成功完成对XYZ公司股................."},
  35.     {"role": "assistant",   "content": "财务报告},
  36.     {"role": "user",        "content": "公司资产负债表显示,公司偿债能力强劲,现金流充足..................."},
  37.     {"role": "assistant",   "content": "公司公告"},
  38.     {"role": "user",        "content": "最新的分析报告指出,可再生能源............."},
  39.     {"role": "assistant",   "content": "分析师报告"},
  40.    
  41.     {"role": "user",        "content": "要提问的问题"}
  42. ]
  43. """

  44. messages = [
  45.     {"role": "system", "content": "你是金融专家,将文本分类为['新闻报道', '财务报道', '公司公告', '分析师报告'],不清楚的分类为'不清楚类别' 下面有示例:"},
  46. ]

  47. for key, value in examples_data.items():
  48.     messages.append({"role": "user", "content": value})
  49.     messages.append({"role": "assistant", "content": key})


  50. # 向模型提问
  51. for q in questions:
  52.     response = client.chat.completions.create(
  53.         # model="qwen3-max",
  54.         model="qwen3-max",
  55.         messages=messages + [{"role": "user", "content": f"按照示例,回答这段文本的分类类别:{q}"}]
  56.     )

  57.     print(response.choices[0].message.content)
复制代码

  • 案例2:LLM实现金融文本信息抽取
①任务介绍
下载 (12).png
②Prompt设计
下载 (13).png
③Prompt代码实战
  1. from openai import OpenAI
  2. import json

  3. client = OpenAI(
  4.    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
  5. )

  6. schema = ['日期', '股票名称', '开盘价', '收盘价', '成交量']
  7. examples_data = [       # 示例数据
  8.     {
  9.         "content": "2023-01-10,股市震荡。股票强大科技A股今日开盘价100人民币,一度飙升至105人民币,随后回落至98人民币,最终以102人民币收盘,成交量达到520000。",
  10.         "answers": {
  11.             "日期": "2023-01-10",
  12.             "股票名称": "强大科技A股",
  13.             "开盘价": "100人民币",
  14.             "收盘价": "102人民币",
  15.             "成交量": "520000"
  16.         }
  17.     },
  18.     {
  19.         "content": "2024-05-16,股市利好。股票英伟达美股今日开盘价105美元,一度飙升至109美元,随后回落至100美元,最终以116美元收盘,成交量达到3560000。",
  20.         "answers": {
  21.             "日期": "2024-05-16",
  22.             "股票名称": "英伟达美股",
  23.             "开盘价": "105美元",
  24.             "收盘价": "116美元",
  25.             "成交量": "3560000"
  26.         }
  27.     }
  28. ]
  29. questions = [       # 提问问题
  30.     "2025-06-16,股市利好。股票传智教育A股今日开盘价66人民币,一度飙升至70人民币,随后回落至65人民币,最终以68人民币收盘,成交量达到123000。",
  31.     "2025-06-06,股市利好。股票黑马程序员A股今日开盘价200人民币,一度飙升至211人民币,随后回落至201人民币,最终以206人民币收盘。"
  32. ]


  33. """
  34. [
  35.     {"role": "system",      "content": f"你帮我完成信息抽取,我给你句子,你抽取{schema}信息,按JSON字符串输出,如果某些信息不存在,用'原文未提及'表示,请参考如下示例:"},

  36.     {"role": "user",        "content": "2023-01-10,股市震荡。股票强大科技A股今日开盘价100人民币,一度飙升至105人民币,随后回落至98人民币,最终以102人民币收盘,成交量达到520000。"},
  37.     {"role": "assistant",   "content": '{"日期":"2023-01-10","股票名称":"强大科技A股","开盘价":"100人民币","收盘价":"102人民币","成交量":"520000"}'},
  38.     {"role": "user",        "content": "2024-05-16,股市利好。股票英伟达美股今日开盘价105美元,一度飙升至109美元,随后回落至100美元,最终以116美元收盘,成交量达到3560000。"},
  39.     {"role": "assistant",   "content": '{"日期":"2024-05-16","股票名称":"英伟达美股","开盘价":"105美元","收盘价":"116美元","成交量":"3560000"}'},

  40.     {"role": "user",        "content": f"按照上述示例,现在抽取这个句子的信息:{要抽取的句子文本}"}]}
  41. ]
  42. """


  43. messages = [
  44.     {"role": "system",      "content": f"你帮我完成信息抽取,我给你句子,你抽取{schema}信息,按JSON字符串输出,如果某些信息不存在,用'原文未提及'表示,请参考如下示例:"}
  45. ]

  46. for example in examples_data:
  47.     messages.append(
  48.         {"role": "user", "content": example["content"]}
  49.     )

  50.     messages.append(
  51.         {"role": "assistant", "content": json.dumps(example["answers"], ensure_ascii=False)}
  52.     )


  53. for q in questions:
  54.     response = client.chat.completions.create(
  55.         model="qwen3-max",
  56.         messages=messages + [{"role": "user", "content": f"按照上述的示例,现在抽取这个句子的信息:{q}"}]
  57.     )

  58.     print(response.choices[0].message.content)


复制代码
  • 案例2:LLM实现金融文本文本信息匹配
    ①任务介绍
    下载 (14).png
    ②Prompt设计
    下载 (15).png

    ③Prompt代码实战
    1. from openai import OpenAI

    2. client = OpenAI(
    3.      base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
    4. )

    5. examples_data = {
    6.     "是": [
    7.         ("公司ABC发布了季度财报,显示盈利增长。", "财报披露,公司ABC利润上升。"),
    8.         ("公司ITCAST发布了年度财报,显示盈利大幅度增长。", "财报披露,公司ITCAST更赚钱了。")
    9.     ],
    10.     "不是": [
    11.         ("黄金价格下跌,投资者抛售。", "外汇市场交易额创下新高。"),
    12.         ("央行降息,刺激经济增长。", "新能源技术的创新。")
    13.     ]
    14. }

    15. questions = [
    16.     ("利率上升,影响房地产市场。", "高利率对房地产有一定的冲击。"),
    17.     ("油价大幅度下跌,能源公司面临挑战。", "未来智能城市的建设趋势越加明显。"),
    18.     ("股票市场今日大涨,投资者乐观。", "持续上涨的市场让投资者感到满意。")
    19. ]

    20. """
    21.     {"role": "system",      "content": f"你帮我完成文本匹配,我给你2个句子,被[]包围,你判断它们是否匹配,回答是或不是,请参考如下示例:"},
    22.      
    23.     {"role": "user",        "content": "句子1:[公司ABC发布了季度财报,显示盈利增长。]句子2:[财报披露,公司ABC利润上升。]"},
    24.     {"role": "assistant",   "content": "是"},
    25.     {"role": "user",        "content": "句子1:[公司ITCAST发布了年度财报,显示盈利大幅度增长。]句子2:[财报披露,公司ITCAST更赚钱了。]"},
    26.     {"role": "assistant",   "content": "是"},
    27.     {"role": "user",        "content": "句子1:[黄金价格下跌,投资者抛售。]句子2:[外汇市场交易额创下新高。]"},
    28.     {"role": "assistant",   "content": "不是"},
    29.     {"role": "user",        "content": "句子1:[央行降息,刺激经济增长。]句子2:[新能源技术的创新。]"},
    30.     {"role": "assistant",   "content": "不是"},
    31.    
    32.     {"role": "user",        "content": f"按照上述示例,回答这2个句子的情况。句子1: [...],句子2: [...]"}
    33. """

    34. messages = [
    35.     {"role": "system", "content": f"你帮我完成文本匹配,我给你2个句子,被[]包围,你判断它们是否匹配,回答是或不是,请参考如下示例:"},
    36. ]

    37. for key, value in examples_data.items():
    38.     for t in value:
    39.         messages.append(
    40.             {"role": "user", "content": f"句子1:[{t[0]}],句子2:[{t[1]}]"}
    41.         )
    42.         messages.append(
    43.             {"role": "assistant", "content": key}
    44.         )

    45. for q in questions:
    46.     response = client.chat.completions.create(
    47.         model="qwen3-max",
    48.         messages=messages + [{"role": "user", "content": f"句子1:[{q[0]}],句子2:[{q[1]}]"}]
    49.     )

    50.     print(response.choices[0].message.content)
    复制代码










本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2026-3-6 21:37:21 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2026-3-7 10:30:47 | 显示全部楼层

学习了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 6 天前 | 显示全部楼层
你们太牛了,什么时候可以做到你们呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 4 天前 | 显示全部楼层
空python 发表于 2026-3-21 22:00
你们太牛了,什么时候可以做到你们呢?

这个是B站 黑马RAG和Agent实战课程,我自己整理的笔记。你也可以做到。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 4 天前 | 显示全部楼层
糖逗 发表于 2026-3-23 09:59
这个是B站 黑马RAG和Agent实战课程,我自己整理的笔记。你也可以做到。

我现在看了几课都看不懂,一门新的语言,需要大量时间铺垫,向您学习,向大家学习!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 4 天前 | 显示全部楼层
空python 发表于 2026-3-23 13:20
我现在看了几课都看不懂,一门新的语言,需要大量时间铺垫,向您学习,向大家学习!

有python基础就可以了,这个其实没有你想得那么复杂。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 4 天前 | 显示全部楼层
糖逗 发表于 2026-3-23 16:26
有python基础就可以了,这个其实没有你想得那么复杂。

好的,努力搬砖中。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-27 09:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表