当前位置:   article > 正文

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

deepseek unity

要在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 

整个代码如下:

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.Networking;
  5. using Newtonsoft.Json;
  6. using System.Text;
  7. using TMPro;
  8. public class DeepSeekChat : MonoBehaviour
  9. {
  10. // 替换为你的 DeepSeek API key
  11. private string apiKey = "sk-d17be4a259504db3825c8d20d463dddd";
  12. private string apiUrl = "https://api.deepseek.com/chat/completions";
  13. // Unity UI 元素
  14. public TMP_InputField userInputField;
  15. public TextMeshProUGUI chatOutputText;
  16. // 用于存储对话历史
  17. private List<Dictionary<string, string>> messages = new List<Dictionary<string, string>>();
  18. void Start()
  19. {
  20. // 初始化系统消息
  21. messages.Add(new Dictionary<string, string> { { "role", "system" }, { "content", "You are a helpful assistant." } });
  22. }
  23. public void OnSendButtonClicked()
  24. {
  25. string userMessage = userInputField.text;
  26. if (string.IsNullOrEmpty(userMessage)) return;
  27. // 添加用户消息到对话历史
  28. messages.Add(new Dictionary<string, string> { { "role", "user" }, { "content", userMessage } });
  29. // 调用 DeepSeek API
  30. StartCoroutine(CallDeepSeekAPI());
  31. }
  32. private IEnumerator CallDeepSeekAPI()
  33. {
  34. // 创建请求数据
  35. var requestData = new
  36. {
  37. model = "deepseek-chat",
  38. messages = messages,
  39. stream = false
  40. };
  41. string jsonData = JsonConvert.SerializeObject(requestData);
  42. // 创建 UnityWebRequest
  43. UnityWebRequest request = new UnityWebRequest(apiUrl, "POST");
  44. byte[] bodyRaw = Encoding.UTF8.GetBytes(jsonData);
  45. request.uploadHandler = new UploadHandlerRaw(bodyRaw);
  46. request.downloadHandler = new DownloadHandlerBuffer();
  47. request.SetRequestHeader("Content-Type", "application/json");
  48. request.SetRequestHeader("Authorization", "Bearer " + apiKey);
  49. // 发送请求
  50. yield return request.SendWebRequest();
  51. if (request.result == UnityWebRequest.Result.Success)
  52. {
  53. // 解析响应
  54. var response = JsonConvert.DeserializeObject<DeepSeekResponse>(request.downloadHandler.text);
  55. string botMessage = response.choices[0].message.content;
  56. // 显示响应
  57. chatOutputText.text += "\nAI: " + botMessage;
  58. // 添加 AI 消息到对话历史
  59. messages.Add(new Dictionary<string, string> { { "role", "assistant" }, { "content", botMessage } });
  60. }
  61. else
  62. {
  63. Debug.LogError("Error: " + request.error);
  64. }
  65. }
  66. [System.Serializable]
  67. public class DeepSeekResponse
  68. {
  69. public Choice[] choices;
  70. }
  71. [System.Serializable]
  72. public class Choice
  73. {
  74. public Message message;
  75. }
  76. [System.Serializable]
  77. public class Message
  78. {
  79. public string content;
  80. }
  81. }
  1. 处理用户输入
    你需要在Unity中创建一个用户界面(UI),用于接收用户输入。这可以通过Unity的UI系统来实现,例如使用InputField组件来获取文本输入。

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/878714
推荐阅读
相关标签
  

闽ICP备14008679号