OpenAI API – получить ответ ChatGPT на C#

—

от автора

В мире развивающегося искусственного интеллекта доступ к таким технологиям, как ChatGPT от OpenAI, становится все более востребованным. Для облегчения процесса взаимодействия с этим инструментом я запилил класс AmChat, который предоставляет простой и удобный способ отправки запросов к API ChatGPT и получения ответов. В этой статье мы рассмотрим особенности класса AmChat и его использование для быстрого и эффективного получения ответов от ChatGPT в вашем коде на C#.

Класс AmChat имеет только один публичный метод – GetAnswer, который является статическим и асинхронным. Этот метод принимает вопрос в качестве параметра и возвращает ответ от ChatGPT.

Благодаря тому, что метод GetAnswer является статическим и асинхронным, его использование становится очень простым и удобным. Программист может вызвать этот метод и дождаться ответа с помощью ключевого слова await, что значительно упрощает код и делает его более читаемым.

AmChat обеспечивает надежную обработку возможных ошибок, которые могут возникнуть при взаимодействии с API ChatGPT. Это позволяет повысить стабильность и надежность приложений, использующих этот класс.

Рассмотрим пример использования класса AmChat:

if(txt == null) return; string ansver = await AmChat.GetAnswer(txt); await SendMessageToOne(chatId, ansver);

так, например, можно послать ответ нейросети в чат телеграмма. Да, вопрос можно получить в телеге, через бота и выдать ответ человеку в его чат.

Ниже полный код класса AmChat:

using CaSecrets; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System.Net; using System.Text; using System.Text.RegularExpressions;  namespace ChatGPT1;  public class AmChat {     static string questionTemplate = @"{         ""model"": ""gpt-3.5-turbo"",         ""messages"": [             {                 ""role"": ""system"",                 ""content"": ""You are a helpful assistant.""             },             {                 ""role"": ""user"",                 ""content"": ""{0}""             }         ]     }";      public static async Task<string> GetAnswer(string question)     {         //question = CleanseString(question);         string jsonContent = questionTemplate.Replace("{0}", question);          var httpClient = new HttpClient();         var request = new HttpRequestMessage         {             Method = HttpMethod.Post,             RequestUri = new Uri("https://api.openai.com/v1/chat/completions"),             Headers =             {                 { HttpRequestHeader.ContentType.ToString(), "application/json" },                 { HttpRequestHeader.Authorization.ToString(), "Bearer " + Secrets.OPENAI_API_KEY},             },             Content = new StringContent(jsonContent, Encoding.UTF8, "application/json")         };          var response = await httpClient.SendAsync(request);         string answer = await GetClearAnswerFromResponse(response);          Db.SaveQA(question, answer);         return answer;     }      static async Task<string> GetClearAnswerFromResponse(HttpResponseMessage response)     {         if (response.IsSuccessStatusCode)         {             var responseContent = await response.Content.ReadAsStringAsync();             var parsedResponse = JObject.Parse(responseContent);              var choices = parsedResponse["choices"];             if (choices == null) return "*** 1";             if (choices.Count() == 0) return "*** 2";             if (choices[0] == null) return "*** 3";             var message = choices![0]!["message"];             if (message == null) return "*** 4";             if (message["content"] == null) return "*** 5";             var answer = message["content"]!.ToString();              return answer;         }          var errorContent = await response.Content.ReadAsStringAsync();         return $"Error: {response.StatusCode}, Content: {errorContent}";     }     static string CleanseString(string input)     {         return JsonConvert.ToString(input);     } }

Заключение

Класс AmChat представляет собой удобный инструмент для взаимодействия с ChatGPT через его API. Обеспечивает простоту использования благодаря своему единственному публичному статическому и асинхронному методу GetAnswer, который упрощает процесс получения ответов от ChatGPT. Надеюсь кому то помог.

PS:

Текст этой статьи помогал писать ChatGPT.


ссылка на оригинал статьи https://habr.com/ru/articles/809873/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *