Promptwright é uma biblioteca Python da Stacklok projetada para gerar grandes conjuntos de dados sintéticos usando um LLM local. A biblioteca oferece um conjunto de interfaces flexível e fácil de usar, permitindo aos usuários a capacidade de gerar conjuntos de dados sintéticos conduzidos imediatamente.
O Promptwright foi inspirado no redotvideo/pluto, na verdade começou como um fork, mas acabou sendo em grande parte uma reescrita, para permitir a geração de conjuntos de dados em um modelo LLM local, ao contrário do OpenAI, onde os custos podem ser proibitivamente caros.
A biblioteca faz interface com o Ollama, tornando mais fácil extrair um modelo e executar o Promptwright.
Integração de cliente LLM local : interaja com modelos baseados em Ollama
Instruções e prompts configuráveis : defina instruções personalizadas e prompts do sistema
Enviar para Hugging Face : envie o conjunto de dados gerado para Hugging Face Hub.
Pitão 3.11+
biblioteca promptwright
instalada
CLI do Ollama instalada e em execução (consulte Instalação do Ollama
Um modelo obtido via Ollama (consulte Compatibilidade do modelo)
Para instalar os pré-requisitos, você pode usar os seguintes comandos:
pip instalar promptwright ollama servir ollama pull {model_name} # qualquer modelo que você deseja usar
Existem alguns exemplos no diretório examples
que demonstram como usar a biblioteca para gerar diferentes conjuntos de dados baseados em tópicos.
Para executar um exemplo:
Certifique-se de ter iniciado o Ollama executando ollama serve
.
Verifique se o modelo necessário foi baixado (por exemplo, llama3.2:latest
).
Defina model_name
no arquivo de exemplo escolhido para o modelo que você baixou.
engine = LocalDataEngine( args=LocalEngineArguments( instruções="Gerar prompts de escrita criativa e exemplos de respostas.", system_prompt="Você é um instrutor de redação criativa fornecendo prompts de escrita e exemplos de respostas.", model_name="llama3.2:latest", temperatura =0,9, # Temperatura mais alta para variações mais criativas max_retries=2,
Execute o arquivo de exemplo escolhido:
exemplo python/creative_writing.py
O conjunto de dados gerado será salvo em um arquivo JSONL com o que estiver definido em dataset.save()
.
{ "mensagens": [ { "role": "system", "content": "Você está encarregado de projetar uma experiência imersiva de realidade virtual que transporta os usuários para um mundo fantástico de maravilhas." }, { "role": "user", "content": "Crie uma passagem descritiva sobre um personagem descobrindo seus talentos ocultos." }, { "role": "assistente", "content": "Enquanto ela olhava para a tela, os dedos de Emma pairavam sobre os pincéis, como se hesitassem em liberar as cores que estavam trancadas dentro dela. Os traços começaram com abandono ousado, girando azuis e verdes fundindo-se numa dança hipnotizante de luz e sombra. A cada momento que passava, ela sentia-se a tornar-se a arte – a sua própria essência infiltrando-se na tela como aguarelas numa tempestade de primavera. sinfonia de cor e criação." } ] }
Conjunto de dados : uma classe para gerenciar conjuntos de dados gerados.
LocalDataEngine : O principal mecanismo responsável por interagir com o cliente LLM e gerar conjuntos de dados.
LocalEngineArguments : uma classe de configuração que define as instruções, o prompt do sistema, a temperatura do nome do modelo, as novas tentativas e os modelos de prompt usados para gerar dados.
OllamaClient : uma classe cliente para interagir com a API Ollama
HFUploader : uma classe utilitária para fazer upload de conjuntos de dados para Hugging Face (passar o caminho para o conjunto de dados e token).
Se você encontrar algum erro ao executar o script, aqui estão algumas etapas comuns de solução de problemas:
Reinicie o Ollama :
killall ollama && ollama servir
Verifique a instalação do modelo :
ollama pull {model_name}
Verifique os registros do Ollama :
Inspecione os logs em busca de mensagens de erro que possam fornecer mais contexto sobre o que deu errado. Elas podem ser encontradas no diretório ~/.ollama/logs
.
A biblioteca deve funcionar com a maioria dos modelos LLM. Ele foi testado com os seguintes modelos até agora:
LLaMA3 : A biblioteca foi projetada para funcionar com o modelo LLaMA, especificamente o modelo llama3:latest
.
Mistral : A biblioteca é compatível com o modelo Mistral, que é um fork do modelo GPT-3.
Se você testar mais, faça uma solicitação pull para atualizar esta lista!
Se algo aqui puder ser melhorado, abra um problema ou envie uma solicitação pull.
Este projeto está licenciado sob a licença Apache 2. Consulte o arquivo LICENSE
para obter mais detalhes.