【Unity+AI01】在Unity中调用DeepSeek大模型!实现AI对话功能!

news2024/11/18 10:44:39

要在Unity中调用DeepSeek的API并实现用户输入文本后返回对话的功能,你需要遵循以下步骤:

  1. 获取API密钥
    首先,你需要从DeepSeek获取API密钥。这通常涉及到注册账户,并可能需要订阅相应的服务。

  2. 集成HTTP请求库
    Unity本身不直接支持HTTP请求,因此你需要集成一个HTTP请求库,如UnityWebRequest或第三方库如LitJsonNewtonsoft.Json等,用于处理JSON数据的序列化和反序列化。

  3. 编写API调用代码
    在Unity中创建一个脚本,用于处理用户输入和API调用。以下是一个简单的示例,展示了如何使用UnityWebRequest来调用API:

一、搭建场景

一个输入框、一个用于显示的文本框即可,一个按钮,按钮上有个回调函数!

 总共就一个脚本:

你用人家官方的大模型,肯定需要联网调用,去官网(我用的DeepSeek),其他网站都一样!申请个API key 就可以了!代码里面需要是我的API ,里面只有2块钱!仅供大家体验!你可以自己充值,还算便宜!

传送门:DeepSeek这是我的 APIKEY:sk-d17be4a259504db3825c8d20d463dddd 

整个代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
using Newtonsoft.Json;
using System.Text;
using TMPro;

public class DeepSeekChat : MonoBehaviour
{
    // 替换为你的 DeepSeek API key
    private string apiKey = "sk-d17be4a259504db3825c8d20d463dddd";
    private string apiUrl = "https://api.deepseek.com/chat/completions";

    // Unity UI 元素
    public TMP_InputField userInputField;
    public TextMeshProUGUI chatOutputText;

    // 用于存储对话历史
    private List<Dictionary<string, string>> messages = new List<Dictionary<string, string>>();

    void Start()
    {
        // 初始化系统消息
        messages.Add(new Dictionary<string, string> { { "role", "system" }, { "content", "You are a helpful assistant." } });
    }

    public void OnSendButtonClicked()
    {
        string userMessage = userInputField.text;
        if (string.IsNullOrEmpty(userMessage)) return;

        // 添加用户消息到对话历史
        messages.Add(new Dictionary<string, string> { { "role", "user" }, { "content", userMessage } });

        // 调用 DeepSeek API
        StartCoroutine(CallDeepSeekAPI());
    }

    private IEnumerator CallDeepSeekAPI()
    {
        // 创建请求数据
        var requestData = new
        {
            model = "deepseek-chat",
            messages = messages,
            stream = false
        };

        string jsonData = JsonConvert.SerializeObject(requestData);

        // 创建 UnityWebRequest
        UnityWebRequest request = new UnityWebRequest(apiUrl, "POST");
        byte[] bodyRaw = Encoding.UTF8.GetBytes(jsonData);
        request.uploadHandler = new UploadHandlerRaw(bodyRaw);
        request.downloadHandler = new DownloadHandlerBuffer();
        request.SetRequestHeader("Content-Type", "application/json");
        request.SetRequestHeader("Authorization", "Bearer " + apiKey);

        // 发送请求
        yield return request.SendWebRequest();

        if (request.result == UnityWebRequest.Result.Success)
        {
            // 解析响应
            var response = JsonConvert.DeserializeObject<DeepSeekResponse>(request.downloadHandler.text);
            string botMessage = response.choices[0].message.content;

            // 显示响应
            chatOutputText.text += "\nAI: " + botMessage;

            // 添加 AI 消息到对话历史
            messages.Add(new Dictionary<string, string> { { "role", "assistant" }, { "content", botMessage } });
        }
        else
        {
            Debug.LogError("Error: " + request.error);
        }
    }

    [System.Serializable]
    public class DeepSeekResponse
    {
        public Choice[] choices;
    }

    [System.Serializable]
    public class Choice
    {
        public Message message;
    }

    [System.Serializable]
    public class Message
    {
        public string content;
    }
}
  1. 处理用户输入
    你需要在Unity中创建一个用户界面(UI),用于接收用户输入。这可以通过Unity的UI系统来实现,例如使用InputField组件来获取文本输入。

  2. 集成用户输入和API调用
    将用户输入与API调用脚本集成,使得用户输入的文本能够被传递给API,并且API的响应能够被显示在Unity的UI中。

  3. 测试和调试
    在Unity中运行你的应用程序,测试用户输入和API调用的流程,确保一切按预期工作。

