结合大语言模型灵活性和规则引擎可预测性


大语言模型LLM系统(如ChatGPT)特点:灵活且惊人,但不可靠。
规则引擎(如Drools)特点:稳定,可预测性、可跟踪性。

使用langchain4j将大语言模型与业务规则引擎结合起来。

训练有素的深度学习模型为您提供的功能和灵活性实际上是无限的,但通常,至少在应用程序的某些部分,您需要的是更有限的控制,以使其遵守您的业务领域和规则。

为什么不混合两个截然不同且互补的人工智能分支,如深度学习和符号推理呢?
以抵押贷款为例,按照银行严格的业务规则所要求的企业严谨性来实施应用程序,但可以以最人性化的方式进行查询。

在这个非常简单的示例项目中,我们使用 Drools 这样的规则引擎来编码我们假想的银行用于评估抵押贷款申请的简单业务规则。通过 langchain4j 应用程序接口提供的抽象层,它与 ChatGPT 结合在一起,以便以最流畅、结构最简单的方式与我们冷冰冰、缺乏灵活性的业务规则进行交互。

运行
如果您想自己运行该项目,您需要将您的ChatGPT API 密钥传递给 Main 类。

当出现提示时,您可以首先尝试非常非正式地描述申请人,例如

> 马里奥是弗斯科家族的长子,在双子塔遇袭当天出生。现在他是一名软件工程师,年薪 25 万美元。

该提示被转发到 ChatGPT 并由 langchain4j 转换为Person 类的实例,该类是银行业务域的一部分,并由 Drools 用于执行业务规则评估。

Person { firstName = "Mario", lastName = "Fusco", birthDate = 2001-09-11, income = 250000 }

现在我们可以询问马里奥是否可以从我们的银行获得抵押贷款:

> 我们能为马里奥提供抵押贷款吗?

正如预期的那样,这次我们不想依赖 ChatGPT 令人惊叹但模糊的功能,而是简单地通过 Drools 应用银行的业务规则。为此,有必要注册它,特别是根据这些规则评估上述人员的方法,作为ChatGPT 必须用来回复此请求的工具。由于 Mario 的个人资料满足所有业务规则要求,答案将类似于:

是的,马里奥可以获得抵押贷款。