如何在 C# 和 .NET 中实现像 ChatGPT 那样的流式消息

问题描述 投票:0回答:1

我想创建一个 C# .NET 服务器客户端应用程序,其中客户端发送请求,服务器发送答案。问题是,因为响应是相当大的文本数据,所以我希望在服务器生成部分答案后立即收到分块的答案。这个想法是以 ChatGPT 分块发送聊天消息的方式接收这些块,而不是一次全部发送。

在 C# 和 .NET 中,有哪些可用且最佳的技术可以实现这一目标?是否可以使用 REST 执行某种服务器发送事件,或者是否有更好的方法?

c# .net stream streaming
1个回答
0
投票

几乎所有选项都已摆在桌面上。对于 HTTP API,您可以返回

Stream
作为响应正文,使用
IEnumerable<string>
IAsyncEnumerable<string>
。或者您可以使用 SignalR,它将使用 WebSockets、SSE 或长轮询,具体取决于可用的内容。请记住,通常其他缓冲区位于两者之间,因此并非来自
yield
的每个
IEnumerable
都会立即发送到线路。而且您还必须正确读取客户端的流式响应。

参见示例:https://okankaradag.com/en/net-6-0/streaming-json-response-with-iasyncenumerable-in-net-6-0-and-example-fetch-in-javascript

© www.soinside.com 2019 - 2024. All rights reserved.