Como integrar C# e ChatGPT: guia completo de integração
\n\nImagine: sua aplicação em C# de repente começa não apenas a executar comandos, mas a manter um diálogo significativo, escrever código, traduzir textos ou gerar ideias. Parece ficção científica? Mas isso já é realidade graças à integração da API ChatGPT em C#. Hoje vou mostrar como transformar um programa de console comum em um assistente inteligente em 15 minutos. Vamos lá!
\n\nA OpenAI fornece uma API REST poderosa que se dá muito bem com .NET. Você não precisa de SDKs de terceiros — basta o HttpClient padrão e algumas bibliotecas para trabalhar com JSON. Todo o processo se resume a quatro passos: obter a chave, enviar a requisição, analisar a resposta e comemorar o resultado.
O que precisamos para começar
\n\nAntes de escrever código, vamos preparar o ambiente. Você vai precisar de:
\n\n- \n
- Visual Studio 2022 ou JetBrains Rider (mas também pode usar o .NET SDK comum + bloco de notas) \n
- .NET 6.0 ou superior (estou usando .NET 8 — é mais rápido) \n
- Chave da API OpenAI — registre-se em platform.openai.com, vá até a seção API Keys e crie uma nova chave secreta. Atenção: na primeira vez, eles dão $5 para testes, mas não se esqueça dos limites! \n
- Biblioteca Newtonsoft.Json ou System.Text.Json (embutida no .NET, mas prefiro Newtonsoft — é mais clara) \n
Instale o Newtonsoft.Json via NuGet: Install-Package Newtonsoft.Json ou através do gerenciador de pacotes no Visual Studio.
Criando a primeira requisição ao ChatGPT em C#
\n\nVamos começar com algo simples: enviar uma mensagem para o modelo e obter uma resposta. Toda a mágica acontece através de uma requisição POST para o endpoint https://api.openai.com/v1/chat/completions.
Aqui está o código funcional mínimo que recomendo salvar como ponto de partida:
\n\nusing 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 = "SUA_CHAVE_AQUI"; // Não mostre a ninguém!\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 = "Conte uma piada 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 diz:");\n Console.WriteLine(reply);\n }\n}\n\n\nExecute — e o console exibirá algo como: «Por que os programadores confundem Halloween com Natal? Porque Oct 31 == Dec 25!». Engraçado? Funciona? Ótimo!
\n\nAnalisando o código em detalhes
\n\nVamos ver o que está acontecendo aqui. Criamos um HttpClient, adicionamos o cabeçalho de autorização — esta é uma prática padrão para trabalhar com a API OpenAI em C#. O corpo da requisição é um objeto JSON com parâmetros:
- \n
- model: especificamos o modelo.
gpt-3.5-turboé o meio-termo ideal entre custo e qualidade. Para tarefas complexas, usegpt-4, mas prepare-se para pagar mais. \n Blogs
Book Recommendations
Leia também
Principais erros de desenvolvedores PHP iniciantes — parte 4: Trabalhando com dados
TypeScript em 2025: novos recursos para desenvolvedores iniciantes
Como converter um array de bytes com caractere nulo em string em Go
static_cast vs C-style cast em C++: o que escolher e por quê?
Clean Code em Kotlin: princípios e exemplos na prática