Pular para o conteúdo principal

O que é DSPy? Como funciona, casos de uso e recursos

O DSPy é uma estrutura Python de código aberto que permite que os desenvolvedores criem aplicativos de modelo de linguagem usando programação modular e declarativa, em vez de depender de técnicas de prompt únicas.
Actualizado 29 de jul. de 2024  · 14 min de leitura

Se você trabalha com modelos de linguagem grandes, sabe que engenharia de prontidão pode ser um pouco desafiadora. Você pode passar horas ajustando os prompts apenas para obter resultados mistos. É frustrante, toma muito tempo e, muitas vezes, exige muitas tentativas e erros para que você obtenha os melhores resultados.

Uma solução para esse problema é o DSPy- uma nova estrutura que muda a forma como conhecemos a engenharia de prontidão. Em vez de se concentrar na criação de prompts perfeitos, o DSPy nos permite programar os modelos diretamente.

Neste tutorial, explicarei o DSPy e por que ele é diferente dos métodos mais antigos. Você aprenderá sobre seus principais recursos e benefícios e como funciona. Orientarei você nos primeiros passos com a DSPy e direcionarei você para recursos e comunidades úteis.

Vamos começar!

O que é DSPy?

O DSPy é uma ferramenta de código aberto criada pela Universidade de Stanford que "compila chamadas de modelos de linguagem declarativa em pipelines de autoaperfeiçoamento". Em vez de gastar tempo elaborando prompts perfeitos, o DSPy permite que você programe os modelos de IA diretamente.

Isso torna os aplicativos de IA mais confiáveis e fáceis de dimensionar. O DSPy separa a lógica do seu aplicativo do texto que ele usa, para que você possa se concentrar no que deseja que a IA faça. Enquanto isso, o DSPy otimiza os prompts nos bastidores.

Logotipo da DSPy

Vamos explorar alguns de seus principais recursos.

Programação declarativa

Com a DSPy, você define a tarefa que deseja realizar e as métricas para medir o sucesso. Em seguida, a estrutura otimiza o comportamento do modelo para você. Ele usa uma sintaxe Python fácil de entender, permitindo que você se concentre no que o aplicativo deve fazer e não em como solicitar o modelo.

Prompts de autoaperfeiçoamento

Um dos recursos de destaque do DSPy é a capacidade de melhorar automaticamente os prompts ao longo do tempo. O DSPy refina continuamente os prompts, poupando você do incômodo de ajustes manuais constantes. Isso é feito por meio de feedback e avaliação, garantindo que o modelo tenha um desempenho melhor a cada iteração.

Arquitetura modular

O DSPy também oferece uma arquitetura modular, permitindo que você misture e combine módulos pré-construídos para diferentes tarefas de processamento de linguagem natural (NLP). Essa modularidade o torna altamente personalizável para atender às suas necessidades específicas, promovendo a flexibilidade e a reutilização. A estrutura inclui módulos úteis como ChainOfThought e ReAct, que podem ser facilmente integrados aos seus aplicativos.

Como o DSPy funciona

Nesta seção, examinarei as partes principais do DSPy e como ele facilita o trabalho com LLMs.

Definição da tarefa

Com o DSPy, os usuários começam especificando o objetivo da tarefa e as métricas a serem otimizadas. Isso significa que você define o que deseja que o modelo alcance e como medirá seu sucesso.

O DSPy usa entradas de exemplo, rotuladas ou não, para orientar o processo de aprendizado. Esses exemplos ajudam a estrutura a entender melhor a tarefa e a melhorar seu desempenho. Além disso, o DSPy apresenta o conceito de módulos, que são blocos de construção reutilizáveis para várias tarefas de PNL. Esses módulos podem ser combinados e personalizados para atender a diferentes necessidades.

Construção de tubulações

