EDG4LLM项目分享

请添加图片描述

最新动态

2025
  • [2025/01/12] 📢📺 我们发布了一个项目介绍视频!你可以在 Bilibili上找到该视频。如果你喜欢,别忘了点赞 👍 并关注我们!
  • [2025/1/11] 👋👋 我们很高兴地宣布 edg4llm v1.0.12 首次发布,这标志着其核心功能的完成。

项目链接

  1. Github地址:https://github.com/Alannikos/edg4llm/tree/main
  2. Pypi包地址:https://pypi.org/project/edg4llm/
  3. Bilibili视频地址:https://www.bilibili.com/video/BV1MccVeyEHp/

一. 项目简介

edg4llm是一个专为利用大语言模型生成微调数据而设计的Python库。该工具旨在帮助用户高效创建高质量的微调数据集。目前,它主要支持文本数据生成。生成的数据包括但不限于:

  • 问题数据
  • 答案数据
  • 对话数据

借助edg4llm,用户能够轻松生成满足微调需求的多样化数据集,显著提升大语言模型在特定任务中的性能。

二. 项目亮点

EDG4LLM是一款一体化工具,旨在简化并加速为大语言模型创建微调数据集的过程。它以易用性、高效性和适应性为核心,提供一系列功能,以满足多样化的开发需求,同时确保无缝集成和强大的调试支持。

  1. 易于使用:提供简洁直观的API,用户无需复杂配置即可上手。
  2. 轻量级:依赖项少,资源消耗低,高效且便于使用。
  3. 灵活性:支持多种数据格式和生成选项,可定制以满足特定需求。
  4. 兼容性:与主流大语言模型无缝集成,适用于各种开发场景。
  5. 调试:提供清晰详细的日志输出,便于有效调试和追踪问题。

三. 安装使用

要安装 edg4llm,只需在终端中运行以下命令:

pip install edg4llm

3.1 支持的Python版本

  • 支持的Python版本:为确保与本库兼容,需使用Python 3.8或更高版本。请确保您的环境满足此版本要求。

3.2 支持的大语言模型供应商

当前版本的edg4llm支持以下大语言模型供应商:

  • 书生大模型

    • 开发者:由上海人工智能实验室开发。
    • 优势:InternLM是一系列开源大语言模型,具备出色的推理、长文本处理以及工具使用能力。
  • ChatGLM

    • 开发者:由清华大学和智谱AI联合开发。
    • 优势:ChatGLM是一款基于通用语言模型(GLM)架构的开源双语对话语言模型。它在大量的中文和英文文本语料库上进行训练,因此在生成自然且贴合上下文的回复方面表现卓越。
  • DeepSeek

    • 开发者:由DeepSeek团队开发。
    • 优势:DeepSeek - V3是一款强大且性价比高的开源大语言模型。它在语言生成、问答以及对话系统等任务中表现出色。
  • OpenAI ChatGPT

    • 开发者:由OpenAI开发。
    • 优势:OpenAI的ChatGPT是一款高度先进的语言模型,以其强大的文本生成能力而闻名。它在海量数据上进行训练,能够生成高质量且贴合上下文的回复。

在未来的更新中,将会添加更多供应商,以扩展兼容性和功能。

模型是否免费base_urlmodel_provider
InternLM部分免费https://internlm-chat.intern-ai.org.cn/puyu/api/v1/chat/completionsinternlm
ChatGLM部分免费https://open.bigmodel.cn/api/paas/v4/chat/completions/chatglm
DeepSeek新用户免费试用https://api.deepseek.com/chat/completionsdeepseek
OpenAI ChatGPT否(付费套餐)https://api.openai.com/v1/chat/completionschatgpt

四. 快速上手

要开始使用 edg4llm,请遵循以下步骤。这些示例展示了如何使用该库根据特定提示生成对话数据。

4.1 Attention

如果您想使用question模式,请确保您的user_prompt包含以下格式:

[
    {
        "question": "AAA"
    }
]

如果您想使用answer模式,请确保您的user_prompt包含以下格式:

[
    {
        "answer": "AAA"
    }
]

如果您想使用dialogue模式,请确保您的user_prompt包含以下格式:

[
    {
        "input":"AAA", "output":"BBB" 
    }
]

4.2 前提条件

  1. 安装 edg4llm 包:
   pip install edg4llm
  1. 确保您使用的是Python 3.8或更高版本。

  2. 获取所选模型供应商(如ChatGLM)所需的API密钥和基础URL。

  3. 您可以使用命令行界面(CLI)列出支持的model_providersmodel_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 解释

  1. 导入库:导入edg4llm库,并使用print(edg4llm.__version__)验证版本。

  2. 初始化:使用EDG4LLM,通过合适的模型供应商、模型名称、基础URL和API密钥来初始化该库。

  3. 提示词

    • system_prompt定义了助手的行为或角色。
    • user_prompt为生成数据提供特定指令。
  4. 数据生成:使用generate方法,并传入以下参数:

    • task_type:定义任务类型。

      • dialogue:根据提示生成问答对。
      • question:根据提示生成问题数据。
      • answer:根据问题和提示生成答案数据。
    • system_promptuser_prompt:提供上下文和特定于任务的指令。

    • num_samples:指定要生成的样本数量。

  5. 输出:生成的数据以指定格式的JSON对象返回。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