LLaMA-Factory 使用 sharegpt 格式的数据集

LLaMA-Factory 使用 sharegpt 格式的数据集

flyfish

sharegpt 格式的数据集遵循的格式

json 复制代码
[
  {
    "conversations": [
      {
        "from": "human",
        "value": "user instruction"
      },
      {
        "from": "gpt",
        "value": "model response"
      }
    ],
    "system": "system prompt (optional)",
    "tools": "tool description (optional)"
  }
]

字段作用

conversations: 包含一系列对话对象,每个对象都由发言者(from)和发言内容(value)组成。from可以是"human"(人类)或"gpt"(机器),表示是谁说的这句话。

system: 可选的系统级别提示,类似于alpaca格式中的system字段,用于设置对话的整体背景或规则。

tools: 描述可用的外部工具或功能的信息,这些工具可能被模型用来执行某些任务或获取更多信息。这个字段对于那些需要与外部世界互动的应用特别有用。

在 data/dataset_info.json 文件中提供您的数据集定义,并采用以下格式

对于 sharegpt 格式的数据集,dataset_info.json 文件中的列应该包括:

json 复制代码
"dataset_name": {
    "file_name": "dataset_name.json",
    "formatting": "sharegpt",
    "columns": {
      "messages": "conversations",
      "system": "system",
      "tools": "tools"
    },
    "tags": {
      "role_tag": "from",
      "content_tag": "value",
      "user_tag": "user",
      "assistant_tag": "assistant"
    }
  }

示例1: 基本对话

假设我们有一个场景,用户询问当前天气,并且系统通过调用外部API来获取天气信息。

json 复制代码
[

  {

    "conversations": [

      {

        "from": "human",

        "value": "今天济南的天气怎么样?"

      },

      {

        "from": "function_call",

        "value": "{\"name\": \"get_weather\", \"arguments\": {\"location\": \"济南\"}}"

      },

      {

        "from": "observation",

        "value": "{\"temperature\": 20, \"condition\": \"晴天\", \"humidity\": 45}"

      },

      {

        "from": "gpt",

        "value": "今天济南的天气是晴天,温度大约20摄氏度,湿度为45%。"

      }

    ],

    "system": "你是一位智能助手,能够帮助用户查询各种信息。",

    "tools": "[{\"name\": \"get_weather\", \"description\": \"获取指定地点的天气信息\", \"parameters\": {\"type\": \"object\", \"properties\": {\"location\": {\"type\": \"string\", \"description\": \"要查询天气的地点\"}}, \"required\": [\"location\"]}}]"

  }

]

在这个例子中:

human 用户询问济南今天的天气。

function_call 调用了一个名为get_weather的函数,传递了位置参数济南。

observation 返回了从API获取到的天气信息,包括温度、天气状况和湿度。

gpt 根据观察结果生成了对用户的回答。

示例2: 多轮对话

展示一个更复杂的多轮对话,其中包含多个函数调用和更多的交互。

json 复制代码
[

  {

    "conversations": [

      {

        "from": "human",

        "value": "我想知道明天济南的天气预报。"

      },

      {

        "from": "function_call",

        "value": "{\"name\": \"get_weather_forecast\", \"arguments\": {\"location\": \"济南\", \"date\": \"明天\"}}"

      },

      {

        "from": "observation",

        "value": "{\"temperature_high\": 25, \"temperature_low\": 18, \"condition\": \"多云\", \"humidity\": 60}"

      },

      {

        "from": "gpt",

        "value": "明天济南的天气预报显示是多云,最高温度约为25摄氏度,最低温度约为18摄氏度,湿度为60%。"

      },

      {

        "from": "human",

        "value": "那后天呢?"

      },

      {

        "from": "function_call",

        "value": "{\"name\": \"get_weather_forecast\", \"arguments\": {\"location\": \"济南\", \"date\": \"后天\"}}"

      },

      {

        "from": "observation",

        "value": "{\"temperature_high\": 23, \"temperature_low\": 17, \"condition\": \"小雨\", \"humidity\": 70}"

      },

      {

        "from": "gpt",

        "value": "后天济南可能会有小雨,最高温度约为23摄氏度,最低温度约为17摄氏度,湿度为70%。记得带伞哦!"

      }

    ],

    "system": "你是一位智能助手,能够帮助用户查询各种信息。",

    "tools": "[{\"name\": \"get_weather_forecast\", \"description\": \"获取指定地点的天气预报\", \"parameters\": {\"type\": \"object\", \"properties\": {\"location\": {\"type\": \"string\", \"description\": \"要查询天气的地点\"}, \"date\": {\"type\": \"string\", \"description\": \"查询的日期(例如:'明天', '后天')\"}}, \"required\": [\"location\", \"date\"]}}]"

  }

]