Depois que a tarefa é definida, os usuários selecionam e configuram os módulos apropriados para sua tarefa específica. Isso envolve a escolha dos módulos certos que correspondem aos requisitos da tarefa e a configuração adequada. O DSPy permite que você encadeie esses módulos para criar pipelines complexos, possibilitando fluxos de trabalho sofisticados. Cada módulo tem assinaturas que definem as especificações de entrada e saída, garantindo que os módulos possam trabalhar juntos sem problemas.

Otimização e compilação

O DSPy otimiza os prompts usando o aprendizado no contexto e o aprendizado automático de de poucos geração automática de poucos exemplos. Isso significa que a estrutura refina continuamente os prompts para melhorar o desempenho do modelo. O DSPy também pode ajustar modelos menores para tarefas que exigem ajustes mais específicos.

Por fim, o DSPy compila todo o pipeline em código Python executável, facilitando a integração em seus aplicativos. Esse processo de compilação garante que o pipeline seja executado de forma eficiente e eficaz.

Fluxo de trabalho do DSPy: Dos dados ao modelo de IA otimizado

Figura 1: Fluxo de trabalho DSPy: Dos dados ao modelo de IA otimizado

Este diagrama ilustra o fluxo de trabalho principal do DSPy, mostrando como ele transforma dados brutos em um modelo de IA otimizado. O processo começa com um conjunto de dados, que informa a assinatura (a estrutura de entrada/saída). Essa assinatura é usada para criar um módulo, que é otimizado usando as técnicas avançadas do DSPy. Por fim, o módulo otimizado passa por uma avaliação para garantir que ele atenda aos critérios de desempenho desejados.

Essa abordagem simplificada permite que você se concentre no design de alto nível, enquanto o DSPy lida com as complexidades da engenharia de prontidão e da otimização de modelos.

Vantagens do DSPy

O DSPy oferece vários benefícios importantes que o tornam uma ferramenta poderosa para trabalhar com LLMs:

Maior confiabilidade

A abordagem declarativa do DSPy leva a um comportamento LLM mais confiável e previsível. Em vez de criar prompts manualmente, você define o que deseja que o modelo faça. Em seguida, o DSPy descobre como fazer isso acontecer de forma consistente. Isso significa menos saídas inesperadas e desempenho mais estável em diferentes tarefas.

Digamos que você esteja criando um chatbot de suporte ao cliente. Em vez de escrever prompts específicos, com o DSPy você pode definir sua intenção da seguinte forma:

  1. Entenda a pergunta do cliente.
  2. Recuperar informações relevantes da base de conhecimento.
  3. Gerar uma resposta útil e empática.
  4. Verifique se a resposta responde à pergunta original.
  5. Caso contrário, refine a resposta.

O DSPy então trataria:

  • Criar prompts ideais para cada etapa.
  • Gerenciar o fluxo de informações entre as etapas.
  • Otimizar o processo geral para obter precisão e consistência.

Por exemplo, a DSPy pode aprender que iniciar as respostas com "Entendo sua preocupação com..." leva a uma maior satisfação do cliente na etapa 3. Ou, na etapa 4, você pode desenvolver uma maneira eficaz de comparar a resposta à pergunta original.

A chave é que você se concentre em definir a estrutura e as metas de alto nível. O DSPy cuida dos detalhes imediatos de engenharia e otimização, levando a um comportamento mais confiável e previsível do LLM em várias consultas de clientes.

Essa abordagem significa que você pode ajustar facilmente o comportamento do chatbot (por exemplo, torná-lo mais formal ou adicionar uma nova etapa para verificar se há informações confidenciais) sem precisar reescrever todos os seus prompts manualmente. O DSPy se adaptaria e otimizaria automaticamente para os novos requisitos.

Desenvolvimento simplificado

A arquitetura modular e a otimização automática do prompt no DSPy facilitam muito o desenvolvimento do LLM. Você pode criar aplicativos complexos combinando módulos pré-construídos, como se estivesse montando blocos de construção. O DSPy cuida da parte complicada da otimização dos prompts nos bastidores para que você possa se concentrar na lógica do aplicativo em vez de ficar ajustando os prompts sem parar.

Imagine que você está criando um assistente de criação de conteúdo para um blog. Sem codificação, você pode conceituar seu aplicativo da seguinte forma:

1. Topic Generator Module
   - Input: Blog niche and target audience
   - Output: List of potential blog topics
2. Outline Creator Module
   - Input: Selected blog topic
   - Output: Detailed outline for the blog post
3. Content Writer Module
   - Input: Blog outline
   - Output: Full blog post draft
4. Editor Module
   - Input: Blog post draft
   - Output: Edited and polished blog post
5. SEO Optimizer Module
   - Input: Edited blog post
   - Output: SEO-optimized version of the post

Nesse cenário, o DSPy faria o seguinte:

  • Forneça esses módulos pré-construídos que você pode simplesmente selecionar e organizar.
  • Otimize automaticamente os prompts de cada módulo nos bastidores.
  • Lidar com o fluxo de informações entre os módulos.

Você não precisa escrever nenhum código nem criar prompts. Em vez disso, basta escolher os módulos de que você precisa, organizá-los na ordem desejada e especificar suas entradas (como o nicho do blog e o público-alvo).

Adaptabilidade

Quando se trata de se adaptar a novas tarefas e domínios, o DSPy é excelente. Você simplesmente ajusta a definição da tarefa e as métricas, e o DSPy se reconfigura para atender a esses novos requisitos. Essa flexibilidade significa que você pode aplicar rapidamente o LLM a diferentes casos de uso sem precisar começar do zero todas as vezes.

Suponha que você tenha criado um chatbot de suporte ao cliente para uma empresa de tecnologia usando o DSPy. Inicialmente, a tarefa do chatbot é responder a perguntas de suporte técnico, com métricas focadas na precisão da resposta e na relevância da solução, tudo dentro do domínio de hardware e software de computador.

Agora, você quer adaptar esse chatbot para uma empresa de saúde. Para fazer isso, você ajusta a definição da tarefa para "responder a consultas de clientes relacionadas à saúde" e modifica as métricas para incluir "precisão médica" e uma "pontuação de empatia" para lidar com questões delicadas de saúde. Você também especifica o novo domínio, que agora abrange assistência médica geral, procedimentos médicos e seguro.

Com essas alterações, o DSPy se reconfigura automaticamente. Ele ajusta seus processos internos para se concentrar em bases de conhecimento médico, adapta sua geração de linguagem para usar termos mais empáticos e medicamente precisos e altera seus critérios de avaliação para priorizar a precisão médica e a empatia.

Em seguida, você fornece um pequeno conjunto de exemplos de perguntas e respostas relacionadas à área da saúde. O DSPy usa esses exemplos para ajustar sua abordagem sem exigir que você reescreva nenhum prompt.

Como resultado, o seu chatbot agora lida efetivamente com consultas de saúde, fornecendo informações medicamente precisas e comunicando-se com a empatia apropriada para preocupações relacionadas à saúde.

Dessa forma, você não precisou codificar nada novo. A redefinição da tarefa, o ajuste das métricas e o fornecimento de novos exemplos foram suficientes para que a DSPy reconfigurasse as interações LLM subjacentes para atender aos novos requisitos.

Escalabilidade

As técnicas de otimização do DSPy mostram seu valor quando se trata de lidar com tarefas de grande escala. A estrutura pode melhorar o desempenho do LLM em grandes conjuntos de dados ou problemas complexos, refinando automaticamente os avisos e ajustando o comportamento do modelo. Essa escalabilidade garante que seus aplicativos possam crescer e lidar com tarefas mais desafiadoras, conforme necessário.

Suponha que você esteja desenvolvendo um sistema de recomendação para uma plataforma de comércio eletrônico. Inicialmente, seu sistema precisa processar um grande conjunto de dados de interações do usuário e detalhes do produto para gerar recomendações personalizadas.

