【Prompt Engineering】2.迭代优化

一、环境配置

  • 配置使用zhipuai API 的环境。
  • 安装 zhipuai 库,并设置 API_KEY。
  • 封装 zhipuai 接口的函数,参数为 Prompt,返回对应结果。
python 复制代码
from zhipuai import ZhipuAI
zhipu_client = ZhipuAI(api_key="")
python 复制代码
# 一个封装 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

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

python 复制代码
# 示例:产品说明书
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泡沫

原产国

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

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

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

2.1 问题一:生成文本太长

  • 初始 Prompt 生成的文本过长,需要限制生成文本的长度。

  • 优化 Prompt,要求生成描述不多于 50 词。

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

2.2 问题二:抓错文本细节

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

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

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

使用最多50个单词。

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

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

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

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

使用最多50个单词。

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

2.3 问题三:添加表格描述

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

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

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

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

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

给表格命名为"产品尺寸"。

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

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

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

display(HTML(response))

迭代优化过程

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

实践建议

  • 使用 Jupyter Notebook 动手实践本章给出的示例,并尝试不同的变化,查看结果。
  • 对于更复杂的应用程序,可以对多个样本进行 Prompt 的迭代开发,并在样本集上进行评估。
  • 在更成熟的应用程序中,可以观察多个 Prompt 在多个样本集上的表现,测试平均或最差性能。
相关推荐
mit6.82426 分钟前
[AI React Web] 包与依赖管理 | `axios`库 | `framer-motion`库
前端·人工智能·react.js
小阿鑫41 分钟前
不要太信任Cursor,这位网友被删库了。。。
人工智能·aigc·cursor·部署mcp
说私域1 小时前
基于定制开发开源 AI 智能名片 S2B2C 商城小程序的热点与人工下发策略研究
人工智能·小程序
GoGeekBaird2 小时前
GoHumanLoopHub开源上线,开启Agent人际协作新方式
人工智能·后端·github
Jinkxs2 小时前
测试工程师的AI转型指南:从工具使用到测试策略重构
人工智能·重构
别惹CC2 小时前
Spring AI 进阶之路01:三步将 AI 整合进 Spring Boot
人工智能·spring boot·spring
stbomei4 小时前
当 AI 开始 “理解” 情感:情感计算技术正在改写人机交互规则
人工智能·人机交互
Moshow郑锴9 小时前
人工智能中的(特征选择)数据过滤方法和包裹方法
人工智能
TY-202510 小时前
【CV 目标检测】Fast RCNN模型①——与R-CNN区别
人工智能·目标检测·目标跟踪·cnn
CareyWYR11 小时前
苹果芯片Mac使用Docker部署MinerU api服务
人工智能