
edg4llm:一款简单好用的大模型微调数据生成工具
edg4llm 是一个专为使用大型语言模型生成微调数据而设计的 Python 库。该工具旨在帮助用户高效创建高质量的训练数据集。目前,它主要支持文本数据的生成。生成的数据包括但不限于:- 问题数据- 答案数据- 对话数据通过 edg4llm,大家可以轻松生成符合微调需求的多样化数据集,从而显著提升大型语言模型在特定任务中的性能。
EDG4LLM项目分享
最新动态
2025- [2025/01/12] 📢📺 我们发布了一个项目介绍视频!你可以在 Bilibili上找到该视频。如果你喜欢,别忘了点赞 👍 并关注我们!
- [2025/1/11] 👋👋 我们很高兴地宣布 edg4llm v1.0.12 首次发布,这标志着其核心功能的完成。
项目链接
- Github地址:https://github.com/Alannikos/edg4llm/tree/main
- Pypi包地址:https://pypi.org/project/edg4llm/
- Bilibili视频地址:https://www.bilibili.com/video/BV1MccVeyEHp/
一. 项目简介
edg4llm是一个专为利用大语言模型生成微调数据而设计的Python库。该工具旨在帮助用户高效创建高质量的微调数据集。目前,它主要支持文本数据生成。生成的数据包括但不限于:
- 问题数据
- 答案数据
- 对话数据
借助edg4llm,用户能够轻松生成满足微调需求的多样化数据集,显著提升大语言模型在特定任务中的性能。
二. 项目亮点
EDG4LLM是一款一体化工具,旨在简化并加速为大语言模型创建微调数据集的过程。它以易用性、高效性和适应性为核心,提供一系列功能,以满足多样化的开发需求,同时确保无缝集成和强大的调试支持。
- 易于使用:提供简洁直观的API,用户无需复杂配置即可上手。
- 轻量级:依赖项少,资源消耗低,高效且便于使用。
- 灵活性:支持多种数据格式和生成选项,可定制以满足特定需求。
- 兼容性:与主流大语言模型无缝集成,适用于各种开发场景。
- 调试:提供清晰详细的日志输出,便于有效调试和追踪问题。
三. 安装使用
要安装 edg4llm,只需在终端中运行以下命令:
pip install edg4llm
3.1 支持的Python版本
- 支持的Python版本:为确保与本库兼容,需使用Python 3.8或更高版本。请确保您的环境满足此版本要求。
3.2 支持的大语言模型供应商
当前版本的edg4llm支持以下大语言模型供应商:
-
- 开发者:由上海人工智能实验室开发。
- 优势:InternLM是一系列开源大语言模型,具备出色的推理、长文本处理以及工具使用能力。
-
- 开发者:由清华大学和智谱AI联合开发。
- 优势:ChatGLM是一款基于通用语言模型(GLM)架构的开源双语对话语言模型。它在大量的中文和英文文本语料库上进行训练,因此在生成自然且贴合上下文的回复方面表现卓越。
-
- 开发者:由DeepSeek团队开发。
- 优势:DeepSeek - V3是一款强大且性价比高的开源大语言模型。它在语言生成、问答以及对话系统等任务中表现出色。
-
- 开发者:由OpenAI开发。
- 优势:OpenAI的ChatGPT是一款高度先进的语言模型,以其强大的文本生成能力而闻名。它在海量数据上进行训练,能够生成高质量且贴合上下文的回复。
在未来的更新中,将会添加更多供应商,以扩展兼容性和功能。
模型 | 是否免费 | base_url | model_provider |
---|---|---|---|
InternLM | 部分免费 | https://internlm-chat.intern-ai.org.cn/puyu/api/v1/chat/completions | internlm |
ChatGLM | 部分免费 | https://open.bigmodel.cn/api/paas/v4/chat/completions/ | chatglm |
DeepSeek | 新用户免费试用 | https://api.deepseek.com/chat/completions | deepseek |
OpenAI ChatGPT | 否(付费套餐) | https://api.openai.com/v1/chat/completions | chatgpt |
四. 快速上手
要开始使用 edg4llm,请遵循以下步骤。这些示例展示了如何使用该库根据特定提示生成对话数据。
4.1 Attention
如果您想使用question
模式,请确保您的user_prompt
包含以下格式:
[
{
"question": "AAA"
}
]
如果您想使用answer
模式,请确保您的user_prompt
包含以下格式:
[
{
"answer": "AAA"
}
]
如果您想使用dialogue
模式,请确保您的user_prompt
包含以下格式:
[
{
"input":"AAA", "output":"BBB"
}
]
4.2 前提条件
- 安装 edg4llm 包:
pip install edg4llm
-
确保您使用的是Python 3.8或更高版本。
-
获取所选模型供应商(如ChatGLM)所需的API密钥和基础URL。
-
您可以使用命令行界面(CLI)列出支持的
model_providers
和model_names
:
用法: edg4llm-cli [-h] [--list-providers] [--list-models PROVIDER]
查看支持的模型列表。
选项:
-h, --help 显示此帮助信息并退出
--list-providers 列出所有支持的供应商。
--list-models PROVIDER
查看特定供应商的模型列表。
4.3 代码示例(中文版)
# chatglm_demo.py
import edg4llm
print(edg4llm.__version__)
from edg4llm import EDG4LLM
api_key = "xxx"
base_url = "https://open.bigmodel.cn/api/paas/v4/chat/completions"
edg = EDG4LLM(model_provider='chatglm', model_name="glm-4-flash", base_url=base_url, api_key=api_key)
# 设置测试数据
system_prompt = """你是一个精通中国古代诗词的古文学大师"""
user_prompt = """
目标: 1. 请生成以过年为场景的连续多轮对话记录
2. 提出的问题要多样化。
3. 要符合人类的说话习惯。
4. 严格遵循规则: 请以如下格式返回生成的数据, 只返回JSON格式,json模板:
[
{
"input":"AAA","output":"BBB"
}
]
其中input字段表示一个人的话语, output字段表示专家的话语
"""
num_samples = 1 # 只生成一个对话样本
# 调用 generate 方法生成对话
data_dialogue = edg.generate(
task_type="dialogue",
system_prompt=system_prompt,
user_prompt=user_prompt,
num_samples=num_samples
)
4.4 代码示例(英文版)
# chatglm_demo.py
import edg4llm
print(edg4llm.__version__)
from edg4llm import EDG4LLM
api_key = "xxx"
base_url = "https://open.bigmodel.cn/api/paas/v4/chat/completions"
edg = EDG4LLM(model_provider='chatglm', model_name="glm-4-flash", base_url=base_url, api_key=api_key)
# 设置测试数据
system_prompt = """You are a master of ancient Chinese literature, specializing in classical poetry."""
user_prompt = """
目标: 1. Please generate a multi-turn dialogue set in the context of celebrating the Lunar New Year.
2. The questions should be diverse.
3. The dialogue should align with natural human conversational habits.
4. Strictly follow this rule: Please return the generated data in the following format, only in JSON format. JSON template:
[
{
"input":"AAA","output":"BBB"
}
]
Where the input field represents a person's dialogue, and the output field represents the expert's response.
"""
num_samples = 1 # 只生成一个对话样本
# 调用 generate 方法生成对话
data_dialogue = edg.generate(
task_type="dialogue",
system_prompt=system_prompt,
user_prompt=user_prompt,
num_samples=num_samples
)
4.5 解释
-
导入库:导入
edg4llm
库,并使用print(edg4llm.__version__)
验证版本。 -
初始化:使用
EDG4LLM
,通过合适的模型供应商、模型名称、基础URL和API密钥来初始化该库。 -
提示词:
system_prompt
定义了助手的行为或角色。user_prompt
为生成数据提供特定指令。
-
数据生成:使用
generate
方法,并传入以下参数:-
task_type
:定义任务类型。dialogue
:根据提示生成问答对。question
:根据提示生成问题数据。answer
:根据问题和提示生成答案数据。
-
system_prompt
和user_prompt
:提供上下文和特定于任务的指令。 -
num_samples
:指定要生成的样本数量。
-
-
输出:生成的数据以指定格式的JSON对象返回。
更多推荐
所有评论(0)