本文最后更新于:2024年3月19日 晚上

市面上有多款文本大模型辅助编程工具,本文记录智谱华章公司的工具 CodeGeeX。

背景

目前,市面上有几款基于文本大模型的AI辅助编程工具,它们各自具有不同的特点和功能。以下是一些比较知名的AI编程助手:

  • CodeGeeX:这是一个全能的智能编程助手,能够实现代码的生成与补全、自动添加注释、代码翻译以及智能问答等功能。它支持多种主流编程语言,并适配多种主流IDE。
  • Github Copilot:由Github和OpenAI合作推出,它能够为开发人员提供实时的代码提示和生成功能,支持多种编程语言,如Python、JavaScript、TypeScript、Ruby等,并可以与主流的集成开发环境(IDE)和文本编辑器配合使用。
  • Tabnine:这款工具的特点是速度快,但在建议中可能会添加一些用户没有预料到的代码。
  • Codeium:它支持多种IDE和语言,并提供内置聊天功能。Codeium在功能和价格方面排名较高,但并不代表在延迟或质量方面也最好。
  • Amazon CodeWhisperer:也是一款主流的AI智能编程代码助手。
  • 代码小浣熊Raccoon:由商汤科技发布,它能理解开发者的意图和上下文信息,提供代码片段建议、智能补全、逻辑推理以及问题解答等操作。它具有代码生成、代码补全、代码翻译、代码重构、代码纠错、代码问答和测试用例生成等功能。

简介

CodeGeeX是一款基于大模型的全能的智能编程助手。它可以实现代码的生成与补全、自动添加注释、代码翻译以及智能问答等功能,能够帮助开发者显著提高工作效率。CodeGeeX支持主流的编程语言,并适配多种主流IDE。

主要特点

  1. 代码生成与补全:CodeGeeX 能够根据开发者的输入自动生成或补全代码,减少编程时的重复性工作。
  2. 自动添加注释:在代码生成或补全的过程中,CodeGeeX 还能自动添加相应的注释,帮助提高代码的可读性。
  3. 代码翻译:支持将代码从一种编程语言翻译成另一种,这对于需要在多种语言间切换的开发者尤其有用。
  4. 智能问答:开发者可以通过提问的方式获取关于编程问题的解答,这对于解决编程中的疑问或困惑非常有帮助。
  5. 支持多种编程语言:CodeGeeX支持Python、Java、C++、JavaScript、Go等数十种常见编程语言。。
  6. 适配多种主流IDE:CodeGeeX支持Visual Studio Code及IntelliJ IDEA、PyCharm、GoLand等JetBrains IDE。
  7. CodeGeeX插件对个人用户完全免费。

大模型

当前(2024.3)CodeGeex 使用 CodeGeex2-6B模型,该模型已经开源

示例

生成补全

1
2
3
4
5
6
7
import requests
# 请求 https://www.codegeex.cn/ 网站,获取返回响应状态、响应头、响应内容,并输出

response = requests.get('https://www.codegeex.cn/')
print(response.status_code)
print(response.headers)
print(response.text)

注释生成

  • 代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def tcplink(conn, addr):
print("Accept new connection from %s:%s" % addr)
conn.send(b"Server: Welcome!\n")
while True:
conn.send(b"Server: What's your name?")

data = conn.recv(1024)
if data == b"exit":
conn.send(b"Server: Good bye!\n")
break
conn.send(b"Server: Hello %s!\n" % data)

conn.close()
print("Connection from %s:%s is closed" % addr)
  • 生成注释
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def tcplink(conn, addr):
print("Accept new connection from %s:%s" % addr)
# 发送欢迎信息
conn.send(b"Server: Welcome!")
# 循环接收客户端发送的数据
while True:
# 发送欢迎信息
conn.send(b"Server: What's your name?")

# 接收客户端发送的数据
data = conn.recv(1024)
# 如果客户端发送的数据为exit,则退出
if data == b"exit":
conn.send(b"Server: Good bye!\n ")
break
# 否则,发送欢迎信息,并发送客户端发送的数据
conn.send(b"Server: Hello %s!\n" % data)

# 关闭连接
conn.close()
print("Connection from %s:%s is closed" % addr)

代码翻译

  • Python 代码
1
2
3
4
5
6
7
8
9
def bubble_sort(L):
changed = True
while changed:
changed = False
for i in range(len(L)-1):
if L[i] > L[i+1]:
L[i], L[i+1] = L[i+1], L[i]
changed = True
return L
  • 翻译成 Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class BubbleSort{
public int[] bubbleSort(int[] nums) {
int len = nums.length;
boolean swapped = true;
for (int i = 0; swapped && i < len; i++) {
swapped = false;
for (int j = 0; j < len - i - 1; j++) {
if (nums[j] > nums[j + 1]) {
int temp = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = temp;
swapped = true;
}
}
}
return nums;
}
}

智能问答

  • 原始代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/python3

import _thread
import time
def print_time( threadName, delay):
count = 0
while count < 5:

time.sleep(delay)
count += 1
print ("%s: %s" % ( threadName, time.ctime(time.time()) ))
try:
_thread.start_new_thread( print_time, ("Thread-1", 2, ) )
_thread.start_new_thread( print_time, ("Thread-2", 4, ) )
except:
print ("Error: 无法启动线程")

while 1:
pass
  • 选择部分代码并提问

解释一下这个函数

1
2
3
4
5
6
7
def print_time( threadName, delay):
count = 0
while count < 5:

time.sleep(delay)
count += 1
print ("%s: %s" % ( threadName, time.ctime(time.time()) ))
  • CodeGeeX 回答

这个函数的作用是打印线程名称和时间,每次打印的时间间隔为 delay 毫秒。 函数中定义了两个变量 count 和 threadName,分别用于计数和标识不同的线程。count 初始值为 0,while 循环五次,每次循环增加 1,表示需要等待 delay 毫秒后再进行打印。 在每次循环中,调用 time.sleep() 函数来暂停程序的执行,时间为 delay 毫秒。这样可以保证每个线程在打印时间后都能等待一定的时间再进行下一次打印。 接着,增加 count 计数器,并将当前时间用 ctime() 函数转换为字符串,然后使用%s格式化字符串将时间和线程名称打印出来。 最后,函数返回 threadName 参数,可以用于标识不同的线程。

安装使用

VS code

  1. 在应用商店搜索:codegeex,搜索并安装插件

  1. 在VS code 导航栏会多一个按钮,核心内容都在里面,登录即可使用

参考资料



文章链接:
https://www.zywvvd.com/notes/tools/codegeex/codegeex/


“觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”

微信二维码

微信支付

支付宝二维码

支付宝支付

智能编程助手 CodeGeeX
https://www.zywvvd.com/notes/tools/codegeex/codegeex/
作者
Yiwei Zhang
发布于
2024年3月18日
许可协议