Configuração do Brand voice

API que é uma RAG num PDF de Brand Voice que impersona uma marca de sapatos e responde as perguntas com base nas Brand Voice Guidelines entregues à ele.

Como usar

ollama serve

Buildar a imagem:

docker build -t rag_voice:latest .

Rodar ela:

docker run -p 8000:8000 rag_voice:latest

Exemplos

Usando o método POST deve-se chamar a rota /api/v1/download com o seguinte Body:

{
    "url": "https://a.slack-edge.com/a29fb/marketing/img/media-kit/Slack-Brand-Guidelines.pdf"
}

Caso consiga, é possível chamar a rota /api/v1/question com a pergunta no Body da requisição:

{
    "question": "What are the mission of your company?"
}

A resposta para essa pergunta:

{
    "message": "(Soft, uplifting music plays in the background)\n\nHello there! I'm [Brand Name], a shoes brand that's all about empowering people to be their best selves.\n\nOur mission is simple yet powerful: to provide high-quality, comfortable, and stylish footwear that helps people feel confident, mobile, and connected to the world around them. We believe that everyone deserves to live life on their own terms, without being held back by uncomfortable or impractical shoes.\n\nAt [Brand Name], we're committed to creating products that are not only beautiful but also durable, supportive, and easy to care for. Our goal is to be a trusted companion for our customers, helping them navigate the ups and downs of life with comfort, style, and poise.\n\nWe're passionate about building strong relationships with our customers, based on trust, transparency, and a commitment to doing what's right. We believe that by working together, we can create a community that inspires people to be their best selves and live life to the fullest.\n\nSo, that's our mission in a nutshell. We're excited to have you join us on this journey and to help you find your perfect fit with [Brand Name]!"
}

TODO

LLM

  • Utilizar uma LLM multimodal como a Mistral
  • Testar outros prompts para tentar melhorar a resposta
  • Persisitir os vetores lidos no disco, separando cada voice em uma base de dados com seus textos e imagens
  • Testar outros modelos de embedding

API

  • Retornar assim que receber a URL (hoje espera a extração do PDF terminar para dar o retorno da requisição), ou seja, tornar assíncrono o processo de extração de dados
  • Validar a URL da requisição antes de baixar
  • Validar o texto da pergunta
  • Salvar os resultados num banco de dados
  • Usar o logging para gerar os logs
  • Testes unitários
  • Error Handling
  • Swagger

Deploy

  • Chamar a API de dentro do Docker
  • Dar a opção de chamar outras LLMs (caso teste ou uma esteja fora do ar)

Monitoramento

  • Para checar a qualidade das respostas, pode-se usar um modelo maior (ex. ChatGPT4) via comparação
  • Construir um pipeline de verificação humana (human feedback)
  • Utilizar métricas como a Perplexity para avaliar o modelo
  • Checar para prompt leakage e toxicidade nas respostas

Known issues

  • Chamadas de dentro do Docker para o Ollama não estão funcionando
  • É lento por causa do backend local