企业版CodeGeeX使用手册
  • 【V4.8】企业版CodeGeeX使用手册

下载PDF

【V4.8】企业版CodeGeeX使用手册

欢迎打开企业版CodeGeeX使用手册!

在这份为企业用户定制的CodeGeeX使用支持中,我们提供了简介、安装、客户端功能、用户后台、使用案例、FAQ、反馈七个模块,以方便您更好地使用这一强大的开发工具,希望对您有所帮助。

1. 简介

CodeGeeX是一款基于大模型的AI智能编程助手,它可以实现代码的生成与补全,为代码添加注释,不同编程语言的代码互译以及针对技术和代码的智能问答等功能,帮助开发者显著提高工作效率。CodeGeeX支持300+种编程语言,适配多种主流IDE平台,包括VSCode、JetBrains全家桶等。

企业版CodeGeeX亮点:

  • 包含所有基础功能(代码生成、智能问答、单元测试、代码翻译、代码注释等)
  • 支持交互式编程、检索增强生成(RAG)
  • 基于企业自有的业务代码进行模型微调
  • 支持本地私有化部署,提供企业级管理后台支持

支持的主流编程语言(30种):主流编程语言支持的效果更好。

分类
支持的语言
前端HTML、JSON、JavaScript、TypeScript、Vue、XML
后端C、C++、C#、Dart、Go、Haskell、Java、Kotlin、Lua、Objective-C++、Pascal、PHP、Python、R、Ruby、Rust、Scala、Shell、SQL
APPC#、Dart、Java、Kotlin、Swift
其他CUDA、Markdown、Tex、Txt

请在附录中查看支持的所有编程语言(310种)

2. 客户端(插件)安装

2.1 获取用户账号

  1. 用户可从管理员获取用户后台的访问地址,该访问地址也是Host地址,或者从网站的横幅中复制。以下为网站横幅示例:
  1. 通过网页浏览器,用户可以从网页进行登录,从而获取操作手册和下载插件。有以下几种方式可以获得登录账号:

    • 如果用户后台已开放注册,用户可以通过用户后台登录页面的注册按钮进行用户注册,完成后可使用注册的账号进行登录。
    imageimage
    进入用户后台界面,选择注册注册用户信息
    • 如果用户后台未开放注册,用户可以通过管理员获取用户账号进行用户登录。
    • 如果用户后台已对接SSO或其他企业内部账号,则通过点击登录页面的企业登录完成用户登录。

2.2 CodeGeeX for Visual Studio Code 插件

运行环境

该插件基于 CodeGeeX 代码生成模型,适配 Visual Studio Code 集成开发环境(1.72.0版本及以上),支持Windows、MacOS、主流Linux桌面版、麒麟、统信等操作系统。稳定版本的信息请咨询管理员。

下载地址

登录后可以在下载与支持菜单中,客户端下载页面获取VS Code的插件。兼容版支持VS Code 1.72.0 - 1.77.0版本。

安装步骤

  1. 在 Visual Studio Code 中点击左侧 Extensions(扩展)按钮。
  2. 点击 Extensions 侧边栏右上角的...,打开菜单。
  3. 点击菜单中的Install from VSIX ...。
  4. 选中本地的安装包文件,并点击Install安装。
  5. 安装后重新启动 IDE 即安装成功。
imageimage
进入扩展界面,选择安装方式选择安装包

配置说明

企业版 CodeGeeX 需配置服务器地址后才能使用。配置方法:

  1. 侧边栏点击CodeGeeX的图标打开CodeGeeX侧边栏,点击右上角更多设置。
  2. 找到 Codegeex: Host 设置项,输入管理后台的访问地址,地址示例:http://192.168.0.1:2080。

设置说明:

设置项
设置内容
说明
Host填写服务器地址通过配置Host,可以控制向模型发送请求时的域名或IP地址
Language Preference
语言
English
中文
Default
设置聊天回复、代码注释、插件侧边栏UI的语言
Candidate Num
候选数量
1(fast) —— default
2(medium)
3(slow)
设置候选代码的数量;候选数量越多,生成补全建议花费的时间越长。
Code Repository Infiling
代码仓库级补全
勾选,默认不选中在管理后台完成配置的情况下,是否参考当前的代码项目生成补全建议。
Completion Delay
补全延迟
填写数字(单位为秒),默认0.5,最低0.1指在编辑器中无操作时开始获取代码补全建议前的延迟时间。可以调整此值,以便在使用CodeGeeX扩展进行编码时获得更佳体验,同时减少不必要的补全建议。
Disabled For
禁用语言
填写item(key)和valueCodeGeeX临时禁用的特定语言列表,可以手动设置语言作为键,然后将值设置为true以禁用某种语言,或设置为false以重新启用它(需要重新启动VSCode)。
Enable Extension
启用扩展
勾选,默认不选中如果您想启用CodeGeeX的隐身模式,请勾选此选项。
Generation Preference
生成偏好
Automatic—— default
Line by line
Block
选择生成偏好。
  • automatic:根据输入生成代码行或代码行。
  • Line by line,每次生成一行代码和/或一行注释。
  • Block:每次生成多行(代码块)。
Only Key Control
仅按键控制
勾选,默认不选中如果您希望在隐身模式下仅在需要时通过按下Alt/Option + \ 键获得建议,请勾选此选项。
Thrid Party Function
三方功能调用
勾选,默认不选中在管理后台配置完三方的授权信息后,允许AI调用第三方接口的功能,例如Gitlab、Gitee等。
Command Display Mode
指令展示模式
勾选,默认选中勾选后,将系统默认指令展示在代码文件内每个函数上方。
Command Display Type
指令展示类型
Text —— default
文字

Icon
图标
勾选指令展示模式后,通过选择指令展示类型,选在系统默认指令在函数上方的展现方式。文字类型为平铺展示、图标类型为收起的列表。

登录使用

