前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >人工智能编程助手Devchat从0到1体验

人工智能编程助手Devchat从0到1体验

原创
作者头像
一个风轻云淡
发布2023-11-16 09:52:42
1.3K0
发布2023-11-16 09:52:42
举报
文章被收录于专栏:java学习javajava学习java

前言

随着人工智能技术的发展,chatgpt的问世,国内各大厂家也推出了自己的大模型,比如腾讯混元大模型(Tencent Hunyuan)是由腾讯研发的大语言模型,具备强大的中文创作能力,复杂语境下的逻辑推理能力,以及可靠的任务执行能力。这些大模型大多采用网页交互的形式,为了方便开发者使用,越来越多的编程助手工具涌现出来,帮助程序员更高效地完成编码任务。熟练的掌握一门编程助手必不可少,下面我将会介绍vscode中的插件DevChat的使用。

腾讯混元大模型:多轮对话具备上下文理解和长文记忆能力,流畅完成各专业领域的多轮问答。内容创作支持文学创作、文本概要、角色扮演能力,流畅、规范、中立、客观。逻辑推理准确理解用户意图,基于输入数据或信息进行推理、分析。知识增强有效解决事实性、时效性问题,提升内容生成效果。多模态(开发中,敬请期待)支持文字生成图像能力,输入指令即可将奇思妙想变成图画。应用场景文档场景可提供文档创作、文本润色、文本校阅、表格公式及图表生成等能力,提高创作效率,提升创作体验。会议场景可提供会中问答、会议总结、会议待办项整理等能力,简化会议操作并提高会议效率。广告场景可提供智能化的广告素材创作,提供 AI 多模态生成能力(开发中,敬请期待),提升营销内容创作工作效率。营销场景构建智能导购,帮助商家提升服务质量和服务效率。

🚀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类型的重要特点:

  1. 不可变性:在Java中,String对象一旦创建,就不能被修改。任何对String对象的操作都会返回一个新的String对象,原始的String对象保持不变。这意味着String对象是不可变的(immutable)。
  2. 字符串连接:Java中的String类型支持通过加号"+"进行字符串连接操作。例如:"Hello, " + "World"会产生一个新的String对象"Hello, World"。
  3. 字符串池:Java中的字符串常量池(String Pool)是一种特殊的内存区域,用于存储字符串字面量。当创建一个字符串常量时,JVM会首先检查字符串常量池。如果池中已经存在相同数值的字符串,将返回池中的实例引用,否则将在池中创建一个新的实例。
  4. 不可变性的优点:由于String对象是不可变的,所以它们可以被安全地共享。这使得字符串常量池的存在成为可能,节省了内存空间。
  5. 方法丰富:String类提供了丰富的方法,用于对字符串进行各种操作,比如长度、提取子串、转换大小写、替换、分割等等。

总的来说,String类型在Java中是非常重要的,它作为表示和操作字符串的标准方式,具有不可变性、字符串池和丰富的方法等特点。

🕍 前端代码生成

问:帮我写一个HTML圣诞树代码

答:

代码语言:javascript
复制
<!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 代码实现上述方法

答:

代码语言:javascript
复制
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。

🕍 代码补全使用

问:帮我补全下面代码

代码语言:javascript
复制
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;
                }

答:当这个数小于或等于被比较的数时,将这个数后移一位

代码语言:javascript
复制
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:

代码语言:javascript
复制
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不会取代程序员,反而会加快程序员的开发深度,但也会彻底改变程序员学习技术、编程程序的方式。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 🚀DevChat基本介绍
    • 🕍 概述
      • 🕍 优势
        • 🕍 功能概述
        • 🚀DevChat的安装
          • 🕍 安装依赖软件
            • 🕍 VS Code安装插件
              • 🕍 获取和设置Access Key
                • 🕍 版本不兼容处理【BUG】
                • 🚀具体使用体验
                  • 🕍 文本问答交互
                    • 🕍 前端代码生成
                      • 🕍 算法代码解答
                        • 🕍 代码补全使用
                          • 🕍 具体指令编写
                            • 🕍 文本总结测试
                            • 🚀总结
                            相关产品与服务
                            云数据库 MySQL
                            腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
                            领券
                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档