在 Visual Studio 2022 中使用 GitHub Copilot chat

本文通过实际应用场景和示例代码展示了 GitHub Copilot Chat 在 Visual Studio 2022 中的优势和特点。最后,鼓励读者在实际工作中尝试使用 Copilot Chat,以提升开发效率和代码质量。希望这些信息和经验能为你在使用GitHub Copilot时提供帮助和启发。

文章目录

  • 1. 背景
  • 2. 活动回顾
  • 3. 启用 Copilot Chat
    • 3.1 确认权限
    • 3.2 安装插件
  • 4. 使用体验
    • 4.1 如何交互
    • 4.2 分析当前异常
    • 4.3 简单的测试
      • 4.3.1 对话式编程
      • 4.3.2 代码解释
      • 4.3.3 问题解答
      • 4.3.4 提供优化建议
    • 4.4 编写单元测试
  • 5. 最后

1. 背景

近年来,GitHub Copilot 的问世为软件开发领域带来了新的可能性。作为一款智能编程工具,它极大地提高了开发者的编程效率。为了更深入了解和掌握 GitHub Copilot 的使用技巧,我参加了一场名为“GitHub Copilot开发者训练营”的活动。

活动展板

2. 活动回顾

北京的线下场是在北京微软大厦故宫会议室,这也是我第一次到微软大厦。

微软大厦

本次活动可谓是收获满满,会议中几位老师,分享了 GitHub Copilot 使用技巧和最佳实践,并做了实操的演示。我们探讨了 GitHub Copilot 如何帮助开发者提高开发效率、助力创新以及弥补技能差距。通过使用 GitHub Copilot,开发者可以专注于解决关键和实际问题,加快原型创建,轻松学习新技术,从而提高生产力。此外,徐磊老师列举了 10 个 AI 在编程场景中表现出色的例子,展示了AI如何在各种编程任务中取得优异成果,包括正则表达式编写、编写测试代码、使用难以记忆的关键字等。GitHub Copilot 作为一款智能编程工具,具有很大的潜力,能够帮助开发者提升开发效率和代码质量。

实操环节

当然,也有一些稍微的小遗憾。我们胖胖的卢老师竟然在上海,不过能在线下看到徐磊老师也是非常棒的。另一个遗憾,大概是没有赶上会前的拍照吧。因为上午帮我的大朋友抢六一儿童节的玩具,误入了美术馆,然后就看了一上午的美轮美奂的艺术品,流连忘返,误了饭点。等到会议地点,已是正式开始的时间了。看了会议相册,我猜是早到有单独拍照的环节。可惜了,上面只能单独放一个展板咯。

在会议中,主要介绍了 Copilot 的功能,并展示了如何在 VS Code 中使用 Copilot Chat。结合 GitHub 的 Codespaces,我们可以在完全云端的开发环境中体验到非常便捷和高效的编程过程。然而,如何在被誉为地表最强的IDE —— Visual Studio 中使用 Copilot chat 呢?接下来,就让我们一起探讨一番。

3. 启用 Copilot Chat

3.1 确认权限

Copilot Chat 属于 GitHub Copilot X 中的一项能力,采用 OpenAI GPT-4,关于它的介绍可以前往 https://github.com/features/preview/copilot-x?WT.mc_id=DT-MVP-5005195 查看。

其当前还是预览状态,如果想使用该功能,首先你需要确保你已经注册并拥有了 Github Copilot 的权限:https://github.com/features/copilot/?WT.mc_id=DT-MVP-5005195

对于普通用户,可以试用 Copilot 一个月。当确认你拥有 Copilot 的使用权限后,你可以通过这里提交预览功能的访问申请:https://aka.ms/GHCopilotXPPSignup?WT.mc_id=DT-MVP-5005195。

提交申请后,等待审核,审核结果会发送到你的邮箱,当你收到《Welcome to the Copilot chat private beta!》的邮件就意味着你可以使用 Copilot chat 了。

waitlist

3.2 安装插件

在 Visual Studio 2022 中安装 Copilot Chat 扩展非常简单,只需要在扩展管理搜索 github 选择 Visual Studio Extension for GitHub Copilot Preview 即可。

扩展安装

你也可以直接前往 Marketplace下载,完成后直接打开安装即可。

安装完成后,需要确保你已经在 Visual Studio 中登录了 Github 账户。如果你对对这一步操作不熟悉,可以前往帮助查看:在 Visual Studio 中使用 GitHub 帐户。

若操作没有问题,你就可以在顶部菜单的视图中找到 Copilot Chat

