From 6554bdebda009d0f10f49b23ad3805420a1e1ab6 Mon Sep 17 00:00:00 2001 From: Michael Hunger Date: Thu, 21 Sep 2023 02:11:38 +0200 Subject: [PATCH] Added Record test for output parser --- .../ai/openai/client/ClientIT.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/spring-ai-openai/src/test/java/org/springframework/ai/openai/client/ClientIT.java b/spring-ai-openai/src/test/java/org/springframework/ai/openai/client/ClientIT.java index 05a15cdbd8e..ce4b7d16211 100644 --- a/spring-ai-openai/src/test/java/org/springframework/ai/openai/client/ClientIT.java +++ b/spring-ai-openai/src/test/java/org/springframework/ai/openai/client/ClientIT.java @@ -100,4 +100,27 @@ void beanOutputParser() { System.out.println(actorsFilms); } + record ActorsFilmsRecord(String actor, List movies) { + } + + @Test + void beanOutputParserRecords() { + + BeanOutputParser outputParser = new BeanOutputParser<>(ActorsFilmsRecord.class); + + String format = outputParser.getFormat(); + String template = """ + Generate the filmography of 5 movies for Tom Hanks. + {format} + """; + PromptTemplate promptTemplate = new PromptTemplate(template, Map.of("format", format)); + Prompt prompt = new Prompt(promptTemplate.createMessage()); + Generation generation = openAiClient.generate(prompt).getGeneration(); + + ActorsFilmsRecord actorsFilms = outputParser.parse(generation.getText()); + System.out.println(actorsFilms); + assertThat(actorsFilms.actor()).isEqualTo("Tom Hanks"); + assertThat(actorsFilms.movies()).hasSize(5); + } + }