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

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

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

前言

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

步骤

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

请添加图片描述

步骤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;
}
完整代码

完整代码

http://www.lryc.cn/news/355925.html

相关文章:

  • 【Unity】Unity项目转抖音小游戏(三)资源分包,抖音云CDN
  • SQLite查询优化
  • UE4编辑器End键Actor贴近地面
  • 2024儿科常用心理评估量表汇总,附详细操作步骤与评定标准
  • Python 脚本化 Git 操作:简单、高效、无压力
  • 手搓顺序表(C语言)
  • 一文搞懂oracle事务提交以及脏数据落盘的原则
  • OceanBase:列存储
  • Rust:WIndows 环境下交叉编译 Linux 平台程序
  • 从零学爬虫:使用比如说说解析网页结构
  • C#数据类型变量、常量
  • Java高级面试问题及答案
  • 出现 Transaction rolled back because it has been marked as rollback-only 解决方法
  • 数据结构算法题day03
  • 深入分析C#中的“编写器”概念——代码修改、注解与重构
  • uview1.0 u-form表单回显校验不通过
  • 监控员工电脑的软件有哪些,不得不说这几款电脑监控软件太好用了
  • 【MySQL精通之路】索引优化(2)
  • VUE3 学习笔记(5):数组处理、计算属性与函数、class与Style绑定
  • 基于springboot实现大学生一体化服务平台系统项目【项目源码+论文说明】
  • 惠海 H6902B 升压恒流芯片 太阳能 风扇灯 应急灯 支持3.7V 5V 7.4V
  • 体验SmartEDA的高效与便捷,电子设计从未如此简单
  • LangChain笔记
  • 金融序列的布朗运动
  • 利用ChatGPT辅助数学建模竞赛:理清思路、解题技巧与实战经验
  • Java基础——Optional
  • Mask R-CNN实战
  • 02--SpringBoot自动装配原理
  • 【加密与解密(第四版)】第十二章笔记
  • 高并发幂等计数器【面试真题】