diff options
Diffstat (limited to 'container-search/src/main/java/com/yahoo/search/rendering')
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/rendering/EventRenderer.java (renamed from container-search/src/main/java/com/yahoo/search/rendering/TokenRenderer.java) | 31 | ||||
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/rendering/RendererRegistry.java | 14 |
2 files changed, 21 insertions, 24 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/rendering/TokenRenderer.java b/container-search/src/main/java/com/yahoo/search/rendering/EventRenderer.java index 0b0c018e1ac..4cca0fcce9f 100644 --- a/container-search/src/main/java/com/yahoo/search/rendering/TokenRenderer.java +++ b/container-search/src/main/java/com/yahoo/search/rendering/EventRenderer.java @@ -1,6 +1,6 @@ package com.yahoo.search.rendering; -import ai.vespa.search.llm.TokenStream; +import com.yahoo.search.result.EventStream; import com.fasterxml.jackson.core.JsonEncoding; import com.fasterxml.jackson.core.JsonFactory; import com.fasterxml.jackson.core.JsonFactoryBuilder; @@ -18,19 +18,16 @@ import com.yahoo.search.result.ErrorMessage; import java.io.IOException; import java.io.OutputStream; import java.util.concurrent.Executor; -import java.util.logging.Logger; import static com.fasterxml.jackson.databind.SerializationFeature.FLUSH_AFTER_WRITE_VALUE; /** - * - * A comment about SSE + * A Server-Sent Events (SSE) renderer for asynchronous events such as + * tokens from a language model. * * @author lesters */ -public class TokenRenderer extends AsynchronousSectionedRenderer<Result> { - - private static final Logger log = Logger.getLogger(TokenRenderer.class.getName()); +public class EventRenderer extends AsynchronousSectionedRenderer<Result> { private static final JsonFactory generatorFactory = createGeneratorFactory(); private volatile JsonGenerator generator; @@ -43,14 +40,14 @@ public class TokenRenderer extends AsynchronousSectionedRenderer<Result> { return factory; } - private static final boolean RENDER_TOKEN_EVENT_HEADER = true; + private static final boolean RENDER_EVENT_HEADER = true; private static final boolean RENDER_END_EVENT = true; - public TokenRenderer() { + public EventRenderer() { this(null); } - public TokenRenderer(Executor executor) { + public EventRenderer(Executor executor) { super(executor); } @@ -62,21 +59,21 @@ public class TokenRenderer extends AsynchronousSectionedRenderer<Result> { @Override public void beginList(DataList<?> dataList) throws IOException { - if ( ! (dataList instanceof TokenStream)) { - throw new IllegalArgumentException("TokenRenderer currently only supports TokenStreams"); + if ( ! (dataList instanceof EventStream)) { + throw new IllegalArgumentException("EventRenderer currently only supports EventStreams"); // Todo: support results and timing and trace by delegating to JsonRenderer } } @Override public void data(Data data) throws IOException { - if (data instanceof TokenStream.Token token) { - if (RENDER_TOKEN_EVENT_HEADER) { - generator.writeRaw("event: token\n"); + if (data instanceof EventStream.Event event) { + if (RENDER_EVENT_HEADER) { + generator.writeRaw("event: " + event.type() + "\n"); } generator.writeRaw("data: "); generator.writeStartObject(); - generator.writeStringField("token", token.toString()); + generator.writeStringField(event.type(), event.toString()); generator.writeEndObject(); generator.writeRaw("\n\n"); generator.flush(); @@ -115,7 +112,7 @@ public class TokenRenderer extends AsynchronousSectionedRenderer<Result> { @Override public String getMimeType() { - return "application/json"; + return "text/event-stream"; } } diff --git a/container-search/src/main/java/com/yahoo/search/rendering/RendererRegistry.java b/container-search/src/main/java/com/yahoo/search/rendering/RendererRegistry.java index ad6875b6c9b..d62860afcda 100644 --- a/container-search/src/main/java/com/yahoo/search/rendering/RendererRegistry.java +++ b/container-search/src/main/java/com/yahoo/search/rendering/RendererRegistry.java @@ -24,7 +24,7 @@ public final class RendererRegistry extends ComponentRegistry<com.yahoo.processi public static final ComponentId xmlRendererId = ComponentId.fromString("XmlRenderer"); public static final ComponentId pageRendererId = ComponentId.fromString("PageTemplatesXmlRenderer"); public static final ComponentId jsonRendererId = ComponentId.fromString("JsonRenderer"); - public static final ComponentId tokenRendererId = ComponentId.fromString("TokenRenderer"); + public static final ComponentId eventRendererId = ComponentId.fromString("EventRenderer"); public static final ComponentId defaultRendererId = jsonRendererId; @@ -57,10 +57,10 @@ public final class RendererRegistry extends ComponentRegistry<com.yahoo.processi pageRenderer.initId(pageRendererId); register(pageRenderer.getId(), pageRenderer); - // Add token renderer - Renderer tokenRenderer = new TokenRenderer(executor); - tokenRenderer.initId(tokenRendererId); - register(tokenRenderer.getId(), tokenRenderer); + // Add event renderer + Renderer eventRenderer = new EventRenderer(executor); + eventRenderer.initId(eventRendererId); + register(eventRenderer.getId(), eventRenderer); // add application renderers for (Renderer renderer : renderers) @@ -75,7 +75,7 @@ public final class RendererRegistry extends ComponentRegistry<com.yahoo.processi getRenderer(jsonRendererId.toSpecification()).deconstruct(); getRenderer(xmlRendererId.toSpecification()).deconstruct(); getRenderer(pageRendererId.toSpecification()).deconstruct(); - getRenderer(tokenRendererId.toSpecification()).deconstruct(); + getRenderer(eventRendererId.toSpecification()).deconstruct(); } /** @@ -99,7 +99,7 @@ public final class RendererRegistry extends ComponentRegistry<com.yahoo.processi if (format.stringValue().equals("json")) return getComponent(jsonRendererId); if (format.stringValue().equals("xml")) return getComponent(xmlRendererId); if (format.stringValue().equals("page")) return getComponent(pageRendererId); - if (format.stringValue().equals("token")) return getComponent(tokenRendererId); + if (format.stringValue().equals("sse")) return getComponent(eventRendererId); com.yahoo.processing.rendering.Renderer<Result> renderer = getComponent(format); if (renderer == null) |