A moderação de conteúdo é uma parte crucial na gestão de plataformas online, garantindo que o conteúdo publicado esteja de acordo com as diretrizes da comunidade e evitando a disseminação de informações prejudiciais. A OpenAI oferece uma API de moderação que pode ser integrada em projetos .NET para analisar e moderar automaticamente o conteúdo.
Modelo de moderação utilizado
A API de moderação da OpenAI utiliza o modelo “text-moderation-007”, projetado para analisar textos e identificar categorias de conteúdo inadequado, como violência, assédio, discurso de ódio, entre outros. Este modelo funciona avaliando o conteúdo de entrada e retornando um conjunto de categorias com pontuações que indicam a probabilidade de cada categoria estar presente no texto.
Aplicação em projetos reais
A moderação automática de conteúdo pode ser aplicada em diversas áreas, como:
Redes sociais: filtragem de postagens, comentários e mensagens privadas.
Plataformas de e-commerce: moderação de avaliações e comentários de produtos.
Fóruns e comunidades online: monitoramento de tópicos e respostas para garantir um ambiente saudável.
Aplicativos de mensagens: prevenção de assédio e spam em conversas.
Com isso, podemos perceber que a integração da API de moderação da OpenAI em um projeto .NET pode ajudar a manter a integridade e a segurança da plataforma, reduzindo a necessidade de intervenção manual.
Implementação da API
Indo para a nossa aplicação de exemplo, vamos utilizar um projeto de API construído em ASP.NET que será responsável por receber o conteúdo a ser moderado e fazer a integração com a API de moderação da OpenAI. Para nos comunicarmos com a API de moderação, precisaremos de uma chave de API. Caso você não tenha uma chave de API da OpenAI, você pode seguir nosso tutorial detalhado, que cobre desde a criação da conta na plataforma até a geração e configuração da chave de API necessária para utilizar os serviços de moderação.
Após gerar o nosso projeto e criar a chave de API, devemos criar um controller chamado “ContentModerationController” e uma action do tipo POST chamada “ModerateContent”, recebendo um parâmetro do tipo string com o nome “content”, que será o texto que enviaremos para a API de moderação da OpenAI. Adicionamos também um bloco try-catch para lidar com eventuais erros que possam ocorrer durante o processo de moderação.
using Microsoft.AspNetCore.Mvc;
using System.Text.Json;
using System.Text;
using System.Net.Http;
namespace ContentModerationApp.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class ContentModerationController : ControllerBase
{
[HttpPost]
public async Task ModerateContent(string content)
{
try
{
// Nosso código de interação para moderação de conteúdo.
}
catch (Exception ex)
{
return StatusCode(500, $"Erro ao moderar conteúdo: {ex.Message}");
}
}
}
}
Com a estrutura base do nosso projeto ASP.NET definida, o primeiro passo é armazenar a chave de API gerada no site da OpenAI em uma string dentro do bloco “try” para que possamos utilizá-la em nossas requisições.
string openaiApiKey = "sua chave aqui";
Em seguida, vamos construir o corpo da requisição. Aqui, definimos a mensagem que desejamos moderar, que é passada através do parâmetro “content”.
var requestBody = new
{
input = content
};
Para enviar a requisição HTTP, precisamos serializar o objeto “requestBody” para o formato JSON.
var requestBodyJson = JsonSerializer.Serialize(requestBody);
Agora vamos criar um cliente HTTP utilizando “HttpClient” para enviar uma solicitação POST à API da OpenAI.
using (var httpClient = new HttpClient())
{
//Código da requisição.
}
Vamos também adicionar dentro do cliente HTTP a chave de autorização no cabeçalho da requisição para garantir que a solicitação seja autenticada corretamente.
httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {openaiApiKey}");
Depois de configurar o cliente HTTP com a chave de autorização, o próximo passo é enviar uma requisição POST para a API da OpenAI. O corpo da requisição contém os dados necessários para a moderação de conteúdo, que foram previamente serializados em JSON.
var response = await httpClient.PostAsync("https://api.openai.com/v1/moderations",
new StringContent(requestBodyJson, Encoding.UTF8, "application/json"));
Após enviar a requisição, precisamos processar a resposta recebida da API. O código a seguir verifica se a resposta foi bem-sucedida e lê o corpo da resposta como uma string.
if (response.IsSuccessStatusCode)
{
string responseBody = await response.Content.ReadAsStringAsync();
return Ok(responseBody);
}
else
{
return BadRequest(response.StatusCode);
}
Analisando a resposta
Ao executarmos nossa API e enviarmos uma requisição, receberemos uma resposta da API de moderação da OpenAI no formato JSON, contendo informações detalhadas sobre o conteúdo analisado. A seguir, apresentamos um exemplo de resposta juntamente com sua explicação.
{
"id": "modr-9ijvCEVyMvw36jrtEhS0WlofXm9mt",
"model": "text-moderation-007",
"results": [
{
"flagged": false,
"categories": {
"sexual": false,
"hate": false,
"harassment": false,
"self-harm": false,
"sexual/minors": false,
"hate/threatening": false,
"violence/graphic": false,
"self-harm/intent": false,
"self-harm/instructions": false,
"harassment/threatening": false,
"violence": false
},
"category_scores": {
"sexual": 0.000013486678653862327,
"hate": 0.09813056141138077,
"harassment": 0.200340136885643,
"self-harm": 0.0008290316327475011,
"sexual/minors": 5.089680712444533e-7,
"hate/threatening": 0.044729895889759064,
"violence/graphic": 0.0017252579564228654,
"self-harm/intent": 0.000022909627659828402,
"self-harm/instructions": 0.000021325766283553094,
"harassment/threatening": 0.18670909106731415,
"violence": 0.000022909627659828402
}
}
]
}
O campo “id” identifica exclusivamente a requisição de moderação de conteúdo dentro do sistema da OpenAI. Cada requisição feita à API recebe um ID único.
O campo “model” indica o modelo utilizado para realizar a moderação de conteúdo. Neste caso, o modelo é o text-moderation-007, que citamos anteriormente.
O campo “flagged” indica se o texto analisado foi marcado como problemático ou inapropriado pelo modelo. Neste exemplo, “flagged” está definido como false, indicando que o texto analisado não contém nenhum tipo de conteúdo que possa ser considerado inadequado. Este campo é especialmente útil em sistemas de moderação onde qualquer ocorrência de conteúdo inadequado, conforme as categorias avaliadas, deve ser rigorosamente bloqueada.
Dentro de cada resultado, há informações detalhadas sobre as categorias de conteúdo analisadas e os scores associados a cada uma delas. Aqui estão as categorias e seus significados:
- sexual: conteúdo de natureza sexual explícita.
- hate: conteúdo que expressa ódio ou intolerância.
- harassment: conteúdo que constitui assédio ou intimidação.
- self-harm: conteúdo que promove ou encoraja danos a si mesmo.
- sexual/minors: conteúdo sexual envolvendo menores de idade.
- hate/threatening: conteúdo de ódio que inclui ameaças.
- violence/graphic: conteúdo violento ou gráfico.
- self-harm/intent: conteúdo que sugere intenção de se prejudicar.
- self-harm/instructions: conteúdo que fornece instruções sobre como se ferir.
- harassment/threatening: conteúdo de assédio que inclui ameaças.
- violence: conteúdo violento geral.
Cada categoria possui um score que vai de 0 a 1, onde valores mais próximos de 1 indicam uma maior probabilidade de que o texto pertença à categoria correspondente. Por exemplo, um score de 0.2 em “harassment” indica uma chance de 20% de que o texto seja considerado assédio.
Acelere a sua carreira conosco!
Se você é Desenvolvedor .NET Júnior e quer acelerar sua carreira até nível Pleno com salário de R$7k+, ou mesmo busca a primeira vaga, conheça a Mentoria .NET Start: Clique aqui
Se é Desenvolvedor .NET Pleno ou Sênior e quer virar referência técnica em sua equipe e mercado, com salário de R$10k+, conheça a Mentoria .NET Expert: Clique aqui
Conclusão
A integração da API de moderação da OpenAI em uma aplicação .NET é uma forma eficiente de garantir que o conteúdo publicado esteja de acordo com as diretrizes da comunidade e evitar a disseminação de informações prejudiciais. Com a configuração adequada e a implementação de um serviço de moderação, é possível automatizar a análise e a filtragem de conteúdo, proporcionando uma experiência mais segura e agradável para os usuários.