软件工程师罗小东,多年架构和平台设计经验,目前在研究平台与新技术结合中。
概述
DeepSeekR1使用之后,发现推理能力效果比较突出,费用也比较低,之前是基于普通大模型的推理方式估计也要升级,这里写的是前期的设计思路,留个复盘稿。
推理过程主要使用的是ReAct和Cot两个方式,另外加上交互形式使用约定思维修改模式(Thinking Claude开源项目),也达到一定的推理效果,Cot相对比较简单,这里主要介绍的是ReAct的结合,从下面的维度和例子进行阐述:
-
对话结合方式和Prompt设计
-
框架设计和代码设计及工具设计
-
频道对话效果演示
原来基于一些论文和开源项目的参考,每个架构师设计不一,我有我思。
设计思路
这里考虑到通用型,不会使用过多的大模型特性FunctionCall,只是基于Prompt和大模型的推理,前期也会有一些的限制(解析准确性),但是目前的模型发展、推理能力的加强和使用情况,基本上限制微乎其微。
对话结合方式和Prompt设计
看过crewAI的同学会看到使用的是langchian,开始也是考虑使用这个,但是发现langchian4j这方面机制还不怎么成熟,另外解析方式也不是自己想要的类型,基于 java和groovy自己写了框架,主要是:
-
对话解析
-
工具使用
-
对话结合
下面是对话的Prompt设计,初始模版稿:

过程会根据对话结果进行不断的内容调整,以下为处理逻辑:

思考模式放在thought字段,以finalAnser作为结果字段输出,循环按约定次数或是自定义次数。
工具也一样的解析注解形式,通过groovy编写工具然后提交给Prompt,下面是工具的例子:

大部分目前基本上都是类似,只是说使用哪种语言作为主要设计语言和方案。
那最后结合起来的方式,形成角色设计界面,做目标和初始设计,然后结合自定义工具。

在这个过程,基本上可以定义好我们想要的角色。到这步很多情况下对话推理已经达到了。
但考虑更偏向于人类思维,结合了Claude开源项目的约束设计,这里主要放在 promp的system中,这个是一个固定的模式,达到接近于人类的思维逻辑,加与不加效果目前没做过对比,是先加上。
框架设计和代码设计及工具设计
下面是一些设计的思路和代码,会包含有chatbox框,还有ReAct的解析类,还有工具类的设计约束。工具类的注解类设计,还有方式设计:

一个关于查询订单、演示demo,客户时间预约的工具类的例子,下面是客户预约的代码:

角色过程中还会接入记忆能力和知识库,这个是跟其他有些不一样的地方,关于记忆处理方式,这里不做过多的介绍。
这里偏向设计,代码部分不做过多的阐述。
频道对话效果演示
我们这里设计了两个角色:
-
通用查询的角色:可以通过搜索引擎来查询实时内容,比较常见的例子。
-
产品导购的角色:引到客户预约演示和查询订单的角色,也是通用型场景。
下面是通用查询的角色的查询方式,会自动去网络查询内容并返回结果分析:

定义了两个角色之后,把他们拉到一个频道做验证,下面是角色拉入频道 ,下面是导购的交互模拟:

从演示效果上的情况看,这个基本上能达到交互的效果,也有推理的场景,对话上还是有一定的推理体现。
总结
目前在使用的是qwen大模型,在测试过程中使用的是最为通用plus版本的模型能力,但是查看目前的o1和DeepSeek R1明显会有更好的效果,目前在研究接入和适配,也同样基于开源项目Agents-Flex(类似SpringAI)二次开发调试,以方便接入大模型规范。
以上为学习和研究大模型推理的应用场景和设计的一些思路参考,精力和思路有限,也期望有兴趣的同学可以互相交流。