文章目录
- 一、前言
- 二、认识了解 DevChat
- 2.1 什么是 DevChat
- 2.2 DevChat 优势以及特点
- 2.2.1 精准控制提示上下文
- 2.1.2 简单的扩展机制
- 2.1.3 多种大模型任选
- 三、构建安装 DevChat
- 3.1 注册 DevChat
- 3.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 pymysql
import pandas as pd
import os
import wordcloud
import numpy as np
from PIL import Image
import 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, cursor
def 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_list
if __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 使用过程中的有力伙伴,让你在开发中更加游刃有余。