【Unity】 HTFramework框架(六十)Assistant助手(在Unity中接入DeepSeek等AI语言大模型)
更新日期:2025年2月14日。
Github源码:[点我获取源码]
Gitee源码:[点我获取源码]
索引
- Assistant助手
- 安装Ollama
- 使用Assistant(在编辑器中)
- 打开Assistant
- 配置Assistant
- 使用Assistant
- 处理Assistant回复的内容
- 使用推理大模型
- 使用Assistant(在运行时)
- 用户发起问话
- Assistant回复
Assistant助手
Assistant
为通用AI助手,支持在编辑器
或运行时
调用DeepSeek
等AI语言大模型。
安装Ollama
为了方便演示Assistant
,我们使用相对简单的Ollama
本地部署大模型的方式,关于如何使用Ollama
部署AI大模型,这在网上有很详细的教程,而且非常简单,所以我便不再重复讲解了(当然,如果还是不会,你也可以直接问AI)。
使用Assistant(在编辑器中)
在编辑器
中使用Assistant
,可以帮助你解答一些代码问题或Unity引擎的知识,或直接生成代码。
打开Assistant
通过菜单HTFramework / ★ AI / Assistant打开Assistant
窗口(快捷键Alt + A
):
Assistant
窗口如下:
左侧显示会话历史记录
,右侧显示当前会话内容
,在下方的输入框中输入你的问题,点击发送消息(或按回车)
按钮就可以得到AI助手的解答。
比如随便乱问:
比如问点Unity的东西:
当然,并不是一开始就能使AI助手开始工作,我们必须先进行基本的配置。
配置Assistant
点击Assistant
窗口右上角的设置
按钮,打开配置界面:
配置界面如下:
1.大模型:使用的大模型名称(如果是调用Ollama大模型,则模型参数也必须带上,也即是后面的16b),点击后面的
选择
按钮可快速切换一些预制的大模型(主要是DeepSeek的),当然你也可以手输任何大模型名称;
2.流式请求:大模型生成文本时,采用流式响应;
3.大模型根地址:也即是大模型接口的根级路径,我这里使用Ollama本地部署的,所以直接填localhost
(Ollama默认端口为11434
);
4.API接口:访问的大模型API接口(Ollama默认为/api/generate
);
5.超时时长:单次请求超时时长;
6.多轮对话最大轮数:对话采用多轮对话形式,表示最多7条历史记录会被回传(AI结合对话历史分析问题会更加准确);
7.打印相关日志:主要用于调试时打印相关日志(注意,如果AI生成的内容太长,你的控制台可能会被刷屏);
8.显示推理过程:使用DeepSeek-R1
等推理模型时,会同时显示其推理过程;
9.RunInOllama:点击即可直接调用Ollama启动当前设置的大模型,如果该模型未下载,将会自动下载(仅限Ollama本地部署的情况)。
使用Assistant
配置完成并测试通过后,我们便可以畅通无阻的使用Assistant
了,除了直接在输入框中输入任意问题,你还可以在编辑器中将你不太熟悉的组件,发给Assistant
进行解答(只需右击组件,选择Ask AI Assistant):
等待AI回复:
处理Assistant回复的内容
由于Assistant
回复的内容为Markdown
格式的文本,直接看起来不是很友好,轻量级的Markdown
解析库正好有现成的,但需要引入HTModuleManager模块。
然后点击如下按钮,既可以在通用Markdown
查看窗口中预览内容:
通用Markdown
查看窗口:
使用推理大模型
使用DeepSeek-R1
等推理模型时,AI的回复内容会包含推理过程:
使用Assistant(在运行时)
在运行时
使用Assistant
也很简单,我直接贴出代码。
用户发起问话
public class Test : HTBehaviour
{
protected override void Awake()
{
base.Awake();
AskAssistant();
}
public void AskAssistant()
{
//ChatSession 即代表一个会话,其包含历史记录并自动回传
ChatSession chatSession = new ChatSession("0", "新的会话");
chatSession.Data.Model = "deepseek-r1:14b";
chatSession.Data.Stream = true;
chatSession.BaseAddress = "http://localhost:11434";
chatSession.API = "/api/generate";
chatSession.Timeout = 60;
chatSession.Round = 7;
chatSession.IsLogInEditor = false;
//向AI说话
chatSession.UserSpeak("你好呀!", OnReply, OnEnd);
}
/// <summary>
/// AI回复(如果是流式请求,则重复回调此方法)
/// </summary>
private void OnReply(string content)
{
Debug.Log("AI回复:" + content);
}
/// <summary>
/// AI回复结束
/// </summary>
/// <param name="success"></param>
private void OnEnd(bool success)
{
Debug.Log("AI回复完成。");
}
}
Assistant回复
这里为流式请求:
想要管理多个会话的话,就维护一个ChatSession
数组就可以了。
最后,看好DeepSeek
,期待他的继续强大。