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()));
}
}