本ドキュメントは、Ollama APIの概要と使用方法を日本語でまとめたものです。
Ollamaは、ローカル環境で大規模言語モデル(LLM)を簡単に実行するためのツールです。様々なオープンソースモデルをダウンロードして実行でき、REST APIを通じてアクセスできます。
- ローカルLLM実行: コマンドラインから簡単にモデルを実行
- REST API: HTTP経由でのモデルアクセス
- モデル管理: モデルのpull、push、リスト表示、削除
- カスタムモデル: Modelfileを使用したカスタムモデルの作成
Ollamaをインストールして実行している必要があります。公式サイト(https://ollama.com/download)からダウンロードできます。
使用するモデルを事前にダウンロードする必要があります。ollama pullコマンドを使用してモデルをダウンロードします。利用可能なモデルはOllama公式サイト(https://ollama.com/search)で確認できます。
Ollamaのchat関数を使用して、チャット形式でモデルと対話します。
チャットリクエストには以下のパラメータを指定します:
- model: 使用するモデル名(必須)
- messages: メッセージのリスト(必須)
- 各メッセージにはroleとcontentを含める
レスポンスオブジェクトから応答内容を取得できます。messageフィールドに応答メッセージが含まれます。
streamパラメータをtrueに設定することで、レスポンスのストリーミングを有効にできます。
ストリーミングを有効にすると、応答がチャンク単位で返されます。各チャンクを処理することで、リアルタイムに応答を表示できます。
ClientまたはAsyncClientをインスタンス化してカスタムクライアントを作成できます。
- host: Ollamaサーバーのホスト(デフォルト:http://localhost:11434)
- headers: カスタムHTTPヘッダー
AsyncClientクラスを使用して非同期リクエストを行うことができます。Clientクラスと同じフィールドで設定できます。
非同期クライアントでストリーミングを有効にすると、Python非同期ジェネレータとして応答が返されます。
- chat: チャット形式でモデルと対話
- generate: プロンプトからテキストを生成
- list: 利用可能なモデルを一覧表示
- show: モデルの詳細情報を表示
- pull: モデルをダウンロード
- push: モデルをアップロード
- copy: モデルをコピー
- delete: モデルを削除
- create: カスタムモデルを作成
- embed: テキストの埋め込みベクトルを生成
- 単一テキストまたはバッチ処理に対応
- ps: 実行中のモデルを表示
リクエストがエラーステータスを返した場合、またはストリーミング中にエラーが検出された場合にエラーが発生します。
ResponseErrorをキャッチしてエラーを処理します。status_codeでエラーの種類を判別できます(例:404はモデルが存在しない)。
本プロジェクトのOllamaClientクラスでは、OllamaのREST APIを使用してLLMとの対話を行います。
config.yamlのllm.ollamaセクションで以下を設定します:
- endpoint: OllamaサーバーのURL(デフォルト:http://localhost:11434)
- model: 使用するモデル
- max_token: 最大トークン数
- Ollamaをインストール
- 使用するモデルをpull(ollama pull llama3.2など)
- Ollamaサービスを起動(ollama serve)
- config.yamlでllm.providerをollamaに設定
参照元: Ollama公式ドキュメント(https://github.com/ollama/ollama/blob/main/docs/api.md)