当前位置: 首页 > article >正文

【Prompt Engineering】2.迭代优化

一、环境配置

  • 配置使用zhipuai  API 的环境。
  • 安装 zhipuai 库,并设置 API_KEY。
  • 封装 zhipuai 接口的函数,参数为 Prompt,返回对应结果。
from zhipuai import ZhipuAI
zhipu_client = ZhipuAI(api_key="")
# 一个封装 OpenAI 接口的函数,参数为 Prompt,返回对应结果
def get_completion(prompt, model="gpt-3.5-turbo"):
    '''
    prompt: 对应的提示词
    model: 调用的模型,默认为 gpt-3.5-turbo(ChatGPT),有内测资格的用户可以选择 gpt-4
    '''
    response = zhipu_client.chat.completions.create(
    model="glm-3-turbo",
    messages=[
        {"role": "user", "content": prompt},
    ],
)
    # 调用 OpenAI 的 ChatCompletion 接口
    return response.choices[0].message.content

二、任务——从产品说明书生成一份营销产品描述

# 示例:产品说明书
fact_sheet_chair = """
概述

    美丽的中世纪风格办公家具系列的一部分,包括文件柜、办公桌、书柜、会议桌等。
    多种外壳颜色和底座涂层可选。
    可选塑料前后靠背装饰(SWC-100)或10种面料和6种皮革的全面装饰(SWC-110)。
    底座涂层选项为:不锈钢、哑光黑色、光泽白色或铬。
    椅子可带或不带扶手。
    适用于家庭或商业场所。
    符合合同使用资格。

结构

    五个轮子的塑料涂层铝底座。
    气动椅子调节,方便升降。

尺寸

    宽度53厘米|20.87英寸
    深度51厘米|20.08英寸
    高度80厘米|31.50英寸
    座椅高度44厘米|17.32英寸
    座椅深度41厘米|16.14英寸

选项

    软地板或硬地板滚轮选项。
    两种座椅泡沫密度可选:中等(1.8磅/立方英尺)或高(2.8磅/立方英尺)。
    无扶手或8个位置PU扶手。

材料
外壳底座滑动件

    改性尼龙PA6/PA66涂层的铸铝。
    外壳厚度:10毫米。
    座椅
    HD36泡沫

原产国

    意大利
"""
#   Prompt :基于说明书创建营销描述
prompt = f"""
您的任务是帮助营销团队基于技术说明书创建一个产品的营销描述。

根据```标记的技术说明书中提供的信息,编写一个产品描述。

技术说明: ```{fact_sheet_chair}```
"""
response = get_completion(prompt)
print(response)

2.1 问题一:生成文本太长

  • 初始 Prompt 生成的文本过长,需要限制生成文本的长度。
  • 优化 Prompt,要求生成描述不多于 50 词。
    # 优化后的 Prompt,要求生成描述不多于 50 词
    prompt = f"""
    您的任务是帮助营销团队基于技术说明书创建一个产品的零售网站描述。
    
    根据```标记的技术说明书中提供的信息,编写一个产品描述。
    
    使用最多50个词。
    
    技术规格:```{fact_sheet_chair}```
    """
    response = get_completion(prompt)
    print(response)
    
    # 由于中文需要分词,此处直接计算整体长度
    len(response)

2.2 问题二:抓错文本细节

  • 生成的文本未抓住目标受众(家具零售商)关心的技术细节和材料。
  • 优化 Prompt,要求描述具有技术性质,侧重于产品的材料构造。
# 优化后的 Prompt,说明面向对象,应具有什么性质且侧重于什么方面
prompt = f"""
您的任务是帮助营销团队基于技术说明书创建一个产品的零售网站描述。

根据```标记的技术说明书中提供的信息,编写一个产品描述。

该描述面向家具零售商,因此应具有技术性质,并侧重于产品的材料构造。

使用最多50个单词。

技术规格: ```{fact_sheet_chair}```
"""
response = get_completion(prompt)
print(response)
# 更进一步
prompt = f"""
您的任务是帮助营销团队基于技术说明书创建一个产品的零售网站描述。

根据```标记的技术说明书中提供的信息,编写一个产品描述。

该描述面向家具零售商,因此应具有技术性质,并侧重于产品的材料构造。

在描述末尾,包括技术规格中每个7个字符的产品ID。

使用最多50个单词。

技术规格: ```{fact_sheet_chair}```
"""
response = get_completion(prompt)
print(response)

