ailia_llm  1.5.1.0
クラス | マクロ定義 | 型定義 | 関数
ailia_llm.h ファイル

LLM推論ライブラリ [詳解]

#include <wchar.h>
ailia_llm.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推論ライブラリ

日付
2026/10/11

マクロ定義詳解

◆ AILIA_LLM_API

#define AILIA_LLM_API   __stdcall

◆ AILIA_LLM_STATUS_BROKEN

#define AILIA_LLM_STATUS_BROKEN   (-4)

壊れたファイルが渡された

注釈
モデルファイルが破損していないかを確認し、正常なモデルを渡してください。

◆ AILIA_LLM_STATUS_CONTEXT_FULL

#define AILIA_LLM_STATUS_CONTEXT_FULL   (-8)

コンテキスト長を超えました

注釈
SetPromptに与えるコンテキスト長を削減してください。

◆ AILIA_LLM_STATUS_ERROR_BUFFER_API

#define AILIA_LLM_STATUS_ERROR_BUFFER_API   (-9)

バッファの読み込みに失敗した

注釈
バッファの形式やサイズが正しいことを確認してください。

◆ AILIA_LLM_STATUS_ERROR_FILE_API

#define AILIA_LLM_STATUS_ERROR_FILE_API   (-2)

ファイルアクセスに失敗した

注釈
指定したパスのファイルが存在するか、権限を確認してください。

◆ AILIA_LLM_STATUS_INVALID_ARGUMENT

#define AILIA_LLM_STATUS_INVALID_ARGUMENT   (-1)

引数が不正

注釈
API呼び出し時の引数を確認してください。

◆ AILIA_LLM_STATUS_INVALID_STATE

#define AILIA_LLM_STATUS_INVALID_STATE   (-7)

内部状態が不正

注釈
APIドキュメントを確認し、呼び出し手順が正しいかどうかを確認してください。

◆ AILIA_LLM_STATUS_INVALID_VERSION

#define AILIA_LLM_STATUS_INVALID_VERSION   (-3)

構造体バージョンが不正

注釈
API呼び出し時に指定した構造体バージョンを確認し、正しい構造体バージョンを指定してください。

◆ AILIA_LLM_STATUS_MEMORY_INSUFFICIENT

#define AILIA_LLM_STATUS_MEMORY_INSUFFICIENT   (-5)

メモリが不足している

注釈
メインメモリやVRAMの空き容量を確保してからAPIを呼び出してください。

◆ AILIA_LLM_STATUS_OTHER_ERROR

#define AILIA_LLM_STATUS_OTHER_ERROR   (-128)

不明なエラー

注釈
その他のエラーが発生しました。

◆ AILIA_LLM_STATUS_PARSE_ERROR

#define AILIA_LLM_STATUS_PARSE_ERROR   (-10)

生成テキストの解析に失敗した

注釈
モデルの出力がチャットテンプレートのツール呼び出し構文と一致しませんでした。生成時と同じツール定義(ailiaLLMSetTools)と Thinking設定で解析しているか、テキストが生成完了までの全文であるかを確認してください。

◆ AILIA_LLM_STATUS_SUCCESS

#define AILIA_LLM_STATUS_SUCCESS   (0)

成功

◆ AILIA_LLM_STATUS_THREAD_ERROR

#define AILIA_LLM_STATUS_THREAD_ERROR   (-6)

スレッドの作成に失敗した

注釈
スレッド数などシステムリソースを確認し、リソースを開放してからAPIを呼び出してください。

◆ AILIA_LLM_STATUS_UNIMPLEMENTED

#define AILIA_LLM_STATUS_UNIMPLEMENTED   (-15)

未実装

注釈
指定した環境では未実装な機能が呼び出されました。エラー内容をドキュメント記載のサポート窓口までお問い合わせください。

型定義詳解

◆ AILIALLMChatMessage

◆ AILIALLMMediaData

マルチモーダル用の画像・音声データ構造体。音声には音声対応プロジェクタが必要です。 画像はファイルパス、エンコード済みバッファ(JPG、PNG等)、またはRaw RGBデータから読み込み可能です。 エンコード済みバッファの対応フォーマットはJPG、PNG、TGA、BMP、PSD、GIF、HDR、PICです。

◆ AILIALLMMultimodalChatMessage

マルチモーダル対応チャットメッセージ

関数詳解

◆ ailiaLLMCreate()

AILIA_LLM_API int ailiaLLMCreate ( struct AILIALLM **  llm)

LLMオブジェクトを作成します。

