大模型应用实战技巧:大模型说‘抱歉,我无法完成您的要求‘怎么办 - 你真的了解你给大模型的Prompt吗

简介: 大模型应用实战技巧:大模型说‘抱歉,我无法完成您的要求‘怎么办 - 你真的了解你给大模型的Prompt吗

0. 背景

不知道大家在使用 OpenAI API 的过程中有没有遇到过类似的问题:同一个Prompt,在ChatGPT界面中使用,返回的结果非常好,但是将Prompt放到API中调用,经常会返回“抱歉,我无法满足您的要求”,或一些不符合预期的结果。

如下面的例子:

使用ChatGPT界面,返回了预期的结果。

而使用 OpenAI API,返回的却是:“抱歉,我无法完成您的要求”

1. 问题原因及解决办法

1.1 原因1

通过API方式的调用,Prompt实际上是一个字符串,这与直接使用界面不同,你不知道ChatGPT界面背后是怎么处理这个字符串的。

1.1.1 原因解析

来看看API方式调用时,代码中Prompt的样子:

Prompt模板代码:

prompt = f"""
            你需要根据给定的任务思考出一系列Tasks,以此来保证能够一步一步地实现该任务的目标。任务为: {self.objective}.
            """
        prompt += """
        Return one task per line in your response. The result must be a numbered list in the format:
        #. First task
        #. Second task
        The number of each entry must be followed by a period. If your list is empty, write "There are no tasks to add at this time."
        Unless your list is empty, do not include any headers before your numbered list or follow your numbered list with any other output. 
        OUTPUT IN CHINESE
        """

它产生的实际Prompt字符串:

'\n            你需要根据给定的任务思考出一系列Tasks,以此来保证能够一步一步地实现该任务的目标。任务为: 历史上的今天发生了什么?.\n            \n        Return one task per line in your response. The result must be a numbered list in the format:\n\n        #. First task\n        #. Second task\n\n        The number of each entry must be followed by a period. If your list is empty, write "There are no tasks to add at this time."\n        Unless your list is empty, do not include any headers before your numbered list or follow your numbered list with any other output. \n        OUTPUT IN CHINESE\n        '

可以看到,产生的Prompt中带入了大量的空格、换行符等特殊字符。以我的测试来看,这些是导致大模型无法正确输出内容的直接原因。

1.1.2 解决方案

在给大模型输入Prompt前,对这个字符串进行处理,去除里面的大量空格,换行符可以保留。

处理代码:

prompt = prompt.replace('  ', '')  

注意,replace函数的第一个参数' '中是两个空格,如果是一个空格,会将英文单词之前的空格也删掉,导致如下的情况:

正确处理后的Prompt应该类似:

这样应该就能让大模型正确返回结果,不再是“抱歉”:

1.2 原因2

除了以上Prompt中可能存在大量干扰性的空格之外,还有个可能的原因是你使用的框架中可能隐藏了隐式的Prompt。

以我使用的MetaGPT为例,它在询问大模型时,除了我这个Prompt,其实还有自己隐式的Prompt,如下图,它每次调用大模型API时,会自动加一个system的Prompt,如果这个Prompt对你的问题有干扰,那也会大模型无法给出正确答案,所以这个system prompt的设置,也需要格外注意。

相关文章
|
5月前
|
人工智能 自然语言处理 搜索推荐
揭秘ChatGPT的Prompt方法:原理与应用总结
揭秘ChatGPT的Prompt方法:原理与应用总结
108 0
|
5月前
|
UED
【千帆大模型4】——Prompt优化——游戏对话语句优化
【千帆大模型4】——Prompt优化——游戏对话语句优化
102 1
|
5月前
【千帆大模型4】——Prompt优化——自定义角色【撰写大学生检讨书】
【千帆大模型4】——Prompt优化——自定义角色【撰写大学生检讨书】
84 0
|
12月前
|
机器学习/深度学习 人工智能 自然语言处理
ChatGPT 和 Whisper 模型的区别
ChatGPT 和 Whisper 模型的区别
|
24天前
|
人工智能 自然语言处理 机器人
【Prompt Engineering 提示词工程指南】​文本概括、信息提取、问答、文本分类、对话、代码生成、推理​
本文介绍了使用提示词与大语言模型(LLM)交互的基础知识。通过调整参数如温度(Temperature)、最高概率词元(Top_p)、最大长度(Max Length)及停止序列(Stop Sequences),可以优化模型输出。温度参数影响结果的随机性;Top_p 控制结果的多样性;最大长度限制输出长度;停止序列确保输出符合预期结构。此外,频率惩罚(Frequency Penalty)和存在惩罚(Presence Penalty)可减少重复词汇,提升输出质量。提示词需包含明确指令、上下文信息、输入数据及输出指示,以引导模型生成理想的文本。设计提示词时应注重具体性、避免歧义,并关注模型的具体行为
【Prompt Engineering 提示词工程指南】​文本概括、信息提取、问答、文本分类、对话、代码生成、推理​
|
5月前
|
机器学习/深度学习 人工智能 JSON
LLM 大模型学习必知必会系列(二):提示词工程-Prompt Engineering 以及实战闯关
LLM 大模型学习必知必会系列(二):提示词工程-Prompt Engineering 以及实战闯关
LLM 大模型学习必知必会系列(二):提示词工程-Prompt Engineering 以及实战闯关
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
让非算法同学也能了解 ChatGPT 等相关大模型
让非算法同学也能了解 ChatGPT 等相关大模型
让非算法同学也能了解 ChatGPT 等相关大模型
|
2月前
|
机器学习/深度学习 人工智能 JSON
掌握Prompt写作技巧:写出完美Prompt的秘籍
这篇文章的核心宗旨就是教你如何写出优秀的Prompt。我们将从Prompt的定义、运行过程,以及优秀Prompt应具备的各个要素入手,逐步展开详细的解析和实用示例,让你在短时间内掌握写作高效Prompt的技巧和策略。
|
2月前
|
知识图谱 缓存
模型遇见知识图谱问题之ARTIST模型通过GPT生成图像序列的问题如何解决
模型遇见知识图谱问题之ARTIST模型通过GPT生成图像序列的问题如何解决
|
5月前
|
自然语言处理 搜索推荐 知识图谱
【大模型】描述与 LLM 相关的个人项目或感兴趣的领域
【5月更文挑战第9天】【大模型】描述与 LLM 相关的个人项目或感兴趣的领域
下一篇
无影云桌面