Sem o DSPy, você criaria manualmente prompts para cada etapa, como recuperar o histórico do usuário, analisar as preferências e sugerir produtos. Esse processo envolveria muitas tentativas e erros para obter os prompts certos, especialmente à medida que o conjunto de dados cresce e a complexidade aumenta.

Com o DSPy, o processo é muito mais simples e eficiente.

Você começa definindo a tarefa: gerar recomendações personalizadas de produtos. Você especifica as métricas a serem otimizadas, como a precisão da recomendação e a satisfação do usuário.

Em seguida, você fornece ao DSPy um conjunto de dados de interações do usuário e detalhes do produto. Esse conjunto de dados ajuda o DSPy a entender a tarefa e melhorar seu desempenho.

Em seguida, o DSPy usa sua arquitetura modular para dividir a tarefa em módulos menores e gerenciáveis. Por exemplo, um módulo pode lidar com a recuperação do histórico do usuário, outro pode analisar as preferências e um terceiro pode gerar sugestões de produtos.

O DSPy otimiza automaticamente os prompts e ajusta o comportamento do modelo à medida que você fornece mais dados e refina a definição da tarefa. Você não precisa ajustar cada prompt manualmente - o DSPy faz isso para você nos bastidores.

Por exemplo, se o conjunto de dados crescer ou a complexidade das interações do usuário aumentar, o DSPy se reconfigurará para lidar com a escala maior. Ele refinará os avisos e ajustará os parâmetros do modelo para garantir um desempenho consistente e confiável.

Essa escalabilidade garante que o seu sistema de recomendação possa crescer e lidar com tarefas mais desafiadoras conforme necessário, sem que você precise começar do zero todas as vezes. As técnicas de otimização do DSPy possibilitam lidar com tarefas de grande escala de forma eficiente, permitindo que você se concentre na lógica de alto nível do seu aplicativo, em vez de se preocupar com as complexidades da engenharia de prompt.

Casos de uso do DSPy

O DSPy pode ser aplicado a uma ampla gama de tarefas de processamento de linguagem natural. Vamos explorar alguns deles.

Perguntas respondidas

O DSPy é muito bom para criar sistemas robustos de resposta a perguntas (QA). Ele pode combinar geração aumentada por recuperação (RAG) com a solicitação de cadeia de pensamento para criar ferramentas poderosas de controle de qualidade. Isso significa que você pode criar sistemas que encontrem informações relevantes e analisem perguntas complexas passo a passo, fornecendo respostas mais precisas e perspicazes.

Resumo de texto

Com o DSPy, a criação de pipelines de compactação se torna muito mais simples. Você pode configurar facilmente sistemas que se adaptam a diferentes comprimentos de entrada e estilos de escrita. Essa flexibilidade permite que você resuma qualquer coisa, desde artigos curtos até documentos extensos, mantendo os pontos principais e ajustando o estilo do resumo para atender às suas necessidades.

Geração de código

O DSPy pode ajudar a gerar trechos de código a partir de descrições. Isso é particularmente útil para desenvolvedores que desejam criar protótipos de ideias rapidamente ou para não programadores que precisam criar scripts simples.

Tradução de idiomas

O DSPy pode tornar a tradução automática muito melhor. Isso ajuda a criar sistemas de tradução mais inteligentes que não apenas traduzem palavras, mas também entendem o contexto e a cultura.

Com a DSPy, você pode criar um tradutor que use expressões idiomáticas e ditados corretamente, mantenha o estilo e o tom do texto original e funcione bem em áreas específicas como direito, medicina ou tecnologia. Você pode até explicar por que escolheu determinadas traduções.

Chatbots e IA de conversação

