Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LLM 应用开发技巧 (二):如何打磨系统提示词? #135

Open
cssmagic opened this issue Nov 1, 2024 · 0 comments
Open

LLM 应用开发技巧 (二):如何打磨系统提示词? #135

cssmagic opened this issue Nov 1, 2024 · 0 comments
Labels

Comments

@cssmagic
Copy link
Owner

cssmagic commented Nov 1, 2024

昨天有群友问,如何自动化地通过 LLM API 帮自己批量处理文稿?这个场景简直跟魔法哥新书 《AI 辅助编程入门》 第九章的案例完全一致!

今天的文章同样节选自新书,而且也正好是这位群友需要的——在用脚本实现批量处理之前,需要先跑通提示词。让我们开始吧!

回顾第 9.4.2 小节

……GitHub Copilot 帮我们生成的函数代码如下:

def translate(text):
	completion = client.chat.completions.create(
		model = MODEL_NAME,
		messages = [
			{"role": "system", "content": "Translate the following text to Chinese."},
			{"role": "user", "content": text}
		]
	)

很好,这和你在之前的章节中看到的 OpenAI SDK 调用代码基本一致。

你的目光落在了 messages 参数这里。你现在对这个参数的作用有了更深的理解——它其实就是一组对话记录,模型把这些对话记录作为上下文,然后产生一条新消息。

💡

……在 GPT 模型的设定中,对话记录可以包含三种不同的角色:系统(system)、用户(user)和助理(assistant)。模型自己就是助理,每当我们调用 “对话式文本补全” API 时,它的回复都会以 assistant 的身份返回——这个很容易理解。

然后来看 user,这个角色就是模型的用户。用户消息就相当于我们在使用 ChatGPT 时对它说的话。用户角色的消息也称作 “用户提示词”。

最后,system 这个角色最为重要,但也是普通用户最容易忽略的。它相当于智能助理的生产者,对模型进行 “出厂设定”。系统消息通常排在对话记录的最顶部,它设定了模型的性格、功能、行为等基础规则,模型按照这些基础规则来响应用户消息。系统角色的消息也称作 “系统提示词”。

通常来说,我们在调用 “对话式文本补全” API 时,发送给模型的消息中至少要包含一条用户消息,这样模型才能产生有意义的回复。……

你在使用类似 ChatGPT 这样的智能助手方面已经有了不少心得,也掌握了不少提示词设计技巧。……不过 GitHub Copilot 生成的 messages 结构还是给你带来了有价值的启发——用户消息仅用来提供待处理的输入数据(请留意 text 参数的传递位置);而模型如何处理这些数据,则完全由系统提示词来规定

这样的消息角色定义,清晰地划分了模型的输入和输出,让你对整个对话记录有了更清晰的认识。

你甚至还联想到,这些消息角色不正对应了程序语言里 “函数” 的各个概念嘛:系统提示词定义了模型的行为,就像是函数体内部的逻辑;用户消息相当于传递给函数的参数;而模型的回复则是函数的返回值!……

系统提示词的设计理念

我们在上面这一小节提到了一种 “类似函数” 的系统提示词设计理念——用户提示词仅用于向模型提供待处理的输入数据;而模型如何处理这些数据、按什么格式输出数据,则完全由系统提示词来规定;模型输出的内容自然就是处理之后的结果。

这种设计方法非常适合通过脚本调用大模型 API 的场景,它最大的优势在于 清晰地划分了模型的输入和输出,让模型的行为模块化,易于调试和优化

打磨系统提示词的方式

我们不仅可以通过脚本调用 API 来进行系统提示词的持续迭代,还可以通过图形界面来更高效地实施这个过程。

比如 OpenAI 官网提供的 GPTs 编辑界面( https://chatgpt.com/gpts/editor ),就是一个非常实用的系统提示词调试工具。这个界面分为左右两栏,左栏中的 “Instructions” 相当于系统提示词的编辑区,而右栏的对话界面则可以实时地验证修改效果(如下图所示)。

9 8 gpts-edtor

如果你有 OpenAI API 访问权限的话,还可以尝试 OpenAI 官网提供的 “Playground” 界面( https://platform.openai.com/playground/chat )。这个界面不仅支持系统提示词的编辑,还支持多款模型的切换和多个底层参数的调节。

9 8 openai-playground

笔者开发的好几款 AI 工具的系统提示词都是在这些界面打磨完成的。如果你没有 OpenAI GPTs 和 API 的访问权限,或者你需要基于其他大模型打磨系统提示词,不妨阅读第十章即将呈现的案例——我们将在 GitHub Copilot 的协助下,自行开发一款网页版的智能对话机器人,兼具 LLM 系统提示词的调试功能。

小结

通过本篇文章,你已经掌握了 LLM 系统提示词的设计与优化要点。清晰划分消息角色、利用模块化设计,可以让模型行为更可控,更适合批量处理等复杂任务!

本系列文章均节选自魔法哥的新书《AI 辅助编程入门》,探讨 LLM 应用开发的实战经验,比如 如何选择模型配置 LLM API 参数探究 API 的返回数据 等等。各位新朋友请关注公众号,下次更新不迷路:

weixin-qrcode


cover-3d w1200

如果你希望 借助 AI 编程工具,快速掌握 LLM 应用开发技能,在 AI 时代抢占先机,请务必拿下魔法哥的这本新书!目前正遇上双十一,京东自营全网底价,正是入手的好时机。

promo 2

如果你想收藏一本魔法哥亲笔签名的纸质书,长按识别下图的小程序码,即可下单。选择 “豪华版” 还可以定制赠言哦

sign

祝阅读愉快!


📣 AI 魔法群开放啦!

扫码加群,领取魔法哥整理的常用 AI 工具包:

qun-qr


🔥 往期推荐

AI 应用开发指南:

ChatGPT 高级技巧:

AI 资讯与评述:


© Creative Commons BY-NC-ND 4.0   |   我要订阅   |   我要打赏

@cssmagic cssmagic added the AI label Nov 1, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant