大規模言語モデル(LLM)はアプリケーションの構築方法を変革していますが、クラウドベースのAPIのみに依存することは常に理想的ではありません。レイテンシ、コスト、データプライバシー、オフライン機能の必要性は、開発者がローカルでモデルを実行する方向に進むことがよくあります。Ollamaは、Llama 3、Mistral、Phi-3などの強力なオープンソースLLMを簡単にマシン(macOS、Linux、Windows)上で実行できる素晴らしいツールとして登場しました。
しかし、ローカルまたはリモートのさまざまなLLMとの相互作用には、しばしばモデル固有のコードを書く必要があります。ここでLiteLLMが登場します。LiteLLMは、Ollama、OpenAI、Anthropic、Cohereなど、100以上の異なるLLM APIと相互作用するための標準化された軽量インターフェースを提供します。LiteLLMを使用することで、コーディングを一度行い、最小限の変更で異なるモデルやプロバイダー、ローカルで実行しているOllamaモデル間をシームレスに切り替えることができます。
このチュートリアルでは、LiteLLMをセットアップしてローカルマシン上でOllamaモデルと相互作用する方法に関する詳細なステップバイステップガイドを提供します。インストールや基本的な設定から、API呼び出し、ストリーミングレスポンス、LiteLLMのより高度な機能の活用まで、すべてをカバーします。
最大の生産性で開発チームが一緒に作業できる統合されたオールインワンプラットフォームが必要ですか?
Apidogはすべての要求を満たし、Postmanをはるかに手頃な価格で置き換えます!
イントロダクション:LiteLLMとOllamaの理由
技術的な手順に入る前に、私たちが使っているツールとその組み合わせがなぜ強力であるかを理解しましょう。
LiteLLMとは何ですか?
LiteLLMは、広範なLLM APIと相互作用するために統一されたインターフェースとして機能する軽量のPythonライブラリです。OpenAI、Anthropic、Cohere、Google Gemini、Azure OpenAI、Replicate、Hugging FaceなどのさまざまなSDKやAPIリクエスト形式を学習や実装する代わりに、1つの一貫した関数呼び出し(litellm.completion()
)を使用します。LiteLLMは、リクエストをターゲットのモデルプロバイダーが要求する特定の形式に変換するという基礎的な複雑さを処理します。
LiteLLMの主な特徴:
- 統一インターフェース:100以上のLLMプロバイダーにわたって一貫したAPI呼び出し(
litellm.completion
、litellm.embedding
)。 - プロバイダー依存のない設計:単一のモデル文字列を変更するだけで、モデル間(例:
gpt-4o
からollama/llama3
へ)を簡単に切り替えられます。 - 堅牢性:タイムアウト、リトライ、およびフォールバックの組み込みサポート。
- 可観測性:Langfuse、Helicone、PromptLayerなどのプラットフォームに対するログの統合、コールバック、およびサポート。
- プロキシサーバー:集中管理のためのスタンドアロンプロキシサーバーを提供し、APIキー管理、負荷分散、ルーティング、および異なるアプリケーションやサービス間の一貫したアクセスを実現します。
- コスト追跡:さまざまなLLM APIにわたる支出を監視します。
なぜLiteLLMをOllamaとともに使用するのか?
OllamaとLiteLLMを組み合わせることで得られる利点はいくつかあります:
- 標準化:LiteLLMの標準インターフェースを使用してアプリケーションロジックを書くことで、ローカルOllamaモデル(開発、プライバシー、オフライン使用のため)と強力なクラウドモデル(本番、特定の機能用)間を再コーディングなしでシームレスに切り替えることができます。
- ローカル統合の簡素化:LiteLLMはOllamaのAPIとの相互作用をPythonアプリケーション内で簡単にし、リクエストフォーマットとレスポンスパーシングを処理します。
- 柔軟性:LiteLLMの呼び出しでモデル名を変更するだけで、Ollamaを通じて利用可能なさまざまなローカルモデルを簡単に実験できます(例:
ollama/llama3
対ollama/mistral
)。 - LiteLLMの機能を活用:ローカルOllamaモデルを使用する際でも、リトライ、フォールバック、ロギング、コスト追跡など、LiteLLMの機能を活用できます。
- ハイブリッドアプローチ:コスト、レイテンシ、タスク要件などの要因に基づいて、ローカルOllamaモデルとリモートAPIにリクエストを知的にルーティングできるアプリケーションを構築し、すべてLiteLLMによって管理されます(特にそのプロキシを介して)。
LiteLLMとOllamaを使用する準備
始める前に、必要なツールがインストールされていることを確認してください。
LiteLLMはPythonライブラリであるため、システムにPythonがインストールされている必要があります。LiteLLMはPython 3.8以上が必要です。
- インストールの確認:ターミナルまたはコマンドプロンプトを開き、次を実行します:
python --version
# または
python3 --version
- インストール:Pythonがインストールされていない場合や新しいバージョンが必要な場合は、公式のPythonウェブサイト(python.org)からダウンロードするか、Homebrew(macOS)、apt(Debian/Ubuntu)、Chocolatey(Windows)などのパッケージマネージャを使用してください。
- Pip:Pythonパッケージインストーラーである
pip
があることを確認してください。通常、Pythonと一緒にバンドルされます。pip --version
またはpip3 --version
で確認できます。
Ollamaのインストールとセットアップ
LiteLLMのPythonコードを実行する予定のマシンで、Ollamaがインストールされて実行されている必要があります(異なるマシン上で実行する場合はネットワーク越しにアクセス可能でなければなりません)。
- ダウンロードとインストール:Ollamaのウェブサイト(ollama.com)にアクセスして、オペレーティングシステム(macOS、Linux、Windows)用のインストーラーをダウンロードします。インストールの手順に従ってください。
- インストールの確認:インストール後、新しいターミナルウィンドウを開き、次を実行します:
ollama --version
これにより、インストールされたOllamaのバージョンが表示されるはずです。
Ollamaモデルのプル
Ollamaはリクエストを処理するために少なくとも1つのモデルがダウンロードされている必要があります。人気のあるモデルであるLlama 3(8Bインストラクトバリアント)をプルしましょう。
- プルコマンド:ターミナルで、次を実行します:
ollama pull llama3
これにより、Llama 3モデルファイルがダウンロードされます。インターネット接続とモデルのサイズによっては、少し時間がかかる場合があります。llama3
をOllamaライブラリで利用可能な他のモデル(例:mistral
、phi3
、gemma:2b
)で置き換えても良いです。完全なリストはOllamaのウェブサイトで確認できます。
LiteLLMのインストール
PythonとOllamaが準備完了の状態で、pipを使用してLiteLLMをインストールします。
- インストールコマンド:ターミナルまたはコマンドプロンプトを開き、次を実行します:
pip install litellm
# pip3を使用している場合は
# pip3 install litellm
- 検証(オプション):PythonインタプリタでLiteLLMをインポートすることでインストールを確認できます:
python # または python3
>>> import litellm
>>> litellm.__version__
# これにより、エラーなしでインストールされたバージョンが表示されるはずです。
>>> exit()
ローカルでOllamaを実行する
LiteLLMはOllama APIサーバーに接続する必要があります。Ollamaが実行されていることを確認する必要があります。
Ollamaが実行中であることの確認
- macOS/Windowsデスクトップアプリ:デスクトップアプリケーションをインストールした場合、Ollamaは通常、インストール後に自動的にバックグラウンドで実行されます。メニューバー(macOS)またはシステムトレイ(Windows)にOllamaのアイコンが表示されるはずです。
- Linux / 手動スタート:Linuxでは、または手動で制御したい場合は、Ollamaサーバーを明示的に起動する必要があります。ターミナルを開いて次を実行します:
ollama serve
このコマンドはサーバーを起動し、そのターミナルウィンドウで停止するまで通常は実行され続けます(Ctrl+C)。長期使用のためにこのコマンドをバックグラウンドで実行するか、システムサービスとして実行することをお勧めします。
- 状態の確認:次のサンプルコードを使用してサーバーが応答しているかどうかを確認できます:
curl http://localhost:11434
これにより、Ollama is running
という応答が得られるはずです。「接続が拒否されました」というエラーが発生した場合、Ollamaが実行されていないか、別のポート/アドレスで構成されている可能性があります。
デフォルトでは、Ollamaは次のURLでAPIを公開しています:
- URL:
http://localhost:11434
LiteLLMはこのデフォルトのアドレスを事前に構成しています。Ollamaインスタンスが異なるホストまたはポート(例:ポートマッピングがあるDockerコンテナ内、またはリモートサーバー上)で実行されている場合は、LiteLLMにそれを見つけるように指示する必要があります(設定セクションで説明します)。ほとんどの標準的なローカル設定では、デフォルトで問題ありません。
Ollamaへの初めてのLiteLLM呼び出しを行う
次に、Ollama経由で実行されているllama3
モデルにリクエストを送信するシンプルなPythonスクリプトを書いてみましょう。LiteLLMを使用します。
基本的なPythonスクリプト
新しいPythonファイル(例:ollama_test.py
)を作成し、次のコードを追加します:
import litellm
import os
# 省略:LiteLLMの詳細を見るための冗長ロギングを設定する
# litellm.set_verbose = True
# モデル名を定義 重要:prefixに "ollama/" を付ける
# 'llama3' が `ollama pull llama3` で取得したモデルであることを確認してください
model_name = "ollama/llama3"
# チャット補完のメッセージを定義
messages = [
{"role": "system", "content": "あなたは役に立つアシスタントです。"},
{"role": "user", "content": "なぜ空は青いのですか?"}
]
try:
print(f"--- {model_name}にリクエストを送信中 ---")
# litellm.completion関数を呼び出す
response = litellm.completion(
model=model_name,
messages=messages
)
# 応答を印刷
print("--- 応答 ---")
# 応答オブジェクトはOpenAIの構造を模倣しています
# メッセージコンテンツにはこのようにアクセスします:
message_content = response.choices[0].message.content
print(message_content)
# 調査用に応答オブジェクト全体を印刷することもできます
# print("\n--- 完全な応答オブジェクト ---")
# print(response)
except Exception as e:
print(f"エラーが発生しました: {e}")
この関数を分解してみましょう:
litellm.completion()
:これはLiteLLMのコア関数で、テキスト補完(チャットスタイルの補完を含む)を生成します。model
:このパラメータは、使用するモデル/プロバイダーを指定します。重要なのは、Ollamaモデルの場合、モデル名(Ollamaが知っている名前)の先頭にollama/
を付ける必要があるということです。したがって、llama3
はollama/llama3
になり、mistral
はollama/mistral
になります。このようにして、LiteLLMにリクエストをOllama互換のエンドポイントにルーティングさせます。messages
:これは、標準的なOpenAIのチャット補完フォーマットに従います。辞書のリストであり、それぞれにrole
(system
、user
、またはassistant
)とcontent
があります。- 戻り値:
response
オブジェクトは、litellm.completion
によって返され、OpenAI APIの応答オブジェクトの構造を模倣しています。この一貫性はLiteLLMの重要な利点の1つです。生成されたテキストには通常、response.choices[0].message.content
を介してアクセスします。
これらのポイントを念頭に置いて、関数を実行してみましょう:
Ollamaが実行中であることを確認し(ステップ4で確認)、llama3
モデルが取得されていることを確認してください。次に、ターミナルからスクリプトを実行します:
python ollama_test.py
出力は次のようになるはずです(正確なテキストはモデルの応答に基づいて異なる場合があります):
--- {model_name}にリクエストを送信中 ---
--- 応答 ---
空が青く見えるのは、レイリー散乱と呼ばれる現象によるものです。地球の大気に到達する太陽光は、さまざまな色の光から構成されており、それぞれ異なる波長を持っています。青色および紫色の光は短い波長を持ち、赤色およびオレンジ色の光は長い波長を持っています。
太陽光が大気を通過する際、微小なガス分子(主に窒素と酸素)と衝突します。これらの分子は太陽光を全方向に散乱します。短い波長(青色および紫色)は、長い波長(赤色およびオレンジ色)よりも効果的に散乱されます。
私たちの目は紫よりも青に敏感であり、紫色の光は大気中で高い位置で吸収されるため、昼間、太陽が高い位置にあるとき、空を主に青色として認識します。
日の出と日没の近くでは、太陽光が私たちの目に到達するまでに大気をより多く通過します。ほとんどの青色光が散乱され、より長い波長の赤やオレンジ色の光が私たちに到達するため、日の出や日没が赤くまたはオレンジ色に見えることがよくあります。
おめでとうございます!LiteLLMを使ってローカルOllamaモデルと通信することに成功しました。
ストリーミング応答を作成する
インタラクティブなアプリケーション(チャットボットなど)や長い応答を生成する場合、全体の補完を待つのはユーザーエクスペリエンスを損なう可能性があります。ストリーミングを使用すれば、応答が生成されるときにトークン単位で受け取ることができます。LiteLLMでは、これが簡単に実行できます。
なぜストリーミング?
- 知覚的パフォーマンスの向上:ユーザーはすぐに出力を確認できるため、アプリケーションがより応答性が高く感じられます。
- 長い応答への対応:全体を待つことなく応答の一部を処理し、非常に長いテキスト生成に役立ちます。
- リアルタイムの対話:リアルタイムの会話インターフェースを構築することができます。
LiteLLMでのストリーミングの実装
前のスクリプト(ollama_test.py
)を修正してストリーミングを有効にします:
import litellm
import os
# litellm.set_verbose = True # デバッグ用のオプション
model_name = "ollama/llama3"
messages = [
{"role": "system", "content": "あなたは簡潔な詩人です。"},
{"role": "user", "content": "猫について短い俳句を書いてください。"}
]
try:
print(f"--- {model_name}にストリーミングリクエストを送信中 ---")
# stream=Trueを設定
response_stream = litellm.completion(
model=model_name,
messages=messages,
stream=True # ストリーミングを有効にする
)
print("--- ストリーミング応答 ---")
full_response = ""
# ストリームチャンクを反復
for chunk in response_stream:
# 各チャンクはOpenAIストリーミングチャンク構造を模倣しています
# 新しいコンテンツのデルタに次のようにアクセスします:
content_delta = chunk.choices[0].delta.content
if content_delta: # このチャンクに新しいコンテンツがあるか確認
print(content_delta, end="", flush=True) # 改行なしですぐに表示
full_response += content_delta
print("\n--- ストリームの終了 ---")
# print(f"\nフル再構築された応答:\n{full_response}") # オプション:最後にフル応答を表示
except Exception as e:
print(f"\nエラーが発生しました: {e}")
変更点:
stream=True
:このパラメータをlitellm.completion
呼び出しに追加しました。- 反復:関数は現在イテレーター
response_stream
を返します。このイテレーターをループします。 - チャンク処理:ループ内の各
chunk
は、応答の一部を表します。新しいテキストフラグメントにはchunk.choices[0].delta.content
を使用します。delta
属性には前のチャンクとの差分が含まれています(通常は数文字または単語)。 print(..., end="", flush=True)
:チャンクコンテンツを改行なしですぐに印刷し、出力バッファをフラッシュして、すぐにターミナルに表示されるようにします。
この更新されたスクリプトを実行します:
python ollama_test.py
俳句が単語単位または文字単位でターミナルに表示され、ストリーミング動作を示します。
LiteLLM + Ollamaセットアップの構成
LiteLLMは、デフォルトのOllama設定で箱から出してすぐに機能しますが、標準のhttp://localhost:11434
から外れる場合は構成する必要があるかもしれません。
デフォルトの動作(ローカルホスト)
前述のように、LiteLLMはollama/
接頭語を使用すると、自動的にOllamaがhttp://localhost:11434
で実行されていると想定します。これがあなたのセットアップであれば、追加の構成は必要ありません。
環境変数の使用(オプション)
Ollamaが異なるホストまたはポートで実行されている場合、環境変数を使用してLiteLLMにどこで見つけるかを指示できます。LiteLLMは特定の環境変数をチェックしてAPIエンドポイントを構成します。特定のOllamaモデル(または一般的なオーバーライドを希望する場合はすべてのOllamaモデル)の基本URLを設定できます。
たとえば、Ollamaインスタンスがhttp://192.168.1.100:11434
で実行されている場合、Pythonスクリプトを実行する前に環境変数を設定できます:
Linux/macOS:
export OLLAMA_API_BASE="http://192.168.1.100:11434"
python your_script.py
Windows(コマンドプロンプト):
set OLLAMA_API_BASE=http://192.168.1.100:11434
python your_script.py
Windows(PowerShell):
$env:OLLAMA_API_BASE = "http://192.168.1.100:11434"
python your_script.py
これで、スクリプトがlitellm.completion(model="ollama/llama3", ...)
と呼び出すと、LiteLLMはOLLAMA_API_BASE
環境変数を探し、そのURLを使用します。
注意:OLLAMA_API_BASE
を設定すると、すべてのモデルに対してollama/
で始まるベースURLが上書きされます。必要であれば、特定のモデルエイリアスのベースURLを設定するためのより詳細な環境変数制御については、LiteLLMドキュメントを参照してください。
設定ファイルの使用(オプション)
複数のモデル、カスタム設定、または環境変数を回避するためのより複雑な構成の場合、LiteLLMは設定ファイル(config.yaml
または指定したパス)をサポートしています。
スクリプトと同じディレクトリにconfig.yaml
ファイルを作成するか、他の場所に作成してLiteLLMにポイントします:
# config.yaml
model_list:
- model_name: ollama/llama3 # litellm.completionで使用する名前
litellm_params:
model: ollama/llama3 # プロバイダーに対する実際のモデル識別子
api_base: "http://localhost:11434" # デフォルト、必要に応じて変更
- model_name: ollama/mistral-remote # 例:リモートOllamaのためのエイリアス
litellm_params:
model: ollama/mistral # Ollamaは「mistral」を想定しています
api_base: "http://192.168.1.100:11434"
- model_name: gpt-4o-mini # 例:非Ollamaモデルを含む
litellm_params:
model: gpt-4o-mini
api_key: "os.environ/OPENAI_API_KEY" # 環境変数から安全に読み取ります
general_settings:
# オプション:タイムアウトなどのグローバル設定を設定
# timeout: 300 # 5分
# 設定内でカスタム環境変数を定義することもできます
environment_variables:
OPENAI_API_KEY: "" # プレースホルダーまたは実際のキーを定義します(安全性は低い)
この設定ファイルを使用するには、通常はアプリケーションの開始時にLiteLLMに読み込むように指示します:
import litellm
import os
# 現在のディレクトリにあるconfig.yamlから設定を読み込む
# 絶対パスを提供することもできます:litellm.load_config("path/to/your/config.yaml")
try:
litellm.load_config()
print("LiteLLM設定が正常に読み込まれました。")
except Exception as e:
print(f"警告: LiteLLM設定を読み込めませんでした。デフォルトを使用しています。エラー: {e}")
# これで、設定で定義されたモデル名を使用できます
try:
# 標準的なollama/llama3を使用する。これは設定からapi_baseを取得するかもしれません
response_local = litellm.completion(model="ollama/llama3", messages=[{"role": "user", "content": "ローカルテスト"}])
print("ローカルLlama3の応答:", response_local.choices[0].message.content[:50], "...") # スニペットを表示
# リモートmistralモデルのために定義されたエイリアスを使用
# response_remote = litellm.completion(model="ollama/mistral-remote", messages=[{"role": "user", "content": "リモートテスト"}])
# print("リモートMistral応答:", response_remote.choices[0].message.content[:50], "...")
except Exception as e:
print(f"補完中にエラーが発生しました: {e}")
設定ファイルは、異なるマシン上で実行されているOllamaインスタンスなど、複数のモデルの設定を管理するための構造化された方法を提供します。
基本的な呼び出しやストリーミングを超えて、LiteLLMはOllamaとシームレスに動作する堅牢性と可観測性を高める機能を提供します。
モデルエイリアス
設定ファイルでエイリアスを定義することも可能ですが、プログラム的に登録することもできます。これはモデル名を簡素化したり、汎用名を特定のOllamaモデルにマッピングするのに役立ちます。
import litellm
# エイリアスを定義:'my-local-llm'を'ollama/llama3'にマップ
litellm.register_model({
"my-local-llm": {
"model": "ollama/llama3",
# 必要に応じてこのエイリアス用のapi_baseをここに指定することもできます
# "api_base": "http://localhost:11434"
}
})
# これで、completion呼び出しでエイリアスを使用できます
messages = [{"role": "user", "content": "モデルエイリアスについて教えてください。"}]
response = litellm.completion(model="my-local-llm", messages=messages)
print(response.choices[0].message.content)
エラー処理とリトライ
ネットワークの発作やOllamaの一時的な問題が発生することがあります。LiteLLMには組み込みのリトライロジックがあります。
import litellm
import time
# 例:Ollamaを一時的に利用不可能にする(例:'ollama serve'を停止)
print("Ollamaを10秒間停止します(可能であれば)... 手動でこれを行う必要がある場合があります。")
# os.system("ollama stop") # このコマンドは存在しないかもしれません。手動での停止が安全です。
# time.sleep(10)
# print("Ollamaを再起動しています... 手動でこれを行う必要がある場合があります。")
# os.system("ollama serve &") # バックグラウンドで開始
# time.sleep(5) # 起動に時間を与えます。
messages = [{"role": "user", "content": "リトライは効きますか?"}]
try:
# LiteLLMは特定の接続エラーに対して自動的にリトライします
# リトライの回数、バックオフファクターなどを構成できます。
response = litellm.completion(
model="ollama/llama3",
messages=messages,
num_retries=3, # 最大3回リトライを試みる
timeout=10 # 各リクエスト試行のタイムアウトを設定(秒)
)
print("リトライ後の成功(または最初の試行):")
print(response.choices[0].message.content)
except Exception as e:
# これは、リトライ後に持続するエラーをキャッチします(例:モデルが見つからない、構成エラー)
# または、接続エラーで全てのリトライが失敗する場合。
print(f"リトライ後にエラーが発生しました: {e}")
LiteLLMは一般的な一時的なネットワークエラーに対して賢くリトライします。呼び出し全体またはグローバルにリトライ動作をカスタマイズできます。
ロギングとコールバック
LiteLLMは、リクエスト/レスポンスデータをロギングしたり、成功した呼び出しやエラー時にカスタム関数(コールバック)をトリガーするためのフックを提供します。これは、監視、デバッグ、コスト追跡に非常に重要です(ただし、コスト追跡はローカルOllamaには関連性が低くなりますが、仮想コストを割り当てる場合を除きます)。
import litellm
import logging
# 基本的なロギングを構成
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(message)s')
logger = logging.getLogger(__name__)
# 成功コールバック関数を定義
def log_success(kwargs, completion_response, start_time, end_time):
"""LLM呼び出しの成功に関する詳細をロギングします。"""
model = kwargs.get("model", "unknown_model")
input_text = kwargs.get("messages", [])[-1]['content'] if kwargs.get("messages") else "N/A"
output_text = completion_response.choices[0].message.content[:50] + "..." # スニペット
duration = (end_time - start_time).total_seconds()
logger.info(f"成功!モデル: {model}, 持続時間: {duration:.2f}s, 入力: '{input_text[:30]}...', 出力: '{output_text}'")
# 失敗コールバック関数を定義
def log_failure(kwargs, exception, start_time, end_time):
"""LLM呼び出しの失敗に関する詳細をロギングします。"""
model = kwargs.get("model", "unknown_model")
duration = (end_time - start_time).total_seconds()
logger.error(f"失敗!モデル: {model}, 持続時間: {duration:.2f}s, エラー: {exception}")
# LiteLLMにコールバックを登録
litellm.success_callback = [log_success]
litellm.failure_callback = [log_failure]
# これで呼び出しを行うと、自動的にコールバックがトリガーされます
messages = [{"role": "user", "content": "LiteLLMのコールバックはどう機能しますか?"}]
try:
response = litellm.completion(model="ollama/llama3", messages=messages)
# print(response.choices[0].message.content) # 返答をそのまま使うこともできます
except Exception as e:
pass # 失敗コールバックがロギングをすでに処理しました
# 失敗する可能性のある呼び出しの例(例:モデルがプルされていない)
# try:
# response_fail = litellm.completion(model="ollama/nonexistent-model", messages=messages)
# except Exception as e:
# pass # 失敗コールバックがログを記録します
このスクリプトを実行すると、コールバック関数によってINFOまたはERRORメッセージが記録され、LLMの相互作用に対する可視性が提供されます。LiteLLMは、Langfuse、Helicone、PromptLayerなどのプラットフォームとも統合されており、より高度な可観測性を実現します。
APIキーの管理
Ollama自体は通常、ローカルアクセスにAPIキーを必要としませんが、LiteLLMを介してクラウドプロバイダ(OpenAI、Anthropicなど)も使用する場合は、それらのキーを管理する必要があります。LiteLLMは、標準の環境変数(例:OPENAI_API_KEY
、ANTHROPIC_API_KEY
)内でキーを探すか、config.yaml
内で指定するか、またはcompletion
呼び出しに直接渡すことができます(セキュリティ上あまり推奨されません)。config.yaml
または環境変数を使用するのが推奨されるアプローチです。
LiteLLMプロキシサーバーの使用方法(堅牢性のために推奨)
Pythonコード内でlitellm
ライブラリを直接使用することは、シンプルなスクリプトや単一のアプリケーションにとっては素晴らしいですが、LiteLLMプロキシは、特にマイクロサービスや複数のアプリケーションがLLM(Ollamaを含む)にアクセスする必要がある場合に、より堅牢でスケーラブルなソリューションを提供します。
LiteLLMプロキシとは何ですか?
LiteLLMプロキシは、別途実行するスタンドアロンのサーバーです。あなたのアプリケーションは、その後、プロキシのエンドポイントに対して標準のOpenAI互換APIリクエストを行います。プロキシは、提供者であるOllamaインスタンスやクラウドプロバイダーのAPIキーなど、モデルの詳細を構成して、リクエストを正しい基盤となるLLMにルーティングし、キーを管理し、レート制限を強制し、ロギング、リトライなどを行います。
Ollamaとのプロキシの設定
プロキシ依存関係のインストール:
pip install 'litellm[proxy]'
プロキシ構成ファイルを作成(proxy_config.yaml
):
このファイルは、プロキシに利用可能なモデルについて教えます。
# proxy_config.yaml