OpenAI-API-dotnet
OpenAI-API-dotnet copied to clipboard
StreamResponseFromChatbotAsync System.ArgumentException:
var chat = api.Chat.CreateConversation();
chat.AppendUserInput("Hi!");
await chat.StreamResponseFromChatbotAsync(res =>
{
Console.Write(res);
});
未经处理的异常: System.ArgumentException: 流不可读。
在 System.IO.StreamReader..ctor(Stream stream, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize, Boolean leaveOpen)
在 System.IO.StreamReader..ctor(Stream stream)
在 OpenAI_API.EndpointBase.<HttpStreamingRequest>d__161.MoveNext() --- 引发异常的上一位置中堆栈跟踪的末尾 --- 在 System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore
1.GetResult(Int16 token)
在 OpenAI_API.EndpointBase.<HttpStreamingRequest>d__161.System.Threading.Tasks.Sources.IValueTaskSource<System.Boolean>.GetResult(Int16 token) 在 OpenAI_API.Chat.Conversation.<StreamResponseEnumerableFromChatbotAsync>d__26.MoveNext() --- 引发异常的上一位置中堆栈跟踪的末尾 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 OpenAI_API.Chat.Conversation.<StreamResponseEnumerableFromChatbotAsync>d__26.MoveNext() --- 引发异常的上一位置中堆栈跟踪的末尾 --- 在 System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore
1.GetResult(Int16 token)
在 OpenAI_API.Chat.Conversation.<StreamResponseEnumerableFromChatbotAsync>d__26.System.Threading.Tasks.Sources.IValueTaskSource<System.Boolean>.GetResult(Int16 token)
在 OpenAI_API.Chat.Conversation.<StreamResponseFromChatbotAsync>d__24.MoveNext()
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
在 OpenAI_API.Chat.Conversation.<StreamResponseFromChatbotAsync>d__24.MoveNext()
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
在 System.Runtime.CompilerServices.TaskAwaiter.GetResult()
在 GPTTest.Program.<>c.<<Main>b__0_0>d.MoveNext() 位置 C:\Users\Administrator\RiderProjects\GPTTest\GPTTest\Program.cs:行号 20
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
在 System.Runtime.CompilerServices.TaskAwaiter.GetResult()
在 GPTTest.Program.Main(String[] args) 位置 C:\Users\Administrator\RiderProjects\GPTTest\GPTTest\Program.cs:行号 15
请按任意键继续. . .
What I'd like to know is how to catch an error and handle it gracefully. I'm just getting a plain 500 error returned with no detail.
var chat = api.Chat.CreateConversation();
chat.AppendUserInput("How to make a hamburger?");
await foreach (var res in chat.StreamResponseEnumerableFromChatbotAsync())
{
yield return res;
}
If I pass too long a string it throws an error, fair enough. But how to catch it in the example above?
How does StreamResponseFromChatbotAsync work? After I call it, the API only returns the first word, await chat.StreamResponseFromChatbotAsync The code page after the line does not run and is blocked.
How does StreamResponseFromChatbotAsync work? After I call it, the API only returns the first word, await chat.StreamResponseFromChatbotAsync The code page after the line does not run and is blocked.
This article helped me a lot. It's quite fiddly though! https://medium.com/@markotny97/streaming-iasyncenumerable-to-rxjs-front-end-8eb5323ca282