【.NET AI Books 前言】Azure OpenAI Service 入门
本书是为 .NET 开发者而写的,让 .NET 开发者能快速掌握 Azure OpenAI Service 的使用技巧。
ChatGPT 的到来意味着我们已经置身于 AI 引起的全新变革中,作为开发者你可能将面临几种改变:
-
GPT 模型到来后,如何去架构好企业解决方案?
-
Prompt 工程的到来,开发者是否能成功转型?
-
如何打通 GPT 和企业数据?
-
原来的人工智能技术还有用吗?
-
Azure OpenAI Service 和 OpenAI Service 比有什么优势?
通过本书的相关章节,将逐一告诉大家。
关于 Azure OpenAI Service
▍Azure OpenAI Service 和 OpenAI Service 之间有什么不同呢 ?
-
安全性 - Microsoft Azure OpenAI Service 有严格的数据、网络、身份安全机制,为企业的信息安全保驾护航。这就包括了密钥自动加密服务、数据隐私服务以及内容管理等。
-
稳定性 - 通过 Microsoft Azure OpenAI Service 为企业带来更稳定的接口访问。
-
可靠性 - 具备业务持续性和灾难恢复,当出现大范围故障时,还能从区域性故障中恢复,可以即时执行,而且成本非常低。
▍使用 Azure OpenAI Service
要使用 Azure OpenAI Service 你需要拥有一个 Azure 账号,并通过该账号去申请 Azure OpenAI Service 。申请通过后,你就可以像一般的 Azure 服务一样通过资源组的方式,开始创建属于自己的 Azure OpenAI Service。
STEP 1. 进入 Azure Portal (https://portal.azure.com/) ,点击创建资源:
选择 Azure OpenAI 进行创建:
STEP 2. 创建过程需要选择你的 Azure 订阅,并创建相关资源组,以及选择区域(建议选择 South Central US),并给一个唯一的名字,并选择价格,如图:
STEP 3. 创建成功后,选择模型部署选项,点击创建:
然后选择你所需要的模型进行部署:
完成后就可以看到相关的列表。
注意:现在 GPT-4 需要额外申请,具体请参考:https://aka.ms/oaiapply
通过 Azure OpenAI Studio 管理你的 OpenAI 应用场景
通过 Azure OpenAI Studio(https://oai.azure.com/portal)你可以迅速完成 Azure OpenAI 模型的应用、部署及管理。我在这里选择一个简单的总结场景来完成相关的展示:
1、选择总结文章的示例场景:
2、点击进入 Playground 后,你就可以输入相关 Prompt 来完成一些应用设定:
你也可以选择不同的参数进行调整,当然选择 View code 也可以快速地查看相关代码,直接引用就可以给 Python 和 .NET 使用,其他语言也可以参考 curl,json 进行调整:
补充一下引用代码时别忘记添加 Key,Key 所在位置在创建的 Azure OpenAI 资源里:
Azure OpenAI Service 的能力和概念
我们在使用 Azure OpenAI Service 的时候,都会碰到一些概念,我们进行一个简单的入门:
▍Azure OpenAI 的能力
Azure OpenAI 具备文本生成,代码生成,图像生成的三大能力:
1. 文本生成
文本生成能力具备文本归纳、分类、翻译、问答、创作、推荐等能力。在 Azure OpenAI Service 上,你可以通过部署 GPT-3 / GPT-3.5 / GPT-4 的模型为应用提供文本生成功能。我们如果在无需编码的时候,你可以使用 ChatGPT 体验强大的功能,当然你也可以通过 Azure OpenAI Studio 的 Playground 体验 ChatGPT。
2. 代码生成
如果你已经是 GitHub Copilot 的用户,有惊艳到吗?你希望拥有一个自己企业的智能代码助手吗?通过 Azure OpenAI Service 提供的 Codex 模型就可以配合完成。Codex 模型基于 GPT-3,经过优化以理解和编写代码。这些模型基于自然语言以及用来自公共存储库的数十亿行代码进行了训练。Codex 能够从自然语言指令(如代码注释)生成代码,并且可以建议完成代码函数的方法。
3. 图像生成
处理图像的模型称为 DALL-E。图像功能包括创建图像、编辑图像和创建图像变体这三类。
▍Azure OpenAI 的参数设定
在 Azure OpenAI Studio 的 Playground 中,可以看到一些参数,这些参数对于生成式 AI 是非常重要的,下面我们就来学习一下:
Temperature
是控制生成的文本输出的随机程度的参数。Temperature 值越高,输出的结果越随机,而值越低,输出的结果则越趋向于确定性。
Token
是指在自然语言处理中的一个概念,它是文本中的一个基本单元,通常是一个单词或一个标点符号。在自然语言处理中,为了方便处理文本,我们需要将文本中的每个单词或标点符号都转换为一个数字表示,这个数字就被称为 Token。在 OpenAI 的一些模型中,Token 还可以包括特殊的 Token,如起始 Token、结束 Token,用于指示模型的输入和输出。在使用 OpenAI 的模型进行训练或生成文本时,需要对文本进行分词和 Token 化处理,以便对文本进行处理和表示。
Top K
是指在自然语言处理中,使用的一个参数,用于控制生成文本的多样性。具体来说,Top K 参数指的是在生成下一个词时,只考虑概率值最高的前 K 个候选词,而不是所有可能的词。这样可以使得生成的文本更加多样化和有趣,避免出现过于模板化和单调的文本。通常情况下,K 的值会设置在几十到几百之间,具体取决于任务和数据集的不同。
Top P
是在自然语言处理中,用于控制生成文本的多样性的一种技术。具体来说,Top P 参数指的是在生成下一个词时,只考虑概率累加值最高的一组词,这组词的概率之和大于等于给定的阈值 P。而不是考虑所有可能的词。这个阈值 P 通常被设置在 0.1 到 0.9 之间,具体取决于任务和数据集的不同。Top P 技术可以使得生成的文本更加多样化,避免出现重复和单调的文本。
Frequency Penalty
是在自然语言处理中,用于控制生成文本的多样性的一种技术。具体来说,Frequency Penalty 可以用于降级那些在之前的生成文本中出现频率较高的词语,在生成下一个词时,这些词语的概率会被降低,从而鼓励模型生成更加多样化的文本。通过调整 Frequency Penalty 的大小,可以实现对文本多样性和流畅性的平衡。
Presence Penalty
是在自然语言处理中,用于控制生成文本的多样性的一种技术。Presence Penalty 可以用于降级那些在之前的生成文本中已经出现过的词语,在生成下一个词时,这些词语的概率会被降低,从而鼓励模型生成更加多样化的文本。与 Frequency Penalty 不同的是,Presence Penalty 不仅考虑了词语的出现频率,还考虑了词语是否已经出现过。通过调整 Presence Penalty 的大小,可以实现对文本多样性和流畅性的平衡。
.NET 开发者入门
▍.NET for Azure OpenAI Service 基础
Azure OpenAI Service 提供了 REST 的 API 给不同语言进行调用,针对 .NET 用户更发布了基于 Azure OpenAI 的 .NET SDK , .NET 开发者可以快速接入进行 Azure OpenAI 应用场景的开发。
dotnet add package Azure.AI.OpenAI
当然你也可以用 HttpClient 的方式直接访问 endpoint 来完成。
对于要探索 Azure OpenAI Service 的 .NET 开发者,个人建议使用 Notebook 的方式来配合。你只需要通过最新的 .NET SDK 7 和 Visual Studio Code 及 .NET Extensions Pack 的 Visual Studio Code 插件就可以通过 Polyglot Notebook 做交互式的开发体验。这样的好处是,更方便调整参数和优化 OpenAI 的代码。
以下是用 Polyglot Notebook 调用 Azure OpenAI Service 中 GPT-3.5 turbo 的 Notebook 实现:
▍Semantic Kernel 面向 AI 编程的框架
介绍一个微软最新的面向 AI 编程的开源框架 - Semantic Kernel (https://github.com/microsoft/semantic-kernel) 。
生成式人工智能诞生后,从告诉机器要怎么做转变为告诉机器必须要做什么,这就降低了对于编码的依赖。例如翻译、归纳、总结再不用做具体算法了,只需要用简单的提示语,AI 就可以帮你完成。那就是说我们需要做的是写 Prompt 触发人工智能做事,这也是为什么现在 Prompt 工程人员这么值钱的原因。
Prompt 的内容涵盖不同的场景,不同的任务,涉及到各式各样的工作流程。如何管理好这些 Prompt 让生成式 AI 能完成任务,这是大家所关注的。还有通过上下文对话作出不同的响应,让 AI 注入到对话流中也很重要。Semantic Kernel 就是用来管理和解决上下文对话以及各种技能的框架。
Semantic Kernel 是面向 AI 编程的最佳方案,可以结合不同场景、综合技能和意图,支持多语言开发的框架。.NET 开发者可以通过 Semantic Kernel,更高效地使用生成式 AI 进行应用开发。本书会基于 SK 来展开,让大家在学习 Azure OpenAI 的过程中,同时学习 Semantic Kernel 相关知识。
本章作为前言部分,主要介绍了 Azure OpenAI Service 的相关功能,以及针对 .NET 开发者的 SDK。希望以此作为 AI 开发者入门的第一步。
相关资料
-
免费 Azure 申请:https://azure.com/free
-
Azure for Student 申请(需要 edu 邮箱):https://aka.ms/studentgetazure
-
Azure OpenAI Service 申请:https://aka.ms/oaiapply
-
关于 Semantic Kernel:https://github.com/microsoft/semantic-kernel
点我前往 AOAI 官方文档~
相关文章:

【.NET AI Books 前言】Azure OpenAI Service 入门
本书是为 .NET 开发者而写的,让 .NET 开发者能快速掌握 Azure OpenAI Service 的使用技巧。 ChatGPT 的到来意味着我们已经置身于 AI 引起的全新变革中,作为开发者你可能将面临几种改变: GPT 模型到来后,如何去架构好企业解决方案…...
散列查找实验(开散列) 题目编号:583
题目描述 请设计一个整型开散列表,散列函数为除留余数法,其中散列表的长度、除留余数法的模和关键码的个数由键盘输入,再根据输入由键盘输入所有的关键码。分别对三个待查值在散列表中进行查找,输出查找结果采用头插法。 输入描…...

Java版spring cloud 企业工程项目管理系统平台源码(三控:进度组织、质量安全、预算资金成本、二平台:招采、设计管理)
工程项目管理软件(工程项目管理系统)对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营,全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#…...

Go type关键字定义新类型和类型别名的区别
type关键字再定义类型和类型别名有很大的区别,前者是新定义一个数据类型,后者是对类型的重命名。 type NewString stringtype OldString stringtype NewString string声明了一个NewString类型,和string具有完全一致的数据结构,确…...

Neural Network学习笔记2
torch.nn: Containers: 神经网络骨架 Convolution Layers 卷积层 Pooling Layers 池化层 Normalization Layers 正则化层 Non-linear Activations (weighted sum, nonlinearity) 非线性激活 Convolution Layers Conv2d torch.nn.Conv2d(in_channels, out_channels, ke…...
用@Value注解为bean的属性赋值
1.Value注解 Value注解的源码,如下所示 Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE}) Retention(RetentionPolicy.RUNTIME) Documented public interface Value {String value(); }从Value注解的源码中…...

拨云见日:深入理解 HTML 解析器与有限状态机
文章目录 参考描述状态机状态机有限状态机与无限状态机有限状态机与自动售货机无限状态机与计算器 HTML 解析器HTML 解析器HTML 与有限状态机 HTML 解析器的常见状态初始状态DOCTYPE 状态注释状态标签状态开始标签状态属性状态属性名状态属性值状态 结束标签状态自闭和标签状态…...

Java线程池及其实现原理
线程池概述 线程池(Thread Pool)是一种基于池化思想管理线程的工具,经常出现在多线程服务器中,如MySQL。 线程过多会带来额外的开销,其中包括创建销毁线程的开销、调度线程的开销等等,同时也降低了计算机…...

进程替换函数组介绍exec*
目录 前述 execl execlp execle execv execvp execvpe 前述 介绍后缀的意义: l (list):表示参数采用列表。 v(vector):参数同数组表示。 p(path):自…...

欧科云链OKLink:2023年4月安全事件盘点
一、基本信息 2023年4月安全事件共造约6000万美金的损失,与上个月相比,损失金额有所降落,但安全事件数量依旧不减。其中,Yearn Finance因参数配置错误,导致了1000多万美金的损失。同时,有一些已经出现过的…...
KubeVirt备份与还原方案【翻译】
KubeVirt备份与还原方案【翻译】 ref:https://github.com/kubevirt/kubevirt/blob/main/docs/backup-restore-integration.md 备份 为所有必需的k8s资源构建依赖关系图冻结应用程序pvc数据快照解冻应用程序将所有必需的k8s资源定义拷贝到一个共享的存储位置(可选…...

使用PyQt5设计一款简单的计算器
目录 一、环境配置: 二、代码实现 三、主程序 四、总结 本文使用PyQt5设计一款简单的计算器,可以通过界面交互实现加减乘除的功能,希望能够给初学者一些帮助。主要涉及的知识点有类的定义与初始化、类的成员函数、pyqt5的信号与槽函数等。…...

Htop使用说明
目录 引言 什么是htop htop安装 htop界面介绍 htop功能介绍 引言 我们使用服务器的时候常常需要关注下自己的程序资源占用情况,htop就是一种互动式的进程查查看器,整齐用下来感觉比top的逼格高,造作可视化都更方便些,我觉得还…...
PostgreSQL Linux安装
安装依赖: sudo yum -y install readline-devel zlib-devel 安装Postgres: ssh hadoophadoop001 #下载Postgres wget https://ftp.postgresql.org/pub/source/v14.2/postgresql-14.2.tar.gz tar -zxvf postgresql-14.2.tar.gz -C /data #编译前准备 /dat…...
亚商投资顾问 早餐FM/0509车辆电动化
01/亚商投资顾问 早间导读 1.上交所拟于5月11日举办“发现央企投资价值,促进央企估值回归”交流会 2.监管部门十方面举措加强房地产经纪行业管理 3.广东:推动城市公共服务及货运配送车辆电动化替代 4.昆山两楼盘因大幅降价被暂停网签:降幅…...

AI绘画天花板——Midjourney注册使用保姆级教程(5月5日验证有效)
大家好,我是可夫小子,关注AIGC、读书和自媒体。解锁更多ChatGPT、AI绘画玩法。加我,备注:aigc,拉你进群。 现在市面上AI绘图大概有三大阵营:Midjourney、Stable Diffusion,还有一个就是OpenAI实…...
学习笔记(2)项目结构描述 - manifest.json和pages.json
目录 1,manifest.json2,pages.json2.1,pages2.2,globalStyle2.3,tabBar 1,manifest.json 官方详情 uni-app 的 appid 由 DCloud 云端分配,主要用于 DCloud 相关的云服务,请勿自行修…...

vector、deque、list相关知识点
vector erase返回迭代器指向删除元素后的元素insert返回迭代器指插入的元素reserve只给容器底层开指定大小内存空间,并不添加新元素 deque 底层数据结构 动态开辟的二维数组,一维数组从2开始,以2倍方式扩容,每次扩容和&#x…...

多维时序 | MATLAB实现基于VMD-SSA-LSSVM、SSA-LSSVM、VMD-LSSVM、LSSVM的多变量时间序列预测对比
多维时序 | MATLAB实现基于VMD-SSA-LSSVM、SSA-LSSVM、VMD-LSSVM、LSSVM的多变量时间序列预测对比 目录 多维时序 | MATLAB实现基于VMD-SSA-LSSVM、SSA-LSSVM、VMD-LSSVM、LSSVM的多变量时间序列预测对比预测效果基本介绍程序设计学习总结参考资料 预测效果 基本介绍 多维时序 …...

设计模式——适配器模式(类适配器、对象适配器)
是什么? 我们平时的有线耳机接口分为USB的和Type-C的接口,但是手机的耳机插口却只有一个,像华为的耳机插口现在基本都是Type-c的,那如果我们现在只有USB接口的耳机怎么办呢,这个时候就需要使用到一个转换器,…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行
项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
怎么让Comfyui导出的图像不包含工作流信息,
为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐) 在 save_images 方法中,删除或注释掉所有与 metadata …...
C语言中提供的第三方库之哈希表实现
一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...