diff options
| author | Aldrik Ramaekers <aldrikboy@gmail.com> | 2025-10-17 19:02:21 +0200 |
|---|---|---|
| committer | Aldrik Ramaekers <aldrikboy@gmail.com> | 2025-10-17 19:02:21 +0200 |
| commit | a8799cfee2de8ac53cc07c571c56ae5d9c98cbbd (patch) | |
| tree | bfbff345e11ce8d75b7a86a611367bdc63c6dcfd /src/importer.cpp | |
| parent | 18b9e47b88ab483b8f6fa0b133519546846fbb5e (diff) | |
model selection for ai service
Diffstat (limited to 'src/importer.cpp')
| -rw-r--r-- | src/importer.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/importer.cpp b/src/importer.cpp index 23960b1..e40de5b 100644 --- a/src/importer.cpp +++ b/src/importer.cpp @@ -160,6 +160,50 @@ importer::invoice_request* importer::ai_document_to_invoice(char* file_path) return result; } +static int _ai_get_available_models_t(void* arg) +{ + importer::model_list_request* request = (importer::model_list_request*)arg; + importer::ai_provider_impl impl = importer::get_ai_provider_implementation(request->service); + + if (!impl.get_available_models) { + request->status = importer::status::IMPORT_DONE; + request->error = I_ERR_UNIMPLEMENTED; + return 0; + } + + request->status = importer::status::IMPORT_WAITING_FOR_RESPONSE; + + if (!impl.get_available_models(request)) { + request->status = importer::status::IMPORT_DONE; + request->error = I_ERR_FAILED_QUERY; + return 0; + } + + request->status = importer::status::IMPORT_DONE; + + return 0; +} + +importer::model_list_request* importer::ai_get_available_models(ai_provider service) +{ + importer::model_list_request* result = (importer::model_list_request*)memops::alloc(sizeof(importer::model_list_request)); + result->started_at = time(NULL); + result->error = I_ERR_SUCCESS; + result->status = importer::status::IMPORT_STARTING; + result->result_count = 0; + result->service = service; + memset(result->result, 0, sizeof(result->result)); + + thrd_t thr; + if (thrd_create(&thr, _ai_get_available_models_t, result) != thrd_success) { + result->status = importer::status::IMPORT_DONE; + result->error = I_ERR_FAILED_QUERY; + return 0; + } + + return result; +} + const char* importer::status_to_string(importer::status status) { switch(status) |
