一个用于调试模板以请求OpenAI Chat Completion API的工具。

OpenAI的聊天完成API非常强大,如果你想使用大型语言模型来完成一些半智能的工作的话。虽然该接口是用来模拟与AI进行简单的聊天,就像ChatGPT一样,但它还允许许多其他功能,比如将文本和图片传递给AI,强制它以特定格式的JSON进行回应,或者让它决定执行任务所需的实际工具调用。所以,如果你想的话,你可以使用该接口来编程一个真正的AI代理。我一直很高兴地将其作为我AI项目中各种任务的主要工具。然而,让它做你想要的事情有时需要相当多的尝试。在这篇博客中,我想分享一种我通常使用的方法 - 使用我为此目的编写的一个小应用程序。

为什么聊天完成请求可能不是件简单的事情

在许多简单的情况下,您可以简单地给AI一个提示让它执行某项任务,这样就可以了。在其他情况下,就需要更多的关注。例如,在Composum AI中有一个功能,它使用OpenAI聊天完成功能,可以自动将整个网站翻译成各种语言。我们方法中一个重要的点是,它不会单独翻译每个网页组件中的文本,而是会一次性翻译整个页面,这样AI也可以看到页面上文本之间的关系。现在,如果CMS编辑器只更改整个页面中的一个段落,那就变得很有趣了。仅仅给AI更改段落可能会降低翻译质量,因为AI没有整个页面的背景。因此,我宁愿给它整个页面的文本,并从翻译结果中提取出已更改段落的翻译。但给AI已经翻译的页面的其他文本也很重要,因为这样它可以尝试保持对已有翻译的真实性,这也可能已经被CMS编辑器修改。因此,我与AI使用一种对话模板,将实际的文本填入其中。简化一下,看起来是这样的:

  • 系统提示: 您是一名忠实地翻译专业人员。
  • 用户:打印页面上已翻译的文本。您可以之后将这些视为示例。
  • Assistant: {这里是已经翻译成目标语言的文本}
  • 用户:打印您需要翻译的现有编辑文本。
  • 助手:{这里是我们需要翻译的原始文本}
  • 用户:打印要翻译的文本

这不是我在要求AI继续使用聊天补全API的真实聊天,而是一种“假聊天”,旨在诱使它给出我需要的准确响应。如果你感兴趣——以下是一个完整的请求,展示了在Composum AI中实际上看起来可能是什么样子,尽管最好通过将其导入应用程序来查看。

会话模板的调试

当然,您可以随时修改代码并在应用程序内进行测试。还有OpenAI Playground,您可以在那里尝试如何使用Chat Completion API。但是,当我测试一个应用程序时,我经常想调查为什么某个特定步骤出错了。对于这种情况,我通常会记录发送到OpenAI的JSON请求,并将其记录为调试日志级别。或者在我的命令行工具中,总是有一个冗长模式(-v),可以输出那些JSON请求。现在,如果有一个小应用程序,您可以快速粘贴这样一个JSON请求,将其整齐地显示出来,检查、更改并在OpenAI API上重新运行,直到它按照预期工作,那将会是什么样子呢?

开玩笑。当然,我写了这样一个应用程序。它最初是作为重新构建一个在ChatGPT之外的聊天应用程序的尝试,但我对它进行了扩展,使其完全适用于此目的。您可以加载请求,通过AI运行它,修改它,并根据需要重试。如果您喜欢,还可以设置参数n,以从AI获取10个响应,并一次检查它们。这经常帮助我找出如何最好地表达应用程序中的提示,以使AI确实做我喜欢它做的事情。无论如何,这超出了通常所说的“提示工程”。我喜欢称其为“对话工程”。

顺便提一下——这个应用程序是我ChatGPT工具箱的一部分,包括许多围绕各种OpenAI API和更多功能的命令行工具,其中许多工具都围绕着类似瑞士军刀的chatgpt工具,可以以多种方式使用聊天补全API。

这是最初来自我的博客,其中包含更多与人工智能相关的文章,在这里的一部分也可以找到。

2024-10-07 04:21:23 AI中文站翻译自原文