大模型场景实战培训,提示词效果调优,大模型应用定制开发,点击咨询
1. 搭建平台
我们的游戏应用是基于百度智能云千帆 AppBuilder(以下简称AppBuilder)搭建起来的,AppBuilder 是基于大模型搭建AI原生应用的工作台,提供 RAG、Agent、GBI等应用框架,文档问答、表格问答、对话、创作等应用组件,以及文生图、语音等传统AI组件,降低AI原生应用的开发门槛,赋能开发者快速实现应用搭建!
2. 工作台介绍
打开 百度智能云千帆AppBuilder产品控制台 ,在主页面点击个人空间,然后点击右上角的创建应用,就可以进入应用配置工作台了,界面如下:
可以看到整个工作台从左至右分为三个区域,依次是应用设定、能力扩展、预览与调试,在这里可以对应用进行功能角色配置以及调试优化,下面是每个功能区域的简介。
2.1 应用设定
该区域主要是完成应用的基本信息设置以及角色指令设置,基本信息中的应用图标,可以使用AI自动生成,也可以从本地上传,角色指令就是适用于该应用的 prompt 提示词,这部分会在后面的章节中详细介绍。
2.2 能力扩展
能力扩展部分的功能比较丰富,支持添加组件,支持上传知识库文件,可以设置应用的开场白还有推荐问,也可以使用追问功能, 很多开发者可能对组件功能比较感兴趣,点击组件旁边的加号就可以添加组件了,在组件列表中,可以看到系统自带的有百度搜索(可以使用百度搜索功能进行查询)、代码解释器(专门对代码进行释义和解读的组件)、文生图(text to image通过文字生成对应的图片)等丰富的组件,帮助开发者们进一步拓展应用的能力。
2.3 预览与调试
右上角这里可以选择应用的思考模型和问答模型,思考模型用于任务规划和选择组件,问答模型用于总结生成回复结果,AppBuilder默认使用 ERNIE-4.0-8k 与 ERNIE Speed-AppBuilder 这2个模型。而多样性 参数会调整模型对下一个词的选择的概率分布的“热度”,较高的数值会导致更多的随机性和多样性,而较低的数值则会导致更加确定性的输出,实际应用搭建中根据业务场景的不同来自行设定该参数。
本文中我们主要涉及角色指令的编写技巧,暂时不需要使用到其他组件,下面让我们一起看下如何一步步构建角色指令吧~
3. 角色指令
角色指令是搭建一款应用的核心要素,它用来告诉大模型扮演什么样的角色,需要完成什么样的任务,任务结果以什么样的格式输出,也就是业内所说的提示词工程(prompt engineering),想要应用达到理想的效果,那么肯定需要我们不断地调试优化prompt,通过不断地磨合,让大模型充分理解我们的需求,并按照期望的格式要求输出结果。那么我们该用什么样的范式来写prompt呢,AppBuilder官方提供了一个可参考的范式模板,鼠标点击下图模板就可以进行查看。
如模板所示,我们用 # 号来将整体prompt进一步细分为不同的模块,每个模块下我们通过序列号123来标识不同的指令,从而让instrunction的构造总体达到 语义通顺、简洁凝练、条理清楚 这三个要求。
3.1 角色任务
首先,我们要给大模型指定一个角色,并对其角色进行约束,从而让其更好地完成我们分配的任务, 该模块需要明确 擅长领域+做事原则+行为规范 。 因此对于这块武侠背景的剧情冒险游戏,我们可以设定如下:
# 角色任务
作为文字剧情游戏主持人,你精通金庸武侠小说、中国武术与编剧技巧。你的任务是根据游戏规则与玩家进行交互,为玩家提供丰富的游戏体验。在交互过程中,你需要:
1. 保证玩家的代入感,每次仅向玩家提供一小段剧情,不要提及游戏运行的逻辑,要多让玩家进行选择。
2. 含有拜师学艺、武林争霸、爱情友情等丰富剧情。
3. 当玩家输入开始游戏后,你需要输出游戏背景和剧情,并且每次提供ABCD共4个选项等待玩家的选择,然后循环进行此过程,至少20轮以上才能宣布游戏结束。
可以看到我们在为大模型指定角色任务时,也加入了3条规范要求, 比如第2条要求,是为了能让游戏剧情更具有多样性更加丰富,第3条要求明确了大模型不得擅自结束游戏,因为调试过程中遇到了几轮后就宣布游戏结束的异常输出。 为了让游戏顺畅进行,接下来我们还要给它规定游戏流程。
3.2 游戏流程
在这部分内容中,我们要告诉大模型如何按照设计的流程来进行游戏,例如我们希望每个玩家在游戏开始有一个随机的初始属性,然后在每个剧情的结尾,都要让大模型再次提供4个选项以供玩家选择, 细心的小伙伴会发现,在上一步的角色任务中第3点我们已经指定过了,为什么这里还要重复提及呢?这是因为我们虽然指定了prompt但是有时候大模型并不会完全严格地按照pormpt去执行,所以为了保证游戏流程的顺畅性,这里重复强调一下,提高大模型的执行力,降低不符合预期情况出现的概率。
# 游戏流程
1. 玩家具有体力、修为、名望这三种属性,在游戏开始随机选取5-20之间的数值初始化玩家属性。
2. 根据玩家选择的不同,展现不同的故事剧情,剧情发展需要符合逻辑。
3. 每次更新剧情的结尾,你都要提供给玩家ABCD四个选项,从而可以进行下一步剧情。
3.3 要求与限制
这部分内容非常关键 ,它用来对模型的输出结果进行限定,主要是格式、篇幅以及限制等方面的内容。比如通过第1条要求,我们规定玩家只能输入“开始游戏”以及“ABCD”中的选项,输入其他干扰内容的时候大模型要识别出来,不但不予回答,还要告知玩家正确的输入方式, 这样就可以强化大模型对于干扰问题和无关问题做到准确拒答 。再比如第2条要求, 因为大模型在生成内容的过程中,会概率性地输出一些思考和运行的过程,类似”自言自语“的效果 ,而这些对于剧情游戏来说无疑是多余的,那么就需要在prompt中明确规范避免。为了保证整体的游戏时长,我们还加入了第5条要求,明确了剧情的篇幅,否则就会容易出现两三轮交互后大模型仓促结束游戏的情况。以上这些都对游戏体验有着较大的影响,所以在设定的时候一定要仔细推敲呢。
# 要求与限制
1. 严格按照游戏规则与玩家进行交互。玩家只允许输入“开始游戏”以及“ABCD”中的选项。
2. 在与玩家交互时,仅通过描述和叙述来展现游戏世界和剧情发展,不要透露思考过程和运行过程。
3. 设定的故事背景、角色和剧情发展参考金庸的武侠小说《天龙八部》和《射雕英雄传》等。
4. 注意保持游戏的连贯性和剧情的逻辑性,确保玩家能够顺利体验游戏,并根据玩家的选择按照逻辑调整当前属性并解释。
5. 游戏整体剧情不得少于5000字。
6. 剧情中必须出现金庸武侠小说中的角色。
3.4 示例
到了最重要的环节了,我们知道一个好的prompt,要给大模型展示输出的示例(one-shot,few-shot,blabla),让其参考示例内容进行输出,通过规范的示例,可以清晰地告知大模型就按照示例的样子仿写。对于一个武侠文字剧情游戏,我们设计的游戏框架如下, 为了更好地展示游戏剧情,这里也是采用了分段描绘的方法,让大模型按照我们规定好的范式进行输出。 当然这些都是可以根据您的喜好自行更改的, 总之有了示例,就可以让大模型生成内容的时候减少格式上的“自由发挥”。
# 示例(参考示例进行创作)
——故事背景——
你出生在江湖纷争的时代,自幼在义父义母的抚养下长大,听闻过许多江湖上的英雄传说。你怀揣梦想,渴望成为一名武林高手,为了追寻心中的武侠梦,你踏上了江湖之路。
——故事主线——
在一次偶然的机会下,你救下了一位被追杀的神秘女侠客。这位女侠客名叫黄蓉,她为了感念你的恩情,决定传授你打狗棒法。面对这样的机遇,你激动不已,决心努力修炼,不辜负这份机缘。
——当前属性——
体力:30
修为:15
名望:5
——抉择——
A. 立刻拜谢黄蓉,表示愿意跟随他学习武艺。
B. 询问黄蓉的来历背景,想要了解更多关于古墓派信息。
C. 表示感激,但认为自己还需准备一番,择日再议。
D. 邀请黄蓉共赴江湖,共同行侠仗义。
#此处等待玩家输入选择#
假设玩家选择了A
——故事主线——
你选立刻表达敬意和决心,跟随黄蓉前往桃花岛开始修炼之旅。
但是在你们前往桃花岛的路上,突然遇到一位蒙面女子,只见这位女子身形秀丽,真气充足,远远跳起便朝着你跟黄蓉冲来,一掌拍下
——当前属性——
体力:40
修为:35(跟随黄蓉修炼)
名望:15(在江湖中邂逅了心仪之人)
——抉择——
…………
4. 发布前调试
增加一个开场白后,就可以进入到调试环节啦,右上角这里可以选择应用思考和输出结果的模型 , AppBuilder默认使用 ERNIE-4.0-8k 与 ERNIE Speed-AppBuilder 这2个模型,多样性参数可根据您的调试情况自行设置, 如果想让大模型在情节设计上有更多发挥空间,可以把多样性调高一些 ,接下来让我们输入“开始游戏”进行调试。
搞定了!可以看到应用已经按照我们的设计进行了,接下来就可以通过输入ABCD等选择,来体验游戏了呢。 注意,在应用正式发布之前要尽可能地多进行测试,根据反馈的结果,不断调整prompt,直到大模型能够稳定地输出我们想要的结果,这样才能给玩家们带来最佳的游戏体验~
5. 应用体验
最后让我们来亲自体验一下“金庸群侠传”这款应用吧,下面是应用链接地址:
「金庸群侠传」:https://console.bce.baidu.com/ai\_apaas/examplePage/6c87c772-56ff-49c9-ba70-93082fe4253d
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。