From 356088d23c5f1a796685871f99e80a3b6a7de564 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期二, 23 六月 2026 17:32:10 +0800
Subject: [PATCH] 【市一】外链开放机构号生成

---
 smartor/src/main/java/com/smartor/common/QwenLLMUtil.java |   35 +++++++++++++++++++++--------------
 1 files changed, 21 insertions(+), 14 deletions(-)

diff --git a/smartor/src/main/java/com/smartor/common/QwenLLMUtil.java b/smartor/src/main/java/com/smartor/common/QwenLLMUtil.java
index f810081..1421f5a 100644
--- a/smartor/src/main/java/com/smartor/common/QwenLLMUtil.java
+++ b/smartor/src/main/java/com/smartor/common/QwenLLMUtil.java
@@ -33,15 +33,15 @@
 
     /** 鐧剧偧 API Key */
     @Value("${qwen.api-key:}")
-    private String apiKey;
+    private static String apiKey = "sk-712da9346f0940ff909b40dce17579b1";
 
     /** 妯″瀷鍚嶇О */
     @Value("${qwen.model:qwen-plus}")
-    private String model;
+    private static String model = "qwen-plus";
 
     /** 鎺ュ彛鍦板潃锛圤penAI 鍏煎妯″紡锛� */
     @Value("${qwen.url:https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions}")
-    private String url;
+    private static String url = "https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions";
 
     /**
      * 鍒ゆ柇璇煶鏂囨湰鏈�鎺ヨ繎鍝釜閫夐」銆�
@@ -97,21 +97,28 @@
 
     /**
      * 鍒ゆ柇璇煶鏂囨湰鏄惁绗﹀悎杩欎釜鎰忔��
-     *
+     * @param questionText
      * @param voiceText 璇煶璇嗗埆寰楀埌鐨勬枃鏈�
      * @return 鍛戒腑鐨勯�夐」鍘熸枃锛涙棤娉曞尮閰嶄换涓�閫夐」鏃惰繑鍥� {@code null}
      */
