Browse Source

ai识别优化

cangku
wangfukang 2 years ago
parent
commit
2cfebdab94
  1. 2
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/OrderController.java
  2. 4
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/OrderServiceImpl.java
  3. 22
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/utils/AliOcrUtil.java

2
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/OrderController.java

@ -226,6 +226,8 @@ public class OrderController {
}
/**
* 待抢单的订单类型
* <p>

4
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/OrderServiceImpl.java

@ -248,6 +248,10 @@ public class OrderServiceImpl implements OrderService {
}
// 拉包工
if (CharSequenceUtil.isNotBlank(orderQueryVO.getOrderByWorker())) {
list.add(cb.equal(orderByWorkerField, orderQueryVO.getOrderByWorker()));
}
if (CharSequenceUtil.isNotBlank(orderQueryVO.getWorkerName())) {
list.add(cb.like(workerNameField, '%' + orderQueryVO.getWorkerName() + '%'));
}

22
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/utils/AliOcrUtil.java

@ -61,6 +61,7 @@ public class AliOcrUtil {
*/
public static JSONObject multiRoundConversationCall(PurchaseOcrPicture purchaseOcrPicture, PurchaseOcrExample purchaseOcrExample, ProductService productService, PurchaseDetailService purchaseDetailService) throws ApiException, NoApiKeyException, UploadFileException {
final JSONObject jsonObject = new JSONObject();
final String ocrPictureId = purchaseOcrPicture.getId();
final String picturePath = purchaseOcrPicture.getOcrPicture();
final Integer count = purchaseOcrPicture.getCount();
final String orderId = purchaseOcrPicture.getOrderId();
@ -76,7 +77,7 @@ public class AliOcrUtil {
productSnExample += indexStr;
productNameExample += indexStr;
}
final StopWatch stopWatch = new StopWatch("Ai回答计时");
final StopWatch stopWatch = new StopWatch(ocrPictureId+"Ai回答计时");
Constants.apiKey = "sk-bcfa4865b89548acb8225f910f13d682";
final CopyOnWriteArrayList<MultiModalConversationResult> multiModalConversationResults = new CopyOnWriteArrayList<>();
final MultiModalConversation conv = new MultiModalConversation();
@ -86,13 +87,13 @@ public class AliOcrUtil {
final MultiModalMessageItemImage userImage = new MultiModalMessageItemImage(picturePath);
final String firstQuestionMsg = "请把图片中的内容按照商品的不同规格拆分,返回" + count + "条JSON数据。\n" +
" JSON示例:[{ \"productSn\": \"" + productSnExample + "\", \"productName\":\"" + productNameExample + "\", \"price\": \"" + purchaseOcrExample.getPrice() + "\", \"productCount\": \"" + purchaseOcrExample.getProductCount() + "\", \"attributeList\": \"{'color':'" + purchaseOcrExample.getColor() + "','size':'" + purchaseOcrExample.getSize() + "'}\" }]。" +
" JSON示例:[{ \"productSn\": \"" + productSnExample + "\", \"productName\":\"" + productNameExample + "\", \"attributeList\": \"{'color':'" + purchaseOcrExample.getColor() + "','size':'" + purchaseOcrExample.getSize() + "'}\", \"productCount\": \"" + purchaseOcrExample.getProductCount() + "\", \"price\": \"" + purchaseOcrExample.getPrice() + "\" }]。" +
"以下是几点要求: " +
"1.JSON中“productSn”字段可能由字母或数字或特殊符号组成,“color”字段如果图片中没有内容,则赋值“均色”,“size”字段如果图片中没有内容,则赋值“均码”。" +
"2.严格按照JSON示例的格式和字段名返回! " +
"3.严格按照图中内容值返回! " +
"4.每个JSON对象必须包含这7个字段。" +
"5.如果图中内容没有productSn和productName信息,则使用JSON示例中的值填充。 " +
"5.如果按照你的理解在图中找到了productSn和productName字段对应的信息,则productSn和productName字段的值以图中内容为准。如果按照你的理解在图中没有找到productSn和productName字段对应的信息,则productSn和productName字段的值使用JSON示例中productSn和productName的值填充。 " +
"6.请注意返回JSON符号解析格式正确 ,确保java程序能够正确解析。" +
"7.严格返回" + count + "条JSON数据,如果数量有偏差按照实际条数返回,不能自动省略!";
log.info("AI提问内容:"+firstQuestionMsg);
@ -106,10 +107,6 @@ public class AliOcrUtil {
final MultiModalConversationParam param = MultiModalConversationParam.builder()
.model("qwen-vl-max")
.messages(messages)
.temperature(1F)
.topP(0.1)
.topK(1)
.seed(500)
.build();
stopWatch.start("一轮会话");
MultiModalConversationResult result = conv.call(param);
@ -614,7 +611,16 @@ public class AliOcrUtil {
purchaseOcrVo.setProductSn(jsonObject.getString("productSn"));
purchaseOcrVo.setProductName(jsonObject.getString("productName"));
purchaseOcrVo.setPrice(jsonObject.getBigDecimal("price"));
purchaseOcrVo.setProductCount(jsonObject.getInteger("productCount"));
final String productCount = jsonObject.getString("productCount");
// 有时候数量不对,这里替换一次啊
try {
final int intValue = (int) Double.parseDouble(productCount);
purchaseOcrVo.setProductCount(intValue);
} catch (NumberFormatException e) {
System.out.println("数量转换有问题,这里设置为0");
purchaseOcrVo.setProductCount(0);
}
final String attributeListStr = jsonObject.getString("attributeList");
final JSONObject attributeListJson = JSON.parseObject(attributeListStr);

Loading…
Cancel
Save