chore: add stopping inference interface

This commit is contained in:
Louis 2023-11-21 13:47:30 +07:00
parent 62083c28f2
commit de562ecaed
3 changed files with 25 additions and 12 deletions

View File

@ -1,4 +1,4 @@
import { MessageRequest } from "../index"; import { MessageRequest, ThreadMessage } from "../index";
import { JanPlugin } from "../plugin"; import { JanPlugin } from "../plugin";
/** /**
@ -16,10 +16,15 @@ export abstract class InferencePlugin extends JanPlugin {
*/ */
abstract stopModel(): Promise<void>; abstract stopModel(): Promise<void>;
/**
* Stops the streaming inference.
*/
abstract stopInference(): Promise<void>;
/** /**
* Processes an inference request. * Processes an inference request.
* @param data - The data for the inference request. * @param data - The data for the inference request.
* @returns The result of the inference request. * @returns The result of the inference request.
*/ */
abstract inferenceRequest(data: MessageRequest): Promise<any>; abstract inferenceRequest(data: MessageRequest): Promise<ThreadMessage>;
} }

View File

@ -70,23 +70,31 @@ export default class JanInferencePlugin implements InferencePlugin {
return executeOnMain(MODULE, "killSubprocess"); return executeOnMain(MODULE, "killSubprocess");
} }
/**
* Stops streaming inference.
* @returns {Promise<void>} A promise that resolves when the streaming is stopped.
*/
async stopInference(): Promise<void> {
// TODO: Implementation
}
/** /**
* Makes a single response inference request. * Makes a single response inference request.
* @param {MessageRequest} data - The data for the inference request. * @param {MessageRequest} data - The data for the inference request.
* @returns {Promise<any>} A promise that resolves with the inference response. * @returns {Promise<any>} A promise that resolves with the inference response.
*/ */
async inferenceRequest(data: MessageRequest): Promise<any> { async inferenceRequest(data: MessageRequest): Promise<ThreadMessage> {
const message = { const message: ThreadMessage = {
...data, threadId: data.threadId,
message: "", content: "",
user: "assistant",
createdAt: new Date().toISOString(), createdAt: new Date().toISOString(),
status: MessageStatus.Ready,
}; };
return new Promise(async (resolve, reject) => { return new Promise(async (resolve, reject) => {
requestInference(data.messages ?? []).subscribe({ requestInference(data.messages ?? []).subscribe({
next: (content) => { next: (content) => {
message.message = content; message.content = content;
}, },
complete: async () => { complete: async () => {
resolve(message); resolve(message);

View File

@ -63,13 +63,13 @@ export default function useSendChatMessage() {
if ( if (
currentConvo && currentConvo &&
currentConvo.id === newMessage.threadId && currentConvo.id === newMessage.threadId &&
result?.message && result?.content &&
result?.message?.trim().length > 0 && result?.content?.trim().length > 0 &&
result.message.split(' ').length <= 10 result.content.split(' ').length <= 10
) { ) {
const updatedConv = { const updatedConv = {
...currentConvo, ...currentConvo,
summary: result.message, summary: result.content,
} }
updateConversation(updatedConv) updateConversation(updatedConv)
pluginManager pluginManager