使用 quarkus-langchain4j 以编程方式提供工具

问题描述 投票:0回答:1

在 vanilla langchain4j 中,我们可以以编程方式提供工具 https://docs.langchain4j.dev/tutorials/tools#specifying-tools-programmatically

我似乎没有找到一种方法可以对 quarkus-langchain4j 执行相同的操作,唯一的示例是动态工具,这是不同的。

我有我的 ToolSpecification 生成器

    private ToolSpecification createToolFromAction(Action action) {
        var toolname = action.name();
        var toolDescription = action.description();
        Map<String, JsonSchemaElement> params = new HashMap<>();
        action.parameters().forEach(parameter -> {
            params.put(parameter.name(), JsonStringSchema.builder().description(parameter.name()).build());
        });

        return ToolSpecification.builder()
                .name(toolname)
                .description(toolDescription)
                .parameters(JsonObjectSchema.builder().properties(params).build())
                .build();
    }

    public List<ToolSpecification> createToolSpecificationsFromActions() {
        return actionsRepository.listActions().stream()
                .map(this::createToolFromAction)
                .toList();
    }

我还可以提供 ToolExecutor,但是我不知道如何将它与带有 @RegisterAiService 注释的 AiService 一起提供。

quarkus langchain4j quarkus-langchain4j
1个回答
0
投票

好吧,在深入研究代码库之后,我发现了一个测试,它展示了如何使用您自己的 ToolSpecification 和 ToolExecutor。

        @Override
        public ToolProviderResult provideTools(ToolProviderRequest request) {
            assertNotNull(myServiceWithoutTools);

            ToolSpecification toolSpecification = ToolSpecification.builder()
                    .name("get_booking_details")
                    .description("Returns booking details")
                    .build();
            ToolExecutor toolExecutor = (t, m) -> "0";
            return ToolProviderResult.builder()
                    .add(toolSpecification, toolExecutor)
                    .build();
        }

https://github.com/quarkiverse/quarkus-langchain4j/blob/main/core/deployment/src/test/java/io/quarkiverse/langchain4j/test/ToolProviderTest.java#L63C9-L75C10

© www.soinside.com 2019 - 2024. All rights reserved.