Skip to content

Commit

Permalink
feat: first draft of open webui support
Browse files Browse the repository at this point in the history
  • Loading branch information
iocanel committed May 19, 2024
1 parent 62c20d5 commit e836629
Show file tree
Hide file tree
Showing 8 changed files with 638 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package io.quarkiverse.langchain4j.deployment.devui;

import java.util.Collections;
import java.util.Map;

import io.quarkus.builder.item.MultiBuildItem;

public final class AdditionalDevUiCardBuildItem extends MultiBuildItem {

private final String title;
private final String icon;
private final String componentLink;
private final Map<String, Object> buildTimeData;

public AdditionalDevUiCardBuildItem(String title, String icon, String componentLink) {
this(title, icon, componentLink, Collections.emptyMap());
}

public AdditionalDevUiCardBuildItem(String title, String icon, String componentLink, Map<String, Object> buildTimeData) {
this.title = title;
this.icon = icon;
this.componentLink = componentLink;
this.buildTimeData = buildTimeData;
}

public String getTitle() {
return title;
}

public String getIcon() {
return icon;
}

public String getComponentLink() {
return componentLink;
}

public Map<String, Object> getBuildTimeData() {
return buildTimeData;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,8 @@ CardPageBuildItem cardPage(List<DeclarativeAiServiceBuildItem> aiServices,
List<InProcessEmbeddingBuildItem> inProcessEmbeddingModelBuildItems,
List<EmbeddingStoreBuildItem> embeddingStoreBuildItem,
List<SelectedChatModelProviderBuildItem> chatModelProviders,
Optional<InMemoryEmbeddingStoreBuildItem> inMemoryEmbeddingStoreBuildItem) {
Optional<InMemoryEmbeddingStoreBuildItem> inMemoryEmbeddingStoreBuildItem,
List<AdditionalDevUiCardBuildItem> additionalDevUiCardBuildItems) {
CardPageBuildItem card = new CardPageBuildItem();
addAiServicesPage(card, aiServices);
if (toolsMetadataBuildItem != null) {
Expand All @@ -50,6 +51,15 @@ CardPageBuildItem cardPage(List<DeclarativeAiServiceBuildItem> aiServices,
if (!chatModelProviders.isEmpty()) {
addChatPage(card, aiServices);
}

for (AdditionalDevUiCardBuildItem additionalDevUiCardBuildItem : additionalDevUiCardBuildItems) {
card.addPage(Page.webComponentPageBuilder()
.title(additionalDevUiCardBuildItem.getTitle())
.icon(additionalDevUiCardBuildItem.getIcon())
.componentLink(additionalDevUiCardBuildItem.getComponentLink()));

additionalDevUiCardBuildItem.getBuildTimeData().forEach((k, v) -> card.addBuildTimeData(k, v));
}
return card;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package io.quarkiverse.langchain4j.deployment.devui;

import io.quarkiverse.langchain4j.runtime.devui.OpenWebUIJsonRPCService;
import io.quarkus.deployment.IsDevelopment;
import io.quarkus.deployment.annotations.BuildProducer;
import io.quarkus.deployment.annotations.BuildStep;
import io.quarkus.deployment.builditem.CuratedApplicationShutdownBuildItem;
import io.quarkus.devui.spi.JsonRPCProvidersBuildItem;

public final class OpenWebUIDevUIProcessor {

@BuildStep(onlyIf = IsDevelopment.class)
void registerOpenWebUiCard(BuildProducer<JsonRPCProvidersBuildItem> jsonRPCProviders,
CuratedApplicationShutdownBuildItem closeBuildItem) {
jsonRPCProviders.produce(new JsonRPCProvidersBuildItem(OpenWebUIJsonRPCService.class));
closeBuildItem.addCloseTask(OpenWebUIJsonRPCService.CLOSE_TASK, true);
}
}
Loading

0 comments on commit e836629

Please sign in to comment.