Flowise

Форк
0
/
ChatflowPool.ts 
51 строка · 1.8 Кб
1
import { ICommonObject } from 'flowise-components'
2
import { IActiveChatflows, INodeData, IReactFlowNode } from './Interface'
3
import logger from './utils/logger'
4

5
/**
6
 * This pool is to keep track of active chatflow pools
7
 * so we can prevent building langchain flow all over again
8
 */
9
export class ChatflowPool {
10
    activeChatflows: IActiveChatflows = {}
11

12
    /**
13
     * Add to the pool
14
     * @param {string} chatflowid
15
     * @param {INodeData} endingNodeData
16
     * @param {IReactFlowNode[]} startingNodes
17
     * @param {ICommonObject} overrideConfig
18
     */
19
    add(chatflowid: string, endingNodeData: INodeData | undefined, startingNodes: IReactFlowNode[], overrideConfig?: ICommonObject) {
20
        this.activeChatflows[chatflowid] = {
21
            startingNodes,
22
            endingNodeData,
23
            inSync: true
24
        }
25
        if (overrideConfig) this.activeChatflows[chatflowid].overrideConfig = overrideConfig
26
        logger.info(`[server]: Chatflow ${chatflowid} added into ChatflowPool`)
27
    }
28

29
    /**
30
     * Update to the pool
31
     * @param {string} chatflowid
32
     * @param {boolean} inSync
33
     */
34
    updateInSync(chatflowid: string, inSync: boolean) {
35
        if (Object.prototype.hasOwnProperty.call(this.activeChatflows, chatflowid)) {
36
            this.activeChatflows[chatflowid].inSync = inSync
37
            logger.info(`[server]: Chatflow ${chatflowid} updated inSync=${inSync} in ChatflowPool`)
38
        }
39
    }
40

41
    /**
42
     * Remove from the pool
43
     * @param {string} chatflowid
44
     */
45
    async remove(chatflowid: string) {
46
        if (Object.prototype.hasOwnProperty.call(this.activeChatflows, chatflowid)) {
47
            delete this.activeChatflows[chatflowid]
48
            logger.info(`[server]: Chatflow ${chatflowid} removed from ChatflowPool`)
49
        }
50
    }
51
}
52

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.