一、使用介紹
官方網頁: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回應