JA ▾
API キーを取得

GUI付きOllamaの利用方法(ホスト型フォールバック付き)

Ollama自体はターミナルで実行されますが、OpenAI形式をサポートするチャットフロントエンドをその上に設置できます。ここではその設定方法と、同じウィンドウをホストエンドポイントに設定する方法を説明します。

更新

光るケーブルでローカルコンピュータとクラウドサーバーに接続されたチャットウィンドウ

カード不要。サインアップ後、ワンクリックで$0.50の無料トライアルクレジットを取得できます(1人1回限り)。

API キーを取得

主要ポイント

  • Ollamaには標準搭載のチャットウィンドウがありません。Open WebUIなどのフロントエンドを追加します。
  • フロントエンドはOllamaまたは任意のOpenAI互換URLと通信するため、1つのGUIで両方の接続を同時に扱えます。
  • ホスト型接続にはベースURL https://api.ollamansfw.com/v1とモデルID uncensoredを使用します。
  • ストリーミング、ツール呼び出し、JSONモードは、標準的なクライアント設定でホストエンドポイントを通じてすべて動作します。

Ollamaに別個のGUIが必要な理由

GUI付きのollamaの使い方を知りたい場合、最初に理解すべき事実は、Ollamaプロジェクトがサーバーとコマンドラインツールであることです。モデルを取得し、ローカルポートでリクエストに答えます。チャットウィンドウは別の人の担当であり、優れたものがいくつかあります。

この分離は有用です。Ollamaはローカルマシン上でOpenAIスタイルのAPIを公開しており(デフォルトでは /v1 下のポート11434)、カスタムOpenAIベースURLを設定できるフロントエンドはそれを使用できます。同じ性質により、そのフロントエンドを後で別の場所に向けることもできます。この記事ではまずローカルセットアップを説明し、その後ホストエンドポイントを2つ目の接続として追加します。

フロントエンドを選択

3つのツールファミリーが大半のユーザーをカバーします。頻繁に変更されるため、各プロジェクトのドキュメントで現在のインストール手順を確認してください。

  • Open WebUI。セルフホスト型のブラウザインターフェースです。Ollamaを直接サポートし、OpenAI互換接続も受け入れます。通常、Dockerまたはpipでインストールされます。
  • デスクトップクライアント。 ChatboxやMstyなどのネイティブアプリは、設定画面からOllamaサーバーまたはOpenAI互換プロバイダーを追加できます。サーバーを起動する必要はありません。
  • ロールプレイおよびライティング用のフロントエンド。 SillyTavern では OpenAI 互換のエンドポイントを追加でき、長編小説や大人向けコンパニオンキャラクター用の類似ツールも存在します。

Dockerコンテナを望まない場合は、デスクトップクライアントが最短のパスです。1つのネットワーク上の複数ユーザー向けに共有インターフェースを望む場合は、Open WebUIが一般的です。

Open WebUIでの手順

  1. Ollamaをインストールして起動し、ollama pullコマンドでモデルを取得します。さらに進む前に、ターミナルから応答があることを確認してください。
  2. Open WebUIを起動します。Dockerの場合、通常はポートを公開し、データ用にボリュームをマウントします。
  3. ウェブページを開き、最初のローカルアカウントを作成(これが管理者になります)し、管理者設定内の接続エリアを探します。
  4. OllamaのURLがOllamaを実行しているマシンを指しているか確認してください。両方が同じホスト上にある場合、通常はポート11434のローカルアドレスになります。Open WebUIがコンテナ内で実行されている場合、localhostはコンテナ自体を指すため、モデルリストが空のままになる最も一般的な理由となります。
  5. リロードし、ドロップダウンからモデルを選択してメッセージを送信します。

これは完全なローカルGUIです。データはコンピュータから外部に出ず、速度はGPUまたはCPUに依存します。

ホスト型OpenAI互換接続の追加

次にフォールバックについて考えます。ローカルで実行できるモデルが長文のシーンには小さすぎる場合や、GPU がレンダリングで忙しい場合を考えてください。同じ GUI に2つ目の接続を追加できます。これには API キーが必要で、Google またはメールアドレスとパスワードでサインアップした後に、API キーページから取得できます。ワンクリックで利用可能な $0.50 のトライアルクレジットがあり、支払い不要で7日間有効です。

Open WebUIで、以下の値を使用してOpenAI接続を追加してください:

  • ベースURL:https://api.ollamansfw.com/v1
  • APIキー:API キー。Authorization: Bearerとして送信されます。
  • モデル: uncensored

コンテナ起動時に環境変数を好む場合、Open WebUIはこれ用にOPENAI_API_BASE_URLおよびOPENAI_API_KEYを記載しています:

docker run -d -p 3000:8080 \
  -e OPENAI_API_BASE_URL=https://api.ollamansfw.com/v1 \
  -e OPENAI_API_KEY=YOUR_KEY \
  -v open-webui:/app/backend/data \
  --name open-webui ghcr.io/open-webui/open-webui:main
# model to pick in the UI: uncensored

リロード後、uncensoredがローカルモデルの横のモデルドロップダウンに表示されるはずです。フロントエンドはGET /v1/modelsを通じてそれを見つけます。これで同じ会話リスト内でローカルモデルとホスト型モデルを切り替えることができます。

GUI外でエンドポイントをテストする

GUIが曖昧なエラーを表示する場合、問題がキーにあるのかインターフェースにあるのかを判断する最速の方法は直接呼び出しです。以下はcurlを使用したストリーミングリクエストです:

