Skip to content

Commit a3b151c

Browse files
committed
init step for cloud service
1 parent ebf9172 commit a3b151c

File tree

7 files changed

+90
-45
lines changed

7 files changed

+90
-45
lines changed

package.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,16 @@
146146
"type": "string",
147147
"default": "",
148148
"description": "The directory to use for storing user data associated with this extension. Set to an empty string, `os.homedir()` will be used."
149+
},
150+
"firecoder.cloud.endpoint": {
151+
"type": "string",
152+
"default": "",
153+
"description": ""
154+
},
155+
"firecoder.cloud.use": {
156+
"type": "boolean",
157+
"default": "false",
158+
"description": ""
149159
}
150160
}
151161
}

src/common/chat/index.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import { HistoryMessage, getPromptChat } from "../prompt/promptChat";
44
import Logger from "../logger";
55
import { sendChatRequest } from "./localChat";
66
import { servers } from "../server";
7+
import { configuration } from "../utils/configuration";
8+
import statusBar from "../statusBar";
79

810
const logCompletion = () => {
911
const uuid = randomUUID();
@@ -23,11 +25,17 @@ export async function* chat(history: HistoryMessage[]) {
2325
const prompt = await getPromptChat(history);
2426

2527
const parameters = {
26-
n_predict: 8192,
28+
n_predict: 4096,
2729
stop: [],
2830
temperature: 0.7,
2931
};
3032

33+
const serverUrl = configuration.get("cloud.use")
34+
? configuration.get("cloud.endpoint")
35+
: servers["chat-medium"].serverUrl;
36+
37+
const { stopTask } = statusBar.startTask();
38+
3139
try {
3240
Logger.info(`Start request;`, {
3341
component: "chat",
@@ -38,7 +46,7 @@ export async function* chat(history: HistoryMessage[]) {
3846
prompt,
3947
parameters,
4048
loggerCompletion.uuid(),
41-
servers["chat-medium"].serverUrl
49+
serverUrl
4250
);
4351

4452
loggerCompletion.info("Request: finished");
@@ -48,5 +56,7 @@ export async function* chat(history: HistoryMessage[]) {
4856

4957
const errorMessage = Error.message;
5058
vscode.window.showErrorMessage(errorMessage);
59+
} finally {
60+
stopTask();
5161
}
5262
}

src/common/chat/localChat.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import * as vscode from "vscode";
22
import { randomUUID } from "crypto";
33
import Logger from "../logger";
4-
import statusBar from "../statusBar";
54

65
const logCompletion = (uuid = randomUUID() as string) => {
76
return {
@@ -40,8 +39,6 @@ export async function* sendChatRequest(
4039
uuid: string,
4140
url: string
4241
) {
43-
const { stopTask } = statusBar.startTask();
44-
4542
const loggerCompletion = logCompletion(uuid);
4643

4744
const parametersForCompletion = {
@@ -90,8 +87,6 @@ export async function* sendChatRequest(
9087
const errorMessage = Error.message;
9188
vscode.window.showErrorMessage(errorMessage);
9289
return null;
93-
} finally {
94-
stopTask();
9590
}
9691
}
9792

src/common/completion/index.ts

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,13 @@ export const getInlineCompletionProvider = (
5656
? configuration.get("completion.autoMode")
5757
: configuration.get("completion.manuallyMode");
5858

59+
const serverUrl = configuration.get("cloud.use")
60+
? configuration.get("cloud.endpoint")
61+
: servers[modelType].serverUrl;
62+
5963
let additionalDocuments: vscode.TextDocument[] = [];
6064

61-
if (!triggerAuto && configuration.get("experimental.useopentabs")) {
65+
if (configuration.get("experimental.useopentabs")) {
6266
const additionalDocumentsUri = vscode.window.tabGroups.all
6367
.map((group) => group.tabs)
6468
.flat()
@@ -81,20 +85,22 @@ export const getInlineCompletionProvider = (
8185
activeDocument: document,
8286
additionalDocuments: additionalDocuments,
8387
position: position,
84-
maxTokenExpect: triggerAuto ? maxToken : 1000,
85-
url: servers[modelType].serverUrl,
88+
maxTokenExpect:
89+
triggerAuto && !configuration.get("cloud.use") ? maxToken : 2000,
90+
url: serverUrl,
8691
});
8792

88-
const parameters = triggerAuto
89-
? {
90-
n_predict: 128,
91-
stop: ["\n"],
92-
}
93-
: {
94-
n_predict: 512,
95-
stop: [],
96-
temperature: 0.7,
97-
};
93+
const parameters =
94+
triggerAuto && !configuration.get("cloud.use")
95+
? {
96+
n_predict: 128,
97+
stop: ["\n"],
98+
}
99+
: {
100+
n_predict: 512,
101+
stop: [],
102+
temperature: 0.5,
103+
};
98104

99105
try {
100106
Logger.info(
@@ -110,7 +116,7 @@ export const getInlineCompletionProvider = (
110116
parameters,
111117
abortController,
112118
loggerCompletion.uuid(),
113-
servers[modelType].serverUrl
119+
serverUrl
114120
);
115121

116122
if (completion === null) {

src/common/prompt/promptChat.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,6 @@ export const getPromptChat = async (history: HistoryMessage[]) => {
2020
})
2121
.join("");
2222
const prompt = promptBase + promptHistory + "### Response:\n";
23-
console.log(prompt);
23+
2424
return prompt;
2525
};

src/common/utils/configuration.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,12 @@ const ConfigurationProperties = {
2626
homedir: {
2727
default: "",
2828
},
29+
"cloud.endpoint": {
30+
default: "",
31+
},
32+
"cloud.use": {
33+
default: false,
34+
},
2935
} as const;
3036

3137
interface ConfigurationPropertiesType
@@ -54,6 +60,12 @@ interface ConfigurationPropertiesType
5460
homedir: {
5561
possibleValues: string;
5662
};
63+
"cloud.endpoint": {
64+
possibleValues: string;
65+
};
66+
"cloud.use": {
67+
possibleValues: boolean;
68+
};
5769
}
5870

5971
class Configuration {

src/extension.ts

Lines changed: 35 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -66,34 +66,46 @@ export async function activate(context: vscode.ExtensionContext) {
6666
);
6767

6868
(async () => {
69-
try {
70-
const serversStarted = await Promise.all(
71-
[
72-
...new Set([
73-
configuration.get("completion.autoMode"),
74-
configuration.get("completion.manuallyMode"),
75-
...(isChatEnabled ? ["chat-medium" as const] : []),
76-
]),
77-
].map((serverType) => servers[serverType].startServer())
69+
if (configuration.get("cloud.use")) {
70+
Logger.info("Use cloud", {
71+
component: "main",
72+
sendTelemetry: true,
73+
});
74+
const InlineCompletionProvider = getInlineCompletionProvider(context);
75+
vscode.languages.registerInlineCompletionItemProvider(
76+
{ pattern: "**" },
77+
InlineCompletionProvider
7878
);
79+
} else {
80+
try {
81+
const serversStarted = await Promise.all(
82+
[
83+
...new Set([
84+
configuration.get("completion.autoMode"),
85+
configuration.get("completion.manuallyMode"),
86+
...(isChatEnabled ? ["chat-medium" as const] : []),
87+
]),
88+
].map((serverType) => servers[serverType].startServer())
89+
);
7990

80-
if (serversStarted.some((serverStarted) => serverStarted)) {
81-
Logger.info("Server inited", {
82-
component: "main",
91+
if (serversStarted.some((serverStarted) => serverStarted)) {
92+
Logger.info("Server inited", {
93+
component: "main",
94+
sendTelemetry: true,
95+
});
96+
const InlineCompletionProvider = getInlineCompletionProvider(context);
97+
vscode.languages.registerInlineCompletionItemProvider(
98+
{ pattern: "**" },
99+
InlineCompletionProvider
100+
);
101+
}
102+
} catch (error) {
103+
vscode.window.showErrorMessage((error as Error).message);
104+
Logger.error(error, {
105+
component: "server",
83106
sendTelemetry: true,
84107
});
85-
const InlineCompletionProvider = getInlineCompletionProvider(context);
86-
vscode.languages.registerInlineCompletionItemProvider(
87-
{ pattern: "**" },
88-
InlineCompletionProvider
89-
);
90108
}
91-
} catch (error) {
92-
vscode.window.showErrorMessage((error as Error).message);
93-
Logger.error(error, {
94-
component: "server",
95-
sendTelemetry: true,
96-
});
97109
}
98110

99111
Logger.info("FireCoder is ready.", {

0 commit comments

Comments
 (0)