ailia_llm  1.5.1.0
ailia_llm.h
Go to the documentation of this file.
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)
165 #define AILIA_LLM_STATUS_PARSE_ERROR (-10)
179 #define AILIA_LLM_STATUS_UNIMPLEMENTED (-15)
191 #define AILIA_LLM_STATUS_OTHER_ERROR (-128)
192 
193 /****************************************************************
194  * チャットメッセージ
195  **/
196 
197 typedef struct _AILIALLMChatMessage {
202  const char *role;
207  const char *content;
209 
210 /****************************************************************
211  * マルチモーダル画像/音声データ
212  **/
213 
224 typedef struct _AILIALLMMediaData {
231  const char *media_type;
238  const char *file_path;
251  const unsigned char *data;
258  unsigned int data_size;
265  unsigned int width;
272  unsigned int height;
274 
286  const char *role;
290  const char *content;
298  unsigned int media_count;
300 
301 #ifdef __cplusplus
302 extern "C" {
303 #endif
304 
305 /****************************************************************
306  * LLMオブジェクトのインスタンス
307  **/
308 
309 struct AILIALLM;
310 
311 /****************************************************************
312  * LLM API
313  **/
314 
328 AILIA_LLM_API int ailiaLLMGetBackendCount(unsigned int* env_count);
329 
345 AILIA_LLM_API int ailiaLLMGetBackendName(const char** env, unsigned int env_idx);
346 
360 AILIA_LLM_API int ailiaLLMGetBackendDeviceName(const char** name, unsigned int env_idx);
361 
377 AILIA_LLM_API int ailiaLLMSetBackend(struct AILIALLM* llm, unsigned int backend_idx);
378 
396 AILIA_LLM_API int ailiaLLMSetNumThreads(struct AILIALLM* llm, unsigned int n_threads);
397 
419 AILIA_LLM_API int ailiaLLMCreate(struct AILIALLM** llm);
420 
448 AILIA_LLM_API int ailiaLLMOpenModelFileA(struct AILIALLM* llm, const char *path, unsigned int n_ctx);
449 AILIA_LLM_API int ailiaLLMOpenModelFileW(struct AILIALLM* llm, const wchar_t *path, unsigned int n_ctx);
450 
469 AILIA_LLM_API int ailiaLLMOpenMtpModelFileA(struct AILIALLM* llm, const char *path, unsigned int n_draft);
470 AILIA_LLM_API int ailiaLLMOpenMtpModelFileW(struct AILIALLM* llm, const wchar_t *path, unsigned int n_draft);
471 
472 
488 AILIA_LLM_API int ailiaLLMGetContextSize(struct AILIALLM* llm, unsigned int *context_size);
489 
515 AILIA_LLM_API int ailiaLLMSetSamplingParams(struct AILIALLM* llm, unsigned int top_k, float top_p, float temp, unsigned int dist);
516 
537 AILIA_LLM_API int ailiaLLMSetThinking(struct AILIALLM* llm, unsigned int enable);
538 
568 AILIA_LLM_API int ailiaLLMSetPrompt(struct AILIALLM* llm, const AILIALLMChatMessage * message, unsigned int message_cnt);
569 
593 AILIA_LLM_API int ailiaLLMGenerate(struct AILIALLM* llm, unsigned int *done);
594 
610 AILIA_LLM_API int ailiaLLMGetDeltaTextSize(struct AILIALLM* llm, unsigned int *buf_size);
611 
633 AILIA_LLM_API int ailiaLLMGetDeltaText(struct AILIALLM* llm, char * text, unsigned int buf_size);
634 
652 AILIA_LLM_API int ailiaLLMGetTokenCount(struct AILIALLM* llm, unsigned int *cnt, const char* text);
653 
673 AILIA_LLM_API int ailiaLLMGetPromptTokenCount(struct AILIALLM* llm, unsigned int *cnt);
674 
694 AILIA_LLM_API int ailiaLLMGetGeneratedTokenCount(struct AILIALLM* llm, unsigned int *cnt);
695 
713 AILIA_LLM_API void ailiaLLMDestroy(struct AILIALLM* llm);
714 
715 /****************************************************************
716  * マルチモーダル LLM API
717  **/
718 
745 AILIA_LLM_API int ailiaLLMOpenMultimodalProjectorFileA(struct AILIALLM* llm, const char *mmproj_path);
746 AILIA_LLM_API int ailiaLLMOpenMultimodalProjectorFileW(struct AILIALLM* llm, const wchar_t *mmproj_path);
747 
769 AILIA_LLM_API int ailiaLLMGetMultimodalCapabilities(struct AILIALLM* llm, unsigned int *vision_support, unsigned int *audio_support);
770 
811 AILIA_LLM_API int ailiaLLMSetMultimodalPrompt(struct AILIALLM* llm, const AILIALLMMultimodalChatMessage * message, unsigned int message_cnt);
812 
813 /****************************************************************
814  * TOOL USE API
815  **/
816 
835 AILIA_LLM_API int ailiaLLMSetTools(struct AILIALLM* llm, const char *tools_json);
836 
899 AILIA_LLM_API int ailiaLLMSetPromptJson(struct AILIALLM* llm, const char *messages_json);
900 
913 AILIA_LLM_API int ailiaLLMGetResponseJsonSize(struct AILIALLM* llm, unsigned int *buf_size);
914 
937 AILIA_LLM_API int ailiaLLMGetResponseJson(struct AILIALLM* llm, char *json, unsigned int buf_size);
938 
954 AILIA_LLM_API const char * ailiaLLMGetErrorDetail(struct AILIALLM * llm);
955 
956 /* QNN API */
957 
990 AILIA_LLM_API int ailiaLLMGetQNNModelName(const char** model_name);
991 
992 #ifdef __cplusplus
993 }
994 #endif
995 
996 #endif // INCLUDED_AILIA_LLM
AILIA_LLM_API int ailiaLLMSetPrompt(struct AILIALLM *llm, const AILIALLMChatMessage *message, unsigned int message_cnt)
Set the prompt.
AILIA_LLM_API int ailiaLLMGetResponseJsonSize(struct AILIALLM *llm, unsigned int *buf_size)
Gets the buffered assistant JSON size, including the terminating null.
AILIA_LLM_API int ailiaLLMSetBackend(struct AILIALLM *llm, unsigned int backend_idx)
Selects the backend for this instance before opening a model.
AILIA_LLM_API int ailiaLLMGetQNNModelName(const char **model_name)
Gets the QNN model name for the current device.
AILIA_LLM_API int ailiaLLMGetDeltaText(struct AILIALLM *llm, char *text, unsigned int buf_size)
Gets the decoded text.
AILIA_LLM_API int ailiaLLMGetBackendDeviceName(const char **name, unsigned int env_idx)
Gets the device name for a computational environment.
AILIA_LLM_API int ailiaLLMSetThinking(struct AILIALLM *llm, unsigned int enable)
Enable or disable thinking (reasoning output).
#define AILIA_LLM_API
Definition: ailia_llm.h:24
AILIA_LLM_API int ailiaLLMGetResponseJson(struct AILIALLM *llm, char *json, unsigned int buf_size)
Gets structured assistant JSON from output accumulated inside the SDK.
AILIA_LLM_API int ailiaLLMOpenMultimodalProjectorFileW(struct AILIALLM *llm, const wchar_t *mmproj_path)
AILIA_LLM_API int ailiaLLMSetPromptJson(struct AILIALLM *llm, const char *messages_json)
Sets a prompt from structured JSON conversation history.
struct _AILIALLMChatMessage AILIALLMChatMessage
AILIA_LLM_API int ailiaLLMGetDeltaTextSize(struct AILIALLM *llm, unsigned int *buf_size)
Gets the size of text. (Include null)
AILIA_LLM_API int ailiaLLMGenerate(struct AILIALLM *llm, unsigned int *done)
Perform generate.
AILIA_LLM_API int ailiaLLMGetMultimodalCapabilities(struct AILIALLM *llm, unsigned int *vision_support, unsigned int *audio_support)
Check if multimodal features are supported.
AILIA_LLM_API int ailiaLLMOpenModelFileW(struct AILIALLM *llm, const wchar_t *path, unsigned int n_ctx)
AILIA_LLM_API int ailiaLLMSetTools(struct AILIALLM *llm, const char *tools_json)
Sets OpenAI-compatible tool definitions. NULL, empty string or array clears tools.
AILIA_LLM_API int ailiaLLMSetMultimodalPrompt(struct AILIALLM *llm, const AILIALLMMultimodalChatMessage *message, unsigned int message_cnt)
Set multimodal prompt.
AILIA_LLM_API int ailiaLLMGetTokenCount(struct AILIALLM *llm, unsigned int *cnt, const char *text)
Gets the count of token.
AILIA_LLM_API int ailiaLLMGetBackendName(const char **env, unsigned int env_idx)
Gets the list of computational environments.
AILIA_LLM_API int ailiaLLMOpenModelFileA(struct AILIALLM *llm, const char *path, unsigned int n_ctx)
Open model file.
AILIA_LLM_API int ailiaLLMCreate(struct AILIALLM **llm)
Creates a LLM instance.
AILIA_LLM_API int ailiaLLMOpenMtpModelFileA(struct AILIALLM *llm, const char *path, unsigned int n_draft)
Open an MTP assistant and enable draft/target verification decoding.
AILIA_LLM_API void ailiaLLMDestroy(struct AILIALLM *llm)
It destroys the LLM instance.
AILIA_LLM_API int ailiaLLMSetSamplingParams(struct AILIALLM *llm, unsigned int top_k, float top_p, float temp, unsigned int dist)
Set the sampling parameter.
struct _AILIALLMMediaData AILIALLMMediaData
Image/audio data for multimodal processing. Audio requires an audio-capable projector....
AILIA_LLM_API int ailiaLLMOpenMtpModelFileW(struct AILIALLM *llm, const wchar_t *path, unsigned int n_draft)
struct _AILIALLMMultimodalChatMessage AILIALLMMultimodalChatMessage
Multimodal chat message with media attachments.
AILIA_LLM_API int ailiaLLMGetGeneratedTokenCount(struct AILIALLM *llm, unsigned int *cnt)
Gets the count of prompt token.
AILIA_LLM_API int ailiaLLMGetContextSize(struct AILIALLM *llm, unsigned int *context_size)
Gets the size of context.
AILIA_LLM_API int ailiaLLMGetPromptTokenCount(struct AILIALLM *llm, unsigned int *cnt)
Gets the count of prompt token.
AILIA_LLM_API int ailiaLLMOpenMultimodalProjectorFileA(struct AILIALLM *llm, const char *mmproj_path)
Load multimodal projector file.
AILIA_LLM_API const char * ailiaLLMGetErrorDetail(struct AILIALLM *llm)
Returns details of the last model-open, prompt-setup or generation error.
AILIA_LLM_API int ailiaLLMGetBackendCount(unsigned int *env_count)
Gets the number of available computational environments (CPU, GPU, HTP (QNN)).
AILIA_LLM_API int ailiaLLMSetNumThreads(struct AILIALLM *llm, unsigned int n_threads)
Sets the CPU thread count before opening the model.
Definition: ailia_llm.h:197
const char * content
Represent the content of the message. For role "tool" the content is the tool result,...
Definition: ailia_llm.h:207
const char * role
Represent the role. (system, user, assistant, tool) "tool" holds a tool result for tool use,...
Definition: ailia_llm.h:202
Image/audio data for multimodal processing. Audio requires an audio-capable projector....
Definition: ailia_llm.h:224
unsigned int data_size
Size of the buffer (used with data parameter)
Definition: ailia_llm.h:258
const char * file_path
Path to the media file (UTF-8). Ignored if data is provided.
Definition: ailia_llm.h:238
const char * media_type
Media type (image, audio). Audio requires an audio-capable mmproj.
Definition: ailia_llm.h:231
unsigned int width
Width for images (pixels). Only specify for raw RGB data. Set to 0 for encoded buffer.
Definition: ailia_llm.h:265
unsigned int height
Height for images (pixels). Only specify for raw RGB data. Set to 0 for encoded buffer.
Definition: ailia_llm.h:272
const unsigned char * data
Optional: Media data from buffer (alternative to file_path). If width/height are 0,...
Definition: ailia_llm.h:251
Multimodal chat message with media attachments.
Definition: ailia_llm.h:281
const AILIALLMMediaData * media_data
Array of media data (images, audio) referenced by <media> markers.
Definition: ailia_llm.h:294
const char * role
Represent the role. (system, user, assistant, tool) "tool" holds a tool result for tool use,...
Definition: ailia_llm.h:286
unsigned int media_count
Number of media items in media_data array.
Definition: ailia_llm.h:298
const char * content
Represent the content of the message. Use <media> placeholder for media.
Definition: ailia_llm.h:290