【AI 编程助手】DevChat 解析:深入了解、快速配置与实际操作案例的完整指南
CSDN 2024-06-13 09:31:03 阅读 64
文章目录
一、前言二、认识了解 DevChat2.1 什么是 DevChat2.2 DevChat 优势以及特点2.2.1 精准控制提示上下文2.1.2 简单的扩展机制2.1.3 多种大模型任选 三、构建安装 DevChat3.1 注册 DevChat3.2 DevChat 插件安装指南3.2.1 在 Windows 上安装git(如已安装,可跳过该步骤)3.2.2 在 VS Code 中安装插件3.2.3 设置Access Key 四、DevChat 实践操作案例4.1 优化整个代码文件4.2 使用 DevChat 进行代码审计 五、文末总结
一、前言
本次评测聚焦于 VSCode 插件 DevChat,为开发者提供即时通信功能,提高编程效率。文章深入探讨了插件的安装、使用和特性,通过代码示例详细说明其在开发过程中的实际帮助。在软件开发领域,VS Code 作为灵活而功能强大的编辑器,通过丰富的插件满足各类开发需求。对于对 GPT 感兴趣的人,推荐使用 DevChat,这款基于 GPT-4 的聊天式编程辅助工具。与 ChatGPT 不同,DevChat 直接为 VS Code 提供插件,使得在编程环境中与之对话更加便捷。
二、认识了解 DevChat
2.1 什么是 DevChat
DevChat是一个集成了多种主流大模型的AI编程工具,专注于提升程序员的编程效率。它整合了ChatGPT、Codex等热门AI大模型,支持自然语言编程、代码编写、代码生成、代码补全等功能。Devchat最大的优势是一站式服务,集成热门大模型,并且可以根据需求随心切换,省去了选择和整合不同AI模型的麻烦,无需过多配置就可以快速上手,从而全面提升开发效率。产品务实高效,近期还在QCon全球软件大会亮相,斩获众多圈内开发者的好评
2.2 DevChat 优势以及特点
尽管有许多AI编码工具可用,但我们基于通过生成数万行代码积累的实际见解开发了DevChat。DevChat做出了以下的独特的设计选择。
2.2.1 精准控制提示上下文
对上下文的精准掌控是有效使用人工智能的关键。例如,假设你希望AI为一个函数生成一些测试用例。瓶颈不在于制定请求本身或嵌入给 AI 的指令,比如“你是一个很棒的测试者”。相反,对于请求而言,被称为上下文的所需信息是最关键的因素。在这种情况下,上下文可能不仅涵盖被测试的函数,还包括它调用的任何其他主要函数,这可能影响测试用例。此外,上下文还可能包括一个类似的工作测试用例,以帮助 AI 理解和复制测试用例在你特定环境中的设置和格式。
我们发现大多数其他“智能”或“自动”工具倾向于过度猜测用户需要将什么放入提示中,目的是减轻用户的工作量。这通常导致比 LLMs 能够有效处理的更多噪音。DevChat 将控制权交还给人类以实现真正的生产力,并提供用户友好的方法来简化上下文选择。在实践中,人类仍然是驾驶员,只有在提供清晰请求和适当上下文的情况下,AI 才能真正发挥作用。
2.1.2 简单的扩展机制
为了满足你的需求,你不必学习特定编程语言的新框架。提示应该对用户可见且易于编辑,而不是隐藏在复杂的框架中。
自定义你的提示,建立适合你和团队的工作库。将自己的提示模板轻松集成到 DevChat 中,无需进行大量工程努力或陡峭的学习曲线。你不需要一个复杂的框架来让 AI 为你工作。只需使用操作你文件系统的标准编辑器即可。
2.1.3 多种大模型任选
现阶段 DevChat 支持多种大模型,现阶段可以看到支持 GPT-4(OpenAI)、GPT-3(OpenAI)、Claude-2 等。
从下图可以看到,支持的模型种类很多:
三、构建安装 DevChat
3.1 注册 DevChat
直接访问官方网站进行注册
DevChat 官方网站:https://www.devchat.ai/
输入注册信息进行注册
注册成功后,在你的邮箱内会收到注册成功的提示邮件,类似如下,请保存该邮件,如果没有收到,先去垃圾箱检查一下,可能会被误判为垃圾邮件了。里面包含一个 Access Key 信息,要保存好,后面会使用到。
3.2 DevChat 插件安装指南
3.2.1 在 Windows 上安装git(如已安装,可跳过该步骤)
环境中需要安装 Git 依赖,安装方法可以参考我以前的博文:[Git & GitHub] Windows安装git和环境变量配置
完成安装后,在命令行终端运行git --version
返回版本号表明成功。
3.2.2 在 VS Code 中安装插件
在 VS Code 插件市场中搜索devchat
,如下图,点击安装(或访问 Visual Studio Marketplace,点击 Install)。
安装可能持续若干分钟(在这里我确实等了几分钟)
完成安装后的提示:如下图
3.2.3 设置Access Key
在访问 https://web.devchat.ai/ 注册的账号后,会收到邮件,里面会带有 Access Key(上文有提示),完整复制粘贴到 VS Code 中,具体方法为:
点击左下角管理(“齿轮”图标),命令面板(Command Palette),在弹出的命令面板中输入devchat key
,点击如下命令后,如下图:
在弹出的输入框中粘贴进 DevChat Access Key,回车。右下方状态栏 DevChat 前出现如下对勾,表明安装配置完成
到此步骤,我们已经将 DevChat 成功安装到 VS Code 中,接下来我们实际操作一下,来体验 DevChat 的强大。
四、DevChat 实践操作案例
4.1 优化整个代码文件
在这个例子里,我们可以直接讲某一个代码文件,添加到 DevChat 中,之后让 DevChat 直接进行分析,得到代码策略。
如下图所示,直接右键点击代码文件,添加到 DevChat 中
在下图可以看到,我们添加的代码文件,并且在聊天框中,可以直接添加输入你想做的事情,之后让 DevChat 进行优化代码,并且 DevChat 给出了建议方案。
DevChat 给出的建议参考如下。
你的代码写得不错,只有一小部分可以进一步优化,具体的优化点如下:
数据库操作分离:
你可以将数据库连接配置项抽象为一个函数,如此可以在三个执行数据库操作的函数中复用。同时你可以使用with
语句,这样在语句结束之后,连接和游标就会自动关闭,无需手动关闭。
路径拼接:
你可以使用 os.path.join(path, i)
来代替 path + '/' + i
,这样可以避免在不同操作系统上出现的路径分隔符不统一的问题。
以下为对应的优化代码:
import pymysqlimport pandas as pdimport osimport wordcloudimport numpy as npfrom PIL import Imageimport matplotlib.pyplot as plt# MySQL数据库连接配置db_config = { 'host': "gz-cynosdbmysql-grp-d27hp6vl.sql.tencentcdb.com", 'port': 27529, 'user': "root", 'password': "TDSQL-C.@GMbe#P!", 'database': 'experience-12',}def get_connection_cursor(): # 建立MySQL数据库连接 conn = pymysql.connect(**db_config) cursor = conn.cursor() return conn, cursordef create_table(table_name, columns): with get_connection_cursor() as (conn, cursor): query = f"CREATE TABLE IF NOT EXISTS {table_name} (" for col_name, col_type in columns.items(): query += f"{col_name} {col_type}, " query = query.rstrip(", ") query += ")" cursor.execute(query) conn.commit()def excelTomysql(): path = '词频' files = [os.path.join(path, i) for i in os.listdir(path)] for file_path in files: print(file_path) filename = os.path.basename(file_path) table_name = os.path.splitext(filename)[0] data = pd.read_excel(file_path, engine="openpyxl", header=0) columns = {col: "VARCHAR(255)" for col in data.columns} create_table(table_name, columns) save_to_mysql(data, table_name) print(filename + ' uploaded and saved to MySQL successfully')def save_to_mysql(data, table_name): with get_connection_cursor() as (conn, cursor): for index, row in data.iterrows(): query = f"INSERT INTO {table_name} (" for col_name in data.columns: query += f"{col_name}, " query = query.rstrip(", ") query += ") VALUES (" values = tuple(row) query += ("%s, " * len(values)).rstrip(", ") query += ")" cursor.execute(query, values) conn.commit()def query_data(): with get_connection_cursor() as (conn, cursor): cursor.execute("SHOW TABLES") tables = cursor.fetchall() data = [] dic_list = [] table_name_list = [] for table in tables: table_name = table[0] table_name_list.append(table_name) query = f"SELECT * FROM {table_name}" with get_connection_cursor() as (conn, cursor): cursor.execute(query) result = cursor.fetchall() if len(result) > 0: columns = [desc[0] for desc in cursor.description] table_data = [{columns[i]: row[i] for i in range(len(columns))} for row in result] data.extend(table_data) dic = {} for i in data: dic[i['word']] = float(i['count']) dic_list.append(dic) conn.commit() cursor.close() conn.close() return dic_list, table_name_listif __name__ == '__main__': excelTomysql() print("excel写入到mysql成功!") result_list, table_name_list = query_data() print("从mysql获取数据成功!") for i in range(len(result_list)): maskImage = np.array(Image.open('background.PNG')) wc = wordcloud.WordCloud( font_path='PingFangBold.ttf', mask=maskImage, max_words=500, max_font_size=100) wc.generate_from_frequencies(result_list[i]) wc.to_file("词云图/{}.png".format(table_name_list[i])) print("生成的词云图【{}】已经保存成功!".format(table_name_list[i] + '.png')) plt.imshow(wc) plt.axis('off') plt.show()
4.2 使用 DevChat 进行代码审计
另一个推荐的比较强大的功能是,可以利用 DevChat 对 PR 的代码进行代码审计操作。
下面我们来演示如何用 DevChat 对分支:adapt-prompt-for-3.5-instruct
进行代码审计操作
我们在 DevChat 窗口中,给出所要审计的分支关键词等信息,对代码分支进行 Review。
效果如下图:
DevChat 会给出专业的 Review 建议点,返回给用户,如下图所示:
五、文末总结
在本文中,我们介绍了 DevChat,探讨了其在开发过程中的重要性和优势。通过精准控制提示上下文、简单的扩展机制以及多种大模型任选,DevChat为开发者提供了强大的工具,助力优化整个代码文件并进行高效的代码审计。通过详细的构建安装步骤,我们帮助读者轻松入门,并展示了在实际操作中如何利用 DevChat 提升开发效率。无论是注册、插件安装,还是设置 Access Key,我们提供了清晰的指南。希望这篇文章能够成为你在 DevChat 使用过程中的有力伙伴,让你在开发中更加游刃有余。
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。