MCPcopy Create free account
hub / github.com/Palm1r/QodeAssist / handleCompletion

Method handleCompletion

LLMClientInterface.cpp:229–364  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

227}
228
229void LLMClientInterface::handleCompletion(const QJsonObject &request)
230{
231 auto filePath = Context::extractFilePathFromRequest(request);
232 auto documentInfo = m_documentReader.readDocument(filePath);
233 if (!documentInfo.document) {
234 QString error = QString("Document is not available: %1").arg(filePath);
235 LOG_MESSAGE("Error: " + error);
236 sendErrorResponse(request, error);
237 return;
238 }
239
240 auto updatedContext = prepareContext(request, documentInfo);
241
242 bool isPreset1Active = m_contextManager->isSpecifyCompletion(documentInfo);
243
244 const auto providerName = !isPreset1Active ? m_generalSettings.ccProvider()
245 : m_generalSettings.ccPreset1Provider();
246 const auto modelName = !isPreset1Active ? m_generalSettings.ccModel()
247 : m_generalSettings.ccPreset1Model();
248 const auto url = !isPreset1Active ? m_generalSettings.ccUrl()
249 : m_generalSettings.ccPreset1Url();
250
251 const auto provider = m_providerRegistry.getProviderByName(providerName);
252
253 if (!provider) {
254 QString error = QString("No provider found with name: %1").arg(providerName);
255 LOG_MESSAGE(error);
256 sendErrorResponse(request, error);
257 return;
258 }
259
260 auto templateName = !isPreset1Active ? m_generalSettings.ccTemplate()
261 : m_generalSettings.ccPreset1Template();
262
263 auto promptTemplate = m_promptProvider->getTemplateByName(templateName);
264
265 if (!promptTemplate) {
266 QString error = QString("No template found with name: %1").arg(templateName);
267 LOG_MESSAGE(error);
268 sendErrorResponse(request, error);
269 return;
270 }
271
272 QJsonObject payload{{"model", modelName}, {"stream", true}};
273
274 const auto stopWords = QJsonArray::fromStringList(promptTemplate->stopWords());
275 if (!stopWords.isEmpty())
276 payload["stop"] = stopWords;
277
278 QString systemPrompt;
279 if (m_completeSettings.useSystemPrompt())
280 systemPrompt.append(
281 m_completeSettings.useUserMessageTemplateForCC()
282 && promptTemplate->type() == PluginLLMCore::TemplateType::Chat
283 ? m_completeSettings.systemPromptForNonFimModels()
284 : m_completeSettings.systemPrompt());
285
286 auto project = PluginLLMCore::RulesLoader::getActiveProject();

Callers

nothing calls this directly

Calls 15

readDocumentMethod · 0.80
isSpecifyCompletionMethod · 0.80
getProviderByNameMethod · 0.80
appendMethod · 0.80
systemPromptMethod · 0.80
valueMethod · 0.80
openedFilesMethod · 0.80
openedFilesContextMethod · 0.80
processMessageToFIMMethod · 0.80
startTimeMeasurementMethod · 0.80
getTemplateByNameMethod · 0.45

Tested by

no test coverage detected