mirror of
https://github.com/slhaf/Partner.git
synced 2026-05-12 08:43:02 +08:00
refactor(model): expose stream chat lifecycle callbacks
This commit is contained in:
@@ -49,8 +49,7 @@ data class ReplyEvent @JvmOverloads constructor(
|
||||
override val target: String,
|
||||
val content: String,
|
||||
val mode: ContentMode = ContentMode.REPLACE,
|
||||
val seq: Long? = null,
|
||||
val done: Boolean = false
|
||||
val seq: Long? = null
|
||||
) : InteractionEvent() {
|
||||
override val event = Event.REPLY
|
||||
|
||||
|
||||
@@ -15,11 +15,12 @@ interface ActivateModel {
|
||||
|
||||
fun streamChat(
|
||||
messages: List<Message>,
|
||||
handler: StreamChatMessageConsumer
|
||||
consumer: StreamChatMessageConsumer
|
||||
): Result<Unit> {
|
||||
return ModelRuntimeRegistry.resolveProvider(modelKey())
|
||||
.streamChat(mergeMessages(messages), handler)
|
||||
.onFailure { ExceptionReporterHandler.report(it) }
|
||||
.streamChat(mergeMessages(messages), consumer)
|
||||
.onSuccess { consumer.onComplete() }
|
||||
.onFailure { consumer.onError(it) }
|
||||
}
|
||||
|
||||
fun <T : Any> formattedChat(messages: List<Message>, responseType: Class<T>): Result<T> {
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
package work.slhaf.partner.framework.agent.model;
|
||||
|
||||
public abstract class StreamChatMessageConsumer {
|
||||
private final StringBuilder responseText = new StringBuilder();
|
||||
import work.slhaf.partner.framework.agent.exception.AgentRuntimeException;
|
||||
|
||||
public void onDelta(String delta) {
|
||||
consumeDelta(delta);
|
||||
responseText.append(delta);
|
||||
public interface StreamChatMessageConsumer {
|
||||
|
||||
void onDelta(String delta);
|
||||
|
||||
default void onComplete() {
|
||||
}
|
||||
|
||||
public String collectResponse() {
|
||||
return responseText.toString();
|
||||
default void onError(AgentRuntimeException exception) {
|
||||
}
|
||||
|
||||
protected abstract void consumeDelta(String delta);
|
||||
String collectResponse();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user