feat: 新增取消功能
This commit is contained in:
@@ -66,14 +66,15 @@ public class AiService : ApplicationService
|
|||||||
/// 发送消息
|
/// 发送消息
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input"></param>
|
/// <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 httpContext = this.httpContextAccessor.HttpContext;
|
||||||
var response = httpContext.Response;
|
var response = httpContext.Response;
|
||||||
// 设置响应头,声明是 SSE 流
|
// 设置响应头,声明是 SSE 流
|
||||||
response.ContentType = "text/event-stream";
|
response.ContentType = "text/event-stream";
|
||||||
response.Headers.Add("Cache-Control", "no-cache");
|
response.Headers.Append("Cache-Control", "no-cache");
|
||||||
response.Headers.Add("Connection", "keep-alive");
|
response.Headers.Append("Connection", "keep-alive");
|
||||||
|
|
||||||
|
|
||||||
var chatCompletionService = this._skClient.Kernel.GetRequiredService<IChatCompletionService>(input.Model);
|
var chatCompletionService = this._skClient.Kernel.GetRequiredService<IChatCompletionService>(input.Model);
|
||||||
@@ -97,7 +98,8 @@ public class AiService : ApplicationService
|
|||||||
var results = chatCompletionService.GetStreamingChatMessageContentsAsync(
|
var results = chatCompletionService.GetStreamingChatMessageContentsAsync(
|
||||||
chatHistory: history,
|
chatHistory: history,
|
||||||
executionSettings: openSettings,
|
executionSettings: openSettings,
|
||||||
kernel: _skClient.Kernel);
|
kernel: _skClient.Kernel,
|
||||||
|
cancelToken);
|
||||||
|
|
||||||
|
|
||||||
await using var writer = new StreamWriter(response.Body, Encoding.UTF8, leaveOpen: true);
|
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.WriteLineAsync($"data: {message}\n");
|
||||||
await writer.FlushAsync(); // 确保立即推送数据
|
await writer.FlushAsync(cancelToken); // 确保立即推送数据
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user