【要約】WindowsのPythonからclaude -pを起動すると複数行プロンプトが最初の改行で切れる [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
AIエージェントの評価実験において、Claude Codeを用いた基盤Bのタスク成功率が極端に低い事態が発生した。実験者は、モデルの性能不足を疑ったが、実際には呼び出し側の実装に問題があった。
- ・Windowsで
shutil.which("claude")を使用すると、実体ではなくclaude.CMDが返される。 - ・バッチファイルの引数転送(%*)により、プロンプト内の改行以降が消失する。
- ・例外や警告、非ゼロの終了コードが出力されないため、問題の検知が困難である。
// Approach
プロンプトの欠落を防ぎ、意図した指示を正確にClaude Codeへ渡すために、以下の2つの回避策を検討した。
- ・
claude.exeを直接呼び出す。shutil.whichの結果をそのまま使わず、node_modules内のバイナリパスを直接構築して実行する。 - ・プロンプトの改行を半角スペースに正規化する。これは、実行環境に依存しないクロスプラットフォームな対策として有効である。
// Result
実装を修正した結果、エージェントのタスク成功率が劇的に改善した。
- ・基盤Bの成功率が3/24から21/24へと大幅に向上した。
- ・「指示が空である」という誤った応答を回避し、意図した指示通りの動作を確認できた。
- ・モデルの性能評価を行う前に、プロンプトが物理的に正しく届いているかを検証する重要性が示された。
Senior Engineer Insight
> AIエージェントの評価において、インフラ層の挙動がモデルの評価結果を決定づけるリスクがある。特にWindowsのバッチファイル挙動のような、エラーを吐かない「サイレントな失敗」は致命的だ。自動化パイプラインを構築する際は、プロンプトの全文をログ出力し、モデルに届いている内容を物理的に検証するプロセスを必須とすべきである。実装の不備をモデルの能力不足と誤認することは、開発リソースの浪費に直結する。