Solon v3.2.0

solon-web 集成参考

</> markdown

1、简单请求与响应

@Controller
public class DemoController {
    @Inject
    ChatModel chatModel;

    @Mapping("case1")
    public String case1(String prompt) throws IOException {
        return chatModel.prompt(prompt)
                .call()
                .getMessage()
                .getContent();
    }
}

2、响应数据作为 sse 或 ndjson 输出

@Controller
public class DemoController {
    @Inject
    ChatModel chatModel;

    //@Produces(MimeType.APPLICATION_X_NDJSON_VALUE)
    //自动转为 sse
    @Produces(MimeType.TEXT_EVENT_STREAM_UTF8_VALUE)
    @Mapping("case2")
    public Flux<ChatMessage> case2(String prompt) throws IOException {
        return Flux.from(chatModel.prompt(prompt).stream())
                .filter(resp -> resp.hasChoices())
                .map(resp -> resp.getMessage());
    }
}

2、响应数据转换为 sse-event 输出

@Controller
public class DemoController {
    @Inject
    ChatModel chatMode

    //手动转为 sse
    @Mapping("case3")
    public Flux<SseEvent> case3(String prompt) throws IOException {
        return Flux.from(chatModel.prompt(prompt).stream())
                .filter(resp -> resp.hasChoices())
                .map(resp -> new SseEvent().data(resp.getMessage().getContent()));
    }
}