当我们用Ollama运行DeepSeek R1模型,向它提问时,会发现它的回答里是有think标签的

如果我们直接将Ollama的回复用于生产环境,肯定是不行的,对于不同的场景,前面输出的一堆内容,可能并不需要在客户端展示,对于用户体验来说,一个莫名其妙的标签包裹着一大堆文字,看起来也是不那么友好的。

来看一下我们的JBoltAI-SpringBoot版AI开发框架是怎么解决这个问题的。

  1. 首先我们加载一下Ollama DeepSeek R1大模型资源(资源加载后可以在项目中被重复调用,我们的框架也支持近20种主流的大模型厂商、平台)

    ResourceCenter.registerOllamaAI("http://192.168.31.14:11434/api/chat", "deepseek-r1:7b");
    1. 调用大模型

      JBoltAI.chat(AIModel.OLLAMA).prompt("你觉得AI未来发展方向会是什么")
              .onThinking((e, think, status) -> {
                  if (status == ThinkStatus.START) {
                      System.out.println("===== 思考开始 =============");
                  } else if (status == ThinkStatus.RUNNING) {
                      System.out.print(think);
                  } else if (status == ThinkStatus.COMPLETE) {
                      System.out.print(think);
                      System.out.println("===== 思考结束 =============");
                      System.out.println("===== 开始回答 =============");
                  }
              })
              .onSuccess((e, r) -> {
                  System.out.print(r.getContent());
              }).onFail((e, error) -> {
                  System.out.println("发生异常了,异常信息:" + error.getFullMsg());
              }).publish().await();

      使用JBoltAI 调用大模型能力是非常方便的,JBoltAI.chat() 就可以发起一个聊天事件,通过传入大模型类型,就可以自动从资源池中找到可用的资源供事件使用,通过prompt() 方法就可以方便的传入提示词,通过onThinking 回调,就可以自由处理深度思考的内容,通过onSuccess 回调可以自由处理大模型返回 的正式回答内容。

      框架对于所有支持的大模型,都提供了统一的调用方式,不需要开发者关心底层逻辑,不需要关系不同大模型的接口差异和参数差异,极大的降低了开发者的开发难度。

      1. 看一下执行效果:

        欢迎大家尝试使用SpringBoot版JBoltAI框架,它会是你开发AI应用的最强大的助手。

        Logo

        欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

        更多推荐