Promptwright 是 Stacklok 的一个 Python 库,设计用于使用本地 LLM 生成大型综合数据集。该库提供了一组灵活且易于使用的界面,使用户能够生成提示的合成数据集。
Promptwright 的灵感来自于 redotvideo/pluto,事实上,它一开始是 fork,但最终是一个重写,允许针对本地 LLM 模型生成数据集,而不是 OpenAI,后者的成本可能非常昂贵。
该库与 Ollama 接口,可以轻松提取模型并运行 Promptwright。
本地 LLM 客户端集成:与基于 Ollama 的模型交互
可配置指令和提示:定义自定义指令和系统提示
Push to Hugging Face :将生成的数据集推送到 Hugging Face Hub。
Python 3.11+
已安装promptwright
库
Ollama CLI 已安装并正在运行(请参阅 Ollama 安装
通过 Ollama 拉取的模型(请参阅模型兼容性)
要安装先决条件,您可以使用以下命令:
pip 安装提示 乌拉马服务 ollama pull {model_name} # 无论您想使用哪个模型
examples
目录中有一些示例,演示了如何使用该库生成不同的基于主题的数据集。
运行一个例子:
确保您已通过运行ollama serve
启动 Ollama。
验证是否已下载所需的模型(例如llama3.2:latest
)。
将所选示例文件中的model_name
设置为您已下载的模型。
engine = LocalDataEngine( args=LocalEngineArguments( instructions="生成创意写作提示和示例回复。", system_prompt="您是创意写作讲师,提供写作提示和示例回复。", model_name="llama3.2:latest", temp =0.9, # 更高的温度以获得更多创意变化 max_retries=2,
运行您选择的示例文件:
python 示例/creative_writing.py
生成的数据集将保存到 JSONL 文件中,保存到dataset.save()
中设置的任何内容。
{“消息”:[ { "role": "system", "content": "你的任务是设计一种身临其境的虚拟现实体验,将用户带入一个奇幻的奇幻世界。" }, { "role": "user", "content": "创建一段关于角色发现其隐藏才能的描述性段落。" }, { "role": "assistant", "content": "当艾玛凝视画布时,她的手指悬停在画笔上方,似乎在犹豫是否要释放她内心锁住的色彩。笔触以大胆的放纵开始,旋转着蓝色和绿色融合成令人着迷的光影之舞,她感觉自己变成了艺术——她的本质就像春天风暴中的水彩画一样渗透到画布上,周围的世界消失了,只剩下充满活力的东西。色彩与创造的交响曲。” } ] }
Dataset :用于管理生成的数据集的类。
LocalDataEngine :负责与LLM客户端交互并生成数据集的主引擎。
LocalEngineArguments :一个配置类,定义用于生成数据的指令、系统提示、模型名称温度、重试和提示模板。
OllamaClient :用于与 Ollama API 交互的客户端类
HFUploader :用于将数据集上传到 Hugging Face 的实用程序类(传入数据集和令牌的路径)。
如果您在运行脚本时遇到任何错误,以下是一些常见的故障排除步骤:
重新启动奥拉马:
Killall ollama && ollama 发球
验证模型安装:
ollama 拉 {model_name}
检查 Ollama 日志:
检查日志中是否有任何错误消息,这些消息可能会提供有关错误原因的更多上下文,这些可以在~/.ollama/logs
目录中找到。
该库应该适用于大多数 LLM 模型。到目前为止,它已经在以下模型上进行了测试:
LLaMA3 :该库旨在与 LLaMA 模型配合使用,特别是llama3:latest
模型。
Mistral :该库与 Mistral 模型兼容,该模型是 GPT-3 模型的分支。
如果您继续测试,请提出拉取请求来更新此列表!
如果此处有需要改进的地方,请提出问题或提交拉取请求。
该项目根据 Apache 2 许可证获得许可。有关更多详细信息,请参阅LICENSE
文件。