ailia_llm  1.4.0.0
ailia_llm.h
[詳解]
1 
15 #ifndef INCLUDED_AILIA_LLM
16 #define INCLUDED_AILIA_LLM
17 
18 #include <wchar.h>
19 
20 #if defined(_WIN64) || defined(_M_X64) || defined(__amd64__) || defined(__x86_64__) || defined(__APPLE__) || \
21  defined(__ANDROID__) || defined(ANDROID) || defined(__linux__) || defined(NN_NINTENDO_SDK)
22 #define AILIA_LLM_API
23 #else
24 #define AILIA_LLM_API __stdcall
25 #endif
26 
27 /****************************************************************
28  * ライブラリ状態定義
29  **/
30 
40 #define AILIA_LLM_STATUS_SUCCESS (0)
52 #define AILIA_LLM_STATUS_INVALID_ARGUMENT (-1)
64 #define AILIA_LLM_STATUS_ERROR_FILE_API (-2)
76 #define AILIA_LLM_STATUS_INVALID_VERSION (-3)
88 #define AILIA_LLM_STATUS_BROKEN (-4)
100 #define AILIA_LLM_STATUS_MEMORY_INSUFFICIENT (-5)
112 #define AILIA_LLM_STATUS_THREAD_ERROR (-6)
124 #define AILIA_LLM_STATUS_INVALID_STATE (-7)
136 #define AILIA_LLM_STATUS_CONTEXT_FULL (-8)
148 #define AILIA_LLM_STATUS_ERROR_BUFFER_API (-9)
162 #define AILIA_LLM_STATUS_UNIMPLEMENTED (-15)
174 #define AILIA_LLM_STATUS_OTHER_ERROR (-128)
175 
176 /****************************************************************
177  * チャットメッセージ
178  **/
179 
180 typedef struct _AILIALLMChatMessage {
184  const char *role;
188  const char *content;
190 
191 /****************************************************************
192  * マルチモーダル画像/音声データ
193  **/
194 
205 typedef struct _AILIALLMMediaData {
212  const char *media_type;
219  const char *file_path;
230  const unsigned char *data;
237  unsigned int data_size;
244  unsigned int width;
251  unsigned int height;
253 
264  const char *role;
268  const char *content;
276  unsigned int media_count;
278 
279 #ifdef __cplusplus
280 extern "C" {
281 #endif
282 
283 /****************************************************************
284  * LLMオブジェクトのインスタンス
285  **/
286 
287 struct AILIALLM;
288 
289 /****************************************************************
290  * LLM API
291  **/
292 
306 AILIA_LLM_API int ailiaLLMGetBackendCount(unsigned int* env_count);
307 
324 AILIA_LLM_API int ailiaLLMGetBackendName(const char** env, unsigned int env_idx);
325 
343 AILIA_LLM_API int ailiaLLMCreate(struct AILIALLM** llm);
344 
366 AILIA_LLM_API int ailiaLLMOpenModelFileA(struct AILIALLM* llm, const char *path, unsigned int n_ctx);
367 AILIA_LLM_API int ailiaLLMOpenModelFileW(struct AILIALLM* llm, const wchar_t *path, unsigned int n_ctx);
368 
384 AILIA_LLM_API int ailiaLLMGetContextSize(struct AILIALLM* llm, unsigned int *context_size);
385 
411 AILIA_LLM_API int ailiaLLMSetSamplingParams(struct AILIALLM* llm, unsigned int top_k, float top_p, float temp, unsigned int dist);
412 
438 AILIA_LLM_API int ailiaLLMSetPrompt(struct AILIALLM* llm, const AILIALLMChatMessage * message, unsigned int message_cnt);
439 
463 AILIA_LLM_API int ailiaLLMGenerate(struct AILIALLM* llm, unsigned int *done);
464 
480 AILIA_LLM_API int ailiaLLMGetDeltaTextSize(struct AILIALLM* llm, unsigned int *buf_size);
481 
503 AILIA_LLM_API int ailiaLLMGetDeltaText(struct AILIALLM* llm, char * text, unsigned int buf_size);
504 
522 AILIA_LLM_API int ailiaLLMGetTokenCount(struct AILIALLM* llm, unsigned int *cnt, const char* text);
523 
543 AILIA_LLM_API int ailiaLLMGetPromptTokenCount(struct AILIALLM* llm, unsigned int *cnt);
544 
564 AILIA_LLM_API int ailiaLLMGetGeneratedTokenCount(struct AILIALLM* llm, unsigned int *cnt);
565 
566 /****************************************************************
567  * マルチモーダル LLM API
568  **/
569 
591 AILIA_LLM_API int ailiaLLMOpenMultimodalProjectorFileA(struct AILIALLM* llm, const char *mmproj_path);
592 AILIA_LLM_API int ailiaLLMOpenMultimodalProjectorFileW(struct AILIALLM* llm, const wchar_t *mmproj_path);
593 
615 AILIA_LLM_API int ailiaLLMGetMultimodalCapabilities(struct AILIALLM* llm, unsigned int *vision_support, unsigned int *audio_support);
616 
646 AILIA_LLM_API int ailiaLLMSetMultimodalPrompt(struct AILIALLM* llm, const AILIALLMMultimodalChatMessage * message, unsigned int message_cnt);
647 
657 AILIA_LLM_API void ailiaLLMDestroy(struct AILIALLM* llm);
658 
659 #ifdef __cplusplus
660 }
661 #endif
662 
663 #endif // INCLUDED_AILIA_LLM
AILIA_LLM_API int ailiaLLMSetPrompt(struct AILIALLM *llm, const AILIALLMChatMessage *message, unsigned int message_cnt)
プロンプトを設定します。
AILIA_LLM_API int ailiaLLMGetDeltaText(struct AILIALLM *llm, char *text, unsigned int buf_size)
テキストを取得します。
#define AILIA_LLM_API
Definition: ailia_llm.h:24
AILIA_LLM_API int ailiaLLMOpenMultimodalProjectorFileW(struct AILIALLM *llm, const wchar_t *mmproj_path)
struct _AILIALLMChatMessage AILIALLMChatMessage
AILIA_LLM_API int ailiaLLMGetDeltaTextSize(struct AILIALLM *llm, unsigned int *buf_size)
テキストの長さを取得します。(NULL文字含む)
AILIA_LLM_API int ailiaLLMGenerate(struct AILIALLM *llm, unsigned int *done)
生成を行います。
AILIA_LLM_API int ailiaLLMGetMultimodalCapabilities(struct AILIALLM *llm, unsigned int *vision_support, unsigned int *audio_support)
マルチモーダル機能がサポートされているかを確認します。
AILIA_LLM_API int ailiaLLMOpenModelFileW(struct AILIALLM *llm, const wchar_t *path, unsigned int n_ctx)
AILIA_LLM_API int ailiaLLMSetMultimodalPrompt(struct AILIALLM *llm, const AILIALLMMultimodalChatMessage *message, unsigned int message_cnt)
マルチモーダルプロンプトを設定します。
AILIA_LLM_API int ailiaLLMGetTokenCount(struct AILIALLM *llm, unsigned int *cnt, const char *text)
トークンの数を取得します。
AILIA_LLM_API int ailiaLLMGetBackendName(const char **env, unsigned int env_idx)
計算環境の一覧を取得します
AILIA_LLM_API int ailiaLLMOpenModelFileA(struct AILIALLM *llm, const char *path, unsigned int n_ctx)
モデルファイルを読み込みます。
AILIA_LLM_API int ailiaLLMCreate(struct AILIALLM **llm)
LLMオブジェクトを作成します。
AILIA_LLM_API void ailiaLLMDestroy(struct AILIALLM *llm)
LLMオブジェクトを破棄します。
AILIA_LLM_API int ailiaLLMSetSamplingParams(struct AILIALLM *llm, unsigned int top_k, float top_p, float temp, unsigned int dist)
サンプリングのパラメータを設定します。
struct _AILIALLMMediaData AILIALLMMediaData
マルチモーダル用のメディアデータ構造体。オーディオは現在未サポートで、将来的な実装のために予約されています。 画像はファイルパス、エンコード済みバッファ(JPG、PNG等)、またはRaw RGBデータか...
struct _AILIALLMMultimodalChatMessage AILIALLMMultimodalChatMessage
マルチモーダル対応チャットメッセージ
AILIA_LLM_API int ailiaLLMGetGeneratedTokenCount(struct AILIALLM *llm, unsigned int *cnt)
生成したトークンの数を取得します。
AILIA_LLM_API int ailiaLLMGetContextSize(struct AILIALLM *llm, unsigned int *context_size)
コンテキストの長さを取得します。
AILIA_LLM_API int ailiaLLMGetPromptTokenCount(struct AILIALLM *llm, unsigned int *cnt)
プロンプトトークンの数を取得します。
AILIA_LLM_API int ailiaLLMOpenMultimodalProjectorFileA(struct AILIALLM *llm, const char *mmproj_path)
マルチモーダルプロジェクタファイルを読み込みます。
AILIA_LLM_API int ailiaLLMGetBackendCount(unsigned int *env_count)
利用可能な計算環境(CPU, GPU)の数を取得します
Definition: ailia_llm.h:180
const char * content
Represent the content of the message.
Definition: ailia_llm.h:188
const char * role
Represent the role. (system, user, assistant)
Definition: ailia_llm.h:184
マルチモーダル用のメディアデータ構造体。オーディオは現在未サポートで、将来的な実装のために予約されています。 画像はファイルパス、エンコード済みバッファ(JPG、PNG等)、またはRaw RGBデータか...
Definition: ailia_llm.h:205
unsigned int data_size
バッファのサイズ(dataパラメータと共に使用)
Definition: ailia_llm.h:237
const char * file_path
メディアファイルへのパス(UTF-8)。dataが指定されている場合は無視されます。
Definition: ailia_llm.h:219
const char * media_type
メディアタイプ(image, audio)。"audio"は将来の実装のために予約されており、現在はサポートされていません。
Definition: ailia_llm.h:212
unsigned int width
画像の幅(ピクセル)。Raw RGBデータの場合のみ指定。エンコード済みバッファの場合は0を指定。
Definition: ailia_llm.h:244
unsigned int height
画像の高さ(ピクセル)。Raw RGBデータの場合のみ指定。エンコード済みバッファの場合は0を指定。
Definition: ailia_llm.h:251
const unsigned char * data
オプション:バッファからの画像データ(file_pathの代替)。 width/heightが0の場合はエンコード済みファイルバッファ(JPG、PNG等)として扱われます。 width/heightが指...
Definition: ailia_llm.h:230
マルチモーダル対応チャットメッセージ
Definition: ailia_llm.h:260
const AILIALLMMediaData * media_data
Array of media data (images, audio) referenced by <media> markers
Definition: ailia_llm.h:272
const char * role
Represent the role. (system, user, assistant)
Definition: ailia_llm.h:264
unsigned int media_count
Number of media items in media_data array
Definition: ailia_llm.h:276
const char * content
Represent the content of the message. Use <media> placeholder for media.
Definition: ailia_llm.h:268