企业级Java项目和大模型结合场景(智能客服系统:电商、金融、政务、企业)

企业级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);
    }
}
相关推荐
桦说编程2 小时前
Java 中如何创建不可变类型
java·后端·函数式编程
lifallen2 小时前
Java Stream sort算子实现:SortedOps
java·开发语言
IT毕设实战小研2 小时前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
没有bug.的程序员3 小时前
JVM 总览与运行原理:深入Java虚拟机的核心引擎
java·jvm·python·虚拟机
甄超锋4 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
阿华的代码王国4 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
Zyy~4 小时前
《设计模式》装饰模式
java·设计模式
青云交4 小时前
Java 大视界 -- 基于 Java 的大数据可视化在城市交通拥堵治理与出行效率提升中的应用(398)
java·大数据·flink·大数据可视化·拥堵预测·城市交通治理·实时热力图
CHEN5_025 小时前
【Java基础面试题】Java基础概念
java·开发语言