MCPcopy Index your code
hub / github.com/FlowiseAI/Flowise / createAgent

Function createAgent

packages/components/nodes/sequentialagents/Agent/Agent.ts:619–761  ·  view source on GitHub ↗
(
    nodeData: INodeData,
    options: ICommonObject,
    agentName: string,
    state: ISeqAgentsState,
    llm: BaseChatModel,
    interrupt: boolean,
    tools: any[],
    systemPrompt: string,
    humanPrompt: string,
    multiModalMessageContent: MessageContentImageUrl[],
    agentInputVariablesValues: ICommonObject,
    maxIterations?: string,
    flowObj?: { sessionId?: string; chatId?: string; input?: string }
)

Source from the content-addressed store, hash-verified

617}
618
619async function createAgent(
620 nodeData: INodeData,
621 options: ICommonObject,
622 agentName: string,
623 state: ISeqAgentsState,
624 llm: BaseChatModel,
625 interrupt: boolean,
626 tools: any[],
627 systemPrompt: string,
628 humanPrompt: string,
629 multiModalMessageContent: MessageContentImageUrl[],
630 agentInputVariablesValues: ICommonObject,
631 maxIterations?: string,
632 flowObj?: { sessionId?: string; chatId?: string; input?: string }
633): Promise<any> {
634 if (tools.length && !interrupt) {
635 const promptArrays = [
636 new MessagesPlaceholder('messages'),
637 new MessagesPlaceholder('agent_scratchpad')
638 ] as BaseMessagePromptTemplateLike[]
639 if (systemPrompt) promptArrays.unshift(['system', systemPrompt])
640 if (humanPrompt) promptArrays.push(['human', humanPrompt])
641
642 let prompt = ChatPromptTemplate.fromMessages(promptArrays)
643 prompt = await checkMessageHistory(nodeData, options, prompt, promptArrays, systemPrompt)
644
645 if (multiModalMessageContent.length) {
646 const msg = HumanMessagePromptTemplate.fromTemplate([...multiModalMessageContent])
647 prompt.promptMessages.splice(1, 0, msg)
648 }
649
650 if (llm.bindTools === undefined) {
651 throw new Error(`This agent only compatible with function calling models.`)
652 }
653 const modelWithTools = llm.bindTools(tools)
654
655 let agent
656
657 if (!agentInputVariablesValues || !Object.keys(agentInputVariablesValues).length) {
658 agent = RunnableSequence.from([
659 RunnablePassthrough.assign({
660 //@ts-ignore
661 agent_scratchpad: (input: { steps: ToolsAgentStep[] }) => formatToOpenAIToolMessages(input.steps)
662 }),
663 prompt,
664 modelWithTools,
665 new ToolCallingAgentOutputParser()
666 ]).withConfig({
667 metadata: { sequentialNodeName: agentName }
668 })
669 } else {
670 agent = RunnableSequence.from([
671 RunnablePassthrough.assign({
672 //@ts-ignore
673 agent_scratchpad: (input: { steps: ToolsAgentStep[] }) => formatToOpenAIToolMessages(input.steps)
674 }),
675 RunnablePassthrough.assign(transformObjectPropertyToFunction(agentInputVariablesValues, state)),
676 prompt,

Callers 1

workerNodeMethod · 0.70

Calls 4

checkMessageHistoryFunction · 0.90
fromAgentAndToolsMethod · 0.80

Tested by

no test coverage detected