Qt AI Assistant 0.8.8 を試験的にリリースしました

本稿は「Qt AI Assistant 0.8.8 Experimental Released」の抄訳です

クロスプラットフォームソフトウェア開発を支援するQt AI Assistantをリリースしました。Qt AI Assistantは、Qt Creator上で動作し、複数の大規模言語モデル(LLM)と連携するAI搭載の開発アシスタントです。このブログ記事では、その開発の舞台裏を少しご紹介します。

Qt AI Assistantがそうある理由

Qt AI Assistantの構想を練り始めたとき、私たちが最も重要だと考えることに焦点を当てたいと考えました。それは、開発者が創造性を発揮し、素晴らしいコードを書くことです。

開発者との多くの会話の中で、生成AIが役立つであろう3つの領域が繰り返し話題に上りました。それは、専門家のアドバイスを得ること、ユニットテストケースの作成、コードドキュメントの作成です。さらに、コーディングアシスタントは最新のQMLおよびQt Quickの機能の優れた例を示すべきであるという意見もよく耳にします。そこで、私たちはコーディングアシスタントに汎用C++およびPythonプログラミング機能を提供しつつ、コーディングアシスタントの使命として「退屈な」繰り返し作業の自動化と最新のQtテクノロジーの洞察を開発者に提供することに焦点を当てることにしました。ユニットテストケースやコードのドキュメント化などの補助的な作業を自動化することで、開発者がこの職業を選んだそもそもの理由であるプログラミングに、もう少し時間を割けるようにしました。

Qt AI Assistantのソフトウェアアーキテクチャに影響を与えたもう一つのステークホルダーは、Qtで構築された製品のプロダクトマネージャーでした。 製品の競争優位性を保護できることは、彼らにとって非常に重要です。 プロダクトマネージャーは、プロンプトやLLMの出力におけるコードの漏洩を懸念しています。 意図的または偶発的な知的財産の漏洩から会社を守るためには、プライベートクラウドで大規模言語モデルを展開して管理を維持することが不可欠であると考えられました。プライベートにホスティングされた大規模言語モデルに接続するオプションを提供することで、お客様はデータを管理できるようになります。実際、当社のQt AI Assistantは、クラウドおよびローカルのLLMを自己ホスティングできる数少ないコーディングアシスタントの1つです。

AIアシスタントのMVPを実装

Qt AI アシスタントは2つの開発から始めました: まず、微調整なしで優れた QML コードを作成する LLM へのエンドツーエンドのパイプラインを構築しました。次に、GitHub Copilot プラグインが Qt Creator IDE で既に提供している基本的なコード補完機能を実装しました。

エンドツーエンドのパイプラインは、Qt Creator 15の上に構築したQt Creatorプラグイン、Qtソフトウェアスタックの一部であるオープンソースの“Language Server”、AnthropicのClaude 3.5 SonnetへのAPIで構成されています。“Language Server”を“AI Assistant Server”と呼ぶことにしたのは、LLM API、プロンプト・ルーティング、プロンプト・エンジニアリング、コンテキスト・フィルタリング、そして後にマルチエージェント機能を含む、標準的な“Language Server”以上のもので構成されているからです。

CodeCompletionBar-1

とはいえ、コーディング・アシスタントは自動コード・サジェストなしでは完成しません。そこで、自動コード補完が次に開発すべき機能でした。自動コード補完は多くのトークンを素早く消費し、一部の開発者のワークフローを混乱させる可能性があるため、アシスタントの設定を追加することが次の課題でした。当初はシンプルに、ユーザーがすべてのプロジェクトでアシスタントと自動コード補完のオンとオフを切り替えられるようにしました。

AI Seetings General

次は、インライン・プロンプト・ウィンドウの開発です。これには、ユーザビリティ・テストのために、UIデザイン・チームがFigmaで機能モデルを作成する必要がありました。デザインが決まると、専門家のアドバイスのための基本的な自然言語プロンプト・インターフェースの実装を開始し、スマート・コマンド用のドロップダウン・メニューを用意しました。

InlinePromptWindow-1