-    public int matchRegex(String voiceText, String value, String regexText) {
+    public static int matchRegex(String questionText, String voiceText, String value, String regexText) {
         if (StringUtils.isBlank(voiceText) || regexText == null || regexText.isEmpty()) {
             return -1;
         }
 
-        String systemPrompt = "浣犳槸涓�涓涔夊尮閰嶅姪鎵嬨�傜敤鎴蜂細缁欏嚭涓�娈佃闊宠瘑鍒枃鏈�佹鍒欏尮閰嶆枃鏈�佸搴旀寚鏍囧��"
-                + "璇峰垽鏂繖娈垫枃鏈槸鍚︽帴杩戞鍒欏尮閰嶈鍒欐垨鑰呭搴旀寚鏍囧�肩殑鎰忔��"
-                + "涓嶈鍋氫换浣曡В閲娿�傝嫢鏈夌浉鍏虫剰鎬濓紝鑳藉尮閰嶇殑涓婏紝鐩存帴杈撳嚭 1锛涜嫢涓庢枃鏈剰鎬濆畬鍏ㄤ笉鐩稿叧锛屽垯杈撳嚭 0銆�";
-        String userPrompt = "璇煶鏂囨湰锛�" + voiceText + "\n\n姝e垯鍖归厤鏂囨湰锛歕n" + regexText
-                +  "\n\n瀵瑰簲鎸囨爣鍊硷細\n" + value
-                + "\n璇峰彧杈撳嚭涓�涓暟瀛楋紙鍖归厤杈撳嚭 1锛屾病鏈夊尮閰嶅垯杈撳嚭 0锛夈��";
+        String systemPrompt = "浣犳槸涓�涓笓涓氱殑璇煶璇嗗埆鏂囨湰璇箟鍖归厤鍔╂墜銆備綘鐨勪换鍔℃槸鍒ゆ柇鐢ㄦ埛鐨勮闊虫枃鏈槸鍚﹀湪璇箟涓婄鍚堢粰瀹氱殑<姝e垯鍖归厤瑙勫垯>鎴�<瀵瑰簲鎸囨爣鍊�>銆�"
+                + "鐢变簬姝e垯琛ㄨ揪寮忔棤娉曡鐩栨墍鏈夎嚜鐒惰瑷�鐨勫悓涔夎〃杈撅紝浣犻渶瑕佷綔涓鸿涔夊厹搴曟満鍒讹紝鍒ゆ柇璇煶鏂囨湰鏄惁琛ㄨ揪浜嗕笌姝e垯瑙勫垯鎴栨寚鏍囧�肩浉鍚屾垨鐩歌繎鐨勬牳蹇冩剰鍥俱��"
+                + "銆愭牳蹇冭鍒欍��"
+                + "1. 濡傛灉璇煶鏂囨湰鍦ㄥ瓧闈笂鍖归厤浜嗘鍒欙紝鎴栬�呭湪璇箟涓婅〃杈句簡姝e垯/鎸囨爣鍊肩殑鎰忔�濓紝璇疯緭鍑猴細1銆�"
+                + "2. 濡傛灉璇煶鏂囨湰涓庢鍒�/鎸囨爣鍊肩殑鎰忔�濆畬鍏ㄦ棤鍏炽�佹剰鎬濈浉鍙嶆垨鏃犳硶鎺ㄦ柇鍑虹浉鍏虫剰鍥撅紝璇疯緭鍑猴細0銆�"
+                + "3. 缁濆绂佹杈撳嚭浠讳綍瑙i噴銆佹爣鐐圭鍙枫�佹崲琛岀鎴栧叾浠栨棤鍏冲瓧绗︺�備綘鐨勬渶缁堝洖澶嶅彧鑳芥槸涓�涓暟瀛楋紙1 鎴� 0锛夈��"
+                ;
+        String userPrompt = "璇锋牴鎹互涓嬩俊鎭繘琛岃涔夊尮閰嶅垽鏂細\n" +
+                "- 闂鏂囨湰锛�" + questionText + "\n\n"
+                + "- 璇煶璇嗗埆鏂囨湰锛�" + voiceText + "\n\n"
+                + "- 姝e垯鍖归厤鏂囨湰锛歕n" + regexText + "\n\n"
+                + "- 瀵瑰簲鎸囨爣鍊硷細\n" + value
+                + "\n璇峰垽鏂繖娈佃闊虫枃鏈槸鍚︽帴杩戞鍒欏尮閰嶈鍒欐垨鑰呭搴旀寚鏍囧�肩殑鎰忔�濄�傝嫢鏈夌浉鍏虫剰鎬濄�佽兘鍖归厤寰椾笂锛岀洿鎺ヨ緭鍑� 1锛涜嫢涓庢枃鏈剰鎬濆畬鍏ㄤ笉鐩稿叧锛屽垯杈撳嚭 0銆�";
 
         String content = chat(systemPrompt, userPrompt);
         if (StringUtils.isBlank(content)) {
@@ -133,7 +140,7 @@
      * @param userPrompt   鐢ㄦ埛鎻愮ず璇�
      * @return 妯″瀷鍥炲姝f枃锛涜皟鐢ㄥけ璐ヨ繑鍥� {@code null}
      */
-    public String chat(String systemPrompt, String userPrompt) {
+    public static String chat(String systemPrompt, String userPrompt) {
         if (StringUtils.isBlank(apiKey)) {
             throw new IllegalStateException("閫氫箟鍗冮棶 API Key 鏈厤缃紙qwen.api-key锛�");
         }
@@ -178,7 +185,7 @@
         }
     }
 
-    private JSONObject message(String role, String content) {
+    private static JSONObject message(String role, String content) {
         JSONObject msg = new JSONObject();
         msg.put("role", role);
         msg.put("content", content);
@@ -188,7 +195,7 @@
     /**
      * 浠庢ā鍨嬪洖澶嶄腑鎻愬彇绗竴涓暣鏁般�傛ā鍨嬪伓灏斾細鍥炲 鈥滈�夐」2鈥� 鈥�2銆傗�� 涔嬬被锛屽仛涓�娆″厹搴曡В鏋愩��
      */
-    private Integer extractFirstNumber(String text) {
+    private static Integer extractFirstNumber(String text) {
         List<Character> digits = new ArrayList<>();
         for (int i = 0; i < text.length(); i++) {
             char c = text.charAt(i);

--
Gitblit v1.9.3