【.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接口的耳机怎么办呢,这个时候就需要使用到一个转换器,…...
iOS开发多target
场景 背景:设想一下有一个场景,一个业务分为多种身份,他们大部分功能是相同的,但是也有自己的差异性。这种情况,想要构建出不同身份的APP。你会怎么做??? 当然,你可以拷贝一份代码出来,给项目重新命名。这样做的好处是,他们互相不会冲突,不用去关心是否有逻辑的冲…...
100种思维模型之每日评估思维模型-58
曾子曰:吾日三省吾省,为人谋而不忠乎?与朋友交不信乎?传不习乎? 曾国藩,坚持每日写复盘日记,最后他用自己的实践经历向我们证明:一个智商很平庸、出身很普通且有着各种毛病的人&…...
libreoffice api
libreOffice API是用于访问libreOffice的编程接口。可以使用libreOffice API创建、打开、修改和打印libreOffice文档。 LibreOffice API支持Basic、Java、C/C、Javascript、Python语言。 这是通过一种称为通用网络对象 (Universal Network Objects, UNO) 的技术实现的ÿ…...
全网最火,Web自动化测试驱动模型详全,一语点通超实用...
目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 自动化测试模型&a…...
如何写软件测试简历项目经验,靠这个面试都要赶场
一、前言:浅谈面试 面试是我们进入一个公司的门槛,通过了面试才能进入公司,你的面试结果和你的薪资是息息相关的。那如何才能顺利的通过面试,得到公司的认可呢?面试软件测试要注意哪些问题呢?下面和笔者一起来看看吧。这里分享一…...
【Linux】Linux下安装Mysql(图文解说详细版)
文章目录 前言第一步,进到opt文件夹下面,为什么?因为opt文件夹相当于Windows下的D://software第二步,用yum安装第三步,设置mysql的相关配置第四步,设置远程连接。第五步,更改mysql的语言第六步&…...
Cookie和Session的API、登录页面
目录 一、Cookie 和 Session 1、HttpServletRequest 类中的相关方法 2、HttpServletResponse 类中的相关方法 3、HttpSession 类中的相关方法 4、Cookie 类中的相关方法 二、网页登录 1、约定前后端交互接口 2、编写一个简单的登录页面 3、编写一个Servlet 来处理这个…...
C++数据结构:手撕红黑树
目录 一. 红黑树的概念及结构 二. 红黑树节点的定义 三. 红黑树节点的插入 3.1 初步查找插入节点的位置并插入节点 3.2 红黑树结构的调整 3.3 红黑树节点插入完整版代码 四. 红黑树的结构检查 4.1 检查是否为搜索树 4.2 检查节点颜色是否满足要求 附录:红黑…...
Spring IoC 深度学习
Io回顾 IoC 是 Inversion of Control 的简写,译为“控制反转”,它不是一门技术,而是一种设计思想,是一个重要的面向对象编程法则,能够指导我们如何设计出松耦合、更优良的程序。 Spring 通过 IoC 容器来管理所有 Jav…...
C语言从入门到精通第17天(指针和数组联用)
指针和数组联用 不同类型指针变量之间的区别数组的指针指针数组 不同类型指针变量之间的区别 在了解数组和指针联用之前,我们先对指针变量进行补充。我们对比一下int *p1和char *p2的区别? 相同点: 都是指针变量都是用来保存一个内存地址编…...
商务网站如何推广/百度收录刷排名
数据库的读写分离的好处? 1. 将读操作和写操作分离到不同的数据库上,避免主服务器出现性能瓶颈; 2. 主服务器进行写操作时,不影响查询应用服务器的查询性能,降低阻塞,提高并发; 3. 数据拥有多个…...
上海网站外包/seo查询排名系统
当您听到“软件测试”这个术语时,您是否会想到一种特定类型的测试——例如功能测试或回归测试——或者您是否立即开始将复杂的、相互关联的测试类型和技术网络可视化,这些测试类型和技术构成了广泛的测试世界。 大多数有经验的开发人员都明白,…...
越秀区网站建设/手机百度网盘网页版登录入口
运算符含义运算符含义&按位与~取反|按位或<<左移^按位异或>>右移运算量只能是整型或字符型的数据,不能为实型数据。 & 如果参加&运算的是负数,则以补码的形式表示为二进制数,然后按位进行“与”运算。 用途&#x…...
平台期一般持续多久/网站优化的方法
在没有学到ES6之前,我们通常使用的都是var,来进行声明变量的. 有了ES6,我们声明变量的方式多了let和const这两种,这两种声明有什么好处呢?通过一些小例子来了解一下。 你将会涉及到以下的一个概念: 没有变量提升不能重…...
卫龙的网站做的污污分/it培训班出来工作有人要么
无论是大龄儿童,还是带娃的老母亲每次在宜家的儿童区带着嫌弃又难以抗拒的心情选了又选最终开开心心带走一个“丑娃娃”(口嫌体正直!)emmm,如果这还不算什么接着看!掉威亚的大象(怎么想的&#…...
wordpress插件语言包/开网站怎么开
概述ab(Apache benchmark)是一款常用的压力测试工具。简单易用,ab的命令行一次只能支持一次测试。如果想要批量执行不同的测试方式,并自动对指标进行分析,那么单靠手工一条一条命令运行ab是不可能的。下面介绍下批量模式怎么实现。一、脚本说…...