首页 > 其他分享 >Unity接入人工智能

Unity接入人工智能

时间:2024-10-15 16:49:51浏览次数:8  
标签:Url string 人工智能 token access 接入 Unity client sendrequest

在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博客

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

标签:Url,string,人工智能,token,access,接入,Unity,client,sendrequest
From: https://blog.csdn.net/cherry_f_f/article/details/142955436

相关文章

  • 2024.10.15人工智能学记3
    老师先讲了AI的定义:人工智能(AI)是计算机科学的一个分支,致力于创造能够模仿人类智能行为的机器或系统。这与教育学中的"智能”概念有些相似,但范围更广,包括感知、学习、推理、问题解决等能力。以及如何从教育者角度来理解AI?①规则基础系统-教学大纲和课程设置;机器学习-学生通过练......
  • 180+ 优质YouTube频道推荐:数据科学、机器学习、人工智能等领域学习资源汇总
    yt-channels-DS-AI-ML-CS180+优质YouTube频道推荐:数据科学、机器学习、人工智能等领域学习资源汇总在这个信息爆炸的时代,YouTube已经成为许多人学习新知识的重要平台。特别是在数据科学、机器学习、人工智能等热门技术领域,有大量优质的教学内容。本文整理了180多个高质量的Y......
  • 2024/10/15第三次人工智能
    一:从教育者角度理解AI规则基础系统(教学大纲和课程设置)2.机器学习(学生通过练习提高技能)3.深度学习(高阶思维能力的培养)4.预训练(扩充语料库/学生在正式教育前的知识积累)5.微调(针对特定任务的专业训练/学科专业化)6.推理(模型根据输入生成输出文本/学生解答问题的过程......
  • 2024/10/15人工智能教育技术学-
    目标:以教育者的角度了解AI(技术/机器-教育)-(了解专业术语)规则基础系统-教学大纲和课程设置机器学习-学生通过练习提高能力深度学习-高阶思维能力的培养预训练:扩充语料库-学生在正式教育前的知识积累(包括通识课)微调:针对特定任务的专门训练-学科专业化推理:模型根据输入形成输出......
  • 10.15 人工智能学习内容
    从教育者角度来理解AI1.规则基础系统(教学大纲和课程设置)2.机器学习(学生通过练习提高技能)3.深度学习(高阶思维能力的培养)【预训练】·扩充语料库·学生在正式教育前的知识积累【微调】·针对特定任务的专门训练·学科专业化【推理】·模型根据输入生成输出文本·学生解......
  • Unity纹理压缩
    1、贴图,texture和atlasTextureType贴图类型:Default:普通贴图,这是所有纹理最常用的设置。Normalmap:法线贴图,选择此选项可将颜色通道转换为适合实时法线贴图的格式。EditorGUIandLegacyGUI:UI贴图,把Texture用在HUDorGUIcontrols.上。Sprite(2DandUI):精......
  • 【Unity】mesh绘制简单图形
    应用使用mesh绘制一个彩虹色三角形、四边形、多四边形瓦片控制mesh移动,实现游戏的对象的身体关节的动作步骤mesh(网格类)Meshmesh=newMesh();vertices:顶点数组,包括mesh中的所有顶点,如三角形三个顶点//三角形三个顶点Vector3[]vertices=newVector3[3];vertices[0......
  • 基于人工智能的图像分类算法研究与实现 - 深度学习卷积神经网络图像分类
    毕业设计-基于人工智能的图像分类算法研究与实现-深度学习卷积神经网络图像分类文章目录0简介深度学习作为机器学习领域内新兴并且蓬勃发展的一门学科,它不仅改变着传统的机器学习方法,也影响着我们对人类感知的理解,已经在图像识别和语音识别等领域取得广泛的应用......
  • 【XYFrame unity框架使用文档】封装unity小框架工具集 —— XYFrame
    文章目录XYFrame介绍优点获取框架源码引入的第三方插件作者信息技术交流群反馈企鹅裙画饼使用文档导入文件目录启动1、单例模式不继承MonoBehaviour的单例模式基类继承MonoBehaviour的单例模式基类2、Mono管理器3、事件管理系统4、工具类封装unity协程工具,避免GC(垃圾回......
  • 人工智能时代程序员的核心竞争力是什么?
    人工智能时代,程序员如何保持核心竞争力?随着AIGC(如chatgpt、midjourney、claude等)大语言模型接二连三的涌现,AI辅助编程工具日益普及,程序员的工作方式正在发生深刻变革。有人担心AI可能取代部分编程工作,也有人认为AI是提高效率的得力助手。面对这一趋势,程序员应该如何应对?......