私のファイナンスアプリFinMan VHWorxは、写真やファイルからユーティリティメーター、燃料の領収書、銀行明細書を読み取ります。すべてはOpenRouterを介してビジョン/テキストLLMで動作し、その多くは無料のモデルで動作します。
無料モデルは素晴らしいですが、1つのことを除いて常に変動します。出現、消失、名前変更、または静かに廃止されます。モデルIDをハードコーディングすると、機能はランダムな火曜日に静かに死にます。
したがって、FinManはモデルを定数として扱うのをやめました。モデルはデータです:
- 毎日のジョブがOpenRouterからライブモデルリストを同期します。新しい無料のビジョンモデルが自動的に追加され、消えたものは無効化されます。
- 有料のフォールバックは毎日価格で再ランク付けされます。Gemini Flashファミリーが無料のティアをバックアップし、最も安価なものから始まります — したがって、フェイルオーバーは請求書に驚かせません。
- 認識が優先リストを歩きます。モデルがエラーを起こしたり、消えたりした場合、次のモデルが引き継ぎます。1つの死んだモデルがユーザーの写真を壊すことはありません。
- アプリが自動的にアップグレードされます。別のジョブがパブリックコミュニティリーダーボードからトップモデルを優先#1としてピン留めします — したがって、テキストタスクは静かに現在の最良のものに移動します。
- 変更が私にTelegramで通知されます。チェックするダッシュボードはありません。
生産で数ヶ月後の結果:私はモデルIDに触れていません。すべての廃止波は私とユーザーによって気づかれずに通過しました。
LLM(特に無料ティア)を構築している場合、これは私が知っている最高のレバレッジの小さな変更です:モデルはデータ、定数ではない。テーブル、毎日のcron、優先リストのウォーク。それが全体のトリックです。