🚀DevChat基本介绍
🕍 概述
DevChat 是一个开源平台,使开发人员能够更有效地将 AI 集成到代码生成和文档中。DevChat 旨在超越简单的代码自动完成和对代码片段的有限操作。DevChat 为开发人员提供了一种非常实用和有效的方式来与大型语言模型 (LLM) 进行交互和协作。
- 传统的以代码为中心的范式正在不断发展。利用 DevChat 保持领先地位。
- 编写提示以创建代码。将提示转换为软件工程中的所有工件。
🕍 优势
虽然有许多可用的 AI 编码工具,但我们根据生成数万行代码的实用见解开发了 DevChat。DevChat 做出以下独特的设计选择:
- 对提示中嵌入的上下文进行精确的手动控制。对上下文的精确控制是有效使用 AI 的关键。我们发现,大多数其他“智能”或“自动”工具往往会过度猜测用户需要在提示中输入什么内容。这通常会引入比 LLM 可以有效管理的更多的噪声。
- 一个简单、可扩展的提示目录。带上你自己的提示,并建立一个对你和你的团队有用的库。轻松将您自己的提示模板集成到 DevChat 中,避免了大量的工程工作或陡峭的学习曲线。你不需要一个复杂的框架来让人工智能为你工作。它所需要的只是一个在文件系统上运行的标准编辑器。
DevChat主要价值在于提高开发效率、减少重复性劳动和降低错误率。借助DevChat,开发者可以更专注于思考和创新,而非纠结于繁琐的代码编写。它也有望成为团队协作和知识共享的工具,帮助团队成员共享经验和最佳实践。
🕍 功能概述
情境构建:出色的输出需要出色的输入。为了最大限度地发挥 AI 的力量,DevChat 可无缝地帮助您为 AI 提供正确的上下文。
添加到上下文:可以使用 DevChat 将任何命令的输出(例如 )合并到提示符中。例如,可以将 的输出添加到 DevChat,然后 DevChat 可以为你生成提交消息。tree ./srcgit diff --cached
生成提交消息:程序分析可以帮助建立必要的上下文。假设你希望 DevChat 向你解释一些代码。如果 DevChat 知道代码正在调用的依赖函数,则可以执行更好的性能。在此方案中,可以使用 DevChat 选择目标代码来解释“符号定义”并将其添加到上下文中(通过单击加号按钮)。然后,DevChat 将生成一个提示,解释目标代码,同时考虑依赖函数。
提示扩展:DevChat 利用目录来管理预定义的提示模板。您可以使用文本编辑器轻松添加自己的或修改现有的。 默认情况下,该目录已命名并位于主目录的文件夹中。您可以在终端中运行以查看里面的内容。
🚀DevChat的安装
DevChat跟Chatgpt不一样采用网页交互,它使用的是VS Code 插件,这样子可以直接在编程环境下与之对话,使用起来更加方便。
🕍 安装依赖软件
Git 命令行:请参考 Git - Installing Git 操作。完成安装后,在命令行终端运行 git --version
返回版本号表明成功。
也需要需要 Python 3 环境(可参考https://realpython.com/installing-python安装)。
🕍 VS Code安装插件
打开VS Code在扩展中搜索【DevChat】,如下图:
点击安装即可。
🕍 获取和设置Access Key
登录官网,需要绑定邮箱并登录,绑定后发送验证码,开通后就可以获取Access key了,实现进入注册界面后,然后输入你的 用户名 以及你的 邮箱,验证后,点击 Sign Up 注册
邮箱中除了验证码以外,还有一个回执邮件,从中获得 Access key
点击左下角管理(“齿轮”图标)—命令面板(Command Palette),如下图:
在弹出的命令面板中输入“devchat key”,输入key即可使用
🕍 版本不兼容处理【BUG】
如果你的VScode比较老可能会出现安装不兼容问题,具体处理方式如下:
选择将下载的插件以压缩包的格式打开,如下图:
进入extension文件夹修改package.json文件
修改成你的VScode的版本
保持以后选择从VSIX安装即可。
当然也需要同理安装依赖的其他插件,这里不再赘述
🚀具体使用体验
以下是具体使用的界面
🕍 文本问答交互
问:你好
答:你好!有什么我可以帮助你的吗?
问:很高兴使用你
答:非常感谢您的支持和反馈!我很高兴能帮助您。如果您有任何问题或需要进一步的帮助,请随时告诉我。我将尽力为您提供满意的答案和服务!
问:帮我解释下java中的String类型
答:
在Java中,String是一个代表字符串的数据类型。String类是Java中内置的一个类,用来表示字符串对象。以下是一些关于Java中String类型的重要特点:
- 不可变性:在Java中,String对象一旦创建,就不能被修改。任何对String对象的操作都会返回一个新的String对象,原始的String对象保持不变。这意味着String对象是不可变的(immutable)。
- 字符串连接:Java中的String类型支持通过加号"+"进行字符串连接操作。例如:"Hello, " + "World"会产生一个新的String对象"Hello, World"。
- 字符串池:Java中的字符串常量池(String Pool)是一种特殊的内存区域,用于存储字符串字面量。当创建一个字符串常量时,JVM会首先检查字符串常量池。如果池中已经存在相同数值的字符串,将返回池中的实例引用,否则将在池中创建一个新的实例。
- 不可变性的优点:由于String对象是不可变的,所以它们可以被安全地共享。这使得字符串常量池的存在成为可能,节省了内存空间。
- 方法丰富:String类提供了丰富的方法,用于对字符串进行各种操作,比如长度、提取子串、转换大小写、替换、分割等等。
总的来说,String类型在Java中是非常重要的,它作为表示和操作字符串的标准方式,具有不可变性、字符串池和丰富的方法等特点。
🕍 前端代码生成
问:帮我写一个HTML圣诞树代码
答:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Christmas Tree</title> <style> .tree { text-align: center; } .tree span { color: green; } </style> </head> <body> <div class="tree"> <span>★</span><br> <span>★★</span><br> <span>★★★</span><br> <span>★★★★</span><br> <span>★★★★★</span><br> <span>★★★★★★</span><br> <span>★★★★★★★</span><br> <span>★★★★★★</span><br> <span>★★★★★</span><br> </div> </body> </html>
效果图:
🕍 算法代码解答
问:
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 例如,121 是回文数,而 123 不是。 请帮我写一段Java 代码实现上述方法
答:
public boolean isPalindrome(int x) { if (x < 0) { // 负数不是回文数 return false; } int temp = x; int reverse = 0; while (temp != 0) { int digit = temp % 10; reverse = reverse * 10 + digit; temp /= 10; } return x == reverse; }
该方法首先检查输入整数是否为负数,因为负数不是回文数。
接下来,将输入整数的每个数字提取出来并反转它们。这可以通过取模运算和整数除法来完成。在每一次循环中,将提取的数字添加到一个反转的数字中。例如,如果输入整数为 123,首先将提取数字 3 并将其添加到反转数字中,变成 3。接下来,提取数字 2 并将其添加到反转数字中,变成 32。最后,提取数字 1 并将其添加到反转数字中,变成 321。 最后,比较原始整数和反转后的整数是否相等,如果相等,则返回 true,否则返回 false。
🕍 代码补全使用
问:帮我补全下面代码
public static void insertSort(int[] array) { int temp = 0; for (int i = 0; i < array.length; i++) { //选择一个数作为被比较的数; temp = array[i]; int j = i - 1; for (j = i - 1; j >= 0; j--) { //取被比较数之前的数与被比较数进行比较; if (array[j] > temp) { //如果这个数大于被比较的数,往后挪一个位置; } else { break; }
答:当这个数小于或等于被比较的数时,将这个数后移一位
public static void insertSort(int[] array) { int temp = 0; for (int i = 0; i < array.length; i++) { // 选择一个数作为被比较的数; temp = array[i]; int j = i - 1; while (j >= 0 && array[j] > temp) { // 将大于被比较数的数后移一位 array[j + 1] = array[j]; j--; } // 将被比较数插入合适的位置 array[j + 1] = temp; } }
可以发现是正确的
🕍 具体指令编写
问:帮我写一个Docker命令,启动mysql数据库,配置数据库密码为123456
答:以下是一个启动MySQL数据库的Docker命令,并配置用户名为root,数据库密码为123456:
docker run -d --name mysql-db -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
这个命令将会在后台运行一个名为mysql-db的容器,并将宿主机的3306端口映射到容器的3306端口。-e选项用于设置环境变量,其中MYSQL_ROOT_PASSWORD
是MySQL的root用户密码。
请注意,这只是一个简单的示例命令,实际使用时可能需要根据自己的需求进行更多的配置,比如持久化数据、指定数据存储目录等。同时,请确保已安装并正确配置Docker环境。
🕍 文本总结测试
问:精简下面的文字
答:曾有一位预言僧告知国王,城市将被洪水淹没,唯一预兆是市场上的石狮眼流血。商人偷涂羊血骗取财富,国王带百姓逃难。七天后,洪水如预言般来袭,商人和财富尽数湮没。
🚀总结
在AI浪潮的席卷下,开发者的编程领域也在经历着一场前所未有的变革。在这个过程中,AI智能编程工具的出现为开发者们提供了一种全新的编程方式。DevChat不仅仅是一个聊天窗口。它不但可以识别开发人员键入的代码、显示的错误消息,并将其深度嵌入到IDE中,而且开发人员可以深入分析和解释代码块的用途,生成单元测试,甚至获得对错误的建议修复。有了DevChat以后,程序员想要掌握编程,更重要的是掌握技术的一些核心知识点,运行逻辑等,只有这样才能更好地向DevChat发问,才能将它的回答化为己有。DevChat不会取代程序员,反而会加快程序员的开发深度,但也会彻底改变程序员学习技术、编程程序的方式。