Lingma を使用したコーディング方法について説明します。
キーボードショートカットの使用
デフォルトの キーボードショートカット
Lingma は、すぐに使用できるキーボードショートカットを提供しています。次の表に、最も一般的なショートカットを示します。
アクション | Windows | macOS |
任意の位置で補完をトリガーする |
|
|
生成された結果を置き換える |
|
|
生成されたコードをすべて受け入れる |
|
|
生成されたコードを1行ずつ受け入れる |
|
|
AI チャットパネルを閉じる/開く |
|
|
さらに、AI チャットパネルで、Cmd+Enter (macOS/Linux) または Ctrl+Enter (Windows) を押すと改行が作成され、Enter を押すと質問がモデルに送信されます。
キーボードショートカットを使用して生成された結果を置き換えると、 温度 パラメーターが高くなり、場合によってはコンテンツがより発散することがあります。
カスタムキーボードショートカット
JetBrains IDE
[設定] ページに移動します。
左側のナビゲーションウィンドウで、[キーマップ] を選択します。次に、 の下にある Lingmaプラグイン を見つけて展開し、関連するキーボードショートカットを表示および編集します。

VSCode
IDE の左下隅にある設定アイコンをクリックし、[キーボードショートカット] メニューを選択します。

ページで Lingma を検索して、すべてのキーボードショートカットを表示および編集します。
説明VS Code のキーボードショートカットは、ほとんどの場合、簡単に見つけられるように Lingma という名前が付けられています。ただし、インライン候補のトリガー、前のインライン候補の表示、次のインライン候補の表示のキーボードショートカットは、既存の機能名を再利用するため、命名規則が異なります。
設定の構成
IDE 設定
JetBrains IDE
トップレベルメニューに移動し、[設定] を選択するか、ステータスバーの Lingma アイコンをクリックして [詳細設定] を選択します。

VSCode
ステータスバーの右下隅にある Lingma アイコンをクリックして [詳細設定] を選択するか、AI Chat パネルの歯車アイコンをクリックします。
共通設定項目
ファイルタイプ別の自動補完を無効にする。
特定の種類のファイルを操作する際に自動補完が干渉する場合は、それらのファイル拡張子をリストに追加できます。複数の拡張子はカンマで区切ります(例:txt,md)。
IDE
構成
JetBrains IDE

VSCode
説明特定のファイルタイプに対して自動補完を無効にすることで、自動補完の自動的なトリガーを防止できます。 Alt+P キーボードショートカットを使用してファイルの自動補完を手動でトリガーする場合でも、LLM ベースのコード生成と補完を使用できます。
検索候補が表示されている場合でも補完結果を保持する。
デフォルトでは、IDE が構文ベースのドロップダウン補完候補を表示すると、Lingma は視覚的な競合を避けるために、大規模モデルの補完の表示を自動的に停止します。

Lingma に常に LLM 補完を生成させたい場合は、この構成オプションを選択できます。下の図に示すように、Tab キーを押すと、大規模モデルによって生成された結果が受け入れられます。

IDE
構成
JetBrains IDE

VSCode

生成されるコードの最大長を制御する。
Lingma は、自動トリガーと手動トリガーの両方に対して、異なるコード補完長パラメーターの設定をサポートしています。手動トリガー(デフォルトのショートカット
Alt+P)は、自動トリガーよりも少し長い補完を生成するように設定することをお勧めします。IDE
構成
JetBrains IDE

VSCode
説明この構成オプションは、モデルが生成できる最大長を設定するだけです。補完でモデルによって生成されるコンテンツが元々短い場合、この構成を変更しても、モデルに長いコンテンツを強制的に生成させることはできません。
コードコメントを使用する
コメントでコード補完をガイドする
ガイドコメントがない場合、モデルは現在のコンテキストとプロジェクト リファレンスにある類似コードに基づいて、後続のコードを予測することしかできません。モデルの予測が不正確な場合は、コメントを追加して、目的のコードを実装するようにモデルをガイドできます。
たとえば、次のコードでは、モデルは最初に
CHAT_CONTEXTフィールドを予測しますが、これは期待されるものではありません。
この場合は、履歴レコード フィールドを生成するようにモデルに指示するコメントを追加します。その後、モデルは期待されるフィールドと対応するデータ コードを生成します。

説明を使用してメソッドを生成する
エディターのコメントからコードへ機能を使用するか、AI チャット パネルを使用することにより、コメントに基づいてメソッド全体を生成できます。Lingma の AI チャットは通常、コード補完モデルよりも大きなモデル パラメーターを使用するため、AI チャット パネルで直接質問してください。

言語またはメソッド シグネチャ(メソッド名、パラメーター タイプ、戻り値のタイプを含む)に関する特定の要件がある場合は、プロンプトでこれらの詳細を記述してください。

ファイル間インデックスを使用する
ファイルを保存してインデックスを更新する
Lingma のファイル間インデックス作成は、コードのハルシネーションを防ぐための重要なメカニズムです。現在のコンテキストで型とメソッド定義を自動的に識別することにより、モデルはプロジェクト内の他のファイルから型のメンバーとメソッドパラメーターを認識できます。新しいプロジェクトを初めて開くと、Lingma はプロジェクトのファイルインデックスを自動的に作成します。その後、各ファイルの保存は、そのファイルの増分インデックス更新をトリガーします。
ただし、IDE メモリキャッシュのため、1 つのファイルを編集した直後に別のファイルに切り替えると、ローカルインデックスが新しく追加または変更されたコンテンツを認識するように更新されていない可能性があり、モデルが元の型の構造に基づいて推論を行う原因となります。たとえば、コードプロジェクトで、Petオブジェクトに saleable プロパティを追加します。次に、別のファイルに切り替えて、LLM にコードを補完させようとしますが、モデルは別の関連性の低いフィールドを使用してロジックを推測します。

