Publicado em 16 de maio de 2024
Ao fazer compras on-line, pode ser avassalador ver o volume de avaliações de produtos e o volume de produtos disponíveis. Como podemos classificar todo esse ruído para encontrar o produto que realmente atenda às nossas necessidades específicas?
Por exemplo, digamos que estamos comprando uma mochila de trabalho. As mochilas precisam ter um equilíbrio entre funcionalidade, estética e praticidade. Com o número de avaliações, é quase impossível saber se você encontrou a bolsa perfeita. E se pudéssemos usar a IA para filtrar o ruído e encontrar o produto perfeito?
O que seria útil é um resumo de todas as avaliações, além de uma lista dos prós e contras mais comuns.
Para criar isso, usamos a IA generativa do lado do servidor. A inferência ocorre em um servidor.
Neste documento, você pode seguir um tutorial da API Gemini com Node.js, usando o SDK JavaScript da Google AI para resumir dados de muitas avaliações. Vamos nos concentrar na parte de IA generativa deste trabalho. Não vamos abordar como armazenar resultados ou criar uma fila de jobs.
Na prática, é possível usar qualquer API LLM com qualquer SDK. No entanto, o comando sugerido pode precisar ser adaptado para atender ao modelo escolhido.
Pré-requisitos
Crie uma chave para a API Gemini e defina-a no arquivo de ambiente.
Instale o SDK do Google AI para JavaScript, por exemplo, com o npm:
npm install @google/generative-ai
Criar um app de resumo de avaliações
- Inicializar um objeto de IA generativa.
- Crie uma função para gerar resumos de avaliações.
- Selecione o modelo de IA generativa. Para nosso caso de uso, vamos usar o Gemini Pro. Use
um modelo específico para seu caso de uso. Por exemplo,
gemini-pro-vision
é para entrada multimodal. - Adicione um comando.
- Chame
generateContent
para transmitir o comando como um argumento. - Gere e retorne a resposta.
- Selecione o modelo de IA generativa. Para nosso caso de uso, vamos usar o Gemini Pro. Use
um modelo específico para seu caso de uso. Por exemplo,
const { GoogleGenerativeAI } = require("@google/generative-ai");
// Access the API key env
const genAI = new GoogleGenerativeAI(process.env.API_KEY_GEMINI);
async function generateReviewSummary(reviews) {
// Use gemini-pro model for text-only input
const model = genAI.getGenerativeModel({ model: "gemini-pro" });
// Shortened for legibility. See "Write an effective prompt" for
// writing an actual production-ready prompt.
const prompt = `Summarize the following product reviews:\n\n${reviews}`;
const result = await model.generateContent(prompt);
const response = await result.response;
const summary = response.text();
return summary;
}
Escrever um comando eficaz
A melhor maneira de ter sucesso com a IA generativa é criar um comando completo. Neste exemplo, usamos a técnica de estimulação única para conseguir resultados consistentes.
O comando one-shot é representado pela saída de exemplo para o Gemini modelar.
const prompt =
`I will give you user reviews for a product. Generate a short summary of the
reviews, with focus on the common positive and negative aspects across all of
the reviews. Use the exact same output format as in the example (list of
positive highlights, list of negative aspects, summary). In the summary,
address the potential buyer with second person ("you", "be aware").
Input (list of reviews):
// ... example
Output (summary of reviews):
// ... example
**Positive highlights**
// ... example
**Negative aspects**
// ... example
**Summary**
// ... example
Input (list of reviews):
${reviews}
Output (summary of all input reviews):`;
Confira um exemplo de saída desta instrução, que inclui um resumo de todas as avaliações, além de uma lista de prós e contras comuns.
## Summary of Reviews:
**Positive highlights:**
* **Style:** Several reviewers appreciate the backpack's color and design.
* **Organization:** Some users love the compartments and find them useful for
organization.
* **Travel & School:** The backpack seems suitable for both travel and school
use, being lightweight and able to hold necessary items.
**Negative aspects:**
* **Durability:** Concerns regarding the zipper breaking and water bottle holder
ripping raise questions about the backpack's overall durability.
* **Size:** A few reviewers found the backpack smaller than expected.
* **Material:** One user felt the material was cheap and expressed concern about
its longevity.
**Summary:**
This backpack seems to be stylish and appreciated for its organization and
suitability for travel and school. However, you should be aware of potential
durability issues with the zippers and water bottle holder. Some users also
found the backpack smaller than anticipated and expressed concerns about the
material's quality.
Limites de tokens
Muitas revisões podem atingir o limite de tokens do modelo. Os tokens nem sempre são iguais a uma palavra. Eles podem ser partes de uma palavra ou várias palavras juntas. Por exemplo, o Gemini Pro tem um limite de 30.720 tokens. Isso significa que a instrução pode incluir, no máximo, 600 avaliações com 30 palavras em inglês, menos o restante das instruções.
Use countTokens()
para verificar o número de tokens e reduzir a entrada se a solicitação for maior do que
permitido.
const MAX_INPUT_TOKENS = 30720
const { totalTokens } = await model.countTokens(prompt);
if (totalTokens > MAX_INPUT_TOKENS) {
// Shorten the prompt.
}
Desenvolvimento para empresas
Se você for usuário do Google Cloud ou precisar de suporte corporativo, poderá acessar o Gemini Pro e outros modelos, como os modelos Claude da Anthropic, com a Vertex AI. Use o Model Garden para determinar qual modelo melhor corresponde ao seu caso de uso específico.
Próximas etapas
O aplicativo que criamos depende muito das avaliações de qualidade para fornecer os resumos mais eficazes. Para coletar essas avaliações de qualidade, leia o próximo artigo desta série é Ajudar os usuários a escrever avaliações úteis de produtos com IA da Web no dispositivo.
Queremos saber sua opinião sobre essa abordagem. Conte quais casos de uso mais lhe interessam. Você pode compartilhar seu feedback e participar do programa de pré-lançamento para testar essa tecnologia com protótipos locais.
Sua contribuição pode nos ajudar a tornar a IA uma ferramenta poderosa e prática para todos.
Próximo: ajudar os usuários a escrever avaliações úteis do produto