mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2025-02-05 11:49:06 +00:00
Fixed a streaming bug (#250)
This commit is contained in:
parent
187663bbf2
commit
258bc7a338
@ -76,13 +76,13 @@ public sealed class ProviderAnthropic(ILogger logger) : BaseProvider("https://ap
|
|||||||
return request;
|
return request;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send the request using exponential backoff:
|
// Send the request using exponential backoff:
|
||||||
using var responseData = await this.SendRequest(RequestBuilder, token);
|
var responseData = await this.SendRequest(RequestBuilder, token);
|
||||||
if(responseData.IsFailedAfterAllRetries)
|
if(responseData.IsFailedAfterAllRetries)
|
||||||
{
|
{
|
||||||
this.logger.LogError($"Anthropic chat completion failed: {responseData.ErrorMessage}");
|
this.logger.LogError($"Anthropic chat completion failed: {responseData.ErrorMessage}");
|
||||||
yield break;
|
yield break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Open the response stream:
|
// Open the response stream:
|
||||||
var stream = await responseData.Response!.Content.ReadAsStreamAsync(token);
|
var stream = await responseData.Response!.Content.ReadAsStreamAsync(token);
|
||||||
|
@ -82,13 +82,13 @@ public class ProviderFireworks(ILogger logger) : BaseProvider("https://api.firew
|
|||||||
return request;
|
return request;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send the request using exponential backoff:
|
// Send the request using exponential backoff:
|
||||||
using var responseData = await this.SendRequest(RequestBuilder, token);
|
var responseData = await this.SendRequest(RequestBuilder, token);
|
||||||
if(responseData.IsFailedAfterAllRetries)
|
if(responseData.IsFailedAfterAllRetries)
|
||||||
{
|
{
|
||||||
this.logger.LogError($"Fireworks chat completion failed: {responseData.ErrorMessage}");
|
this.logger.LogError($"Fireworks chat completion failed: {responseData.ErrorMessage}");
|
||||||
yield break;
|
yield break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Open the response stream:
|
// Open the response stream:
|
||||||
var fireworksStream = await responseData.Response!.Content.ReadAsStreamAsync(token);
|
var fireworksStream = await responseData.Response!.Content.ReadAsStreamAsync(token);
|
||||||
|
@ -83,13 +83,13 @@ public class ProviderGoogle(ILogger logger) : BaseProvider("https://generativela
|
|||||||
return request;
|
return request;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send the request using exponential backoff:
|
// Send the request using exponential backoff:
|
||||||
using var responseData = await this.SendRequest(RequestBuilder, token);
|
var responseData = await this.SendRequest(RequestBuilder, token);
|
||||||
if(responseData.IsFailedAfterAllRetries)
|
if(responseData.IsFailedAfterAllRetries)
|
||||||
{
|
{
|
||||||
this.logger.LogError($"Google chat completion failed: {responseData.ErrorMessage}");
|
this.logger.LogError($"Google chat completion failed: {responseData.ErrorMessage}");
|
||||||
yield break;
|
yield break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Open the response stream:
|
// Open the response stream:
|
||||||
var geminiStream = await responseData.Response!.Content.ReadAsStreamAsync(token);
|
var geminiStream = await responseData.Response!.Content.ReadAsStreamAsync(token);
|
||||||
|
@ -85,13 +85,13 @@ public class ProviderGroq(ILogger logger) : BaseProvider("https://api.groq.com/o
|
|||||||
return request;
|
return request;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send the request using exponential backoff:
|
// Send the request using exponential backoff:
|
||||||
using var responseData = await this.SendRequest(RequestBuilder, token);
|
var responseData = await this.SendRequest(RequestBuilder, token);
|
||||||
if(responseData.IsFailedAfterAllRetries)
|
if(responseData.IsFailedAfterAllRetries)
|
||||||
{
|
{
|
||||||
this.logger.LogError($"Groq chat completion failed: {responseData.ErrorMessage}");
|
this.logger.LogError($"Groq chat completion failed: {responseData.ErrorMessage}");
|
||||||
yield break;
|
yield break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Open the response stream:
|
// Open the response stream:
|
||||||
var groqStream = await responseData.Response!.Content.ReadAsStreamAsync(token);
|
var groqStream = await responseData.Response!.Content.ReadAsStreamAsync(token);
|
||||||
|
@ -84,13 +84,13 @@ public sealed class ProviderMistral(ILogger logger) : BaseProvider("https://api.
|
|||||||
return request;
|
return request;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send the request using exponential backoff:
|
// Send the request using exponential backoff:
|
||||||
using var responseData = await this.SendRequest(RequestBuilder, token);
|
var responseData = await this.SendRequest(RequestBuilder, token);
|
||||||
if(responseData.IsFailedAfterAllRetries)
|
if(responseData.IsFailedAfterAllRetries)
|
||||||
{
|
{
|
||||||
this.logger.LogError($"Mistral chat completion failed: {responseData.ErrorMessage}");
|
this.logger.LogError($"Mistral chat completion failed: {responseData.ErrorMessage}");
|
||||||
yield break;
|
yield break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Open the response stream:
|
// Open the response stream:
|
||||||
var mistralStream = await responseData.Response!.Content.ReadAsStreamAsync(token);
|
var mistralStream = await responseData.Response!.Content.ReadAsStreamAsync(token);
|
||||||
|
@ -112,13 +112,13 @@ public sealed class ProviderOpenAI(ILogger logger) : BaseProvider("https://api.o
|
|||||||
return request;
|
return request;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send the request using exponential backoff:
|
// Send the request using exponential backoff:
|
||||||
using var responseData = await this.SendRequest(RequestBuilder, token);
|
var responseData = await this.SendRequest(RequestBuilder, token);
|
||||||
if(responseData.IsFailedAfterAllRetries)
|
if(responseData.IsFailedAfterAllRetries)
|
||||||
{
|
{
|
||||||
this.logger.LogError($"OpenAI chat completion failed: {responseData.ErrorMessage}");
|
this.logger.LogError($"OpenAI chat completion failed: {responseData.ErrorMessage}");
|
||||||
yield break;
|
yield break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Open the response stream:
|
// Open the response stream:
|
||||||
var openAIStream = await responseData.Response!.Content.ReadAsStreamAsync(token);
|
var openAIStream = await responseData.Response!.Content.ReadAsStreamAsync(token);
|
||||||
|
@ -85,7 +85,7 @@ public sealed class ProviderSelfHosted(ILogger logger, Host host, string hostnam
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Send the request using exponential backoff:
|
// Send the request using exponential backoff:
|
||||||
using var responseData = await this.SendRequest(RequestBuilder, token);
|
var responseData = await this.SendRequest(RequestBuilder, token);
|
||||||
if(responseData.IsFailedAfterAllRetries)
|
if(responseData.IsFailedAfterAllRetries)
|
||||||
{
|
{
|
||||||
this.logger.LogError($"Self-hosted provider's chat completion failed: {responseData.ErrorMessage}");
|
this.logger.LogError($"Self-hosted provider's chat completion failed: {responseData.ErrorMessage}");
|
||||||
|
@ -10,14 +10,4 @@ public readonly record struct HttpRateLimitedStreamResult(
|
|||||||
bool IsSuccessful,
|
bool IsSuccessful,
|
||||||
bool IsFailedAfterAllRetries,
|
bool IsFailedAfterAllRetries,
|
||||||
string ErrorMessage,
|
string ErrorMessage,
|
||||||
HttpResponseMessage? Response) : IDisposable
|
HttpResponseMessage? Response);
|
||||||
{
|
|
||||||
#region IDisposable
|
|
||||||
|
|
||||||
public void Dispose()
|
|
||||||
{
|
|
||||||
this.Response?.Dispose();
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
}
|
|
@ -2,4 +2,5 @@
|
|||||||
- Added a button to remove a message from the chat thread.
|
- Added a button to remove a message from the chat thread.
|
||||||
- Added a button to regenerate the last AI response.
|
- Added a button to regenerate the last AI response.
|
||||||
- Added a button to edit the last user message.
|
- Added a button to edit the last user message.
|
||||||
- Added a button to stop the AI from generating a response.
|
- Added a button to stop the AI from generating a response.
|
||||||
|
- Fixed a streaming bug that was particularly visible with self-hosted providers.
|
Loading…
Reference in New Issue
Block a user