当前位置: 首页 > news >正文

Java调用DeepSeek-R1大模型实现商品订单信息提取

本文将详细介绍如何使用Java调用DeepSeek-R1大模型API,从自然语言文本中提取结构化商品订单信息的技术实现。

一、项目概述

在实际业务场景中,我们经常需要从用户输入的自然语言文本中提取结构化的商品订单信息。传统方法使用正则表达式或规则引擎,但面对复杂多变的文本格式时效果有限。本文介绍基于DeepSeek-R1大模型的智能解决方案,能够准确识别和提取商品信息。

二、技术架构

核心依赖

<!-- Gson用于JSON序列化/反序列化 -->
<dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.9</version>
</dependency><!-- org.json用于构建JSON对象 -->
<dependency><groupId>org.json</groupId><artifactId>json</artifactId><version>20231013</version>
</dependency>

项目结构

src/main/java/com/black/
└── DeepseekR1.java

三、核心代码实现

1. 主类与常量定义

public class DeepseekR1 {public static final Gson gson = new Gson();public static final String MaaS_KEY = "sk-"; // 替换为实际API密钥public static void main(String[] args) {String question = "一、你的角色是:商品订单信息提炼大师。\n"+ "二、你的任务是:结合输入内容,提炼商品订单信息,并严格按照此JSON格式返回...";useDeepSeek(question);}
}

2. API调用核心方法

public static void useDeepSeek(String question) {try {// 1. 创建HTTP连接URL url = new URL("http://maas-api.cn-huabei-1.xf-yun.com/v1/chat/completions");HttpURLConnection connection = (HttpURLConnection) url.openConnection();// 2. 配置请求参数connection.setRequestMethod("POST");connection.setRequestProperty("Content-Type", "application/json");connection.setRequestProperty("Authorization", "Bearer " + MaaS_KEY);connection.setDoOutput(true);connection.setChunkedStreamingMode(0);// 3. 构建请求体JSONObject requestBody = buildRequestBody(question);// 4. 发送请求sendRequest(connection, requestBody);// 5. 处理响应processResponse(connection);connection.disconnect();} catch (Exception e) {e.printStackTrace();}
}

3. 请求体构建

private static JSONObject buildRequestBody(String question) {JSONObject requestBody = new JSONObject();requestBody.put("model", "xdeepseekr1");JSONArray messages = new JSONArray();JSONObject message = new JSONObject();message.put("role", "user");message.put("content", question);messages.put(message);requestBody.put("messages", messages);requestBody.put("stream", false);requestBody.put("max_tokens", 16192);return requestBody;
}

4. 响应数据处理

private static void processResponse(HttpURLConnection connection) throws IOException {try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8))) {String line;while ((line = reader.readLine()) != null) {JsonParse_2 jsonParse2 = gson.fromJson(line, JsonParse_2.class);List<Choices_2> choices = jsonParse2.choices;for (Choices_2 tempChoice : choices) {System.out.println(tempChoice.message.content);}}}
}

5. 响应数据模型类

static class JsonParse_2 {List<Choices_2> choices;
}static class Choices_2 {Message message;
}static class Message {String reasoning_content;  // 推理过程内容String content;           // 实际返回内容
}

四、关键技术点解析

1. 提示词工程设计

本项目的核心在于精心设计的提示词,确保模型能够准确理解任务需求:

String question = "一、你的角色是:商品订单信息提炼大师。\n"+ "二、你的任务是:结合输入内容,提炼商品订单信息,并严格按照此JSON格式返回:"+ "{\"productList\":[{\"productName\":\"例如:黄瓜\",\"productNumber\":\"例如:2\","+ "\"unitOfMeasurement\":\"例如:斤\",\"productPrice\":\"例如:0.3\"}]}\n"+ "三、我的要求是:\n"+ "(1)productList必须包含内容中提到的所有商品信息,不能遗漏任何一条。\n"+ "(2)productName是指商品名称。\n"+ "(3)productNumber是指商品对应的数量。\n"+ "(4)unitOfMeasurement商品计价单位,可以是个、斤、袋等等。\n"+ "(5)productPrice是指商品一个计价单位的价格XXX元/个、XXX元/斤、XXX元/袋等等,仅返回XXX数值即可。";

2. 分块传输编码

使用connection.setChunkedStreamingMode(0)启用分块传输,适用于大数据量请求,避免预先计算内容长度。

