AIパーソナル・ラーニング
と実践的なガイダンス
ビーンバッグ・マースコード1

Ollama API ユーザーガイド

簡単

オーラマ 開発者が大規模な言語モデルと簡単にやりとりできるように、強力なREST APIが提供されている。Ollama APIを通じて、ユーザは自然言語処理、テキスト生成などのタスクに適用されたモデルによって生成されたリクエストを送信し、レスポンスを受け取ることができる。本稿では、補語生成や対話生成の基本操作について詳しく説明し、モデルの作成、モデルのコピー、モデルの削除といった一般的な操作についても解説する。

 

ふりだし

回答完了 ¦対話完了 ¦モデル作成 ¦モデルコピー ¦モデル削除 ¦実行モデル一覧 ¦ローカルモデル一覧 ¦モデル情報表示 ¦モデルPull ¦モデルPush ¦埋込み生成


 

I. 回答完了

POST /api/generate

指定されたモデルを使用して、指定されたプロンプトに対する応答を生成します。これはストリーミングエンドポイントなので、一連のレスポンスがあります。最終的なレスポンスオブジェクトには、リクエストからの統計情報やその他のデータが含まれます。

パラメトリック

  • modelモデル名
  • promptレスポンスを生み出すヒント
  • suffixモデル回答後のテキスト
  • images(オプション) base64 エンコードされた画像のリスト (以下のようなマルチモーダルモデルの場合) llava )

高度なパラメータ(オプション):

  • formatレスポンスのフォーマットを返します。現在利用可能な値は json
  • optionsその他のモデル・パラメーターは以下の通りである。 temperatureそしてseed 他
  • systemシステムメッセージ
  • template使用するプロンプトテンプレート
  • context前評判より /generate リクエストで返されるコンテキスト・パラメータは、以下のような短いダイアログ・メモリーを保持するために使用できる。
  • streamに設定されている場合 false レスポンスは、オブジェクトのストリームではなく、単一のレスポンスオブジェクトとして返される。
  • rawに設定されている場合 true の場合、プロンプトの書式設定は行われない。APIリクエスト時に完全なテンプレート・プロンプトを指定する場合、オプションで raw パラメトリック
  • keep_aliveリクエスト後にモデルがメモリに残っている時間をコントロールする(デフォルト:5m)

リクエスト例(ストリーミング)

curl http://localhost:11434/api/generate -d '{
"model": "llama3.1",
"prompt": "为什么草是绿的?"
}'

チップ

を使用する場合 curl コマンドをダウンロードしてください。 Windows用カール環境変数を追加するには、ファイルを解凍し、ファイルがあるディレクトリでbinサブファイルを見つけ、環境変数を追加するファイルのアドレスをコピーする。

コマンドラインウィンドウ(PowerShellではない)で以下のコマンドを使用し、正常に追加されたかどうかを確認する。

curl --help

追加に成功すると、次のように表示される。

Ollama API ユーザーズガイド-1

チップ

Windowsのコマンドラインウィンドウで curl コマンドを要求する際は、エスケープされた二重引用符の使用に注意すること。コマンドの例を以下に示す。

curl http://localhost:11434/api/generate -d "{\"model\": \"llama3.1\", \"prompt\": \"为什么草是绿的\"}"

以下の表示は、リクエストが成功したことを示す。

Ollama API ユーザーズガイド-2

回答例

JSONオブジェクトのストリームを返します:

{
"model":"llama3.1",
"created_at":"2024-08-08T02:54:08.184732629Z",
"response":"植物",
"done":false
}

ストリームの最終レスポンスには、世代に関する追加データも含まれる:

  • context:このレスポンスに使用されたダイアログコード。ダイアログをメモリに保持するために、次のリクエストで送信することができる。
  • total_duration: レスポンスの生成にかかった時間 (ナノ秒単位)
  • load_duration: モデルのロードにかかる時間 (ナノ秒単位)
  • prompt_eval_count: プロンプト内のトークン数
  • prompt_eval_duration: プロンプトの評価にかかる時間 (ナノ秒)
  • eval_count: レスポンス内のトークン数
  • eval_duration: 応答の生成にかかる時間 (ナノ秒)
  • response: レスポンスがストリーミングの場合はnull、ストリーミングでない場合は完全なレスポンスが含まれる レスポンス生成率(1秒間に生成されるトークン数、tokens/s)を計算するには、以下のようになる。eval_count / eval_duration * 10^9.

