【寻找游戏大模王-作品开发记录】 文心千帆还能打王者荣耀? 我的大模型三合一游戏站调用文心千帆ERINE-Bot4开发AI游戏(AI虚拟女友、文字版王者荣耀、女儿养成类游戏)

本文主要是介绍【寻找游戏大模王-作品开发记录】 文心千帆还能打王者荣耀? 我的大模型三合一游戏站调用文心千帆ERINE-Bot4开发AI游戏(AI虚拟女友、文字版王者荣耀、女儿养成类游戏),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 一、开通文心千帆应用接口
    • 1.1、文心千帆简介
    • 1.2、开通文心千帆ERNIE-Bot
    • 1.3、创建应用开放接口
  • 二、基于文心千帆大模型进行游戏设计
    • 2.1、本地获取鉴权
    • 2.2、本地调用文心千帆
    • 2.2、设计Prompt进行游戏设定
  • 三、三合一游戏站前后端应用开发
    • 3.1、后端使用Node.js调用ERINE-Bot4服务
    • 3.2、前端使用Vue.js进行对话游戏
    • 3.3、游戏效果
  • 最后

项目资源:https://download.csdn.net/download/air__Heaven/88527406
游戏效果:https://www.bilibili.com/video/BV1qG411Q7z9/?vd_source=52409de82869a7934828bf083e9d1a17#reply194226288688

在这里插入图片描述

一、开通文心千帆应用接口

1.1、文心千帆简介

与我们之前了解过的文心一言不同,文心千帆大模型平台是百度文心大模型的官方和唯一的商业化服务平台。对内及对外统一由文心千帆来提供服务,文心千帆从数据服务(生成、标注、回流)、模型训练(Post-pretraining、Fine-tuning、Prompt-tuning)、模型评估(主观评估、客观评估)和压缩、自动化Prompt工程、到插件应用编排,客户都可以在文心千帆上一站式完成。客户可以将训练好的模型部署和托管在文心千帆上,获得极致的性能、企业级的高可用性和安全环境。另外其已经预置了高效的企业搜索插件,无缝集成三方插件,通过插件机制,进一步扩展大模型能力边界,助力客户的应用产品全面升级。

简单来说文心千帆的云服务接口是文心一言的企业版云服务,借助此项服务,我们可以结合自身掌握的行业数据精调出更贴合实际场景的行业大模型。所有有创意、有想法的人都可以轻松的借助该工具去验证自己的新想法,这一定会激发创造力、提高生产力,放大自己的优势、拓展自己的优势领域。

1.2、开通文心千帆ERNIE-Bot

首先我们进入百度智能云千帆大模型平台,点击立即使用,申请到千帆大模型平台的使用资格。
在这里插入图片描述
申请到千帆大模型使用资格后,进入控制台,点击在线服务:
在这里插入图片描述
选择需要开通的大模型服务,选择开通使用,并确认提交订单,这里强力推荐ERNIE-Bot(即文心一言)大模型公有云在线调用服务(目前按量¥0.012元/千tokens),其中ERNIE-Bot 4.0,相比3.5版本,理解、生成、逻辑、记忆四大能力都有显著提升。其中理解和生成能力的提升幅度相近,而逻辑和记忆能力的提升则更大,逻辑的提升幅度达到理解的近3倍,记忆的提升幅度也达到了理解的2倍多。

然后点击体验中心,就可以看到我们选择好的ERNIE-Bot 4.0服务了,可以在此测试使用:
在这里插入图片描述

1.3、创建应用开放接口

开通好ERNIE-Bot 4.0服务后,点击应用接入,点击创建应用:
在这里插入图片描述
自定义应用名称和应用描述,然后检查下ERNIE-Bot4服务是否开通,点击确定创建应用。
在这里插入图片描述
创建成功后,可以看到我们创建好的应用,这里要将API Key和Secret Key保存下来。
在这里插入图片描述
这两个Key是用来获取访问凭证access_token。access_token是用户的访问令牌,用于校验调用者的身份信息,确保具有要执行的操作的权限,在调用百度智能云千帆提供的 API前,必须先获取访问凭证accessToken。

二、基于文心千帆大模型进行游戏设计

2.1、本地获取鉴权

百度智能云千帆大模型平台使用OAuth2.0授权调用开放API,调用API时必须在URL中带上Access_token参数,所以我们在调用文心千帆API前要获取Access_token。

打开Postman,新建一个Http Request,设置如下:

请求地址 :https://aip.baidubce.com/oauth/2.0/token

请求方式 :POST

Header参数:

名称类型必填描述
Content-Typestring固定值application/json

Query参数:

名称类型必填描述
grant_typestring固定值client_credentials
client_idstring应用的API Key
client_secretstring应用的Secret Key

