秦芳睿
2025-03-13 d9111b072c5bbf196435be9aa7f1f849cd07252b
JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/core/SMTAIServerRequest.java
@@ -55,6 +55,7 @@
      {
         jsonWr.addKeyValue("file_id", _fileId);
         jsonWr.addKeyValue("file_name", _fileName);
         jsonWr.addKeyValue("file_content", _fileText);
      }
   }
   
@@ -96,6 +97,8 @@
   private boolean               _disableConclusion = false;
   private List<AIAttachFile>      _listAttchFile = null;
   private Json               _jsonAttachTables = null;
   private Json               _jsonAttachMetrics = null;
   private boolean               _sendStarStream = false; // 将输出文字变成*
   @Override
@@ -121,11 +124,22 @@
      }
   }
   
   public boolean setSendStarStream(boolean isSetStartStream)
   {
      boolean org = _sendStarStream;
      _sendStarStream = isSetStartStream;
      return org;
   }
   public void setAttachTables(Json jsonTables)
   {
      _jsonAttachTables = jsonTables;
   }
   public void setJsonAttachMetrics(Json attachMetrics)
   {
      _jsonAttachMetrics = attachMetrics;
   }
   public String[] getAttachMessage()
   {
      List<String> list = new ArrayList<>();
@@ -159,13 +173,51 @@
               {
                  if(i > 0)
                     sbText.append(",");
                  sbText.append(listRec.get(i).asString());
                  if(listRec.get(i).isNull())
                     sbText.append("");
                  else
                     sbText.append(listRec.get(i).asString());
               }
               sbText.append("\n");
            }
            sbText.append("\n");
            list.add(sbText.toString());
         }
      }
      if(_jsonAttachMetrics != null)
      {
         for(Json jsonAttachTable : _jsonAttachMetrics.asJsonList())
         {
            StringBuilder sbText = new StringBuilder();
            sbText.append("现有表格:" + jsonAttachTable.getJson("title").asString() + "\n");
            List<Json> jsonColumns = jsonAttachTable.getJson("columns").asJsonList();
            for(int i = 0; i < jsonColumns.size(); i ++)
            {
               if(i > 0)
                  sbText.append(",");
               sbText.append(jsonColumns.get(i).asString());
            }
            sbText.append("\n");
            for(Json jsonRecord : jsonAttachTable.getJson("values").asJsonList())
            {
               List<Json> listRec = jsonRecord.asJsonList();
               for(int i = 0; i < listRec.size(); i ++)
               {
                  if(i > 0)
                     sbText.append(",");
                  if(listRec.get(i).isNull())
                     sbText.append("");
                  else
                     sbText.append(listRec.get(i).asString());
               }
               sbText.append("\n");
            }
            sbText.append("\n");
            list.add(sbText.toString());
         }
      }
      
      return list.size() == 0 ? null : list.toArray(new String[list.size()]);
   }
@@ -188,6 +240,10 @@
      if(_jsonAttachTables != null)
      {
         jsonResult.set("attach_tables", _jsonAttachTables);
      }
      if(_jsonAttachMetrics != null)
      {
         jsonResult.set("attach_metrics", _jsonAttachMetrics);
      }
   }
   
@@ -502,6 +558,17 @@
      }
   }
   
   public void sendChunkedStreamBlock(String stream) throws Exception
   {
      if(_sendStarStream)
      {
         stream = "#";
         if(stream.indexOf("\n") >= 0)
            stream += "\n";
      }
      sendChunkedBlock("send_stream", stream);
   }
   public void sendChunkedBlock(String mode, Object value) throws Exception
   {
      if(!_isChunked)