一、背景

传统业务系统:

用户
 |
Web/App
 |
业务系统
 |
数据库

所有逻辑由代码固定实现。

例如贷后系统:

用户查询:

“帮我分析一下客户张三为什么逾期?”

传统方式:

开发接口:

/loan/query
/repay/query
/collection/query

前端调用多个接口。


引入 Agent 后:

用户
 |
AI Agent
 |
-------------------------
|          |            |
订单查询   还款查询     催收查询
Tool       Tool         Tool
 |
MySQL

用户只需要描述目标:

分析客户逾期原因,并给出催收建议

Agent 自动:

  1. 理解任务
  2. 判断需要哪些数据
  3. 调用业务接口
  4. 汇总分析
  5. 输出结果

二、整体架构设计

企业级 Agent 架构

                         用户
                          |
                          |
                    Chat Interface
                          |
                          |
                 +----------------+
                 |   AI Agent     |
                 +----------------+
                          |
        ---------------------------------
        |               |               |
    Prompt          Memory           Planner
        |               |               |
        |               |               |
        -------- Tool Calling ----------
                         |
        ----------------------------------
        |                |               |
   业务API Tool     RAG知识库       数据库Tool
        |                |               |
    Spring服务       Milvus          MySQL

三、技术选型

后端

Java 17
Spring Boot 3.x
LangChain4j
MyBatis Plus
Redis
MySQL

AI

模型:

GPT-4.1
Claude
通义千问
DeepSeek

向量数据库

选择:

Milvus

保存:

  • 合同规则
  • 风控政策
  • 催收流程
  • 产品说明

四、创建 Spring Boot Agent 项目

Maven:

<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-spring-boot-starter</artifactId>
    <version>1.0.0</version>
</dependency>


<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-open-ai-spring-boot-starter</artifactId>
</dependency>

五、定义 Agent 接口

核心:

@AiService
public interface LoanAgent {


    String chat(String message);

}

看起来像普通接口。

但是:

调用:

loanAgent.chat(
 "分析客户张三逾期原因"
);

背后:

实际上调用大模型。


六、接入大模型

application.yml

langchain4j:
  open-ai:
    chat-model:
      api-key: sk-xxxx
      model-name: gpt-4.1
      temperature: 0.2

七、核心能力1:Function Calling

这是 Agent 最关键能力。

定义业务工具

例如:

查询贷款信息:

@Component
public class LoanTool {


    @Tool("查询客户贷款信息")
    public LoanInfo queryLoan(
            String customerName
    ){

        return loanService.queryByName(
             customerName
        );

    }

}

数据库:

select *
from loan_order
where customer_name='张三';

返回:

{
 "loanAmount":100000,
 "status":"逾期",
 "days":45
}

此时用户:

张三为什么逾期?

Agent:

自己判断:

需要贷款数据

调用:
queryLoan("张三")

这就是 Agent。


八、多个业务 Tool

真实企业一般不是一个工具。

例如:

还款查询

@Component
public class RepayTool {


 @Tool("查询客户还款计划")
 public List<RepayPlan> queryRepay(
     String sn
 ){

    return repayMapper.selectList(
       sn
    );

 }

}

催收记录

@Component
public class CollectionTool {


 @Tool("查询催收记录")
 public List<Record> records(
      String customerId
 ){

     return mapper.list(customerId);

 }

}

最终:

Agent拥有:

订单Tool

还款Tool

催收Tool

合同Tool

风控Tool

九、核心能力2:RAG知识库

为什么需要RAG?

因为:

大模型不知道你的公司规则。

例如:

用户:

什么情况可以拖车?

GPT不知道。

所以:

把公司制度放入知识库。


文档处理流程

PDF
 |
文本解析
 |
切片
 |
Embedding
 |
向量数据库
 |
检索
 |
LLM回答

文档切片

例如:

合同规则:

第1条...
第2条...
第3条...

切:

chunk1

chunk2

chunk3

查询

用户:

客户逾期60天可以拖车吗?

检索:

拖车规则
逾期规则
合同条款

组合:

问题 + 相关知识

↓

LLM

↓

回答

十、Memory记忆

没有Memory:

用户:
我的客户张三

AI:
不知道张三

加入:

Redis Memory

结构:

conversationId

    |
    |
Redis

{
 user:"张三",
 loan:"100000",
 overdue:"45"
}

代码:

@Bean
ChatMemory chatMemory(){

    return MessageWindowChatMemory
        .withMaxMessages(20);

}

十一、完整业务流程

用户:

分析客户张三逾期原因

Agent:

第一步:

理解:

需要客户贷款信息
需要还款记录
需要催收记录

调用:

LoanTool

↓

RepayTool

↓

CollectionTool

得到:

{
 loan:100000,
 overdue:45,
 history:"多次联系"
}

再推理:

输出:

客户逾期原因:

1.
资金周转困难

2.
近期收入下降


建议:

1.
电话沟通

2.
制定延期方案

十二、生产环境架构

                 Nginx

                   |

              Spring Boot

                   |

              Agent Service

                   |

       -------------------------

       |          |            |

    LLM API     Redis       MySQL

                  |

              Memory


                   |

             Vector DB

              Milvus

十三、生产必须考虑的问题

1. 权限控制

不能:

AI直接:


select *
from user;

必须:

Tool层控制。

例如:

@Tool
public Loan query(){

   checkPermission();

}

2. Token成本控制

增加:

缓存

问题
 |
Redis
 |
命中直接返回

3. 幻觉控制

必须:

RAG + Tool

不要:

让模型自由回答。


4. Agent日志

记录:

用户问题

调用工具

参数

返回结果

最终回答

方便审计。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