Bugfix/Avoid passing runnable assign when worker agent has no input variables (#2550)
avoid passing runnable assign when worker agent has no input variables
This commit is contained in:
parent
e15e6fafdc
commit
8c66d2c735
|
|
@ -199,7 +199,20 @@ async function createAgent(
|
|||
}
|
||||
const modelWithTools = llm.bindTools(tools)
|
||||
|
||||
const agent = RunnableSequence.from([
|
||||
let agent
|
||||
|
||||
if (!workerInputVariablesValues || !Object.keys(workerInputVariablesValues).length) {
|
||||
agent = RunnableSequence.from([
|
||||
RunnablePassthrough.assign({
|
||||
//@ts-ignore
|
||||
agent_scratchpad: (input: { steps: ToolsAgentStep[] }) => formatToOpenAIToolMessages(input.steps)
|
||||
}),
|
||||
prompt,
|
||||
modelWithTools,
|
||||
new ToolCallingAgentOutputParser()
|
||||
])
|
||||
} else {
|
||||
agent = RunnableSequence.from([
|
||||
RunnablePassthrough.assign({
|
||||
//@ts-ignore
|
||||
agent_scratchpad: (input: { steps: ToolsAgentStep[] }) => formatToOpenAIToolMessages(input.steps)
|
||||
|
|
@ -209,9 +222,10 @@ async function createAgent(
|
|||
modelWithTools,
|
||||
new ToolCallingAgentOutputParser()
|
||||
])
|
||||
}
|
||||
|
||||
const executor = AgentExecutor.fromAgentAndTools({
|
||||
agent: agent,
|
||||
agent,
|
||||
tools,
|
||||
sessionId: flowObj?.sessionId,
|
||||
chatId: flowObj?.chatId,
|
||||
|
|
@ -233,12 +247,19 @@ async function createAgent(
|
|||
const msg = HumanMessagePromptTemplate.fromTemplate([...multiModalMessageContent])
|
||||
prompt.promptMessages.splice(1, 0, msg)
|
||||
}
|
||||
const conversationChain = RunnableSequence.from([
|
||||
|
||||
let conversationChain
|
||||
|
||||
if (!workerInputVariablesValues || !Object.keys(workerInputVariablesValues).length) {
|
||||
conversationChain = RunnableSequence.from([prompt, llm, new StringOutputParser()])
|
||||
} else {
|
||||
conversationChain = RunnableSequence.from([
|
||||
RunnablePassthrough.assign(transformObjectPropertyToFunction(workerInputVariablesValues)),
|
||||
prompt,
|
||||
llm,
|
||||
new StringOutputParser()
|
||||
])
|
||||
}
|
||||
return conversationChain
|
||||
}
|
||||
}
|
||||
|
|
@ -256,6 +277,7 @@ async function agentNode(
|
|||
if (abortControllerSignal.signal.aborted) {
|
||||
throw new Error('Aborted!')
|
||||
}
|
||||
|
||||
const result = await agent.invoke({ ...state, signal: abortControllerSignal.signal }, config)
|
||||
const additional_kwargs: ICommonObject = {}
|
||||
if (result.usedTools) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue