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

【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,期待他的继续强大。


http://www.kler.cn/a/547118.html

相关文章:

  • 【ARM】JTAG接口介绍
  • 图的邻接表实现代解析【数据结构】
  • 深度整理总结MySQL——Expalin指南(二)
  • WEB安全--SQL注入--INTO OUTFILE
  • 03-微服务01(服务拆分、RestTemplate,nacos、OpenFeign、日志)
  • 软考-系统架构设计师(月更版)
  • 青少年编程与数学 02-009 Django 5 Web 编程 12课题、表单处理
  • 大载重无人机树木、竹子山林吊运技术详解
  • 【Oracle篇】浅谈执行计划中的多表连接(含内连接、外连接、半连接、反连接、笛卡尔连接五种连接方式和嵌套、哈希、排序合并三种连接算法)
  • iOS主要知识点梳理回顾-4-运行时类和实例的操作
  • Maven 引入外部依赖
  • 用什么办法能实现ubuntu里面运行的自己开发的python程序能自动升级。
  • MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 基础篇 part 13
  • 26、深度学习-自学之路-NLP自然语言处理-理解加程序,怎么把现实的词翻译给机器识别。
  • 深入理解 Rust 的迭代器:从基础到高级
  • 【leetcode】T3169
  • Django 操作表中的数据(增删改查)
  • 【Linux】永久export定义一个环境变量
  • Dify报错model schema not found
  • Java--IO流详解(下)--相互转换(含Properties详解)