目录
🚀DevChat基本介绍
🕍 概述
🕍 优势
🕍 功能概述
🚀DevChat的安装
🕍 安装依赖软件
🕍 VS Code安装插件
🕍 获取和设置Access Key
🕍 版本不兼容处理【BUG】
🚀具体使用体验
🕍 文本问答交互
🕍 前端代码生成
🕍 算法代码解答
🕍 代码补全使用
🕍 具体指令编写
🕍 文本总结测试
🚀总结
🚀DevChat基本介绍
🕍 概述
DevChat 是一个开源平台,使开发人员能够更有效地将 AI 集成到代码生成和文档中。DevChat 旨在超越简单的代码自动完成和对代码片段的有限操作。DevChat 为开发人员提供了一种非常实用和有效的方式来与大型语言模型 (LLM) 进行交互和协作。
-
传统的以代码为中心的范式正在不断发展。利用 DevChat 保持领先地位。
-
编写提示以创建代码。将提示转换为软件工程中的所有工件。
🕍 优势
虽然有许多可用的 AI 编码工具,但我们根据生成数万行代码的实用见解开发了 DevChat。DevChat 做出以下独特的设计选择:
- 对提示中嵌入的上下文进行精确的手动控制。对上下文的精确控制是有效使用 AI 的关键。我们发现,大多数其他“智能”或“自动”工具往往会过度猜测用户需要在提示中输入什么内容。这通常会引入比 LLM 可以有效管理的更多的噪声。
- 一个简单、可扩展的提示目录。带上你自己的提示,并建立一个对你和你的团队有用的库。轻松将您自己的提示模板集成到 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了
邮箱中除了验证码以外,还有一个回执邮件,从中获得 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以后,程序员想要掌握编程,更重要的是掌握技术的一些核心知识点,运行逻辑等,只有这样才能更好地向DevChat发问,才能将它的回答化为己有。DevChat不会取代程序员,反而会加快程序员的开发深度,但也会彻底改变程序员学习技术、编程程序的方式。