コードの提案を得る

watsonx Code Assistant

チャットでの会話やエディターでコードを完成させることで、コード候補を生成します。

チャットの会話を使う

必要なコードを説明するプロンプトを入力すると、watsonx Code Assistantが生成されるので、それを使ってください。

  1. 新規チャットを開始するには、 新規 チャットアイコンをクリックします。
  2. 質問や指示をする。
  3. 送信アイコン送信 をクリックします。 Watsonx Code Assistant 入力をコード モデルに送信し、応答をチャットで表示します。

watsonx Code Assistant が最後に良好な結果を生成したメッセージを選択し、そこから新しいチャットでチャット会話を続行します。

  1. 新規チャットで以前のメッセージや既存のメッセージを使用するには、 「新規チャットを開始 」 アイコンをクリックします。
  2. 質問や指示をする。
  3. 送信アイコン送信 をクリックします。 Watsonx Code Assistant 入力をコード モデルに送信し、応答をチャットで表示します。

チャットとエディタ間のコード転送

使用したいコードの提案を受け取ったら、チャットからコードブロックをエディタに挿入することができます。

  1. エディタにカーソルを置きます。
  2. チャットで、 Insert at cursor アイコンをクリックする Insert at Cursor.

チャットでコンテキストとして使用したいコードがエディタにある場合、そのコードをチャットにコピーすることができます。

  1. エディタでコードをハイライトします。
  2. 右クリックでポップアップメニューを表示します。
  3. 選択する watsonx Code Assistant
  4. 「選択したコードをチャットに追加 」を選択します。

自然言語の使用

各チャットメッセージはチャット会話の一部です。 会話は特定のテーマやタスクに集中させる。 コンテキストを別のプログラミング言語、ワークスペース内の別のプロジェクト、または別のプログラミングタスクに切り替えるときは、新しいチャット会話を作成します。 あなたの質問に対して、より適切な結果を得ることができます。

例:

  • Create a Python class Customer. Include attributes for firstName, lastName and age.
  • Create a JavaScript function that fetches data from a REST API endpoint, dynamically populates an HTML table with the results, and updates the UI asynchronously

プロンプト・ライブラリの使用

Watsonx Code Assistantには、一般的な自然言語コーディング要求のセットを含むプロンプトライブラリが含まれている。 チャットにそのまま使用することもできますし、使用するケースに合わせて変更することもできます。

プロンプトライブラリーにアクセスするには

  1. メニューを開くアイコンをクリックメニューを開く
  2. プロンプトライブラリをクリックして開く。
  3. クリップ ボードにコピー アイコンをクリックします。
  4. もう一度「プロンプトライブラリ」をクリックして閉じる。
  5. プロンプトをチャットに貼り付ける。

効果的なチャットメッセージの書き方

会話に最高の結果をもたらすために:

  • チャットメッセージは英語で書いてください。
  • シンプルで明確な指示から始める。
  • 後続のチャットメッセージを使って、モデルのコード出力を改良する。
  • 各ステップについて、できるだけ具体的かつ詳細に説明すること。 作成したコードは、その後のチャットメッセージを通じて徐々に強化することができます。
  • 関連するコンテキストを提供するために、メッセージの中でファイルやメソッドの参照を使用してください。 例えば、モデルに他のメソッドに似たメソッドを作らせたい場合は、メッセージに'similar to @<method> を追加する。
  • 答えの関連性が薄れたり、新しいタスクを始めたりしたら、新しいチャット会話を作成し、そこから作業する。 異なる無関係なチャットメッセージでモデルを混乱させる可能性のある1つの大きな会話よりも、それぞれが特定のコンテキストを持つ多くの短いチャット会話を持つ方が良い。

ワークスペース内のコードを参照する

ローカルワークスペース内の特定のファイル、クラス、関数、メソッドについて質問したり、詳細を確認したりするには、 コードリファレンスを使用できます。 これらの参考文献は重要な文脈を提供し、解答の正確性を高めるのに役立つ。

  1. チャット・メッセージの一部として'@ シンボルを入力すると、ワークスペースのファイル、クラス、メソッドのリストが表示されます。
  2. 参照したいファイル名、クラス名、メソッド名の文字を入力してリストを絞り込む。
  3. クリックして参照を選択します。Watsonx Code Assistantは、リファレンスの内容をメッセージの一部として送信します。

.gitignore の項目は、コード・リファレンスの選択肢には含まれない。 .env などの機密データをお持ちの場合は、必ず .gitignore に追加してください。

ワークスペースのローカル・フォルダを開くと、 watsonx Code Assistant、これらのアイテムのインデックスがメモリ上に作成されるので、チャット内でこれらのファイルや関数を参照することができます。 エディタは、セッション中に追加または変更したファイルのインデックスも作成します。 インデックスには、これらのプログラミング言語の最新ファイルが1,000ファイルまで含まれている:

  • C
  • C++
  • Go
  • Java
  • JavaScript
  • Python
  • TypeScript

ファイルのインデックス作成はローカルリポジトリでのみ機能します。

メソッドを参照するとき、またはメソッドで CodeLens を使用するとき、 watsonx Code Assistant は特定のコード言語をサポートします。 完全なファイルを参照することは、すべての言語で機能します。 詳細については、 メソッドを使用する際の言語 サポートを参照してください。

ファイルを参照する際のサイズ制限は50KBです。 この制限に達した場合は、ファイルを個々の関数に分割し、各関数を参照してください。 あるいは、関数の境界に注意して49KBでファイルを分割し、分割ごとにファイルを参照する。 どちらの方法でも、結果を統合する必要がある。

コードを参照する例を含む使用例:

コードを参照するチャットメッセージ
ユース・ケース メッセージの例
既存の関数を基に関数を生成する send_code_explanation_messageに似たメソッド'send_translate_message 作成する
既存のユニットテストに従ったユニットテストを生成する @testLoadTablesChildConnectionReceiverJob.hのユニットテストに似た@getNameのユニットテストを作成する
既存機能の強化 format_documentsにエラー処理とログ・ステートメントを追加する
既存機能の強化 @setEmailを更新し、NULL文字列のエラー処理を追加しました
コードの説明 mainmain.pyは何をするのか?
コードの説明 send_invoiceのロジックを説明する
関数やクラスのドキュメントを作成する JavaDoc を@Customerに追加

検索拡張世代

標準プラン

スタンダード・プランでは、検索機能拡張世代(RAG)を設定することができます。これは、追加のコンテキストによるプロンプトの拡張を通じて、大規模言語モデル(LLM)出力を最適化するプロセスです。 詳しくは、 検索拡張世代(RAG)の設定を 参照のこと。

クエリを送信すると、 watsonx Code Assistant、RAGツールを使用してコードベースやドキュメントから情報を取得します。 この関連するコンテキストは、LLMモデルに送られる前にクエリに付加される。 RAGシステムは、最も有用な情報を含む回答を作成するために、含めるべき情報源または除外すべき情報源を決定する。

RAGでは、 watsonx Code Assistant スタンダードプランと Visual Studio Code エクステンションが必要。 Eclipse プラグインでは使用できません。

Git リポジトリで RAG が有効になっている場合、チャット会話で @repo < instruction > または @docs < instruction > を入力すると、参照されたリポジトリまたはベクターストア内のドキュメントからのコンテキストを使用する応答が生成されます。 < instruction > パラメータをプロンプトメッセージに置き換える。

  • 参照先のコード・ベース・リポジトリを使用するための構文例:

    @repo how is a chat message processed?
    
  • 参照されるドキュメント・コレクションを使用するためのサンプル構文:

    @docs What are the steps to setup a connection to the user data store?
    

チャットコマンドの使用

特定のタスクを実行するために使用できるチャットコマンド:

チャットコマンド
コマンド 説明 詳細情報
/document アクティブなワークスペースの参照ファイル、メソッド、クラスのドキュメントを生成する ドキュメントの作成
/docs IBMおよびRed Hat製品のドキュメントを参照する質問をする IBMのドキュメントから答えを得る
/explain 生成AIを使用してコードを分析し、要約することで、コードが何を行っているかを理解する コードの説明
/help タスクに関する迅速なサポート チャットに「/help 入力
/unit-test 様々なプログラミング言語の単体テストを生成する ユニットテストの生成
/translate コードをある言語から別の言語に翻訳する コードの翻訳
@repo リトリーバル・オーギュメンテッド・ジェネレーション(RAG)用 RAGの有効化
@docs リトリーバル・オーギュメンテッド・ジェネレーション(RAG)用 RAGの有効化

チャット会話セッションの管理

チャットセッションメニューを使用して、既存のチャット会話セッションを管理できます。

メニューを開く

  1. メニューを開くアイコンをクリックメニューを開く
  2. チャットセッションをクリックします。

チャット会話セッションの切り替え

チャット会話セッションを切り替えるには、チャットセッションリストからセッションを選択します。

チャットセッション名の変更

チャット会話セッションの名前を変更するには

  1. チャットセッションで、オーバーフローメニューアイコンのオーバーフローメニューを クリックします。
  2. **「名前変更」**をクリックします。
  3. 新しい名前を入力し、Enterを押す。

チャットセッションの削除

1つのチャット会話セッションを削除するには

  1. チャットセッションで、オーバーフローメニューアイコンのオーバーフローメニューを クリックします。
  2. **「削除」**をクリックします。

複数のチャット会話セッションを削除するには

  1. チャットの選択アイコンをクリックチャットの選択
  2. 削除したいチャットを選択するか、「 すべて選択 」をクリックします。
  3. 削除アイコン 「Delete」を クリックし、 「Delete」 ボタンをクリックして確定します。

エディタでコードを完成させる

エディタにコードやコメントを入力すると、コードの候補が表示されます。

Eclipseでエディターを使う

C、C++、Go、JavaScript, Python、TypeScript:

  1. ファイルを右クリックする。
  2. で開く] をクリックし、[テキストエディタ] をクリックする。

Javaの場合、Eclipse IDEの Javaエディタによるインライン・コード生成はwatsonx Code Assistantでサポートされているが、最初にセットアップする必要がある。

  1. Eclipseの設定でContent Assistに移動します。

    コンテンツ・アシストへのナビゲーション
    オペレーティング・システム パス
    MacOS Eclipse> 設定 >Java> エディター > コンテンツ・アシスト
    Windows ウィンドウ > 環境設定 >Java> エディタ > コンテンツアシスト
  2. 挿入セクション、「単一の提案を自動挿入する 」のチェックを外します。

  3. 自動アクティベーション・セクションで、Javaの自動アクティベーション・トリガーに「._abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 追加し、「自動アクティベーションを有効にする」がチェックされていることを確認する。

  4. Apply and Close(適用して閉じる )をクリックします。

単線補完

エディタでコード行を書くと、watsonx Code Assistantはそれを完成させるコードを提案することができる。

  1. コード行の入力を開始し、一時停止する。
  2. Watsonx Code Assistantは、入力した行を完成させるコード・サジェストを追加する。
  3. Visual Studio Codeで、 Tabを押して提案を受け入れる。 Eclipseで、 Return または Enterを押して提案を受け入れる。 または Escを押して拒否する。

マルチラインコンプリート

入力したコード行やコメントに基づいて、複数行のコード・サジェストを得ることができる。

  1. コード行の入力を開始するか、必要なコードを説明するコメントを入力する。

    最良の結果を得るためには、例えば、予想されるプログラミング言語をコメントに含めてください:

    // Sort an array with a fast sort function (TypeScript programming language)
    
  2. キーボードショートカットを使う。

    デフォルトのキーボードショートカット
    オペレーティング・システム ショートカット
    MacOs オプション+。
    Windows Alt+。
  3. Watsonx Code Assistantは、複数行のコード提案を追加します。

  4. Visual Studio Codeで、 Tabを押して提案を受け入れる。 Eclipseで、 Return または Enterを押して提案を受け入れる。 または Escを押して拒否する。

特定のコード言語のコード補完を無効にする

必要に応じて、 Visual Studio Code 拡張機能の Completion: Disabled Languages 設定を使用して、特定のコード言語のコード補完を無効にすることができます。

  1. watsonx Code Assistant の拡張機能設定を開きます。

  2. 「アイテムを追加」 をクリックして、コード言語を選択します。 選択肢は以下の通りです

    コード言語
    選択 コード言語
    c C
    cpp C++
    go Go
    java Java
    javascript JavaScript
    javascriptreact JavaScript 反応する
    python Python
    typescript TypeScript
    typescriptreact TypeScript 反応する

コード言語を再度有効にするには、その言語をリストから削除します。

  1. リストからコード言語をクリックします。

  2. Remove Item アイコンをクリックする Close アイコンをクリック すると、無効な言語のリストから削除されます。

