集成百炼大模型api到spring boot项目,使用websocket实现流式输出,项目启动后调用多轮对话都能够正常进行,保持不调用状态,过5分钟左右再次调用时会报错 Exception: {"statusCode":-1,"message":"Get response failed!","code":"network error","isJson":false},重启整个项目后又能正常调用,能够稳定复现,能保证网络没有问题,请问这是什么情况?
@Autowired
private StringRedisTemplate redisTemplate;
@Override
public void askQuestion(WebSocketSession session, String question) {
try {
callWithSession(session,question, appId);
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
System.out.printf("Exception: %s", e.getMessage());
}
}
public void callWithSession(WebSocketSession session, String question)
throws ApiException, NoApiKeyException, InputRequiredException {
ApplicationParam param = ApplicationParam.builder()
.appId(configAppId)
.prompt(question)
.incrementalOutput(true)
.build();
// 获取多轮对话sessionId
String key = "convercation_session:" + session.getId() ;
String sessionId = redisTemplate.opsForValue().get(key);
if(StringUtils.isNotEmpty(sessionId)){
// 携带sessionId 实现多轮对话
param.setSessionId(sessionId);
}
Application application = new Application();
Flowable<ApplicationResult> result = application.streamCall(param);
result.blockingForEach(data -> {
session.sendMessage(new TextMessage(JsonUtils.toJson(data)));
if(!data.getOutput().getFinishReason().equals("null") && !data.getOutput().getFinishReason().equals(null) && StringUtils.isNotEmpty(data.getOutput().getFinishReason())){
// 全部的回答已经完成
System.out.printf("requestId: %s, text: %s, finishReason: %s, sessionId: %s\n",
data.getRequestId(), data.getOutput().getText(), data.getOutput().getFinishReason(),data.getOutput().getSessionId());
// 删除之前的验证码
String delKey = "convercation_session:" + session.getId();
redisTemplate.delete(delKey);
// 存储多轮对话sessionId
String addkey = "convercation_session:" + session.getId();
redisTemplate.opsForValue().set(addkey, data.getOutput().getSessionId(), 60, TimeUnit.MINUTES);
}
});
}
我感觉还是网络不稳定的情况,导致连接中断。
本产品(大模型服务平台百炼/2023-06-01)的OpenAPI采用RPC签名风格,签名细节参见签名机制说明。我们已经为开发者封装了常见编程语言的SDK,开发者可通过下载SDK直接调用本产品OpenAPI而无需关心技术细节。如果现有SDK不能满足使用需求,可通过签名机制进行自签名对接。由于自签名细节非常复杂,需花费 5个工作日左右。因此建议加入我们的服务钉钉群(11370001915),在专家指导下进行签名对接。
在使用API前,您需要准备好身份账号及访问密钥(AccessKey),才能有效通过客户端工具(SDK、CLI等)访问API。细节请参见获取AccessKey。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
基于通义系列大模型和开源大模型的一站式大模型服务平台,提供「生成式大模型的全流程应用工具」和「企业大模型的全链路训练工具」。为大模型,也为小应用。 阿里云百炼官网网址:https://www.aliyun.com/product/bailian