今後のスマート・コマンドについては、スマート・コマンドのタイプとプログラミング言語に基づいてプロンプトを異なるLLMにルーティングするロジックをAIアシスタント・サーバーに実装し始めました。最終的には、開発者が目的に応じて好きなLLMを選べるようにしたいと考えているので、QMLのコード補完、他のプログラミング言語のコード補完、QMLに関するプロンプト、他の言語に関するプロンプトで異なるLLMを使えるようにしています。

この段階でR&Dチームが成長したため、私たちはプロンプト、つまり専門家のアドバイスのためにLlama 3.1 70Bとの接続を実装し始めました。Llamaの 「群れ 」モデルは、現在、QMLプログラミングの 「ロイヤリティ・フリー 」言語モデルとして最高のパフォーマンスを持っています(QMLコーディング品質のベンチマークについては、別のブログ記事で詳しく書きます)。Llama 3.1モデルの使用は、AnthropicのAPIに認証トークンを入力するよりも複雑です。それでも、私たちのAIエンジニアはMicrosoft Azureクラウドで素早く実行しました。

スマートコマンドの最適化

別のAIエンジニアは、Qt Test構文でユニットテストケースを作成するなど、さまざまなスマートコマンドのプロンプトを最適化しました。これには、LLMの応答をベンチマークするためのQtテストケースのデータセットを設定し、Qt AIアシスタントサーバーからテストケース用のLLMへのパイプラインを開発する必要がありました。プロンプトエンジニアリングは、微調整なしで最高のパフォーマンスを発揮した Claude 3.5 Sonnet に集中しました。OpenAIsのGPT-4oとMetaのLlama 3.3 70Bをこのユースケース用に最適化する必要があります。

QtTestCreation

Qt AI Assistantを試すには

Qt AI Assistantは簡単に試用できます

  • お使いの Qt Creator が Qt AI Assistant を使用できることを確認します - バージョンを確認してください、少なくとも 15.0.1 以降である必要があります(これがないと Qt AI Assistant は動作しません)。
  • Qt Creator の拡張機能の設定で、「Use external repository」 がチェックされていることを確認します。
  • Qt Creator の Extensions ビューで AI Assistant を選択します。

AIAssistantExtensionInstallation

  • Qt AI Assistant エクステンションをインストールし、有効化します。
  • インターネットアクセスとAI Assistant Serverのインストールを許可します。
  • インストール範囲(個別ユーザー/全ユーザー)を選択し、起動時に常にロードを有効にします。
  • 少なくとも1つのLarge Language Modelに接続します。

注意:Qt Development の有効なプレミアムライセンス(Qt for AD Enterprise 以上)が必要です。お持ちでない場合は、 Qt Development の評価ライセンスにサインアップしてください。

Qt AI Assistantの次の展開

Qt AI Assistantは急速に進化しています。

現在Experimentalと表示されている様々なLLMの機能を最適化するために、かなりの量の作業が残されています。GPT-4oのようなLLMのプロンプトを最適化する必要があります。私たちはClaude 3.5 Sonnetのプロンプトの最適化を最も進めており、最高のAIアシスタンス体験のためにSonnetを試してみることを常に勧めています。

大きな疑問のひとつは、内蔵チャットの必要性です。多くの方は、それがあれば素晴らしい機能だとおっしゃるでしょうし、私もそう思います。しかし、UI開発とバックエンド開発(会話の記憶管理)の両面で、大きな開発労力がかかります。DiffViewや現在のファイル以外からのコンテキスト収集など、他の機能とのトレードオフになるでしょう。 汎用的なコンテンツ生成のための素晴らしいチャットソリューションがあり、IDE内で動作するという利便性の要素以外、私たちが追加することはあまりありません。

ご意見をお聞かせください

しかし、何よりも私たちは、何が足りないのか、何をもっと変えるべきなのか、皆さんのフィードバックを聞きたいと思っています。実験的な製品として MVP を発表することで、将来のバックログを設定しながら、皆さんの意見を考慮し、迅速に進化させることができます。Qt AI Assistant に何を求めるか、下記のコメント欄、または Qt のお問い合わせ窓口からお知らせください。

製品について詳しくは?

こちらの製品ページ を確認してください


Blog Topics:

Comments