Upgrade to Pro — share decks privately, control downloads, hide ads and more …

5 coisas que todo dev deveria saber Para criar aplicações com GenAI

5 coisas que todo dev deveria saber Para criar aplicações com GenAI

Gustavo Pinto

September 11, 2023
Tweet

More Decks by Gustavo Pinto

Other Decks in Programming

Transcript

  1. Gustavo Pinto
    @gustavopinto
    gustavopinto.org
    5 coisas que todo dev deveria saber
    [email protected]
    ML4SE.substack.com
    Para criar aplicações com GenAI

    View full-size slide

  2. No entanto, essas ferramentas
    •Fornecem respostas genéricas


    •Requerem um bom esforço de
    “prompting”


    •Não conhecem o negócio do seu
    trabalho

    View full-size slide

  3. Como melhorar
    os resultados
    de ferramentas
    de geração de
    código
    ?

    View full-size slide

  4. CodeBuddy
    https://use.stackspot.com/stackspot-ai-beta

    View full-size slide

  5. CodeBuddy’s architecture
    [0.7,-8.9,8.0,-7
    .3,4.2,6.8,9.0,4
    .8,-8.6,-3.3,-6.
    0,-6.5,8.5,3.8,-
    0.8,7.1,8.6,-6.6
    ,3.7,-5.9,5.5,-2
    .0,8,9.0,4.8,-8.
    6,-3.3,-6.0,-6.5
    ,8.5,3.8,-0.8,7.
    1,8.6,-6.6,3.7,-
    5.9,5.5,-2-9.0,6
    .3,-0.1,7.2,-7.3
    ,4.0,-8.2,-6.2]
    SELECT content
    FROM embeddings
    ORDER BY embedding <=> %query
    LIMIT 3
    Query
    [0.7,-8.9,8.0,-7
    .3,4.2,6.8,9.0,4
    .8,-8.6,-3.3,-6.
    0,-6.5,8.5,3.8,-
    0.8,7.1,8.6,-6.6
    ,3.7,-5.9,5.5,-2
    .0,8,9.0,4.8,-8.
    6,-3.3,-6.0,-6.5
    ,8.5,3.8,-0.8,7.
    1,8.6,-6.6,3.7,-
    5.9,5.5,-2-9.0,6
    .3,-0.1,7.2,-7.3
    ,4.0,-8.2,-6.2]

    View full-size slide

  6. 1. O que é um modelo?
    @gustavopinto

    View full-size slide

  7. 1. O que é um modelo?
    @gustavopinto
    Galileu, que observou que o tempo de
    descida das bolas é independente da
    suas massa!
    ?

    View full-size slide

  8. 1. O que é um modelo?
    @gustavopinto
    Um modelo de aprendizado de
    máquina é uma representação
    matemática que foi treinada em
    um conjunto de dados fornecidos
    como entrada para fazer certos
    tipos de predições.
    Y = M(A, D)
    Regressão Linear
    Vetor numérico

    View full-size slide

  9. 1. O que é um modelo?
    @gustavopinto
    Mas o que seria um:


    Grande Modelo de Linguagem (ou LLM)?
    Y = M(A, D)
    Redes Neurais
    Bilhões
    (ou trilhões)

    View full-size slide

  10. 1. O que é um modelo?
    @gustavopinto
    HuggingFace
    • GitHub para LLMs


    • Todos os principais
    modelos estão
    disponíveis
    https://huggingface.co/

    View full-size slide

  11. 1. O que é um modelo?
    @gustavopinto
    Hello world
    https://ml4se.substack.com/p/criando-
    um-modelo-de-ml
    https://ml4se.substack.com/p/
    sumarizando-readmes-de-projetos-de

    View full-size slide

  12. 2. Modelos Alucinam
    @gustavopinto

    View full-size slide

  13. @gustavopinto
    All models are
    wrong, but some are useful
    George Box, 1976
    Y = M(A, D)
    Predição

    View full-size slide

  14. 3. O que são Alucinações?
    @gustavopinto
    Problemas com predições?
    • Dados incompletos ou inadequados


    • Algoritmos inadequados
    • Qual o problema?

    View full-size slide

  15. 3. O que são Alucinações?
    @gustavopinto
    Problemas com predições?
    r/I_love_trump
    “Are there any questionable items in
    Trump’s speech?"

    View full-size slide

  16. 3. O que são Alucinações?
    @gustavopinto
    1.4 trilhões de tokens
    1—10 trilhões de tokens
    32 bilhões de tokens
    “Apenas" mais dados não são su
    fi
    cientes!

    View full-size slide

  17. 3. O que são Alucinações?
    @gustavopinto
    • Melhoria do treinamento


    • Desenvolvimento de
    mecanismos de veri
    fi
    cação


    • Maior conscientização e
    transparência
    Pesquisas para reduzir alucinações
    https://ml4se.substack.com/p/porque-eu-nao-posso-con
    fi
    ar-cegamente

    View full-size slide

  18. 3. O que é um Prompt?
    @gustavopinto

    View full-size slide

  19. 3. O que é um prompt?
    @gustavopinto
    Prompt é uma das maneiras de se
    interagir com um LLM
    Y = M(A, D)
    Prompt

    View full-size slide

  20. 3. O que é um prompt?
    @gustavopinto
    Pequenas mudanças no prompt podem
    causar mudanças signi
    fi
    cativas na
    predição do modelo

    View full-size slide

  21. 3. O que é um prompt?
    @gustavopinto
    Pequenas mudanças no prompt podem
    causar mudanças signi
    fi
    cativas na
    predição do modelo
    Prompts pequenos não fornecem contexto su
    fi
    ciente
    Prompts grandes tendem adicionar ruído ao contexto

    View full-size slide

  22. 3. O que é um prompt?
    @gustavopinto
    Existem técnicas que podem ajudar a
    tornar seu prompt mais efetivo
    • Zero shot learning


    • Few shot learning


    • Instruction prompt


    • Chain of thought
    https://ml4se.substack.com/p/tecnicas-de-engenharia-de-prompt

    View full-size slide

  23. 3. O que é um prompt?
    @gustavopinto
    Querido ChatGPT: Gostaria que você agisse como uma pessoa
    especialista em Design de Código.


    Crie uma narrativa, de até 100 palavras, explicando o que é o CDD
    (Cognitive Driven Design).
    Zero shot
    Querido ChatGPT: Gostaria que você agisse como uma pessoa especialista em
    Design de Código.


    Por exemplo, SOLID é uma técnica de design de código que promove a coesão,
    acoplamento reduzido e código mais sustentável.


    Crie uma narrativa, de até 100 palavras, explicando o que é o CDD (Cognitive
    Driven Design).
    Few shot

    View full-size slide

  24. 4. O que é RAG?
    @gustavopinto

    View full-size slide

  25. 3. O que é RAG?
    @gustavopinto
    Retrieval-augmented generation
    • RAG combina modelos de linguagem com
    mecanismos de recuperação de informações para:


    • Gerar texto mais contextualizado


    • Diminuindo chances de alucinações


    • RAG é usado em tarefas de geração de linguagem
    natural, como resumos, traduções e diálogos,
    melhorando a qualidade e relevância.

    View full-size slide

  26. 3. O que é RAG?
    @gustavopinto
    Retrieval-augmented generation
    “Quais os benefícios do CDD?”
    Retriever
    Alguns dos benefícios do
    CDD são X,Y e Z

    View full-size slide

  27. 3. Prompt com RAG
    @gustavopinto
    “Quais os benefícios do CDD?”
    “Um dos benefícios observados com a pesquisa foi que CDD ajudou …"
    “Um dos participantes reportou que a vantagem em usar CDD foi que …”
    “Os benefícios pareciam ser pequenos para equipes com baixa


    maturidade em outras técnicas de design, além de CDD”
    Querido ChatGPT: Gostaria que você agisse como uma pessoa
    especialista em Design de Código. Avalie a pergunta do usuário (em
    ) e as potenciais respostas (em ).
    Crie uma narrativa de até 100 palavras.

    View full-size slide

  28. 5. O que é um retriever?
    @gustavopinto

    View full-size slide

  29. 5. O que é um retriever?
    @gustavopinto
    • Embeddings são representações de
    textos como números
    [0.7,-8.9,8.0,-7.3,4.2,6.8,9.0,4.8,-8.6,-3.3,-6.0,
    -6.5,8.5,3.8,-0.8,7.1,8.6,-6.6,3.7,-5.9,5.5,-2.0,
    -9.0,6.3,-0.1,7.2,-7.3,4.0,-8.2,-6.2]
    (Word2vec, transformers, etc)

    View full-size slide

  30. 5. O que é um retriever?
    @gustavopinto
    • Embeddings tentam guardar a essência do conteúdo


    • Objetos próximos são representados por números
    próximos
    [0.7,-8.9,8.0,-7.3,4.2
    ,6.8,9.0,4.8,-8.6,-3.3
    ,-6.0,-6.5,8.5,3.8,-0.
    8,7.1,8.6,-6.6,3.7,-5.
    9,5.5,-2.0,-9.0,6.3,-0
    .1,7.2,-7.3,4.0,-8.2,-
    6.2-8.9,8.0,-7.3,4.2,6
    .8,9.0,4.8,-8.6,-3.3,-
    6.0,-6.5,8.5,3.8,-0.8,
    7.1,8.6,-6.6,3.7,-5.9,
    5.5,-2.0,-9.0,6.3,-0.1
    ,7.2,-7.3,4.0,-8.2,-6.
    2-8.9,8.0,-7.3,4.2,6.8
    ,9.0,4.8,-8.6,-3.3,-6.
    0,-6.5,8.5,3.8,-0.8,7.
    1,8.6,-6.6,3.7,-5.9,5.
    5,-2.0,-9.0,6.3,-0.1,7
    .2,-7.3,4.0,-8.2,-6.2]
    word2vec( )

    View full-size slide

  31. 5. O que é um retriever?
    @gustavopinto
    • Embeddings tentam guardar a essência do conteúdo


    • Objetos próximos são representados por números
    próximos
    [0.7,-8.9,8.0,-7.3,4.2,6.8,9.0,4
    .8,-8.6,-3.3,-6.0,-6.5,8.5,3.8,-
    0.8,7.1,8.6,-6.6,3.7,-5.9,5.5,-2
    .0,-9.0,6.3,-0.1,7.2,-7.3,4.0,-8
    .2,-6.2-8.9,8.0,-7.3,4.2,6.8,9.0
    ,4.8,-8.6,-3.3,-6.0,-6.5,8.5,3.8
    ,-0.8,7.1,8.6,-6.6,3.7,-5.9,5.5,
    -2.0,-9.0,6.3,-0.1,7.2,-7.3,4.0,
    -8.2,-6.2-8.9,8.0,-7.3,4.2,6.8,9
    .0,4.8,-8.6,-3.3,-6.0,-6.5,8.5,3
    .8,-0.8,7.1,8.6,-6.6,3.7,-5.9,5.
    5,-2.0,-9.0,6.3,-0.1,7.2,-7.3,4.
    0,-8.2,-6.2]

    View full-size slide

  32. 5. O que é um retriever?
    @gustavopinto
    • Embeddings tentam guardar a essência do conteúdo


    • Objetos próximos são representados por números
    próximos

    View full-size slide

  33. 5. O que é um retriever?
    @gustavopinto
    • Embeddings tentam guardar a essência do conteúdo


    • Objetos próximos são representados por números
    próximos
    “Quais os benefícios do CDD?”
    [0.7,-8.9,8.0,-7.3,4.2,6.8,9.0,4
    .8,-8.6,-3.3,3,4.2,6.8,9.0,4.8,-
    8.6,-3.3,-6.0,-6.5,8.5,3.8,-0.8,
    7.1,8.6,-6.6,3.7,-5.9,5.5,-2.0,-
    9.0,6.3,-0.1,7.2,-7.3,4.0,-8.2,-
    6.2]

    View full-size slide

  34. 5. O que é um retriever?
    @gustavopinto
    • Embeddings tentam guardar a essência do conteúdo


    • Objetos próximos são representados por números
    próximos
    Query

    View full-size slide

  35. 5. O que é um retriever?
    @gustavopinto
    • Embeddings tentam guardar a essência do conteúdo


    • Objetos próximos são representados por números
    próximos
    Query

    View full-size slide

  36. 5. O que é um retriever?
    @gustavopinto
    • Embeddings tentam guardar a essência do conteúdo


    • Objetos próximos são representados por números
    próximos
    Documentos


    relevantes
    Query

    View full-size slide

  37. 5. O que é um retriever?
    @gustavopinto
    • Embeddings tentam guardar a essência do conteúdo


    • Objetos próximos são representados por números
    próximos
    “Quais os benefícios do CDD?”
    “Um dos benefícios observados com a pesquisa foi que CDD ajudou …"
    “Um dos participantes reportou que a vantagem em usar CDD foi que …”
    “Os benefícios pareciam ser pequenos para equipes com baixa


    maturidade em outras técnicas de design, além de CDD”

    View full-size slide

  38. 5. O que é um retriever?
    @gustavopinto
    “Quais os benefícios do CDD?”
    “Um dos benefícios observados com a pesquisa foi que CDD ajudou …"
    “Um dos participantes reportou que a vantagem em usar CDD foi que …”
    “Os benefícios pareciam ser pequenos para equipes com baixa


    maturidade em outras técnicas de design, além de CDD”
    Querido ChatGPT: Gostaria que você agisse como uma pessoa
    especialista em Design de Código. Avalie a pergunta do usuário (em
    ) e as potenciais respostas (em ).
    Crie uma narrativa de até 100 palavras.

    View full-size slide

  39. 4. O que é um prompt?
    @gustavopinto
    Minha primeira aplicação com LLMs

    View full-size slide

  40. Minha primeira aplicação com LLMs
    [0.7,-8.9,8.0,-7
    .3,4.2,6.8,9.0,4
    .8,-8.6,-3.3,-6.
    0,-6.5,8.5,3.8,-
    0.8,7.1,8.6,-6.6
    ,3.7,-5.9,5.5,-2
    .0,8,9.0,4.8,-8.
    6,-3.3,-6.0,-6.5
    ,8.5,3.8,-0.8,7.
    1,8.6,-6.6,3.7,-
    5.9,5.5,-2-9.0,6
    .3,-0.1,7.2,-7.3
    ,4.0,-8.2,-6.2]
    SELECT content
    FROM embeddings
    ORDER BY embedding <=> %query
    LIMIT 3
    Query
    [0.7,-8.9,8.0,-7
    .3,4.2,6.8,9.0,4
    .8,-8.6,-3.3,-6.
    0,-6.5,8.5,3.8,-
    0.8,7.1,8.6,-6.6
    ,3.7,-5.9,5.5,-2
    .0,8,9.0,4.8,-8.
    6,-3.3,-6.0,-6.5
    ,8.5,3.8,-0.8,7.
    1,8.6,-6.6,3.7,-
    5.9,5.5,-2-9.0,6
    .3,-0.1,7.2,-7.3
    ,4.0,-8.2,-6.2]

    View full-size slide