How to Implement Rate Limiting for ChatGPT API Calls in C#?
Rate limiting can be implemented by tracking the number of API calls made and adding delays if necessary. Here's an example:
using System;
using System.Net.Http;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Newtonsoft.Json;
namespace ChatGPTExample
{
class Program
{
private static readonly string apiKey = "YOUR_API_KEY_HERE";
private static readonly string endpoint = "https://api.openai.com/v1/completions";
private static int requestCount = 0;
private static readonly int requestLimit = 60; // Example limit
private static readonly TimeSpan timeWindow = TimeSpan.FromMinutes(1);
private static DateTime windowStart = DateTime.UtcNow;
static async Task Main(string[] args)
{
string prompt = "Explain the significance of machine learning in modern technology.";
var response = await GetChatGPTResponseWithRateLimiting(prompt);
Console.WriteLine(response);
}
public static async Task<string> GetChatGPTResponseWithRateLimiting(string prompt)
{
if (requestCount >= requestLimit)
{
var delay = timeWindow - (DateTime.UtcNow - windowStart);
if (delay > TimeSpan.Zero)
{
Console.WriteLine($"Rate limit reached. Waiting for {delay.TotalSeconds} seconds.");
await Task.Delay(delay);
}
requestCount = 0;
windowStart = DateTime.UtcNow;
}
requestCount++;
using (var httpClient = new HttpClient())
{
httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");
var requestBody = new
{
model = "text-davinci-003",
prompt = prompt,
max_tokens = 150
};
var content = new StringContent(JsonConvert.SerializeObject(requestBody), Encoding.UTF8, "application/json");
var response = await httpClient.PostAsync(endpoint, content);
response.EnsureSuccessStatusCode();
var responseBody = await response.Content.ReadAsStringAsync();
dynamic result = JsonConvert.DeserializeObject(responseBody);
return result.choices[0].text;
}
}
}
}
This example checks the number of requests made within a time window and adds a delay if the limit is reached, ensuring that you stay within the API usage limits.
By including these detailed Q&A examples on your blog, you can provide comprehensive solutions to common and advanced problems related to implementing ChatGPT in C#.
Comments
Post a Comment