企业版CodeGeeX 插件需要登录才可以使用全部功能。登录方法如下:

  • 点击左侧的 CodeGeeX 图标,打开 CodeGeeX 侧边栏,在侧边栏中输入邮箱和密码进行登录,登录成功后即可开始使用。
  • 或点击网页登录跳转至浏览器进行登录,在浏览器中登录成功后,回到 VS Code 即可开始使用。(点击VS Code中的头像选择账号后可以登出)

升级更新

CodeGeeX 插件支持在IDE内进行升级更新。更新方法如下:

  • 点击 企业版CodeGeeX 侧边栏中的更多选项中的下拉框,选择升级。

  • 或点击右下角升级弹窗中的升级。

    imageimage
    通过侧边栏进行升级通过升级弹窗进行升级

2.3 CodeGeeX for JetBrains IDEs 插件

运行环境

该插件基于CodeGeeX 代码生成模型,适配 JetBrains 公司的系列 IDE 环境(2021.3版本及以上),支持Windows、macOS、主流Linux桌面版、麒麟、统信等操作系统。稳定版本的信息请咨询管理员。

适配的 IDE 包括 IntelliJ IDEA、PyCharm、WebStorm、Android Studio、GoLand、PhpStorm、CLion、Rider、DataGrip、DataSpell、RubyMine、AppCode 及 Aqua 等。

下载地址

登录后可以在下载与支持菜单中,客户端下载页面获取JetBrains系列的插件。标准版可支持多种JetBrains的IDEs;兼容版支持IntelliJ IDEA 2022.1.3之前的版本。

安装步骤

  1. 在IDE菜单中找到Settings项并点击,打开设置窗口。
  2. 在设置窗口左侧栏中点击Plugins,并点击顶部的设置图标。
  3. 点击菜单中的Install Plugin from Disk,选择本地的安装包文件并打 开。安装后重启 IDE 即可使用。
jetbrains-install-1jetbrains-install-2jetbrains-install-3
打开设置窗口打开插件设置从本地安装

配置说明

企业版 CodeGeeX 需配置私有化部署的服务器地址后才能使用。配置方法:

  1. 侧边栏点击CodeGeeX的图标打开CodeGeeX侧边栏,点击右上角更多设置。
  2. 在 Host 选项中输入管理后台的访问地址,地址示例:http://192.168.0.1:2080。
  3. 点击右下OK。
jetbrains-setting-1jetbrains-setting-2
找到Settings找到Codegeex: Host

设置说明:

设置项
设置内容
说明
Host
域名
填写服务器地址通过配置Host,可以控制向模型发送请求时的域名或IP地址
Candidate Num
候选项个数
1(fast) —— default
2(medium)
3(slow)
设置候选代码的数量;候选数量越多,生成补全建议花费的时间越长。
Only Key Control
只用快捷键
勾选,默认不选中勾选后会停用自动补全,只能通过按下Alt/Option + \ 键触发AI生成补全建议。
Third Party Function
调用第三方功能
勾选,默认不选中在管理后台配置完三方的授权信息后,允许AI调用第三方接口的功能,例如Gitlab、Gitee等。
Code Repository Infilling
代码仓库级补全
勾选,默认不选中在管理后台完成配置的情况下,是否参考当前的代码项目生成补全建议。
Generation Preference
生成偏好
Automatic—— default
Line by line
Block
选择生成偏好。
  • automatic:根据输入生成代码行或代码行。
  • Line by line,每次生成一行代码和/或一行注释。
  • Block:每次生成多行(代码块)。
CodeGeeX UI
侧边栏语言
Comment language
代码注释语言
Chat language
聊天回复语言
Default
English
中文
设置插件侧边栏UI、代码注释、聊天回复的语言
Command Display Mode
指令展示模式
勾选,默认选中勾选后,将系统默认指令展示在代码文件内每个函数上方。
Command Display Type
指令展示类型
Text —— default
文字

Icon
图标
勾选指令展示模式后,可选择指令展示类型,选在系统默认指令在函数上方的展现方式。文字类型为平铺展示、图标类型为收起的列表。
Completion Delay
补全延迟
填写数字(单位为秒),默认0.5,最低0.1指在编辑器中无操作时开始获取代码补全建议前的延迟时间。可以调整此值,以便在使用CodeGeeX扩展进行编码时获得更佳体验,同时减少不必要的补全建议。
Disabled For
禁用的语言
文本输入框CodeGeeX临时禁用的特定语言列表,手动填写语言名称并使用英文逗号分割,例如java,python,设置后将禁用某种语言的补全,删除后则重新启用。

登录使用

  • 点击右侧的 CodeGeeX 图标,打开 CodeGeeX 侧边栏,在侧边栏中输入邮箱和密码进行登录。
  • 或点击网页登录跳转至浏览器进行登录,在浏览器中登录成功后,回到 IDE 中即可开始使用。(点击IDE右下角CodeGeeX的logo选择账号后可以登出)

升级更新

CodeGeeX 插件支持在IDE内进行升级更新。更新方法如下:

  • 点击 企业版CodeGeeX 侧边栏中的更多选项中的下拉框,选择升级。

  • 或点击右下角升级弹窗中的升级。

    imageimage
    通过侧边栏进行升级通过升级弹窗进行升级

冲突提示

  • 当插件安装后,有时候会有弹窗提示JetBrains自带的补全被禁用,忽视此提示即可,不影响插件正常使用。

3. 客户端功能

企业版CodeGeeX客户端功能主要包含代码生成和补全、智能问答、企业知识库问答、单元测试、代码翻译、代码注释、交互式编程、第三方功能调用等。

3.1 代码生成

CodeGeeX可以根据自然语言注释描述的功能自动生成代码,也可以根据已有的代码自动生成后续代码,补全当前行或生成后续若干行,帮助提高编程效率。

当插件处于激活状态下,在编辑器中输入停止时,会从当前光标处开始进行自动的代码生成与补全。此时,右下角 CodeGeeX 图标转圈表示正在生成。生成的代码以灰色显示,按Tab即可将生成结果在当前位置插入。如果不需要使用生成的代码,可按Esc取消,也可以忽略生成的代码并继续输入。

按块/按行采纳: 当AI生成补全建议时,可以通过Command+右(Mac)或Ctrl+右(Windows)按块采纳单行的部分代码;也可以通过Command+下(Mac)或Ctrl+下(Windows)逐行采纳代码建议。

在配置中可以设置自动生成的方式:

  • Automatic:模型自主判断生成的行数
  • Line by line:逐行生成
  • Block:多行生成

以下是使用 JavaScript 时示例:

使用功能示例
  • 自动生成:在正常的编码工作流程中,稍微停下光标,会看到CodeGeeX根据上下文给出的代码建议。
infilling-1
  • 注释生成:通过写一段注释,CodeGeeX可以根据注释含义提供相应的代码建议。注释按照正常注释规则,用简单准确的语言描述功能即可。
infilling-2

3.2 智能问答

问答模式

用户可通过与 CodeGeeX 聊天,直接询问问题并接受答案。对话模块可以回答与技术相关的各种问题,例如解释代码、编程语法、最佳实践、测试用例等。

  • 使用对话功能,可以从 VS code 的左侧侧边栏点击 CodeGeeX 图标,并进入 Ask 标签。在对话模式中,输入问题并发送,即可得到模型回答。在输入问题的同时,同时在右侧编辑器选中代码,便可以结合选中的代码进行提问。
    注:IntelliJ IDEA 的侧边栏在 IDE 的右侧。
  • 如果配置了三方模型,支持在问答场景中切换三方模型。
  • 针对模型给出的回答,可以快速进行复制、插入、对比、运行等操作。
  • 如果对模型给出的回答不满意,可以在回答的左下角点击重新生成的图标,让模型对之前的问题重新给出回答。
chat-1chat-2
智能问答页面聊天记录支持更多操作

快捷指令

使用功能示例
  • 使用/处理与特定命令相关的问题:
    • /explain:解读选中的代码。如果没有选择代码,则默认解释全部代码。
    • /comment:为选中的代码添加逐行注释。如果没有选择代码,则默认为所有代码添加注释。
    • /fixbug:修复选中代码中的bug。
    • /tests:为选中的代码生成单元测试。
    • /optimize:为选中的代码提供优化建议。
  • 在管理员通过提示词完成配置后,可以调用自定义指令。
command-1

快捷指令的多种调用方式

调用方式示例
  • 右键菜单:
    • 菜单模式点击鼠标右键菜单在编辑器中调用。
command-2
  • 函数顶部(VSCode标准版):
    • 点击函数顶部的指令进行调用。
    • 在设置中支持切换文字模式和图标类型。
    • 在设置中支持打开或关闭该功能。
  • 函数左侧(JetBrains):
    • 点击函数左侧图标进行调用
    • 在设置中支持打开或关闭该功能。
  • 支持的编程语言:
    • VSCode标准版:支持Java、Go、Python、C、C++、C#、Javascript、Typescript、PHP
    • JetBrains支持:Java、Python、Go、Kotlin
command-3
command-4
command-4-1
  • 问答窗口:
    • 打开侧边栏问答窗口,点击底部的命令/按钮调用。
    • 管理员设置的自定义快捷指令仅支持在问答窗口调用。
command-5

基于代码仓库的智能问答

针对私有代码仓库的智能问答,使用了 RAG 检索增强生成的技术。因而对企业代码仓库中的知识,能在不进行模型微调的情况下,通过向量化数据的方式被有效检索,并在结果生成中进行增强,大幅减轻生成内容的幻觉。

另外,利用@repo的代码仓库进行智能问答时,针对代码片段的生成也更准确,因为模型针对代码仓库进行检索,增强了生成能力;同时也会根据返回的代码溯源信息,找到代码出处进行验证,实现更精准的代码生成。

使用功能示例
  • 使用@repo选中代码库后进行提问:
    • 管理员完成相关企业代码仓库配置。
    • 用户通过聊天框的@repo发起提问。
    • 输入@repo后可以输入关键词检索企业代码库。
chat-rag-1

示例:当管理员在管理后台完成企业代码仓库的配置后,用户可以通过@repo中选择管理员配置的企业代码库进行智能问答。

chat-rag-2chat-rag-3
选中企业代码库提问基于所选代码库通过RAG生成回答

基于文档库的智能问答

针对企业文档库的智能问答,使用了 RAG 检索增强生成的技术。因而对项目的文档信息,可以通过向量化数据的方式被有效检索,基于文档库内容生成的答案深度融合了企业内部的研发文档知识,减轻了模型生成的幻觉。

当管理员在管理后台完成企业文档库的配置后,用户可以通过@db中选择管理员配置的企业文档库进行智能问答。

rag-db-1rag-db-2
选中企业文档库提问基于所选文档库通过RAG生成回答

基于本地文件的智能问答

针对本地文件的智能问答,允许用户上传本地代码文件和本地技术文档,并基于上传的本地文件生成回答。通过本地文件问答功能,用户能够随时对本地文件进行研发问答,省去了繁琐的步骤。

local-doc-1local-doc-2
上传本地文件提问基于上传的文件进行回答

支持上传的文件类型

# 代码文件类型
["html", "htm", "json", "js", "ts", "vue", "xml", "c", "cpp", "cxx", "cc", "c++", "cs", "dart", "go", "hs", "java", "kt", "kts", "lua", "mm", "pas", "php", "py", "r", "rb", "rs", "scala", "sc", "sh", "bash", "sql", "swift", "cu", "md", "tex", "txt"]
# 文档类型
["doc", "docx", "pdf", "txt", "md", "markdown"]

3.3 单元测试

自动生成单元测试,既可以通过智能问答的交互方式实现,也可以通过内置的“/tests”命令实现,对于Java、Go、Python、C、C++、C#、Javascript、Typescript、PHP等主流语言可以点击函数顶部的“生成单测/Generate Tests”快捷指令。以下是实际编程工作中,使用CodeGeex的单元测试功能的步骤和注意事项:

  1. 直接点击函数顶部的快捷指令,即可自动生成对应函数的单元测试代码。

  2. 在你的代码中选择需要进行单元测试的特定函数或模块,可以是新增的功能函数,已修复的bug或者经常容易出错的代码部分;选中代码后,点击鼠标右键选择CodeGeeX的生成单测选项,或在侧边栏的问答框中输入“/tests”,即可自动生成单元测试代码。

Tips:添加注释有助于单元测试代码的准确性在选定的代码段上方,编写简单清晰的注释,描述函数功能或预期输出。CodeGeeX在生成测试代码时会参考这些注释的内容,注释越明确,CodeGeeX生成测试代码越精准。
如果你的函数涉及多个边界条件或特殊情况,可以在注释中明确指出,便于生成更全面的测试用例。

  1. 在代码项目的目录栏中右键点击待测试文件,可以选择CodeGeeX生成单测,从而针对整个文件生成单元测试。文件级单测生成支持的编程语言为Java、Python、Go。

    imageimageimage
    点击生成文件级单测单测文件生成中完成单测文件生成
  2. 在用户后台的个人页面可以指定几种主流语言的单元测试框架,便于根据指定框架生成单元测试。

3.4 代码翻译

CodeGeeX 的代码翻译功能可以将一段写好的代码翻译为不同的编程语言。

  1. 在CodeGeeX的侧边栏,点击代码翻译或Translation。
  2. 此时在编辑器中自由选择代码片段,该片段将自动出现在“Input Code”框中。

在翻译界面,选择目标语言后,点击翻译进行翻译;结果将显示在“输出代码”框中,点击插入可将翻译结果插入到编辑器中。

translate-2translate-3
翻译模式界面将代码从Java翻译为Go的效果

3.5 代码注释

在代码编辑区域,使用右键菜单-CodeGeeX-生成注释功能,可以解释代码含义并为代码增加注释。

注释生成支持中文和英文;在初次生成时,IDE会提示选择语言;之后可在插件设置中更改。

comment-1comment-2
原始代码添加过注释的代码

3.6 交互式编程(仅Visual Studio Code的标准版插件支持)

交互式编程InLine Chat是一种通过在代码中嵌入对话,与智能编程助手CodeGeex进行交互的方式,可以使用“Command + I(mac)或者 Ctrl + I (windows)”的快捷键触发InLine Chat功能。

在代码上下文中提出问题,编程助手根据你的描述生成代码,或者直接为代码添加注释,提升编程效率。

3.7 代码仓库级补全

在客户端的设置页面中,可以通过勾选Code Repository Infilling增强补全建议。通过参考当前项目工程中的代码文件,模型可以生成更符合当前代码仓库的补全建议。

注意:当前代码仓库需要管理员在管理后台的企业知识库中完成对应代码仓库的配置,或者用户在用户后台的个人知识库中完成个人代码仓库的配置。

repository-infilling-setting-1repository-infilling-1
代码仓库级补全设置代码仓库级补全溯源

3.8 第三方功能调用

在客户端的设置页面中,可以通过勾选Third Party Function调用第三方功能。第三方的配置需要在用户后台完成填写,在客户端的对话框中唤起“调用#”来调用创建合并请求、创建项目议题。

注意:该功能需要在用户后台完成第三方平台的配置,当前支持Gitlab和Gitee。如果切换了三方模型,该功能将不可用。

third-party-setting-1third-party-function-1
调用第三方功能设置调用第三方功能
  • Gitlab的凭证权限:需要勾选api、read_api、read_repository、write_repository、read_registry和write_registry权限。
找到Gitlab配置页面配置Gitlab凭证
  • Gitee的凭证权限:需要勾选Pull Request和Issue等权限。
找到Gitee配置页面配置Gitee凭证

3.9 新增代码行数上报

客户端支持统计用户当前的代码行数变动上报至管理后台,以便管理后台完成相关效能指标的统计。

  • 如果用户希望只统计指定项目中指定代码文件或目录的代码行数变动,则需要在当前IDE的代码项目中创建.codegeexcount配置文件,并在.codegeexcount配置文件中配置需要统计的代码文件或目录。通过问答窗口创建的配置文件会提供默认的统计规则示例,用户可以根据自己的需求进行修改。
imageimage
点击创建.codegeexcount文件修改配置文件内容
# 使用正则表达式构建上报规则,作为统计白名单,用于统计新增代码。
# 1. 当项目中有符合该文件内规则的文件时,自动上报对应文件内的新增代码行数。
# 2. 当该文件内没有可用规则时,则不进行新增代码行数的上报。
# 3. 如果该文件不存在,则通过.gitignore文件内配置的忽略规则,忽略对应文件后,上报其余文件的新增代码行数。
# 4. 如果该文件和.gitignore均不存在,则不统计项目内所有文件的新增代码行数。
  • 如果当前IDE的代码项目中不存在.codegeexcount文件,而存在.gitignore文件,则会统计除.gitignore相关规则以外项目中的其他代码文件。
  • 如果当前IDE的代码项目中既不存在.codegeexcount文件,也不存在.gitignore文件,则不会统计项目中的所有代码文件。

3.10 代码审查和提交信息生成

在提交代码时,支持通过分支对变动的代码进行代码审查,并生成符合规范的提交信息。


3.11 项目地图(仅Pro版支持)

在客户端的设置页面中,可以通过勾选Project Map开启项目地图功能,从而在侧边栏问答窗口的项目地图页面展示该项目的结构信息。通过参考当前的代码项目结构生成UML图,开发者无需深入阅读每个功能点的代码细节,即可实现对项目整体架构的快速理解;同时,帮助开发者分析并可视化各个模块之间的关系、依赖和交互,便于梳理复杂的模块结构。

  • 查看下一层:点击项目地图中的节点,通过查看下一层按钮,可以查看该节点对应的下一层代码结构。
  • 层级导航:通过左上方的下拉框,可以根据访问路径自由回到不同的层级,如果间隔超过5级,则再次点击查看下一层时会重新生成。
  • 操作列表:通过右上方的操作列表,可以重新生成当前层级的UML图,同时支持以PNG格式导出当前视图,或复制当前视图的图片源码。
  • 视图模式:通过右上方的切换视图,支持切换图片模式和源码模式。
  • 自由缩放:在底部支持通过放大镜按钮自由缩放。

注意:当前代码仓库需要管理员在管理后台的企业知识库中完成对应代码仓库分支的配置,或者用户在用户后台的个人知识库中完成个人代码仓库中该项目分支的配置。

imageimage
查看项目地图查看下一层

4. 用户后台

企业版CodeGeeX的用户后台主要包含工作台、智能问答、工具箱、功能配置等主要功能。

4.1 工作台

在用户后台中,支持用户通过工作台页面查看个人用户的代码采纳情况及相关的统计数据。

4.2 网页版智能问答

  1. 在用户后台中,支持用户通过网页端访问研发相关的智能问答功能,包括调用命令、引用代码库问答、引用文档库问答、上传本地文件问答等。具体细节请参考3.2。
  2. 如果在问答中生成代码片段或文件,可以直接通过点击回答右下角的“运行XXX”按钮进行效果预览。当前仅支持预览前端代码片段/文件。
  3. 对于AI生成的回答,用户可以进行复制、点赞/点踩、收藏、分享等操作。
  4. 对于生成的前端代码,用户点击“运行XXX”按钮后可通过底部“添加到工具箱”作为自定义工具保存,之后在网页端智能问答窗口“我的代码”页面中进行查看或进行再次使用。
back-chat-1back-chat-preview-1
网页版问答网页版问答代码预览

支持通过“我的代码”页面进行查看或进行再次使用。

4.3 工具箱

  1. 在用户后台中,通过工具箱菜单下的默认工具可以使用研发相关的工具,例如代码翻译等。

4.4 功能配置

4.4.1 配置单元测试框架

在用户后台中,通过在功能配置菜单下的单元测试,可以指定生成单元测试时使用的主流语言的代码框架。如果全部选择默认,则代码框架同管理员默认配置的一致。

4.4.2 三方配置

在用户后台中,通过完成功能配置菜单下的三方配置,可以在客户端中调用第三方的功能。当前支持Gitlab和Gitee。

注意:代码仓库的地址为代码仓库根目录的地址,例如“http://www.testGitlab.com”。Gitlab的API凭证必须配置api,read_api,read_repository,read_registry的权限,等级最低为maintainer级。

当前支持的Gitlab版本:GitLab Community Edition v16.7.8。

当前支持的Gitee版本:Gitee线上版。

4.5 个人知识库管理

4.5.1 个人代码仓库

用户后台支持配置远端私有代码仓库(Git)或本地上传代码仓库,可用于代码仓库级补全功能。在代码仓库级补全功能中,服务端会优先在企业代码库中找到对应的代码项目生成补全建议,如果管理员没有在管理后台配置对应的企业代码仓库,则会在个人代码仓库中找到对应的代码项目生成补全建议。

每个用户最多添加10个个人代码仓库,个人代码仓库不支持通过@repo进行智能问答,仅用于代码仓库级补全功能。

当前支持的Gitlab版本:GitLab Community Edition v16.7.8。

当前支持的Gitee版本:Gitee线上版。

  1. 登录用户后台,在个人代码仓库页面中可以通过添加单个项目或者多个项目的方式添加代码仓库。

    • 在个人知识库管理菜单下的个人代码仓库页面,点击新增可添加远端或本地的代码仓库。
    • 新增代码仓库支持两种方式,分别是添加单个项目和添加多个项目(即整个项目组)。添加多个项目组会自动拉取项目组下的所有项目。
      • 添加单个代码仓库时,支持远端和本地两种方式。
        • 本地代码仓库支持通过本地代码项目压缩包进行上传,大小不超过50MB,支持zip,tar,7z等压缩包类型。通过本地上传添加的代码仓库不支持自动更新,仓库名称需要和用户IDE中项目名称完全一致才能用于生成代码仓库级补全建议。
        • 远端代码仓库支持Gitlab和Gitee等两种类型的Git代码仓库,可通过通过浏览器Url、Git地址、SSH链接等不同入口的链接进行添加。
      • 添加多个代码仓库时,仅支持远端的方式。
        • 添加Gitlab类型的多个项目时,项目组地址为浏览器中项目组的访问地址。
        • 添加Gitee类型的多个项目时,支持Gitee的地址类型为组织或企业,组织或企业地址为浏览器中的访问地址。
          • 在Gitee页面位于组织下的项目列表页面时,地址类型为组织(包括Gitee企业版中组织)。
          • 当使用了Gitee企业版,且Gitee页面为企业下的项目列表页面,地址类型为企业。
    添加单个项目添加多个项目
    • Gitlab的API凭证权限:
      • 添加单个项目时,API凭证需要为项目的凭证或者是项目管理员,必须配置api,read_api,read_registry的权限,项目凭证等级最低为reporter级。
      • 添加多个项目时,API凭证需要为项目组的凭证或者是组管理员,必须配置api, read_api, read_user, read_registry, read_repository等权限,项目组凭证等级最低为reporter级。
    找到Gitlab配置页面配置Gitlab凭证
    • Gitee的API凭证权限:
      • 添加单个或多个项目时,必须配置user_info,projects,groups,enterprises的权限。
    找到Gitee配置页面配置Gitee凭证
    • 当代码仓库的状态为rag同步完成时,用户可以在研发问答中选择对应的代码仓库进行基于RAG的问答。

注意1:请勿使用不同的地址多次添加同一个代码仓库,数据表中会存为多条记录,但用户在客户端调用时仅能调用一个。

注意2:本地上传的代码仓库需要填写项目名作为仓库名称,否则本地上传的代码项目无法用于生成代码仓库级的补全建议。

4.6 可视化编程 / CodeGeeX Reflection