2.3 问题三:添加表格描述

  • 进一步要求提取产品尺寸信息并组织成表格,指定表格的列、表名和格式。
  • 将所有内容格式化为 HTML,以便在网站中使用。
# 要求它抽取信息并组织成表格,并指定表格的列、表名和格式
prompt = f"""
您的任务是帮助营销团队基于技术说明书创建一个产品的零售网站描述。

根据```标记的技术说明书中提供的信息,编写一个产品描述。

该描述面向家具零售商,因此应具有技术性质,并侧重于产品的材料构造。

在描述末尾,包括技术规格中每个7个字符的产品ID。

在描述之后,包括一个表格,提供产品的尺寸。表格应该有两列。第一列包括尺寸的名称。第二列只包括英寸的测量值。

给表格命名为“产品尺寸”。

将所有内容格式化为可用于网站的HTML格式。将描述放在<div>元素中。

技术规格:```{fact_sheet_chair}```
"""

response = get_completion(prompt)
print(response)
# 表格是以 HTML 格式呈现的,加载出来
from IPython.display import display, HTML

display(HTML(response))

迭代优化过程

  • 开发基于 LLM 的应用程序时,很难一次就得到适合最终应用的 Prompt。
  • 通过迭代过程不断改进 Prompt,直至找到适合任务的版本。
  • 首先尝试编写 Prompt,然后运行并查看结果,根据需要进行迭代优化。
  • 关键在于掌握有效的开发 Prompt 的过程,而不是寻求“完美”的 Prompt。

实践建议

  • 使用 Jupyter Notebook 动手实践本章给出的示例,并尝试不同的变化,查看结果。
  • 对于更复杂的应用程序,可以对多个样本进行 Prompt 的迭代开发,并在样本集上进行评估。
  • 在更成熟的应用程序中,可以观察多个 Prompt 在多个样本集上的表现,测试平均或最差性能。

http://www.kler.cn/a/441856.html

相关文章:

  • 微服务知识——4大主流微服务架构方案
  • linux如何并行执行命令
  • Windows电脑安装USB Redirector并实现内外网跨网USB共享通信访问
  • 力扣 739. 每日温度
  • 日历热力图,月度数据可视化图表(日活跃图、格子图)vue组件
  • 两份PDF文档,如何比对差异,快速定位不同之处?
  • 【附源码】Electron Windows桌面壁纸开发中的 CommonJS 和 ES Module 引入问题以及 Webpack 如何处理这种兼容
  • 判题机的开发(代码沙箱、三种模式、工厂模式、策略模式优化、代理模式)
  • 单片机:实现蜂鸣器数码管的显示(附带源码)
  • Numpy基本介绍
  • Leetcode打卡:形成目标字符串需要的最少字符串数II
  • 如何在 Linux 服务器上部署 Pydio Cells 教程
  • STM32F407ZGT6-UCOSIII笔记7:优先级反转现象
  • 【图形渲染】【Unity Shader】【Nvidia CG】有用的参考资料链接
  • Composer指定php版本执行(windows)
  • git branch -r(--remotes )显示你本地仓库知道的所有 远程分支 的列表
  • Hadoop是什么?Hadoop介绍
  • workman服务端开发模式-应用开发-总架构逻辑说明
  • 虚拟现实辅助工程技术在航空领域的应用
  • git pull 和 git pull --rebase 区别
  • 初见react
  • 搭建springmvc项目
  • Spire.PDF for .NET【页面设置】演示:向 PDF 文档添加页码
  • Unity3D实现抽象类的应用场景例子
  • SQL中的数据类型
  • 使用Node.js搭配express框架快速构建后端业务接口模块Demo