【Prompt Engineering】2.迭代优化

news/2024/12/21 8:04:04/

一、环境配置

  • 配置使用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, HTMLdisplay(HTML(response))

迭代优化过程

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

实践建议

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

http://www.ppmy.cn/news/1556872.html

相关文章

JetBrains IDEA 2024 在使用 lombok 后构建失败/编译失败解决方案

问题是啥 不知道咋的&#xff0c;在更新了 IDEA 2024.3 之后莫名其妙地就出现了构建失败的情况&#xff0c;控制台里面所有和 lombok 有关的都报红了。情况截图展示了。 研究过程 问 AI&#xff1f;那绝对得不到解答的。问搜索引擎&#xff1f;一水 AI 答案&#xff0c;或者…

Laya ios接入goole广告,搭建环境 1

只能说麻烦的一批&#xff0c;会了不难&#xff0c;难在不会 没有mac机&#xff0c;用的mac本&#xff0c;提示----》可能需要你升级macbook系统版本&#xff0c; 1、安装cocoapods sudo gem install cocoapods -V 加上-V&#xff0c;能查看安装进度&#xff0c;记住大写的…

Node.js之 node-opcua 使用

Node-OPCUA 是一个专为 Node.js 和浏览器环境设计的 OPC UA 协议栈&#xff0c;使用 TypeScript 编写&#xff0c;提供了实现 OPC UA 协议的所有必要功能。以下是 Node-OPCUA 的一些主要特点和使用方法&#xff1a; Node-OPCUA 特点 完整的 OPC UA 协议栈&#xff1a;Node-OPC…

网安入门|前端基础之Html_css基础

Web1.0、Web2.0 和 Web3.0 是互联网发展的三个主要阶段&#xff0c;每个阶段有其独特的特征和技术进步。以下是对它们的介绍&#xff1a; Web 1.0&#xff08;静态互联网&#xff09; 时间&#xff1a;1990年代初到2000年代初 特点&#xff1a; 静态内容&#xff1a;网页主要…

小程序-基于java+SSM+Vue的微信阅读小程序设计与实现

项目运行 1.运行环境&#xff1a;最好是java jdk 1.8&#xff0c;我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境&#xff1a;IDEA&#xff0c;Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境&#xff1a;Tomcat 7.x,8.x,9.x版本均可 4.硬件环境&#xff1a…

OOP面向对象编程:类与类之间的关系

OOP面向对象编程&#xff1a;类与类之间的关系 三大关系&#xff1a;复合&#xff08;适配器设计模式&#xff09;、委托&#xff08;桥接设计模式&#xff09;、继承 8、1复合Composition has-a -> 适配器模式 一个类里面含有另一个类的对象 —> 复合关系 has-a 适配器设…

【自动化部署】Ansible Playbook 基础应用

文章目录 Ansible Playbook基础示例Playbook 结构运行 Playbook 定义和引用变量指定远程主机sudo切换用户when条件判断Ansible Playbook 迭代功能with_items 循环结构创建文件&#xff08;Play 1&#xff09;创建目录&#xff08;Play 2&#xff09;添加用户&#xff08;Play 3…

@Resource与@Autowire

Resource与Autowired都是Java中用于依赖注入的注解&#xff0c;它们在Spring/Spring Boot项目中有着广泛的应用。以下是对这两个注解的详细解析&#xff1a; 一、Resource注解 来源&#xff1a; Resource是Java EE&#xff08;Jakarta EE&#xff09;提供的注解&#xff0c;它…