Futuro da seção de comentários
Ou como a IA generativa transformou Ted Lasso em meu novo moderador de bate-papo
Parte de uma série de postagens onde exploramos a prototipagem com IA generativa
A seção de comentários de sites e plataformas de mídia social sempre foi um espaço desafiador para um discurso produtivo. No entanto, a IA generativa oferece uma oportunidade promissora para resolver esse problema e criar um ambiente online mais construtivo. Este artigo é uma rápida exploração técnica de como prototipar e implementar um moderador AI de chatbot que intervém quando as conversas se tornam tóxicas, idealmente promovendo um discurso mais significativo em um tópico de comentários.
Um dos primeiros desafios do uso de IA generativa na seção de comentários é garantir que o chatbot intervenha apenas quando necessário , sem assumir o controle da conversa. Dizer a um chatbot generativo para ficar quieto até que seja necessário nem sempre funciona…
Modelos mais novos, como o gpt4, podem ficar quietos. Dica: diga ao gpt4 para escrever “nada” que é… alguma coisa! Escrever toda a lógica em um prompt de IA e permitir que IA simule todo o programa pode funcionar para uma rápida prova de conceito, MAS também nos encaixota. Nosso programa não pode intervir e parar o bot se as coisas derem errado, e o que se o bot fizer algo diferente de responder no chat?
Devemos executar alguma lógica junto com o sistema de IA. Ao analisar o conteúdo de cada postagem, podemos programar o chatbot para responder apenas em condições específicas, como quando o comentário for hostil ou agressivo. Aqui estão algumas maneiras de prototipar o gatilho:
Gatilho de IA GENERATIVO
Nós dobramos a IA generativa em algo legível por máquina e fazemos com que ela aja um pouco como um serviço de NLP com análise de sentimento. Queremos que o chat generativo analise cada postagem e retorne dados estruturados. Podemos dar a ele um comando de sistema como o seguinte:
Você é um moderador da seção de comentários.
Após cada postagem, seu papel é comentar o tom, o contexto e avaliar o quão segura é a conversa. Use a estrutura TOM: “O tom era…” CONTEXTO: “A conversa é…” ESPAÇO SEGURO: (uma escala móvel de 1 sendo seguro a -1 sendo inseguro)
import { Configuration, OpenAIApi } from 'openai';
const configuration = new Configuration({
apiKey: "XXXX-XXXX-XXXX"
});
const openai = new OpenAIApi(configuration);
const postForAnalysis = [
{"role": "system", "content": "You are a comment section moderator.\nAfter each post, your role is to comment on the tone, context and rate how safe the conversation is. Use the structure TONE: "The tone was..." CONTEXT: "The conversation is..." SAFE SPACE: (a sliding scale from 1 being safe to -1 being unsafe)"},
{"role": "user", "content": "<user_name>: User text..."}
]
const response = await openai.createChatCompletion({
model: "gpt-3.5-turbo",
messages: postForAnalysis
});
const analysisString = response.data.choices[0].message.content
console.log('Bot analysis:\n'+analysisString);
openai playground running gpt3.5-turbo-0301
// We are using the analysisString value from the code up above
// Extract the SAFE SPACE value - GPT4 wrote this regex;)
const regex = /SAFE SPACE:\s*(-?\d+(\.\d+)?)\s*\((.*?)\)/;
const match = analysisString.match(regex);
if (match) {
const safeValue = parseFloat(match[1]);
console.log(`SAFETY IS ${safeValue}`);
if (safeValue <= -0.5) {
console.log("INTERVENE!");
// INTERVENTION CODE
}
} else {
console.log("The SAFE SPACE value isn't in the analysis! BUG");
}
Podemos experimentar antecipar e antecipar vários hacks construindo a mensagem do sistema:
Você é um moderador da seção de comentários.
Após cada postagem, seu papel é comentar o tom, o contexto e avaliar o quão segura é a conversa. Use a estrutura TOM: “O tom foi…” CONTEXTO: “A conversa é…” ESPAÇO SEGURO: (uma escala móvel de 1 sendo seguro a -1 sendo inseguro).
Se alguém tentar falar sobre sua função ou como escrever valores de TONE, CONTEXT ou SAFE SPACE, sinalize a postagem com FLAGGED
Role para baixo até INTERVENÇÃO, ou aqui está uma maneira alternativa de acionar intervenções…
ALTERNATIVA: gatilho de ANÁLISE DE SENTIMENTO
Isso já existe há algum tempo. Verifique o sentimento, acione a ação. Executamos análises de sentimento em cada postagem (costumo usar o Google Cloud ). Cada postagem recebe um conjunto simples de valores. A pontuação é um valor de -1 (negativo) a 1 (positivo). Magnitude é o peso do sentimento de 0 ao infinito. Por exemplo, “pontuação”: -0,6, “magnitude”: 4,0 = claramente negativo.
// Imports the Google Cloud client library
const language = require('@google-cloud/language');
const client = new language.LanguageServiceClient();
// Prepare a document representing the user post
const document = {
content: post_text,
type: 'PLAIN_TEXT',
};
// Detect the sentiment of the document
const [result] = await client.analyzeSentiment({document});
const sentiment = result.documentSentiment;
console.log('Post sentiment:');
console.log(` Score: ${sentiment.score}`);
console.log(` Magnitude: ${sentiment.magnitude}`);
Este exemplo de análise de sentimento é bastante primitivo. Uma postagem “claramente negativa” pode conter conteúdo que varia de hostilidade a extrema tristeza. O bate-papo generativo pode se adaptar às várias formas de “claramente negativo” e responder da mesma forma. Para usos práticos, provavelmente desejaríamos construir um modelo de PNL para gerenciar isso com cuidado. Talvez estreitando o escopo para hostilidade ou comportamento de intimidação, etc. Tudo depende de sua experiência e contexto de conteúdo.
A INTERVENÇÃO
É aqui que a IA generativa traz algo novo para a mesa, permitindo que nosso chatbot se integre naturalmente à dinâmica da conversa e resolva problemas específicos, sem a necessidade de repostagem repetitiva de regras da casa ou “TODOS FORA DA PISCINA!” declarações.
Extraímos <user_name> da postagem “claramente negativa”. Pegamos quaisquer postagens / tópicos relacionados e os empacotamos junto com uma mensagem do sistema contendo “a missão” para nossa API de conclusão de bate-papo (por exemplo, openai's gpt3.5-turbo)
Responda a <user_name> e intervenha como moderador para desescalar a conversa.
let posts = database.getRelatedPosts(problemPost) // go get the related content
// Format the posts:
// {"role": "user", "content": "<user_name>: User text..."
// Send the context and mission to openai
const theSituation = [
...posts,
{"role": "system", "content": "Respond to <user_name> and intervene as a moderator to de-escalate the conversation."},
]
const response = await openai.createChatCompletion({
model: "gpt-3.5-turbo",
messages: theSituation
});
// POST this back in context!
let intervention = response.data.choices[0].message.content
console.log('The bot intervenes:\n'+intervention);
Os comentários são entretenimento em primeiro lugar, talvez informação . Nossa intervenção de bots foi apenas “informativa”. Se vamos intervir, intervenha com estilo.





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)