@@ -45,8 +45,12 @@ QString extractFilePathFromRequest(const QJsonObject &request)
45
45
return QUrl (uri).toLocalFile ();
46
46
}
47
47
48
- LLMClientInterface::LLMClientInterface ()
48
+ LLMClientInterface::LLMClientInterface (
49
+ const Settings::GeneralSettings &generalSettings,
50
+ const Settings::CodeCompletionSettings &completeSettings)
49
51
: m_requestHandler(this )
52
+ , m_generalSettings(generalSettings)
53
+ , m_completeSettings(completeSettings)
50
54
{
51
55
connect (
52
56
&m_requestHandler,
@@ -158,16 +162,15 @@ void LLMClientInterface::handleExit(const QJsonObject &request)
158
162
void LLMClientInterface::handleCompletion (const QJsonObject &request)
159
163
{
160
164
auto updatedContext = prepareContext (request);
161
- auto &completeSettings = Settings::codeCompletionSettings ();
162
- auto &generalSettings = Settings::generalSettings ();
163
165
164
- bool isPreset1Active = Context::ContextManager::isSpecifyCompletion (request, generalSettings );
166
+ bool isPreset1Active = Context::ContextManager::isSpecifyCompletion (request, m_generalSettings );
165
167
166
- const auto providerName = !isPreset1Active ? generalSettings.ccProvider ()
167
- : generalSettings.ccPreset1Provider ();
168
- const auto modelName = !isPreset1Active ? generalSettings.ccModel ()
169
- : generalSettings.ccPreset1Model ();
170
- const auto url = !isPreset1Active ? generalSettings.ccUrl () : generalSettings.ccPreset1Url ();
168
+ const auto providerName = !isPreset1Active ? m_generalSettings.ccProvider ()
169
+ : m_generalSettings.ccPreset1Provider ();
170
+ const auto modelName = !isPreset1Active ? m_generalSettings.ccModel ()
171
+ : m_generalSettings.ccPreset1Model ();
172
+ const auto url = !isPreset1Active ? m_generalSettings.ccUrl ()
173
+ : m_generalSettings.ccPreset1Url ();
171
174
172
175
const auto provider = LLMCore::ProvidersManager::instance ().getProviderByName (providerName);
173
176
@@ -176,8 +179,8 @@ void LLMClientInterface::handleCompletion(const QJsonObject &request)
176
179
return ;
177
180
}
178
181
179
- auto templateName = !isPreset1Active ? generalSettings .ccTemplate ()
180
- : generalSettings .ccPreset1Template ();
182
+ auto templateName = !isPreset1Active ? m_generalSettings .ccTemplate ()
183
+ : m_generalSettings .ccPreset1Template ();
181
184
182
185
auto promptTemplate = LLMCore::PromptTemplateManager::instance ().getFimTemplateByName (
183
186
templateName);
@@ -194,39 +197,39 @@ void LLMClientInterface::handleCompletion(const QJsonObject &request)
194
197
config.promptTemplate = promptTemplate;
195
198
// TODO refactor networking
196
199
if (provider->providerID () == LLMCore::ProviderID::GoogleAI) {
197
- QString stream = completeSettings .stream () ? QString{" streamGenerateContent?alt=sse" }
198
- : QString{" generateContent?" };
200
+ QString stream = m_completeSettings .stream () ? QString{" streamGenerateContent?alt=sse" }
201
+ : QString{" generateContent?" };
199
202
config.url = QUrl (QString (" %1/models/%2:%3" ).arg (url, modelName, stream));
200
203
} else {
201
204
config.url = QUrl (QString (" %1%2" ).arg (
202
205
url,
203
206
promptTemplate->type () == LLMCore::TemplateType::FIM ? provider->completionEndpoint ()
204
207
: provider->chatEndpoint ()));
205
- config.providerRequest = {{" model" , modelName}, {" stream" , completeSettings .stream ()}};
208
+ config.providerRequest = {{" model" , modelName}, {" stream" , m_completeSettings .stream ()}};
206
209
}
207
210
config.apiKey = provider->apiKey ();
208
- config.multiLineCompletion = completeSettings .multiLineCompletion ();
211
+ config.multiLineCompletion = m_completeSettings .multiLineCompletion ();
209
212
210
213
const auto stopWords = QJsonArray::fromStringList (config.promptTemplate ->stopWords ());
211
214
if (!stopWords.isEmpty ())
212
215
config.providerRequest [" stop" ] = stopWords;
213
216
214
217
QString systemPrompt;
215
- if (completeSettings .useSystemPrompt ())
218
+ if (m_completeSettings .useSystemPrompt ())
216
219
systemPrompt.append (
217
- completeSettings .useUserMessageTemplateForCC ()
220
+ m_completeSettings .useUserMessageTemplateForCC ()
218
221
&& promptTemplate->type () == LLMCore::TemplateType::Chat
219
- ? completeSettings .systemPromptForNonFimModels ()
220
- : completeSettings .systemPrompt ());
222
+ ? m_completeSettings .systemPromptForNonFimModels ()
223
+ : m_completeSettings .systemPrompt ());
221
224
if (updatedContext.fileContext .has_value ())
222
225
systemPrompt.append (updatedContext.fileContext .value ());
223
226
224
227
updatedContext.systemPrompt = systemPrompt;
225
228
226
229
if (promptTemplate->type () == LLMCore::TemplateType::Chat) {
227
230
QString userMessage;
228
- if (completeSettings .useUserMessageTemplateForCC ()) {
229
- userMessage = completeSettings .processMessageToFIM (
231
+ if (m_completeSettings .useUserMessageTemplateForCC ()) {
232
+ userMessage = m_completeSettings .processMessageToFIM (
230
233
updatedContext.prefix .value_or (" " ), updatedContext.suffix .value_or (" " ));
231
234
} else {
232
235
userMessage = updatedContext.prefix .value_or (" " ) + updatedContext.suffix .value_or (" " );
@@ -274,17 +277,16 @@ LLMCore::ContextData LLMClientInterface::prepareContext(
274
277
275
278
Context::DocumentContextReader reader (
276
279
textDocument->document (), textDocument->mimeType (), textDocument->filePath ().toString ());
277
- return reader.prepareContext (lineNumber, cursorPosition, Settings::codeCompletionSettings () );
280
+ return reader.prepareContext (lineNumber, cursorPosition, m_completeSettings );
278
281
}
279
282
280
283
void LLMClientInterface::sendCompletionToClient (
281
284
const QString &completion, const QJsonObject &request, bool isComplete)
282
285
{
283
- auto &generalSettings = Settings::generalSettings ();
284
- bool isPreset1Active = Context::ContextManager::isSpecifyCompletion (request, generalSettings);
286
+ bool isPreset1Active = Context::ContextManager::isSpecifyCompletion (request, m_generalSettings);
285
287
286
- auto templateName = !isPreset1Active ? generalSettings .ccTemplate ()
287
- : generalSettings .ccPreset1Template ();
288
+ auto templateName = !isPreset1Active ? m_generalSettings .ccTemplate ()
289
+ : m_generalSettings .ccPreset1Template ();
288
290
289
291
auto promptTemplate = LLMCore::PromptTemplateManager::instance ().getFimTemplateByName (
290
292
templateName);
@@ -303,7 +305,7 @@ void LLMClientInterface::sendCompletionToClient(
303
305
304
306
QString processedCompletion
305
307
= promptTemplate->type () == LLMCore::TemplateType::Chat
306
- && Settings::codeCompletionSettings () .smartProcessInstuctText ()
308
+ && m_completeSettings .smartProcessInstuctText ()
307
309
? CodeHandler::processText (completion, extractFilePathFromRequest (request))
308
310
: completion;
309
311
0 commit comments