关注

【Unity-AI开发篇】| 游戏中接入DeepSeek实现AI对话,完整详细步骤

请添加图片描述

请添加图片描述


前言

  • 大语言模型正深刻改变人机交互方式,DeepSeek 凭借强大的推理能力、文本快速响应能力及超长上下文,成为开发者接入 AI 对话的热门选择。
  • 本文带你从零开始在 Unity 中接入 DeepSeek,实现实时 AI 对话。
  • 从 API 获取、配置到 UI 交互,全程详细介绍,即使 Unity 新手也能轻松上手。

【Unity-AI开发篇】| 游戏中接入DeepSeek实现AI对话,完整详细步骤

一、DeepSeek

1.1 介绍

DeepSeek(深度求索) 是由幻方量化孵化的一家中国AI实验室,专注于大语言模型的研发。自2023年成立以来,DeepSeek凭借其低成本高性能全开源的技术路线,迅速成为全球AI领域的重要力量。

核心亮点

  • 极致性价比:训练成本仅 557万美元,性能对标 GPT-4
  • 超长上下文:支持 100万tokens,可一次性处理《三体》三部曲
  • 开源生态:模型权重完全开放,开发者可自由部署

1.2 效果展示

请添加图片描述


二、 获取DeepSeek模型API

2.1 API调用文档

DeepSeek的API文档:https://api-docs.deepseek.com/zh-cn/
在这里插入图片描述

2.2 获取API密钥

登录DeepSeek开放平台获取API密钥:https://platform.deepseek.com/api_keys

点击创建API key,然后输入名称,之后点击复制APIKEY(后面在Unity中接入对话时会用到)。

重要提示:密钥仅在申请成功时完整显示一次,后续只能查看基本信息。请务必妥善保存,建议存储在本地安全位置。
在这里插入图片描述

2.3 模型价格

DeeoSeek的百万Tokens价格约为两到三元左右,相比之下已经很划算了,用作对话API使用完全足够。
在这里插入图片描述

2.4 用量信息

可以在DeepSeek开放平台查看用量信息,消费金额、API请求次数和Tokens的消耗都可以看到。
在这里插入图片描述


三、接入Unity使用

3.1 新建Unity项目

使用UnityHub新建一个Unity项目,然后新建场景和脚本。
在这里插入图片描述

将脚本挂载到场景中运行查看效果。
在这里插入图片描述

这样就可以在Unity工程中跟DeepSeek进行对话了。

3.1 AI对话脚本

调用脚本 DeepSeekTest.cs

using UnityEngine;

public class DeepSeekTest : MonoBehaviour
{
    private void Start()
    {
        DeepSeekDialogueManager .GetInstance().SendMessageToDeepSeek("你好");
    }
}

核心脚本 DeepSeekDialogueManager.cs

using System.Collections;
using UnityEngine;
using Newtonsoft.Json;
using UnityEngine.Networking;
using UnityEngine.UI;

public class DeepSeekDialogueManager  : MonoBehaviour
{
    private string apiKey = "此处填入申请的API密钥"; // API密钥
    private string apiUrl = "https://api.deepseek.com/v1/chat/completions"; // API请求地址
    private string modelName = "deepseek-chat"; // 使用的模型名称
    private int maxTokens = 1024; // 生成的最大令牌数(控制回复长度)

    private static DeepSeekDialogueManager  intance;
    public static DeepSeekDialogueManager  GetInstance()
    {
        if (intance == null)
        {
            intance = new DeepSeekDialogueManager();
        }
        return intance;
    }

    void Awake()
    {
        intance = this;
    }

    public void SendMessageToDeepSeek(string data)
    {
        StartCoroutine(PostRequest(data));
    }

