背景
最近半年,“AI agent”(智能体)这一词汇变得非常热门。许多人以为创建自己的智能体会很复杂,实际上,现有的平台已经大大降低了操作门槛。只要有创意,几乎每个人都可以轻松创建属于自己的智能体。今天我将分享我在百度文心智能体上创建一个智能体的全过程,体验链接如下:
双人冒险游戏:https://mbd.baidu.com/ma/s/s3nup82Q
创作灵感
这个想法源于一个突如其来的念头:有没有一种游戏,能够根据男女双方的选择自动生成剧情,帮助彼此更好地理解对方的价值观?这种游戏不仅要好玩,还要让剧情随机生成,而不是固定的;同时,还要实用,在游戏选择过程中,双方能够互相了解对方的看法。因此,我将这个智能体简单命名为“双人冒险游戏”,这既是一场冒险,也是一场游戏。
提示词
在开发过程中,设计有效的提示词是确保智能体生成高质量内容的关键。从上方的截图可以看到,我的提示词其实并不复杂。我采用了工作流功能,能够更好地控制大模型输出的内容。不过,由于工作流返回的内容仍需要智能体中的大模型进行进一步润色,因此在智能体提示词的设计上,主要目标是让大模型不要对工作流返回的内容做太多修改,并确保输出格式的一致性。设计时主要抓住了以下三个关键点:
- 不要询问,调用工作流Two_player_Adventure开始游戏。
- 获取Two_player_Adventure工作流返回的data字段,里面的image字段是图片地址,要为用户提供图片的预览。
- 给男女双方提供推动剧情的选项。
这三个约束分别解决下面三个问题
- 防止大模型频繁询问用户信息,影响体验,因为用户已经录入了要求,应该直接根据要求生成内容。
- 解决大模型不调用工作流或图片无法显示的问题。
- 避免大模型自己解析返回的内容,自动生成选项,导致无法给男女双方提供明确选择。
工作流(Two_player_Adventure)
为了实现上述功能,我设计了一个名为 “Two_player_Adventure” 的工作流,以确保大模型输出的内容准确无误。整体效果如下:
大模型
大模型是这个游戏智能体的核心,负责生成动态剧情和相应的图像提示词。我使用的是百度自研的 ERNIE 3.5 模型,当然,如果选择 ERNIE 4.0 效果会更好,但生成时间也会更长。综合考虑,我最终选择了 3.5。整个流程的目的在于让大模型理解玩家的选择,并即时生成连贯且富有创意的故事情节。具体流程如下:
- 角色设置:介绍游戏背景。
- 冒险风格:根据用户输入生成一个冒险场景。
- 游戏玩法:根据玩家选择和当前剧情状态,生成后续剧情发展。
- 输出反馈:将生成的场景描述传递给绘图插件,同时将生成的剧情传递给智能体。
以下是完整的提示词:
## 角色设定:
《双人冒险游戏》是一款双人冒险类模拟游戏,玩家分别扮演一对相互有好感的男女。两人在一次神秘事件中被传送到一个奇幻世界,面临各种挑战和危险。他们需要通过沟通与合作做出选择,以克服困难,最终找到返回现实世界的方法。## 冒险风格:
冒险风格将根据用户输入进行调整。如果没有具体的风格指引,AI将随机生成一个冒险环境,包括但不限于:
- 森林:茂密树木、奇异生物和隐藏的路径。
- 废弃城堡:古老的墙壁、迷宫般的走廊和神秘的宝藏。
- 洞穴:黑暗潮湿的环境,可能藏有未知的危险。
- 荒岛:孤独的沙滩、热带植物和隐藏的秘密。
- 太空船:高科技设备、宇宙背景和未知的外星生物。
- 深海:海底基地、奇幻生物和复杂的水下迷宫。
- 废弃实验室:科技残骸、失控的实验和隐藏的谜题。
- 古老的城市:充满历史的街道、神秘的居民和未解的秘密。
- 剧院:华丽的舞台、背后的阴谋和隐藏的故事。
- 豪宅:奢华的装潢、秘密通道和古老的传说。 ## 游戏玩法### 用户的回复:
{{input}}根据用户回复和设置选择让玩家进行选择### 描述下一步剧情,并设计延续下一剧情的选项
/output### 设置选择格式
男生的选择:
1. AI生成剧情选项1
2. AI生成剧情选项2
女生的选择:
1. AI生成剧情选项1
2. AI生成剧情选项2## 输出环境描述词用于生图
/imagePrompt
绘图插件
为了增强游戏的视觉效果,我集成了绘图插件,根据剧情描述生成相应的场景图像。这不仅让游戏更具互动性,也增添了趣味性。当然,缺点是生成时间变长了。使用的是百度文心智能体自带的绘图插件,只需传入生图提示词就可以获得相应的图像。
完整输出效果
总结
目前,由于 AI 的理解能力有限,我们能控制智能体生成内容的方式还不多,主要集中在提示词、知识库和工作流上。我采用了提示词加工作流的方式。在工作流调试正常的情况下,问题通常出现在提示词上,调整提示词是一个耗时的过程,有时候有点“玄学”。不过,随着大模型的进步,我相信对提示词的要求会越来越低。