企业级Java项目与大模型(AI)的结合正在改变传统企业应用的开发模式,主要应用场景包括:
- 智能客服系统:基于大模型的对话能力构建企业级客服解决方案
电商平台:处理商品咨询、订单查询、退换货等问题
金融服务:解答开户流程、理财产品、贷款审批等问题
政务服务:提供政策解读、办事指南、预约服务等
企业服务:解决产品使用、技术支持、账户管理等需求
框架

模型

电商平台智能客服系统
知识库处理
text
knowledge-base/
├── products/ # 商品知识
│ ├── electronics/ # 电子产品类
│ ├── clothing/ # 服装类
│ └── groceries/ # 食品类
├── orders/ # 订单相关
│ ├── payment.md # 支付问题
│ ├── shipping.md # 物流问题
│ └── returns.md # 退换货政策
└── policies/ # 平台政策
├── privacy.md # 隐私政策
└── terms.md # 服务条款
java
@Component
public class KnowledgeProcessor{
private final EmbeddingModel embeddingModel;
private final VectorStore vectorStore;
private final TextSplitter textSplitter;
public void processDocument(Path filePath,String category)throws IOException{
//1.读取文档内容
String content = Files.readString(filePath);
//2.文档分块
List<TextSegment> segments = textSplitter.split(Document.from(content,metadata(filePath,category)));
//3.生成嵌入向量
List<Embedding> embeddings = embeddingModel.embedAll(segments).content();
//4.存储到向量数据库
vectorStore.addAll(embeddings,segments);
}
private Map<String,String> metadata(Path filePath, String category) {
Map<String, String> metadata = new HashMap<>();
metadata.put("source", filePath.getFileName().toString());
metadata.put("category", category);
metadata.put("timestamp", Instant.now().toString());
return metadata;
}
}
业务代码
java
@RestController
@RequestMapping("/api/ai-chat")
public class ChatController {
private final AiChatService chatService;
@PostMapping
public ResponseEntity<ChatResponse> chat(
@RequestBody ChatRequest request,
@RequestHeader("X-User-Id") String userId){
request.setUserId(userId);
ChatResponse response = chatService.handleMessage(request);
return ResponseEntity.ok(response);
}
@PostMapping("/knowledge")
public ResponseEntity<String> uploadKnowledge(
@RequestParam("file") MultipartFile file,
@RequestParam(value = "category", required = false) String category) {
chatService.addKnowledge(file, category);
return ResponseEntity.ok("知识库更新中...");
}
}
java
@Service
public class AiChatService{
private final ChatLanguageModel chatModel;
private final OrderService orderService;
private final ProductService productService;
private final VectorStore vectorStore;
@Autowired
private AiChatService(
@Qualifier("deepSeekChatModel") ChatLanguageModel chatModel,
OrderService orderService,
ProductService productService,
VectorStore vectorStore){
this.chatModel = chatModel;
this.orderService = orderService;
this.productService = productService;
this.vectorStore = vectorStore;
}
public ChatResponse handleMessage(ChatRequest request){
//意图识别
Intent intent = detectIntent(request.getMessage());
//根据意图处理
switch(intent.getType()) {
case PRODUCT_QUERY:
return handleProductQuery(intent, request);
case ORDER_QUERY:
return handleOrderQuery(intent, request);
case RETURN_EXCHANGE:
return handleReturnRequest(intent, request);
default:
return handleGeneralQuery(request);
}
}
private Intent detectIntent(String message){
//使用大模型进行意图识别
String prompt = """
请分析以下用户问题的意图,从以下类型中选择:
- PRODUCT_QUERY: 商品相关问题
- ORDER_QUERY: 订单相关问题
- RETURN_EXCHANGE: 退换货问题
- GENERAL: 其他问题
用户问题: %s
只需返回意图类型:
""".formatted(message);
String intentStr = chatModel.generate(prompt).trim();
return new Intent(IntentType.valueOf(intentStr))
}
//-------------------根据意图处理具体的问题------------------
private ChatResponse handleProductQuery(Intent intent,ChatRequest request){
//提取商品ID或名称
String productPrompt = """
从以下用户问题中提取商品ID或名称:
问题: %s
返回格式: {"id":"","name":""}
""".formatted(request.getMessage());
JsonNode productInfo = parseJson(chatModel.generate(productPrompt));
// 查询商品服务
Product product = null;
if (productInfo.has("id") && !productInfo.get("id").asText().isEmpty()) {
product = productService.getProductById(productInfo.get("id").asText());
} else if (productInfo.has("name")) {
product = productService.searchProduct(productInfo.get("name").asText());
}
// 构建响应
if (product != null) {
String response = """
商品信息:
名称: %s
价格: %.2f
库存: %d
规格: %s
""".formatted(
product.getName(),
product.getPrice(),
product.getStock(),
product.getSpecifications());
return new ChatResponse(response, List.of(
"购买链接", "类似商品", "用户评价"));
} else {
return new ChatResponse("未找到相关商品信息", Collections.emptyList());
}
}
private ChatResponse handleOrderQuery(Intent intent, ChatRequest request) {
// 提取订单号
String orderPrompt = """
从以下用户问题中提取订单号:
问题: %s
只需返回订单号:
""".formatted(request.getMessage());
String orderId = chatModel.generate(orderPrompt).trim();
// 查询订单服务
Order order = orderService.getOrderDetails(orderId, request.getUserId());
if (order != null) {
String response = """
订单状态: %s
商品: %s x%d
总金额: %.2f
物流: %s
""".formatted(
order.getStatus(),
order.getProductName(),
order.getQuantity(),
order.getTotalAmount(),
order.getShippingInfo());
return new ChatResponse(response, List.of(
"退货申请", "物流详情", "联系客服"));
} else {
return new ChatResponse("未找到相关订单信息", Collections.emptyList());
}
}
}
测试用例
java
@Test
public void testProductQuery(){
ChatRequest request = new ChatRequest();
request.setMessage("iPhone 13有货吗?多少钱?");
request.setUserId("test_user_1");
ChatResponse response = chatService.handleMessage(request);
assertNotNull(response.getResponse());
assertTrue(response.getResponse().contains("iPhone 13"));
assertTrue(response.getResponse().contains("价格"));
assertFalse(response.getResponse().contains("未找到"));
}
@Test
public void testOrderQuery() {
// 先创建测试订单
Order testOrder = createTestOrder("test_user_1");
ChatRequest request = new ChatRequest();
request.setMessage("我的订单" + testOrder.getId() + "到哪了?");
request.setUserId("test_user_1");
ChatResponse response = chatService.handleMessage(request);
assertNotNull(response.getResponse());
assertTrue(response.getResponse().contains(testOrder.getId()));
assertTrue(response.getResponse().contains("物流"));
}
金融平台智能客服系统
知识库目录结构
txt
financial-knowledge/
├── account-opening/
│ ├── personal.md--------个人开户文档
│ ├── corporate.md
│ └── foreigner.md
├── wealth-management/
│ ├── fixed-income.md
│ ├── equity.md
│ ├── structured-products.md------理财产品文档
│ └── risk-disclosure.md
├── loans/
│ ├── mortgage.md
│ ├── personal-loan.md
│ └── business-loan.md
└── regulations/
├── aml.md
└── kyc.md
markdown
---
category: 账户开立
subcategory: 个人账户
effective_date: 2023-10-01
risk_level: R1
---
# 个人银行账户开立指南
## 所需材料
### 基本材料
- 中国大陆居民身份证原件
- 实名认证手机号(需本人使用超过6个月)
### 补充材料(视情况)
- 居住证明(水电费账单等)
- 收入证明(工资流水/纳税证明)
## 办理流程
1. **线上预约**:通过手机银行APP预约办理时段
2. **网点办理**:携带材料到指定网点
3. **面签确认**:签署开户协议
4. **账户激活**:初始密码函将通过EMS寄送
## 费用标准
- 借记卡工本费:¥10
- 首年账户管理费:免收
- 网银U盾:¥30(可选)
## 注意事项
- 每人同类型账户限开3个
- 境外转账需单独申请权限
markdown
---
category: 理财产品
subcategory: 结构性存款
risk_level: R3
yield_range: 1.5%-4.2%
min_amount: ¥50000
---
# 结构性存款产品说明
## 产品特点
- **保本浮动收益**:本金保障,收益挂钩标的资产表现
- **期限灵活**:7天至1年期可选
- **标的资产**:SHIBOR利率/黄金价格/股指
## 风险揭示
- 市场风险:标的资产波动影响最终收益
- 流动性风险:期限内不可提前赎回
- 汇率风险:外币产品受汇率波动影响
## 适合客户
- 风险承受能力:平衡型(R3)及以上
- 投资目标:稳健增值
- 投资经验:需有6个月以上理财产品购买经验
## 购买流程
1. 风险测评(需达到R3)
2. 产品说明书阅读确认
3. 资金划转(支持活期账户直接购买)
java
/**
基于知识库的理财知识问答
*/
@Service
public class WealthManagementService{
private final VectorStore vectorStore;
private final ChatLanguageModel chatModel;
private static final String PROMPT_TEMPLATE = """
你是一名专业的理财顾问,请根据以下知识库内容和用户问题,
用专业但易懂的语言回答问题。如果涉及收益率,必须注明"历史业绩不代表未来表现"。
相关知识:
%s
用户问题:
%s
回答要求:
- 包含产品风险等级(R1-R5)
- 注明起购金额
- 列出类似产品比较(如适用)
""";
public String answerQuextion(String question,String customerRiskTolerance){
//1.向量检索
List<TextSegment> relevantDocs = vectorStore.findRelevant(question,3);
//2.风险适配过滤
List<TextSegment> filteredDocs = filterByRiskLevel(relevantDocs,customerRiskTolerance);
//3.构建Prompt
String context = filteredDocs.stream()
.map(TextSegment::text)
.collect(Collectors.joining("\n\n"));
String prompt = PROMPT_TEMPLATE.formatted(context, question);
//4.调用模型
return chatModel.generate(prompt);
}
private List<TextSegment> filterByRiskLevel(List<TextSegment> segments,String riskTolerance){
return segments.stream()
.filter(seg -> seg.metadata().get("risk_level").compareTo(riskTolerance) <= 0)
.collect(Collectors.toList());
}
}
后端
txt
financial-ai-service/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── finance/
│ │ │ ├── ai/
│ │ │ │ ├── controller/
│ │ │ │ ├── service/
│ │ │ │ └── rag/
│ │ │ ├── client/ # 外部服务调用
│ │ │ ├── config/ # 安全/模型配置
│ │ │ └── model/ # 数据实体
│ │ └── resources/
│ │ ├── knowledge/ # 知识库文档
│ │ └── application.yml
└── test/
└── java/
└── com/
└── finance/
└── ai/
├── service/
└── controller/
java
在这里插入代码片
java
@Service
@RequiredArgsConsturator
public class AccountService{
private final AccountClient accountClient;//远程调用其他服务模块
public String getAccountOpengingGuide(AccountType accountType){
AccountOpeningRequirements requirements = accountClient.getRequirements(accountType);
return """
开户所需材料:
1. 身份证明:%s
2. 地址证明:%s
3. 其他材料:%s
流程时效:%d个工作日
""".formatted(
requirements.getIdDocuments(),
requirements.getAddressProofs(),
requirements.getAdditionalDocuments(),
requirements.getProcessingDays()
);
}
}
java
@FeignClient(name = "account-service", url = "${service.account.url}")
public interface AccountClient {
@GetMapping("/api/account/open/requirements")
AccountOpeningRequirements getRequirements(
@RequestParam("accountType") AccountType accountType);
@PostMapping("/api/account/open/check")
VerificationResult checkDocuments(
@RequestBody DocumentCheckRequest request);
}
政务服务平台智能客服系统
业务需求梳理
政策解读:法律法规、地方政策、惠民措施等自动解析与问答
办事指南:2000+项政务服务事项的办理条件、材料清单、流程说明
预约服务:对接政务预约系统,实现线上预约、改约、取消
进度查询:办件状态实时跟踪与推送
智能分派:复杂问题自动转人工客服并分配至对应部门
知识库
txt
policy-knowledge/
├── GA/ # 公安部门
│ ├── 户籍管理/
│ │ ├── 户口迁移.md
│ │ └── 新生儿落户.md-----------新生儿落户办理指南
│ └── 出入境/
│ ├── 护照办理.md
│ └── 港澳通行证.md
├── RS/ # 人社部门
│ ├── 社保/
│ │ ├── 养老保险.md
│ │ └── 医疗保险.md
│ └── 就业/
│ ├── 失业登记.md
│ └── 创业补贴.md
└── common/ # 通用政策
├── 税收优惠.md
└── 疫情防控.md
markdown
---
title: 新生儿落户办理指南
department: GA
category: 户籍管理
effective_date: 2025-01-01
source: 《XX市户籍管理条例》(XX政发[2024]15号)
---
# 办理条件
1. 新生儿出生后一个月内
2. 父母至少一方为本市户籍
...
# 所需材料
- 出生医学证明原件及复印件
- 父母户口簿、身份证
...
java
/**
政策文档服务
*/
@Service
public class PolicyService{
private final VectorStore policyVectorStore;
private final ChatLanguageModel chatModel;
private static final String PROMPT_TEMPLATE = """
你是一名专业的政务政策解读助手,请根据以下政策条款和用户问题,
用简明易懂的语言回答。回答必须符合以下要求:
1. 标明政策出处(文件名+文号)
2. 解释专业术语
3. 提供办理指引(如适用)
相关政策:
%s
用户问题:
%s
""";
public PolicyResponse answerQuestion(String question,String department){
//1.向量检索(按部门过滤)
List<TextSegment> relevantDocs = policyVectorStore.findRelevant(
quesion,
3,
MetadataFilter.departmentEq(department)
);
//2.构建Prompt
String context = relevantDocs.stream()
.map(seg -> seg.text() + "\n出处:" + seg.metadata().get("source"))
.collect(Collectors.joining("\n\n"));
String prompt = PROMPT_TEMPLATE.formatted(context, question);
// 3. 调用模型
String answer = chatModel.generate(prompt);
return new PolicyResponse(
answer,
relevantDocs.stream()
.map(seg -> seg.metadata().get("source"))
.collect(Collectors.toList()));
}
}
txt
gov-ai-service/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── gov/
│ │ │ ├── ai/
│ │ │ │ ├── controller/
│ │ │ │ ├── service/
│ │ │ │ └── rag/
│ │ │ ├── client/ # 政务系统对接
│ │ │ ├── config/ # 安全/模型配置
│ │ │ └── model/ # 数据实体
│ │ └── resources/
│ │ ├── knowledge/ # 政策知识库
│ │ └── application.yml
└── test/
└── java/
└── com/
└── gov/
└── ai/
├── service/
└── controller/
企业服务平台智能客服系统
产品使用支持:软件操作指南、功能说明、最佳实践
技术问题排查:错误代码解析、系统兼容性、性能优化
账户管理:注册/登录问题、权限配置、安全设置
计费咨询:套餐说明、发票开具、续费升级
API支持:接口文档查询、调试指导、SDK使用
知识库
txt
enterprise-knowledge/
├── product/
│ ├── user-guide/ # 用户指南
│ ├── release-notes/ # 版本发布说明
│ └── faq/ # 常见问题
├── tech-support/
│ ├── error-codes/ # 错误代码解析
│ ├── troubleshooting/ # 故障排查指南
│ └── best-practices/ # 最佳实践
├── account/
│ ├── onboarding/ # 新手指南
│ ├── security/ # 安全设置
│ └── billing/ # 计费说明
└── api/
├── rest/ # REST API文档
├── sdk/ # SDK使用指南
└── webhook/ # Webhook配置
markdown
---
title: "文件上传失败处理"
type: TECH_SUPPORT
product: "企业文件服务"
version: ["v2.1+"]
keywords: ["HTTP 413", "文件大小限制", "上传超时"]
---
# 常见错误场景
## 错误码 413
- **原因**:请求实体超过服务器限制
- **解决方案**:
1. 检查当前套餐的文件大小限制
2. 使用分片上传API
3. 联系销售升级套餐
## 错误码 504
- **原因**:上传超时
- **解决方案**:
1. 减小单个文件大小
2. 优化网络连接
3. 设置合理的超时参数
# 相关API
- [分片上传API](/api/v2/uploads)
- [套餐查询API](/api/v2/plan)
java
// TechSupportService.java
@Service
@RequiredArgsConstructor
public class TechSupportService {
private final VectorStore vectorStore;
private final ChatLanguageModel chatModel;
private final ErrorCodeRepository errorCodeRepo;
public TechSupportResponse diagnoseIssue(String errorMessage, String stackTrace) {
// 1. 错误码识别
Optional<ErrorCode> errorCode = extractErrorCode(errorMessage);
// 2. 知识库检索
List<TextSegment> solutions = vectorStore.findRelevant(
errorMessage + " " + stackTrace, 3,
MetadataFilter.typeEq("TECH_SUPPORT"));
// 3. 构建Prompt
String prompt = buildDiagnosisPrompt(errorMessage, stackTrace, solutions);
// 4. 调用模型
String diagnosis = chatModel.generate(prompt);
return new TechSupportResponse(
diagnosis,
solutions.stream()
.map(TextSegment::text)
.collect(Collectors.toList()),
errorCode.map(ErrorCode::getReferenceUrl).orElse(null));
}
private String buildDiagnosisPrompt(String error, String stack, List<TextSegment> solutions) {
return """
你是一名资深技术支持工程师,请根据以下错误信息和解决方案,给出诊断建议:
错误信息:
%s
调用堆栈:
%s
已知解决方案:
%s
回答要求:
1. 分析最可能的根本原因
2. 提供分步解决步骤
3. 如问题复杂建议联系支持团队
""".formatted(
error,
stack,
solutions.stream()
.map(TextSegment::text)
.collect(Collectors.joining("\n- ")));
}
}
java
// ApiSupportService.java
@Service
public class ApiSupportService {
private final ApiDocRepository apiDocRepo;
private final ChatLanguageModel chatModel;
public ApiSupportResponse answerApiQuestion(String query, String apiVersion) {
// 1. 检索API文档
List<ApiDocumentation> relevantDocs = apiDocRepo
.findByContentContainingAndVersion(query, apiVersion);
// 2. 生成代码示例
String codeExample = generateCodeExample(query, relevantDocs);
// 3. 构建响应
return new ApiSupportResponse(
generateExplanation(query, relevantDocs),
codeExample,
relevantDocs.stream()
.map(ApiDocumentation::getEndpoint)
.collect(Collectors.toList()));
}
private String generateCodeExample(String query, List<ApiDocumentation> docs) {
String prompt = """
根据以下API文档,为问题"%s"生成%s代码示例:
文档内容:
%s
要求:
1. 包含必要的认证头
2. 处理错误情况
3. 添加注释说明
""".formatted(
query,
docs.get(0).getLanguage(),
docs.stream()
.map(ApiDocumentation::getContent)
.collect(Collectors.joining("\n\n")));
return chatModel.generate(prompt);
}
}