A DSPy pode fazer com que os chatbots se sintam mais como se estivessem conversando com uma pessoa real. Em vez de dar respostas pré-escritas, um chatbot DSPy pode se lembrar do que você está falando e ter conversas que fazem sentido. Ele dá respostas que se encaixam melhor na sua pergunta e pode mudar a forma de falar para corresponder ao que você gosta. Esses chatbots podem até mesmo realizar tarefas complicadas que exigem raciocínio e tomada de decisões. Essas melhorias tornam os chatbots mais úteis e fáceis de conversar, quase como se você estivesse conversando com um amigo experiente.

Primeiros passos com o DSPy

Você pode instalar o DSPy usando pip. Abra o terminal ou o prompt de comando e execute:

pip install dspy-ai

Esse comando instalará a versão estável mais recente do DSPy.

Se quiser explorar os recursos do DSPy com integrações adicionais, você pode instalá-lo com extras. Por exemplo, para incluir Pinecone use:

pip install "dspy-ai[pinecone]"

Comandos semelhantes estão disponíveis para outras integrações, como Qdrant, ChromaDBe Marqo.

Recursos do DSPy

Para saber mais sobre como usar o DSPy, consulte a documentação oficial. Ele fornece tutoriais e exemplos detalhados para ajudar você a começar e aproveitar ao máximo os recursos da estrutura.

O repositório oficial do repositório do GitHub inclui o código-fonte, o rastreador de problemas e exemplos adicionais.

Embora o DSPy ainda seja uma estrutura relativamente nova, sua comunidade está crescendo. Você pode encontrar discussões e obter ajuda no GitHub, onde pode abrir problemas ou participar de discussões. À medida que a comunidade se expandir, mais recursos e experiências compartilhadas provavelmente estarão disponíveis para apoiar sua jornada com a DSPy.

Lembre-se de que o DSPy é desenvolvido ativamente, portanto, fique de olho nas atualizações e nos novos recursos que podem aprimorar seus projetos.

Esta página fornece instruções de instalação e informações sobre a versão do pacote DSPy.

Se você gosta de trabalhar em notebooks, DSPy Colab Notebook é um notebook Colab interativo para ajudar você a começar a usar o DSPy rapidamente.

Por fim, você pode entrar no servidor Discord para se conectar com outros usuários do DSPy, fazer perguntas e compartilhar experiências.

Conclusão

Em suma, o DSPy oferece uma maneira mais intuitiva e avançada de trabalhar com IA, deixando de lado a engenharia imediata e passando a programar modelos de base. Vamos recapitular o que abordamos neste artigo:

  1. O DSPy é uma estrutura declarativa e de melhoria automática que simplifica o desenvolvimento de aplicativos LLM.
  2. Ele apresenta programação declarativa, prompts de autoaperfeiçoamento e uma arquitetura modular, facilitando a criação de sistemas complexos de IA.
  3. O DSPy permite que os usuários definam tarefas, construam pipelines e otimizem prompts automaticamente.
  4. A estrutura oferece maior confiabilidade, desenvolvimento simplificado, adaptabilidade e dimensionamento em comparação com os métodos tradicionais de engenharia de prompt.
  5. O DSPy pode ser aplicado a uma ampla gama de casos de uso, incluindo resposta a perguntas, resumo de texto, geração de código e tarefas personalizadas de PNL.

À medida que você continuar trabalhando com a DSPy, não se esqueça de usar os recursos da comunidade. Além disso, mantenha-se atualizado com as novidades nesse campo em evolução - recomendo a leitura destas publicações do blog se você quiser saber mais sobre alguns dos últimos desenvolvimentos:

Perguntas frequentes

Quais são os requisitos de sistema para instalar e executar o DSPy?

Para usar o DSPy, você precisa do Python 3.7 ou superior. Recomenda-se que você tenha um sistema operacional moderno (Windows, macOS ou Linux) e memória RAM suficiente (pelo menos 8 GB) para lidar com modelos de idiomas grandes. Uma GPU é benéfica para um processamento mais rápido, mas não é obrigatória.

