【大模型部署】在C# Winform中使用文心一言ERNIE-3.5 4K 聊天模型

【大模型部署】在C# Winform中使用文心一言ERNIE-3.5 4K 聊天模型

    正在检查是否收录...

【大模型部署】在C# Winform中使用文心一言ERNIE-3.5 4K 聊天模型

前言

今天来写一个简单的ernie-c#的例子,主要参考了百度智能云的例子,然后自己改了改,学习了ERNIE模型的鉴权方式,数据流的格式和简单的数据解析,实现了在C#中调用百度智能云的ernie(其实就是文心一言3.5的语言模型)的例子。

步骤

注册百度智能云 创建应用 开通ERNIE 3.5 4K模型的付费通道(似乎是免费的) 获取AK和SK 代码接入

步骤1-注册百度智能云

百度智能云
按提示注册即可

步骤2-创建应用

点击“应用接入” -> “创建应用”

按下图操作即可

步骤3-开通ERNIE 3.5 4K模型的付费通道

百度会送20元的优惠券,试用的话是免费的,如果要收费的话,请酌情开通

我的代金券

步骤4-获取AK和SK

在这里获取AK和SK,后面代码里面要用

代码接入

定义AK和SK
// 您的AccessKey ID const string API_KEY = "qSXXXXXXXXXXXXXXXXQ"; // 您的AccessKey Secret const string SECRET_KEY = "Kb8XXXXXXXXXXXXXXXXXX24ZH"; 
定义发送和回传的数据结构
public class Message { [JsonProperty("role")] public string Role { get; set; } [JsonProperty("content")] public string Content { get; set; } } public class ErnieMessage { [JsonProperty("messages")] public Message[] Messages { get; set; } [JsonProperty("temperature")] public double Temperature { get; set; } [JsonProperty("top_p")] public double TopP { get; set; } [JsonProperty("penalty_score")] public double PenaltyScore { get; set; } [JsonProperty("disable_search")] public bool DisableSearch { get; set; } [JsonProperty("enable_citation")] public bool EnableCitation { get; set; } } ErnieMessage ernieMessage = new ErnieMessage(); public class ChatCompletionResult { [JsonProperty("id")] public string Id { get; set; } [JsonProperty("object")] public string ObjectType { get; set; } // 这里的属性名可以根据实际需求进行命名,例如避免与.NET的内置Object类冲突 [JsonProperty("created")] public long CreatedTimestamp { get; set; } // 通常时间戳会转换为DateTime,但这里保持为long [JsonProperty("result")] public string Result { get; set; } [JsonProperty("is_truncated")] public bool IsTruncated { get; set; } [JsonProperty("need_clear_history")] public bool NeedClearHistory { get; set; } [JsonProperty("finish_reason")] public string FinishReason { get; set; } [JsonProperty("usage")] public Usage UsageInfo { get; set; } // 嵌套类来表示Usage对象 public class Usage { [JsonProperty("prompt_tokens")] public int PromptTokens { get; set; } [JsonProperty("completion_tokens")] public int CompletionTokens { get; set; } [JsonProperty("total_tokens")] public int TotalTokens { get; set; } } } 
定义消息池
// 定义消息池 public class MessagePool { public List<Message> Messages { get; set; } public MessagePool() { Messages = new List<Message>(); } public void AddMessage(Message message) { Messages.Add(message); } public void ClearMessages() { Messages.Clear(); } } 
定义角色
enum eRole { User, Assistant} string Role(eRole role) { return role == eRole.User ? "user" : "assistant"; } 
定义聊天函数
private string Chat(string strSend, eRole role) { var client = new RestClient($"https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-3.5-4k-0205?access_token={GetAccessTokenMethod()}"); client.Timeout = -1; var request = new RestRequest(Method.POST); request.AddHeader("Content-Type", "application/json"); AddMessageToPool(strSend, role); var body = JsonConvert.SerializeObject(ernieMessage, Formatting.None); request.AddParameter("application/json", body, ParameterType.RequestBody); IRestResponse response = client.Execute(request); AddMessageToPool(response.Content, eRole.Assistant); ChatCompletionResult result = JsonConvert.DeserializeObject<ChatCompletionResult>(response.Content); FillCompletionInfo(result); if (result.NeedClearHistory) ClearHistoryMethod(); return result.Result; } 
完整代码

完整代码

jsontoken百度智能chatcliassistantappcreatepromptaso数据流ivabaidu大模型优惠券聊天模型时间戳模型部署api语言模型
  • 本文作者:李琛
  • 本文链接: https://wapzz.net/post-17039.html
  • 版权声明:本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。
本站部分内容来源于网络转载,仅供学习交流使用。如涉及版权问题,请及时联系我们,我们将第一时间处理。
文章很赞!支持一下吧 还没有人为TA充电
为TA充电
还没有人为TA充电
0
  • 支付宝打赏
    支付宝扫一扫
  • 微信打赏
    微信扫一扫
感谢支持
文章很赞!支持一下吧
关于作者
2.3W+
5
0
1
WAP站长官方

一遍就会!Stable Diffusion 文生图最全、最强教程!

上一篇

Stable Diffusion | Gradio界面设计及API调用

下一篇
  • 复制图片
按住ctrl可打开默认菜单