当前位置: 首页 > news >正文

Unity接入人工智能

在Unity接入人工智能中,本篇实现了接入百度智能云ai进行npc智能对话,通过http方式,并非插件,适合于所有支持Http链接的Unity版本。对于Chartgpt可以参考本篇内容的实现过程。

1-4节讲解测试,第5节讲解Unity中的实现,建议从头开始阅读。

一、创建应用

1.1注册百度智能云账号

按照图片顺序依次点击

1.2开始创建应用

1.2.1搜索并打开图中产品

1.2.2打开应用接入

 1.2.3创建应用

 

 这里全部选择,输入对应信息,然后创建,点击创建好的应用的详情,找到

API Key与Secret Key,后续用于获取access_token。

注意:这俩都是私密内容,避免泄露!

二、开通应用

找到计费管理并进入,点击开通付费,找到ERNIE-Speed-128K并开通,本篇使用ERNIE-Speed-128K是因为这个免费,也有其他免费的,有需要自行开通,后文以ERNIE-Speed-128K直接讲解,不再赘述。

三、获取access_token

3.1打开access_token获取文档

按照图片内容依次点击就好

 

 

 

3.2测试接口

重点内容已经使用红色框框出

我个人喜欢使用apipost,测试接口有很多软件,大家自行解决,这里使用apipost作为案例

 

 在对应的地方输入对应的参数就可以了,这里用到了上面保存的API Key和Secret Key,输入完后发送等待响应。

四、发送对话

4.1测试对话接口

 

 

 响应中的result就是回复的内容了

现在已经测试完毕,证明此方法可以,现在将他写入Unity中

五、将测试正确内容写入Unity

5.1创建需要的ui

Scroll View用于放文本,避免一些回复文本过长导致看不到或其他效果

在content添加组件,按照图片设置

5.2创建c#脚本,附在物体上(任意物体)

5.3编写脚本

public Text OutPutText;
public Button btn;
public InputField inputField;
private string GetToken_Url;
private string SendHttp_Url= "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-speed-128k";
private string grant_type = "client_credentials";
private string client_id = "你的API Key:";
private string client_secret = "你的Secret Key:";
private string access_token;
// Start is called before the first frame update
void Start()
{GetToken_Url = "https://aip.baidubce.com/oauth/2.0/token?grant_type="+ grant_type + "&client_id=" + client_id + "&client_secret=" + client_secret;StartCoroutine(GetToken(GetToken_Url));btn.onClick.AddListener(() => {StartSend();});
}
void Update()
{if (Input.GetKeyDown(KeyCode.Return)){StartSend();}
}
IEnumerator GetToken(string GetToken_Url)
{UnityWebRequest request = new UnityWebRequest(GetToken_Url, "POST");request.downloadHandler = new DownloadHandlerBuffer();request.SetRequestHeader("Content-Type", "application/json"); yield return request.SendWebRequest();if (request.result != UnityWebRequest.Result.ConnectionError && request.result != UnityWebRequest.Result.ProtocolError){string pattern = "\"access_token\":\"(.*?)\"";Match match = Regex.Match(request.downloadHandler.text, pattern);access_token = match.Groups[1].Value;SendHttp_Url += "?access_token=" + access_token;}else{Debug.LogError(request.error);}request.Dispose();
}
IEnumerator SendHttp(string SendHttp_Url)
{UnityWebRequest sendrequest = new UnityWebRequest(SendHttp_Url,"POST");string Sessagejson = "{" +"\"" + "messages" + "\"" + ":" + "[" +"{" +"\"" + "role" + "\"" + ":" + "\"" + "user" + "\"" + "," +"\"" + "content" + "\"" + ":" + "\"" + inputField.text + "\"" +"}" +"]" +"}";byte[] SendJson = new UTF8Encoding().GetBytes(Sessagejson);sendrequest.uploadHandler = new UploadHandlerRaw(SendJson);sendrequest.downloadHandler = new DownloadHandlerBuffer();sendrequest.SetRequestHeader("Content-Type", "application/json");yield return sendrequest.SendWebRequest();if (sendrequest.result != UnityWebRequest.Result.ConnectionError && sendrequest.result != UnityWebRequest.Result.ProtocolError){string pattern2 = "\"result\":\"(.*?)\"";Match match2 = Regex.Match(sendrequest.downloadHandler.text, pattern2);OutPutText.text = match2.Groups[1].Value;}else{Debug.LogError(sendrequest.error);}sendrequest.Dispose();
}
private void StartSend()
{OutPutText.text = "正在回复中,请稍等...";StartCoroutine(SendHttp(SendHttp_Url));
}

5.3.1GetToken_Url是获取access_token的链接

5.3.2SendHttp_Url是发送消息的链接

5.3.3grant_type与client_id与client_secret时链接的一部分,其中client_id是你保存的API Key,client_secret是你保存的Secret Key

5.3.4access_token是获取到的

5.3.5在Start中获取access_token,并给发送按钮添加事件

5.3.6Sessagejson是发送的json文件

如果对于Unity发送Http不了解的可以查看我下一篇文章:Unity发送Http-CSDN博客

 结尾:有任何错误请指出,补充请评论,看到会第一时间回复,谢谢。

http://www.lryc.cn/news/460732.html

相关文章:

  • C语言笔记 14
  • Cpp::STL—list类的模拟实现(上)(13)
  • ListView的Items绑定和comboBox和CheckBox组合使用实现复选框的功能
  • PetaLinux工程的常用命令——petalinux-build
  • 【Qt】窗口预览(1)—— 菜单栏
  • 揭秘酱香型白酒中的6大劣质酒的特点,守好你的健康与钱包
  • C#拓展方法
  • 02.顺序表、链表简述+对比
  • 前端布局与响应式设计综合指南(三)
  • 当今SNARKs全景
  • PMP敏捷专题课:敏捷原则与理念
  • 有两个水桶,容量分别为5升和3升,请问如何使用这两个桶得到4升的水?
  • pytorch_lightning笔记
  • 从零开始了解云WAF,您的网站安全升级指南
  • Python脚本爬取目标网站上的所有链接
  • Linux下以编译源码的方式安装Qt5与Qt6及其使用
  • 替换掉js后重启nginx 页面加载后js还是原来的 解决方法.【js版本号】【js不生效】【js失效】
  • SHELL脚本之输出语句的使用
  • 《大规模语言模型从理论到实践》第一轮学习--Fine-tuning微调
  • XGBoost回归预测 | MATLAB实现XGBoost极限梯度提升树多输入单输出
  • 【翻译】在 Python 应用程序中使用Qt Designer的UI文件
  • 002-Html
  • 微知-Mellanox提供的一个不错的测试rdma_cm方式建链的工具软件ucmatose?(ucmatose; ucmatose -s 1.1.1.1)
  • Vivado HLS C/RTL 联合仿真时间
  • Python实现图像加密与解密工具
  • 《RabbitMQ篇》消费者轮询消费消息
  • mongodb导入导出
  • 判断 HTTP/2 多路复用是否在服务器上实现
  • (已解决)vscode使用launch.json进行debug调试报错:Couldn‘t spawn debuggee:embedded null byte
  • windows桌面便签小工具,便签软件哪个好用?