Как отправлять запросы к ChatGPT в России?

using System.Net.Http.Json;
using System.Text.Json.Serialization;

// токен из личного кабинета
string apiKey = "sk-***";
// адрес api для взаимодействия с чат-ботом
string endpoint = "https://api.openai.com/v1/chat/completions";
// набор соообщений диалога с чат-ботом
List<Message> messages = new List<Message>();
// HttpClient для отправки сообщений
var httpClient = new HttpClient();
// устанавливаем отправляемый в запросе токен
httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");

while (true)
{
    // ввод сообщения пользователя
    Console.Write("User: ");
    var content = Console.ReadLine();

    // если введенное сообщение имеет длину меньше 1 символа
    // то выходим из цикла и завершаем программу
    if (content is not { Length: > 0 }) break;
    // формируем отправляемое сообщение
    var message = new Message() { Role = "user", Content = content };
    // добавляем сообщение в список сообщений
    messages.Add(message);

    // формируем отправляемые данные
    var requestData = new Request()
    {
        ModelId = "gpt-3.5-turbo",
        Messages = messages
    };
    // отправляем запрос
    using var response = await httpClient.PostAsJsonAsync(endpoint, requestData);

    // если произошла ошибка, выводим сообщение об ошибке на консоль
    if (!response.IsSuccessStatusCode)
    {
        Console.WriteLine($"{(int)response.StatusCode} {response.StatusCode}");
        break;
    }
    // получаем данные ответа
    ResponseData? responseData = await response.Content.ReadFromJsonAsync<ResponseData>();

    var choices = responseData?.Choices ?? new List<Choice>();
    if (choices.Count == 0)
    {
        Console.WriteLine("No choices were returned by the API");
        continue;
    }
    var choice = choices[0];
    var responseMessage = choice.Message;
    // добавляем полученное сообщение в список сообщений
    messages.Add(responseMessage);
    var responseText = responseMessage.Content.Trim();
    Console.WriteLine($"ChatGPT: {responseText}");
}

// класс сообщения
class Message
{
    [JsonPropertyName("role")]
    public string Role { get; set; } = "";
    [JsonPropertyName("content")]
    public string Content { get; set; } = "";
}
class Request
{
    [JsonPropertyName("model")]
    public string ModelId { get; set; } = "";
    [JsonPropertyName("messages")]
    public List<Message> Messages { get; set; } = new();
}

class ResponseData
{
    [JsonPropertyName("id")]
    public string Id { get; set; } = "";
    [JsonPropertyName("object")]
    public string Object { get; set; } = "";
    [JsonPropertyName("created")]
    public ulong Created { get; set; }
    [JsonPropertyName("choices")]
    public List<Choice> Choices { get; set; } = new();
    [JsonPropertyName("usage")]
    public Usage Usage { get; set; } = new();
}

class Choice
{
    [JsonPropertyName("index")]
    public int Index { get; set; }
    [JsonPropertyName("message")]
    public Message Message { get; set; } = new();
    [JsonPropertyName("finish_reason")]
    public string FinishReason { get; set; } = "";
}

class Usage
{
    [JsonPropertyName("prompt_tokens")]
    public int PromptTokens { get; set; }
    [JsonPropertyName("completion_tokens")]
    public int CompletionTokens { get; set; }
    [JsonPropertyName("total_tokens")]
    public int TotalTokens { get; set; }
}

Использовал это ,чтобы через код обращаться к ChatGPT.

Возвращается ошибка 403, ибо он недоступен в России.

Как изменить код, чтобы получать ответы от ChatGPT?


Ответы (0 шт):