キーボードショートカットの変更

デフォルトの組み合わせがすでに他のタスクに割り当てられている場合は、キーボードショートカットを変更できます。

Visual Studio Codeでキーボードショートカットを変更するには:

  1. コードメニューをクリックする。
  2. 設定」を選択する。
  3. キーボードショートカットを選択する。
  4. watsonxを検索します。
  5. 変更したいショートカットについて、 キーバインドの変更編集鉛筆アイコンをクリックし、別のキーの組み合わせを割り当てます。

Eclipseのキーボードショートカットを変更する:

  1. メニューをクリックする。 Eclipse メニューをクリックする。
  2. 設定」を選択する。
  3. Keys 入力して設定を絞り込み、「Keys」をクリックする。
  4. WCA 入力してリストを絞り込む。
  5. 変更したいキーボードショートカットを選択します。
  6. Binding フィールドに、新しいキーの組み合わせを入力する。

コード補完を無効にする

必要であれば、エディター・ウィンドウでのコードの補完を無効にすることができます。

Visual Studio Codeでコード補完を無効にするには:

  1. エディターの右下隅にある、 Disable watsonx Code Assistant Completionsのアイコン画像を クリックする。
  2. watsonx Code AssistantCompletions を有効にする」アイコンをもう一度クリックすると、補完機能を再度有効にすることができます。

Eclipse IDEでコード補完を無効にするには:

  1. エディター・ツールバーで、「Disablewatsonx Code AssistantCompletions」アイコンをクリックします。
  2. watsonx Code AssistantCompletions を有効にする」アイコンをもう一度クリックすると、補完機能を再度有効にすることができます。

コードサジェスト生成のベストプラクティス

最高の結果を得るために、これらのヒントを活用してください。

長いコードブロックにはチャットを使用してください。 改良と定型コードには、エディタ内でのコード生成を使用します。

チャットを利用する

  • 授業のアウトラインを作成する
  • メソッドを詳細に指定する
  • 提案されたコードにさらに指示を加える(たとえば、名前の変更や置換など)

エディター内のコード生成を使って

  • 入力し始めたコード行を完成させる
  • ゲッターやセッターなどの定型コードを自動的に作成する
  • 1行のコメントで記述できるメソッドとコードを作成する

Comment-to-code:指示ではなく、説明的なコメントを使用する

エディターでcomment-to-codeを使うときは、自分が書いたコードにコメントを書くのと同じように、意図した動作を説明するコメントを書いてください。 例えば、'//return even numbers from an arraylist または '//method that returns even numbers from an arraylist を使用する。

コメントを'//write a method that returns even numbers from an arraylist ような命令として書かないでください。Watsonx Code Assistantは、典型的な記述的コメントを多く含むデータでコードを完成させるように訓練されたモデルを使用するので、このようなタイプのコメントはより良い結果をもたらします。

エディタ内のコード生成に使用されるコンテキスト

コード生成の重要な要素はコンテキスト、つまりモデルに渡す周囲のコードだ。 エディタ内のコード生成では、watsonx Code Assistantを使う:

  1. 生成がトリガーされる行の前の20行のコード。
  2. 生成がトリガーされる行の後の20行のコード。
  3. 生成のトリガーとなる現在のファイルの先頭から200行まで。
  4. 生成がトリガーされた行を囲むコードに類似したコードスニペットを5つまで。 これらのスニペットは、現在のファイルと同じプログラミング言語で開いた、過去10個のファイルから取られている。

エディター内コード生成の結果を改善する:

  • ワークスペースで、watsonx Code Assistantに知ってもらいたいコードがあるファイルを開く。Watsonx Code Assistantは、これらのファイルの中から、補完のトリガーとなる場所と似たようなコード、例えば似たようなクラスや変数を使うメソッドを見つけようとし、このコードをコンテキストとしてモデルに送ります。
  • watsonx Code Assistantてクラス定義から始めるか、import文を追加するか、watsonx Code Assistantチャットを使って最初のアウトラインを作成し、結果をワークスペースのファイルにコピーして、エディタ内のコード生成を続ける。 ファイル数がゼロか、ほとんど空の状態から始める場合は、エディター内でのコード生成は使わないこと。