1、简单示例
@Controller
public class DemoController {
@Inject
ChatModel chatModel;
@Mapping("case1")
public String case1(String prompt) throws IOException {
return chatModel.prompt(prompt)
.call()
.getMessage()
.getContent();
}
//@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());
}
//手动转为 sse
@Mapping("case3")
public Flux<SseEvent> case3(String prompt) throws IOException {
return Flux.from(chatModel.prompt(prompt).stream())
.filter(resp -> resp.hasChoices())
.map(resp -> resp.getMessage())
.map(msg -> new SseEvent().data(msg.getContent()));
}
}