はじめに
これは覇権では nikkieです。
世はまさに大LLM時代。
そんな乱世で非常に頼れそうなパッケージを知りました。
目次
- はじめに
- 目次
- 結論:LiteLLMを使ったこのスクリプトを見てくれ!
- LiteLLMはcompletion()だけで様々なモデルからOpenAI互換のレスポンスを得られる!
- LangChainより簡単になっている衝撃
- 私には使う理由がなくなってしまった同種のパッケージ
- 終わりに
- P.S. 知ったきっかけ
結論:LiteLLMを使ったこのスクリプトを見てくれ!
動かすにあたり、2つの環境変数を指定しています。
OPENAI_API_KEYGEMINI_API_KEY(Google 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()関数
- 入力パラメタはOpenAIのChat Completion APIのもの。その上多様なLLMを扱える
- 出力フォーマットは、OpenAI同様
response['choices'][0]['message']['content']にテキスト
GPTとGeminiは序の口。LLMをめちゃめちゃサポートしています!!
以下にあるproviderのLLMが、同じインターフェースで扱える!
LangChainより簡単になっている衝撃
2024年9月のみんなのPython勉強会、池内さんの発表を受けて以下の記事を書きました。
LangChainでインターフェースが揃うことを体験したわけです。
このたびLiteLLMがインターフェースの統一をより簡単に提供していて、衝撃を受けました。
池内さんのスライドでもLiteLLMは言及されていましたね。
これまでの経験から、私にとってLangChain(Pythonパッケージ)はメリット:デメリット 50:50 くらいだった1のですが、LiteLLMを見てLangChainを積極的に使う理由が私の中からは消えました。
これまでありがとうございました
ソースコードからの学びの1つは、LiteLLMってcompletion()呼び出しだけでいいのか!!ということhttps://t.co/GgN1Nocajj
— nikkie(にっきー) / にっP (@ftnext) 2025年2月11日
めちゃめちゃ簡単じゃないですか!!
しかも任意のLLMサポートできるという!!
これは覇権では。LiteLLMしか勝たんまである
LangChainって存在理由あるんでしょうか?(小声
私には使う理由がなくなってしまった同種のパッケージ
短い付き合いでした。これまでありがとうございました!
ell-ai
テック業界のインフルエンサー的な人(複数)が、一時期LangChainをdisってell-aiを持ち上げていたように記憶しています。
デコレータで実現するのはうまいなと思ったのですが、
LiteLLMのcompletion()関数がすごく簡単 & 手広くproviderをサポートしているので、初手はそれでいいように今の私は思います。
aisuite
Announcing new open-source Python package: aisuite!
— Andrew Ng (@AndrewYNg) 2024年11月25日
This makes it easy for developers to use large language models from multiple providers. When building applications I found it a hassle to integrate with multiple providers. Aisuite lets you pick a "provider:model" just by… pic.twitter.com/XPQ6aclacn
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)
え!? たったこれだけでいいの!?
これが今回の記事の始まりです
- LangChainをバージョンアップしたら、動くのですがふるまいが再現しないなど ↩
-
LiteLLMは
acompletionありますね!触ってみたい https://docs.litellm.ai/docs/completion/stream#async-completion↩