【AI人工智能】文心智能体,双人冒险游戏智能体创作分享

背景

最近半年,“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。整个流程的目的在于让大模型理解玩家的选择,并即时生成连贯且富有创意的故事情节。具体流程如下:

  1. 角色设置:介绍游戏背景。
  2. 冒险风格:根据用户输入生成一个冒险场景。
  3. 游戏玩法:根据玩家选择和当前剧情状态,生成后续剧情发展。
  4. 输出反馈:将生成的场景描述传递给绘图插件,同时将生成的剧情传递给智能体。

以下是完整的提示词:

## 角色设定:
《双人冒险游戏》是一款双人冒险类模拟游戏,玩家分别扮演一对相互有好感的男女。两人在一次神秘事件中被传送到一个奇幻世界,面临各种挑战和危险。他们需要通过沟通与合作做出选择,以克服困难,最终找到返回现实世界的方法。## 冒险风格:
冒险风格将根据用户输入进行调整。如果没有具体的风格指引,AI将随机生成一个冒险环境,包括但不限于:
- 森林:茂密树木、奇异生物和隐藏的路径。
- 废弃城堡:古老的墙壁、迷宫般的走廊和神秘的宝藏。
- 洞穴:黑暗潮湿的环境,可能藏有未知的危险。
- 荒岛:孤独的沙滩、热带植物和隐藏的秘密。
- 太空船:高科技设备、宇宙背景和未知的外星生物。
- 深海:海底基地、奇幻生物和复杂的水下迷宫。
- 废弃实验室:科技残骸、失控的实验和隐藏的谜题。
- 古老的城市:充满历史的街道、神秘的居民和未解的秘密。
- 剧院:华丽的舞台、背后的阴谋和隐藏的故事。
- 豪宅:奢华的装潢、秘密通道和古老的传说。 ## 游戏玩法### 用户的回复:
{{input}}根据用户回复和设置选择让玩家进行选择### 描述下一步剧情,并设计延续下一剧情的选项
/output### 设置选择格式
男生的选择:
1. AI生成剧情选项1 
2. AI生成剧情选项2
女生的选择:
1. AI生成剧情选项1 
2. AI生成剧情选项2## 输出环境描述词用于生图
/imagePrompt

绘图插件

为了增强游戏的视觉效果,我集成了绘图插件,根据剧情描述生成相应的场景图像。这不仅让游戏更具互动性,也增添了趣味性。当然,缺点是生成时间变长了。使用的是百度文心智能体自带的绘图插件,只需传入生图提示词就可以获得相应的图像。
在这里插入图片描述

完整输出效果

在这里插入图片描述

总结

目前,由于 AI 的理解能力有限,我们能控制智能体生成内容的方式还不多,主要集中在提示词、知识库和工作流上。我采用了提示词加工作流的方式。在工作流调试正常的情况下,问题通常出现在提示词上,调整提示词是一个耗时的过程,有时候有点“玄学”。不过,随着大模型的进步,我相信对提示词的要求会越来越低。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/439551.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux下静态库与动态库制作及分文件编程

Linux下静态库与动态库制作及分文件编程 文章目录 Linux下静态库与动态库制作及分文件编程1.分文件编程1.1优点1.2操作逻辑1.3示例 2.Linux库的概念3.静态库的制作与使用3.1优缺点3.2命名规则3.3制作步骤3.4开始享用 4.动态库的制作与使用4.1优缺点4.2动态库命名规则4.3制作步骤…

Uniapp API

1.uni.showToast 显示消息提示框 unishowToast({ obj参数 }) 2.uni.showLoading 显示 loading 提示框, 需主动调用 uni.hideLoading 才能关闭提示框。 3.uni.showModal 显示模态弹窗,可以只有一个确定按钮,也可以同时有确定和取消按钮。类似于一个A…

VLAN:虚拟局域网

VLAN:虚拟局域网 交换机和路由器协同工作后,将原先的一个广播域,逻辑上,切分为多个广播域。 第一步:创建VLAN [SW1]dispaly vlan 查询vlan VID(VLAN ID):用来区分和标定不同的vlan 由12位二进制构成 范围: 0-4…

算法笔记(十一)——优先级队列(堆)

文章目录 最后一块石头的重量数据流中的第 K 大元素前K个高频单词数据流的中位数 优先级队列是一种特殊的队列,元素按照优先级从高到低(或从低到高)排列,高优先级的元素先出队,可以用 堆来实现 堆是一种二叉树的结构&…

HTB:Preignition[WriteUP]

连接至HTB服务器并启动靶机 靶机IP:10.129.157.49 分配IP:10.10.16.12 1.Directory Brute-forcing is a technique used to check a lot of paths on a web server to find hidden pages. Which is another name for this? (i) Local File Inclusion, (…

如何安全地大规模部署 GenAI 应用程序

大型语言模型和其他形式的生成式人工智能(GenAI) 的广泛使用带来了许多组织可能没有意识到的安全风险。幸运的是,网络和安全提供商正在寻找方法来应对这些前所未有的威胁。 随着人工智能越来越深入地融入日常业务流程,它面临着泄露专有信息、提供错误答…

2.创建第一个MySQL存储过程(2/10)

引言 在现代数据库管理中,存储过程扮演着至关重要的角色。它们是一组为了执行特定任务而编写的SQL语句集合,这些语句被保存在数据库中,并且可以被多次调用执行。存储过程不仅可以提高数据库操作的效率,还能增强数据的安全性和一致…

Docker 启动 Neo4j:详细配置指南和浏览器访问

Docker 启动 Neo4j:详细配置指南和浏览器访问 文章目录 Docker 启动 Neo4j:详细配置指南和浏览器访问一 Neo4j compose 得 yml 配置二 配置描述三 浏览器访问 这篇文章详细介绍了如何使用 Docker Compose 启动 Neo4j 数据库,包括 docker-com…

八大排序--01冒泡排序

假设有一组数据 arr[]{2,0,3,4,5,7} 方法:开辟两个指针,指向如图,前后两两进行比较,大数据向后冒泡传递,小数据换到前面。 一次冒泡后,数组中最大…

C++ | Leetcode C++题解之第459题重复的子字符串

题目&#xff1a; 题解&#xff1a; class Solution { public:bool kmp(const string& query, const string& pattern) {int n query.size();int m pattern.size();vector<int> fail(m, -1);for (int i 1; i < m; i) {int j fail[i - 1];while (j ! -1 &…

java基础_异常总结详解

1 列举一些列举常见的运行时异常 运行时异常都是 RuntimeException 子类异常 NullPointerException - 空指针异常 ClassCastException - 类转换异常 IndexOutOfBoundsException - 下标越界异常 ArithmeticException - 计算异常 IllegalArgumentException - 非法参数异常 Numb…

Elasticsearch:使用 LLM 实现传统搜索自动化

作者&#xff1a;来自 Elastic Han Xiang Choong 这篇简短的文章是关于将结构化数据上传到 Elastic 索引&#xff0c;然后将纯英语查询转换为查询 DSL 语句&#xff0c;以使用特定过滤器和范围搜索特定条件。完整代码位于此 Github repo 中。 首先&#xff0c;运行以下命令安装…

小阿轩yx-案例:jenkins部署Maven和NodeJS项目

小阿轩yx-案例&#xff1a;jenkins部署Maven和NodeJS项目 前言 在 Java 项目开发中&#xff0c;项目的编译、测试、打包等是比较繁琐的&#xff0c;属于重复劳动的工作&#xff0c;浪费人力和时间成本。以往开发项目时&#xff0c;程序员往往需要花较多的精力在引用 jar 包搭…

STM32的串行外设接口SPI

一、SPI简介 1.SPI总线特点 &#xff08;1&#xff09;四条通信线 SPI需要SCK、MISO、MOSI、NSS四条通信线来完成数据传输 &#xff0c;每增加一个从机&#xff0c;多一条NSS通信线。 &#xff08;2&#xff09;多主多从 SPI总线允许有多个主机和多个从机。 &#xff08;3&…

Markdown实用语法汇总

说明&#xff1a; 本来只展示本人常用的、markdown特有优势的一些语法。表格输入markdown的弱项&#xff0c;不作介绍&#xff0c;借助软件创建即可。引用图片、音频、视频等&#xff0c;虽然很方便&#xff0c;但是内容集成度不高&#xff0c;需要上传发布的时候很不方便&…

Linux高级编程_29_信号

文章目录 进程间通讯 - 信号信号完整的信号周期信号的编号信号的产生发送信号1 kill 函数(他杀)作用&#xff1a;语法&#xff1a;示例&#xff1a; 2 raise函数(自杀)作用&#xff1a;示例&#xff1a; 3 abort函数(自杀)作用&#xff1a;语法&#xff1a;示例&#xff1a; 4 …

GB28181信令交互流程及Android端设备对接探讨

GB28181规范必要性 好多开发者在做比如执法记录仪、智能安全帽、智能监控等设备端视频回传技术方案选型的时候&#xff0c;不清楚到底是用RTSP、RTMP还是GB28181&#xff0c;对GB28181相对比较陌生&#xff0c;我们就GB28181规范的必要性&#xff0c;做个探讨&#xff1a; 实现…

Pikachu-File Inclusion- 本地文件包含

前端每次挑选篮球明星&#xff0c;都会通过get请求&#xff0c;传了文件名&#xff0c;把页面展示出来&#xff0c;由于文件名时前端传给后台;并且查看源码&#xff0c;没有对参数做限制&#xff1b; 尝试直接从前端修改filename 参数&#xff1b; filename../../../../../../…

C++ | Leetcode C++题解之第458题可怜的小猪

题目&#xff1a; 题解&#xff1a; class Solution { public:int poorPigs(int buckets, int minutesToDie, int minutesToTest) {if (buckets 1) {return 0;}vector<vector<int>> combinations(buckets 1,vector<int>(buckets 1));combinations[0][0] …

交换排序:冒泡排序、递归实现快速排序

目录 冒泡排序 1.冒泡排序的核心思想 2.冒泡排序的思路步骤 3.冒泡排序代码 4.代码分析 5.对冒泡排序的时间复杂度是O(N^2)进行解析 6.冒泡排序的特性总结 递归实现快速排序(二路划分版本) 1.快速排序基本思路 2.代码思路步骤 3.代码实现 4.代码分析 (1)递归终止条…