最終的な回答

{
"model":"llama3.1",
"created_at":"2024-08-08T02:54:10.819603411Z",
"response":"",
"done":true,
"done_reason":"stop",
"context":[1,2,3],
"total_duration":8655401792,
"load_duration":5924129727,
"prompt_eval_count":17,
"prompt_eval_duration":29196000,
"eval_count":118,
"eval_duration":2656329000
}

高度なプレー

ノン・ストリーミング出力

そうしれいかん stream に設定する。 falseすべての回答を一度に受け取ることができます。

リクエスト例

curl http://localhost:11434/api/generate -d '{
"model": "llama3.1",
"prompt": "为什么草是绿的?",
"stream": false
}'

回答例

{
"model":"llama3.1",
"created_at":"2024-08-08T07:13:34.418567351Z",
"response":"答案:叶子含有大量的叶绿素。",
"done":true,
"done_reason":"stop",
"context":[1,2,3],
"total_duration":2902435095,
"load_duration":2605831520,
"prompt_eval_count":17,
"prompt_eval_duration":29322000,
"eval_count":13,
"eval_duration":266499000
}

JSONモード

(落とす format に設定する。 json 出力はJSON形式となる。ただし prompt モデルはJSONフォーマットで応答するように指示される。そうしないと、モデルは大量のスペースを生成する可能性がある。

リクエスト例

curl http://localhost:11434/api/generate -d '{
"model": "llama3.1",
"prompt": "为什么草是绿的?以JSON格式输出答案",
"format": "json",
"stream": false
}'

回答例

{
"model":"llama3.1",
"created_at":"2024-08-08T07:21:24.950883454Z",
"response":"{\n  \"颜色原因\": \"叶子中含有光合作用所需的叶绿素\",\n  \"作用\": \"进行光合作用吸收太阳能\"\n}",
"done":true,
"done_reason":"stop",
"context":[1,2,3],
"total_duration":3492279981,
"load_duration":2610591203,
"prompt_eval_count":22,
"prompt_eval_duration":28804000,
"eval_count":40,
"eval_duration":851206000
}

response の値は、以下のようなJSONを含む文字列になる:

{
"颜色原因": "叶子中含有光合作用所需的叶绿素",
"作用": "进行光合作用吸收太阳能"
}

入力には画像が含まれる

マルチモーダルモデルに新しいモデルを追加するには(例えば llava もしかしたら bakllava画像を投稿するには、Base64でエンコードされた images リスト

リクエスト例

curl http://localhost:11434/api/generate -d '{
"model": "llava",
"prompt":"描述这张图片",
"stream": false,
"images": ["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"
]
}'

回答例

{
"model":"llava",
"created_at":"2024-08-08T07:33:55.481713465Z",
"response":" The image shows a cartoon of an animated character that resembles a cute pig with large eyes and a smiling face. It appears to be in motion, indicated by the lines extending from its arms and tail, giving it a dynamic feel as if it is waving or dancing. The style of the image is playful and simplistic, typical of line art or stickers. The character's design has been stylized with exaggerated features such as large ears and a smiling expression, which adds to its charm. ",
"done":true,
"done_reason":"stop",
"context":[1,2,3],
"total_duration":2960501550,
"load_duration":4566012,
"prompt_eval_count":1,
"prompt_eval_duration":758437000,
"eval_count":108,
"eval_duration":2148818000
}

再現性のある出力

そうしれいかん seed 再現性のある出力を得るために固定値に設定する:

リクエスト例

curl http://localhost:11434/api/generate -d '{
"model": "llama3.1",
"prompt": "为什么草是绿的?",
"stream": false,
"options": {
"seed": 1001
}
}'

回答例

{
"model":"llama3.1",
"created_at":"2024-08-08T07:42:28.397780058Z",
"response":"答案:因为叶子中含有大量的氯离子。",
"done":true,
"done_reason":"stop",
"context":[1,2,3],
"total_duration":404791556,
"load_duration":18317351,
"prompt_eval_count":17,
"prompt_eval_duration":22453000,
"eval_count":16,
"eval_duration":321267000}

 

II.対話の完成

POST /api/chat

指定されたモデルを使用して、チャットの次のメッセージを生成します。これはストリーミングエンドポイントでもあるので、一連のレスポンスがあります。もし "stream" に設定する。 falseの場合、ストリーミングを無効にすることができる。最終的なレスポンスオブジェクトには、要求された統計情報と追加データが含まれる。

パラメトリック

  • modelモデル名
  • messages: チャットメッセージ。
  • toolsこのモデルはツールの使用をサポートしている。そのためには stream に設定する。 false

message このオブジェクトには以下のフィールドがある:

  • roleメッセージの役割。 systemそしてuserそしてassistant もしかしたら tool
  • contentメッセージの内容
  • images(オプション): メッセージに含める画像のリスト。 llava (このようなマルチモーダルモデル)
  • tool_calls(オプション):モデルが使用したいツールのリスト

高度なパラメータ(オプション):

  • formatレスポンスのフォーマットを返します。現在利用可能な値は json
  • optionsなどの他のモデル・パラメーター temperatureそしてseed 他
  • streamもし falseレスポンスは、オブジェクトのストリームではなく、単一のレスポンスオブジェクトとして返される。
  • keep_alive: リクエスト後にモデルがメモリにロードされたままになる時間を制御する(デフォルト:5m)

リクエスト例(ストリーミング)

curl http://localhost:11434/api/chat -d '{
"model": "llama3.1",
"messages": [
{
"role": "user",
"content": "为什么草是绿的?"
}
]
}'

回答例

JSONオブジェクトのストリームを返します:

{
"model":"llama3.1",
"created_at":"2024-08-08T03:54:36.933701041Z",
"message":{
"role":"assistant",
"content":"因为"
},
"done":false
}

最終的な回答

{
"model":"llama3.1",
"created_at":"2024-08-08T03:54:37.187621765Z",
"message":{
"role":"assistant",
"content":""
},
"done_reason":"stop",
"done":true,
"total_duration":5730533217,
"load_duration":5370535786,
"prompt_eval_count":17,
"prompt_eval_duration":29621000,
"eval_count":13,
"eval_duration":273810000
}

高度なプレー

ノン・ストリーミング出力、JSONモード、マルチモーダル入力、再現可能な出力、および 回答API 一貫性の

歴史とともに

対話履歴付きチャットメッセージを送信。同じ方法で複数の対話または思考連鎖プロンプトを開始できます。

リクエスト例

curl http://localhost:11434/api/chat -d '{
"model": "llama3.1",
"messages": [
{
"role": "user",
"content": "为什么草是绿色的?"
},
{
"role": "assistant",
"content": "因为草里面含有叶绿素。"
},
{
"role": "user",
"content": "为什么叶绿素让草看起来是绿色的?"
}
],
"stream": false
}'

回答例

{
"model":"llama3.1",
"created_at":"2024-08-08T07:53:28.849517802Z",
"message":{
"role":"assistant",
"content":"这是一个更复杂的问题!\n\n叶绿素是一种称为黄素的色素,这些色素可以吸收光能。在日光下,绿色草叶中的叶绿素会吸收蓝光和红光,但反射出黄色和绿色的光,所以我们看到草看起来是绿色的。\n\n简单来说,叶绿素让草看起来是绿色的,因为它反射了我们的眼睛可以看到的绿光,而不反射我们看到的其他颜色。"
},
"done_reason":"stop",
"done":true,
"total_duration":5065572138,
"load_duration":2613559070,
"prompt_eval_count":48,
"prompt_eval_duration":37825000,
"eval_count":106,
"eval_duration":2266694000}

III.モデルの作成

POST /api/create

一般推奨 modelfile をセットするのではなく、モデルファイルの内容をセットする。 pathリモートモデルの作成。リモートモデルの作成は、すべてのファイルブロブ、フィールド(たとえば FROM 歌で応える ADAPTERを参照)、その値をレスポンスで示されたパスに設定する。

パラメトリック

  • name作成するモデルの名前
  • modelfile(オプション): モデルファイルの内容
  • stream(オプション): もし falseレスポンスは、オブジェクトのストリームではなく、単一のレスポンスオブジェクトとして返される。
  • path(オプション): モデルファイルへのパス。

リクエスト例

curl http://localhost:11434/api/create -d '{
"name": "mario",
"modelfile": "FROM llama3\nSYSTEM You are mario from Super Mario Bros."
}'

回答例

JSONオブジェクトの文字列。最後のJSONオブジェクトは "status": "success"作成に成功しました。

{"status":"reading model metadata"}
{"status":"creating system layer"}
{"status":"using already created layer sha256:22f7f8ef5f4c791c1b03d7eb414399294764d7cc82c7e94aa81a1feb80a983a2"}
{"status":"using already created layer sha256:8c17c2ebb0ea011be9981cc3922db8ca8fa61e828c5d3f44cb6ae342bf80460b"}
{"status":"using already created layer sha256:7c23fb36d80141c4ab8cdbb61ee4790102ebd2bf7aeff414453177d4f2110e5d"}
{"status":"using already created layer sha256:2e0493f67d0c8c9c68a8aeacdf6a38a2151cb3c4c1d42accf296e19810527988"}
{"status":"using already created layer sha256:2759286baa875dc22de5394b4a925701b1896a7e3f8e53275c36f75a877a82c9"}
{"status":"writing layer sha256:df30045fe90f0d750db82a058109cecd6d4de9c90a3d75b19c09e5f64580bb42"}
{"status":"writing layer sha256:f18a68eb09bf925bb1b669490407c1b1251c5db98dc4d3d81f3088498ea55690"}
{"status":"writing manifest"}
{"status":"success"}

Blobが存在するかチェックする

HEAD /api/blobs/:digest

FROM または ADAPTER フィールドのファイル blob がサーバーに存在することを確認してください。これはOllama.aiではなく、あなたのOllamaサーバーをチェックしています。

お問い合わせパラメーター

  • digestブロブのSHA256ダイジェスト

リクエスト例

curl -I http://localhost:11434/api/blobs/sha256:29fdb92e57cf0827ded04ae6461b5931d01fa595843f55d36f5b275a52087dd2

回答例

blobが存在する場合は "200 OK"、存在しない場合は "404 Not Found "を返す。

ブロブの作成

POST /api/blobs/:digest

サーバー上のファイルからブロブを作成します。

お問い合わせパラメーター

  • digest期待されるSHA256文書の要約

リクエスト例

curl -T model.bin -X POST http://localhost:11434/api/blobs/sha256:29fdb92e57cf0827ded04ae6461b5931d01fa595843f55d36f5b275a52087dd2

回答例

blobが正常に作成された場合は201 Createdを、使用されたダイジェストが期待通りでなかった場合は400 Bad Requestを返す。

 

IV.複製モデル

POST /api/copy

モデルを複製し、別の名前を使って既存のモデルを複製する。

リクエスト例

curl http://localhost:11434/api/copy -d '{
"source": "llama3.1",
"destination": "llama3-backup"
}'

回答例

成功した場合は "200 OK "を、ソースモデルが存在しない場合は "404 Not Found "を返します。

 

V. モデルの削除

DELETE /api/delete

モデルとそのデータを削除する。

パラメトリック

  • name削除するモデル名

リクエスト例

[](https://github.com/datawhalechina/handy-ollama/blob/main/docs/C4/1.OllamaAPI.md#-4)

curl -X DELETE http://localhost:11434/api/delete -d '{
"name": "llama3.1"
}'

回答例

削除に成功した場合は "200 OK "を、削除対象のモデルが存在しない場合は "404 Not Found "を返します。

 

VI. 運用モデルのリスト

GET /api/ps

現在メモリにロードされているモデルを一覧表示します。

リクエスト例

curl http://localhost:11434/api/ps

回答例

{
"models":[
{
"name":"llama3.1:latest",
"model":"llama3.1:latest",
"size":6654289920,
"digest":"75382d0899dfaaa6ce331cf680b72bd6812c7f05e5158c5f2f43c6383e21d734",
"details":{
"parent_model":"",
"format":"gguf",
"family":"llama",
"families":["llama"],
"parameter_size":"8.0B",
"quantization_level":"Q4_0"
},
"expires_at":"2024-08-08T14:06:52.883023476+08:00",
"size_vram":6654289920
}
]
}

 

VII.ローカルモデルのリスト

GET /api/tags

現地で入手可能なモデルをリストアップ。

リクエスト例

curl http://localhost:11434/api/tags

回答例

{
"models":[
{
"name":"llama3.1:latest",
"model":"llama3.1:latest",
"modified_at":"2024-08-07T17:54:22.533937636+08:00",
"size":4661230977,
"digest":"75382d0899dfaaa6ce331cf680b72bd6812c7f05e5158c5f2f43c6383e21d734",
"details":{
"parent_model":"",
"format":"gguf",
"family":"llama",
"families":["llama"],
"parameter_size":"8.0B",
"quantization_level":"Q4_0"
}
}
]
}

 

モデル情報の表示

POST /api/show

詳細、モデルファイル、テンプレート、パラメータ、ライセンス、システムヒントを含むモデルに関する情報を表示します。

パラメトリック

  • name表示するモデル名
  • verbose(オプション) trueその後、詳細レスポンス・フィールドの全データを返す

リクエスト例

curl http://localhost:11434/api/show -d '{
"name": "llama3.1"
}'

回答例

{
"license":"...",
"modelfile":"...",
"parameters":"...",
"template":"...",
"details":{
"parent_model":"",
"format":"gguf",
"family":"llama",
"families":["llama"],
"parameter_size":"8.0B",
"quantization_level":"Q4_0"
},
"model_info":{
"general.architecture":"llama",
"general.basename":"Meta-Llama-3.1",
"general.file_type":2,
"general.finetune":"Instruct",
"general.languages":["en","de","fr","it","pt","hi","es","th"],
"general.license":"llama3.1",
"general.parameter_count":8030261312,
"general.quantization_version":2,
"general.size_label":"8B",
"general.tags":["facebook","meta","pytorch","llama","llama-3","text-generation"],
"general.type":"model",
"llama.attention.head_count":32,
"llama.attention.head_count_kv":8,
"llama.attention.layer_norm_rms_epsilon":0.00001,
"llama.block_count":32,
"llama.context_length":131072,
"llama.embedding_length":4096,
"llama.feed_forward_length":14336,
"llama.rope.dimension_count":128,
"llama.rope.freq_base":500000,
"llama.vocab_size":128256,
"tokenizer.ggml.bos_token_id":128000,
"tokenizer.ggml.eos_token_id":128009,
"tokenizer.ggml.merges":null,
"tokenizer.ggml.model":"gpt2",
"tokenizer.ggml.pre":"llama-bpe",
"tokenizer.ggml.token_type":null,
"tokenizer.ggml.tokens":null
},
"modified_at":"2024-08-07T17:54:22.533937636+08:00"
}

 

プルモデル

POST /api/pull

をとおして ollama ライブラリー・ダウンロード・モデル。中断されたプル操作はブレークポイントからダウンロードを継続し、複数の呼び出しが同じダウンロード進捗を共有する。

パラメトリック

  • name引っ張るモデル名
  • insecure(オプション):ライブラリへの安全でない接続を許可する。このオプションは、開発中に独自のライブラリから取得する場合にのみ使用することをお勧めします。
  • stream(オプション): もし falseレスポンスは、オブジェクトのストリームではなく、単一のレスポンスオブジェクトとして返される。

リクエスト例

curl http://localhost:11434/api/pull -d '{
"name": "llama3.1"
}'

回答例

万が一 stream 指定なし、または trueそして、JSONオブジェクトの文字列が返される:

最初のオブジェクトはリストである:

{
"status": "pulling manifest"
}

