mirror of
https://github.com/farcasclaudiu/Flowise.git
synced 2026-06-23 03:00:22 +03:00
Add feedback endpoints
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
/* eslint-disable */
|
||||
import { Entity, Column, CreateDateColumn, PrimaryGeneratedColumn, Index } from 'typeorm'
|
||||
import { Entity, Column, CreateDateColumn, PrimaryGeneratedColumn, Index, OneToOne, JoinColumn } from 'typeorm'
|
||||
import { IChatMessage, MessageType } from '../../Interface'
|
||||
import { ChatMessageFeedback } from './ChatMessageFeedback'
|
||||
|
||||
@Entity()
|
||||
export class ChatMessage implements IChatMessage {
|
||||
@@ -40,4 +41,8 @@ export class ChatMessage implements IChatMessage {
|
||||
|
||||
@CreateDateColumn()
|
||||
createdDate: Date
|
||||
|
||||
@OneToOne(() => ChatMessageFeedback)
|
||||
@JoinColumn()
|
||||
feedback?: ChatMessageFeedback
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ import logger from './utils/logger'
|
||||
import { expressRequestLogger } from './utils/logger'
|
||||
import { v4 as uuidv4 } from 'uuid'
|
||||
import OpenAI from 'openai'
|
||||
import { Between, IsNull, FindOptionsWhere } from 'typeorm'
|
||||
import { Between, IsNull, FindOptionsWhere, createQueryBuilder } from 'typeorm'
|
||||
import {
|
||||
IChatFlow,
|
||||
IncomingInput,
|
||||
@@ -20,6 +20,7 @@ import {
|
||||
ICredentialReturnResponse,
|
||||
chatType,
|
||||
IChatMessage,
|
||||
IChatMessageFeedback,
|
||||
IDepthQueue,
|
||||
INodeDirectedGraph
|
||||
} from './Interface'
|
||||
@@ -54,6 +55,7 @@ import { getDataSource } from './DataSource'
|
||||
import { NodesPool } from './NodesPool'
|
||||
import { ChatFlow } from './database/entities/ChatFlow'
|
||||
import { ChatMessage } from './database/entities/ChatMessage'
|
||||
import { ChatMessageFeedback } from './database/entities/ChatMessageFeedback'
|
||||
import { Credential } from './database/entities/Credential'
|
||||
import { Tool } from './database/entities/Tool'
|
||||
import { Assistant } from './database/entities/Assistant'
|
||||
@@ -512,6 +514,7 @@ export class App {
|
||||
const sessionId = req.query?.sessionId as string | undefined
|
||||
const startDate = req.query?.startDate as string | undefined
|
||||
const endDate = req.query?.endDate as string | undefined
|
||||
const feedback = req.query?.feedback as boolean | undefined
|
||||
let chatTypeFilter = req.query?.chatType as chatType | undefined
|
||||
|
||||
if (chatTypeFilter) {
|
||||
@@ -537,7 +540,8 @@ export class App {
|
||||
memoryType,
|
||||
sessionId,
|
||||
startDate,
|
||||
endDate
|
||||
endDate,
|
||||
feedback
|
||||
)
|
||||
return res.json(chatmessages)
|
||||
})
|
||||
@@ -599,6 +603,24 @@ export class App {
|
||||
return res.json(results)
|
||||
})
|
||||
|
||||
// ----------------------------------------
|
||||
// Chat Message Feedback
|
||||
// ----------------------------------------
|
||||
this.app.get('/api/v1/feedback/:id', async (req: Request, res: Response) => {})
|
||||
|
||||
this.app.post('/api/v1/feedback/:id', async (req: Request, res: Response) => {
|
||||
const body = req.body
|
||||
const results = await this.addChatMessageFeedback(body)
|
||||
return res.json(results)
|
||||
})
|
||||
|
||||
this.app.put('/api/v1/feedback/:id', async (req: Request, res: Response) => {
|
||||
const chatflowid = req.params.id
|
||||
const body = req.body
|
||||
const results = await this.addChatMessageFeedback(body)
|
||||
return res.json(results)
|
||||
})
|
||||
|
||||
// ----------------------------------------
|
||||
// Credentials
|
||||
// ----------------------------------------
|
||||
@@ -1422,6 +1444,7 @@ export class App {
|
||||
* @param {string} sessionId
|
||||
* @param {string} startDate
|
||||
* @param {string} endDate
|
||||
* @param {boolean} feedback
|
||||
*/
|
||||
async getChatMessage(
|
||||
chatflowid: string,
|
||||
@@ -1431,7 +1454,8 @@ export class App {
|
||||
memoryType?: string,
|
||||
sessionId?: string,
|
||||
startDate?: string,
|
||||
endDate?: string
|
||||
endDate?: string,
|
||||
feedback?: boolean
|
||||
): Promise<ChatMessage[]> {
|
||||
let fromDate
|
||||
if (startDate) fromDate = new Date(startDate)
|
||||
@@ -1450,6 +1474,9 @@ export class App {
|
||||
},
|
||||
order: {
|
||||
createdDate: sortOrder === 'DESC' ? 'DESC' : 'ASC'
|
||||
},
|
||||
relations: {
|
||||
feedback
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -1466,6 +1493,18 @@ export class App {
|
||||
return await this.AppDataSource.getRepository(ChatMessage).save(chatmessage)
|
||||
}
|
||||
|
||||
/**
|
||||
* Method that adds feedback for a chat message.
|
||||
* @param {Partial<IChatMessageFeedback>} chatMessageFeedback
|
||||
*/
|
||||
async addChatMessageFeedback(chatMessageFeedback: Partial<IChatMessageFeedback>): Promise<ChatMessageFeedback> {
|
||||
const newFeedback = new ChatMessageFeedback()
|
||||
Object.assign(newFeedback, chatMessageFeedback)
|
||||
|
||||
const feedback = this.AppDataSource.getRepository(ChatMessageFeedback).create(newFeedback)
|
||||
return await this.AppDataSource.getRepository(ChatMessageFeedback).save(feedback)
|
||||
}
|
||||
|
||||
async upsertVector(req: Request, res: Response, isInternal: boolean = false) {
|
||||
try {
|
||||
const chatflowid = req.params.id
|
||||
|
||||
Reference in New Issue
Block a user