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

(2025)Unity调用DeepSeek API (兼容OpenAI SDK)

DeepSeek模型简介

DeepSeek-V3 为自研 MoE 模型,671B 参数,激活 37B,在 14.8T token 上进行了预训练。该模型多项评测成绩超越了 Qwen2.5-72B 和 Llama-3.1-405B 等其他开源模型,并在性能上和世界顶尖的闭源模型 GPT-4o 以及 Claude-3.5-Sonnet 不分伯仲。 

且DeepSeek为国内模型,访问无需魔法上网,以下是如何在Unity调用DeepSeek-V3 API。

首先,在DeepSeek官方平台注册账号并登录,申请API Key

根据官方文档封装Post方法如下:

/// <summary>
/// post请求
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="urlTail"></param>
/// <param name="form"></param>
/// <param name="onOver"></param>
/// <returns></returns>
public static IEnumerator PostRequest<T>(string token, Action<T> onOver, object data, string urlTail = null)
{
    
        using (UnityWebRequest request = new UnityWebRequest("https://api.deepseek.com/chat/completions" + urlTail))
        {
            request.method = "post";
            // 设置请求体内容
            string jsonStr = JsonConvert.SerializeObject(data);
            byte[] bodyRaw = Encoding.UTF8.GetBytes(jsonStr);
            request.uploadHandler = new UploadHandlerRaw(bodyRaw);
            request.SetRequestHeader("Content-Type", "application/json");
            request.downloadHandler = new DownloadHandlerBuffer();
            if (token != "")
            {
                // 添加请求头部信息
                request.SetRequestHeader("Authorization", token);
            }
            // 发送请求并等待响应
            yield return request.SendWebRequest();

            // 处理响应
            if (request.result == UnityWebRequest.Result.Success)
            {
                Debug.Log("新post请求(" + request.url + ")成功,返回结果:" + request.downloadHandler.text);
                // 在这里处理API响应
                onOver.Invoke(JsonConvert.DeserializeObject<T>(request.downloadHandler.text));
            }
            else
            {
                Debug.Log("新post请求(" + request.url + ")失败,返回结果:" + request.downloadHandler.text);
                // 在这里处理API请求失败的情况

                onOver.Invoke(default(T));
            }
        }
}

调用方法

传入token为 “Bearer <DeepSeek API Key>”,DeepSeek API Key为上面获取到的Key,JSON类组成如下:

JSON属性解析

        1.指定 model='deepseek-chat' 即可调用 DeepSeek-V3。

        2.将 stream 设置为 true 来使用流式输出。messages是传入的文本。

JSON代码如下:

public class DeepSeekJson
{
    public string model { get; set; }

    public List<DeepSeekItem> messages { get; set; }

    public bool stream { get; set; }

    public class DeepSeekItem
    {
        public string role { get; set; }
        public string content { get; set; }
    }
}

Python OUTPUT样例代码如下:

import json
from openai import OpenAI

client = OpenAI(
    api_key="<your api key>",
    base_url="https://api.deepseek.com",
)

system_prompt = """
The user will provide some exam text. Please parse the "question" and "answer" and output them in JSON format. 

EXAMPLE INPUT: 
Which is the highest mountain in the world? Mount Everest.

EXAMPLE JSON OUTPUT:
{
    "question": "Which is the highest mountain in the world?",
    "answer": "Mount Everest"
}
"""

user_prompt = "Which is the longest river in the world? The Nile River."

messages = [{"role": "system", "content": system_prompt},
            {"role": "user", "content": user_prompt}]

response = client.chat.completions.create(
    model="deepseek-chat",
    messages=messages,
    response_format={
        'type': 'json_object'
    }
)

print(json.loads(response.choices[0].message.content))

注意事项​

  1. 设置 response_format 参数为 {'type': 'json_object'}

  2. 用户传入的 system 或 user prompt 中必须含有 json 字样,并给出希望模型输出的 JSON 格式的样例,以指导模型来输出合法 JSON。

  3. 需要合理设置 max_tokens 参数,防止 JSON 字符串被中途截断。

 Python使用上下文拼接样例代码:

from openai import OpenAI
client = OpenAI(api_key="<DeepSeek API Key>", base_url="https://api.deepseek.com")

# Round 1
messages = [{"role": "user", "content": "What's the highest mountain in the world?"}]
response = client.chat.completions.create(
    model="deepseek-chat",
    messages=messages
)

messages.append(response.choices[0].message)
print(f"Messages Round 1: {messages}")

# Round 2
messages.append({"role": "user", "content": "What is the second?"})
response = client.chat.completions.create(
    model="deepseek-chat",
    messages=messages
)

messages.append(response.choices[0].message)
print(f"Messages Round 2: {messages}")

Unity调用以上样例代码方式和普通调用方式类似。

相关文章:

  • 在Windows实现将Docker Desktop安装至非系统盘(2025年3月测试有效)
  • Kmeans算法来实现RFM指标计算步骤
  • 算法 并查集
  • Axure原型模板与元件库APP交互设计素材(附资料)
  • Bitmap -> Bitmap安卓设备上的显示和内存
  • 汽车轮胎损伤缺陷分割数据集labelme格式1957张3类别
  • iOS安全和逆向系列教程 第1篇: iOS逆向工程概述与学习路线图
  • 第七章:项目实战 - 第四节 - Tailwind CSS 移动端适配实践
  • 计算机毕业设计SpringBoot+Vue.js装饰工程管理系统(源码+文档+PPT+讲解)
  • 算数操作符、赋值操作符、单目操作符、强制类型转换
  • 五、Redis 持久化:RDB 与 AOF 深入解析与优化策略
  • linux一些使用技巧
  • Rust 入门+语法详解+Windows 下 Cursor AI辅助开发
  • Linux中死锁问题的探讨
  • 【C语言】结构体自动对齐问题 解析与解决方案
  • Halcon 车牌识别-超精细教程
  • 第四章 STM32 Flash
  • Vue2 + Quill富文本编辑器
  • Netty笔记9:粘包半包
  • golang程序员如何3天完成python学习
  • 有哪些网站可以做h5/免费发布推广的网站有哪些
  • 澄迈住房和城乡建设局网站/怎么百度推广
  • 网站建/seo的目的是什么
  • 什么网站做装修的/活动推广方式
  • 三丰云怎么做网站/南京seo报价
  • 网站技术支持什么意思/深圳优化网站方法