Integración de C# con ChatGPT API: guía paso a paso

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Cómo hacer que C# y ChatGPT se lleven bien: guía completa de integración

\n\n

Imagine: su aplicación en C# de repente no solo ejecuta comandos, sino que mantiene un diálogo significativo, escribe código, traduce textos o genera ideas. ¿Suena a ciencia ficción? Pues ya es una realidad gracias a la integración de ChatGPT API en C#. Hoy les mostraré cómo convertir un programa de consola común en un asistente inteligente en 15 minutos. ¡Allá vamos!

\n\n

OpenAI proporciona una potente REST API que se lleva muy bien con .NET. No necesita ningún SDK de terceros, solo el HttpClient estándar y un par de bibliotecas para trabajar con JSON. Todo el proceso se resume en cuatro pasos: obtener la clave, enviar la solicitud, analizar la respuesta y disfrutar del resultado.

\n\n

Qué necesitamos para empezar

\n\n

Antes de escribir código, preparemos el entorno. Necesitará:

\n\n
    \n
  • Visual Studio 2022 o JetBrains Rider (pero también puede usar el .NET SDK normal y un bloc de notas)
  • \n
  • .NET 6.0 o superior (yo uso .NET 8, es más rápido)
  • \n
  • Clave API de OpenAI: regístrese en platform.openai.com, vaya a la sección API Keys y cree una nueva clave secreta. Atención: la primera vez le dan $5 para pruebas, ¡pero no olvide los límites!
  • \n
  • Biblioteca Newtonsoft.Json o System.Text.Json (incluida en .NET, pero prefiero Newtonsoft porque es más clara)
  • \n
\n\n

Puede instalar Newtonsoft.Json a través de NuGet: Install-Package Newtonsoft.Json o mediante el administrador de paquetes en Visual Studio.

\n\n

Creando la primera solicitud a ChatGPT en C#

\n\n

Empecemos con algo simple: enviaremos un mensaje al modelo y obtendremos una respuesta. Toda la magia ocurre a través de una solicitud POST al endpoint https://api.openai.com/v1/chat/completions.

\n\n

Aquí tiene el código mínimo funcional que recomiendo guardar como punto de partida:

\n\n
using System;\nusing System.Net.Http;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Newtonsoft.Json;\nusing Newtonsoft.Json.Linq;\n\nclass Program\n{\n    private static readonly string apiKey = "SU_CLAVE_AQUI"; // ¡No se la muestre a nadie!\n    private static readonly string endpoint = "https://api.openai.com/v1/chat/completions";\n\n    static async Task Main(string[] args)\n    {\n        var client = new HttpClient();\n        client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");\n\n        var requestBody = new\n        {\n            model = "gpt-3.5-turbo",\n            messages = new[]\n            {\n                new { role = "user", content = "Cuenta un chiste sobre programadores" }\n            },\n            temperature = 0.7,\n            max_tokens = 150\n        };\n\n        var json = JsonConvert.SerializeObject(requestBody);\n        var content = new StringContent(json, Encoding.UTF8, "application/json");\n\n        var response = await client.PostAsync(endpoint, content);\n        var responseString = await response.Content.ReadAsStringAsync();\n\n        var responseObject = JObject.Parse(responseString);\n        var reply = responseObject["choices"][0]["message"]["content"].ToString();\n\n        Console.WriteLine("ChatGPT dice:");\n        Console.WriteLine(reply);\n    }\n}\n
\n\n

Lo ejecuta y la consola muestra algo como: «¿Por qué los programadores confunden Halloween con Navidad? ¡Porque Oct 31 == Dec 25!». ¿Divertido? ¿Funciona? ¡Genial!

\n\n

Analizando el código en detalle

\n\n

Veamos qué está pasando aquí. Creamos un HttpClient, añadimos el encabezado de autorización: esta es la práctica estándar para trabajar con la API de OpenAI en C#. El cuerpo de la solicitud es un objeto JSON con parámetros:

\n\n