refactor(model): expose stream chat lifecycle callbacks

This commit is contained in:
2026-05-02 21:54:48 +08:00
parent 2a8b2aff7b
commit 692c601f17
3 changed files with 13 additions and 13 deletions

View File

@@ -49,8 +49,7 @@ data class ReplyEvent @JvmOverloads constructor(
override val target: String, override val target: String,
val content: String, val content: String,
val mode: ContentMode = ContentMode.REPLACE, val mode: ContentMode = ContentMode.REPLACE,
val seq: Long? = null, val seq: Long? = null
val done: Boolean = false
) : InteractionEvent() { ) : InteractionEvent() {
override val event = Event.REPLY override val event = Event.REPLY

View File

@@ -15,11 +15,12 @@ interface ActivateModel {
fun streamChat( fun streamChat(
messages: List<Message>, messages: List<Message>,
handler: StreamChatMessageConsumer consumer: StreamChatMessageConsumer
): Result<Unit> { ): Result<Unit> {
return ModelRuntimeRegistry.resolveProvider(modelKey()) return ModelRuntimeRegistry.resolveProvider(modelKey())
.streamChat(mergeMessages(messages), handler) .streamChat(mergeMessages(messages), consumer)
.onFailure { ExceptionReporterHandler.report(it) } .onSuccess { consumer.onComplete() }
.onFailure { consumer.onError(it) }
} }
fun <T : Any> formattedChat(messages: List<Message>, responseType: Class<T>): Result<T> { fun <T : Any> formattedChat(messages: List<Message>, responseType: Class<T>): Result<T> {

View File

@@ -1,16 +1,16 @@
package work.slhaf.partner.framework.agent.model; package work.slhaf.partner.framework.agent.model;
public abstract class StreamChatMessageConsumer { import work.slhaf.partner.framework.agent.exception.AgentRuntimeException;
private final StringBuilder responseText = new StringBuilder();
public void onDelta(String delta) { public interface StreamChatMessageConsumer {
consumeDelta(delta);
responseText.append(delta); void onDelta(String delta);
default void onComplete() {
} }
public String collectResponse() { default void onError(AgentRuntimeException exception) {
return responseText.toString();
} }
protected abstract void consumeDelta(String delta); String collectResponse();
} }