在最近的发布中,工具参数支持POJOs。然而,当POJO被 Package 在一个集合中时,我遇到了无法使其正常工作的问题。
描述bug
以下是工具参数为POJO集合时发生的情况:数据内容有效,但结构错误。也就是说,如果参数是java.util.List<MyPojo>
,实际对象是一个ArrayList,包含LinkedTreeMap。尽管Map的内容是正确的(意味着键与MyPojo匹配),但结构仍然是错误的。
日志和堆栈跟踪
无
重现问题
public record AiVariant(String type, String value) {}
@Tool
public void saveVariants(
List<AiVariant> variants
) { }
@Bean
public ChatLanguageModel openAiChatModel() {
return OpenAiChatModel.builder()
.apiKey(openAiApiKey)
.responseFormat("json_object")
.build();
}
//The RAG is probably not needed for this example.
@Bean
public AiAssistant aiAssistant(ChatLanguageModel openAiChatModel, ContentRetriever rag, ContentTools contentTools) {
return AiServices.builder(AiAssistant.class)
.chatLanguageModel(openAiChatModel)
.tools(contentTools)
.chatMemory(MessageWindowChatMemory.withMaxMessages(10))
.contentRetriever(rag)
.build();
}
...
public interface AiAssistant {
@SystemMessage("Json")
String chat(String message);
}
...
@Component
public class Test implements CommandLineRunner {
@Autowired private AiAssistant aiAssistant;
@Override
public void run(final String... args) throws Exception {
var chat = aiAssistant.chat("Save variants with type jurisdiction and value EU");
当前行为与预期行为
- 当前行为*:
- 预期行为*:一个类型为"AiVariants"的对象列表,而不是LinkedTreeMap。
请完成以下信息: - LangChain4j版本:
langchain4j, langchain4j-open-ail & langchain4j-easy-rag: 0.32.0
- 使用的LLM(s):
默认版本
- Java版本:
JDK 21
- Spring Boot版本(如适用):
3.3.1
其他上下文
1条答案
按热度按时间3pvhb19x1#
你好,@G0dC0der,感谢你的报告!
@gs-snagaraj,你愿意接手这个吗?