|
ailia_llm
1.5.1.0
|
LLM推論ライブラリ [詳解]
#include <wchar.h>
クラス | |
| struct | _AILIALLMChatMessage |
| struct | _AILIALLMMediaData |
| マルチモーダル用の画像・音声データ構造体。音声には音声対応プロジェクタが必要です。 画像はファイルパス、エンコード済みバッファ(JPG、PNG等)、またはRaw RGBデータから読み込み可能です。 エンコード済みバッファの対応フォーマットはJPG、PNG、TGA、BMP、PSD、GIF、HDR、PICです。 [詳解] | |
| struct | _AILIALLMMultimodalChatMessage |
| マルチモーダル対応チャットメッセージ [詳解] | |
マクロ定義 | |
| #define | AILIA_LLM_API __stdcall |
| #define | AILIA_LLM_STATUS_SUCCESS (0) |
| 成功 [詳解] | |
| #define | AILIA_LLM_STATUS_INVALID_ARGUMENT (-1) |
| 引数が不正 [詳解] | |
| #define | AILIA_LLM_STATUS_ERROR_FILE_API (-2) |
| ファイルアクセスに失敗した [詳解] | |
| #define | AILIA_LLM_STATUS_INVALID_VERSION (-3) |
| 構造体バージョンが不正 [詳解] | |
| #define | AILIA_LLM_STATUS_BROKEN (-4) |
| 壊れたファイルが渡された [詳解] | |
| #define | AILIA_LLM_STATUS_MEMORY_INSUFFICIENT (-5) |
| メモリが不足している [詳解] | |
| #define | AILIA_LLM_STATUS_THREAD_ERROR (-6) |
| スレッドの作成に失敗した [詳解] | |
| #define | AILIA_LLM_STATUS_INVALID_STATE (-7) |
| 内部状態が不正 [詳解] | |
| #define | AILIA_LLM_STATUS_CONTEXT_FULL (-8) |
| コンテキスト長を超えました [詳解] | |
| #define | AILIA_LLM_STATUS_ERROR_BUFFER_API (-9) |
| バッファの読み込みに失敗した [詳解] | |
| #define | AILIA_LLM_STATUS_PARSE_ERROR (-10) |
| 生成テキストの解析に失敗した [詳解] | |
| #define | AILIA_LLM_STATUS_UNIMPLEMENTED (-15) |
| 未実装 [詳解] | |
| #define | AILIA_LLM_STATUS_OTHER_ERROR (-128) |
| 不明なエラー [詳解] | |
型定義 | |
| typedef struct _AILIALLMChatMessage | AILIALLMChatMessage |
| typedef struct _AILIALLMMediaData | AILIALLMMediaData |
| マルチモーダル用の画像・音声データ構造体。音声には音声対応プロジェクタが必要です。 画像はファイルパス、エンコード済みバッファ(JPG、PNG等)、またはRaw RGBデータから読み込み可能です。 エンコード済みバッファの対応フォーマットはJPG、PNG、TGA、BMP、PSD、GIF、HDR、PICです。 [詳解] | |
| typedef struct _AILIALLMMultimodalChatMessage | AILIALLMMultimodalChatMessage |
| マルチモーダル対応チャットメッセージ [詳解] | |
関数 | |
| AILIA_LLM_API int | ailiaLLMGetBackendCount (unsigned int *env_count) |
| 利用可能な計算環境(CPU, GPU, HTP (QNN))の数を取得します [詳解] | |
| AILIA_LLM_API int | ailiaLLMGetBackendName (const char **env, unsigned int env_idx) |
| 計算環境の一覧を取得します [詳解] | |
| AILIA_LLM_API int | ailiaLLMGetBackendDeviceName (const char **name, unsigned int env_idx) |
| 指定した計算環境のデバイス名を取得します。 [詳解] | |
| AILIA_LLM_API int | ailiaLLMSetBackend (struct AILIALLM *llm, unsigned int backend_idx) |
| モデルを開く前に、このインスタンスが使用するバックエンドを選択します。 [詳解] | |
| AILIA_LLM_API int | ailiaLLMSetNumThreads (struct AILIALLM *llm, unsigned int n_threads) |
| モデルを開く前にCPUスレッド数を設定します。 [詳解] | |
| AILIA_LLM_API int | ailiaLLMCreate (struct AILIALLM **llm) |
| LLMオブジェクトを作成します。 [詳解] | |
| AILIA_LLM_API int | ailiaLLMOpenModelFileA (struct AILIALLM *llm, const char *path, unsigned int n_ctx) |
| モデルファイルを読み込みます。 [詳解] | |
| AILIA_LLM_API int | ailiaLLMOpenModelFileW (struct AILIALLM *llm, const wchar_t *path, unsigned int n_ctx) |
| AILIA_LLM_API int | ailiaLLMOpenMtpModelFileA (struct AILIALLM *llm, const char *path, unsigned int n_draft) |
| MTPドラフトモデルを開き、生成をドラフト・本体検証経路に切り替えます。 [詳解] | |
| AILIA_LLM_API int | ailiaLLMOpenMtpModelFileW (struct AILIALLM *llm, const wchar_t *path, unsigned int n_draft) |
| AILIA_LLM_API int | ailiaLLMGetContextSize (struct AILIALLM *llm, unsigned int *context_size) |
| コンテキストの長さを取得します。 [詳解] | |
| AILIA_LLM_API int | ailiaLLMSetSamplingParams (struct AILIALLM *llm, unsigned int top_k, float top_p, float temp, unsigned int dist) |
| サンプリングのパラメータを設定します。 [詳解] | |
| AILIA_LLM_API int | ailiaLLMSetThinking (struct AILIALLM *llm, unsigned int enable) |
| Thinking(推論過程の出力)を有効または無効にします。 [詳解] | |
| AILIA_LLM_API int | ailiaLLMSetPrompt (struct AILIALLM *llm, const AILIALLMChatMessage *message, unsigned int message_cnt) |
| プロンプトを設定します。 [詳解] | |
| AILIA_LLM_API int | ailiaLLMGenerate (struct AILIALLM *llm, unsigned int *done) |
| 生成を行います。 [詳解] | |
| AILIA_LLM_API int | ailiaLLMGetDeltaTextSize (struct AILIALLM *llm, unsigned int *buf_size) |
| テキストの長さを取得します。(NULL文字含む) [詳解] | |
| AILIA_LLM_API int | ailiaLLMGetDeltaText (struct AILIALLM *llm, char *text, unsigned int buf_size) |
| テキストを取得します。 [詳解] | |
| AILIA_LLM_API int | ailiaLLMGetTokenCount (struct AILIALLM *llm, unsigned int *cnt, const char *text) |
| トークンの数を取得します。 [詳解] | |
| AILIA_LLM_API int | ailiaLLMGetPromptTokenCount (struct AILIALLM *llm, unsigned int *cnt) |
| プロンプトトークンの数を取得します。 [詳解] | |
| AILIA_LLM_API int | ailiaLLMGetGeneratedTokenCount (struct AILIALLM *llm, unsigned int *cnt) |
| 生成したトークンの数を取得します。 [詳解] | |
| AILIA_LLM_API void | ailiaLLMDestroy (struct AILIALLM *llm) |
| LLMオブジェクトを破棄します。 [詳解] | |
| AILIA_LLM_API int | ailiaLLMOpenMultimodalProjectorFileA (struct AILIALLM *llm, const char *mmproj_path) |
| マルチモーダルプロジェクタファイルを読み込みます。 [詳解] | |
| AILIA_LLM_API int | ailiaLLMOpenMultimodalProjectorFileW (struct AILIALLM *llm, const wchar_t *mmproj_path) |
| AILIA_LLM_API int | ailiaLLMGetMultimodalCapabilities (struct AILIALLM *llm, unsigned int *vision_support, unsigned int *audio_support) |
| マルチモーダル機能がサポートされているかを確認します。 [詳解] | |
| AILIA_LLM_API int | ailiaLLMSetMultimodalPrompt (struct AILIALLM *llm, const AILIALLMMultimodalChatMessage *message, unsigned int message_cnt) |
| マルチモーダルプロンプトを設定します。 [詳解] | |
| AILIA_LLM_API int | ailiaLLMSetTools (struct AILIALLM *llm, const char *tools_json) |
| OpenAI互換のツール定義JSON配列を設定します。NULL/空文字列/空配列で解除します。 [詳解] | |
| AILIA_LLM_API int | ailiaLLMSetPromptJson (struct AILIALLM *llm, const char *messages_json) |
| 構造化されたJSON会話履歴からプロンプトを設定します。 [詳解] | |
| AILIA_LLM_API int | ailiaLLMGetResponseJsonSize (struct AILIALLM *llm, unsigned int *buf_size) |
| SDK内部に蓄積した生成結果のassistant JSONサイズを取得します(NULL文字含む)。 [詳解] | |
| AILIA_LLM_API int | ailiaLLMGetResponseJson (struct AILIALLM *llm, char *json, unsigned int buf_size) |
| SDK内部に蓄積した生成結果を構造化assistant JSONとして取得します。 [詳解] | |
| AILIA_LLM_API const char * | ailiaLLMGetErrorDetail (struct AILIALLM *llm) |
| モデル読み込み・プロンプト設定・推論APIの直近のエラー詳細を返します。 [詳解] | |
| AILIA_LLM_API int | ailiaLLMGetQNNModelName (const char **model_name) |
| 現在の端末に対応するQNNモデル名を取得します。 [詳解] | |
LLM推論ライブラリ
| #define AILIA_LLM_API __stdcall |
| #define AILIA_LLM_STATUS_BROKEN (-4) |
壊れたファイルが渡された
| #define AILIA_LLM_STATUS_CONTEXT_FULL (-8) |
コンテキスト長を超えました
| #define AILIA_LLM_STATUS_ERROR_BUFFER_API (-9) |
バッファの読み込みに失敗した
| #define AILIA_LLM_STATUS_ERROR_FILE_API (-2) |
ファイルアクセスに失敗した
| #define AILIA_LLM_STATUS_INVALID_ARGUMENT (-1) |
引数が不正
| #define AILIA_LLM_STATUS_INVALID_STATE (-7) |
内部状態が不正
| #define AILIA_LLM_STATUS_INVALID_VERSION (-3) |
構造体バージョンが不正
| #define AILIA_LLM_STATUS_MEMORY_INSUFFICIENT (-5) |
メモリが不足している
| #define AILIA_LLM_STATUS_OTHER_ERROR (-128) |
不明なエラー
| #define AILIA_LLM_STATUS_PARSE_ERROR (-10) |
生成テキストの解析に失敗した
| #define AILIA_LLM_STATUS_SUCCESS (0) |
成功
| #define AILIA_LLM_STATUS_THREAD_ERROR (-6) |
スレッドの作成に失敗した
| #define AILIA_LLM_STATUS_UNIMPLEMENTED (-15) |
未実装
| typedef struct _AILIALLMChatMessage AILIALLMChatMessage |
| typedef struct _AILIALLMMediaData AILIALLMMediaData |
マルチモーダル用の画像・音声データ構造体。音声には音声対応プロジェクタが必要です。 画像はファイルパス、エンコード済みバッファ(JPG、PNG等)、またはRaw RGBデータから読み込み可能です。 エンコード済みバッファの対応フォーマットはJPG、PNG、TGA、BMP、PSD、GIF、HDR、PICです。
| typedef struct _AILIALLMMultimodalChatMessage AILIALLMMultimodalChatMessage |
マルチモーダル対応チャットメッセージ
| AILIA_LLM_API int ailiaLLMCreate | ( | struct AILIALLM ** | llm | ) |
LLMオブジェクトを作成します。
| llm | LLMオブジェクトポインタへのポインタ |
LLMオブジェクトを作成します。
| AILIA_LLM_API void ailiaLLMDestroy | ( | struct AILIALLM * | llm | ) |
LLMオブジェクトを破棄します。
| llm | LLMオブジェクトポインタ |
| AILIA_LLM_API int ailiaLLMGenerate | ( | struct AILIALLM * | llm, |
| unsigned int * | done | ||
| ) |
生成を行います。
| llm | LLMオブジェクトポインタ |
| done | 生成が完了したか |
デコードした結果はailiaLLMGetDeltaText APIで取得します。 ailiaLLMGenerateを呼び出すたびに1トークンずつデコードします。 doneは0か1を取ります。doneが1の場合、生成完了となります。
| AILIA_LLM_API int ailiaLLMGetBackendCount | ( | unsigned int * | env_count | ) |
利用可能な計算環境(CPU, GPU, HTP (QNN))の数を取得します
| env_count | 計算環境情報の数の格納先 |
| AILIA_LLM_API int ailiaLLMGetBackendDeviceName | ( | const char ** | name, |
| unsigned int | env_idx | ||
| ) |
指定した計算環境のデバイス名を取得します。
| name | デバイス名の格納先(ライブラリがロードされている間有効) |
| env_idx | ailiaLLMGetBackendCount() で列挙したインデックス |
| AILIA_LLM_API int ailiaLLMGetBackendName | ( | const char ** | env, |
| unsigned int | env_idx | ||
| ) |
計算環境の一覧を取得します
| env | 計算環境名の格納先(ライブラリがロードされている間有効) |
| env_idx | 計算環境情報のインデックス(0~ ailiaLLMGetBackendCount() -1) |
| AILIA_LLM_API int ailiaLLMGetContextSize | ( | struct AILIALLM * | llm, |
| unsigned int * | context_size | ||
| ) |
コンテキストの長さを取得します。
| llm | LLMオブジェクトポインタ |
| len | コンテキストの長さ |
| AILIA_LLM_API int ailiaLLMGetDeltaText | ( | struct AILIALLM * | llm, |
| char * | text, | ||
| unsigned int | buf_size | ||
| ) |
テキストを取得します。
| llm | LLMオブジェクトポインタ |
| text | テキスト(UTF8) |
| buf_size | バッファサイズ |
ailiaLLMGenerate() を一度も実行していない場合は AILIA_LLM_STATUS_INVALID_STATE が返ります。
| AILIA_LLM_API int ailiaLLMGetDeltaTextSize | ( | struct AILIALLM * | llm, |
| unsigned int * | buf_size | ||
| ) |
テキストの長さを取得します。(NULL文字含む)
| llm | LLMオブジェクトポインタ |
| buf_size | テキストの長さ |
| AILIA_LLM_API const char* ailiaLLMGetErrorDetail | ( | struct AILIALLM * | llm | ) |
モデル読み込み・プロンプト設定・推論APIの直近のエラー詳細を返します。
| AILIA_LLM_API int ailiaLLMGetGeneratedTokenCount | ( | struct AILIALLM * | llm, |
| unsigned int * | cnt | ||
| ) |
生成したトークンの数を取得します。
| llm | LLMオブジェクトポインタ |
| cnt | 生成したトークンの数 |
ailiaLLMGenerateを呼び出した後に呼び出し可能です。
| AILIA_LLM_API int ailiaLLMGetMultimodalCapabilities | ( | struct AILIALLM * | llm, |
| unsigned int * | vision_support, | ||
| unsigned int * | audio_support | ||
| ) |
マルチモーダル機能がサポートされているかを確認します。
| llm | LLMオブジェクトポインタ |
| vision_support | 画像入力(VLM)をサポートしているか |
| audio_support | 音声入力(ALM)をサポートしているか |
ailiaLLMOpenMultimodalProjectorFileの後に呼び出し可能です。
| AILIA_LLM_API int ailiaLLMGetPromptTokenCount | ( | struct AILIALLM * | llm, |
| unsigned int * | cnt | ||
| ) |
プロンプトトークンの数を取得します。
| llm | LLMオブジェクトポインタ |
| cnt | プロンプトトークンの数 |
ailiaLLMSetPromptを呼び出した後に呼び出し可能です。
| AILIA_LLM_API int ailiaLLMGetQNNModelName | ( | const char ** | model_name | ) |
現在の端末に対応するQNNモデル名を取得します。
| model_name | QNNモデル名の格納先(例: "sm8475")。返された文字列は libraryが所有するため、呼び出し側で解放しないでください。 |
返される名前はailia_llm_compile_cが生成するtext modelのファイル名から .qnnを除いた部分と一致します。画像入力(VLM)/音声入力(ALM)用projectorは 同じ名前に-mmproj.qnnを付けたファイルです。QNNはAndroid arm64と Windows ARM64に対応します。この呼び出しでQNN plug-inを初めて 遅延loadします。未対応SoCでは AILIA_LLM_STATUS_OTHER_ERROR 、plug-inが 存在しない場合、およびBUILD_QNN以外では AILIA_LLM_STATUS_UNIMPLEMENTED を返します。
| AILIA_LLM_API int ailiaLLMGetResponseJson | ( | struct AILIALLM * | llm, |
| char * | json, | ||
| unsigned int | buf_size | ||
| ) |
SDK内部に蓄積した生成結果を構造化assistant JSONとして取得します。
| llm | LLMオブジェクト |
| json | UTF-8出力バッファ |
| buf_size | バッファサイズ |
Generateで生成した出力をSDKが連結します。GetDeltaTextの取得・連結は不要です。 成功したJSONをSetPromptJsonの履歴配列に追加できます。新しいプロンプトで蓄積をリセットします。 生成完了後に呼び出してください。未完了の呼び出し/ThinkingはPARSE_ERRORで、補完しません。 プロンプト未設定やtools/Thinking変更後はINVALID_STATE。生成前は空のassistantを返します。 NULL引数や不足したバッファはINVALID_ARGUMENTです。取得しても蓄積は消えません。
| AILIA_LLM_API int ailiaLLMGetResponseJsonSize | ( | struct AILIALLM * | llm, |
| unsigned int * | buf_size | ||
| ) |
SDK内部に蓄積した生成結果のassistant JSONサイズを取得します(NULL文字含む)。
| llm | LLMオブジェクト |
| buf_size | 必要なバッファサイズ |
ailiaLLMGetResponseJsonと同じ解析条件・エラーを適用します。
| AILIA_LLM_API int ailiaLLMGetTokenCount | ( | struct AILIALLM * | llm, |
| unsigned int * | cnt, | ||
| const char * | text | ||
| ) |
トークンの数を取得します。
| llm | LLMオブジェクトポインタ |
| cnt | トークンの数 |
| text | テキスト(UTF8) |
| AILIA_LLM_API int ailiaLLMOpenModelFileA | ( | struct AILIALLM * | llm, |
| const char * | path, | ||
| unsigned int | n_ctx | ||
| ) |
モデルファイルを読み込みます。
| llm | LLMオブジェクトポインタへのポインタ |
| path | GGUFまたはailia QNNモデル(.qnn)のパス |
| n_ctx | コンテキスト長(0でモデルのデフォルト) |
GGUFまたは自己完結ailia QNNモデルを読み込みます。バックエンド未選択なら .qnnはHTPに、GGUFはCPU/GPUに自動振り分けされます。明示選択した場合は バックエンドとモデル形式の一致が必要です。.qnnではn_ctx=0を指定すると モデル内のコンテキスト長を使用します。
| AILIA_LLM_API int ailiaLLMOpenModelFileW | ( | struct AILIALLM * | llm, |
| const wchar_t * | path, | ||
| unsigned int | n_ctx | ||
| ) |
| AILIA_LLM_API int ailiaLLMOpenMtpModelFileA | ( | struct AILIALLM * | llm, |
| const char * | path, | ||
| unsigned int | n_draft | ||
| ) |
MTPドラフトモデルを開き、生成をドラフト・本体検証経路に切り替えます。
| llm | LLMオブジェクト |
| path | 対応するGemma 4 assistant GGUF、またはQNN本体用assistant .qnnのパス(A: UTF-8、W: UTF-16) |
| n_draft | ドラフトトークン数(1以上)。QNNでは最大3。 |
本体を開いた後、プロンプト設定前に一度呼び出します。 CPU/GPU Gemma 4 GGUFとQNNのテキスト生成に対応します。 指定数のドラフトと本体の1トークンを合わせて検証します。
| AILIA_LLM_API int ailiaLLMOpenMtpModelFileW | ( | struct AILIALLM * | llm, |
| const wchar_t * | path, | ||
| unsigned int | n_draft | ||
| ) |
| AILIA_LLM_API int ailiaLLMOpenMultimodalProjectorFileA | ( | struct AILIALLM * | llm, |
| const char * | mmproj_path | ||
| ) |
マルチモーダルプロジェクタファイルを読み込みます。
| llm | LLMオブジェクトポインタ |
| mmproj_path | MMPROJ GGUFまたは自己完結ailia QNN projector(.qnn)のパス |
マルチモーダル機能を使用するには、先にailiaLLMOpenModelFileでテキストモデルを読み込み、 その後でこの関数でマルチモーダルプロジェクタを読み込む必要があります。 画像入力(VLM)には画像対応、音声入力(ALM)には音声対応のmmproj GGUF、 または各入力用コンテキストを含む.qnnが必要です。
| AILIA_LLM_API int ailiaLLMOpenMultimodalProjectorFileW | ( | struct AILIALLM * | llm, |
| const wchar_t * | mmproj_path | ||
| ) |
| AILIA_LLM_API int ailiaLLMSetBackend | ( | struct AILIALLM * | llm, |
| unsigned int | backend_idx | ||
| ) |
モデルを開く前に、このインスタンスが使用するバックエンドを選択します。
| llm | LLMインスタンス |
| backend_idx | ailiaLLMGetBackendCount/Nameで列挙したデバイスのインデックス |
未指定の場合はモデル形式から自動選択します。HTP (QNN)は.qnn専用です。CPU/GPUを明示選択した場合は.qnnを開けません。切り替えるには新しいインスタンスでモデルを開き直してください。
| AILIA_LLM_API int ailiaLLMSetMultimodalPrompt | ( | struct AILIALLM * | llm, |
| const AILIALLMMultimodalChatMessage * | message, | ||
| unsigned int | message_cnt | ||
| ) |
マルチモーダルプロンプトを設定します。
| llm | LLMオブジェクトポインタ |
| message | マルチモーダルメッセージの配列 |
| message_cnt | メッセージの数 |
マルチモーダル対応のプロンプトを設定します。メッセージのcontentに<media>プレースホルダーを含め、 対応するメディアデータをmedia_dataに設定してください。 例: "この画像について説明してください: <__media__>" messageの内容は内部でコピーされるため、呼び出し後に開放することができます。 画像はファイルパス、エンコード済みバッファ(JPG、PNG等)、またはRaw RGBデータから読み込み可能です。 音声はWAV/MP3/FLACのファイルパスまたはエンコード済みバッファから読み込み可能です。 KVキャッシュの再利用では、ファイル入力とバッファ入力は内容のハッシュで同一性を判定します。 エンコーダー出力は現在のプロンプトに含まれるメディアの分だけ保持し、履歴から外れた分は解放します。 デコード済みの画像・音声は設定処理の終了時に解放します。 メディアを含まないプロンプトへの切り替えが成功すると、メディアのキャッシュを解放します。
| AILIA_LLM_API int ailiaLLMSetNumThreads | ( | struct AILIALLM * | llm, |
| unsigned int | n_threads | ||
| ) |
モデルを開く前にCPUスレッド数を設定します。
| llm | LLMインスタンス |
| n_threads | スレッド数(0は自動設定)。 |
未指定の場合も0として扱います。Androidでは高効率コア(高性能側のbig/prime)の数を使用します。 取得できない場合は既存のコア数判定を使用します。本体のDecode/Prefill、assistant、VLM/ALMのCPU推論スレッド数に同じ値を使用します。
| AILIA_LLM_API int ailiaLLMSetPrompt | ( | struct AILIALLM * | llm, |
| const AILIALLMChatMessage * | message, | ||
| unsigned int | message_cnt | ||
| ) |
プロンプトを設定します。
| llm | LLMオブジェクトポインタへのポインタ |
| message | メッセージの配列 |
| message_cnt | メッセージの数 |
LLMに問い合わせるプロンプトを設定します。 ChatHistoryもmessageに含めてください。 ツール設定中はINVALID_STATEを返します。最初のuserメッセージからailiaLLMSetPromptJsonを使用してください。 ailiaLLMSetToolsでツールを解除すると本APIを再び使用できます。 messageの内容は内部でコピーされるため、呼び出し後に開放することができます。
| AILIA_LLM_API int ailiaLLMSetPromptJson | ( | struct AILIALLM * | llm, |
| const char * | messages_json | ||
| ) |
構造化されたJSON会話履歴からプロンプトを設定します。
| llm | LLMオブジェクトポインタ |
| messages_json | UTF-8の空でないメッセージJSON配列(NULL終端) |
roleはsystem/user/assistant/tool、contentは文字列またはnullです。userはcontent配列にも対応します。 配列要素は{"type":"text","text":"..."}、またはtypeがimage/audioでfile_path(ローカルファイル)か data(標準Base64のエンコード済みファイル)を1つ指定します。 画像はJPEG/PNG等、音声はWAV/MP3/FLACに対応します。 メディアは対応projectorの読込が必要です。URL取得・生PCM/RGB・動画には対応しません。 配列順に入力します。メディア入力の内容・順序・個数と履歴の接頭部が一致し、 必要なKV位置が残っている場合はKVキャッシュを再利用します。 エンコード結果はバックエンドのキャッシュ条件に従って再利用します。 GGUF・QNNともにKVの再構築が必要な場合も、保持中のメディアのエンコーダー出力を再利用できます。 ファイルの内容ハッシュは毎回確認し、メディアの内容が変更された場合は再評価します。 エンコーダー出力は現在のプロンプトに含まれるメディアの分だけ保持し、履歴から外れた分は解放します。 デコード済みの画像・音声は設定処理の終了時に解放します。 メディアを含まないプロンプトへの切り替えが成功すると、メディアのキャッシュを解放します。 assistantのcontentをモデル固有構文として再解析しません。reasoning_contentとtool_callsを明示してください。 ailiaLLMGetResponseJsonの結果をassistantメッセージとしてそのまま追加できます。 tool_callsはtype="function"、空でないidとfunction.name、JSONオブジェクトを表す文字列function.argumentsを必要とします。 idはassistant内で一意とし、後続ターンでは再利用できます。 tool結果のcontentは文字列、tool_call_idは直前のassistantの呼び出しIDです。 連続するtool結果は順序ではなくIDで対応付け、ツール名を補います。重複・不一致の結果は拒否します。 不完全なargumentsは補完・破棄せずエラーとします。GetResponseJsonがPARSE_ERRORの場合は、 失敗したassistantを追加せず、既存履歴に再試行を指示するuserメッセージを追加してください。 SetTools(NULL)後も過去のtool_callsとtool結果を入力できます。結果JSONはツール解除前に取得してください。 入力は呼び出し後に解放できます。成功後はailiaLLMGenerateで生成します。
| AILIA_LLM_API int ailiaLLMSetSamplingParams | ( | struct AILIALLM * | llm, |
| unsigned int | top_k, | ||
| float | top_p, | ||
| float | temp, | ||
| unsigned int | dist | ||
| ) |
サンプリングのパラメータを設定します。
| llm | LLMオブジェクトポインタへのポインタ |
| top_k | サンプリングする確率値の上位個数、デフォルト40 |
| top_p | サンプリングする確率値の範囲、デフォルト0.9(0.9〜1.0) |
| temp | 温度パラメータ、デフォルト0.4 |
| dist | シード、デフォルト1234 |
LLMのサンプリングの設定を行います。ailiaLLMSetPromptの前に実行する必要があります。
| AILIA_LLM_API int ailiaLLMSetThinking | ( | struct AILIALLM * | llm, |
| unsigned int | enable | ||
| ) |
Thinking(推論過程の出力)を有効または無効にします。
| llm | LLMオブジェクトポインタへのポインタ |
| enable | 0で無効、0以外で有効(デフォルト:無効) |
Thinkingモデル(Gemma4等)の推論過程の出力を制御します。ailiaLLMSetPromptの前に実行する必要があります。
| AILIA_LLM_API int ailiaLLMSetTools | ( | struct AILIALLM * | llm, |
| const char * | tools_json | ||
| ) |
OpenAI互換のツール定義JSON配列を設定します。NULL/空文字列/空配列で解除します。
| llm | LLMオブジェクト |
| tools_json | UTF-8のツール定義 |
tools設定中はSetPrompt/SetMultimodalPromptがINVALID_STATEを返します。 最初のuser入力からSetPromptJsonを使用し、Generateで生成後、GetResponseJsonでassistant JSONを取得します。 deltaはプレビュー用です。アプリ側で連結する必要はありません。結果はtool_call_idで返します。 設定変更後は新しいプロンプトを設定してください。不正な定義はINVALID_ARGUMENTです。