Skip to content

AidLLM C++ 接口文档

💡注意

使用 AidGen-SDK C++ 开发需要了解如下基本事项:

  • 编译时需要包含头文件,存放路径 /usr/local/include/aidlux/aidgen/aidllm.hpp
  • 链接时需要指定库文件,存放路径 /usr/local/lib/libaidgen.so

推理后端类型.enum LLmBackendType

对于 AidllmSDK 而言,支持使用不同的推理后端框架来实现大模型的推理任务,涉及到的推理后端如下所示。

成员变量名类型描述
TYPE_DEFAULTuint8_t0未知后端类型
TYPE_GENIEuint8_t1Genie推理后端

推理任务状态.enum LLMSentenceState

Aidllm 在推理任务的完成过程中,针对一次会话,可能会存在各种不同阶段的状态,开发者可以根据这些状态码来了解当前推理任务的运行情况。

成员变量名类型描述
BEGINuint8_t0会话开始部分
CONTINUEuint8_t1会话持续推理中间内容
ENDuint8_t2会话结尾部分
COMPLETEuint8_t3当前会话成功完结
ABORTuint8_t4当前会话被动终止
ERRORuint8_t5当前会话推理错误

日志级别.enum LogLevel

AidllmSDK 提供有设置日志的接口(后续会介绍),需要提供给接口当前使用哪个日志级别,所以就需要使用此日志级别枚举。

成员变量名类型描述
INFOuint8_t0消息
WARNINGuint8_t1警告
ERRORuint8_t2错误
FATALuint8_t3致命错误

推理回调函数数据类型.struct LLMCallbackData

Aidllm 在推理任务时,会使用开发者提供的回调函数,此数据类型就是传递给该回调函数的参数,开发者可以在自定义的回调函数中使用推理的结果数据。

成员变量列表

Config 对象用于设置运行时的配置信息,其中就包含如下的这些参数:

成员变量 state
类型 enum LLMSentenceState
默认值
描述 当前推理会话的状态码
成员变量 text
类型 std::string
默认值
描述 推理任务的结果字符/特殊状态码对应的提示消息

运行上下文类.class LLMContext

Aidllm 在运行过程中,可能需要设置一些配置信息,同时运行时的相关数据也需要传递,使用此运行上下文类型的对象来完成数据流转。

创建实例对象.create_instance()

想要设置运行时的上下文信息,当然就需要先有配置实例对象,此函数用于创建 LLMContext 类型的实例对象。

API create_instance
描述 用于构造 LLMContext 类的实例对象
参数 config_file:初始配置文件,其中可以配置后端类型、模型文件名称等关键信息
返回值 如果为 nullptr 值,说明函数构建对象失败;否则就是 LLMContext 对象的指针
cpp
// 创建配置实例对象,返回值为空则报错
std::unique_ptr<LLMContext> llm_context_ptr = LLMContext::create_instance("qwen2-7b/qwen2-7b.json");
if(llm_context_ptr == nullptr){
    printf("Test sample: LLMContext create_instance failed.\n");
    return EXIT_FAILURE;
}

成员变量列表

Config 对象用于设置运行时的配置信息,其中就包含如下的这些参数:

成员变量 config_file
类型 std::string
默认值
描述 初始配置文件,创建对象时传入的配置文件参数
成员变量 backend_type
类型 LLmBackendType
默认值 LLmBackendType.TYPE_DEFAULT
描述 在配置文件中会要求开发者指定推理后端。初始化操作解析配置文件完成之后,会覆写此字段,标识开发者指定的后端类型
成员变量 model_file_vec
类型 std::vector<std::string>
默认值
描述 在配置文件中会要求开发者指定模型文件。初始化操作解析配置文件完成之后,会覆写此字段,标识开发者指定的模型文件
成员变量 config_overwrite_options
类型 std::string
默认值
描述 通过设置此字段,可以指定推理过程中的某些关键参数,从而影响推理速度、推理结果等
成员变量 android_tmp_directory
类型 std::string
默认值
描述 此字段只在 Android 平台下有效。通过设置此字段,可以指定系统用户拥有合法权限的目录,以供推理程序借用

解释器类.class LLMInterpreter

LLMInterpreter 类型的对象实例是执行推理操作的主体,用于执行具体的推理过程。

创建实例对象.create_instance()

想要执行推理相关的操作,推理解释器肯定必不可少,此函数就用于构建推理解释器的实例对象。

API create_instance
描述 利用 LLMContext 对象所管理的各种数据,构造 LLMInterpreter 类型的对象
参数 llm_context:LLMContext 实例对象的指针
返回值 为 nullptr 值则说明函数构建对象失败;否则就是 LLMInterpreter 对象的指针
cpp
 // 使用 LLMContext 对象指针来创建解释器对象,返回值为空则报错
std::unique_ptr<LLMInterpreter> llm_interpreter_ptr = LLMInterpreter::create_instance(llm_context_ptr);
if(llm_interpreter_ptr == nullptr){
    printf("Test sample: LLMInterpreter create_instance failed.\n");
    return EXIT_FAILURE;
}

初始化操作.initialize()

解释器对象创建之后,需要执行一些初始化操作,比如环境检查、资源构建等。

API initialize
描述 完成推理所需的相关初始化工作
参数 void
返回值 0 值则说明初始化操作执行成功,否则非 0 值就说明执行失败
cpp
// 解释器初始化,返回值非0则报错
int init_result = llm_interpreter_ptr->initialize();
if(init_result != EXIT_SUCCESS){
    printf("Test sample: aidllm initialize failed.\n");
    return EXIT_FAILURE;
}

会话推理操作.run()

成功完成初始化操作之后,就可以跟大模型执行对话操作,开发者提供自定义的回调函数,用于处理会话过程中持续的推理结果。

API run
描述 执行一次会话推理
参数 prompt:提示词字符串
cb:开发者提供的自定义回调函数,用于处理会话过程中持续的推理结果
user_data:用户数据的指针,方便在自定义回调函数中使用这些数据
返回值 0 值则说明执行释放操作成功,否则非 0 值就说明执行失败

会话终止操作.abort()

用户可能在某些情况下,会想要打断当前正在执行推理的会话,此函数就用于实现推理终止。

API abort
描述 终止当前正在运行推理的会话
参数 void
返回值 0 值则说明初始化操作执行成功,否则非 0 值就说明执行失败
cpp
// 解释器初始化,返回值非0则报错
int init_result = llm_interpreter_ptr->initialize();
if(init_result != EXIT_SUCCESS){
    printf("Test sample: aidllm initialize failed.\n");
    return EXIT_FAILURE;
}

完结释放操作.finalize()

前面提到解释器对象需要执行 initialize() 初始化相关操作,相应的,解释器也会需要执行一些释放操作,将之前创建的资源予以销毁等。

API finalize
描述 完成必要的反初始化释放操作
参数 void
返回值 0 值则说明执行释放操作成功,否则非 0 值就说明执行失败
cpp
// 执行解释器反初始化过程,返回值非0则报错
int fin_result = llm_interpreter_ptr->finalize();
if(fin_result != EXIT_SUCCESS){
    printf("Test : aidllm finalize failed.\n");
    return EXIT_FAILURE;
}