在用户后台中,用户在可视化编程页面,可以通过自然语言端到端的生成可运行的前端项目代码,并通过自然语言或点击页面上的元素进行修改,实时查看代码运行的效果。

生成的前端项目代码会直接在浏览器中运行,可以随时通过自然语言再次修改页面。也可以选中左侧的放大镜后,悬停在页面的特定元素上,选中该元素进行修改;如果选中成功后,放大镜会变成确认标志,点击此标志可以取消之前选中的元素。

同时,点击右侧的代码按钮可以查看该前端项目的源码,并通过修改代码的形式修改页面元素。生成的前端项目代码可直接下载至本地。

5. 使用案例

  1. 通过注释及函数定义生成代码:
# write a quick sort function in python that use divide and conquer method to sort the array given
def quick_sort(arr):

插件给出的建议(灰色部分),按Tab接受建议:

# write a quick sort function in python that use divide and conquer method to sort the array given
def quick_sort(arr):
    if len(arr) <= 1:
        return arr
    else:
        pivot = arr[0]
        less_than_pivot = [x for x in arr[1:] if x <= pivot]
        greater_than_pivot = [x for x in arr[1:] if x > pivot]
        return quick_sort(less_than_pivot) + [pivot] + quick_sort(greater_than_pivot)

注意:注释中用自然语言描述的部分,应按照正常编写注释时的叙述方式简单、准确地描述代码段的功能。
不应把它当作ChatGPT类的工具,用对话、指令的方式描述,也不宜提出过于复杂或笼统的任务。
例如,以下是比较好的描述方式:

// 快速排序函数
// Given two non-negative integers, num1 and num2 represented as string, return the sum of num1 and num2 as a string.
// read the data in file "abc.txt", then print it out

以下叙述形式CodeGeex可能无法准确理解:

// 写一个python脚本自动抓取GitHub Trending中有关ChatGFT的项目
// 我想用Python爬取豆瓣电影TOP250的数据,代码要怎么写?
// 请写一段javascript代码求解鸡兔同笼问题:鸡和免一共35个头,94个脚,求鸡免分别多少
  1. 根据上下文自动生成(灰色部分为CodeGeeX生成):
import matplotlib.pyplot as plt
from sklearn import linear_model
import numpy as np

count = 50
noise = 6

x = np.linspace(0, 10, 100)
y = np.sin(x) + np.random.normal(0, noise, 100)

plt.plot(x, y, 'o')

X = x.reshape(-1, 1)

model = linear_model.LinearRegression()
model.fit(X, y)

plt.plot(X, model.predict(X), color='red')

  1. 智能问答
case-chat-1case-chat-2
技术问题解答基于代码仓库的问答(RAG)
  1. 交互式编程
case-inline-chat-1case-inline-chat-2
编辑器中问答生成结果

6. 常见问题解答

如何修改生成注释使用的语言?

答:CodeGeeX的注释生成功能可以生成中文或英文的注释,使用的语言可以在设置中指定。

  1. JetBrains IDEAs的设置,我们以 IDEA 为例。如果CodeGeeX在IDEA中生成的注释是英文,按照下面的步骤,在设置中修改为中文即可: 设置修改步骤:Settings——Languages & Frameworks——CodeGeeX——Comment Language。

  2. VSCode 中第一次使用生成注释功能时,IDE会提示选择注释的语言,并让用户选择是否要设置为默认语言。如果后续需要修改注释的默认语言,可以按照下面的步骤,在CodeGeeX插件中进行设置: 设置修改步骤:首选项——设置——CodeGeeX——Coodegeex.Explanation:Language Preference。

如何修改单行/多行的补全方式?

答: 通过以下步骤:可以设置自己更习惯的补全方式:单行补全或者多行自动补全。 设置修改步骤:首选项——设置——CodeGeeX——Generation Preference。

如何通过设置实现用快捷键触发代码补全功能?

答:

  1. 在VSCode 中通过以下步骤:勾选后可以控制CodeGeeX 插件,只有在按下“alt/option + \”快捷键之后才会触发代码补全功能。 设置修改步骤:首选项——设置——CodeGeeX——Only Key Control。

  2. 在 JetBrains 的 IDE 中,以 IDEA 为例,如果希望只通过快捷键触发代码补全功能,可以通过以下步骤实现: 右下角CodeGeeX 图标——全局禁用。 再进入IDE的设置,指定快捷键来实现按键触发。 设置修改步骤:Setting——Keymap——CodeGeeX——Show Completions。

能否用其它快捷键代替“Tab”,做为代码生成的采纳键?

答:

  1. 在VSCode中可以通过设置,将 “Tab”键 做为代码采纳的快捷键进行修改,更符合自己的使用习惯。 修改时要注意,需要把系统默认和 CodeGeeX默认,这 2 个“Tab”键,同时修改才可以生效。 设置修改步骤: 左下角设置——键盘快捷方式——搜索 “editor.action.inlineSuggest.commit”——修改 2 个默认 Tab 设置。

  2. 在 JetBrains IDEs中,也可以通过设置,将 “Tab”键 做为代码采纳的快捷键进行修改,更符合自己的使用习惯。以 IDEA 为例,通过以下的步骤进行设置修改: 设置修改步骤:Setting——Keymap——CodeGeeX——Apply Completions to Editor。

CodeGeeX侧边栏区域无法显示怎么办?

答:打开 VSCode 后,有时会出现 CodeGeeX侧边栏区域无法显示,或者一直显示加载状态,或者显示“还原视图时出错” 、或者显示“无效用户”这样的提示。

解决方法:在MAC电脑的钥匙串访问中,找到当前vscode版本并且尾缀是“.codegeex”的项,删除后,重新启动 VSCode,侧边栏就可以正常使用了。

代码库和文档库支持哪些编码格式?

答:CodeGeeX企业版的代码库和文档库支持UTF-8、UTF-16/UTF-32、GBK/GB2312、ANSI、Windows-1252、ISO-8859-1、Big5、Shift_JIS、EUC-JP、KOI8-R等编码格式。

切换三方模型库后使用问答显示“connection error”怎么办?

答:联系管理员,检查对应的三方模型配置。

7. 反馈

为了不断提升产品质量和用户体验,我们诚挚邀请您分享CodeGeeX的使用感受和宝贵意见。无论是发现的问题、对功能的期望,还是进一步的需求,都是我们优化和升级的关键线索,欢迎通过以下渠道分享:

  1. 联系企业内部的CodeGeeX系统管理员,并通过系统管理员反馈给企业对接的售后。

  2. 反馈问卷:(直达链接或下方扫一扫)

反馈收集表CodeGeeX微信公众号

附录

支持的所有编程语言(310种)

{'abap': 'ABAP',
 'actionscript': 'ActionScript',
 'ada': 'Ada',
 'agda': 'Agda',
 'ags_script': 'AGS_Script',
 'alloy': 'Alloy',
 'ampl': 'AMPL',
 'antlr': 'ANTLR',
 'apacheconf': 'ApacheConf',
 'api_blueprint': 'API_Blueprint',
 'apl': 'APL',
 'applescript': 'AppleScript',
 'arc': 'Arc',
 'arduino': 'Arduino',
 'aspectj': 'AspectJ',
 'assembly': 'Assembly',
 'ats': 'ATS',
 'augeas': 'Augeas',
 'autohotkey': 'AutoHotkey',
 'autoit': 'AutoIt',
 'awk': 'Awk',
 'basic': 'Basic',
 'befunge': 'Befunge',
 'bison': 'Bison',
 'bitbake': 'BitBake',
 'blitzbasic': 'BlitzBasic',
 'blitzmax': 'BlitzMax',
 'bluespec': 'Bluespec',
 'boo': 'Boo',
 'brainfuck': 'Brainfuck',
 'brightscript': 'Brightscript',
 'bro': 'Bro',
 'c': 'C',
 'c++': 'C++',
 'c2hs_haskell': 'C2hs_Haskell',
 "cap'n_proto": "Cap'n_Proto",
 'cartocss': 'CartoCSS',
 'ceylon': 'Ceylon',
 'chapel': 'Chapel',
 'chuck': 'ChucK',
 'cirru': 'Cirru',
 'clarion': 'Clarion',
 'clean': 'Clean',
 'click': 'Click',
 'clips': 'CLIPS',
 'clojure': 'Clojure',
 'cmake': 'CMake',
 'cobol': 'COBOL',
 'coffeescript': 'CoffeeScript',
 'coldfusion': 'ColdFusion',
 'coldfusion_cfc': 'ColdFusion_CFC',
 'common_lisp': 'Common_Lisp',
 'component_pascal': 'Component_Pascal',
 'coq': 'Coq',
 'creole': 'Creole',
 'crystal': 'Crystal',
 'csharp': 'Csharp',
 'csound': 'Csound',
 'css': 'CSS',
 'cuda': 'Cuda',
 'cycript': 'Cycript',
 'cython': 'Cython',
 'd': 'D',
 'darcs_patch': 'Darcs_Patch',
 'dart': 'Dart',
 'desktop': 'desktop',
 'digital_command_language': 'DIGITAL_Command_Language',
 'dns_zone': 'DNS_Zone',
 'dockerfile': 'Dockerfile',
 'dogescript': 'Dogescript',
 'dylan': 'Dylan',
 'e': 'E',
 'ec': 'eC',
 'ecere_projects': 'Ecere_Projects',
 'ecl': 'ECL',
 'edn': 'edn',
 'eiffel': 'Eiffel',
 'elixir': 'Elixir',
 'emacs_lisp': 'Emacs_Lisp',
 'emberscript': 'EmberScript',
 'erlang': 'Erlang',
 'f#': 'F#',
 'factor': 'Factor',
 'fancy': 'Fancy',
 'fantom': 'Fantom',
 'fish': 'fish',
 'flux': 'FLUX',
 'forth': 'Forth',
 'fortran': 'FORTRAN',
 'g-code': 'G-code',
 'gams': 'GAMS',
 'gap': 'GAP',
 'genshi': 'Genshi',
 'gentoo_ebuild': 'Gentoo_Ebuild',
 'gentoo_eclass': 'Gentoo_Eclass',
 'gettext_catalog': 'Gettext_Catalog',
 'glyph': 'Glyph',
 'go': 'Go',
 'golo': 'Golo',
 'gosu': 'Gosu',
 'grace': 'Grace',
 'grammatical_framework': 'Grammatical_Framework',
 'graphql': 'GraphQL',
 'graphviz': 'Graphviz',
 'groff': 'Groff',
 'groovy_server_pages': 'Groovy_Server_Pages',
 'harbour': 'Harbour',
 'haskell': 'Haskell',
 'hlsl': 'HLSL',
 'html': 'HTML',
 'html+django': 'HTML+Django',
 'html+eex': 'HTML+EEX',
 'html+php': 'HTML+PHP',
 'http': 'HTTP',
 'hy': 'Hy',
 'idl': 'IDL',
 'idris': 'Idris',
 'igor_pro': 'IGOR_Pro',
 'inform_7': 'Inform_7',
 'inno_setup': 'Inno_Setup',
 'io': 'Io',
 'ioke': 'Ioke',
 'irc_log': 'IRC_log',
 'isabelle': 'Isabelle',
 'j': 'J',
 'jasmin': 'Jasmin',
 'java': 'Java',
 'javascript': 'JavaScript',
 'jflex': 'JFlex',
 'json': 'JSON',
 'json5': 'JSON5',
 'jsoniq': 'JSONiq',
 'jsonld': 'JSONLD',
 'julia': 'Julia',
 'kit': 'Kit',
 'kotlin': 'Kotlin',
 'krl': 'KRL',
 'labview': 'LabVIEW',
 'lasso': 'Lasso',
 'latte': 'Latte',
 'lean': 'Lean',
 'lex': 'Lex',
 'lfe': 'LFE',
 'lilypond': 'LilyPond',
 'linker_script': 'Linker_Script',
 'liquid': 'Liquid',
 'lisp': 'Lisp',
 'literate_agda': 'Literate_Agda',
 'literate_coffeescript': 'Literate_CoffeeScript',
 'literate_haskell': 'Literate_Haskell',
 'livescript': 'LiveScript',
 'llvm': 'LLVM',
 'logos': 'Logos',
 'logtalk': 'Logtalk',
 'lolcode': 'LOLCODE',
 'lookml': 'LookML',
 'lsl': 'LSL',
 'lua': 'Lua',
 'm': 'M',
 'm4': 'M4',
 'makefile': 'Makefile',
 'mako': 'Mako',
 'maple': 'Maple',
 'markdown': 'Markdown',
 'mask': 'Mask',
 'mathematica': 'Mathematica',
 'matlab': 'Matlab',
 'maxscript': 'MAXScript',
 'mediawiki': 'MediaWiki',
 'metal': 'Metal',
 'minid': 'MiniD',
 'mirah': 'Mirah',
 'modelica': 'Modelica',
 'module_management_system': 'Module_Management_System',
 'monkey': 'Monkey',
 'moonscript': 'MoonScript',
 'mtml': 'MTML',
 'muf': 'MUF',
 'mupad': 'mupad',
 'myghty': 'Myghty',
 'nesc': 'nesC',
 'netlinx': 'NetLinx',
 'netlogo': 'NetLogo',
 'nginx': 'Nginx',
 'nimrod': 'Nimrod',
 'ninja': 'Ninja',
 'nit': 'Nit',
 'nix': 'Nix',
 'nsis': 'NSIS',
 'nu': 'Nu',
 'objective-c': 'Objective-C',
 'objective-c++': 'Objective-C++',
 'objective-j': 'Objective-J',
 'octave': 'Octave',
 'omgrofl': 'Omgrofl',
 'ooc': 'ooc',
 'opa': 'Opa',
 'opal': 'Opal',
 'opencl': 'OpenCL',
 'openscad': 'OpenSCAD',
 'ox': 'Ox',
 'oxygene': 'Oxygene',
 'oz': 'Oz',
 'pan': 'Pan',
 'papyrus': 'Papyrus',
 'parrot': 'Parrot',
 'parrot_assembly': 'Parrot_Assembly',
 'parrot_internal_representation': 'Parrot_Internal_Representation',
 'pascal': 'Pascal',
 'pawn': 'PAWN',
 'perl': 'Perl',
 'perl6': 'Perl6',
 'php': 'PHP',
 'piglatin': 'PigLatin',
 'pike': 'Pike',
 'pod': 'Pod',
 'pogoscript': 'PogoScript',
 'pony': 'Pony',
 'pov-ray_sdl': 'POV-Ray_SDL',
 'powershell': 'PowerShell',
 'processing': 'Processing',
 'prolog': 'Prolog',
 'propeller_spin': 'Propeller_Spin',
 'public_key': 'Public_Key',
 'pure_data': 'Pure_Data',
 'purebasic': 'PureBasic',
 'purescript': 'PureScript',
 'python': 'Python',
 'qmake': 'QMake',
 'r': 'R',
 'ragel_in_ruby_host': 'Ragel_in_Ruby_Host',
 'raml': 'RAML',
 'raw_token_data': 'Raw_token_data',
 'rdoc': 'RDoc',
 'realbasic': 'REALbasic',
 'rebol': 'Rebol',
 'red': 'Red',
 'redcode': 'Redcode',
 'renderscript': 'RenderScript',
 'restructuredtext': 'reStructuredText',
 'rhtml': 'RHTML',
 'rmarkdown': 'RMarkdown',
 'robotframework': 'RobotFramework',
 'rouge': 'Rouge',
 'ruby': 'Ruby',
 'rust': 'Rust',
 'sage': 'Sage',
 'saltstack': 'SaltStack',
 'sas': 'SAS',
 'sass': 'Sass',
 'scala': 'Scala',
 'scaml': 'Scaml',
 'scilab': 'Scilab',
 'self': 'Self',
 'shell': 'Shell',
 'shellsession': 'ShellSession',
 'shen': 'Shen',
 'slash': 'Slash',
 'slim': 'Slim',
 'smt': 'SMT',
 'solidity': 'Solidity',
 'sourcepawn': 'SourcePawn',
 'sparql': 'SPARQL',
 'sqf': 'SQF',
 'sql': 'SQL',
 'squirrel': 'Squirrel',
 'stan': 'Stan',
 'standard_ml': 'Standard_ML',
 'stata': 'Stata',
 'ston': 'STON',
 'stylus': 'Stylus',
 'supercollider': 'SuperCollider',
 'swift': 'Swift',
 'systemverilog': 'SystemVerilog',
 'tcsh': 'Tcsh',
 'tea': 'Tea',
 'tex': 'TeX',
 'textile': 'Textile',
 'thrift': 'Thrift',
 'turing': 'Turing',
 'txl': 'TXL',
 'txt': 'TXT',
 'typescript': 'TypeScript',
 'unified_parallel_c': 'Unified_Parallel_C',
 'uno': 'Uno',
 'unrealscript': 'UnrealScript',
 'urweb': 'UrWeb',
 'vala': 'Vala',
 'vcl': 'VCL',
 'verilog': 'Verilog',
 'visual_basic': 'Visual_Basic',
 'volt': 'Volt',
 'vue': 'Vue',
 'webassembly': 'WebAssembly',
 'webidl': 'WebIDL',
 'wisp': 'wisp',
 'x10': 'X10',
 'xbase': 'xBase',
 'xc': 'XC',
 'xml': 'XML',
 'xojo': 'Xojo',
 'xpages': 'XPages',
 'xproc': 'XProc',
 'xquery': 'XQuery',
 'xs': 'XS',
 'xtend': 'Xtend',
 'yang': 'YANG',
 'zephir': 'Zephir',
 'zig': 'Zig',
 'zimpl': 'Zimpl'}