AI 同じ429なのに、正しい対処が真逆になる。4社のレート制限を1枚のレイヤーで受けた話 HTTP 429はレート制限。ところがOpenAI・Claude・Gemini・OpenRouterの4社では、同じ429でも正しい対処が真逆になります。Claudeの402、Geminiの分と日の二重枯れ、OpenRouterの上流混雑。1枚のレイヤーで受けた実装の記録です。 2026.08.11 AI
AI error.messageは4社で揃っていた。なのに「何が起きたか」だけが揃わなかった OpenAI・Claude・Gemini・OpenRouterを1つのプラグインで叩くと、エラー本文の取り出しは4社同じなのに、種別フィールドがtype・status・codeへ四分五裂します。共通パーサーが書けず最深部がstriposに落ちた、実装の"その後"の記録です。 2026.07.24 AI
AI AI の返答を画面に出すとき、エスケープだけでは守れなかった話|DOM を直接組んで安全に表示する AI チャットボットで、LLM の出力をエスケープしたのに画面表示ですり抜けた経験を残します。AI の出力はユーザー入力と同じ外部入力です。innerHTML の二度パースという落とし穴と、DOM を直接組んで安全に描画する WordPress での直し方をまとめます。 2026.06.13 AI
AI ユーザーの API キーをどこに預かるか問題|WordPress プラグインで AES-256-GCM を使った話 自作 WordPress プラグインで、ユーザーの API キーを平文で持たず AES-256-GCM で暗号化保存した実装記録です。鍵は wp-config の salts から派生させて DB の外に置き、AAD でサイトに束縛。IV と認証タグのレイアウト、復号の段階フォールバック、salts 変更時の再入力動線まで、実コードで残します。 2026.06.11 AI
AI AI チャットボットを4社対応にした話|OpenAI・Claude・Gemini・OpenRouter の差を1枚の層で吸収した設計 自作 WordPress プラグインの AI チャットボットを OpenAI・Claude・Gemini・OpenRouter の4社対応にした設計記録です。認証・system の置き場所・レスポンス形・エラーを1枚の層に畳み、GPT-5 が temperature を弾く 400 を予防スキップと自動リトライで吸収した実装まで残します。 2026.06.10 AI
WordPress WP AI Clientへ移行したら、エラーも出さずに会話の履歴が消えた WordPress 7.0のWP AI Clientへプラグインを移行した実装記録です。with_history()に生配列を渡すと例外も出さず会話履歴だけが消える挙動、キーを持たないプロバイダが踏み抜いた前提、temperatureの400対応を、RC3と安定版で確認したコード付きで書いています。 2026.05.28 WordPress
Web Development WordPress 7.0 の WP AI Client を実装目線で読み解いた話 – Connectors UI、wp_ai_client_prompt() API、Rapls AI Chatbot での対応方針 WordPress 7.0 で導入される WP AI Client API を、自作 AI プラグイン開発者の視点で実装目線で読み解きました。Connectors UI の挙動、wp_ai_client_prompt() の使い方、Rapls AI Chatbot での対応方針まで実機検証ベースでまとめます。 2026.05.15 Web Development