この記事はユーザーによる寄稿であり、内容は著者の見解のみを表しています。
著者: Cang He 氏、Dachang の元シニア Java エンジニア、Alibaba Cloud のエキスパートブロガー、CSDN 2023 Rising Star、土木工学のトランスコーディング、現部門テクノロジーリーダー、インターネットテクノロジーと職場体験の共有に注力。
みなさんこんにちは、カン・ヘです。AI時代には、数多くの素晴らしい製品ツールが急速に登場し、それらの効率化ツールが科学技術の進歩を大きく促進してきました。特にプログラミングの分野では、GitHub CopilotからCodeGeeX、Tongyi Lingmaに至るまで、様々なツールが際限なく登場しています。今日は、私が最近発見した優れたプログラミング支援ツール、CodeFuse を皆さんと共有したいと思います。
1.CodeFuseとは何ですか
CodeFuse は、GitHub Copilot と同様のコーディング アシスタントで、Ant Group が自社開発した基本的な大規模モデルをベースに微調整した大規模なコード モデルです。
CodeFuse には、コード補完、コメントの追加、コードの解釈、単体テストの生成、およびコード最適化機能があり、開発者がより迅速かつ簡単にコードを作成できるようにします。
IntelliJ IDEA に GitHub Copilot をインストールするとチャット機能が呼び出せないことがわかっていますが、この機能はまだテスト段階ですが、CodeFuse ではチャット機能を直接呼び出すことができ、コードをうまく説明できます。
2. CodeFuseのダウンロードとインストール
現在、CodeFuse はまだ内部テストの段階にあり、Cang He 氏も内部テストの資格を取得していますが、まだ申請していない方は、CodeFuse 公式 Web サイトから直接申請し、関連情報を入力して審査を待ちます。 . 一般的なレビューサイクルは 1 ~ 3 日です。
クローズドベータに申し込む
申請後、社内テストの資格を取得後、直接プラグインをダウンロードできます。
まだ社内テスト段階のためプラグイン市場には投入されておらず、プラグインアプリケーション市場で直接検索することもできません。
プラグインをダウンロード
IntelliJ IDEA を例として、[プラグインのダウンロード] をクリックしてダウンロードします。
アイデアプラグインをダウンロード
ローカルストレージ
次に、アイデアを開き、ダウンロードしたプラグインを選択してインストールします。
アイデアプラグインのインストール
インストールが完了したら、idea を再起動します。
インストールが完了しました
私のアイデアでは、GitHub Copilot、CodeGeeX、Tongyi Lingma がインストールされていることがわかります。他のプラグインと比較するために、コード補完部分では、実験が客観的であることを保証するために、一度に 1 つのプラグインだけを有効にしています。そして本当です。
インストール後、デフォルトでコード補完を実行するかどうかを設定できます。
コード補完を設定する
後でログインする必要があります。サイドバーをクリックしてログインした後、ショートカットキーなどを設定できます。
ログイン完了
3. CodeFuseの機能と比較評価
1. コード補完
他のすべてのコーディング アシスタントと同様、コード補完は最も基本的なコア機能です。実験の客観性と信頼性を確保するために、単一補完方式を採用し、最初に他のプラグインのコード補完をオフにします。
GitHub Copilot コード補完をオフにします。
GitHub コパイロットのコード補完をオフにする
Tongyi Lingma コード補完をオフにします。
Tongyi Lingma コード補完をオフにする
CodeGeeX コード補完をオフにします。
CodeGeeX コード補完をオフにする
現時点では、コード補完は CodeFuse によってのみ有効になっています。最初に空のクラスを作成し、何も書かず、改行を押すだけで次のように表示されます。
空のクラスのデフォルトの補完
プロンプト コードの後に中国語のショートカット キーに対応したプロンプトがあることがわかります。
ショートカット キーに関するわかりやすいヒント
プロンプト エンコーディングを使用するには Tab キーを押してください。CodeFuse は main メソッドを直接完成させませんが、コア行のみを完成させ、メソッドの他の括弧を省略します。GitHub copilot と比較すると、これはプログラマのコーディング習慣に沿っており、デフォルトの改行補完方法もアイデアに沿っていると思います。このアイデアでは、メソッドの左括弧を記述した後、Newline キーを押して右括弧を直接完成させます。実際には 1 行を生成するだけで済みます。
CodeFuse の単一行補完
CodeFuse の単一行入力プロンプト
現時点では、GitHub Copilot コード補完をオンにし、他のすべてのプラグイン コード補完をオフにします。GitHub Copilot が完全な main メソッドを直接プロンプトし、デフォルトのステートメントを出力していることがわかりますが、個人的には、シナリオによっては負担になると思います。CodeFuse は改行時に次の文を要求しますが、これはよりフレンドリーだと思います。
GitHub Copilotの起動完了
単一行のコード補完モデルは GitHub Copilotよりも高速ですが、これは GitHub Copilot のリモート モデルが依存している大規模なモデルが openai であるためと考えられます。
単一行のコード補完
複数行のコードの場合は、補完することもできます。コメントを直接書いてメソッドを直接生成することもできます。CodeFuse では、単一行のコード補完と複数行のコード補完は完全に区別されています。
0 から 10 までの乱数を生成します。素数であってはなりません。
2. コードの説明
コードの説明
選択したコードを右クリックするか、サイドバーで直接「/explain」をクリックします。現在、GitHub Copilot ではチャット機能が利用できないため、説明コードを表示するこのサイドバーは依然として非常に役立ちます。
/explain をクリックしてコードを説明します
3. コメントの生成
コメントの生成は、コメントが必要なコードを右クリックしても生成されます。公式の説明書を読んだところ、メソッド関数の生成はより完璧なようです。
注: 現在、モデルのアノテーション生成機能は関数レベル全体を比較的完全にサポートしているため、関数レベルでのアノテーションの生成を優先することをお勧めします。
コードコメントを生成する
ここで私は、製品が Tongyi Lingma のインタラクションを学習し、メソッド内で直接操作できることを提案しますが、右クリックのコストはまだ少し高いです。
Tongyilingコード生成コメントメソッド
4.片面を生成
同様に片面生成が必要なコードについては、「片面生成」を右クリックすると右欄にCodeFuseで生成された片面が表示され、片面コードをテストクラスに直接挿入することができ大変便利です。
CodeFuse は片側を生成します
5. コードの最適化
最適化する必要があるコードを右クリックすると、CodeFuse によって生成された最適化の提案が表示されます。
このコードを最適化してもらいます。
@Before
public void before() {
//可以为null
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 7890));
HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor(new OpenAILogger());
httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
v2 = OpenAiClient.builder()
.apiKey("xxxxx")
.connectTimeout(50)
.writeTimeout(50)
.readTimeout(50)
.interceptor(Arrays.asList(httpLoggingInterceptor))
.proxy(proxy)
.apiHost("https://api.openai.com/")
.build();
}
CodeFuse は最適化の提案を生成します
最適化の提案に従ってコードを直接生成することを選択できます。
最適化の提案によりコードが直接生成されます
元のコードを直接置き換えることも、コードをコピーすることもできます。最も良い方法は、前後のコードを比較して、CodeFuse によって何が変更されたかを確認することです。これは非常に直感的です。
CodeFuse によって何が変わったのかを見てみましょう。
生成された最適化されたコード:
@Before
public void before() {
// 可以为 null
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 7890));
HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor(new OpenAILogger());
httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
String apiKey = "xxx";
int connectTimeout = 50;
int writeTimeout = 50;
int readTimeout = 50;
String apiHost = "https://api.openai.com/";
v2 = OpenAiClient.builder()
.apiKey(apiKey)
.connectTimeout(connectTimeout)
.writeTimeout(writeTimeout)
.readTimeout(readTimeout)
.interceptor(Arrays.asList(httpLoggingInterceptor))
.proxy(proxy)
.apiHost(apiHost)
.build();
}
現在、GitHub Copilot のこの機能はアイデアでは使用できません。
GitHub Copilot では利用できない機能
大規模なモデル コードの理解機能と静的ソース コード分析機能に基づいて、CodeFuse は選択されたコード フラグメントの分析と理解をサポートし、最適化と改善の提案を提示します。また、改善の提案に基づいてコード パッチを直接形成することもできるため、より良いコードの作成に役立ちます。 . .
4. まとめ
CodeFuse はまだ内部テスト段階にありますが、テスト結果は依然として素晴らしく、特にコード UI スタイルとサイドバーのインタラクション、およびカスタム構成のサポートは比較的フレンドリーです。
イノベーションによって推進されるこの時代において、CodeFuse などのツールの登場は、プログラミング プロジェクトの開発プロセスを加速するだけでなく、プログラミングの世界に新たな可能性をもたらします。テクノロジーの最先端を進みたいと願う開発者にとって、CodeFuse は間違いなく、試して深く探求する価値のある貴重なリソースです。