Add feedback endpoints

This commit is contained in:
Ilango
2024-02-12 11:27:29 +05:30
parent 336b4174dc
commit 28b33f2c6b
2 changed files with 48 additions and 4 deletions
@@ -1,6 +1,7 @@
/* eslint-disable */ /* 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 { IChatMessage, MessageType } from '../../Interface'
import { ChatMessageFeedback } from './ChatMessageFeedback'
@Entity() @Entity()
export class ChatMessage implements IChatMessage { export class ChatMessage implements IChatMessage {
@@ -40,4 +41,8 @@ export class ChatMessage implements IChatMessage {
@CreateDateColumn() @CreateDateColumn()
createdDate: Date createdDate: Date
@OneToOne(() => ChatMessageFeedback)
@JoinColumn()
feedback?: ChatMessageFeedback
} }
+42 -3
View File
@@ -10,7 +10,7 @@ import logger from './utils/logger'
import { expressRequestLogger } from './utils/logger' import { expressRequestLogger } from './utils/logger'
import { v4 as uuidv4 } from 'uuid' import { v4 as uuidv4 } from 'uuid'
import OpenAI from 'openai' import OpenAI from 'openai'
import { Between, IsNull, FindOptionsWhere } from 'typeorm' import { Between, IsNull, FindOptionsWhere, createQueryBuilder } from 'typeorm'
import { import {
IChatFlow, IChatFlow,
IncomingInput, IncomingInput,
@@ -20,6 +20,7 @@ import {
ICredentialReturnResponse, ICredentialReturnResponse,
chatType, chatType,
IChatMessage, IChatMessage,
IChatMessageFeedback,
IDepthQueue, IDepthQueue,
INodeDirectedGraph INodeDirectedGraph
} from './Interface' } from './Interface'
@@ -54,6 +55,7 @@ import { getDataSource } from './DataSource'
import { NodesPool } from './NodesPool' import { NodesPool } from './NodesPool'
import { ChatFlow } from './database/entities/ChatFlow' import { ChatFlow } from './database/entities/ChatFlow'
import { ChatMessage } from './database/entities/ChatMessage' import { ChatMessage } from './database/entities/ChatMessage'
import { ChatMessageFeedback } from './database/entities/ChatMessageFeedback'
import { Credential } from './database/entities/Credential' import { Credential } from './database/entities/Credential'
import { Tool } from './database/entities/Tool' import { Tool } from './database/entities/Tool'
import { Assistant } from './database/entities/Assistant' import { Assistant } from './database/entities/Assistant'
@@ -512,6 +514,7 @@ export class App {
const sessionId = req.query?.sessionId as string | undefined const sessionId = req.query?.sessionId as string | undefined
const startDate = req.query?.startDate as string | undefined const startDate = req.query?.startDate as string | undefined
const endDate = req.query?.endDate 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 let chatTypeFilter = req.query?.chatType as chatType | undefined
if (chatTypeFilter) { if (chatTypeFilter) {
@@ -537,7 +540,8 @@ export class App {
memoryType, memoryType,
sessionId, sessionId,
startDate, startDate,
endDate endDate,
feedback
) )
return res.json(chatmessages) return res.json(chatmessages)
}) })
@@ -599,6 +603,24 @@ export class App {
return res.json(results) 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 // Credentials
// ---------------------------------------- // ----------------------------------------
@@ -1422,6 +1444,7 @@ export class App {
* @param {string} sessionId * @param {string} sessionId
* @param {string} startDate * @param {string} startDate
* @param {string} endDate * @param {string} endDate
* @param {boolean} feedback
*/ */
async getChatMessage( async getChatMessage(
chatflowid: string, chatflowid: string,
@@ -1431,7 +1454,8 @@ export class App {
memoryType?: string, memoryType?: string,
sessionId?: string, sessionId?: string,
startDate?: string, startDate?: string,
endDate?: string endDate?: string,
feedback?: boolean
): Promise<ChatMessage[]> { ): Promise<ChatMessage[]> {
let fromDate let fromDate
if (startDate) fromDate = new Date(startDate) if (startDate) fromDate = new Date(startDate)
@@ -1450,6 +1474,9 @@ export class App {
}, },
order: { order: {
createdDate: sortOrder === 'DESC' ? 'DESC' : 'ASC' createdDate: sortOrder === 'DESC' ? 'DESC' : 'ASC'
},
relations: {
feedback
} }
}) })
} }
@@ -1466,6 +1493,18 @@ export class App {
return await this.AppDataSource.getRepository(ChatMessage).save(chatmessage) 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) { async upsertVector(req: Request, res: Response, isInternal: boolean = false) {
try { try {
const chatflowid = req.params.id const chatflowid = req.params.id