Há alguma limitação ou problema conhecido com o DSPy que os usuários devam conhecer?

Algumas limitações conhecidas do DSPy incluem a possível variabilidade de desempenho em diferentes modelos de linguagem, a necessidade de recursos computacionais substanciais para tarefas de grande escala e o desenvolvimento contínuo de suporte e documentação da comunidade. Os usuários devem se manter atualizados com as versões mais recentes e as discussões da comunidade para atenuar esses problemas.

O DSPy oferece suporte a tarefas multilíngues e qual é a sua eficácia?

O DSPy oferece suporte a tarefas multilíngues, aproveitando modelos de idiomas treinados em vários idiomas. Você pode especificar o idioma na definição da tarefa, e o DSPy otimizará os prompts de acordo. No entanto, a eficácia pode variar dependendo dos dados de treinamento do modelo de linguagem.

O DSPy funciona com todos os modelos de linguagem?

O DSPy foi projetado para trabalhar com uma variedade de modelos de linguagem grandes. Ele é compatível com modelos populares como GPT-3, GPT-4 e outros modelos da OpenAI. Ele também pode ser usado com modelos de código aberto. No entanto, você deve verificar a documentação mais recente para obter as informações mais atualizadas sobre compatibilidade de modelos.

Posso usar o DSPy em projetos comerciais?

Sim, o DSPy é de código aberto e está disponível sob a licença Apache 2.0, que permite o uso comercial. No entanto, certifique-se de verificar os termos de licenciamento dos modelos de linguagem específicos que você está usando com o DSPy, pois eles podem ter restrições diferentes.

Temas

Aprenda IA com estes cursos!

curso

Understanding Prompt Engineering

1 hr
17.3K
Learn how to write effective prompts with ChatGPT to apply in your workflow today.
Ver DetalhesRight Arrow
Iniciar curso
Ver maisRight Arrow
Relacionado

blog

Python no setor de saúde: Aplicativos de IA em hospitais

Saiba como os aplicativos baseados em python estão transformando o setor de saúde.

Armstrong Asenavi

18 min

An avian AI exits its cage

blog

12 Alternativas de código aberto ao GPT-4

GPT-4 alternativas de código aberto que podem oferecer desempenho semelhante e exigem menos recursos computacionais para serem executadas. Esses projetos vêm com instruções, fontes de código, pesos de modelos, conjuntos de dados e interface de usuário do chatbot.

Abid Ali Awan

9 min

Python Programming Language

blog

O que é Python? - A linguagem de programação mais versátil

Poucas linguagens de programação capturaram a atenção de tantos programadores em um espaço de tempo tão curto. Cientistas de dados, desenvolvedores da Web, desenvolvedores de software - muitos se voltaram para o Python como sua linguagem preferida. Neste artigo, falaremos sobre o motivo.
Summer Worsley's photo

Summer Worsley

20 min

tutorial

Como criar aplicativos LLM com o tutorial LangChain

Explore o potencial inexplorado dos modelos de linguagem grandes com o LangChain, uma estrutura Python de código aberto para criar aplicativos avançados de IA.
Moez Ali's photo

Moez Ali

12 min

tutorial

Entendendo a classificação de textos em Python

Descubra o que é a classificação de texto, como ela funciona e os casos de uso bem-sucedidos. Explore exemplos de ponta a ponta de como criar um pipeline de pré-processamento de texto seguido de um modelo de classificação de texto em Python.
Moez Ali's photo

Moez Ali

12 min

tutorial

Primeiros passos com o Claude 3 e a API do Claude 3

Saiba mais sobre os modelos Claude 3, benchmarks de desempenho detalhados e como acessá-los. Além disso, descubra a nova API Python do Claude 3 para geração de texto, acesso a recursos de visão e streaming.
Abid Ali Awan's photo

Abid Ali Awan

Ver maisVer mais