(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调用以上样例代码方式和普通调用方式类似。

### 如何集成和使用 DeepSeek 第三方平台 APISDK #### 使用 OpenAI 兼容API 接入方式 DeepSeek API 设计遵循与 OpenAI 完全兼容的标准,这意味着开发者能够通过调整少量配置项来利用现有的 OpenAI SDK 访问 DeepSeek 的服务[^1]。对于熟悉 OpenAI 生态系统的用户来说,这种方式提供了极大的便利性和灵活性。 #### Unity调用 DeepSeek 大模型实例 针对特定应用场景如游戏开发环境下的 AI 对话功能实现,《【Unity+AI01】在Unity调用DeepSeek大模型!实现AI对话功能!》一文中给出了详细的指导说明。该文章不仅涵盖了 UGUI、C# 编程以及 DeepSeek API 的基本操作,而且适合那些已经掌握这些技能的人士快速上手实践[^2]。 ```csharp using UnityEngine; using System.Collections; public class ChatBot : MonoBehaviour { private string apiUrl = "https://api.deepseek.com/v1/chat"; public void SendMessage(string message){ StartCoroutine(PostMessage(message)); } IEnumerator PostMessage(string msg){ WWWForm form = new WWWForm(); form.AddField("message",msg); using(WWW www = new WWW(apiUrl,form)){ yield return www; if (string.IsNullOrEmpty(www.error)) Debug.Log("Response from server:" + www.text); else Debug.LogError("Error:"+www.error); } } } ``` 此代码片段展示了如何创建一个简单的聊天机器人组件,在 Unity 场景内发送消息给 DeepSeek 并接收响应数据。 #### 关于性能优化和支持特性 随着技术迭代更新,最新版本的 DeepSeek - V2 已经达到了惊人的 2360 亿参数规模,并能处理长达 128K 字符长度的内容输入。这表明其具备强大的自然语言理解和生成能力的同时也保持了较高的成本效益比率[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值