当前位置: 首页 > news >正文

自己做网站宣传产品云南定制化网站建设

自己做网站宣传产品,云南定制化网站建设,深圳网站模板建站,丽水市莲都建设分局网站讯飞星火大模型#xff0c;通过websocket方式通信传递协议要求的报文#xff0c;然后将流式返回的报文拼接为完整的响应内容#xff0c;status2时是最后一条消息。因为是websocket方式所以是异步响应的#xff0c;如果想要同步需要使用CountDownLatch控制下线程等待最后一条…讯飞星火大模型通过websocket方式通信传递协议要求的报文然后将流式返回的报文拼接为完整的响应内容status2时是最后一条消息。因为是websocket方式所以是异步响应的如果想要同步需要使用CountDownLatch控制下线程等待最后一条消息处理完再继续往下走。星火不同版本稍微有一些差异具体以官网提供的demo为准。 具体步骤 首先,需要在公网创建应用然后查看服务接口认证信息APPID、APISecret、APIKey、URL。 https://console.xfyun.cn/services/bm3 点应用名称进去查看详情 然后点“文档”查看报文协议可以下载调用示例使用Java代码调用星火api https://www.xfyun.cn/doc/spark/Web.html 下面仅仅是个示例具体代码要根据官网最新文档确定。注意domain在1.523版本分别传general,generalv2,generalv3传错了会报错10404。另外如果想同步返回结果需要自己使用CountDownLatch控制主线程等待一段时间 countDownLatch.await(30000, TimeUnit.MILLISECONDS); 这样会在指定的最大超时时间内等待。 import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.google.gson.Gson; import okhttp3.*;import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import java.io.IOException; import java.net.URL; import java.nio.charset.StandardCharsets; import java.text.SimpleDateFormat; import java.util.*;/*** 带历史会话的示例*/ public class BigModelNew extends WebSocketListener {// 地址与鉴权信息 https://spark-api.xf-yun.com/v1.1/chat 1.5地址 domain参数为general// 地址与鉴权信息 https://spark-api.xf-yun.com/v2.1/chat 2.0地址 domain参数为generalv2public static final String hostUrl https://spark-api.xf-yun.com/v1/chat;public static final String appid 1234;public static final String apiSecret xxxxx;public static final String apiKey xxxxxxxxxx;public static final String domain general; //1.523版本分别传general,generalv2,generalv3传错了会报错10404public static ListRoleContent historyListnew ArrayList(); // 对话历史存储集合public static String totalAnswer; // 大模型的答案汇总// 环境治理的重要性 环保 人口老龄化 我爱我的祖国public static String NewQuestion ;public static final Gson gson new Gson();// 个性化参数private String userId;private Boolean wsCloseFlag;private static Boolean totalFlagtrue; // 控制提示用户是否输入// 构造函数public BigModelNew(String userId, Boolean wsCloseFlag) {this.userId userId;this.wsCloseFlag wsCloseFlag;}// 主函数public static void main(String[] args) throws Exception {// 个性化参数入口如果是并发使用可以在这里模拟while (true){if(totalFlag){Scanner scannernew Scanner(System.in);System.out.print(我);totalFlagfalse;NewQuestionscanner.nextLine();// 构建鉴权urlString authUrl getAuthUrl(hostUrl, apiKey, apiSecret);OkHttpClient client new OkHttpClient.Builder().build();String url authUrl.toString().replace(http://, ws://).replace(https://, wss://);Request request new Request.Builder().url(url).build();for (int i 0; i 1; i) {totalAnswer;WebSocket webSocket client.newWebSocket(request, new BigModelNew(i ,false));}}else{Thread.sleep(200);}}}public static boolean canAddHistory(){ // 由于历史记录最大上线1.2W左右需要判断是能能加入历史int history_length0;for(RoleContent temp:historyList){history_lengthhistory_lengthtemp.content.length();}if(history_length12000){historyList.remove(0);historyList.remove(1);historyList.remove(2);historyList.remove(3);historyList.remove(4);return false;}else{return true;}}// 线程来发送音频与参数class MyThread extends Thread {private WebSocket webSocket;public MyThread(WebSocket webSocket) {this.webSocket webSocket;}public void run() {try {JSONObject requestJsonnew JSONObject();JSONObject headernew JSONObject(); // header参数header.put(app_id,appid);header.put(uid,UUID.randomUUID().toString().substring(0, 10));JSONObject parameternew JSONObject(); // parameter参数JSONObject chatnew JSONObject();chat.put(domain, domain);chat.put(temperature,0.5);chat.put(max_tokens,4096);parameter.put(chat,chat);JSONObject payloadnew JSONObject(); // payload参数JSONObject messagenew JSONObject();JSONArray textnew JSONArray();// 历史问题获取if(historyList.size()0){for(RoleContent tempRoleContent:historyList){text.add(JSON.toJSON(tempRoleContent));}}// 最新问题RoleContent roleContentnew RoleContent();roleContent.roleuser;roleContent.contentNewQuestion;text.add(JSON.toJSON(roleContent));historyList.add(roleContent);message.put(text,text);payload.put(message,message);requestJson.put(header,header);requestJson.put(parameter,parameter);requestJson.put(payload,payload);// System.err.println(requestJson); // 可以打印看每次的传参明细webSocket.send(requestJson.toString());// 等待服务端返回完毕后关闭while (true) {// System.err.println(wsCloseFlag ---);Thread.sleep(200);if (wsCloseFlag) {break;}}webSocket.close(1000, );} catch (Exception e) {e.printStackTrace();}}}Overridepublic void onOpen(WebSocket webSocket, Response response) {super.onOpen(webSocket, response);System.out.print(大模型);MyThread myThread new MyThread(webSocket);myThread.start();}Overridepublic void onMessage(WebSocket webSocket, String text) {// System.out.println(userId 用来区分那个用户的结果 text);JsonParse myJsonParse gson.fromJson(text, JsonParse.class);if (myJsonParse.header.code ! 0) {System.out.println(发生错误错误码为 myJsonParse.header.code);System.out.println(本次请求的sid为 myJsonParse.header.sid);webSocket.close(1000, );}ListText textList myJsonParse.payload.choices.text;for (Text temp : textList) {System.out.print(temp.content);totalAnswertotalAnswertemp.content;}if (myJsonParse.header.status 2) {// 可以关闭连接释放资源System.out.println();System.out.println(*************************************************************************************);if(canAddHistory()){RoleContent roleContentnew RoleContent();roleContent.setRole(assistant);roleContent.setContent(totalAnswer);historyList.add(roleContent);}else{historyList.remove(0);RoleContent roleContentnew RoleContent();roleContent.setRole(assistant);roleContent.setContent(totalAnswer);historyList.add(roleContent);}wsCloseFlag true;totalFlagtrue;}}Overridepublic void onFailure(WebSocket webSocket, Throwable t, Response response) {super.onFailure(webSocket, t, response);try {if (null ! response) {int code response.code();System.out.println(onFailure code: code);System.out.println(onFailure body: response.body().string());if (101 ! code) {System.out.println(connection failed);System.exit(0);}}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}// 鉴权方法public static String getAuthUrl(String hostUrl, String apiKey, String apiSecret) throws Exception {URL url new URL(hostUrl);// 时间SimpleDateFormat format new SimpleDateFormat(EEE, dd MMM yyyy HH:mm:ss z, Locale.US);format.setTimeZone(TimeZone.getTimeZone(GMT));String date format.format(new Date());// 拼接String preStr host: url.getHost() \n date: date \n GET url.getPath() HTTP/1.1;// System.err.println(preStr);// SHA256加密Mac mac Mac.getInstance(hmacsha256);SecretKeySpec spec new SecretKeySpec(apiSecret.getBytes(StandardCharsets.UTF_8), hmacsha256);mac.init(spec);byte[] hexDigits mac.doFinal(preStr.getBytes(StandardCharsets.UTF_8));// Base64加密String sha Base64.getEncoder().encodeToString(hexDigits);// System.err.println(sha);// 拼接String authorization String.format(api_key\%s\, algorithm\%s\, headers\%s\, signature\%s\, apiKey, hmac-sha256, host date request-line, sha);// 拼接地址HttpUrl httpUrl Objects.requireNonNull(HttpUrl.parse(https:// url.getHost() url.getPath())).newBuilder().//addQueryParameter(authorization, Base64.getEncoder().encodeToString(authorization.getBytes(StandardCharsets.UTF_8))).//addQueryParameter(date, date).//addQueryParameter(host, url.getHost()).//build();// System.err.println(httpUrl.toString());return httpUrl.toString();}//返回的json结果拆解class JsonParse {Header header;Payload payload;}class Header {int code;int status;String sid;}class Payload {Choices choices;}class Choices {ListText text;}class Text {String role;String content;}class RoleContent{String role;String content;public String getRole() {return role;}public void setRole(String role) {this.role role;}public String getContent() {return content;}public void setContent(String content) {this.content content;}} }pom.xml ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdorg.example/groupIdartifactIdbig_model/artifactIdversion1.0-SNAPSHOT/versionbuildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdconfigurationsource8/sourcetarget8/target/configuration/plugin/plugins/buildpropertiesjava.version1.8/java.version/propertiesdependencies!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --dependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion1.2.67/version/dependency!-- https://mvnrepository.com/artifact/com.google.code.gson/gson --dependencygroupIdcom.google.code.gson/groupIdartifactIdgson/artifactIdversion2.8.5/version/dependency!-- https://mvnrepository.com/artifact/org.java-websocket/Java-WebSocket --dependencygroupIdorg.java-websocket/groupIdartifactIdJava-WebSocket/artifactIdversion1.3.8/version/dependency!-- https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp --dependencygroupIdcom.squareup.okhttp3/groupIdartifactIdokhttp/artifactIdversion4.10.0/version/dependency!-- https://mvnrepository.com/artifact/com.squareup.okio/okio --dependencygroupIdcom.squareup.okio/groupIdartifactIdokio/artifactIdversion2.10.0/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversionRELEASE/versionscopecompile/scope/dependencydependencygroupIdorg.slf4j/groupIdartifactIdslf4j-log4j12/artifactIdversion1.7.25/version/dependency/dependencies/project# Global logging configuration log4j.rootLoggerDEBUG, stdout # Console output... log4j.appender.stdoutorg.apache.log4j.ConsoleAppender log4j.appender.stdout.layoutorg.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern%5p [%t] - %m%n
http://www.hkea.cn/news/14414694/

