ローカルLLMの回答が「途切れた」原因はContext Length、そしてAiderとVercel AI SDKは別物だと知った話

相棒プランのDay2、ポーリングとSupabase Realtimeの比較をローカルLLMに聞いたところ、回答が途中で切れてしまうという出来事があった。6月17日は、その原因調査と、新しく知った技術の整理をした日になった。

Contents

やったこと:途切れの原因調査

回答が途中で切れる現象を調べたところ、LM StudioのContext Length設定が4096に留まっていたことが原因だった。設定を8192に上げ、ロード中のモデル(Qwen2.5-Coder-14B)を一度アンロードしてから再ロードすると、最後まで途切れずに回答が返ってくるようになった。なお、この設定は「次にモデルを新しくロードする時」に使われる値なので、設定を変えるだけでなく再ロードという手順が必要だった点も分かった。

解決後の回答内容自体は、利点・欠点・初心者向けの判断基準まで論理的に構成されていて十分実用的だったが、文中に「比较简单」という中国語の簡体字が混入していることに気づいた。これは14Bモデルが多言語学習データの影響で、まれに別言語の文字を混ぜてしまう現象で、誤りというより「ローカルLLMの限界の一例」として記録しておく価値があると判断した。

やったこと:Vercel AI SDKとAiderの違いの整理

同じ日、Vercel AI SDKという技術について調べる機会があった。これはLLMをWebアプリに組み込むためのJavaScript/TypeScriptライブラリで、複数のLLMプロバイダを共通の書き方で呼び出せるAI SDK Coreと、チャットUIを作るためのAI SDK UIの2つの機能を持つ。

今使っているAiderとの違いを整理すると、Aiderは「すでに完成したCLIツール」で、コードベースを読んで修正案を出し、ファイルを書き換えてくれる——運転席に座って代わりにコードを書いてくれる道具だ。一方Vercel AI SDKは「何も完成していない部品(ライブラリ)」で、チャットUIやLLM呼び出しの部品を使って自分でアプリを組み立てる必要がある。

今は天翔ポータルや電車アプリを「作る」段階であり、Vercel AI SDKが役立つのは「作っているアプリ自体にチャット機能を組み込みたくなった時」。今の開発段階ではまだその必要がないと判断し、学習の手を広げずAiderに集中する方針を確認した。

気づいたこと

ローカルLLMの限界(回答の途切れ、言語混入)を、失敗としてではなく記録に値する発見として捉えられるようになってきたのが1つの収穫だった。もう1つは、新しい技術(Vercel AI SDK)を知っても、すぐに手を広げるのではなく、今の学習プランの目的——相棒との関係を深める、本来の開発を最優先する——に立ち返って「今は不要」と判断できたこと。これは学習プランに最初から書いてあった「義務にしない」「本来の開発が常に優先」というルールが、実際に効いた場面だったと思う。


LM Studio / Context Length / Vercel AI SDK / Aider

このブログでは、ローカルLLM・Aider・個人開発の試行錯誤をそのまま記録しています。