引数
llmLLMオブジェクトポインタへのポインタ
戻り値
成功した場合は AILIA_LLM_STATUS_SUCCESS 、そうでなければエラーコードを返す。

LLMオブジェクトを作成します。

注釈
QNNを使用する場合は、この関数を呼び出したスレッドでailiaLLMDestroyを呼び出してLLMオブジェクトを破棄してください。

◆ ailiaLLMDestroy()

AILIA_LLM_API void ailiaLLMDestroy ( struct AILIALLM *  llm)

LLMオブジェクトを破棄します。

引数
llmLLMオブジェクトポインタ
注釈
QNNを使用する場合は、ailiaLLMCreateを呼び出したスレッドで呼び出してください。 QNN使用時に解放だけをUIスレッドなどの別スレッドへ移すと、その後、別のスレッドでQNNを使用する際に QnnDevice_create failed: code 14001が発生することがあります。

◆ ailiaLLMGenerate()

AILIA_LLM_API int ailiaLLMGenerate ( struct AILIALLM *  llm,
unsigned int *  done 
)

生成を行います。

引数
llmLLMオブジェクトポインタ
done生成が完了したか
戻り値
成功した場合は AILIA_LLM_STATUS_SUCCESS 、そうでなければエラーコードを返す。

デコードした結果はailiaLLMGetDeltaText APIで取得します。 ailiaLLMGenerateを呼び出すたびに1トークンずつデコードします。 doneは0か1を取ります。doneが1の場合、生成完了となります。

◆ ailiaLLMGetBackendCount()

AILIA_LLM_API int ailiaLLMGetBackendCount ( unsigned int *  env_count)

利用可能な計算環境(CPU, GPU, HTP (QNN))の数を取得します

引数
env_count計算環境情報の数の格納先
戻り値
成功した場合は AILIA_LLM_STATUS_SUCCESS 、そうでなければエラーコードを返す。

◆ ailiaLLMGetBackendDeviceName()

AILIA_LLM_API int ailiaLLMGetBackendDeviceName ( const char **  name,
unsigned int  env_idx 
)

指定した計算環境のデバイス名を取得します。

引数
nameデバイス名の格納先(ライブラリがロードされている間有効)
env_idxailiaLLMGetBackendCount() で列挙したインデックス
戻り値
成功時は AILIA_LLM_STATUS_SUCCESS。

◆ ailiaLLMGetBackendName()

AILIA_LLM_API int ailiaLLMGetBackendName ( const char **  env,
unsigned int  env_idx 
)

計算環境の一覧を取得します

引数
env計算環境名の格納先(ライブラリがロードされている間有効)
env_idx計算環境情報のインデックス(0~ ailiaLLMGetBackendCount() -1)
戻り値
成功した場合は AILIA_LLM_STATUS_SUCCESS 、そうでなければエラーコードを返す。

◆ ailiaLLMGetContextSize()

AILIA_LLM_API int ailiaLLMGetContextSize ( struct AILIALLM *  llm,
unsigned int *  context_size 
)

コンテキストの長さを取得します。

引数
llmLLMオブジェクトポインタ
lenコンテキストの長さ
戻り値
成功した場合は AILIA_LLM_STATUS_SUCCESS 、そうでなければエラーコードを返す。

◆ ailiaLLMGetDeltaText()

AILIA_LLM_API int ailiaLLMGetDeltaText ( struct AILIALLM *  llm,
char *  text,
unsigned int  buf_size 
)

テキストを取得します。

引数
llmLLMオブジェクトポインタ
textテキスト(UTF8)
buf_sizeバッファサイズ
戻り値
成功した場合は AILIA_LLM_STATUS_SUCCESS 、そうでなければエラーコードを返す。

ailiaLLMGenerate() を一度も実行していない場合は AILIA_LLM_STATUS_INVALID_STATE が返ります。

◆ ailiaLLMGetDeltaTextSize()

AILIA_LLM_API int ailiaLLMGetDeltaTextSize ( struct AILIALLM *  llm,
unsigned int *  buf_size 
)

テキストの長さを取得します。(NULL文字含む)

引数
llmLLMオブジェクトポインタ
buf_sizeテキストの長さ
戻り値
成功した場合は AILIA_LLM_STATUS_SUCCESS 、そうでなければエラーコードを返す。

◆ ailiaLLMGetErrorDetail()

AILIA_LLM_API const char* ailiaLLMGetErrorDetail ( struct AILIALLM *  llm)

モデル読み込み・プロンプト設定・推論APIの直近のエラー詳細を返します。

戻り値
オブジェクト所有のUTF-8文字列。成功後は空文字列です。
注釈
次のモデル読み込み・プロンプト設定・推論API呼び出し、またはDestroyまで有効です。 QNNのエラーでは元の数値コード、失敗したAPI、取得可能な対象名を含みます。 同じオブジェクトへの並列API呼び出しはサポートしません。

◆ ailiaLLMGetGeneratedTokenCount()

AILIA_LLM_API int ailiaLLMGetGeneratedTokenCount ( struct AILIALLM *  llm,
unsigned int *  cnt 
)

生成したトークンの数を取得します。

引数
llmLLMオブジェクトポインタ
cnt生成したトークンの数
戻り値
成功した場合は AILIA_LLM_STATUS_SUCCESS 、そうでなければエラーコードを返す。

ailiaLLMGenerateを呼び出した後に呼び出し可能です。

◆ ailiaLLMGetMultimodalCapabilities()

AILIA_LLM_API int ailiaLLMGetMultimodalCapabilities ( struct AILIALLM *  llm,
unsigned int *  vision_support,
unsigned int *  audio_support 
)

マルチモーダル機能がサポートされているかを確認します。

引数
llmLLMオブジェクトポインタ
vision_support画像入力(VLM)をサポートしているか
audio_support音声入力(ALM)をサポートしているか
戻り値
成功した場合は AILIA_LLM_STATUS_SUCCESS 、そうでなければエラーコードを返す。

ailiaLLMOpenMultimodalProjectorFileの後に呼び出し可能です。

◆ ailiaLLMGetPromptTokenCount()

AILIA_LLM_API int ailiaLLMGetPromptTokenCount ( struct AILIALLM *  llm,
unsigned int *  cnt 
)

プロンプトトークンの数を取得します。

引数
llmLLMオブジェクトポインタ
cntプロンプトトークンの数
戻り値
成功した場合は AILIA_LLM_STATUS_SUCCESS 、そうでなければエラーコードを返す。

ailiaLLMSetPromptを呼び出した後に呼び出し可能です。

◆ ailiaLLMGetQNNModelName()

AILIA_LLM_API int ailiaLLMGetQNNModelName ( const char **  model_name)

現在の端末に対応するQNNモデル名を取得します。

引数
model_nameQNNモデル名の格納先(例: "sm8475")。返された文字列は libraryが所有するため、呼び出し側で解放しないでください。
戻り値
成功した場合は AILIA_LLM_STATUS_SUCCESS 、そうでなければエラーコードを返す。

返される名前は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 を返します。

◆ ailiaLLMGetResponseJson()

AILIA_LLM_API int ailiaLLMGetResponseJson ( struct AILIALLM *  llm,
char *  json,
unsigned int  buf_size 
)

SDK内部に蓄積した生成結果を構造化assistant JSONとして取得します。

引数
llmLLMオブジェクト
jsonUTF-8出力バッファ
buf_sizeバッファサイズ

Generateで生成した出力をSDKが連結します。GetDeltaTextの取得・連結は不要です。 成功したJSONをSetPromptJsonの履歴配列に追加できます。新しいプロンプトで蓄積をリセットします。 生成完了後に呼び出してください。未完了の呼び出し/ThinkingはPARSE_ERRORで、補完しません。 プロンプト未設定やtools/Thinking変更後はINVALID_STATE。生成前は空のassistantを返します。 NULL引数や不足したバッファはINVALID_ARGUMENTです。取得しても蓄積は消えません。

◆ ailiaLLMGetResponseJsonSize()

AILIA_LLM_API int ailiaLLMGetResponseJsonSize ( struct AILIALLM *  llm,
unsigned int *  buf_size 
)

SDK内部に蓄積した生成結果のassistant JSONサイズを取得します(NULL文字含む)。

引数
llmLLMオブジェクト
buf_size必要なバッファサイズ

ailiaLLMGetResponseJsonと同じ解析条件・エラーを適用します。

◆ ailiaLLMGetTokenCount()

AILIA_LLM_API int ailiaLLMGetTokenCount ( struct AILIALLM *  llm,
unsigned int *  cnt,
const char *  text 
)

トークンの数を取得します。

引数
llmLLMオブジェクトポインタ
cntトークンの数
textテキスト(UTF8)
戻り値
成功した場合は AILIA_LLM_STATUS_SUCCESS 、そうでなければエラーコードを返す。

◆ ailiaLLMOpenModelFileA()

AILIA_LLM_API int ailiaLLMOpenModelFileA ( struct AILIALLM *  llm,
const char *  path,
unsigned int  n_ctx 
)

モデルファイルを読み込みます。

