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

Unity AI-使用Ollama本地大语言模型运行框架运行本地Deepseek等模型实现聊天对话(二)

一、使用介绍

官方网页:Ollama官方网址

中文文档参考:Ollama中文文档

相关教程:Ollama教程

使用版本:Unity 2022.3.53f1c1、Ollama 0.6.2

示例模型:llama3.2

二、运行示例

三、使用步骤

1、创建Canvas面板

具体层级如下

主要组件:发送按钮、输入框、滚动框

2、编写代码Webrequest

using System;
using System.Collections;
using System.Text;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
using Button = UnityEngine.UI.Button;public class Webrequest : MonoBehaviour
{//curl http://localhost:11434/api/generate -H "Content-Type: application/json" -d "{ \"model\": \"llama3\", \"prompt\": \"你好\", \"stream\": false }"public Text text;public InputField input;public Button sendBtn;public ScrollRect scrollRect;void Start(){sendBtn.onClick.AddListener(OnSend);}private void Update(){if (Input.GetKeyDown(KeyCode.KeypadEnter) || Input.GetKeyDown(KeyCode.Return)){OnSend();}scrollRect.content.sizeDelta = text.rectTransform.sizeDelta;}void OnSend(){if (input.text != ""){text.text += $"你:{input.text}\n\n";scrollRect.verticalScrollbar.value = -0.1f;StartCoroutine(SendOllamaRequest(input.text));input.text = "";}else{text.text += "不能为空\n\n";scrollRect.verticalScrollbar.value = -0.1f;}}IEnumerator SendOllamaRequest(string value){// 目标 URLstring url = "http://localhost:11434/api/generate";string jsonData = $@"{{""model"": ""llama3.2"",""prompt"": ""{value}"",""stream"": false}}";// 创建 POST 请求UnityWebRequest request = new UnityWebRequest(url, "POST");byte[] bodyRaw = Encoding.UTF8.GetBytes(jsonData);request.uploadHandler = new UploadHandlerRaw(bodyRaw);request.downloadHandler = new DownloadHandlerBuffer();// 设置请求头request.SetRequestHeader("Content-Type", "application/json"); yield return request.SendWebRequest();// 处理响应if (request.result != UnityWebRequest.Result.Success){Debug.LogError($"Error: {request.error}");}else{string responseJson = request.downloadHandler.text;Debug.Log("Response: " + responseJson);// 解析 JSON 响应(示例)OllamaResponse response = JsonUtility.FromJson<OllamaResponse>(responseJson);// 访问字段Debug.Log($"模型: {response.model}");Debug.Log($"回复: {response.response}");text.text += "智能体:" + response.response + "\n\n";Debug.Log($"生成耗时: {response.eval_duration / 1e12} 秒");scrollRect.verticalNormalizedPosition = -0.1f;}}
}

3、将代码拖到场景中

将场景对应的对象拖动到Webrequest上

4、运行场景

输入对话内容,点击发送,等待AI回应

相关文章:

  • 线性代数与数据学习
  • k8s基本概念-YAML
  • flume----初步安装与配置
  • 9.Three.js中 ArrayCamera 多视角相机详解+示例代码
  • Dockerfile讲解与示例汇总
  • C++ 解决一个简单的图论问题 —— 最小生成树(以 Prim 算法为例)
  • <uniapp><插件><UTS>在uniapp中,创建自己的插件并发布到uni插件市场
  • Ubuntu安装SRS流媒体服务
  • 人智交互中的AI世代
  • 2025医疗领域AI发展五大核心趋势与路线研究
  • List--链表
  • C++ 表达式求值优先级、结合律与求值顺序(五十九)
  • 维度的语法:从列表的散文到 ndarray 的十四行诗
  • PostgreSQL oracle_fdw 扩展解析
  • 【DeepSeek认证】最好的MODBUS调试工具
  • 【JAVA ee初阶】多线程(3)
  • 设计模式(状态模式)
  • 2025年- H11-Lc118-53.最大子数组和(普通数组)---java版
  • WPF 程序监控硬件设备状态变化的实现方案
  • MaxScript二维图形布尔(并)运算
  • 专访丨青年作家杜梨:以动物的视角去观察这个世界
  • 科学时代重读“老子”的意义——对谈《老子智慧八十一讲》
  • 为何未来的福利国家必须绿色且公平
  • 广东一公司违规开展学科培训被罚没470万,已注销营业执照
  • 《沙尘暴》:用贴近生活的影像和表演拍摄悬疑剧
  • 新干式二尖瓣瓣膜国内上市,专家:重视瓣膜病全生命周期管理