MCPcopy Create free account
hub / github.com/Serial-Studio/Serial-Studio / refreshModels

Method refreshModels

app/src/AI/Providers/LocalProvider.cpp:283–335  ·  view source on GitHub ↗

* @brief Issues a GET to /v1/models and refreshes the cached model list. */

Source from the content-addressed store, hash-verified

281 * @brief Issues a GET to /v1/models and refreshes the cached model list.
282 */
283void AI::LocalProvider::refreshModels()
284{
285 QNetworkRequest req((QUrl(modelsEndpoint())));
286 req.setTransferTimeout(5 * 1000);
287 req.setRawHeader("accept", "application/json");
288
289 qCDebug(serialStudioAI) << "GET" << modelsEndpoint();
290
291 auto* reply = m_nam.get(req);
292 connect(reply, &QNetworkReply::finished, this, [this, reply]() {
293 reply->deleteLater();
294
295 if (reply->error() != QNetworkReply::NoError) {
296 const bool localActive =
297 static_cast<ProviderId>(AI::Assistant::instance().currentProvider()) == ProviderId::Local;
298 if (reply->error() == QNetworkReply::ConnectionRefusedError || !localActive)
299 qCDebug(serialStudioAI) << "Local model list query failed:" << reply->errorString();
300 else
301 qCInfo(serialStudioAI) << "Local model list query failed:" << reply->errorString();
302
303 return;
304 }
305
306 Misc::JsonValidator::Limits limits;
307 limits.maxFileSize = 256 * 1024;
308 const auto parsed = Misc::JsonValidator::parseAndValidate(reply->readAll(), limits);
309 if (!parsed.valid || !parsed.document.isObject()) {
310 qCInfo(serialStudioAI) << "Local model list: invalid JSON --" << parsed.errorMessage;
311 return;
312 }
313
314 QStringList ids;
315 const auto data = parsed.document.object().value(QStringLiteral("data")).toArray();
316 for (const auto& v : data) {
317 const auto id = v.toObject().value(QStringLiteral("id")).toString();
318 if (!id.isEmpty())
319 ids.append(id);
320 }
321
322 if (ids.isEmpty()) {
323 qCInfo(serialStudioAI) << "Local model list returned 0 entries; keeping cache";
324 return;
325 }
326
327 if (ids == m_models)
328 return;
329
330 m_models = ids;
331 persistCachedModels();
332 qCInfo(serialStudioAI) << "Local model list refreshed:" << ids.size() << "models";
333 Q_EMIT modelsChanged();
334 });
335}
336
337//--------------------------------------------------------------------------------------------------
338// sendMessage

Callers 1

refreshLocalModelsMethod · 0.80

Calls 9

errorMethod · 0.80
currentProviderMethod · 0.80
errorStringMethod · 0.80
isEmptyMethod · 0.80
QUrlClass · 0.70
getMethod · 0.45
valueMethod · 0.45
appendMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected