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

【.NET AI Books 前言】Azure OpenAI Service 入门

本书是为 .NET 开发者而写的,让 .NET 开发者能快速掌握 Azure OpenAI Service 的使用技巧。

ChatGPT 的到来意味着我们已经置身于 AI 引起的全新变革中,作为开发者你可能将面临几种改变:

  1. GPT 模型到来后,如何去架构好企业解决方案?

  2. Prompt 工程的到来,开发者是否能成功转型?

  3. 如何打通 GPT 和企业数据?

  4. 原来的人工智能技术还有用吗?

  5. 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接口的耳机怎么办呢,这个时候就需要使用到一个转换器&#xff0c…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中&#xff0c;性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期&#xff0c;开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发&#xff0c;但背后往往隐藏着系统资源调度不当…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分&#xff1a;体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分&#xff1a;体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...