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

智能编程助手 CodeGeeX

作者头像
为为为什么
发布2024-03-19 10:26:42
3240
发布2024-03-19 10:26:42
举报
文章被收录于专栏:又见苍岚

市面上有多款文本大模型辅助编程工具,本文记录智谱华章公司的工具 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模型,该模型已经开源

示例

生成补全
代码语言:text
复制
import requests
# 请求 https://www.codegeex.cn/ 网站,获取返回响应状态、响应头、响应内容,并输出

response = requests.get('https://www.codegeex.cn/')
print(response.status_code)
print(response.headers)
print(response.text)
注释生成
  • 代码
代码语言:text
复制
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)
  • 生成注释
代码语言:text
复制
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 代码
代码语言:text
复制
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
代码语言:text
复制
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;
   }
 }
智能问答
  • 原始代码
代码语言:text
复制
#!/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
  • 选择部分代码并提问

解释一下这个函数

代码语言:text
复制
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://cloud.tencent.com/developer/article/2398021

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-3-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 简介
    • 主要特点
      • 大模型
      • 示例
        • 生成补全
          • 注释生成
            • 代码翻译
              • 智能问答
              • 安装使用
                • VS code
                • 参考资料
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档