【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 在多个样本集上的表现,测试平均或最差性能。
相关推荐
007tg2 小时前
从ChatGPT家长控制功能看AI合规与技术应对策略
人工智能·chatgpt·企业数据安全
Memene摸鱼日报2 小时前
「Memene 摸鱼日报 2025.9.11」腾讯推出命令行编程工具 CodeBuddy Code, ChatGPT 开发者模式迎来 MCP 全面支持
人工智能·chatgpt·agi
linjoe993 小时前
【Deep Learning】Ubuntu配置深度学习环境
人工智能·深度学习·ubuntu
先做个垃圾出来………4 小时前
残差连接的概念与作用
人工智能·算法·机器学习·语言模型·自然语言处理
AI小书房4 小时前
【人工智能通识专栏】第十三讲:图像处理
人工智能
fanstuck4 小时前
基于大模型的个性化推荐系统实现探索与应用
大数据·人工智能·语言模型·数据挖掘
多看书少吃饭6 小时前
基于 OpenCV 的眼球识别算法以及青光眼算法识别
人工智能·opencv·计算机视觉
一条数据库6 小时前
南京方言数据集|300小时高质量自然对话音频|专业录音棚采集|方言语音识别模型训练|情感计算研究|方言保护文化遗产数字化|语音情感识别|方言对话系统开发
人工智能·音视频·语音识别
Yingjun Mo6 小时前
1. 统计推断-基于神经网络与Langevin扩散的自适应潜变量建模与优化
人工智能·神经网络·算法·机器学习·概率论