【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 在多个样本集上的表现,测试平均或最差性能。
相关推荐
MYT_flyflyfly27 分钟前
LRM-典型 Transformer 在视觉领域的应用,单个图像生成3D图像
人工智能·深度学习·transformer
明月醉窗台37 分钟前
深度学习(15)从头搭建模型到训练、预测示例总结
人工智能·python·深度学习·目标检测·计算机视觉
三天不学习1 小时前
Visual Studio 玩转 IntelliCode AI辅助开发
ide·人工智能·ai编程·visual studio·intellicode
martian6651 小时前
深入详解线性代数基础知识:理解矩阵与向量运算、特征值与特征向量,以及矩阵分解方法(如奇异值分解SVD和主成分分析PCA)在人工智能中的应用
人工智能·线性代数·矩阵·特征向量
过9531 小时前
2024年全球安全光幕装置行业总体规模、主要企业国内外市场占有率及排名
人工智能·安全·百度
东方佑1 小时前
类A* llm解码 幻觉更低更稳定
人工智能·深度学习·机器学习
产品大道1 小时前
无人预见的人工智能创业大难题
人工智能·搜索引擎·百度
四口鲸鱼爱吃盐1 小时前
Pytorch | 从零构建AlexNet对CIFAR10进行分类
人工智能·pytorch·分类
cdut_suye1 小时前
动态规划在斐波那契数列中的应用与优化
数据结构·c++·人工智能·python·算法·动态规划·热榜
知识鱼丸2 小时前
opencv所有常见函数
人工智能·opencv·计算机视觉