LabVIEW に AI がやって来た! (4)~ NI Nigel™ AIアドバイザに既存のVIの機能の説明を聞いてみた

 

こんにちはドルフィンシステムの笹生です。

今回はNI Nigel AI アドバイザ関連の記事の続きで NI Nigel に「既存のVIの機能の説明を聞いてみた」という記事です。

使うためのセットアップや準備などは過去の記事を参考にしてください。

過剰なくらい AI サービスの乱立していますが、ツールに特化したチャット型 AI も増えてきているような気がします。MATLAB には少し前から AI Chat Playground​ というブラウザベースの無料サービスがあったようですが、MATLAB Copilot としてツールに統合されたようです。こちらも評価版をお借りできそうなのでいずれ試してみようかなと思います。


Nigel に 既存のVIの機能を説明させる

NI Nigel は「既存のVIの機能を説明する」ことができるようです。

さてどのような事を聞いてみるのが良いか、ChatGPT に聞いてみることにしました。

ChatGPT への質問

NI の LabVIEW 2025 Q3 から AIアドバイザ Nigel がリリースされました。機能として NI Nigel は「既存のVIの機能を説明する」ことが チャット上でできるようです。そこで、LabVIEW 初心者としてどのようなことを聞くのが良いと思いますか? NI Nigel への良い質問を考えてみてください。

ChatGPTからの回答

良い質問の方向性ですね 👍
LabVIEW 2025 Q3 の Nigel は「既存の VI の機能を説明できる」というのが大きな特徴です。
この強みを活かすには、単なる「使い方」を聞くのではなく、設計意図や動作ロジックを深掘りする質問が効果的です。

以下に、初心者が Nigel に投げると良い質問例をいくつかカテゴリ別に整理してみました👇


🧭 基本構造の理解を深める質問

  • 「この VI では、どの入力がどの処理に使われているのですか?」

  • 「この VI が完了するタイミング(停止条件)はどこで決まっていますか?」

  • 「この VI の中の While ループは、どのような目的で配置されているのですか?」

  • 「この VI はどんな順序で処理が実行されますか?(データフローの観点で説明してください)」


🧰 VI 内部ブロックの役割を尋ねる質問

  • 「このブロック(関数)は何のために使われていますか?」

  • 「このケースストラクチャはどんな条件で切り替わりますか?」

  • 「このシフトレジスタにはどんなデータが保持されていますか?」

  • 「このサブVIは全体の中でどんな役割を果たしていますか?」


🔄 データの流れ・変化を理解する質問

  • 「この VI 内で、データはどのように流れていますか?」

  • 「どこでデータが生成され、どこで利用されていますか?」

  • 「このワイヤに流れているデータ型は何ですか?」

  • 「この配列(またはクラスタ)の要素はどの処理で更新されていますか?」


🧠 設計意図を理解する質問

  • 「なぜこの VI ではこの構造(例えばイベントストラクチャ)が使われているのですか?」

  • 「この実装で注意すべき落とし穴や典型的なバグはありますか?」

  • 「このサブVIを分離した目的は何だと考えられますか?」

  • 「この VI はどのようなシナリオ(測定・制御など)を想定していますか?」


🧪 実行やデバッグの助けになる質問

  • 「この VI がエラーを出した場合、どこを確認すればよいですか?」

  • 「この VI でボトルネックになりそうな部分はどこですか?」

  • 「この VI は並列実行に対応していますか?」

  • 「この VI をテストする良い方法はありますか?」


📝 ちょっと実践的な聞き方の例

  • 「この VI の目的と入出力の関係を簡単に説明してください」

  • 「この VI が外部機器と通信するタイミングを説明してください」

  • 「この VI のループは何をトリガーに開始・停止しますか?」

  • 「このエラークラスタの取り扱い方を解説してください」


💡 ポイント

  • Nigel は「ブロックや VI の機能と意図を解説」できるので
    👉 「なぜここにこのブロックがあるのか?」
    👉 「このデータはどこから来てどこへ行くのか?」
    といった「理解を深める質問」が非常に効果的です。


ご希望であれば、この質問群を 「初心者がステップごとに聞いて学ぶ質問ロードマップ」(Step1: 構造理解 → Step2: データフロー → Step3: 設計意図 → Step4: 応用)に整理することもできますが、やってみますか?


なるほど、この回答の通りなら結構この機能は使えそうですね。 

かなり柔軟に VI の事を説明してくれそうです。特に私がひかれたのは「設計意図」を理解する質問に関してです。これに答えられたらかなり良いですよね!他の人の VI の概要とその意図が分かるのは非常に助かります。


