feat: 新增取消功能
This commit is contained in:
@@ -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); // 确保立即推送数据
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user