DUICUO

CodeGeeX は Copilot に勝てますか?

序文

CodeGeeXは、Github Copilotに似た、130億のパラメータを持つマルチプログラミング言語コードを生成するための事前学習済みモデルです。清華大学、Zhipu AIなどの機関によって共同開発されました。

現在、CodeGeexはオープンソースの無料アプリケーションです。Copilotと比べて使い方が簡単で、ドキュメントも比較的シンプルです。

CodeGeeX は VPN を必要とせず、VS Code プラグイン プラットフォームに直接インストールして使用できるため、簡単に始めることができます。

CodeGeexの4つの使用モード

CodeGeex には 4 つの使用モードがあります。

  • ステルスモード
  • インタラクションモード
  • 翻訳モード
  • プロンプトモード

ステルスモード

CodeGeex がアクティブな場合、入力を終えるとカーソル位置からコンテンツの生成を開始します。選択されたコンテンツが生成されると、灰色で表示されます。Tab ​Tab键​を押すと、生成された結果が挿入されます。(これは Copilot と共通です。)

インタラクションモード

Ctrl+Enter を押して対話モードを起動します。右側のウィンドウには、生成された候補フラグメントが x 個表示されます(x の数は「候補数」設定で変更できます。生成できる候補は最大 3 個で、候補数が多いほど生成プロセスが遅くなります)。候補フラグメントの使用コードをクリックすると、そのコードが挿入されます。(少し分かりにくいですが、実際には候補フラグメントは 1 つしか生成されませんでした)。

翻訳モード

WindowsではCtrl+Alt+T、MacではCtrl+Option+Tを押して翻訳モードを起動します。CodeGeeXはコードを現在のエディタに一致する言語に翻訳します。翻訳結果の上にある「コードを使用」をクリックすると、コードが挿入されます。また、設定で挿入時の翻訳済みコードの処理方法を選択できます。コメントアウトするか、上書きするかを選択できます。(この翻訳モードは、コンテキストに基づいて言語に一致するコードを生成せず、二次的な操作が必要となるため、Copilotよりもユーザーフレンドリーではありません。)

選択したコンテンツがコメントのみの場合、Ctrl+Option+T を押すと、翻訳対象の言語を選択し、コードを一括生成できます。個人的な経験では、ステルスモードよりも直接的な操作性だと感じています。

プロンプトモード

公式デモ:

処理が必要なコードを選択し、Alt/Option + t を押すとサジェストモードが起動します。この時、定義済みのテンプレートのリストが表示されます(デフォルトでは、Java と Python 言語のテンプレートのみが利用可能です)。

必要に応じて、構成ファイルのプロンプト テンプレート セクションでテンプレート コンテンツを追加および編集できます。

テンプレートの内容:

実用:

このモデルはまださらなる調査が必要であり、期待に応えていません。

追加機能(個人的にはプログラミング言語の翻訳として分類できると考えています)

サイドバーの CodeGeex プラグインをクリックし、処理するコードを入力して入力ボックスで言語を選択し、出力ボックスでターゲット言語を選択して、[翻訳] ボタンをクリックして翻訳することができます。

CodeGeex の使用中に発生した問題

1. コンテキストを統合する能力が弱く、コーディングのパフォーマンスが低い。

CodeGeexのコンテキスト認識能力はあまり良くありません。TypeScriptファイルで株式取引問題を解く貪欲アルゴリズムを記述するように指示したところ、C++のヘッダーインポートが返されました。

私たちが見た公式デモでも同じことが示されていましたが、少なくとも私には理解できませんでした。

コードを再生成するとコメントが追加されますが、これらのコメントは英語で、コンテキストが含まれていません。

翻訳モードでは、このインポートされたコンテンツのソースは不明です。

コード スニペットを生成するには TypeScript を明示的に使用する必要がありますか、それとも C++ ヘッダー ファイルが直接的な候補になりますか?

2. 生成されたコンテンツは扱いにくく、簡潔ではなく、モデルトレーニングコードのソースも含まれています (これはまったく予想していませんでした)。

クイックソート アルゴリズムの例を書くように求められたとき、モデルのトレーニングに使用されるコード スニペットのソースもコメント アウトするとは思っていませんでした。

3. コード生成が遅い

単純なコードは一度にすべてを与えることはできません。行ごとに与えなければなりません。

4. JS/TSのサポートが不十分

ステルス モードを使用すると、コンテキストに基づいて .py ファイルにコードを生成できますが、C# コードは .ts または .js ファイルに生成されます。

結論は

実際の開発において、CodeGeeXのユーザーエクスペリエンスはCopilotに大きく劣ります。しかし、CodeGeeXは清華大学の研究室が開発したオープンソースの無料プロジェクトであり、その計算能力とデータ量はOpenAIのそれよりもはるかに低いです。CodeGeeXプロジェクトをベースにプライベートな展開やアルゴリズムモデルの改良・最適化を行うことは可能ですが、これらの新興の国内オープンソースモデルをサポートすることは依然として必要です。

つまり、まだやるべきことはたくさんあります。