如下:
在这里插入图片描述
点击send,可以得到access_token如下:
在这里插入图片描述

2.2、本地调用文心千帆

得到了access_token后就可以调用文心千帆API接口了,百度智能云千帆提供了 API在线调试平台-示例代码 ,用于帮助开发者调试接口,平台集成快速检索、查看开发文档、查看在线调用的请求内容和返回结果、复制和下载示例代码等功能,简单易用。

我们这里使用本地调用方法,新建一个Http Request,设置如下:

请求地址:
https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions_pro

请求方式: POST

Header参数:

名称类型必填描述
Content-Typestring固定值application/json

Query参数:

名称类型必填描述
access_tokenstring刚刚通过API Key和Secret Key获取的access_token

Body参数(部分):

名称类型必填描述
messagesList聊天上下文信息

这里暂时只用到的body参数中的messages,更多参数可以看官方文档:
在这里插入图片描述

postman中的request设置如下:
在这里插入图片描述
在这里插入图片描述
点击send后,返回的result中就是ERINE-Bot4的对话。
这里要注意的是在body里面:

  1. messages成员不能为空,1个成员表示单轮对话,多个成员表示多轮对话
  2. 最后一个message为当前请求的信息,前面的message为历史对话信息
  3. 必须为奇数个成员,成员中message的role必须依次为user、assistant
  4. 最后一个message的content长度(即此轮对话的问题)不能超过3000
    token;如果messages中content总长度大于3000token,系统会依次遗忘最早的历史会话

2.2、设计Prompt进行游戏设定

光是简单的对话,难以进行游戏设定,好在文心千帆的api接口中还有一个body参数叫做system,其为模型人设,主要用于人设设定,这个参数可以用来作为生成模型输出的起点或引导。prompt 可以是一个问题、一段文字描述、一段对话或任何形式的文本输入。

基于此我们可以继续在2.1的基础上,在body里加上这个system参数,比如:

你现在是一名精通大数据数据仓库的面试官,我今天参加你的面试,你准备了一些题目,请你从下面的题目中随机抽取一道给我,当我回答next的时候,你需要再抽一道题给我。
具体要求: 1.你必须从下面的题目中抽取题目,不可以自己生成; 2.如果题目都已经抽完了,你需要告诉我面试已结束;
3.你不需要对题目做任何解释,只需要给出原题就行。 题目:1.hdfs的写原理 2.hdfs的读原理 3.介绍hadoop 4.数仓的意义

在这里插入图片描述
可以看到ERINE-Bot4返回的result的人设成功被设定为一个面试官。

进而,我们可以使用Prompt对ERINE-Bot4进行游戏人物设定,将其设定为宿管阿姨、AI女友、电子宠物、模拟演化的上帝、AI-NPC、游戏解说、跑团的说书人、游戏程序等等,比如文字版王者荣耀的设定:

你是王者荣耀游戏的程序,下面开始5v5的Moba对战。我输入指令,你输出游戏反馈。请记住你必须在每段回答的末尾触发事件,提出选项,当我选择后,在后续回答用括号给出丰富的游戏描述和角色的状态(击杀、死亡、复活、血量、蓝量、buff、装备)变化,不要写解释。

三、三合一游戏站前后端应用开发

3.1、后端使用Node.js调用ERINE-Bot4服务

项目使用Express框架,项目开发比较的简单,主要包括三个文件。

app.js:程序的入口文件,主函数,核心代码如下:

// 定义/chat路由处理POST请求
app.post("/api", async (req, res) => {console.log("check");const accessToken = await getAccessToken(req.body.AK,req.body.SK);const userId = req.body.userId || 0;const messages = req.body.content || "你好";const system = req.body.system;if (typeof messages !== "string") {return res.status(400).send({ error: "Invalid messages type" });}try {// 调用ask方法获取大模型结果const response = await conversation.ask(userId,messages,system,accessToken);return res.status(200).send({ message: response });} catch (error) {return res.status(500).send({ error: error.messages });}
});
// 设置监听端口
const PORT = process.env.PORT || 3001;
app.listen(PORT, () => {console.log(`服务器运行端口: ${PORT}.`);
});

chat.js:主要用于访问模型服务,向模型服务发送请求并获取回复,接收模型服务的回复后,将回复内容push到messages数组中,并返回回复结果,核心代码如下:

// 访问模型服务
class Conversation {constructor() {// 上下文数据存在这里,文心的调用是需要把所有的历史对话数据全部传过去,所以上下文窗口大小得注意this.messages = [];}async ask(userId,prompt,system,accessToken) {// 问句push进去this.userId = userId;this.messages.push({ role: "user", content: prompt });this.system = system;console.log("message" + this.messages[0]);try {const res = await axios.post(ERNIEB4,{messages: this.messages,userId: this.userId,system: this.system   },{ params: { access_token: accessToken } });const { data } = res;console.log(data);// 答案也放进去this.messages.push({ role: "assistant", content: data.result });return data.result;} catch (error) {console.log("调用模型失败" + error);}}
}
// 导出函数
module.exports = Conversation;

token.js:用于获取鉴权,通过给定的AK(Access Key)和SK(Secret Key)生成鉴权签名(Access Token)返回给主函数。

const request = require('request')
// const AK = "######################"
// const SK = "######################"/*** 使用 AK,SK 生成鉴权签名(Access Token)* @return string 鉴权签名信息(Access Token)*/
function getAccessToken(AK,SK) {let options = {'method': 'POST','url': 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + AK + '&client_secret=' + SK,}return new Promise((resolve, reject) => {request(options, (error, response) => {if (error) { reject(error) }else { resolve(JSON.parse(response.body).access_token) }})})
}
// 导出函数
module.exports = getAccessToken;

3.2、前端使用Vue.js进行对话游戏

前端则使用Vue+ElementPlus+Axios进行开发,设计一个简单的聊天界面,可以与后端接口进行交互,并支持选择不同角色进行聊天。
核心代码如下:

      const sendMessage = async () => {if (!newMessage.value.trim()) return;isSending.value = true;messages.value.push({id: Date.now(),text: newMessage.value,isUser: true,});const response = await fetch(apiUrl.value, {method: 'POST',headers: {'Content-Type': 'application/json',},body: JSON.stringify({userId,content: newMessage.value,system: system.value,AK: inputAK.value,SK: inputSK.value}),});const data = await response.json();console.log(data);messages.value.push({id: Date.now(),text: data.message,isAssistant: true,});newMessage.value = '';isSending.value = false;};

这里设计了三款小游戏,

  1. 在AI虚拟女友中,用户可以体验到一种仿真的情感互动,能够理解用户的语言并做出相应的回应,提供陪伴和娱乐。
  2. 在文字版王者荣耀中,玩家可以通过交流指令和战术来指导自己的角色,在虚拟的游戏世界中体验策略和协作的乐趣。
  3. 在女儿养成模拟器中,扮演一个虚拟父母的角色制定计划、参与活动等方式来培养和引导女儿的成长。

3.3、游戏效果

AI虚拟女友:
在这里插入图片描述
文字版王者荣耀:

在这里插入图片描述
女儿养成模拟器:

在这里插入图片描述

最后

项目资源:基于文心千帆ERINE-Bot4的三合一游戏站
项目预览:http://8.130.42.135:5173/(不定期开放)

💖 个人简介:人工智能领域研究生,目前主攻文本生成图像(text to image)方向

📝 个人主页:中杯可乐多加冰

🔥 限时免费订阅:文本生成图像T2I专栏

🎉 支持我:点赞👍+收藏⭐️+留言📝

另外,我们已经建立了微信T2I学习交流群,如果你也是深度学习的爱好者或研究者可以私信我加入。

这篇关于【寻找游戏大模王-作品开发记录】 文心千帆还能打王者荣耀? 我的大模型三合一游戏站调用文心千帆ERINE-Bot4开发AI游戏(AI虚拟女友、文字版王者荣耀、女儿养成类游戏)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/605193

相关文章

Android开发中gradle下载缓慢的问题级解决方法

《Android开发中gradle下载缓慢的问题级解决方法》本文介绍了解决Android开发中Gradle下载缓慢问题的几种方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、网络环境优化二、Gradle版本与配置优化三、其他优化措施针对android开发中Gradle下载缓慢的问

Java中将异步调用转为同步的五种实现方法

《Java中将异步调用转为同步的五种实现方法》本文介绍了将异步调用转为同步阻塞模式的五种方法:wait/notify、ReentrantLock+Condition、Future、CountDownL... 目录异步与同步的核心区别方法一:使用wait/notify + synchronized代码示例关键

使用Go语言开发一个命令行文件管理工具

《使用Go语言开发一个命令行文件管理工具》这篇文章主要为大家详细介绍了如何使用Go语言开发一款命令行文件管理工具,支持批量重命名,删除,创建,移动文件,需要的小伙伴可以了解下... 目录一、工具功能一览二、核心代码解析1. 主程序结构2. 批量重命名3. 批量删除4. 创建文件/目录5. 批量移动三、如何安

Python调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

关于Spring @Bean 相同加载顺序不同结果不同的问题记录

《关于Spring@Bean相同加载顺序不同结果不同的问题记录》本文主要探讨了在Spring5.1.3.RELEASE版本下,当有两个全注解类定义相同类型的Bean时,由于加载顺序不同,最终生成的... 目录问题说明测试输出1测试输出2@Bean注解的BeanDefiChina编程nition加入时机总结问题说明