相关文章:

  • 太原网站制作电话大鹏网站建设
  • 威海做网站的公司哪家好wordpress添加数据
  • 影视网站开发背景服务器iis搭建网站
  • 我自己的网站菏泽网站设计培训
  • 网站缓存优化怎么做外贸网站建设盲区
  • 网站域名如何实名认证做外围网站犯法吗
  • 网站怎么去优化网站建设哪里好 厦门
  • 云南交投集团公路建设有限公司网站福州设计公司排行
  • 财税公司网站开发二手车网站开发
  • 网站建设 销售人员网站导航的交互怎么做
  • 怎么样建立网站方案中国建设网官方网站电子银行
  • 余姚做网站设计衡水移动网站建设费用
  • 沈阳建设网站哪家好福州网络公司有哪些
  • 品牌网站建设收费情况网广州建网站站制作
  • wordpress优秀网站wordpress和onethink
  • 网站建设规划模板什么网站可以做设计
  • wordpress仿站教学高清的建设工程人员查询
  • 网站开发 文件上传慢外包服务公司
  • 获取网站访客qq做可动模型的网站
  • 网上哪里给公司做网站少儿编程加盟费多少钱
  • 中国石油建设工程协会网站公司网站建设有什么好处
  • 娱乐网站设计SEO苏宁推客如何做网站
  • 长春网站建设SEO优化营销建设法规网站
  • 鄂尔多斯网站网站建设竞价托管推广代运营
  • 电商网站设计趋势html5 国内网站建设
  • 自己怎么建个免费网站淘宝网页版怎么和卖家聊天
  • 网站不备案行吗做的网站在不同浏览器
  • 杭州企业建站模板苏州市城市建设局网站
  • 网站管理后台模板wordpress 积分
  • 一级站点和二级站点区别百度老旧版本大全