Neste artigo, você vai aprender como:
- Criar uma WebAPI com .NET 8
- Integrar com um modelo LLM via API REST (ex: ChatGPT / OpenAI)
- Fazer requisições do cliente para geração de resposta baseada em texto
- Ter uma base pronta para expandir para agentes inteligentes, bots e automações
🧰 Tecnologias Utilizadas
Tecnologia | Descrição |
---|---|
.NET 8 | Framework backend moderno da Microsoft |
ASP.NET Web API | API RESTful com C# |
HttpClient | Cliente HTTP para integrar com a API do LLM |
OpenAI API | Serviço de LLM (GPT-3.5, GPT-4, etc.) |
🎯 Objetivo
Criar um endpoint que recebe uma pergunta via HTTP POST
e retorna a resposta da LLM (por exemplo, GPT-4 via OpenAI API).
⚙️ Criando o Projeto .NET
dotnet new webapi -n LlmApiExample
cd LlmApiExample
📦 Instalando Dependências
dotnet add package Microsoft.Extensions.Http
Você também pode usar o pacote OpenAI oficial:
dotnet add package OpenAI
📁 Estrutura do Projeto
LlmApiExample/
├── Controllers/
│ └── ChatController.cs
├── Services/
│ └── OpenAiService.cs
├── Models/
│ ├── ChatRequest.cs
│ └── ChatResponse.cs
├── Program.cs
└── appsettings.json
📄 Models
ChatRequest.cs
namespace LlmApiExample.Models;
public class ChatRequest
{
public string Question { get; set; } = string.Empty;
}
ChatResponse.cs
namespace LlmApiExample.Models;
public class ChatResponse
{
public string Answer { get; set; } = string.Empty;
}
💬 OpenAI Service
OpenAiService.cs
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;
using LlmApiExample.Models;
namespace LlmApiExample.Services;
public class OpenAiService
{
private readonly HttpClient _httpClient;
private readonly string _apiKey;
public OpenAiService(IConfiguration config)
{
_httpClient = new HttpClient();
_apiKey = config["OpenAI:ApiKey"]!;
_httpClient.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", _apiKey);
}
public async Task<string> AskChatGptAsync(string prompt)
{
var payload = new
{
model = "gpt-3.5-turbo",
messages = new[] {
new { role = "user", content = prompt }
}
};
var content = new StringContent(
JsonSerializer.Serialize(payload),
Encoding.UTF8,
"application/json");
var response = await _httpClient
.PostAsync("https://api.openai.com/v1/chat/completions", content);
var responseString = await response.Content.ReadAsStringAsync();
using var jsonDoc = JsonDocument.Parse(responseString);
return jsonDoc
.RootElement
.GetProperty("choices")[0]
.GetProperty("message")
.GetProperty("content")
.GetString()!;
}
}
🎛️ Controller
ChatController.cs
using Microsoft.AspNetCore.Mvc;
using LlmApiExample.Models;
using LlmApiExample.Services;
namespace LlmApiExample.Controllers;
[ApiController]
[Route("api/[controller]")]
public class ChatController : ControllerBase
{
private readonly OpenAiService _openAiService;
public ChatController(OpenAiService openAiService)
{
_openAiService = openAiService;
}
[HttpPost]
public async Task<IActionResult> Ask([FromBody] ChatRequest request)
{
var answer = await _openAiService.AskChatGptAsync(request.Question);
return Ok(new ChatResponse { Answer = answer });
}
}
🔧 Configuração do Program.cs
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddSingleton<OpenAiService>();
var app = builder.Build();
app.UseSwagger();
app.UseSwaggerUI();
app.UseAuthorization();
app.MapControllers();
app.Run();
🔐 appsettings.json
{
"OpenAI": {
"ApiKey": "SUA_CHAVE_SECRETA"
}
}
▶️ Executando a API
dotnet run
Acesse o Swagger em:
https://localhost:5001/swagger
Teste o endpoint POST /api/chat
com:
{
"question": "Explique o que é arquitetura hexagonal."
}
📦 Expansões Futuras
- Suporte a múltiplos modelos (Claude, Mistral, LLaMA)
- Integração com agentes que mantêm contexto
- Limite de tokens / guardrails
- Logs e telemetria com OpenTelemetry
- Integração com frontend (Blazor/React)
✅ Conclusão
Você agora possui uma WebAPI funcional em .NET integrada com LLMs. Isso serve como base para:
- Chatbots inteligentes
- Agentes de automação
- Integração com CRMs, ERPs e mais
- Aplicações corporativas com IA generativa
Construa, teste, e comece a criar APIs inteligentes hoje.
🤝 Conecte-se Comigo
Fique à vontade para conversar sobre IA, .NET, APIs e arquitetura moderna:
- ✍️ Medium
- 📬 contato@dopme.io
²² Porventura há, entre as vaidades dos gentios, alguém que faça chover? Ou podem os céus dar chuvas? Não és tu, ó Senhor nosso Deus? Portanto em ti esperamos, pois tu fazes todas estas coisas.
Jeremias 14:22
Top comments (0)