nikkie-ftnextの日記

イベントレポートや読書メモを発信

LiteLLMを使って、同じプロンプトを複数のLLMのWeb APIに送る(GPTとGeminiを例に)

はじめに

これは覇権では nikkieです。

世はまさに大LLM時代。
そんな乱世で非常に頼れそうなパッケージを知りました。

目次

結論:LiteLLMを使ったこのスクリプトを見てくれ!

動かすにあたり、2つの環境変数を指定しています。

  • OPENAI_API_KEY
  • GEMINI_API_KEYGoogle AI Studioで取得)
% uv run -q --python 3.12 script.py
model='openai/gpt-4o-mini'
Hello, fellow producers! It's Nikkun in Schemer Mode!

model='gemini/gemini-2.0-flash'
Hello fellow producers, Mirri-ho! This is NikP in "Schemer Mode"!

動作環境

  • uv 0.5.17
  • Python 3.12.5
  • litellm 1.61.0

LiteLLMはcompletion()だけで様々なモデルからOpenAI互換のレスポンスを得られる!

Call 100+ LLMs using the OpenAI Input/Output Format

completion()関数

GPTとGeminiは序の口。LLMをめちゃめちゃサポートしています!!

以下にあるproviderのLLMが、同じインターフェースで扱える!

LangChainより簡単になっている衝撃

2024年9月のみんなのPython勉強会、池内さんの発表を受けて以下の記事を書きました。

LangChainでインターフェースが揃うことを体験したわけです。

このたびLiteLLMがインターフェースの統一をより簡単に提供していて、衝撃を受けました。
池内さんのスライドでもLiteLLMは言及されていましたね。

これまでの経験から、私にとってLangChain(Pythonパッケージ)はメリット:デメリット 50:50 くらいだった1のですが、LiteLLMを見てLangChainを積極的に使う理由が私の中からは消えました。
これまでありがとうございました

私には使う理由がなくなってしまった同種のパッケージ

短い付き合いでした。これまでありがとうございました!

ell-ai

テック業界のインフルエンサー的な人(複数)が、一時期LangChainをdisってell-aiを持ち上げていたように記憶しています。
デコレータで実現するのはうまいなと思ったのですが、

LiteLLMのcompletion()関数がすごく簡単 & 手広くproviderをサポートしているので、初手はそれでいいように今の私は思います。

aisuite

Ngセンセのアイデアですが、LiteLLMのほうが巧く実現しているように思われます。
論文で言ったら先行研究の調査が不十分だった印象。
リリース直後覗いたところasync/awaitサポートに伸びしろがあり、それは現在も未解決みたいです2

終わりに

おめでとう! nikkieは使い勝手のよい新たな装備を手に入れた!
これからよろしくね、LiteLLM

P.S. 知ったきっかけ

litellm.completion()に気づいたきっかけは、smolagentsのソースを覗いていてです。
素振りの中でLiteLLMModelを渡してCodeAgentを作りました。

LiteLLMModelの実装で
https://github.com/huggingface/smolagents/blob/v1.8.0/src/smolagents/models.py#L703

response = litellm.completion(**completion_kwargs)

え!? たったこれだけでいいの!?
これが今回の記事の始まりです


  1. LangChainをバージョンアップしたら、動くのですがふるまいが再現しないなど
  2. LiteLLMはacompletionありますね!触ってみたい https://docs.litellm.ai/docs/completion/stream#async-completion