EN 中文
返回总览

LiteRtLm_Result

推理结果封装结构体。在回调函数中传递增量文本、完整 JSON 数据及引擎生成状态。

01. 内存有效性时域图 (关键契约)

sequenceDiagram participant DLL as Wrapper DLL Internal participant App as User Callback Function DLL->>App: 调用 LiteRtLmCallback(Result) Note over App: [指针 text_chunk 有效区] App->>App: 必须在此期间执行字符串拷贝 (strcpy/FString) App-->>DLL: 回调函数返回 (Exit Scope) Note over DLL: [指针指向的内存已释放/重用] Note right of App: 严禁在回调外访问 text_chunk!
Memory Contract Warning

text_chunkfull_json_chunk 指向的是 DLL 内部的环形缓冲区。一旦回调函数执行完毕并返回,这些内存地址可能会被立即重写。

02. 成员变量详解

成员变量 类型 职责说明
text_chunk const char* 增量文本片段。
仅包含本次生成的字符。用于流式打字机效果显示。
full_json_chunk const char* 完整响应 JSON。
包含 tool_calls, content, stats 等全量信息。建议在生成结束时解析此字段以获取结构化数据。
bIsDone int 终止标记。
1 表示推理完成(或已中断),0 表示仍在生成中。
tokens_per_sec float 瞬时生成速率。
每秒生成的 Token 数,用于实时 UI 性能监控。

03. 虚幻引擎 (UE5) 集成示例

void OnInferenceResult(LiteRtLm_Result Result, void* UserPtr) {
    // 1. 内存安全:立即转换为引擎安全类型 (深拷贝)
    FString ChunkString(UTF8_TO_TCHAR(Result.text_chunk));
    
    // 2. 调度到主线程 UI
    AsyncTask(ENamedThreads::GameThread, [ChunkString, bDone = Result.bIsDone]() {
        // 更新 UI 文本框...
        if (bDone) {
            UE_LOG(LogTemp, Log, TEXT("Generation Finished"));
        }
    });
}