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

要在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密钥是安全的,不要在公共代码库中暴露它。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于python多光谱遥感数据处理、图像分类、定量评估及机器学习

原文链接&#xff1a;基于python多光谱遥感数据处理、图像分类、定量评估及机器学习 普通数码相机记录了红、绿、蓝三种波长的光&#xff0c;多光谱成像技术除了记录这三种波长光之外&#xff0c;还可以记录其他波长&#xff08;例如&#xff1a;近红外、热红外等&#xff09;光…

pytorch神经网络训练(AlexNet)

导包 import osimport torchimport torch.nn as nnimport torch.optim as optimfrom torch.utils.data import Dataset, DataLoaderfrom PIL import Imagefrom torchvision import models, transforms 定义自定义图像数据集 class CustomImageDataset(Dataset): 定义一个自…

Ubuntu22.04 下 pybind11 搭建,示例

Pybind11 是一个轻量级的库&#xff0c;用于在 C 中创建 Python 绑定。Ubuntu22下安装pybind11步骤如下&#xff1a; 1. 安装 pybind11 1.1 pip 命令安装 pip3 install pybind11 1.2 源代码安装 安装依赖库&#xff1a; sudo pip install -i https://pypi.tuna.tsinghua.e…

AVR晶体管测试仪开源项目编译

AVR晶体管测试仪开源项目编译 &#x1f4cd;原项目地址&#xff1a;https://github.com/Mikrocontroller-net/transistortester/tree/master&#x1f33f; https://github.com/svn2github/transistortester&#x1f33f; https://github.com/wagiminator/ATmega-Transistor-Tes…

2. Revit API UI 之 IExternalCommand 和 IExternalApplication

2. Revit API UI 之 IExternalCommand 和 IExternalApplication 上一篇我们大致看了下 RevitAPI 的一级命名空间划分&#xff0c;再简单讲了一下Attributes命名空间下的3个类&#xff0c;并从一个代码样例&#xff0c;提到了Attributes和IExternalCommand &#xff0c;前者是指…

vite配置unocss

在vue3vitetseslintprettierstylelinthuskylint-stagedcommitlintcommitizencz-git介绍了关于vitevue工程化搭建&#xff0c;现在在这个基础上&#xff0c;我们增加一下unocss unocss官方文档 具体开发中使用遇到的问题可以参考不喜欢原子化CSS得我&#xff0c;还是在新项目中使…

NumPy和数组

1.NumPy是什么 NumPy&#xff08;Numerical Python的缩写&#xff09;是一个开源的Python科学计算模块&#xff0c;其中包含了许多实用的数学函数&#xff0c;用来处理数值型数据。NumPy中&#xff0c;最重要和使用最频繁的对象就是N维数组。 为什么要学习NumPy&#xff1f; …

Java高级技术探索:深入理解JVM内存分区与GC机制

文章目录 引言JVM内存分区概览垃圾回收机制&#xff08;GC&#xff09;GC算法基础常见垃圾回收器ParNew /Serial old 收集器运行示意图 优化实践结语 引言 Java作为一门广泛应用于企业级开发的编程语言&#xff0c;其背后的Java虚拟机&#xff08;JVM&#xff09;扮演着至关重…

TikTok Ads广告综合指南:竞价策略及效果建议

作为全球最受欢迎的应用程序之一&#xff0c;TikTok不仅为用户提供了记录分享生活中美好时刻、交流全球创意的平台&#xff0c;也给全球的企业提供了一个直接触达用户的平台。随着Z时代用户人群的购买力不断上升&#xff0c;出海广告主们也逐渐将目光放在TikTok方面的营销。 上…

【Linux系统编程】线程

Linux线程 文章目录 Linux线程1.进程与线程区别2.线程优点3.API概要4.线程1.线程的创建2.线程等待内存共享验证3.线程退出关于对void** &的理解拓展 4.互斥锁1.创建及销毁互斥锁2.加锁及解锁 5.什么情况下会造成死锁6.条件**1. 创建及销毁条件变量****2. 等待****3. 触发**…

基于大数据的主流电商平台获取商品详情数据SKU数据价格数据

主流电商平台&#xff1a;淘宝 1688 闲鱼 京东 唯品会 蘑菇街 一号店 阿里妈妈 阿里巴巴 苏宁 亚马逊 易贝 速卖通 电子元件 网易考拉 洋码头 VVIC MIC Lazada 拼多多 ​ ​​​​​​​关于电商大数据的介绍&#xff1a; 主流电商大数据的采集&#xff1a;电商API接口的接入…

潮玩宇宙大逃杀APP系统开发成品案例分享指南

这是一款多人游戏&#xff0c;玩家需要选择一个房间躲避杀手。满足人数后&#xff0c;杀手会随机挑选一个房间杀掉里面所有的参与者&#xff0c;其他房间的幸存者将平均瓜分被杀房间的元宝。玩家在选中房间后&#xff0c;倒计时结束前可以自由切换不同房间。 软件项目开发成品…

【Linux】进程控制3——进程程序替换

一&#xff0c;前言 创建子进程的目的之一就是为了代劳父进程执行父进程的部分代码&#xff0c;也就是说本质上来说父子进程都是执行的同一个代码段的数据&#xff0c;在子进程修改数据的时候进行写时拷贝修改数据段的部分数据。 但是还有一个目的——将子进程在运行时指向一个…

自动控制原理【期末复习】(二)

无人机上桨之后可以在调试架上先调试&#xff1a; 1.根轨迹的绘制 /// 前面针对的是时域分析&#xff0c;下面针对频域分析&#xff1a; 2.波特图 3.奈维斯特图绘制 1.奈氏稳定判据 2.对数稳定判据 3.相位裕度和幅值裕度

JavaScript的数组排序

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

Sora和快手可灵背后的核心技术 | 3DVAE:通过小批量特征交换实现身体和面部的三维形状变分自动编码器

【摘要】学习3D脸部和身体生成模型中一个解开的、可解释的和结构化的潜在表示仍然是一个开放的问题。当需要控制身份特征时,这个问题尤其突出。在本文中,论文提出了一种直观而有效的自监督方法来训练一个3D形状变分自动编码器(VAE),以鼓励身份特征的解开潜在表示。通过交换不同…

自学网络安全的三个必经阶段(含路线图)

一、为什么选择网络安全&#xff1f; 这几年随着我国《国家网络空间安全战略》《网络安全法》《网络安全等级保护2.0》等一系列政策/法规/标准的持续落地&#xff0c;网络安全行业地位、薪资随之水涨船高。 未来3-5年&#xff0c;是安全行业的黄金发展期&#xff0c;提前踏入…

Python:基础爬虫

Python爬虫学习&#xff08;网络爬虫&#xff08;又称为网页蜘蛛&#xff0c;网络机器人&#xff0c;在FOAF社区中间&#xff0c;更经常的称为网页追逐者&#xff09;&#xff0c;是一种按照一定的规则&#xff0c;自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字…

上海晋名室外危废品暂存柜助力储能电站行业危废品安全储存

近日又有一台SAVEST室外危废暂存柜项目成功验收交付使用&#xff0c;此次项目主要用于储能电站行业废油、废锂电池等危废品的安全储存。 用户单位在日常工作运营中涉及到废油、废锂电池等危废品的室外安全储存问题。4月中旬用户技术总工在寻找解决方案的过程中搜索到上海晋名的…

uniapp地图自定义文字和图标

这是我的结构&#xff1a; <map classmap id"map" :latitude"latitude" :longitude"longitude" markertap"handleMarkerClick" :show-location"true" :markers"covers" /> 记住别忘了在data中定义变量…