Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve model #4253

Merged
merged 17 commits into from
Nov 29, 2023
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ const profile = {
name: 'copilot-suggestion',
displayName: 'copilot-suggestion',
description: 'copilot-suggestion',
methods: ['suggest', 'init', 'uninstall', 'status']
methods: ['suggest', 'init', 'uninstall', 'status', 'isActivate']
}

export class CopilotSuggestion extends Plugin {
Expand All @@ -31,6 +31,15 @@ export class CopilotSuggestion extends Plugin {
return this.ready
}

async isActivate () {
try {
return await this.call('settings', 'get', 'settings/copilot/suggest/activate')
} catch (e) {
console.error(e)
return false
}
}

async suggest(content: string) {
if (!await this.call('settings', 'get', 'settings/copilot/suggest/activate')) return { output: [{ generated_text: ''}]}

Expand Down
49 changes: 39 additions & 10 deletions libs/remix-ui/editor/src/lib/providers/inlineCompletionProvider.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
/* eslint-disable no-control-regex */
import { EditorUIProps, monacoTypes } from '@remix-ui/editor';
import axios, {AxiosResponse} from 'axios'
const controller = new AbortController();
const { signal } = controller;
const result: string = ''
Expand All @@ -8,7 +10,7 @@ export class RemixInLineCompletionProvider implements monacoTypes.languages.Inli
monaco: any
constructor(props: any, monaco: any) {
this.props = props
this.monaco = monaco
this.monaco = monaco
}

async provideInlineCompletions(model: monacoTypes.editor.ITextModel, position: monacoTypes.Position, context: monacoTypes.languages.InlineCompletionContext, token: monacoTypes.CancellationToken): Promise<monacoTypes.languages.InlineCompletions<monacoTypes.languages.InlineCompletion>> {
Expand All @@ -29,6 +31,34 @@ export class RemixInLineCompletionProvider implements monacoTypes.languages.Inli
return;
}

try {
const isActivate = await this.props.plugin.call('copilot-suggestion', 'isActivate')
if (!isActivate) return
} catch (err) {
return;
}

try {
const split = word.split('\n')
if (!split.length) return
const ask = split[split.length - 2].trimStart()
if (split[split.length - 1].trim() === '' && ask.startsWith('///')) {
// use the code generation model
const {data} = await axios.post('https://gpt-chat.remixproject.org/infer', {comment: ask.replace('///', '')})
const parsedData = JSON.parse(data).trimStart()
console.log('parsedData', parsedData)
const item: monacoTypes.languages.InlineCompletion = {
insertText: parsedData
};
return {
items: [item],
enableForwardStability: true
}
}
} catch (e) {
console.error(e)
}

// abort if there is a signal
if (token.isCancellationRequested) {
console.log('aborted')
Expand All @@ -38,18 +68,17 @@ export class RemixInLineCompletionProvider implements monacoTypes.languages.Inli
let result
try {
result = await this.props.plugin.call('copilot-suggestion', 'suggest', word)
} catch (err) {
} catch (err) {
return
}

const generatedText = (result as any).output[0].generated_text as string
// the generated text remove a space from the context. that why we need to remove all the spaces
const clean = generatedText.replace(/ /g, '').replace(word.replace(/ /g, ''), '')
console.log('suggest result', clean)
// the generated text remove a space from the context...
const clean = generatedText.replace('@custom:dev-run-script', '@custom:dev-run-script ').replace(word, '')
const item: monacoTypes.languages.InlineCompletion = {
insertText: clean
};

// abort if there is a signal
if (token.isCancellationRequested) {
console.log('aborted')
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This one yes, this other not.

Expand All @@ -62,17 +91,17 @@ export class RemixInLineCompletionProvider implements monacoTypes.languages.Inli

}
handleItemDidShow?(completions: monacoTypes.languages.InlineCompletions<monacoTypes.languages.InlineCompletion>, item: monacoTypes.languages.InlineCompletion, updatedInsertText: string): void {

}
handlePartialAccept?(completions: monacoTypes.languages.InlineCompletions<monacoTypes.languages.InlineCompletion>, item: monacoTypes.languages.InlineCompletion, acceptedCharacters: number): void {

}
freeInlineCompletions(completions: monacoTypes.languages.InlineCompletions<monacoTypes.languages.InlineCompletion>): void {

}
groupId?: string;
yieldsToGroupIds?: string[];
toString?(): string {
throw new Error('Method not implemented.');
}
}
}
Loading