mirror of
https://github.com/farcasclaudiu/Flowise.git
synced 2026-06-29 05:01:10 +03:00
Feature/prepend messages to agent graph (#2897)
prepend messages to agent graph
This commit is contained in:
@@ -153,6 +153,8 @@ export interface INodeCredential {
|
|||||||
export interface IMessage {
|
export interface IMessage {
|
||||||
message: string
|
message: string
|
||||||
type: MessageType
|
type: MessageType
|
||||||
|
role?: MessageType
|
||||||
|
content?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IUsedTool {
|
export interface IUsedTool {
|
||||||
|
|||||||
@@ -587,10 +587,10 @@ export const mapChatMessageToBaseMessage = (chatmessages: any[] = []): BaseMessa
|
|||||||
const chatHistory = []
|
const chatHistory = []
|
||||||
|
|
||||||
for (const message of chatmessages) {
|
for (const message of chatmessages) {
|
||||||
if (message.role === 'apiMessage') {
|
if (message.role === 'apiMessage' || message.type === 'apiMessage') {
|
||||||
chatHistory.push(new AIMessage(message.content))
|
chatHistory.push(new AIMessage(message.content || ''))
|
||||||
} else if (message.role === 'userMessage') {
|
} else if (message.role === 'userMessage' || message.role === 'userMessage') {
|
||||||
chatHistory.push(new HumanMessage(message.content))
|
chatHistory.push(new HumanMessage(message.content || ''))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return chatHistory
|
return chatHistory
|
||||||
|
|||||||
@@ -209,6 +209,8 @@ export interface IDepthQueue {
|
|||||||
export interface IMessage {
|
export interface IMessage {
|
||||||
message: string
|
message: string
|
||||||
type: MessageType
|
type: MessageType
|
||||||
|
role?: MessageType
|
||||||
|
content?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IncomingInput {
|
export interface IncomingInput {
|
||||||
|
|||||||
@@ -181,6 +181,7 @@ export const buildAgentGraph = async (
|
|||||||
options,
|
options,
|
||||||
startingNodeIds,
|
startingNodeIds,
|
||||||
incomingInput.question,
|
incomingInput.question,
|
||||||
|
incomingInput.history,
|
||||||
chatHistory,
|
chatHistory,
|
||||||
incomingInput?.overrideConfig,
|
incomingInput?.overrideConfig,
|
||||||
sessionId || chatId,
|
sessionId || chatId,
|
||||||
@@ -196,6 +197,7 @@ export const buildAgentGraph = async (
|
|||||||
appServer.nodesPool.componentNodes,
|
appServer.nodesPool.componentNodes,
|
||||||
options,
|
options,
|
||||||
incomingInput.question,
|
incomingInput.question,
|
||||||
|
incomingInput.history,
|
||||||
chatHistory,
|
chatHistory,
|
||||||
incomingInput?.overrideConfig,
|
incomingInput?.overrideConfig,
|
||||||
sessionId || chatId,
|
sessionId || chatId,
|
||||||
@@ -447,6 +449,7 @@ const compileMultiAgentsGraph = async (
|
|||||||
options: ICommonObject,
|
options: ICommonObject,
|
||||||
startingNodeIds: string[],
|
startingNodeIds: string[],
|
||||||
question: string,
|
question: string,
|
||||||
|
prependHistoryMessages: IMessage[] = [],
|
||||||
chatHistory: IMessage[] = [],
|
chatHistory: IMessage[] = [],
|
||||||
overrideConfig?: ICommonObject,
|
overrideConfig?: ICommonObject,
|
||||||
threadId?: string,
|
threadId?: string,
|
||||||
@@ -570,10 +573,22 @@ const compileMultiAgentsGraph = async (
|
|||||||
const callbacks = await additionalCallbacks(flowNodeData, options)
|
const callbacks = await additionalCallbacks(flowNodeData, options)
|
||||||
const config = { configurable: { thread_id: threadId } }
|
const config = { configurable: { thread_id: threadId } }
|
||||||
|
|
||||||
|
let prependMessages = []
|
||||||
|
// Only append in the first message
|
||||||
|
if (prependHistoryMessages.length === chatHistory.length) {
|
||||||
|
for (const message of prependHistoryMessages) {
|
||||||
|
if (message.role === 'apiMessage' || message.type === 'apiMessage') {
|
||||||
|
prependMessages.push(new AIMessage({ content: message.message || message.content || '' }))
|
||||||
|
} else if (message.role === 'userMessage' || message.type === 'userMessage') {
|
||||||
|
prependMessages.push(new HumanMessage({ content: message.message || message.content || '' }))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Return stream result as we should only have 1 supervisor
|
// Return stream result as we should only have 1 supervisor
|
||||||
return await graph.stream(
|
return await graph.stream(
|
||||||
{
|
{
|
||||||
messages: [new HumanMessage({ content: question })]
|
messages: [...prependMessages, new HumanMessage({ content: question })]
|
||||||
},
|
},
|
||||||
{ recursionLimit: supervisorResult?.recursionLimit ?? 100, callbacks: [loggerHandler, ...callbacks], configurable: config }
|
{ recursionLimit: supervisorResult?.recursionLimit ?? 100, callbacks: [loggerHandler, ...callbacks], configurable: config }
|
||||||
)
|
)
|
||||||
@@ -605,6 +620,7 @@ const compileSeqAgentsGraph = async (
|
|||||||
componentNodes: IComponentNodes,
|
componentNodes: IComponentNodes,
|
||||||
options: ICommonObject,
|
options: ICommonObject,
|
||||||
question: string,
|
question: string,
|
||||||
|
prependHistoryMessages: IMessage[] = [],
|
||||||
chatHistory: IMessage[] = [],
|
chatHistory: IMessage[] = [],
|
||||||
overrideConfig?: ICommonObject,
|
overrideConfig?: ICommonObject,
|
||||||
threadId?: string,
|
threadId?: string,
|
||||||
@@ -952,8 +968,20 @@ const compileSeqAgentsGraph = async (
|
|||||||
const callbacks = await additionalCallbacks(flowNodeData as any, options)
|
const callbacks = await additionalCallbacks(flowNodeData as any, options)
|
||||||
const config = { configurable: { thread_id: threadId }, bindModel }
|
const config = { configurable: { thread_id: threadId }, bindModel }
|
||||||
|
|
||||||
|
let prependMessages = []
|
||||||
|
// Only append in the first message
|
||||||
|
if (prependHistoryMessages.length === chatHistory.length) {
|
||||||
|
for (const message of prependHistoryMessages) {
|
||||||
|
if (message.role === 'apiMessage' || message.type === 'apiMessage') {
|
||||||
|
prependMessages.push(new AIMessage({ content: message.message || message.content || '' }))
|
||||||
|
} else if (message.role === 'userMessage' || message.type === 'userMessage') {
|
||||||
|
prependMessages.push(new HumanMessage({ content: message.message || message.content || '' }))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let humanMsg: { messages: HumanMessage[] | ToolMessage[] } | null = {
|
let humanMsg: { messages: HumanMessage[] | ToolMessage[] } | null = {
|
||||||
messages: [new HumanMessage({ content: question })]
|
messages: [...prependMessages, new HumanMessage({ content: question })]
|
||||||
}
|
}
|
||||||
|
|
||||||
if (action && action.mapping && question === action.mapping.approve) {
|
if (action && action.mapping && question === action.mapping.approve) {
|
||||||
|
|||||||
Reference in New Issue
Block a user