Skip to content

Commit c2712d1

Browse files
committed
removed feedback ui when using local mode
1 parent 748eac7 commit c2712d1

File tree

6 files changed

+50
-15
lines changed

6 files changed

+50
-15
lines changed

qiskit_code_assistant_jupyterlab/handlers.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,10 @@ def convert_openai(model):
8888
class ServiceUrlHandler(APIHandler):
8989
@tornado.web.authenticated
9090
def get(self):
91-
self.finish(json.dumps({"url": runtime_configs["service_url"]}))
91+
self.finish(json.dumps({
92+
"url": runtime_configs["service_url"],
93+
"is_openai": runtime_configs["is_openai"]
94+
}))
9295

9396
@tornado.web.authenticated
9497
def post(self):
@@ -102,7 +105,10 @@ def post(self):
102105
except (requests.exceptions.JSONDecodeError, KeyError):
103106
runtime_configs["is_openai"] = True
104107
finally:
105-
self.finish(json.dumps({"url": runtime_configs["service_url"]}))
108+
self.finish(json.dumps({
109+
"url": runtime_configs["service_url"],
110+
"is_openai": runtime_configs["is_openai"]
111+
}))
106112

107113

108114
class TokenHandler(APIHandler):
@@ -282,7 +288,7 @@ class FeedbackHandler(APIHandler):
282288
@tornado.web.authenticated
283289
def post(self):
284290
if runtime_configs["is_openai"]:
285-
self.finish(json.dumps({"success": "true"}))
291+
self.finish(json.dumps({"message": "Feedback not supported for this service"}))
286292
else:
287293
url = url_path_join(runtime_configs["service_url"], "feedback")
288294

src/QiskitCompletionProvider.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ const FEEDBACK_COMMAND = 'qiskit-code-assistant:prompt-feedback';
3939

4040
export let lastPrompt: ICompletionReturn | undefined = undefined;
4141

42+
export const wipeLastPrompt = () => (lastPrompt = undefined);
43+
4244
function getInputText(text: string, widget: Widget): string {
4345
const cellsContents: string[] = [];
4446

src/StatusBarWidget.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import { Message } from '@lumino/messaging';
1919
import { refreshIcon } from '@jupyterlab/ui-components';
2020
import { Widget } from '@lumino/widgets';
2121

22+
import { wipeLastPrompt } from './QiskitCompletionProvider';
2223
import { showDisclaimer } from './service/disclaimer';
2324
import {
2425
getCurrentModel,
@@ -70,17 +71,19 @@ export class StatusBarWidget extends Widget {
7071
async onClick() {
7172
await checkAPIToken().then(() => {
7273
const modelsList = getModelsList();
74+
const dropDownList = [...modelsList.map(m => m.display_name)];
7375
InputDialog.getItem({
7476
title: 'Select a Model',
75-
items: [...modelsList.map(m => m.display_name)],
76-
current: getCurrentModel()?.display_name
77+
items: dropDownList,
78+
current: dropDownList.indexOf(getCurrentModel()?.display_name || '')
7779
}).then(result => {
7880
if (result.button.accept) {
7981
const model = modelsList.find(m => m.display_name === result.value);
8082

8183
if (model) {
8284
showDisclaimer(model._id).then(accepted => {
8385
if (accepted) {
86+
wipeLastPrompt();
8487
setCurrentModel(model);
8588
}
8689
});

src/index.ts

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ import { StatusBarWidget } from './StatusBarWidget';
2828
import {
2929
lastPrompt,
3030
QiskitCompletionProvider,
31-
QiskitInlineCompletionProvider
31+
QiskitInlineCompletionProvider,
32+
wipeLastPrompt
3233
} from './QiskitCompletionProvider';
3334
import { postServiceUrl } from './service/api';
3435
import { getFeedbackStatusBarWidget, getFeedback } from './service/feedback';
@@ -73,10 +74,21 @@ const plugin: JupyterFrontEndPlugin<void> = {
7374
const settings = await settingRegistry.load(plugin.id);
7475
console.debug(EXTENSION_ID + ' settings loaded:', settings.composite);
7576

76-
postServiceUrl(settings.composite['serviceUrl'] as string);
77+
let is_openai = false;
78+
79+
postServiceUrl(settings.composite['serviceUrl'] as string).then(
80+
response => {
81+
is_openai = response.is_openai;
82+
wipeLastPrompt();
83+
}
84+
);
7785
settings.changed.connect(() =>
78-
postServiceUrl(settings.composite['serviceUrl'] as string).then(() =>
79-
refreshModelsList()
86+
postServiceUrl(settings.composite['serviceUrl'] as string).then(
87+
response => {
88+
is_openai = response.is_openai;
89+
wipeLastPrompt();
90+
refreshModelsList();
91+
}
8092
)
8193
);
8294

@@ -87,7 +99,8 @@ const plugin: JupyterFrontEndPlugin<void> = {
8799

88100
statusBar.registerStatusItem(EXTENSION_ID + ':feedback', {
89101
item: getFeedbackStatusBarWidget(),
90-
align: 'left'
102+
align: 'left',
103+
isActive: () => !is_openai
91104
});
92105

93106
const statusBarWidget = new StatusBarWidget();
@@ -104,11 +117,13 @@ const plugin: JupyterFrontEndPlugin<void> = {
104117
label: 'Give feedback for the Qiskit Code Assistant',
105118
icon: feedbackIcon,
106119
execute: () => getFeedback(),
107-
isEnabled: () => lastPrompt !== undefined,
120+
isEnabled: () => !is_openai && lastPrompt !== undefined,
108121
isVisible: () =>
122+
!is_openai &&
109123
['code', 'markdown'].includes(
110124
notebookTracker.activeCell?.model.type || ''
111-
) && lastPrompt !== undefined
125+
) &&
126+
lastPrompt !== undefined
112127
});
113128

114129
app.commands.addCommand(CommandIDs.updateApiToken, {

src/service/api.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ import {
2222
IModelDisclaimer,
2323
IModelInfo,
2424
IModelPromptResponse,
25-
IResponseMessage
25+
IResponseMessage,
26+
IServiceResponse
2627
} from '../utils/schema';
2728

2829
const AUTH_ERROR_CODES = [401, 403, 422];
@@ -40,14 +41,17 @@ async function notifyInvalid(response: Response): Promise<void> {
4041
}
4142

4243
// POST /service
43-
export async function postServiceUrl(newUrl: string): Promise<void> {
44+
export async function postServiceUrl(
45+
newUrl: string
46+
): Promise<IServiceResponse> {
4447
return await requestAPI('service', {
4548
method: 'POST',
4649
body: JSON.stringify({ url: newUrl })
4750
}).then(response => {
4851
if (response.ok) {
49-
response.json().then(json => {
52+
return response.json().then(json => {
5053
console.debug('Updated service URL:', json.url);
54+
return json;
5155
});
5256
} else {
5357
console.error(

src/utils/schema.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,3 +97,8 @@ export interface IFeedbackForm {
9797
input?: string;
9898
output?: string;
9999
}
100+
101+
export interface IServiceResponse {
102+
url: string;
103+
is_openai: boolean;
104+
}

0 commit comments

Comments
 (0)