数据魔术师:CAMEL数据收集器一键搞定ShareGPT与Alpaca格式转换

【免费下载链接】camel 🐫 CAMEL: Communicative Agents for “Mind” Exploration of Large Language Model Society (NeruIPS'2023) https://www.camel-ai.org 【免费下载链接】camel 项目地址: https://gitcode.com/GitHub_Trending/ca/camel

你还在为不同LLM(大语言模型)需要不同格式的训练数据而烦恼吗?当你好不容易收集到一批优质对话数据,却发现它是ShareGPT格式,而你的模型只支持Alpaca格式时,是不是感到束手无策?别担心!CAMEL(Communicative Agents for "Mind" Exploration of Large Language Model Society)项目的数据收集器(Data Collectors) 模块就是你的救星。今天,我们将带你轻松掌握如何用CAMEL一键实现数据格式转换,让你的数据在不同模型间自由流动!

读完本文,你将学会:

  • 快速上手CAMEL数据收集器的两种核心工具
  • 实现ShareGPT与Alpaca格式的无缝转换
  • 掌握自动化与手动记录对话数据的技巧
  • 了解转换后数据的实际应用场景

为什么需要数据格式转换?

在LLM的世界里,不同的模型就像说着不同方言的人。比如:

  • Alpaca格式instruction-input-output三元组为主,适合单轮指令微调
  • ShareGPT格式 则保留完整的多轮对话历史和角色信息,更适合对话模型训练

如果没有统一的数据处理工具,你可能需要编写大量自定义代码来解析、转换这些格式,既耗时又容易出错。而CAMEL的数据收集器模块,就像一位精通多种方言的翻译官,能帮你轻松搞定这些麻烦!

CAMEL数据收集器核心组件

CAMEL项目在examples/data_collectors/目录下提供了两个开箱即用的工具:

  • AlpacaDataCollector:用于生成Alpaca格式数据
  • ShareGPTDataCollector:用于生成ShareGPT格式数据

这两个工具都支持自动记录手动记录两种模式,满足不同场景下的数据收集需求。

快速上手:Alpaca格式转换实战

让我们通过examples/data_collectors/alpaca_collector.py示例,看看如何轻松生成Alpaca格式数据:

# 创建模型和代理
model = ModelFactory.create(
    model_platform=ModelPlatformType.DEFAULT,
    model_type=ModelType.DEFAULT,
)

agent = ChatAgent(
    system_message="You are a helpful assistant",
    model=model,
)

# 初始化收集器并开始记录
collector = AlpacaDataCollector().record(agent).start()

# 自动记录对话
resp = agent.step("When is the release date of the video game Portal?")

# 转换并打印结果
print(collector.convert())

运行这段代码后,你会得到标准的Alpaca格式数据:

{
  "instruction": "You are a helpful assistant When is the release date of the video game Portal?",
  "input": "",
  "output": "The video game \"Portal\" was released on October 10, 2007."
}

手动记录模式

如果需要更精细的控制,你还可以手动记录对话内容:

# 手动记录用户和助手消息
collector.step("user", "Tools calling operator", "What is 2+2?")
collector.step("assistant", "Tools calling operator", "The answer is 4.")

# 转换数据
print(collector.convert())

ShareGPT格式转换:支持多轮对话与工具调用

对于需要保留完整对话流程的数据,ShareGPT格式是更好的选择。让我们通过examples/data_collectors/sharegpt_collector.py示例来了解其用法:

# 创建带工具的代理
tool_list = MathToolkit().get_tools()
agent = ChatAgent(
    system_message="You are a helpful assistant",
    model=model,
    tools=tool_list,
)

# 初始化ShareGPT收集器
collector = ShareGPTDataCollector().record(agent).start()

# 处理带工具调用的对话
response = agent.step("Call tools to calculate 17 * 19 = ?")

# 转换并打印结果
print(json.dumps(collector.convert(), indent=4))

转换后的ShareGPT格式数据会保留完整的对话历史,包括工具调用过程:

{
  "system": "You are a helpful assistant",
  "conversations": [
    {
      "from": "human",
      "value": "Call tools to calculate 17 * 19 = ?"
    },
    {
      "from": "function_call",
      "value": "{\"name\": \"mul\", \"arguments\": {\"a\": 17, \"b\": 19}}"
    },
    {
      "from": "observation",
      "value": "323"
    },
    {
      "from": "gpt",
      "value": "The result of 17 × 19 is 323."
    }
  ]
}

数据收集器工作原理

CAMEL数据收集器的核心设计思想是无感记录智能转换。通过record(agent).start()方法,收集器会自动监听代理(Agent)的对话过程,包括:

  1. 系统消息(System Message):代理的初始设定
  2. 用户输入(User Message):用户发起的查询
  3. 工具调用(Tool Call):代理调用外部工具的过程
  4. 观察结果(Observation):工具返回的结果
  5. 助手回复(Assistant Response):代理最终的回答

收集器会将这些信息结构化存储,并提供convert()方法将其转换为目标格式。

实际应用场景

1. 模型微调数据准备

无论是使用Alpaca格式微调指令跟随模型,还是用ShareGPT格式训练对话模型,CAMEL数据收集器都能帮你快速准备高质量训练数据。

2. 对话日志分析

通过记录和转换真实对话数据,你可以深入分析用户需求和代理行为,持续优化模型性能。

3. 多模型兼容性测试

同一批原始对话数据,通过CAMEL数据收集器可以轻松转换为多种格式,方便你在不同模型上进行测试和对比。

进阶技巧:自定义转换规则

如果你需要特殊的数据格式,CAMEL也提供了灵活的扩展机制。你可以继承BaseDataCollector类,并重写convert()方法来实现自定义转换逻辑:

from camel.data_collectors import BaseDataCollector

class CustomDataCollector(BaseDataCollector):
    def convert(self):
        # 实现你的自定义转换逻辑
        pass

总结与展望

CAMEL数据收集器通过简洁易用的API,解决了LLM训练数据格式不统一的痛点。无论是简单的单轮问答,还是复杂的多轮工具调用对话,它都能轻松应对。

随着LLM技术的不断发展,数据格式也将不断演化。CAMEL项目会持续更新数据收集器,支持更多新兴格式,为开发者提供更强大的数据处理能力。

如果你觉得这篇文章对你有帮助,别忘了点赞、收藏、关注我们,获取更多CAMEL使用技巧!下一期我们将介绍如何用CAMEL的数据收集器构建自己的对话数据集,敬请期待!

想要了解更多细节?可以查阅:

【免费下载链接】camel 🐫 CAMEL: Communicative Agents for “Mind” Exploration of Large Language Model Society (NeruIPS'2023) https://www.camel-ai.org 【免费下载链接】camel 项目地址: https://gitcode.com/GitHub_Trending/ca/camel

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