feat: 新增取消功能

This commit is contained in:
ccnetcore
2025-06-19 22:24:21 +08:00
parent 8040010b98
commit bc91a8cff2

View File

@@ -66,14 +66,15 @@ public class AiService : ApplicationService
/// 发送消息
/// </summary>
/// <param name="input"></param>
public async Task PostSendAsync(SendMessageInput input)
/// <param name="cancelToken"></param>
public async Task PostSendAsync(SendMessageInput input,CancellationToken cancelToken)
{
var httpContext = this.httpContextAccessor.HttpContext;
var response = httpContext.Response;
// 设置响应头,声明是 SSE 流
response.ContentType = "text/event-stream";
response.Headers.Add("Cache-Control", "no-cache");
response.Headers.Add("Connection", "keep-alive");
response.Headers.Append("Cache-Control", "no-cache");
response.Headers.Append("Connection", "keep-alive");
var chatCompletionService = this._skClient.Kernel.GetRequiredService<IChatCompletionService>(input.Model);
@@ -97,7 +98,8 @@ public class AiService : ApplicationService
var results = chatCompletionService.GetStreamingChatMessageContentsAsync(
chatHistory: history,
executionSettings: openSettings,
kernel: _skClient.Kernel);
kernel: _skClient.Kernel,
cancelToken);
await using var writer = new StreamWriter(response.Body, Encoding.UTF8, leaveOpen: true);
@@ -110,7 +112,7 @@ public class AiService : ApplicationService
});
await writer.WriteLineAsync($"data: {message}\n");
await writer.FlushAsync(); // 确保立即推送数据
await writer.FlushAsync(cancelToken); // 确保立即推送数据
}
}