その後、一連のダウンロード応答がある。ダウンロードが完了するまでは、以下のものが含まれていない可能性がある。 completed キーを押します。ダウンロードされるファイルの数は、リストで指定されたレイヤーの数に依存します。

{
"status": "downloading digestname",
"digest": "digestname",
"total": 2142590208,
"completed": 241970
}

すべてのファイルがダウンロードされた後の最終的な応答は次のようになる:

{
"status": "verifying sha256 digest"
}
{
"status": "writing manifest"
}
{
"status": "removing any unused layers"
}
{
"status": "success"
}

万が一 stream をfalseに設定すると、レスポンスは単一のJSONオブジェクトになる:

{
"status": "success"
}

 

X. プッシュモデル

POST /api/push

モデルをモデルリポジトリにアップロードします。最初にollama.aiを登録し、公開鍵を追加する必要があります。

パラメトリック

  • nameプッシュされるモデルの名前。 <namespace>/<model>:<tag>
  • insecure(オプション): ライブラリへの安全でない接続を許可する。このオプションは、開発中に独自のライブラリにプッシュする場合にのみ使用してください。
  • stream(オプション): もし falseレスポンスは、オブジェクトのストリームではなく、単一のレスポンスオブジェクトとして返される。

リクエスト例

curl http://localhost:11434/api/push -d '{
"name": "mattw/pygmalion:latest"
}'

回答例

万が一 stream 指定なし、または trueそして、JSONオブジェクトの文字列が返される:

{ "status": "retrieving manifest" }

その後、アップロードの反応が続いた:

{
"status": "starting upload",
"digest": "sha256:bc07c81de745696fdf5afca05e065818a8149fb0c77266fb584d9b2cba3711ab",
"total": 1928429856
}

最後に、アップロードが完了したら

{"status":"pushing manifest"}
{"status":"success"}

万が一 stream に設定する。 falseレスポンスが単一のJSONオブジェクトの場合、レスポンスは単一のJSONオブジェクトである:

{ "status": "success" }

 

XI.エンベッドの生成

POST /api/embed

モデルから埋め込みを生成する

パラメトリック

  • model埋め込みを生成するモデルの名前。
  • input埋め込みテキストまたはテキストのリストを生成するには

高度なパラメータ:

  • truncate: コンテキストの長さに合わせて各入力の最後を切り捨てる。の場合は問題ない。 false でコンテキストの長さを超えるとエラーが返されます。デフォルト値は true
  • optionsなどの他のモデル・パラメーター temperatureそしてseed 他
  • keep_alive: リクエスト後にモデルがメモリにロードされたままになる時間を制御する(デフォルト:5m)

リクエスト例

curl http://localhost:11434/api/embed -d '{
"model": "llama3.1",
"input": "为什么草是绿的?"
}'

回答例

{
"model":"llama3.1",
"embeddings":[[
-0.008059342,-0.013182715,0.019781841,0.012018124,-0.024847334,
-0.0031902494,-0.02714767,0.015282277,0.060032737,...
]],
"total_duration":3041671009,
"load_duration":2864335471,
"prompt_eval_count":7}

リクエスト例(複数入力)

curl http://localhost:11434/api/embed -d '{
"model": "llama3.1",
"input": ["为什么草是绿的?","为什么天是蓝的?"]
}'

回答例

{
"model":"llama3.1",
"embeddings":[[
-0.008471201,-0.013031566,0.019300476,0.011618419,-0.025197424,
-0.0024164673,-0.02669075,0.015766116,0.059984162,...
],[
-0.012765694,-0.012822924,0.015915949,0.006415892,-0.02327763,
0.004859615,-0.017922137,0.019488193,0.05638235,...
]],
"total_duration":195481419,
"load_duration":1318886,
"prompt_eval_count":14
}

 

エラー処理

エラーが発生した場合、Ollama API は適切なエラーコードとメッセージを返します。よくあるエラーは以下の通りです:

  • 400 Bad Request: リクエスト・フォーマット・エラー。
  • 404 Not Found: 要求されたリソースは存在しません。
  • 500 Internal Server Error: 内部サーバーエラー。
無断転載を禁じます:チーフAIシェアリングサークル " Ollama API ユーザーガイド
ja日本語