mirror of
https://github.com/n8n-io/n8n.git
synced 2026-05-12 16:10:30 +02:00
fix(Basic LLM Chain Node): Parse plain object output from structured output parser
This commit is contained in:
parent
0ce820de73
commit
5ae5528979
|
|
@ -191,5 +191,13 @@ export const getAgentStepsParser =
|
|||
return parsedOutput;
|
||||
}
|
||||
|
||||
if (typeof steps === 'object' && steps !== null && !Array.isArray(steps)) {
|
||||
const parsedOutput = (await outputParser.parse(JSON.stringify(steps))) as Record<
|
||||
string,
|
||||
unknown
|
||||
>;
|
||||
return parsedOutput;
|
||||
}
|
||||
|
||||
throw new Error('Failed to parse agent steps');
|
||||
};
|
||||
|
|
|
|||
|
|
@ -349,5 +349,31 @@ describe('promptUtils', () => {
|
|||
|
||||
await expect(parser(steps)).rejects.toThrow('Failed to parse agent steps');
|
||||
});
|
||||
|
||||
it('should parse plain object via outputParser (regression for #29903)', async () => {
|
||||
const parser = getAgentStepsParser(mockOutputParser);
|
||||
const plainObject = { output: { isValid: false, message: 'error' } };
|
||||
|
||||
const parsedResult = { isValid: false, message: 'error' };
|
||||
mockOutputParser.parse.mockResolvedValue(parsedResult);
|
||||
|
||||
const result = await parser(plainObject as unknown as AgentFinish);
|
||||
|
||||
expect(mockOutputParser.parse).toHaveBeenCalledWith(JSON.stringify(plainObject));
|
||||
expect(result).toEqual(parsedResult);
|
||||
});
|
||||
|
||||
it('should parse plain object with arbitrary shape via outputParser', async () => {
|
||||
const parser = getAgentStepsParser(mockOutputParser);
|
||||
const plainObject = { foo: 'bar', count: 42 };
|
||||
|
||||
const parsedResult = { foo: 'bar', count: 42 };
|
||||
mockOutputParser.parse.mockResolvedValue(parsedResult);
|
||||
|
||||
const result = await parser(plainObject as unknown as AgentFinish);
|
||||
|
||||
expect(mockOutputParser.parse).toHaveBeenCalledWith(JSON.stringify(plainObject));
|
||||
expect(result).toEqual(parsedResult);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user