chore: add stopping inference interface
This commit is contained in:
parent
62083c28f2
commit
de562ecaed
@ -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>;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user