3. 流式响应处理

虽然本例中设置stream: false,但架构支持流式响应处理,适用于实时交互场景。

五、应用示例

输入文本示例:

1.黄瓜2斤三毛,西红柿3斤5毛,西蓝花5斤0.5元,花生一袋8角,西瓜1个10块,辣椒三斤6元
2.肉馅10斤,大包红豆沙1包,小米1袋,玉米1箱,金龙鱼油6桶

期望输出:

{"productList": [{"productName": "黄瓜", "productNumber": "2", "unitOfMeasurement": "斤", "productPrice": "0.3"},{"productName": "西红柿", "productNumber": "3", "unitOfMeasurement": "斤", "productPrice": "0.5"},{"productName": "西蓝花", "productNumber": "5", "unitOfMeasurement": "斤", "productPrice": "0.5"},{"productName": "花生", "productNumber": "1", "unitOfMeasurement": "袋", "productPrice": "0.8"},{"productName": "西瓜", "productNumber": "1", "unitOfMeasurement": "个", "productPrice": "10"},{"productName": "辣椒", "productNumber": "3", "unitOfMeasurement": "斤", "productPrice": "6"}]
}

六、优化建议

1. 异常处理增强

public static void useDeepSeek(String question) {HttpURLConnection connection = null;try {// 连接和请求代码...} catch (Exception e) {logger.error("API调用失败", e);throw new RuntimeException("商品信息提取服务暂不可用", e);} finally {if (connection != null) {connection.disconnect();}}
}

2. 配置外部化

将API密钥、端点URL等配置移至配置文件中:

# application.properties
deepseek.api.key=sk-your-actual-key
deepseek.api.url=http://maas-api.cn-huabei-1.xf-yun.com/v1/chat/completions
deepseek.api.model=xdeepseekr1

3. 重试机制

添加网络异常时的重试逻辑,提高系统稳定性。

七、总结

本文介绍了使用Java调用DeepSeek-R1大模型API实现商品订单信息提取的完整方案。该方案具有以下优势:

  1. 准确性高:利用大模型的自然语言理解能力,准确识别复杂文本中的商品信息

  2. 扩展性强:可轻松适配不同的商品信息格式和业务场景

  3. 维护简单:基于标准的HTTP协议,部署和维护成本低

  4. 性能优异:支持流式处理,响应速度快

该技术可广泛应用于电商、零售、供应链管理等领域的订单处理系统中,显著提升数据处理的自动化水平和准确性。


注意:实际使用时请替换有效的API密钥,并根据具体业务需求调整提示词和响应处理逻辑。

http://www.dtcms.com/a/554124.html

相关文章:

  • postgresql 高频使用语句
  • tiago moveit环境配置过程
  • 怎么做婚庆网站平台京东seo是什么意思
  • 认识linux -- 编辑器vim以及编译器gcc/g++和Makefile文件
  • 金仓KES RWC:高并发写入场景下的数据库优化解决方案
  • RabbitMQ详细介绍
  • 迅为RK3562开发板重新挂载remount
  • discuz修改网站标题硬件开发岗位要求
  • StarRocks Data Agent
  • golang封装可扩展的crontab
  • 南京美容网站建设饿了吗网站建设思路
  • 投诉网站怎么做做短视频的能跟几个网站签约
  • 网站维护怎么收费腾讯企点官网入口
  • 高频 Redis 面试题答案解析
  • wordpress 导航站主题系统自动删除了wordpress
  • LeetCode 面试经典 150_链表_分隔链表(65_86_C++_中等)(拆分+尾插法)
  • 一种MP3文件的压缩方法
  • 做网站时候图片和视频放在哪里c 2015 做网站
  • puppeteer函数笔记,设置token跳过登录、自动选择图片上传等
  • 雄安网站建设400多少钱郑州关键词网站优化排名
  • 在使用openfe出现NameError: name ‘exit‘ is not defined的解决方案
  • 【计算机通识】认识 RESTful API
  • 使用cJosn将数据读写文件
  • 做软件搜狗seo软件
  • 仿土巴兔网站建设学院网站建设流程
  • DeerFlow多智能体项目分析-向量数据库实现知识检索的源码解析
  • 001前端查询组件
  • AI在线客服搭建实战指南:三步构建7×24小时智能服务系统
  • TSMaster常用函数
  • 伯位数智模式为商家经营带来的变革与机遇