请注意,上述代码仅为示例,你需要根据DeepSeek API的具体要求来调整URL、参数和JSON解析逻辑。此外,确保你的Unity项目中包含了所有必要的库,并且你的API密钥是安全的,不要在公共代码库中暴露它。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

西南交通大学【操作系统实验6】

实验目的 学习如何产生一个系统调用&#xff0c;以及怎样通过往内核中增加一个新函数&#xff0c;从而在内核空间中实现对用户空间的读/写。学习重建内核。 实验内容 &#xff08;1&#xff09;设计并实现一个新的系统调用pedagogictime() &#xff0c;该函数通过使用一个引用…

Stable diffusion的SDXL模型,针不错!(含实操)

与之前的SD1.5大模型不同&#xff0c;这次的SDXL在架构上采用了“两步走”的生图方式&#xff1a; 以往SD1.5大模型&#xff0c;生成步骤为 Prompt → Base → Image&#xff0c;比较简单直接&#xff1b;而这次的SDXL大模型则是在中间加了一步 Refiner。Refiner的作用是什么呢…

Base64编码和ASCII编码

1字节Byte 8比特bit 单位换算关系Byte1Byte 8bitKB1024ByteMB1024KBGB1024MB 网速中的Mbps和MB/s Mbps 1M bit/s 1024 K bit/s 1024 * 1024 bit/s MB/s 1024 KB/s 1024 * 1024 B/s 1024 * 1024 * 8 bit/s 所以&#xff1a;1Mbps 1/8 MB/s 1个bit&#xff0c;可以表示…

利用Python的NLTK库来查询指定单词的同义词

一、NTLK库介绍 NLTK&#xff08;Natural Language Toolkit&#xff09; 是Python中最为知名的自然语言处理&#xff08;NLP&#xff09;库之一&#xff0c;它提供了丰富的模块和数据结构&#xff0c;专门用于人类语言数据的统计自然语言处理。它包含了文本处理库用于分类、标记…

手机丢失不惊慌,华为手机已升级至楼层级设备查找!

出门总是丢三落四&#xff0c;手机丢了怎么办&#xff1f;不要怕&#xff0c;只要你的华为手机升级至云空间新版本&#xff0c;就可以进行楼层级设备查找&#xff0c;现在可以查看到具体的楼层了&#xff01; 之前有手机丢失过的朋友&#xff0c;肯定有相似的经历&#xff0c…

网页宽度现在右侧有一个竖条空白,怎么啦车网站都没办法完全铺满宽度,怎么回事怎么解决

问: 网页宽度怎么设置全覆盖 回答: 经过检查,发现 是这个网站的最外层html标签设置了宽度,所以导致,当我们删除html的宽度后就解决了这个问题.

【会议征稿,ACM出版】2024年粤港澳大湾区教育数字化与计算机科学国际学术会议(EDCS 2024,6月21-23)

人工智能、区块链、虚拟现实技术等新一轮技术革命正在推进社会结构变革&#xff1b;数字化转型正在重塑社会、劳动力市场和未来工作形式&#xff0c;其中关于教育领域&#xff0c;2019&#xff0c;2020的冠状病毒病大流行给全球教育带来巨大挑战&#xff0c;加速了教育数字化转…

海南聚广众达电子商务咨询有限公司打造一站式电商服务

在数字经济的浪潮中&#xff0c;电商行业蓬勃发展&#xff0c;各种平台和服务商如雨后春笋般涌现。其中&#xff0c;海南聚广众达电子商务咨询有限公司凭借其专业的团队和丰富的经验&#xff0c;在抖音电商服务领域独树一帜&#xff0c;成为业界的佼佼者。 海南聚广众达电子商…

Advanced Intelligent Systems 清华大学曲钧天团队设计了基于光纤传感技术的多模态触觉感知仿生机械手

随着软体机器人技术的发展&#xff0c;触觉感知在人机安全交互、可穿戴设备和医疗器械领域发挥着重要作用。如何用简单的系统集成更多的触觉感知、获取更多交互信息面临着诸多挑战。 近日&#xff0c;清华大学国际研究生院曲钧天助理教授团队在国际期刊Advanced Intelligent S…

python的resample()函数