菜单

4. 使用体验

据说是与 Copilot 的沟通使用英文会更好,但是,当我看到 Copilot Chat 在 Visual Studio 中的界面后,我完全可以放心他的中文理解能力了:

UI

4.1 如何交互

和 Copilot chat 的交互有两种方式,除了可以通过打开的常驻对话框窗口外,你也可以通过右键菜单呼出对话浮窗(默认快捷键 Alt + /)。

右键菜单

对于对话相关的代码,你可以通过光标定位到某一行代码,某一个类或者方法的开通结尾,当你激活对话框时,一个粉色的框会提示你当前对话相关的代码区域,当然你也可以选择相关区域后通过右键呼出:

区域

4.2 分析当前异常

除了前面两种交互形式,在当程序调试出现 BUG 的时候,你也可以通过异常面板中“Copilot AI Assistant”快捷的询问解决方案:

Copilot

这里为了演示,我修改了正常项目的代码,让其出现了一个生命周期的相关异常。当你点击了 “Copilot AI Assistant” 其动作其实就是在对话框输入“Analyze the current exception”:

异常信息

通过上面 Copilot chat 的回复结果我们会发现,这里回复是英文的。熟悉 GPT 的同学应该清楚,AI 的回复会根据你提示的语言进行调整(毕竟不可见的输入中给 AI 输入了大量的英文报错信息)。不过,在我再次询问“程序当前的错误是怎么回事”时,他回复却耐人寻味了起来:

提问

当然,他的限制是必要的,毕竟他是作为一个编程伙伴。对于他对不理解我口语化的描述,我似乎也有些理解,就像 MOSS 的警告:禁止使用比喻,反问,暗示。

这里有个小技巧,当你的程序报错时,你可以这样提问得到中文的错误分析:“分析当前异常,使用中文回复”

分析当前异常

4.3 简单的测试

接下来我们简单的进行几个测试,感受一下 Copilot chat 带来的一些便利。当然,AI 在许多编程场景可以完全碾压人类,更多功能还需要大家自行去探索。唯一可以确定的是,以后编程基本可以脱离搜索引擎,享受到更高效的开发体验了。

4.3.1 对话式编程

有了 Copilot chat ,其实我们完全可以通过不断的与其聊天对话,完成我们的开发工作。接下来我尝试让其帮我创建一个微信用户对象,用来存储到数据库:

创建对象

这里我们不需要苦恼给对象起名,也不用考虑要存什么字段。更重要的是,他是懂我们的微信的,这里生成的结果完全没有问题。甚至于他可以直接通过快捷方式放到我的项目当中,无需我复制粘贴。

4.3.2 代码解释

我们会有需要读源码的场景,比如:接手新的项目,学习开源项目等。Copilot chat 的代码解释功能可以帮助我们节省大量的时间和精力,他可以在几毫秒中给你结果。以下是我用来询问他的一段代码:

/// <summary>
/// 验证来源
/// </summary>
/// <param name="msg_signature">微信的签名</param>
/// <param name="timestamp">时间戳</param>
/// <param name="nonce">随机字符</param>
/// <param name="echostr">加密的字符串</param>
/// <returns></returns>
public string VerifyURL(string msg_signature, string timestamp, string nonce, string echostr)
{// 微信加解密库var wxcpt = new WXBizMsgCrypt(_wechat.Value.Token, _wechat.Value.EncodingAesKey, _wechat.Value.CorpId);// 接入验证,需要输出 EchoStr 的解密结果if (!string.IsNullOrWhiteSpace(echostr)){string sEchoStr = "";var ret = wxcpt.VerifyURL(msg_signature, timestamp, nonce, echostr, ref sEchoStr);if (ret != 0){_logger.LogError("ERR: VerifyURL fail, ret: " + ret);return "";}return sEchoStr;}_logger.LogError("ERR: VerifyURL fail, empty echostr");return "";
}

以下是回复的内容:

这个函数是 VerifyURL。它有四个参数:msg_signature,timestamp,nonce 和 echostr。这个函数的主要目的是用于验证接口连接。
首先,这个函数会创建 WXBizMsgCrypt 的对象,该对象的实例用于微信消息的加解密。然后它会检查 echostr 的值是否为非空,如果不为空,则需要将 echostr 的解密结果输出。
为了完成解密过程,这个函数使用 wxcpt.VerifyURL(msg_signature, timestamp, nonce, echostr, ref sEchoStr) 方法,该方法返回一个 int 值。如果返回的不是 0,则表示解密失败,函数会通过记录日志输出错误信息并返回空字符串。否则,将解密后的字符串 sEchoStr 返回。
如果 echostr 的值为空,则表示验证失败。函数会记录一个错误日志信息并返回一个空字符串。
如果您需要进一步了解 WXBizMsgCrypt 和如何进行微信消息的加解密,请参考微信官方文档。

