🚀

LLM API の運用の手間を軽減するツール LLMAP

2024/12/23に公開

こんにちは。株式会社アイデミーの清水(@meso)です。

アイデミーは、DXリテラシーからAI/機械学習の専門知識までオンラインで学べるラーニングサービス Aidemy を運営しています。

DevAI

アイデミー社内でも開発に AI を使おうという動きは積極的に行っております。GitHub Copilot は以前から全エンジニア分使えるようにしてますし、Cursor や Cline などのエディタ系のツールから、v0 や Replit Agent や Bolt.new などの Web 系のツールまで、幅広く試したり導入したりしています。これらのソフトウェア開発AIやシステム開発AIなどと呼ばれるものを、アイデミー社内ではまとめて DevAI と呼んでいます。

エンジニア向け DevAI の社内利用

Cursor や Cline などの DevAI は、利用する際に LLM の API キーを設定することができます。会社の業務として使ってもらう場合、その API キーは会社が発行したものを設定してもらい、会社がそれに対してお金を払うべきでしょう。

しかしながら、API キーの管理ってめんどくさくないですか?

  1. API キーを全社員共通にする
    → 退職者が出たら払い出し直して全員設定し直しが必要でめんどくさい
  2. API キーを一人ひとり個別に払い出す
    → 管理をする人が大変
  3. 全員が LLM の API キーの管理画面のアクセスできる
    → 事故が怖い

というわけで、社員個別に社内用の API キーを発行し、LLM API へのアクセスをプロキシーして本物の API キーに書き換えるツールを作りました。

すでに◯◯があるけど?

はい、何も調べずに作り出したので、そういうツールはあるとは思います。有名どころだと LiteLLM が近いのかな?ちょっと目的違うところもあるけど。

まあでも、車輪の再発明でもいいので、自分で手を動かしてみるのもいいですよね!

作ったもの

LLM API Proxy を略して LLMAP という名前にしました。

Cloudflare Workers 上で動作する Hono 製のプロキシーと、Cloudflare Pages 上で動作する Remix 製の管理画面からなります。データベースには Cloudflare D1 を使っています。

流れ

  1. Google アカウントでログインしてもらうと、最初のユーザーは管理者になります。管理者は、LLM Provider を登録でき、本物の API キーや Base URL などを登録します。

  1. また、管理者はユーザーの削除やユーザーの社内 API キーを個別に無効化できます。
  2. ユーザーも Google アカウントでログインすることができ、プロバイダーを指定して自分用の社内 API キーを払い出すことができます。また、ユーザーは自分が今月に使用したトークン数を API ごとに確認することもできます。

  1. 社内 API キーと Base URL の情報を元に、Cursor や Cline などの DevAI に LLM API の設定をします。


工夫したところ

あまり詰まることなく開発はできました。というか、コードは9割以上 AI に書き出してもらったものをそのまま使っています。画面は v0 で作り、それ以外はほとんど GitHub Copilot に作ってもらっています。

1点だけ、Cursor の API キーの Verify プロセスで、HTTP OPTIONS メソッドのリクエストがきたりするのが予想外で、うまく認証できないーってのがありましたが、まあ、原因がわかれば対処は簡単でした。

あとは、Cloudflare へのデプロイを誰でも簡単にできるよう、GitHub Actions の Workflow を頑張って書いたところですかね。Workers と Pages の両方を1アクションでエラーなくデプロイすることまではできました。

今後の展望

  1. Google 以外に GitHub, Microsoft, Slack でのログインに対応
  2. OpenAI 以外の動作確認がまだできていない
    • というか、OpenAI 以外 Base URL を変更できる設定になっていない(Cursor, Cline ともに)
    • 一応 Claude は curl からリクエスト飛ばして疎通することは確認している

OSS として公開しているので、気が向いたら更新していきます。

Aidemy Tech Blog

Discussion