[STATUS: ONLINE] 当サイトは要約付きのエンジニア向けFeedです。

TechDistill.dev

[DISCLAIMER] 当サイトの要約は正確性を保証しません。気になる記事は必ず原文を確認してください。
cd ..

【要約】DRY原則をAI APIに適用。35行×42エンドポイントを10行に削減した共通ラッパーの設計 [Zenn_Python] | Summary by TechDistill

> Source: Zenn_Python
Execute Primary Source

// Problem

開発者がClaude APIを組み込んだFastAPIアプリを構築する際、コードの重複に直面した。各エンドポイントに、AI呼び出しに関する定型的なロジックが散在していた。


  • 各エンドポイントに35行の定型処理が記述されていた。
  • バリデーション、キャッシュ、AI呼び出し、エラー処理が重複していた。
  • 42のエンドポイントで、計1,470行の冗長なコードが発生していた。
  • コスト管理が個別実装であり、可視化が困難であった。

// Approach

開発者は、定型処理を抽象化した共通関数 _ai_call を設計することで解決を図った。API呼び出しに必要な周辺機能を一つの関数に集約した。


  • 文字数制限やNGワードチェックをラッパー内に実装した。
  • キャッシュ制御や asyncio.wait_for によるタイムアウト処理を統合した。
  • 529エラーに対し、指数バックオフによるリトライを組み込んだ。
  • トークン使用量からコストを算出し、SQLiteへ自動記録する機能を設けた。

// Result

共通ラッパーの導入により、コードの保守性と運用性が劇的に向上した。開発効率の向上と、コストの透明化を同時に達成している。


  • 1エンドポイントあたりの行数を35行から10行へ削減した。
  • 42のエンドポイント全体で、計700行の削減を実現した。
  • ツール別・日別のコストが管理画面で自動集計可能となった。

Senior Engineer Insight

> 実戦的な設計である。特に529エラーへの指数バックオフや、コスト記録の自動化は、運用を見据えた優れた判断だ。ただし、ラッパーが肥大化すると、特定エンドポイント向けの微調整が困難になる。機能追加時は、責務を適切に分離すべきだ。

[ RELATED_KERNELS_DETECTED ]

cd ..

> System.About()

TechDistillは、膨大な技術記事から情報の真髄(Kernel)のみを抽出・提示します。