我在 api 端点中有一个代码,它应该在收到结果后立即产生结果 -
var azResponse = await _openAIRepository.GetStreamingResponse(rawAzureOpenAIRequest.Model, optns,
canToken);
await foreach (var choice in azResponse.Value.GetChoicesStreaming())
{
await foreach (var message in choice.GetTextStreaming())
{
yield return message;
await Task.Delay(10000);
}
}
我的消费 api 如下, 它没有在每次收益返回后在消费 api 中遇到断点,这是我的问题,即控制在每次收益返回后都不会返回到消费 api。我希望一旦从上面的第一个 api 返回一条消息,消费 api 就应该收到它。
using HttpResponseMessage response = await Client.GetAsync(
"http://localhost...",
HttpCompletionOption.ResponseHeadersRead
).ConfigureAwait(false);
response.EnsureSuccessStatusCode();
Stream responseStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false);
IAsyncEnumerable<object> messages = JsonSerializer.DeserializeAsyncEnumerable<object>(responseStream,
new JsonSerializerOptions
{
PropertyNameCaseInsensitive = true,
DefaultBufferSize = 10
});
Response.Headers.Add("Content-Type", "text/event-stream");
await foreach (var message in messages)
{
debugger;
byte[] messageBytes = ASCIIEncoding.ASCII.GetBytes("data:" + message + "\n\n");
await Response.Body.WriteAsync(messageBytes, 0, messageBytes.Length);
await Response.Body.FlushAsync();
}
有人可以解释为什么会这样吗。
我曾尝试添加延迟以检查控制是否在产生回报后返回使用 api,但事实并非如此。