このような情報の不一致を解消するには、前のファイルを編集した後、他のファイルの編集を続行する前に、
Ctrl + S(macOS/Linux の場合はCmd + S)をアクティブに押します。これにより、生成されたコンテンツが変更されたオブジェクト構造を正しく参照することが保証されます。
MyBatis シナリオの最適化ソリューション
Java、Python、JavaScript などの主流のプログラミング言語のファイル間参照機能に加えて、Lingma は、MyBatis XML ファイルを記述する際に Mapper オブジェクトによって参照されるテーブル構造タイプを自動的に識別することもサポートしています。たとえば、insert 文を記述する場合、Lingma は現在のプロジェクトの TaxiOrder タイプ情報を使用して、生成される各フィールドが正しいことを確認します。

コンテキストを管理する
コンテキストをタイムリーにクリアする
各チャットフローでは、以前の会話内容がコンテキストとしてモデルに自動的に提供されます。以前の内容とは無関係の質問をした場合、この余分な情報がモデルの応答を妨げる可能性があります。
[新規チャット] を AI チャットパネルの上部でクリックして新しいチャットフローを開始するか、/clear context コマンドを使用して、新しいチャットフローを開始せずに既存のコンテキストをクリアします。
チャット履歴を表示する
新しいチャットフローを作成した後、次のことができます。
チャット履歴機能を使用して、前のトピックに戻ります。
フォローアップの質問を続けます。

コードについて質問する
一般的な質問
コードについて質問するには、2 つの方法があります。
コードをチャットボックス エリアに貼り付けます。
コードエディタでコードを選択し、それについて質問します。次に例を示します。

組み込みコードタスク
Lingma には、4 つの組み込みコードタスクがあります。
コードの説明
単体テストの生成
コードコメントの生成
コードの最適化
Lingma LLM は、これらのタスク用に特別にトレーニングされています。単体テストの生成には、コードを選択して生成方法を入力する代わりに、必要な組み込みタスクを使用してください。
Lingma は、組み込みコードタスクを使用するための 3 つの方法をサポートしています。最も一般的な方法は、メソッド定義の先頭にある Lingma アイコンをクリックし、ドロップダウン オプションからタスクを選択することです。
方法 1:IDE のドロップダウン メニューを使用します。
IDE
構成
JetBrains IDE

VSCode

方法 2:コードを選択し、右クリックして、コンテキストメニューから Lingma を選択します。

方法 3:コードを選択し、AI チャットパネルに
/と入力して組み込みタスクメニューをアクティブ化し、適切なタスクを選択します。
プロンプトエンジニアリング
質問内の参照コード
質問をする際に、エディタ内のテキストまたはコードを選択すると、選択部分が自動的にMarkdown 引用符形式で質問に追加されます。そのため、プロンプト内で選択されたコードを参照する場合は、「次のコード」や「このコンテンツ」のようなフレーズを使用してください。例:
良い例:次のコードにインデックス範囲外エラーのリスクがあるかどうかを確認してください。
悪い例:選択されたコードにインデックス範囲外エラーのリスクがあるかどうかを確認してください。(この例では、モデルは選択されたコードを識別できません。)
コマンドへのコンテキストの追加
コマンドに補足情報を追加して、チャットのコンテキストをより豊かにすることで、より正確な応答が得られます。

複数ターンのチャットによる効果的なコードの生成
大規模言語モデルと会話する場合、より豊富なコンテキストを提供することで、より正確で期待される結果が得られます。前のチャットターンに基づいて、後続の質問にコンテキスト情報を追加することで、生成された結果が履歴コンテキスト全体をより適切に反映できるようになります。ただし、以前の履歴情報が干渉するようになった場合は、タイムリーにコンテキストをクリアする必要があります。
前のラウンドに基づいて、より詳細なフォローアップの質問をすることができます。
モデルへの例の提供
モデルに特定の形式で出力させたり、特定のルールに従わせたい場合は、単なるテキストの説明よりも参照例を提供する方が効果的なことがよくあります。たとえば、プログラムのテスト結果を特定の JSON 構造にフォーマットする場合は、まずファイルを開き、すべてのコンテンツを選択してから、チャットボックスで質問します。
次の 2 つのプロンプトを比較します。2 つ目のプロンプトの方が、より一貫性のある出力が得られます。
プロンプト 1(効果が低い):ファイルを JSON 形式のテスト レポートに整理します。各テストケースの結果が JSON 構造に整理されていることを確認します。 name フィールドにはテストケース名、success フィールドにはテストケース ステータス、duration フィールドには実行時間(ミリ秒単位)、coverage フィールドにはテスト カバー率を入力します。 detail フィールドは JSON 形式で、各テストケースの input フィールドと output フィールドが含まれていることを確認します。
プロンプト 2(効果が高い):ファイルを JSON 形式のテスト レポートに整理します。
...Report content omitted...次の例を入力レポートとして参照してください。
[ { "name": "If the page number exceeds the valid value range, the system is expected to return an empty list or prompt no-more-data", "duration": 3434, "coverage": 80, "detail": [ { "input": "…", "output": "…" } ] } ]