既存VIの機能説明を受ける方法

該当 VI を開いた状態で 聞く方法とドラッグドロップでの方法があるようです。まずは手順に従ってやってみましょう。

そうしたら LabVIEW サンプルファインダから適当なサンプル VI を選んでみましょう。

私が使ったことがあるサンプル VI のほうが設計意図などが分かりやすいと思うので、無線関連で選んでみます。

RFSA で検索し、MT niRFSA PSK Demod.vi を選びました。


以下フロントパネルです。


早速右上に Nigelで検索の窓がありますが、これは違う機能(検索)のようです。

コンテキストヘルプは Ctrl + H で開く詳細ヘルプのことで、以下のようなヘルプです。


下に Nigelに相談というリンクが確かにありました。 

開いてみます。

今ヘルプに表示されている niRFSA Configure Number of Samples.vi の情報が Nigel に送られた状態でチャットウィンドウが開くようです。



まずは以下のような書き出しで始まります。

Let's talk about niRFSA Configure Number of Samples.vi. Here's some information to get you started...

その後、VI の中のブロックダイアグラムの図が表示されます。

 



 

This VI configures the number of samples for an RF signal acquisition, supporting both finite and continuous modes.(この VI は、有限モードと連続モードの両方をサポートし、RF 信号取得のサンプル数を設定します。)

 制御器や表示器の説明も書いてあって、この VI がどんな動作をするかが出力されています。

How does the VI work?

The VI takes an instrument session reference and configures the acquisition mode for an RF signal analyzer. Here’s how it operates:

1. Error Handling

  • The VI uses a case structure driven by the error in cluster.
  • If an error is present, it bypasses configuration and passes the error through.

2. Configuration Logic

  • If no error exists, the VI:
    • Converts the number of samples is finite Boolean to an integer (0 for continuous, 1 for finite).
    • Passes the samples per record value if finite acquisition is selected.
    • Calls a library function to configure the RFSA device with these parameters.

3. Error Conversion

  • After configuration, the VI converts any IVI error codes to standard LabVIEW error clusters using a dedicated subVI.

4. Output

  • The VI outputs the updated instrument session reference and any error information.

This design ensures robust error handling and flexible configuration for both finite and continuous acquisition modes, making it suitable for a wide range of RF measurement scenarios.


では、さっき chatGPT で聞いた設計意図について質問をしてみましょう。この VIではメインのところは外部の dll を呼び出しているようです。その理由について尋ねてみましょう。

この VI が外部の dll を呼び出しているのはなぜですか?

 

Nigel の回答はこちらです。


この VI(niRFSA Configure Number of Samples.vi)が外部の DLL(ダイナミックリンクライブラリ)を呼び出している理由は、RF 信号アナライザ(RFSA)デバイスの低レベル制御や設定を行うためです。LabVIEW から直接ハードウェアを制御するには、デバイスメーカーが提供するドライバや API(多くの場合 DLL 形式)が必要です

なぜ DLL を使うのかといった理由や注意点も出力されました。
おおお!なかなかですね。

ヘルプが存在しない自分で作成した VI ではどうか


さて上記はヘルプや情報が Nigel にある NI の作成した VI だからかもしれません。ちょっと自分で作成した VI でも同じようなことを聞いてみたいと思います。
まずは作成たことがある VI をドラッグドロップして試してみます。


最初の分析で割と的を得ている感じがします。SCPI コマンドを送信して受信する VIなのですが、ヘルプなどはありません。
では、「この実装で注意すべき落とし穴や典型的なバグはありますか?」を聞いてみましょう。

8項目列挙してくれました。
中央の 100ms ウェイトの意図を聞いてみましょう。


100msウェイトは、計測器がコマンドに応答するまでの「安全な待ち時間」として設けられています。
計測器の仕様や実際の応答速度に合わせて、最適な値に調整することが重要です。


とのことでした!本当に正確かどうかは確かめてませんが、基本的に内容は理解して 暮れているようです。すごいですね!!


まとめ

今回の Nigel の使い方は現状一番使える方法ではないでしょうか。

次回は「LabVIEW環境で特定の設定またはダイアログボックスの検索を支援する」機能を試してみたいと思います。(ちょっと分かりにくい表現ですね、、、)


Nigel™、LabVIEW™ は National Instruments Corporation およびその関連会社の商標または登録商標です。本記事は National Instruments により承認、後援、または提携されたものではありません。



0 件のコメント :

コメントを投稿