JBoltAI_SpringBoot如何区分DeepSeek R1深度思考和具体回答的内容(基于Ollama)?
当我们用Ollama运行DeepSeek R1模型,向它提问时,会发现它的回答里是有think标签的
如果我们直接将Ollama的回复用于生产环境,肯定是不行的,对于不同的场景,前面输出的一堆内容,可能并不需要在客户端展示,对于用户体验来说,一个莫名其妙的标签包裹着一大堆文字,看起来也是不那么友好的。
来看一下我们的JBoltAI-SpringBoot版AI开发框架是怎么解决这个问题的。
-
首先我们加载一下Ollama DeepSeek R1大模型资源(资源加载后可以在项目中被重复调用,我们的框架也支持近20种主流的大模型厂商、平台)
ResourceCenter.registerOllamaAI("http://192.168.31.14:11434/api/chat", "deepseek-r1:7b");
-
调用大模型
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
回调可以自由处理大模型返回 的正式回答内容。
框架对于所有支持的大模型,都提供了统一的调用方式,不需要开发者关心底层逻辑,不需要关系不同大模型的接口差异和参数差异,极大的降低了开发者的开发难度。
-
看一下执行效果:
欢迎大家尝试使用SpringBoot版JBoltAI框架,它会是你开发AI应用的最强大的助手。