Last active
May 13, 2025 07:57
-
-
Save aik0aaac/4e476f230e0541b466689a8c52dcc1f7 to your computer and use it in GitHub Desktop.
Ollama APIの内`/api/generate`,`/api/chat`,`/api/tags`,`/api/ps`エンドポイントのリクエストパラメータとレスポンスパラメータをまとめたTypeScript型定義ファイル。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { IOllamaChatMessage } from "./ollamaCommon"; | |
/** | |
* チャット応答を取得するAPIのPOSTリクエスト。 | |
* Docs: https://github.com/ollama/ollama/blob/main/docs/api.md#generate-a-chat-completion | |
*/ | |
export interface IOllamaChatRequest { | |
/** | |
* モデル名。 | |
*/ | |
model: string; | |
/** | |
* プロンプト。 | |
*/ | |
messages: IOllamaChatMessage; | |
/** | |
* サポートされている場合、モデルが使用するツールのJSONリスト。 | |
* 例: | |
* ```json | |
* [{ | |
* "type": "function", | |
* "function": { | |
* "name": "get_current_weather", | |
* "description": "Get the current weather for a location", | |
* "parameters": { | |
* "type": "object", | |
* "properties": { | |
* "location": { | |
* "type": "string", | |
* "description": "The location to get the weather for, e.g. San Francisco, CA" | |
* }, | |
* "format": { | |
* "type": "string", | |
* "description": "The format to return the weather in, e.g. 'celsius' or 'fahrenheit'", | |
* "enum": ["celsius", "fahrenheit"] | |
* } | |
* }, | |
* "required": ["location", "format"] | |
* } | |
* } | |
* }] | |
* ``` | |
*/ | |
tools?: any[]; | |
/** | |
* 返却時のフォーマットを指定可能。 | |
* 以下の様な形の指定もできる: | |
* ```json | |
* { | |
* "type": "object", | |
* "properties": { | |
* "age": { | |
* "type": "integer" | |
* }, | |
* "available": { | |
* "type": "boolean" | |
* } | |
* }, | |
* "required": [ | |
* "age", | |
* "available" | |
* ] | |
* } | |
* ``` | |
*/ | |
format?: any | "json"; | |
/** | |
* `temperature`などの、Modelfileに記載の様々なパラメータを指定可能。 | |
* 詳しくはこちら参照: https://github.com/ollama/ollama/blob/main/docs/modelfile.md#valid-parameters-and-values | |
*/ | |
options?: { | |
mirostat?: number; | |
mirostat_eta?: number; | |
mirostat_tau?: number; | |
num_ctx?: number; | |
repeat_last_n?: number; | |
repeat_penalty?: number; | |
temperature?: number; | |
seed?: number; | |
stop?: string; | |
num_predict?: number; | |
top_k?: number; | |
top_p?: number; | |
min_p?: number; | |
}; | |
/** | |
* ストリーミングでのリクエストかどうかを指定。 | |
* デフォルトだと`true`(ストリーミング形式でレスポンスを取得)。 | |
*/ | |
stream?: boolean; | |
/** | |
* リクエスト後、モデルがメモリにロードされたままになる時間を指定可能。`-1`だと無限時間(常駐アプリ)になる。 | |
* `24h`みたいな指定が可能。 | |
* デフォルト値: `5m`。 | |
*/ | |
keep_alive?: string; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { IOllamaChatMessage } from "./ollamaCommon"; | |
/** | |
* チャット応答を取得するAPIのPOSTレスポンス。 | |
* Docs: https://github.com/ollama/ollama/blob/main/docs/api.md#generate-a-chat-completion | |
*/ | |
export interface IOllamaChatResponse { | |
/** | |
* モデル名。 | |
*/ | |
model: string; | |
/** | |
* レスポンス作成日時。 | |
* Date型に変換可能な文字列(`2025-05-05T18:52:35.719107+09:00`)で返却。 | |
*/ | |
created_at: string; | |
/** | |
* 会話応答結果。 | |
*/ | |
message: IOllamaChatMessage[]; | |
/** | |
* 応答が完了したかどうか。 | |
* リクエストパラメータの`stream`を`false`にした場合、この値が`true`にならないと完全な回答を得られない。 | |
*/ | |
done: boolean; | |
/** | |
* 応答が完了した理由。 | |
* 例: `stop`…生成AIが十分な確信を持って会話を終えれると判断してもらえた。 | |
*/ | |
done_reason: string; | |
/** | |
* 応答内容の生成にかかった時間。(単位:ナノ秒) | |
*/ | |
total_duration: number; | |
/** | |
* ロードにかかった時間。(単位:ナノ秒) | |
*/ | |
load_duration: number; | |
/** | |
* プロンプトのトークン数。 | |
*/ | |
prompt_eval_count: number; | |
/** | |
* プロンプトの評価にかかった時間。(単位:ナノ秒) | |
*/ | |
prompt_eval_duration: number; | |
/** | |
* 生成されたトークン数。 | |
*/ | |
eval_count: number; | |
/** | |
* 生成にかかった時間。(単位:ナノ秒) | |
*/ | |
eval_duration: number; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Ollamaの`chat`応答で使用されるメッセージ内容。 | |
*/ | |
export interface IOllamaChatMessage { | |
/** | |
* 役割。 | |
*/ | |
role: "system" | "user" | "assistant" | "tool"; | |
/** | |
* プロンプト。 | |
*/ | |
content: string; | |
/** | |
* 画像ファイル。Base64エンコードされた値を格納。 | |
*/ | |
images?: string[]; | |
/** | |
* モデルが使用したいツールのJSONリスト。 | |
* 形式は`IOllamaChatRequest`>`tools`と一緒。 | |
*/ | |
tool_calls?: any[]; | |
} | |
/** | |
* Ollamaのモデル情報。 | |
*/ | |
export interface IOllamaModel { | |
/** | |
* モデル名。 | |
*/ | |
name: string; | |
/** | |
* モデル名。 | |
*/ | |
model: string; | |
/** | |
* モデルの容量。 | |
*/ | |
size: number; | |
/** | |
* 識別子? | |
* `2ae6f6dd7a3dd734790bbbf58b8909a606e0e7e97e94b7604e0aa7ae4490e6d8`と言った値、別APIでのリクエスト時等に使用。 | |
*/ | |
digest: string; | |
/** | |
* モデルの詳細情報。 | |
*/ | |
details: { | |
/** | |
* 親となったモデル名。 | |
*/ | |
parent_model: string; | |
/** | |
* フォーマット。 | |
*/ | |
format: "gguf"; | |
/** | |
* 属する集団。 | |
*/ | |
family: string; | |
/** | |
* 属する集団。存在しない場合`null`が返却。 | |
*/ | |
families: string[] | null; | |
/** | |
* パラメータサイズ。`13B`や`7B`と言った形で返却。 | |
*/ | |
parameter_size: string; | |
/** | |
* 量子化レベル。 | |
*/ | |
quantization_level: string; | |
}; | |
/** | |
* モデル起動終了までの時間。 | |
* Date型に変換可能な文字列(`2025-05-05T18:52:35.719107+09:00`)で返却。 | |
*/ | |
expires_at: string; | |
/** | |
* VRAMのサイズ。 | |
*/ | |
size_vram: number; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 会話応答を取得するAPIのPOSTリクエスト。 | |
* Docs: https://github.com/ollama/ollama/blob/main/docs/api.md#generate-a-completion | |
*/ | |
export interface IOllamaGenerateRequest { | |
/** | |
* モデル名。 | |
*/ | |
model: string; | |
/** | |
* プロンプト。 | |
*/ | |
prompt: string; | |
/** | |
* モデル回答後の後のテキスト。 | |
*/ | |
suffix?: string; | |
/** | |
* 画像ファイル。Base64エンコードされた値を格納。 | |
*/ | |
images?: string[]; | |
/** | |
* 返却時のフォーマットを指定可能。 | |
* 以下の様な形の指定もできる: | |
* ```json | |
* { | |
* "type": "object", | |
* "properties": { | |
* "age": { | |
* "type": "integer" | |
* }, | |
* "available": { | |
* "type": "boolean" | |
* } | |
* }, | |
* "required": [ | |
* "age", | |
* "available" | |
* ] | |
* } | |
* ``` | |
*/ | |
format?: any | "json"; | |
/** | |
* `temperature`などの、Modelfileに記載の様々なパラメータを指定可能。 | |
* 詳しくはこちら参照: https://github.com/ollama/ollama/blob/main/docs/modelfile.md#valid-parameters-and-values | |
*/ | |
options?: { | |
mirostat?: number; | |
mirostat_eta?: number; | |
mirostat_tau?: number; | |
num_ctx?: number; | |
repeat_last_n?: number; | |
repeat_penalty?: number; | |
temperature?: number; | |
seed?: number; | |
stop?: string; | |
num_predict?: number; | |
top_k?: number; | |
top_p?: number; | |
min_p?: number; | |
}; | |
/** | |
* システムメッセージを指定可能。 | |
* 対象モデルの`Modelfile`を上書きする形での指定となる。 | |
*/ | |
system?: string; | |
/** | |
* 使用するテンプレート。 | |
* 対象モデルの`Modelfile`を上書きする形での指定となる。 | |
*/ | |
template?: string; | |
/** | |
* ストリーミングでのリクエストかどうかを指定。 | |
* デフォルトだと`true`(ストリーミング形式でレスポンスを取得)。 | |
*/ | |
stream?: boolean; | |
/** | |
* `true`の場合、プロンプトにフォーマットが適用されない。 | |
*/ | |
raw?: boolean; | |
/** | |
* リクエスト後、モデルがメモリにロードされたままになる時間を指定可能。`-1`だと無限時間(常駐アプリ)になる | |
* `24h`みたいな指定が可能。 | |
* デフォルト値: `5m` | |
*/ | |
keep_alive?: string; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 会話応答を取得するAPIのPOSTレスポンス。 | |
* Docs: https://github.com/ollama/ollama/blob/main/docs/api.md#generate-a-completion | |
*/ | |
export interface IOllamaGenerateResponse { | |
/** | |
* モデル名。 | |
*/ | |
model: string; | |
/** | |
* レスポンス作成日時。 | |
* Date型に変換可能な文字列(`2025-05-05T18:52:35.719107+09:00`)で返却。 | |
*/ | |
created_at: string; | |
/** | |
* 会話応答結果。 | |
*/ | |
response: string; | |
/** | |
* 応答が完了したかどうか。 | |
* リクエストパラメータの`stream`を`false`にした場合、この値が`true`にならないと完全な回答を得られない。 | |
*/ | |
done: boolean; | |
/** | |
* 応答が完了した理由。 | |
* 例: `stop`…生成AIが十分な確信を持って会話を終えれると判断してもらえた。 | |
*/ | |
done_reason: string; | |
/** | |
* コンテキスト。 | |
*/ | |
context: number[]; | |
/** | |
* 応答内容の生成にかかった時間。(単位:ナノ秒) | |
*/ | |
total_duration: number; | |
/** | |
* ロードにかかった時間。(単位:ナノ秒) | |
*/ | |
load_duration: number; | |
/** | |
* プロンプトのトークン数。 | |
*/ | |
prompt_eval_count: number; | |
/** | |
* プロンプトの評価にかかった時間。(単位:ナノ秒) | |
*/ | |
prompt_eval_duration: number; | |
/** | |
* 生成されたトークン数。 | |
*/ | |
eval_count: number; | |
/** | |
* 生成にかかった時間。(単位:ナノ秒) | |
*/ | |
eval_duration: number; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { IOllamaModel } from "./ollamaCommon"; | |
/** | |
* ローカルOllamaにて起動してる言語モデルを取得するAPIのGETレスポンス。 | |
* Docs: https://github.com/ollama/ollama/blob/main/docs/api.md#list-running-models | |
*/ | |
export interface IOllamaPsResponse { | |
models: IOllamaModel[]; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment