ローカルのOpen WebUI APIをコマンドラインから使う方法
いつもご利用ありがとうございます。
この記事には広告が掲載されており、その広告費によって運営しています。
Open WebUI は、Web ブラウザからの利用だけでなく、コマンドラインから API を使って直接やり取りすることも可能です。この記事では、実際に Docker で起動した Open WebUI の API を使って、ターミナルから質問を投げて回答を得る方法を詳しく解説します。
前提条件
- Docker を使って環境構築が完了し、ローカルの URL にアクセスすると表示ができる
localhost:3000を使用ollamaでモデルを PULL している
Open WebUI の起動確認
docker ps実行結果の例:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
67426e250958 ghcr.io/open-webui/open-webui:main "bash start.sh" 2 hours ago Up 2 hours (healthy) 0.0.0.0:3000->8080/tcp open-webui自分は、http://localhost:3000にアクセスすると接続ができる状態で、エンドポイントのベース URL がこれになります。
API トークンの取得方法
- 右上のアイコン
- 設定
- アカウント
- API キー、表示
- JWT トークンをコピー
この JWT トークンを使います。
利用可能なモデルの確認方法
API を使う前に、どのようなモデルが利用可能かを確認しましょう。
GUI で確認する場合
チャット画面を開いて、チャットの左上にモデルが表示されており、そこをクリックするとモデル選択ができるので、そこで一覧を見ることができます。
コマンドで確認する場合
curl -H "Authorization: Bearer YOUR_TOKEN" http://localhost:3000/api/modelsYOUT_TOKENの部分に、先ほどコピーした JWT トークンを貼り付けてください。ローカルホストの URL が違う場合、任意のポートに変更してください。
API を使った基本的な質問
ここまでで事前準備は完了です。
実際に API を使って質問してみましょう。
基本的なリクエスト
curl -X POST http://localhost:3000/api/chat/completions \
-H "Content-Type: application/json" \
-H "Cookie: token=YOUR_JWT_TOKEN" \
-d '{
"model": "your_model_name",
"messages": [
{
"role": "user",
"content": "こんにちは"
}
]
}'YOUR_JWT_TOKENには、JWT トークンをペーストしてください。
your_model_nameには、あなたが使いたいモデルを指定してください。
ナレッジベースで作成した、カスタムモデルも使用可能です。
適当に作った「テスト」という名前のモデル名でも動きました。
レスポンスの例
{
"choices": [
{
"message": {
"role": "assistant",
"content": "こんにちは!何かお手伝 いできることはありますか?"
}
}
]
}ダメだった例
ドキュメントには以下のようにやれば動きそうな感じがしたのですが、
curl -X POST http://localhost:3000/api/chat/completions -H "Authorization: Bearer my-jwt-token" -H "Content-Type: application/json" -d '{"model": "テスト", "messages": [{"role": "user", "content": "こんにちは"}]}'{"detail":"401 Unauthorized"}うまくいきませんでした。なんでやねん。
上手くいかなかったのは仕方ないので、ブラウザで Network タブを調べた結果、Cookie を利用して POST してそうな感じだったので、Cookie ベースでトークンを送信したらうまくいったという流れです。
僕だけでしょうか。誰かの参考になれば幸い です。