curl -N https://api.ollamansfw.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "stream": true,
    "messages": [{"role": "user", "content": "Write two sentences about a lighthouse keeper."}]
  }'

data:で終わる一連の行の末尾に使用情報が見えるはずです。これが動作すれば、キーとURLは正常であり、問題はフロントエンド側にあることを意味します。トラブルシューティングページでは、/v1の欠落やキーの末尾の空白など、よくあるミスを解説しています。

ローカルモデルに使用するのと同じクライアント設定は、ほとんどが引き継がれます。Temperature、top_p、stopシーケンス、シード、ペナルティはモデルに渡されます。

独自コードからホスト型エンドポイントを使用する

GUIは1つのクライアントです。スクリプトや小さなアプリは別であり、ホストエンドポイントは標準のOpenAI SDKと動作します。関数呼び出しとJSON モードはサポートされており、GUIやエージェントがそれらを使用する場合に重要です。

from openai import OpenAI

client = OpenAI(base_url="https://api.ollamansfw.com/v1", api_key="YOUR_KEY")

resp = client.chat.completions.create(
    model="uncensored",
    response_format={"type": "json_object"},
    messages=[
        {"role": "system", "content": "Reply with a JSON object with keys title and summary."},
        {"role": "user", "content": "A short story about a lighthouse keeper."},
    ],
)
print(resp.choices[0].message.content)

Node.jsでもパターンは同じです:

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.ollamansfw.com/v1",
  apiKey: process.env.API_KEY,
});

const stream = await client.chat.completions.create({
  model: "uncensored",
  stream: true,
  messages: [{ role: "user", content: "Name three sailing knots." }],
});
for await (const part of stream) {
  process.stdout.write(part.choices[0]?.delta?.content ?? "");
}

クイックスタートには、tool_choiceを含むツール呼び出しなどのさらなる例があります。

一般的な問題と修正

GUIセットアップでの失敗の大部分は、限られた数の原因に起因します。

  • ローカル接続のモデルリストが空。フロントエンドがOllamaに到達できません。アドレスを確認し、コンテナ化されたGUIはホストをlocalhostとして認識しないことを覚えておいてください。
  • ホスト型エンドポイントから401。キーが不足しているか誤っています。スペースなしで再貼り付けし、GUIがベアラートークンとして送信していることを確認してください。
  • すべてのリクエストで404。ベースURLに/v1がないか、2回含まれています。
  • 返信が停止するかUIがフリーズする。一部のフロントエンドはプロキシを介してストリーミング出力をバッファリングします。上記の直接curlテストを試行し、ストリーミングが動作する場合は、GUI前のプロキシ設定を確認してください。
  • ローカル返信が遅い。モデルがVRAMに対して大きすぎ、システムメモリにスワップされています。より小さな量子化を選択するか、そのチャットをホスト型接続に切り替えてください。

小説および成人向けコンパニオンアプリには1つのルールを覚えておいてください:ホスト型モデルは法的な成人利用に対してコンテンツ拒否なしで応答しますが、未成年者を含む性的コンテンツは決して許可されず、サービスはそれをハードリミットとして強制します。

GUIで知っておくべき制限とコスト

フロントエンドは同時に複数のリクエストを発行できます。例えば、メインの返信がストリーミングされている間にバックグラウンドでチャットタイトルを生成する場合などです。フルキーは8つの同時リクエストと1分あたり300リクエストを許可します。トライアルキーは2つの同時および1分あたり60を許可します。ストリーミングリクエストはストリームが終了するまでスロットを保持します。制限を超えると、コードrate_limitedまたはconcurrency付きのHTTP 429、一時的な過負荷ではRetry-After: 5付きの429が発生します。トライアルキーではGUIでのバックグラウンドタイトル生成をオフにすると簡単な解決策になります。

コストはトークン単位です:入力 1M 件あたり $0.15、出力 1M 件あたり $0.50 です。履歴 2,000 トークンと 500 トークンの応答を含むチャットターンは、$0.0003 に $0.00025 を加えた $0.00055 かかります。応答ヘッダーには X-Balance-USD が含まれるため、クレジットの残高減少を確認できます。チャージの詳細は価格ページをご覧ください。このサイトは暗号資産のみに対応しており、TRC20 上の USDT または Base 上の USDC で、$20 から $500 の整数金額を受け付けます。

コンテキストウィンドウは100,000トークンなので、履歴が増えるにつれて会話1ターンあたりのコストが増加します。これは、履歴全体が毎回送信されるためです。ほとんどのGUIには、古いメッセージをトリムまたは要約する設定があります。

質問と回答

Ollamaには独自のグラフィカルインターフェースがありますか?

Ollamaは主にサーバーおよびコマンドラインツールです。チャットウィンドウは、Open WebUIや接続先のデスクトップクライアントなど、別のプロジェクトから提供されます。

1つのGUIでローカルモデルとホスト型モデルの両方を使用できますか?

はい、フロントエンドが複数の接続をサポートしている場合です。Ollamaを1つ、OpenAI互換のURLをもう1つ追加し、チャットごとにモデルを選択します。

GUIでホストエンドポイントのモデルが表示されないのはなぜですか?

Base URLが/v1で終わっているか、キーに不要な空白がないか、GUIがGET /v1/modelsを呼び出せるか確認してください。それでも失敗する場合は、モデルIDを手動でuncensoredと入力してください。

HTTP 429エラーが発生した場合はどうすればよいですか?

レート制限または同時実行数の制限に達しました。並列リクエストを減らし、Retry-Afterの秒数待機してから再試行してください。