介绍 在Python中,resample()函数是一个常用的工具,用于对时间序列数据进行重新采样。这个函数可以将时间序列数据从一个频率转换为另一个频率,比如将每天的数据转换为每月的数据。在本教程中,我将向你展示如何使用resample()函数,并解释每个步骤的具体含义。 整体流程 首先…

泉城济南的隐秘珍宝与山东旅游必去十大景点

泉城济南的隐秘珍宝与山东旅游必去十大景点 济南&#xff0c;这座历史悠久的城市&#xff0c;不仅以其丰富的人文底蕴著称&#xff0c;还拥有诸多引人入胜的自然景观。在这片华夏神州广阔的齐鲁大地上&#xff0c;济南特别以其“三无风景区”——无影山、无影潭、无影泉——而闻…

云联HIS系统源码,二级医院信息系统源码,支持云架构部署模式

采用java语言开发B/S广域互联模式&#xff0c;支持云架构部署模式&#xff0c;支持大数据分析技术&#xff1b;支持与医保平台接口、电子票据对接。 云HIS系统相关技术&#xff1a; 后台&#xff1a;JavaSpring&#xff0c;SpringBoot&#xff0c;SpringMVC&#xff0c;Sprin…

Facebook商城号怎么做?思路与操作分析

2016 年&#xff0c;Facebook打造了同名平台 Facebook Marketplace。通过利用 Facebook 现有的庞大客户群&#xff0c;该平台取得了立竿见影的成功&#xff0c;每月访问量将超过 10 亿。对于个人卖家和小企业来说&#xff0c;Facebook Marketplace是一个不错的销货渠道&#xf…

电商项目-day02

文章目录 分析项目结构登录请求项目搭建Result总结 分析项目结构 语法的限制打开 端口修改 修改port 前端的入口工程是main.js 登录请求 早期的登录是使用session 称为 会话 也称为域 使用jwt进行验证 模块 spzx-partent 父工程 使用pom 其他的模块都是 jar包 项目搭…

《Brave New Words 》5.1 传递真相:偏见和虚假信息现状

Part V: Keeping Kids Safe 第五部分&#xff1a;确保孩子安全 Never travel faster than your guardian angel can fly. —Mother Teresa 永远不要比你的守护天使飞得更快。 ——特蕾莎修女 Distrust and caution are the parents of security. —Benjamin Franklin 不信任和谨…

LabVIEW轴承试验机测控系统

开发了一种基于LabVIEW软件开发的大功率风电机组增速箱轴承试验机测控系统。系统主要用于模拟实际工况&#xff0c;进行轴承可靠性分析&#xff0c;以优化风电机组的性能和可靠性。通过高度自动化的测控系统&#xff0c;实现了对试验机的精确控制&#xff0c;包括速度、振动、温…

白嫖Cloudflare Workers 搭建 Docker Hub镜像加速服务|

简介 基于Cloudflare Workers 搭建 Docker Hub镜像加速服务。 首先要注册一个Cloudflare账号。 Cloudflare账号下域名的一级域名&#xff0c;推荐万网注册个top域名&#xff0c;再转移到Cloudflare&#xff0c;很便宜的。 注意 Worker 每天每免费账号有次数限制&#xff0c;为…

48.HTTP 规范规定,跟随重定向时必须使用 GET 方法

起因&#xff1a; 今天在练习一个Django功能时&#xff0c;把form的method设置为POST&#xff0c;但是实际提交时&#xff0c;一直是GET方法。最后&#xff0c;从下面这张图发现了端倪&#xff1a; 第一次是method是POST方法&#xff0c;被重定向时&#xff0c;变成了GET。 继…

综合型驱鸟装置:光伏电站集束冲击波驱鸟器

光伏电站作为绿色、清洁的能源生产方式&#xff0c;正在全球范围内得到快速发展。在光伏电站的建设和运营过程中&#xff0c;鸟类活动所带来的影响逐渐凸显&#xff0c;成为电站管理者需要面对的重要问题。在此背景下&#xff0c;光伏电站驱鸟器的需求也不断增长。 目前市场上的…

echart盒子没有跟着当前div大小变化而自适应

一、问题描述 当echarts图表在一个盒子里的时候&#xff0c;盒子大小变化了&#xff0c;但是图表没有跟着自适应&#xff0c;比如这样&#xff0c;盒子变大了&#xff0c;但是图表没变化 二、解决方法 在盒子大小更改的同时&#xff0c;调用图表的resize方法&#xff0c;记…