引数
llmLLMオブジェクトポインタへのポインタ
pathGGUFまたはailia QNNモデル(.qnn)のパス
n_ctxコンテキスト長(0でモデルのデフォルト)
戻り値
成功した場合は AILIA_LLM_STATUS_SUCCESS 、そうでなければエラーコードを返す。

GGUFまたは自己完結ailia QNNモデルを読み込みます。バックエンド未選択なら .qnnはHTPに、GGUFはCPU/GPUに自動振り分けされます。明示選択した場合は バックエンドとモデル形式の一致が必要です。.qnnではn_ctx=0を指定すると モデル内のコンテキスト長を使用します。

◆ ailiaLLMOpenModelFileW()

AILIA_LLM_API int ailiaLLMOpenModelFileW ( struct AILIALLM *  llm,
const wchar_t *  path,
unsigned int  n_ctx 
)

◆ ailiaLLMOpenMtpModelFileA()

AILIA_LLM_API int ailiaLLMOpenMtpModelFileA ( struct AILIALLM *  llm,
const char *  path,
unsigned int  n_draft 
)

MTPドラフトモデルを開き、生成をドラフト・本体検証経路に切り替えます。

引数
llmLLMオブジェクト
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トークンを合わせて検証します。

◆ ailiaLLMOpenMtpModelFileW()

AILIA_LLM_API int ailiaLLMOpenMtpModelFileW ( struct AILIALLM *  llm,
const wchar_t *  path,
unsigned int  n_draft 
)

◆ ailiaLLMOpenMultimodalProjectorFileA()

AILIA_LLM_API int ailiaLLMOpenMultimodalProjectorFileA ( struct AILIALLM *  llm,
const char *  mmproj_path 
)

マルチモーダルプロジェクタファイルを読み込みます。

引数
llmLLMオブジェクトポインタ
mmproj_pathMMPROJ GGUFまたは自己完結ailia QNN projector(.qnn)のパス
戻り値
成功した場合は AILIA_LLM_STATUS_SUCCESS 、そうでなければエラーコードを返す。

マルチモーダル機能を使用するには、先にailiaLLMOpenModelFileでテキストモデルを読み込み、 その後でこの関数でマルチモーダルプロジェクタを読み込む必要があります。 画像入力(VLM)には画像対応、音声入力(ALM)には音声対応のmmproj GGUF、 または各入力用コンテキストを含む.qnnが必要です。

◆ ailiaLLMOpenMultimodalProjectorFileW()

AILIA_LLM_API int ailiaLLMOpenMultimodalProjectorFileW ( struct AILIALLM *  llm,
const wchar_t *  mmproj_path 
)

◆ ailiaLLMSetBackend()

AILIA_LLM_API int ailiaLLMSetBackend ( struct AILIALLM *  llm,
unsigned int  backend_idx 
)

モデルを開く前に、このインスタンスが使用するバックエンドを選択します。

引数
llmLLMインスタンス
backend_idxailiaLLMGetBackendCount/Nameで列挙したデバイスのインデックス
戻り値
成功時はAILIA_LLM_STATUS_SUCCESS。モデルを開いた後はAILIA_LLM_STATUS_INVALID_STATE。

未指定の場合はモデル形式から自動選択します。HTP (QNN)は.qnn専用です。CPU/GPUを明示選択した場合は.qnnを開けません。切り替えるには新しいインスタンスでモデルを開き直してください。

◆ ailiaLLMSetMultimodalPrompt()

AILIA_LLM_API int ailiaLLMSetMultimodalPrompt ( struct AILIALLM *  llm,
const AILIALLMMultimodalChatMessage *  message,
unsigned int  message_cnt 
)

マルチモーダルプロンプトを設定します。

引数
llmLLMオブジェクトポインタ
messageマルチモーダルメッセージの配列
message_cntメッセージの数
戻り値
成功した場合は AILIA_LLM_STATUS_SUCCESS 、そうでなければエラーコードを返す。

マルチモーダル対応のプロンプトを設定します。メッセージのcontentに<media>プレースホルダーを含め、 対応するメディアデータをmedia_dataに設定してください。 例: "この画像について説明してください: <__media__>" messageの内容は内部でコピーされるため、呼び出し後に開放することができます。 画像はファイルパス、エンコード済みバッファ(JPG、PNG等)、またはRaw RGBデータから読み込み可能です。 音声はWAV/MP3/FLACのファイルパスまたはエンコード済みバッファから読み込み可能です。 KVキャッシュの再利用では、ファイル入力とバッファ入力は内容のハッシュで同一性を判定します。 エンコーダー出力は現在のプロンプトに含まれるメディアの分だけ保持し、履歴から外れた分は解放します。 デコード済みの画像・音声は設定処理の終了時に解放します。 メディアを含まないプロンプトへの切り替えが成功すると、メディアのキャッシュを解放します。

◆ ailiaLLMSetNumThreads()

AILIA_LLM_API int ailiaLLMSetNumThreads ( struct AILIALLM *  llm,
unsigned int  n_threads 
)

モデルを開く前にCPUスレッド数を設定します。

引数
llmLLMインスタンス
n_threadsスレッド数(0は自動設定)。
戻り値
成功時はAILIA_LLM_STATUS_SUCCESS。モデルを開いた後はAILIA_LLM_STATUS_INVALID_STATE。

未指定の場合も0として扱います。Androidでは高効率コア(高性能側のbig/prime)の数を使用します。 取得できない場合は既存のコア数判定を使用します。本体のDecode/Prefill、assistant、VLM/ALMのCPU推論スレッド数に同じ値を使用します。

◆ ailiaLLMSetPrompt()

AILIA_LLM_API int ailiaLLMSetPrompt ( struct AILIALLM *  llm,
const AILIALLMChatMessage *  message,
unsigned int  message_cnt 
)

プロンプトを設定します。

引数
llmLLMオブジェクトポインタへのポインタ
messageメッセージの配列
message_cntメッセージの数
戻り値
成功した場合は AILIA_LLM_STATUS_SUCCESS 、そうでなければエラーコードを返す。

LLMに問い合わせるプロンプトを設定します。 ChatHistoryもmessageに含めてください。 ツール設定中はINVALID_STATEを返します。最初のuserメッセージからailiaLLMSetPromptJsonを使用してください。 ailiaLLMSetToolsでツールを解除すると本APIを再び使用できます。 messageの内容は内部でコピーされるため、呼び出し後に開放することができます。

◆ ailiaLLMSetPromptJson()

AILIA_LLM_API int ailiaLLMSetPromptJson ( struct AILIALLM *  llm,
const char *  messages_json 
)

構造化されたJSON会話履歴からプロンプトを設定します。

引数
llmLLMオブジェクトポインタ
messages_jsonUTF-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で生成します。

戻り値
成功時SUCCESS。不正なJSON・型・ID対応・引数はINVALID_ARGUMENT。 モデル未読込の場合はINVALID_STATE。 その他の生成準備エラーはailiaLLMSetPromptと同じです。

◆ ailiaLLMSetSamplingParams()

AILIA_LLM_API int ailiaLLMSetSamplingParams ( struct AILIALLM *  llm,
unsigned int  top_k,
float  top_p,
float  temp,
unsigned int  dist 
)

サンプリングのパラメータを設定します。

引数
llmLLMオブジェクトポインタへのポインタ
top_kサンプリングする確率値の上位個数、デフォルト40
top_pサンプリングする確率値の範囲、デフォルト0.9(0.9〜1.0)
temp温度パラメータ、デフォルト0.4
distシード、デフォルト1234
戻り値
成功した場合は AILIA_LLM_STATUS_SUCCESS 、そうでなければエラーコードを返す。

LLMのサンプリングの設定を行います。ailiaLLMSetPromptの前に実行する必要があります。

◆ ailiaLLMSetThinking()

AILIA_LLM_API int ailiaLLMSetThinking ( struct AILIALLM *  llm,
unsigned int  enable 
)

Thinking(推論過程の出力)を有効または無効にします。

引数
llmLLMオブジェクトポインタへのポインタ
enable0で無効、0以外で有効(デフォルト:無効)
戻り値
成功した場合は AILIA_LLM_STATUS_SUCCESS 、そうでなければエラーコードを返す。

Thinkingモデル(Gemma4等)の推論過程の出力を制御します。ailiaLLMSetPromptの前に実行する必要があります。

◆ ailiaLLMSetTools()

AILIA_LLM_API int ailiaLLMSetTools ( struct AILIALLM *  llm,
const char *  tools_json 
)

OpenAI互換のツール定義JSON配列を設定します。NULL/空文字列/空配列で解除します。

引数
llmLLMオブジェクト
tools_jsonUTF-8のツール定義

tools設定中はSetPrompt/SetMultimodalPromptがINVALID_STATEを返します。 最初のuser入力からSetPromptJsonを使用し、Generateで生成後、GetResponseJsonでassistant JSONを取得します。 deltaはプレビュー用です。アプリ側で連結する必要はありません。結果はtool_call_idで返します。 設定変更後は新しいプロンプトを設定してください。不正な定義はINVALID_ARGUMENTです。