【要約】[Agents on 16GB] ローカルモデルにお願いするのをやめた。ツールを隠した [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者がローカルLLM(4B〜8B)を用いたエージェント構築において、モデルが指示を無視する問題に直面した。指示を増やしても挙動が改善せず、むしろ悪化する現象が確認された。
- ・否定的な指示(〜するな)が効かず、肯定的なタスクが弱まる。
- ・モデルがテンプレートを模倣し、手順を飛ばしてツールを呼ぶ。
- ・ペルソナの役割を誤認し、不適切な口調で応答する。
- ・システムプロンプトが長くなるほど、指示の遵守率が低下する。
// Approach
開発者は、プロンプトによる「説得」を諦め、システム構造による制御を試みた。当初はツールの動的制御を検討したが、最終的にコンテキスト管理の不備を特定した。
- ・会話の状態に応じてツールを隠す「動的バインド」の検討。
- ・
num_ctxを明示的に設定し、コンテキストの切り捨てを防止。 - ・プロンプトのトークン量を実測し、テンプレートを大幅に圧縮。
- ・Ollamaのテンプレート構造(System Promptが先に配置される点)の把握。
// Result
コンテキスト管理の適正化により、動的バインドなしでもモデルが指示に従うことを確認した。プロンプトの「説得」ではなく、指示の「到達性」が制御の鍵であることを実証した。
- ・
num_ctxの適切な設定により、指示の欠落が解消された。 - ・動的バインドを行わずとも、モデルが役割を正しく認識した。
- ・プロンプトの圧縮により、モデルへの情報伝達効率が向上した。
Senior Engineer Insight
> プロンプトエンジニアリングは「交渉」であり、決定的な制御には至らない。エージェント開発では、指示が確実に届くよう、ランタイムのコンテキスト窓やテンプレート構造を設計に組み込むべきだ。指示が無視される際、プロンプトの書き直しに固執せず、まずインフラ層の「到達性」を疑うのがプロの視点である。