|
|
|
|
@ -310,6 +310,32 @@ public class AItokenService { |
|
|
|
|
return "AI模型正在加载中,请稍等2-3分钟后再试。如果问题持续存在,可能需要检查系统资源配置。"; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
// 处理"length"状态 - 表示响应因长度限制被截断
|
|
|
|
|
else if ("length".equals(doneReason)) { |
|
|
|
|
System.out.println("第 " + attempt + " 次尝试:模型响应因长度限制被截断"); |
|
|
|
|
// 尝试获取已生成的内容
|
|
|
|
|
JsonNode messageNode = rootNode.get("message"); |
|
|
|
|
if (messageNode != null) { |
|
|
|
|
JsonNode contentNode = messageNode.get("content"); |
|
|
|
|
if (contentNode != null) { |
|
|
|
|
String content = contentNode.asText(); |
|
|
|
|
if (content != null && !content.isEmpty()) { |
|
|
|
|
System.out.println("尽管响应被截断,但已获取到部分回答内容,长度: " + content.length()); |
|
|
|
|
return content; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 如果没有获取到内容,继续重试
|
|
|
|
|
if (attempt < maxRetries) { |
|
|
|
|
long waitTime = 3000 * attempt; |
|
|
|
|
System.out.println("等待 " + (waitTime/1000) + " 秒后重试..."); |
|
|
|
|
Thread.sleep(waitTime); |
|
|
|
|
continue; |
|
|
|
|
} else { |
|
|
|
|
return "AI模型响应过长被截断,请尝试提出更具体的问题。"; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
// 只有当done_reason为stop时才表示真正结束
|
|
|
|
|
else if (!"stop".equals(doneReason)) { |
|
|
|
|
System.out.println("第 " + attempt + " 次尝试:模型返回未知的done_reason: " + doneReason); |
|
|
|
|
|