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

标志设计网站推荐亚洲网站正在建设中

标志设计网站推荐,亚洲网站正在建设中,微信小程序是什么模式,做教育网站的公司工具源码:https://github.com/lishuangquan1987/XFYun.SparkChat 工具效果截图: 支持流式输出: 其中ApiKey/ApiSecret/AppId需要自己到讯飞星火大模型官网去注册账号申请,免费的。 申请地址:https://xinghuo.xfyun.cn/ 注册之…

工具源码:https://github.com/lishuangquan1987/XFYun.SparkChat
工具效果截图:
在这里插入图片描述
支持流式输出:
在这里插入图片描述

其中ApiKey/ApiSecret/AppId需要自己到讯飞星火大模型官网去注册账号申请,免费的。
申请地址:https://xinghuo.xfyun.cn/
在这里插入图片描述
注册之后,在如下的服务管理里面即可看到自己的ApiKey/ApiSecret/AppId
在这里插入图片描述
在这里插入图片描述

拿到了那三个东西之后填入就可以进行聊天啦。
核心代码C#如下:

namespace XFYun.SparkChat.SDK
{public class SparkWebSDK{private string _appId;private string _apiSecret;private string _apiKey;private SparkVersions _version;private ClientWebSocket _webSocketClient;public SparkWebSDK(){}public void Setup(string appId, string apiSecret, string apiKey, SparkVersions version = SparkVersions.V3_0){this._apiKey = apiKey;this._apiSecret = apiSecret;this._appId = appId;this._version = version;}private string GetAuthUrl(string baseUrl, string apiSecret, string apiKey){string date = DateTime.UtcNow.ToString("r");Uri uri = new Uri(baseUrl);var str = $"host: {uri.Host}\ndate: {date}\nGET {uri.LocalPath} HTTP/1.1";//使用apisecret,HMACSHA256算法加密strvar sha256Bytes = new HMACSHA256(Encoding.UTF8.GetBytes(apiSecret)).ComputeHash(Encoding.UTF8.GetBytes(str));var sha256Str = Convert.ToBase64String(sha256Bytes);var authorization = $"api_key=\"{apiKey}\",algorithm=\"hmac-sha256\",headers=\"host date request-line\",signature=\"{sha256Str}\"";//date要做url处理date = Uri.EscapeDataString(date);string newUrl = $"ws://{uri.Host}{uri.LocalPath}?authorization={Convert.ToBase64String(Encoding.UTF8.GetBytes(authorization))}&date={date}&host={uri.Host}";return newUrl;}/// <summary>/// 询问问题,流式调用response/// 返回结果表示调用成功还是失败,如果调用失败,则返回失败原因/// </summary>/// <param name="question"></param>/// <param name="response"></param>/// <returns></returns>public async Task<(bool, string)> Ask(List<string> questions, CancellationToken token, Action<List<string>> responseHandler){try{string url = "";string domain = "";switch (this._version){case SparkVersions.V1_5:url = "ws://spark-api.xf-yun.com/v1.1/chat";domain = "general";break;case SparkVersions.V2_0:url = "ws://spark-api.xf-yun.com/v2.1/chat";domain = "generalv2";break;case SparkVersions.V3_0:url = "ws://spark-api.xf-yun.com/v3.1/chat";domain = "generalv3";break;}var newUrl = GetAuthUrl(url, this._apiSecret, this._apiKey);this._webSocketClient = new ClientWebSocket();await this._webSocketClient.ConnectAsync(new Uri(newUrl), token);var request = new JsonRequest(){Header = new RequestHeader(){AppId = this._appId,Uid = "123"},Parameter = new RequestParameter(){Chat = new RequestChat(){Domain = domain,Temperature = 0.5,MaxTokens = 1024,}},Payload = new RequestPayload(){Message = new RequestMessage(){Text = questions.Select(x => new ReuqestContent(){Role = "user",Content = x}).ToList()}}};var jsonStr = Newtonsoft.Json.JsonConvert.SerializeObject(request);await this._webSocketClient.SendAsync(new ArraySegment<byte>(Encoding.UTF8.GetBytes(jsonStr)), WebSocketMessageType.Text, true, token);var recvBuffer = new byte[1024];while (true){WebSocketReceiveResult result = await this._webSocketClient.ReceiveAsync(new ArraySegment<byte>(recvBuffer), token);if (result.CloseStatus.HasValue) return (true, "");if (result.MessageType == WebSocketMessageType.Text){string recvMsg = Encoding.UTF8.GetString(recvBuffer, 0, result.Count);var response = Newtonsoft.Json.JsonConvert.DeserializeObject<JsonResponse>(recvMsg);if (response.Header.Code != 0){return (false, response.Header.Message);}if (response.Payload.Choices.Status == 2)//最后一个消息{responseHandler?.Invoke(response.Payload.Choices.Text.Select(x => x.Content).ToList());return (true, "调用成功!");}responseHandler?.Invoke(response.Payload.Choices.Text.Select(x => x.Content).ToList());}else if (result.MessageType == WebSocketMessageType.Close){return (false, result.CloseStatusDescription);}}}catch (Exception e){return (false, e.Message);}finally{await this._webSocketClient?.CloseAsync( WebSocketCloseStatus.NormalClosure,"client raise close request",token);}}public async void Close(){if (_webSocketClient != null){await _webSocketClient.CloseAsync(WebSocketCloseStatus.NormalClosure, "正常关闭", new CancellationToken());}}}public enum SparkVersions{V1_5,V2_0,V3_0}}
http://www.yayakq.cn/news/75645/

相关文章:

  • python 做网站 案例顺德大良哪家做网站好
  • 网站建设主要考虑哪些因素asp.net网站开发典型模块与实例精讲
  • 襄阳做网站广州网站开发哪家强
  • 南海区住房城乡建设和水务局网站餐饮营销引流都有什么方法
  • 做证书的网站企业建设网站维护
  • 专门做同人h的网站商业网站开发 说课
  • 北京工商局网站怎么做增资浙江省城乡和建设厅网站首页
  • 如何更改asp网站自定义产品顺序WordPress博客设置最新文章
  • 网站开发所需人员如何让自己做的网站在google搜索引擎上搜到
  • 微信公众号做视频网站吗王烨演员
  • 柳州做网站的企业网站改版 新闻
  • 外管局网站上做预收登记如何在百度提交自己的网站
  • 广告设计公司制作杨和关键词优化
  • 做招聘网站赚钱吗大连公路建设有限公司网站
  • 安阳 网站建设网站是做排行
  • 海尔网站建设不足之处合肥seo建站
  • win10建设网站注册公司的流程和要求
  • 开源的公司网站发布信息的免费平台有哪些
  • 建设英文品牌网站深圳网站 制作信科便宜
  • 手机端网站模板下载优化近义词
  • 哪个网站有做烘焙蛋糕专业的配方网页个人简历模板
  • 做一个网站系统多少钱百度邮箱注册申请免费注册
  • 培训网站建设机构网线制作颜色顺序
  • 图片分类展示网站源码杭州高端模板建站
  • 新手做哪类网站网站建设价目表
  • 外贸网站如何做推广织梦网站怎么建设
  • 深圳网站设计 建设首选深圳市WordPress点击文章显示404
  • 一般做个网站多少钱写作网站推荐
  • 上海网站建设公司服务wordpress 网上商城
  • 网站备案 在那给网站备案用word制作网页教程