理系学生日記

おまえはいつまで学生気分なのか

GitHub Copilot Chatで都度モデルを変更できるようになった変更をChat Extensionに取り込む

GitHub Copilot Chatにおいて、言語モデルが切り替えられるようになりました。これができるようになったのはいつかを振り返ると September 2024 (version 1.94)でした。そんな前か。

とはいえ、僕も含めて多くの人は、この機能を実際に利用し始めたのは最近のことだと思います。こちらのリリースで、o1 (Preview)やClaude 3.5 Sonnet (Preview)といったモデルが利用できるようになリマした。

Chat Extensionに取り込む

VS CodeのChat APIを利用したExtensionを"Chat Extension"と呼ぶのですが、今回のVS Code変更に伴い、Chat Extensionでもそれら言語モデルを利用できるようになりました。

A chat extension is a VS Code extension that uses the Chat extension API by contributing a Chat participant.

Chat extensions | Visual Studio Code Extension API

実際にこの変更をChat Extensionに取り込むにはどうすれば良いのか。

VS Codeの具体的な変更

これまで、VS Codeで言語モデルを設定するためには、selectChatModels(selector?: LanguageModelChatSelector): Thenable<LanguageModelChat[]>を利用する必要がありました。

このAPIは今でも同様なのですが、VS Codeの1.95でChatRequestmodelというプロパティが追加されました。

ChatRequestはユーザがCopilot Chatにテキストを入力する都度、VS Code側のハンドラに渡されるリクエストを表現しています。つまり、逐一VS Code Extension側でモデルを切り替える必要はなく、ユーザが選択したモデルがリクエストに載ってやってくるというわけです。

対応方法

なので基本的には、これまでselectChatModelsで取得した言語モデルを使っていたところ、このChatRequestに含まれるmodelを利用するようにすれば良いです。単純ですね。