首先声明,这不是广告!只是提供一个思路,其他的大模型应该可以用类似的方法部署。
本文是我在Godot中尝试引入千帆大模型的记录,由于我尚未在网络上查找到类似的教程,因此记录一下我引入大模型的过程,为其他开发者提供一个简单的参考。我使用的Godot引擎版本为V4.1.3,发布时间是2023年12月。文章接下来将介绍两部分内容:千帆大模型的部署,Godot引擎的引用方法。
千帆大模型的部署
千帆大模型的部署包括如下几个步骤。
首先进入千帆大模型,链接https://cloud.baidu.com/product/wenxinworkshop,注册后点击立即使用。
在使用之前,首先需要开通服务。进入在线服务中选择开通的大模型服务。目前我所使用的ERNIE-Bot 4.0大模型公有云在线调用服务价格为¥0.12元/千tokens。开通后进入应用接入中,点击创建应用。
输入应用名称、应用描述。目前系统会默认勾选全部服务。点击确定完成创建。
回到应用接入部分,可以看到应用列表中已经出现创建的应用。其中API Key和Secret Key是访问大模型应用的凭证。接下来的部分是对在线调试的简单介绍,可直接跳到第二部分查看如何在Godot中访问。
点击API文档,可以在右侧找到API在线调试平台的入口。
在线调试平台的第一部分用于选择大模型的种类。第二部分用于调整模型参数。第三部分提供了示例代码和在线的对话测试。这里选择的大模型种类是ERNIE BOT 4。
参数一栏中system参数用于设置大模型的人设,其余参数可自行查阅。
示例代码部分提供了python,c#等语言的示例。根据大模型的选择,参数的配置以及对话测试的内容,示例代码会依据选择改变。因此在编写代码的过程中可以参考这里的示例代码。
Godot引擎的引用方法
Godot引擎访问大模型分为两步,第一步通过API Key和Secret Key获取应用的Access_Token,第二步与应用建立连接并发送请求。这个过程主要用到HTTPRequest节点。
首先,在Godot引擎中创建一个节点并添加脚本。,然后为其创建两个HTTPRequest子节点。在这里,我创建了Node2D根节点命名为QianFan,两个子节点分别命名为TokenRequest,用于接收Access_Token和AnswerRequest,用于建立连接。
声明变量API Key,Secret Key和Access Token,定义GetAccessToken()函数用于获取Access Token
var API_KEY = 你的API Key
var SECRET_KEY = 你的Secret Key
var ACCESS_TOKEN
func GetAccessToken():
var url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=" + API_KEY + "&client_secret=" + SECRET_KEY
$TokenRequest.request(url)
url的地址可以通过查阅在线调试平台的代码示例获取。
HTTPRequest请求收到回复后会触发信号,我们在节点中连接TokenRequest的信号。
信号的触发函数可以编写成如下形式,收到回复后为ACCESS _TOKEN赋值。至此,我们已经获得了访问大模型应用需要的access_token,它是与大模型建立连接的访问凭证。
func _on_token_request_request_completed(result, response_code, headers, body):
var json = JSON.parse_string(body.get_string_from_utf8())
ACCESS_TOKEN = json['access_token']
接下来建立与大模型之间的连接,发起一次对话请求。本文章仅介绍单轮请求的方法,多轮请求和流式传输可以查阅API文档。
编写函数
func GetResponose():
var url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions_pro?access_token=" + ACCESS_TOKEN
var text = "请介绍一下你自己"
var data = {
"messages": [
{
"role": "user",
"content": text
}
],
"temperature": 0.99,
"system": "你扮演一只猫娘,你的回答总是以喵~结尾"
}
var json = JSON.stringify(data)
var headers = ['Content-Type:application/json']
$AnswerRequest.request(url,headers,HTTPClient.METHOD_POST,json)
其中url地址可以通过查阅API文档获得,data结构体中,text是发给大模型的文本,temperature和system是上一部分所述的模型参数,可自行添加或删减。system参数用于描述模型的人设。具体可以参考在线调试平台中的示例代码。
同样地,收到回复后会触发信号,我们在节点中连接AnswerRequest信号。
触发函数可以编写成如下形式,返回的json结构体中的result部分即为大模型的回答。
func _on_answer_request_request_completed(result, response_code, headers, body):
var json = JSON.parse_string(body.get_string_from_utf8())
print(json['result'])
调用顺序是GetAccessToken->收到TokenRequest回复->GetResponse->收到AnswerRequest回复
在本示例中,系统人设为“你扮演一只猫娘,你的回答总是以喵~结尾”,发送的请求为"请介绍一下你自己"。收到的回复如下
至此,我们完成了在Godot中对千帆人工智能大模型的访问与调用。
总结
Godot引擎主要通过HTTPRequest节点对大模型的API进行访问,其他大模型的引入方法应该类似,本文仅作为一个参考。
暂无关于此日志的评论。