Visual chatGPT Studio
🌎 英文 | 中文
👉 对于 Visual Studio 2022: 点击这里
👉 对于 Visual Studio 2019: 点击这里
介绍 💬
这是一个直接在 Visual Studio 中添加 chatGPT 功能的扩展。
你将能够通过文本编辑器或新的特定工具窗口直接咨询 chatGPT。
这里看一些示例:
代码编辑器上的功能 👩💻
选择一个方法并右键单击文本编辑器,你会看到这些新的 chatGPT 命令:
- 完成: 开始编写一个方法,选择它并请求完成。
- 添加测试: 为选定的方法创建单元测试。
- 查找错误: 查找选定代码中的错误。
- 优化: 优化选定的代码。
- 优化(差异视图): 优化选定的代码,不过结果不会被写入代码编辑器,而是会打开一个新窗口,你可以在其中比较原始代码和 chatGPT 优化版本。
- 解释: 编写选定代码的解释。
- 添加注释: 为选定的代码添加注释。
- 添加摘要: 为 C# 方法添加摘要。
- 为整个类添加摘要: 为整个 C# 类添加摘要(包括方法、属性、枚举、接口、类等)。无需选择代码,只需运行命令即可开始。
- 问任何问题: 在代码编辑器中编写问题并等待答案。
- 翻译: 用翻译版本替换选定的文本。在选项窗口中编辑命令,如果你想翻译成除英文之外的其他语言。
- 自定义前: 通过选项创建自定义命令,将响应插入到选定代码之前。
- 自定义后: 通过选项创建自定义命令,将响应插入到选定代码之后。
- 自定义替换: 通过选项创建自定义命令,用响应替换选定的文本。
- 取消: 取消接收/等待任何命令请求。
如果你希望响应在工具窗口中编写而不是在代码编辑器中,则按住 SHIFT 键并选择命令(不适用于快捷键)。
编辑命令 📐
预定义的命令可以根据需要进行编辑,以满足当前正在进行的项目的需求。
还可以为解决方案或项目定义特定的命令。如果你没有在一个使用特定命令的项目上工作,将使用默认命令。
你可以做的某些示例:
- 定义特定框架或语言: 例如,你可以为一个项目使用 MSTests 创建单元测试并为另一个项目使用 XUnit 创建单元测试的特定命令。
- 使用另一种语言: 例如,如果你在使用另一种不同于母语的语言的项目中工作,你可以为你的语言设置命令,并为其他项目设置另一种语言的命令。
- 等等。
Visual chatGPT Studio
工具窗口的功能 🛠
在这个工具窗口中,你可以向 chatGPT 提问并直接接收答案。
这个窗口还可以用于在执行命令时按住 SHIFT 键重定向响应,使其避免编辑代码,或者在插入项目之前验证结果。
自动为更改创建注释 📑
在这个窗口中,点击此按钮也可以根据待处理的更改创建 git push 注释:
不用再浪费时间思考你要为更改编写什么!
通过此扩展的 生成 Git 变更注释命令
选项,你可以编辑请求命令。非常适合你希望注释以非英语语言创建,和/或希望注释遵循其他特定格式等情况。
你可以在菜单 View -> Other Windows -> Visual chatGPT Studio 中找到这个窗口。
Visual chatGPT Studio Turbo
工具窗口的功能 🚀
在这个窗口编辑器中,你可以直接与 chatGPT 互动,就像你在 chatGPT 门户网站上一样:
与先前的窗口不同,这个窗口中的 AI 会“记住”整个对话:
你还可以通过 发送代码
按钮与打开的代码编辑器互动。使用这个按钮,OpenAI API 将了解打开的编辑器中的所有代码,你可以直接请求与代码的交互,例如:
- 请求在特定行或两个现有方法之间添加新方法;
- 修改现有方法以添加新参数;
- 请求查看类是否有任何错误;
- 等等。
但请注意,这将发送打开文件的全部代码到 API,这会增加令牌消耗。并且视你使用的模型,可能会更快地达到每次请求的令牌限制。设置具有较大令牌限制的模型可以解决此限制。
通过执行此命令,你还可以在按下 发送代码
按钮时按住 SHIFT 键,使代码直接写入聊天窗口而不是代码编辑器,以防你希望保留原始代码和/或在将其应用到打开的代码编辑器之前分析响应。
你还可以在不同的标签中同时保持多个聊天打开。并且每个聊天都会保存在历史记录中,即使 Visual Studio 关闭,也允许你继续对话:
你可以在菜单 View -> Other Windows -> Visual chatGPT Studio Turbo 中找到这个窗口。
这里看一些使用 Turbo 聊天的示例:
Visual chatGPT Studio 解决方案上下文
工具窗口的功能 📌
在这里,你可以将项目项添加到 OpenAI 请求的上下文中。非常适合需要了解项目其他部分的请求。
例如,你可以请求在当前文档中创建一个方法,该方法使用了通过此窗口选择的另一个类中的方法。
你还可以请求在引用上下文的另一个类的方法的打开文档中创建单元测试。
你还可以请求涉及多个类的大范围分析。可能性是很多的。
但请注意,视你添加到上下文代码的数量,这会增加令牌消耗。并且视你使用的模型,可能会更快地达到每次请求的令牌限制。设置具有较大令牌限制的模型可以解决此限制。
你可以在菜单 View -> Other Windows -> Visual chatGPT Studio Solution Context 中找到这个窗口。
Visual chatGPT Studio 代码审查
工具窗口的功能 🔍
代码审查工具窗口功能旨在通过基于项目中的 Git 变更自动生成代码审查来增强开发工作流。这一创新功能旨在在发起拉取请求之前识别潜在的漏洞和改进区域,以确保更高的代码质量并简化审查流程。
它是如何工作的
-
Git 变更检测: 该功能自动检测在 Git 中对代码库所做的任何更改。
-
自动审查生成: 在检测到更改后,系统会立即使用 AI 的力量分析修改。它评估代码以发现潜在问题,如语法错误、代码异味、安全漏洞和性能瓶颈。
-
反馈提供: 分析的结果编写成详细的代码审查报告。该报告包含对每个发现的问题的详细反馈、改进建议和最佳实践建议。
-
与开发工具集成: 该功能无缝集成到 Visual Studio 中,确保代码审查过程是开发工作流的自然部分。
-
编辑命令: 通过扩展选项,可以编辑请求代码审查的命令以进行自定义。
优点
- 尽早发现问题:通过在开发周期的早期阶段识别潜在问题,开发人员可以在问题恶化之前予以解决,从而节省时间和精力。
- 改进代码质量:自动评审鼓励遵守编码标准和最佳实践,导致代码更干净、更易维护。
- 精简评审过程:该功能补充了人工代码评审过程,使其更加高效和集中,使评审人员能够专注于代码的更复杂和关键的方面。
- 增强协作:它促进了开发团队之间的持续改进和学习文化,因为自动反馈提供了有价值的见解和学习机会。
身份验证 🔑
要使用此工具,必须通过OpenAI API、Azure OpenAI或任何与OpenAI API兼容的API进行连接。
通过OpenAI
1 - 在OpenAI上创建一个账户:https://platform.openai.com
2 - 生成一个新密钥:https://platform.openai.com/api-keys
3 - 复制并粘贴密钥到选项中,并将OpenAI Service
参数设置为OpenAI
:
通过Azure
1 - 首先,你需要访问Azure OpenAI服务。你可以在这里查看更多详细信息。
2 - 创建一个Azure OpenAI资源,并在选项中设置资源名称。例如:
3 - 复制并粘贴密钥到选项中,并将OpenAI Service
参数设置为AzureOpenAI
:
4 - 通过Azure OpenAI Studio创建一个新的部署,并设置名称:
5 - 设置Azure OpenAI API版本。您可以在这里查看可用的版本。
通过其他自定义LLM
可以使用与OpenAI API兼容的非OpenAI或Azure API的服务。
这样,您可以使用本地运行的API,比如Meta的llama,或任何其他私有部署(本地或非本地)。
为此,只需在扩展的Base API URL
参数中插入这些部署的地址。
值得一提的是,我自己没有测试过这种可能性,所以这是一种试验与错误的过程,但我已经收到反馈,有人成功地完成了这项工作。
已知问题 ⚠
不幸的是,OpenAI提供的用于与chatGPT互动的API对问题和给定答案的总长度有限制。
如果发送的问题太长(例如,一个包含许多行的方法)和/或生成的响应太长,API可能会截断响应或根本不响应。
对于这些情况,我建议您通过工具窗口自定义问题,以便chatGPT不拒绝回答,或者尝试修改模型选项以改进响应。
免责声明 👋
-
由于此扩展依赖于OpenAI提供的API,他们可能会进行某些变更,而不事先通知,从而影响此扩展的操作。
-
由于此扩展依赖于OpenAI提供的API,生成的响应可能不是预期的。
-
响应的速度和可用性直接取决于OpenAI提供的API。
-
如果您使用OpenAI服务而非Azure,并收到类似于
429 - 超出当前配额,请检查您的计划和账单详情
的消息,请查看OpenAI使用页面,看看您是否还有配额,例如:
您可以在这里查看您的配额:https://platform.openai.com/account/usage
- 如果您发现任何错误或意外行为,请留言,以便我提供修复。
捐赠 🙏
☕ 请给我买杯咖啡,支持我为您提供更多功能。谢谢!
依赖项 ⚙
- AvalonEdit
- LibGit2Sharp
- OpenAI-API-dotnet
- sqlite-net-pcl
- MdXaml
- VsixLogger
- Community.VisualStudio.Toolkit.17
发行说明 📜
2.8.2
- 添加了防止删除默认命令的验证。
- 添加了对新gpt-4o-mini模型的支持。
2.8.1
- 更新了
Ask Anything
命令,将Tool Window System Message
作为系统消息发送。 - 进行了一些修复,以避免代码审查时出错。
- 现在在代码审查中,进度条显示实际进度。
- 修复了代码审查项超链接。
- 现在API响应行在代码编辑器中的换行符将被规范化以避免混合换行模式。
- 修复了“生成 Git 更改评论”命令以确保仅考虑待处理的更改。