代码解释

4.3.3 问题解答

首先我们看一段代码:

public DbSet<MsgList> MsgLists { get; private set; }
public DbSet<CursorCache> CursorCache { get; set; }

这段代码的第二行是 AI 生成的,前面写的代码我采用了 private set,这里我向其提问:这里采用 private set 和 set 有什么区别,哪个好?

这里 AI 的回复是非常准确的,详细解释了set和private set的访问级别和用途。对于初学者,这无疑是非常有用的,他可以帮助你不断提高编程水平。

set 和 private set 是两种访问器的访问限定。 set 具有 public 的访问级别,而 private set 只有类本身内部可以访问。
当你使用 set 时,任何人都可以更改属性的值。这意味着,如果属性的值是不应该更改的,那么你应该使用 private set 而不是set。 这有助于保护对象不受不受控制的更改,并使代码更加安全。
让我们以 OnModelCreating 方法为例。这个方法只会在类内部中被访问,而不会外部进行更改。因此,建议使用 private set 以保护代码。

回答

4.3.4 提供优化建议

同时,他也可以帮助你审查代码,提供修改建议。当然,这里的小技巧依旧适用,后面记得跟上“使用中文回复”,否则大段的英文会让他忘记问题的提出是中文了。

优化建议

4.4 编写单元测试

单元测试是软件开发过程中不可或缺的一部分,它可以帮助我们确保代码的质量和功能的正确性。通过 Copilot chat ,可以帮助我们快速的创建单元测试,以下是其针对我的 minimal web API 项目生成的单元测试:

using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.TestHost;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Moq;
using System.Net.Http;
using System.Threading.Tasks;
using WeChatCustomerAzureOpenAI.WeChat;
using Xunit;public class WeChatCustomerAzureOpenAITest
{private readonly TestServer _server;private readonly HttpClient _client;public WeChatCustomerAzureOpenAITest(){_server = new TestServer(new WebHostBuilder().UseEnvironment("Development").UseStartup<Startup>());_client = _server.CreateClient();}[Fact]public async Task Verify_WeChatURL(){//Arrangevar url = "/wechatback?msg_signature=test&timestamp=0&nonce=0&echostr=123";//Actvar response = await _client.GetAsync(url);//Assertresponse.EnsureSuccessStatusCode();var responseString = await response.Content.ReadAsStringAsync();var expectedString = "123";Assert.Equal(expectedString, responseString);}[Fact]public async Task Check_Decrypt_Msg(){//Arrangevar sMsg = "123";var requestContent = new StringContent(sMsg);var context = new DefaultHttpContext();context.Request.ContentLength = requestContent.Headers.ContentLength;context.Request.Body = await requestContent.ReadAsStreamAsync();var wechat = new Mock<WechatServices>().Object;var mediator = new Mock<IMediator>().Object;var expectedString = sMsg;//Actvar result = await _server.Host.GetService<WechatServices>().DecryptMsg(sMsg, It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>());await _server.Host.GetService<Mediator>().Publish(new UserBack(result));//AssertAssert.Equal(expectedString, result);}
}

单元测试

这里的单元测试,当然是不能直接使用的,但是他完成了一个从零到一的过程。通过不断的对话调整,就会生成我们满意的结果。

5. 最后

如果你对 Copilot 和人工智能感兴趣并希望进一步了解,那么这里有一个 Microsoft Learn 的免费课程非常适合你:使用 GitHub Copilot 学习 AI。此系列视频可以指导你进入 AI 领域,探索机器学习基础知识、演示如何构建分类模型,然后介绍更高级的算法(称为神经网络)及它们在计算机视觉中的应用。

最后,请牢记这句话:AI 本身不会取代你,但掌握 AI 技能的人可能会取代你。因此,希望大家能拥抱创新,尝试新的工具,提高开发效率和代码质量。让我们共同期待 Copilot 等类似的 AI 工具不断发展,助力更多开发者轻松应对编程挑战,编写出更优秀的软件作品。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/12843.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我做了一个 VSCode 插件版的 ChatGPT

其实很早之前就想学学 VSCode 插件开发了&#xff0c;但是又不知道做什么&#xff0c;加上我这半吊子前端水平&#xff0c;迟迟没有动手。 最近 ChatGPT 火的一塌糊涂&#xff0c;我也一直在用&#xff0c;真的非常好用&#xff0c;有些问题之前需要 Google 搜索&#xff0c;现…

ubuntu+vscode+chatGPT踩坑总结

最近在linux上用Vscode跑jupyter notebook&#xff08;windows调试环境搞得祭了&#xff0c;Vscode死活连接不上jupyter的server&#xff09;&#xff0c;从装vscode到使用chatGPT插件总结如下&#xff1a; 1.proxy问题&#xff0c;伴随整个过程。首先是安装结束后&#xff0c…

VS Code的神级插件Bito - GPT-4 和 ChatGPT 编写代码、解释代码、创建测试

Bito是什么&#xff1f; Bito是一款插件&#xff0c;它目前支持VS Code、Chrome插件&#xff0c;以及Jetbrains的全系列IDE&#xff0c;例如&#xff0c;IDEA、PyCharm、Clion等&#xff0c;可以说能够覆盖大部分开发同学了。 Bito 通过将 **GPT-4 和 ChatGPT 引入你的 IDE 和…

vs code 好用的插件Bito 基于ChatGPT编写代码、解释代码。。。。

基于chatGpt 完成vs code 插件 可以回答一下js ts....... 方法及方案 1安装 2 通过正确邮箱登录 登录有验证发送邮箱 3 获取验证登录吗 6位数进入选择语种 话题类型选择 4 发送请求 提问 别说挺有意思&#xff0c;杜绝依赖No&#xff01;&#xff01;&#xff01;&#xff01;&…

[时间同步] vscode chatGPT提供的程序打包封装成api解决方案怎么样

背景 在完成gnss时间同步程序大部分需求串口配置、串口数据中找出推荐定位信息RMC解析UTC时间以及UTC时间更新系统时间等功能后&#xff0c;有个需求比较特别&#xff0c;需要客户来操作。当车辆在地库场景待时间过久后重新回到地面&#xff0c;一直在自走的系统时间与又定位好…

【龙芯电脑3A5000使用VSCode的ChatGPT插件】

龙芯电脑3A5000使用VSCode的ChatGPT插件 在龙芯应用合作社下载安装VSCodeVSCode安装ChatGPT插件测试使用 在龙芯应用合作社下载安装VSCode VSCode安装ChatGPT插件 测试使用 让ChatGPT写一个C语言累加程序 咨询ChatGPT行业情况&#xff0c;发现回答内容还是有些不足的&#xff…

酷早报:2023年1月6日全球Web3加密行业重大资讯大汇总

2023年1月6日 星期五 【数据指标】 加密货币总市值&#xff1a;$0.82万亿 BTC市值占比&#xff1a;39.42% 恐慌贪婪指数&#xff1a;26 恐慌 【今日快讯】 1、【政讯】 1.1.1、国际货币基金组织IMF&#xff1a;美国通胀尚未“转危为安” 美联储需加息到底 1.1.2、美联储…

Prompt+低代码开发实战

近期 AIGC 狂潮席卷&#xff0c;“前端走向穷途”“低代码时代终结”的言论甚嚣尘上。事实上 GPT 不仅不会干掉低代码&#xff0c;反而会大幅度促进低代码相关系统的开发。本文会介绍 GPT Prompt Engineering 的基本原理&#xff0c;以及如何帮助低代码平台相关技术快速开发落地…

Meta CTO专访:2023年AR/VR、元宇宙的下一步怎么走

2022年对于Meta来说注定是不平凡的一年&#xff0c;它经历了股价大跌、万人大裁员、项目重组、季度营收首次下滑、Reality Labs季度亏损破纪录&#xff0c;甚至前不久Meta AR/VR业务的元老级人物、Reality Labs顾问CTO John Carck也宣布离职&#xff0c;这件事对于Meta甚至整个…

报告回顾丨模型进化狂飙,DetectGPT能否识别最新模型生成结果?

导读 语言模型给我们的生产生活带来了极大便利&#xff0c;但同时不少人也利用他们从事作弊工作。如何规避这些难辨真伪的文字所产生的负面影响也成为一大难题。 在3月9日智源Live第33期活动「DetectGPT&#xff1a;判断文本是否为机器生成的工具」中&#xff0c;主讲人Eric为我…

GPT-4来了,但大模型的诸多未解之谜仍然未解

导语 在3月14日&#xff0c;OpenAI 的 GPT-4 正式发布&#xff0c;它拥有多模态能力&#xff0c;可以接受图像输入并理解图像内容&#xff1b;可接受的文字输入长度增加到 3.2 万个 token&#xff1b;在多种专业和学术基准测试中取得好成绩。然而&#xff0c;功能强大的 GPT-4 …

GPT-3 提高可靠性的技术

提高可靠性的技术 当 GPT-3 执行任务失败时&#xff0c;你应该怎么办&#xff1f; 寻找更好的提示以得出更可靠的答案&#xff1f;投资数千个示例来微调自定义模型&#xff1f;假设模型无法完成任务&#xff0c;然后继续&#xff1f; 没有简单的答案——这取决于情况。但是&…

目标检测算法——遥感影像数据集资源汇总(附下载链接)

>>>深度学习资料&#xff0c;第一时间送达<<< 目录 一、用于 2-5 分类问题 1.UCAS-AOD 遥感影像数据集 2.Inria Aerial Image Labeling Dataset 3.RSOD-Dataset 物体检测数据集 二、用于 5-10 分类问题 1.RSSCN7 DataSet 遥感图像数据集 2.NWPU …

不写代码也能年薪百万?Prompt+低代码开发实战

&#x1f449;腾小云导读 近期 AIGC 狂潮席卷&#xff0c;“前端走向穷途”“低代码时代终结”的言论甚嚣尘上。事实上 GPT 不仅不会干掉低代码&#xff0c;反而会大幅度促进低代码相关系统的开发。本文会介绍 GPT Prompt Engineering 的基本原理&#xff0c;以及如何帮助低代码…

ChatGPT发疯怎么办?小冰李笛:两个关键,我可破之

萧箫 衡宇 发自 凹非寺量子位 | 公众号 QbitAI 微软必应接入GPT大模型后&#xff0c;效果并没有大家想象中那么好——它发疯了。 如今官方紧急出面&#xff0c;更&#xff08;砍&#xff09;新&#xff08;掉&#xff09;了必应上面最受欢迎的功能&#xff0c;也就是发表观点的…

ChatGPT中文版Prompt提示工程超详细指南《提示工程高级技巧与技术》Github最新破万星项目Meta AI前工程师解密百万年薪提示工程师GPT-4模型优化利器(二)不定期更新

提示工程高级技巧与技术 前言Introduction 导言零样本提示少样本提示少样本提示的限制 Chain-of-Thought Prompting 链式思考&#xff08;CoT&#xff09;提示零样本COT提示 Zero-shot COT 自我一致性生成知识提示自动提示工程师&#xff08;APE&#xff09;Active-Prompt方向性…

活动报名|用AI打败ChatGPT?Chris Manning团队DetectGPT一作详解大模型内容检测技术...

随着ChatGPT等LLM工具「入侵」校园&#xff0c;关于学生是否应该使用以及如何使用AI工具撰写书面作业仍存在广泛争议&#xff0c;针对这一问题&#xff0c;斯坦福大学研究者们提出的DetectGPT给出了潜在的解决方案。 3月9日&#xff08;本周四&#xff09;上午11点&#xff0c;…

文心大模型3.5勇夺三个冠军领跑,中文完爆GPT-4!国际权威报告7项满分「全班第一」

【导读】这场百模大战&#xff0c;究竟是谁胜出&#xff1f;国际权威IDC发布大模型技术报告中&#xff0c;文心大模型3.5拿下7个满分&#xff0c;三个绝对第一。 一觉醒来&#xff0c;好不热闹&#xff0c;Meta深夜投出重磅炸弹&#xff0c;Llama 2既开源还能商用&#xff0c;…

如何在Midjourney使用种子(指南)

想知道如何在旅途中使用种子吗&#xff1f; 许多Midjourney初学者都在努力保持他们的提示在Midjourney的结果非常一致。如果您正在寻找特定的结果&#xff0c;您可能会发现Midjourney的默认随机性水平是一个障碍&#xff0c;因为它为图像增加了很多内容。 在这篇文章中&#…

【AI绘图】来体验了下AI绘图

2023年真的是AI大爆发的一年&#xff0c;当我们还沉浸在chatGPT的时候。AI绘图也随之火爆出圈 各网站都能刷到各种“AI小姐姐”。 AI绘图真的可以这么逼真了么&#xff0c;这不得亲自去体验下 AI绘图工具也挺多&#xff0c;今天我们使用的是Stable Diffusion 这一绘图工具。 …