在这个多轮对话中:

第一轮对话中,用户询问明天济南的天气预报,系统调用get_weather_forecast函数并返回结果。

第二轮对话中,用户继续询问后天的天气,系统再次调用同一个函数并返回相应结果。

数据集描述

对于上述格式的数据,dataset_info.json文件中的数据集描述可以如下所示:

json 复制代码
{

  "天气查询数据集": {

    "file_name": "weather_data.json",

    "formatting": "sharegpt",

    "columns": {

      "messages": "conversations",

      "system": "system",

      "tools": "tools"

    }

  }

}

这个描述指定了数据文件的名称、使用的格式以及字段映射关系。

function_call字段

在sharegpt格式的数据集中,function_call字段用于表示模型调用外部函数或工具的行为。这种机制允许模型与外部服务交互,以获取额外的信息或执行特定任务。这在许多实际应用中非常有用,比如查询天气、检索数据库等。

数据获取:

模型可以通过调用外部API来获取实时数据,如天气预报、股票价格、新闻更新等。

例如,在询问天气时,模型可以调用一个天气API来获取最新的天气信息。

复杂计算:

对于复杂的数学计算或其他需要大量处理的任务,模型可以直接调用专门的计算服务。

例如,计算用户的年龄、财务分析等。

数据库查询:

模型可以调用数据库查询函数来检索存储在数据库中的信息。

例如,从客户数据库中查找用户信息。

扩展功能:

通过调用外部工具,模型可以执行原本无法完成的任务,从而增强其功能和实用性。

例如,发送电子邮件、创建日历事件等。

自定义逻辑:开发者可以编写自定义脚本或插件,并通过function_call机制让模型调用这些脚本来执行特定的任务。

第三方集成:模型可以调用第三方服务的API,如社交媒体平台、云服务提供商等。

文件操作:模型可以调用函数来读取、写入或修改文件内容。

通知和消息发送:模型可以调用函数来发送电子邮件、短信或其他类型的通知。

验证和确认

在某些情况下,模型可能需要验证信息或确认某个操作的结果。

例如,在预订系统中确认订单状态。

身份验证:模型可以调用身份验证函数来验证用户的身份。

权限检查:模型可以调用权限检查函数来确保用户有权限执行某些操作。

相关推荐
西西弗Sisyphus4 小时前
LLaMA-Factory 使用 alpaca 格式的数据集
alpaca·llama-factory
Andy_shenzl14 天前
11、LLaMA-Factory自定义数据集微调
llama·大模型微调·llama-factory·自定义数据集
花花少年1 个月前
快速体验LLaMA-Factory 私有化部署和高效微调Llama3模型(曙光超算互联网平台异构加速卡DCU)
llama-factory·llama3·scnet·dcu·国产异构加速卡
君臣Andy4 个月前
llama-factory微调大模型
llama·llama-factory
段智华4 个月前
Llama模型家族之使用 Supervised Fine-Tuning(SFT)微调预训练Llama 3 语言模型(一) LLaMA-Factory简介
llama-factory·llama3
段智华4 个月前
Llama模型家族之使用 Supervised Fine-Tuning(SFT)微调预训练Llama 3 语言模型(三)通过web页面方式微调
llama-factory·llama3
liguiyuan1125 个月前
Qwen1.5大语言模型微调实践
人工智能·语言模型·qwen·llama-factory
Ziegler Han6 个月前
LLaMA-Factory微调(sft)ChatGLM3-6B保姆教程
llama·chatglm3-6b·llama-factory