    IEnumerator PostRequest(string message)
    {
        //创建请求体
        var requestBody = new
        {
            model = modelName,
            max_tokens = maxTokens,
            messages = new[]
            {
                //new { role = "system", content = "给模型添加信息。比如:你是一个UnityAI助手,负责Unity中的对话功能" },
                new { role = "user", content = message }
            },
        };
        //序列化请求体
        string jsonBody = JsonConvert.SerializeObject(requestBody);
        Debug.Log("序列化内容。jsonBody:" + jsonBody);

        //创建网络请求
        UnityWebRequest request = new UnityWebRequest(apiUrl, "POST");
        byte[] bodyRaw = System.Text.Encoding.UTF8.GetBytes(jsonBody);
        //上传处理器
        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.ConnectionError || request.result == UnityWebRequest.Result.ProtocolError)
        {
            // 打印详细错误信息
            Debug.LogError($"request: {request.result}。Error: {request.error}。Response: {request.downloadHandler.text}");
        }
        else
        {
            // 处理响应
            string responseJson = request.downloadHandler.text;
            Debug.Log("Response: " + responseJson);
            // 解析响应
            var response = JsonConvert.DeserializeObject<DeepSeekResponse>(responseJson);
            if (response != null && response.choices.Length > 0)
            {
                string reply = response.choices[0].message.content;
                Debug.Log("DeepSeek says: " + reply);
            }
            else
            {
                Debug.LogError("Failed to parse response.");
            }
        }
        request.Dispose();
    }

    // 定义响应数据结构
    private class DeepSeekResponse
    {
        public Choice[] choices;
    }
    private class Choice
    {
        public Message message;
    }
    private class Message
    {
        public string content;
    }
}

3.2 搭建简易UI对话界面

使用InputField输入对话内容,使用Text组件接收DeepSeek回复的内容,搭建简易的对话界面。
在这里插入图片描述

测试效果如下所示:
请添加图片描述

3.3 其他模型API对话接入

本文提供的脚本不止可以接入DeepSeek进行对话,还可以接入其他大模型,比如MiniMax等。

只需要修改模型名称API请求地址即可,比如使用MiniMax对话模型脚本修改如下:

    private string apiUrl = "https://api.minimaxi.com/v1/text/chatcompletion_v2"; // API请求地址
    private string modelName = "MiniMax-M2.5"; // 使用的模型名称

在这里插入图片描述

不同模型使用的API请求地址和模型名称一般都不同,去对应的官方API文档查看即可。


总结

  • 本文介绍了在Unity中接入DeepSeek以及其他大模型进行AI对话的功能。
  • 近期AI发展非常迅速,搁在ChatGPT刚出时,想接入GPT进行对话要经过很多复杂步骤。
  • 现如今只需要调用 同一个脚本,输入不同厂家的API地址即可,可谓是非常便捷了!

  • 🎬 博客主页:https://xiaoy.blog.csdn.net

  • 🎥 本文由 呆呆敲代码的小Y 原创 🙉

  • 🎄 学习专栏推荐:Unity系统学习专栏

  • 🌲 游戏制作专栏推荐:游戏制作

  • 🌲Unity实战100例专栏推荐:Unity 实战100例 教程

  • 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

  • 📆 未来很长,值得我们全力奔赴更美好的生活✨

  • ------------------❤️分割线❤️-------------------------

请添加图片描述请添加图片描述请添加图片描述

请添加图片描述

资料白嫖,技术互助

学习路线指引(点击解锁)知识定位人群定位
🧡 Unity系统学习专栏 入门级本专栏从Unity入门开始学习,快速达到Unity的入门水平
💛 Unity实战类项目 进阶级计划制作Unity的 100个实战案例!助你进入Unity世界,争取做最全的Unity原创博客大全。
❤️ 游戏制作专栏 难度偏高分享学习一些Unity成品的游戏Demo和其他语言的小游戏!
💚 游戏爱好者万人社区 互助/吹水数万人游戏爱好者社区,聊天互助,白嫖奖品
💙 Unity100个实用技能 Unity查漏补缺针对一些Unity中经常用到的一些小知识和技能进行学习介绍,核心目的就是让我们能够快速学习Unity的知识以达到查漏补缺

请添加图片描述

转载自CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/zhangay1998/article/details/159630229

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--