【大模型部署】在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;
}
完整代码
完整代码
相关文章:
【大模型部署】在C# Winform中使用文心一言ERNIE-3.5 4K 聊天模型
【大模型部署】在C# Winform中使用文心一言ERNIE-3.5 4K 聊天模型 前言 今天来写一个简单的ernie-c#的例子,主要参考了百度智能云的例子,然后自己改了改,学习了ERNIE模型的鉴权方式,数据流的格式和简单的数据解析,实…...
【Unity】Unity项目转抖音小游戏(三)资源分包,抖音云CDN
业务需求,开始接触一下抖音小游戏相关的内容,开发过程中记录一下流程。 使用资源分包可以优化游戏启动速度,是抖音小游戏推荐的一种方式,抖音云也提供存放资源的CDN服务 抖音云官方文档:https://developer.open-douyi…...
SQLite查询优化
文章目录 1. 引言2. WHERE子句分析2.1. 索引项使用示例 3. BETWEEN优化4. OR优化4.1. 将OR连接的约束转换为IN运算符4.2. 分别评估OR约束并取结果的并集 5. LIKE优化6. 跳跃扫描优化7. 连接7.1. 手动控制连接顺序7.1.1. 使用 SQLITE_STAT 表手动控制查询计划7.1.2. 使用 CROSS …...
UE4编辑器End键Actor贴近地面
void UXXXEditorFunctionLibrary::SnapToFloor(AActor* Actor) { if (Actor) { Actor->Modify(); GEditor->SnapObjectTo(FActorOrComponent(Actor), false, false, false, false); Actor->InvalidateLightingCache(); Actor->UpdateComponentTransforms(); } }...
2024儿科常用心理评估量表汇总,附详细操作步骤与评定标准
在社会的快速发展以及家庭教育模式的转变下,儿童心理健康问题正逐步成为公众瞩目的焦点。焦虑症、抑郁症、适应障碍等儿科常见的症状,不仅对孩子的身心健康构成威胁,更可能在他们的学习旅程和社交互动中制造重重障碍。 儿科医师常用评估量表…...
Python 脚本化 Git 操作:简单、高效、无压力
前言 如何判定此次测试是否达标,代码覆盖率是衡量的标准之一。前段时间,利用fastapi框架重写了覆盖率统计服务,核心其实就是先获取全量代码覆盖率,然后通过diff操作统计增量代码覆盖率,当然要使用diff操作,…...
手搓顺序表(C语言)
目录 SeqList.h SeqList.c 头插尾插复用任意位置插入 头删尾删复用任意位置删除 SLtest.c 测试示例 顺序表优劣分析 SeqList.h //SeqList.h#pragma once#include <stdio.h> #include <assert.h> #include <stdlib.h> #define IN_CY 3typedef int S…...
一文搞懂oracle事务提交以及脏数据落盘的原则
本文基于oracle 19c 做事务提交以及oracle脏数据落盘的相关解读 第一章 相关进程及组件介绍: 1.LGWR: 重做日志条目在系统全局区域 (SGA) 的重做日志缓冲区中生成。LGWR 按顺序将重做日志条目写入重做日志文件。如果数据库具有…...
OceanBase:列存储
目录 1、列存储的定义 1、默认创建列存表 3、指定创建列存表 4、指定创建列存行存冗余表 5、行、列存储查询测试 1、列存储的定义 行存储(Row-based Storage):行存储是以行为单位进行组织和存储数据。在这一模式下,数据库将…...
Rust:WIndows 环境下交叉编译 Linux 平台程序
在Windows下交叉编译Rust程序以在x86_64位的CentOS操作系统上运行,你需要遵循几个步骤来设置交叉编译环境并编译你的程序。以下是一个大致的指南: 1. 安装Rust和Cargo 首先,确保你已经在Windows上安装了Rust和Cargo。你可以从Rust官方网站下…...
从零学爬虫:使用比如说说解析网页结构
新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言 二、网页结构概述 示例:查看网页结构 三、使用比如说说解析网页 1.…...
C#数据类型变量、常量
一个变量只不过是一个供程序操作的存储区的名字。 在 C# 中,变量是用于存储和表示数据的标识符,在声明变量时,您需要指定变量的类型,并且可以选择性地为其分配一个初始值。 在 C# 中,每个变量都有一个特定的类型&…...
Java高级面试问题及答案
Java高级面试问题及答案 问题1: 请描述Java内存模型(JMM)及其在并发编程中的重要性。 探讨过程: 在并发编程中,多个线程之间如何协调对共享变量的访问是一个核心问题。Java内存模型定义了一组规则,来确保在多线程环境中对共享变量的修改能够…...
出现 Transaction rolled back because it has been marked as rollback-only 解决方法
目录 1. 问题所示2. 原理分析3. 解决方法1. 问题所示 用户反馈的Bug如下所示: Transaction rolled back because it has been marked as rollback-only截图如下: 浏览器终端同样显示: 2. 原理分析 错误表明,在事务的生命周期内,遇到了某个异常或条件,导致该事务被标记…...
数据结构算法题day03
数据结构算法题day03 题目 题目 2.设计一个高效算法,将顺序表L的所有元素逆置,要求算法的空间复杂度为O(1)算法思想: 1、常规的解法: Void reverse (sqlist &L){Elemtype temp; //辅助变量for(i 0,i < L.length; i){temp…...
深入分析C#中的“编写器”概念——代码修改、注解与重构
文章目录 1. 编写器(Writer)的概念2. 编写器的作用和工作原理3. 编写器的重要性4. 写入器常用方法5. 写入器示例6. 编写器示例——使用Fody进行代码注解和重构7. 总结 在软件开发过程中,代码的维护和更新是至关重要的。C#作为一种流行的编程语…...
uview1.0 u-form表单回显校验不通过
提交到后端的数据,回显后不做任何修改无法通过表单校验 原因,u-form表单校验的类型默认为string,但是后端返回的是integer类型,导致无法通过校验 解决,既然后端返回的是整数形,那么我们就将校验规则的type…...
监控员工电脑的软件有哪些,不得不说这几款电脑监控软件太好用了
监控员工电脑的软件在市场上种类繁多,以下是几款备受好评的电脑监控软件,它们各自具有独特的功能和优势,选择前必须了解一下才能做成正确决定。 1.安企神: 这款软件支持7天试用测试,获取测试版请移驾 ↓↓↓ 安企神…...
【MySQL精通之路】索引优化(2)
目录 1 MySQL如何使用索引 2 主键优化 3 空间索引优化 4 外键优化 5 列索引 6 多列索引 7 验证索引使用情况 8 InnoDB和MyISAM索引统计集合 9 B树索引与哈希索引的比较 9.1 B-树索引特征 9.2 哈希索引特征 10 索引扩展的使用 11 优化器使用生成的列索引 12 不可见…...
VUE3 学习笔记(5):数组处理、计算属性与函数、class与Style绑定
数组监测处理方法 VUE 提供了关于数组处理的直接方法,但并非全部都是可以处理的 如下可以直接处理: .push --向数组中增加 .pop --从数组中最后减去一个元素 .shift --从数组中第一个减去一个元素 .unshift --在数组中的头部添加一个元素 .splice --自定…...
C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...
【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...
FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...
windows系统MySQL安装文档
概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...
