OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  Adala 自主数据标注与数据生成Agent框架

Adala 自主数据标注与数据生成Agent框架

 
  webapp ·  2026-03-14 11:16:22 · 6 次点击  · 0 条评论  

PyPI version
Python Version
GitHub
GitHub Repo stars




Shows Adala logo in light mode and dark mode.

Adala 是一个 Autonomous DAta (Labeling) Agent(自主数据标注智能体)框架。

Adala 提供了一个强大的框架,用于实现专门处理数据的智能体,尤其侧重于多样化的数据标注任务。这些智能体是自主的,意味着它们可以通过迭代学习独立掌握一个或多个技能。学习过程受其运行环境、观察和反思的影响。用户通过提供基准事实数据集来定义环境。每个智能体都在我们称之为“运行时”(与 LLM 同义)的环境中学习和应用其技能。

训练智能体技能

📢 为什么选择 Adala?

  • 🌟 可靠的智能体:智能体建立在基准事实数据的基础上。这确保了结果的一致性和可信度,使 Adala 成为您数据处理需求的可靠选择。
  • 🎮 可控的输出:对于每项技能,您都可以配置所需的输出,并设置具有不同灵活程度的特定约束。无论您是希望严格遵守特定准则,还是需要基于智能体学习的自适应输出,Adala 都能让您根据确切需求定制结果。
  • 🎯 专注于数据处理:虽然智能体擅长各种数据标注任务,但它们也可以针对广泛的数据处理需求进行定制。
  • 🧠 自主学习:Adala 智能体不仅仅是自动化的;它们是智能的。它们根据环境、观察和反思,迭代且独立地发展技能。
  • 灵活且可扩展的运行时:Adala 的运行时环境具有适应性。单个技能可以部署在多个运行时中,便于实现动态场景,如学生/教师架构。此外,该框架的开放性邀请社区进行扩展和定制,确保持续演进并适应多样化需求。
  • 🚀 易于定制:快速定制和开发智能体,以应对您特定需求的挑战,而无需面对陡峭的学习曲线。

🫵 Adala 适合谁?

Adala 是一个多功能框架,专为人工智能和机器学习领域的个人和专业人士设计。以下人群可以从中受益:

  • 🧡 AI 工程师:使用模块化、相互连接的技能来架构和设计 AI 智能体系统。构建生产级的智能体系统,将底层 ML 抽象给 Adala 和 LLMs。
  • 💻 机器学习研究员:尝试复杂的问题分解和因果推理。
  • 📈 数据科学家:应用智能体对数据进行预处理和后处理。在处理大型 DataFrame 时,通过 Python notebook 原生地与 Adala 交互。
  • 🏫 教育工作者和学生:将 Adala 用作教学工具或作为高级项目和研究的基石。

虽然上述角色是核心,但必须指出,Adala 经过精心设计,旨在简化和提升 AI 开发之旅,服务于所有爱好者,无论他们在该领域的具体细分领域如何。🥰

🔌 安装

安装 Adala:

pip install adala

Adala 会频繁发布更新。为了确保您使用的是最新版本,建议从 GitHub 安装:

pip install git+https://github.com/HumanSignal/Adala.git

开发者安装:

git clone https://github.com/HumanSignal/Adala.git
cd Adala/
poetry install

📝 前提条件

设置 OPENAI_API_KEY(查看此处的说明

export OPENAI_API_KEY='your-openai-api-key'

🎬 快速开始

在这个例子中,我们将直接在 Python notebook 中使用 Adala 作为独立库。

点击此处查看扩展的快速入门示例。

import pandas as pd

from adala.agents import Agent
from adala.environments import StaticEnvironment
from adala.skills import ClassificationSkill
from adala.runtimes import OpenAIChatRuntime
from rich import print

# 训练数据集
train_df = pd.DataFrame([
    ["It was the negative first impressions, and then it started working.", "Positive"],
    ["Not loud enough and doesn't turn on like it should.", "Negative"],
    ["I don't know what to say.", "Neutral"],
    ["Manager was rude, but the most important that mic shows very flat frequency response.", "Positive"],
    ["The phone doesn't seem to accept anything except CBR mp3s.", "Negative"],
    ["I tried it before, I bought this device for my son.", "Neutral"],
], columns=["text", "sentiment"])

# 测试数据集
test_df = pd.DataFrame([
    "All three broke within two months of use.",
    "The device worked for a long time, can't say anything bad.",
    "Just a random line of text."
], columns=["text"])

agent = Agent(
    # 连接到数据集
    environment=StaticEnvironment(df=train_df),

    # 定义一项技能
    skills=ClassificationSkill(
        name='sentiment',
        instructions="Label text as positive, negative or neutral.",
        labels=["Positive", "Negative", "Neutral"],
        input_template="Text: {text}",
        output_template="Sentiment: {sentiment}"
    ),

    # 定义您的技能可能使用的所有不同运行时
    runtimes = {
        # 您可以在此处通过 `OpenAIRuntime(..., api_key='your-api-key')` 指定您的 OPENAI API KEY
        'openai': OpenAIChatRuntime(model='gpt-4o'),
    },
    teacher_runtimes = {
        # 您可以在此处通过 `OpenAIRuntime(..., api_key='your-api-key')` 指定您的 OPENAI API KEY
        'default': OpenAIChatRuntime(model='gpt-4o'),
    },
    default_runtime='openai',
)

print(agent)
print(agent.skills)

agent.learn(learning_iterations=3, accuracy_threshold=0.95)

print('\n=> Run tests ...')
predictions = agent.run(test_df)
print('\n => Test results:')
print(predictions)

但是,如果您希望使用 Claude、Gemini 或其他与 OpenAI 兼容的 LLMs,可以通过 OpenRouter.ai 来实现。以下是如何使用 OpenRouter API 的示例:

首先设置 OPENROUTER_API_KEY 环境变量,您可以从 OpenRouter 获取。

export OPENROUTER_API_KEY='your-openrouter-api-key'

然后,让我们看看如何修改前面的示例以使用 OpenRouter 和 Claude 3.5 Haiku。

import os
import pandas as pd

from adala.agents import Agent
from adala.environments import StaticEnvironment
from adala.skills import ClassificationSkill
from adala.runtimes import OpenAIChatRuntime
from rich import print

# 训练数据集
train_df = pd.DataFrame([
    ["It was the negative first impressions, and then it started working.", "Positive"],
    ["Not loud enough and doesn't turn on like it should.", "Negative"],
    ["I don't know what to say.", "Neutral"],
    ["Manager was rude, but the most important that mic shows very flat frequency response.", "Positive"],
    ["The phone doesn't seem to accept anything except CBR mp3s.", "Negative"],
    ["I tried it before, I bought this device for my son.", "Neutral"],
], columns=["text", "sentiment"])

# 测试数据集
test_df = pd.DataFrame([
    "All three broke within two months of use.",
    "The device worked for a long time, can't say anything bad.",
    "Just a random line of text."
], columns=["text"])

agent = Agent(
    # 连接到数据集
    environment=StaticEnvironment(df=train_df),

    # 定义一项技能
    skills=ClassificationSkill(
        name='sentiment',
        instructions="Label text as positive, negative or neutral.",
        labels=["Positive", "Negative", "Neutral"],
        input_template="Text: {text}",
        output_template="Sentiment: {sentiment}"
    ),

    # 定义您的技能可能使用的所有不同运行时
    runtimes = {
        # 您可以在此处指定您的 OpenRouter API Key,或提前在环境变量 OPENROUTER_API_KEY 中设置
        'openrouter': OpenAIChatRuntime(
            base_url="https://openrouter.ai/api/v1",
            model="anthropic/claude-3.5-haiku",
            api_key=os.getenv("OPENROUTER_API_KEY"),
            provider="Custom"
            ),
    },

    default_runtime='openrouter',

    teacher_runtimes = {
        "default" : OpenAIChatRuntime(
            base_url="https://openrouter.ai/api/v1",
            model="anthropic/claude-3.5-haiku",
            api_key=os.getenv("OPENROUTER_API_KEY"),
            provider="Custom"
        ),
    }
)

print(agent)
print(agent.skills)

agent.learn(learning_iterations=3, accuracy_threshold=0.95)

print('\n=> Run tests ...')
predictions = agent.run(test_df)
print('\n => Test results:')
print(predictions)

👉 示例

技能 描述 Colab
ClassificationSkill 将文本分类到一组预定义的标签中。 Open In Colab
ClassificationSkillWithCoT 使用思维链推理,将文本分类到一组预定义的标签中。 Open In Colab
SummarizationSkill 将文本总结为更短的文本。 Open In Colab
QuestionAnsweringSkill 根据给定的上下文回答问题。 Open In Colab
TranslationSkill 将文本从一种语言翻译到另一种语言。 Open In Colab
TextGenerationSkill 根据给定的提示生成文本。 Open In Colab
Skill sets 通过一系列技能处理复杂任务。 Open In Colab
OntologyCreator 从一组文本示例中推断本体。 Open In Colab
Math reasoning 解决 GSM8k 数据集上的小学数学问题。 Open In Colab

执行智能体技能

🗺 路线图

  • [x] 低层技能管理(例如 agent.get_skill("name"))[由 @niklub 完成]
  • [ ] 使每个 notebook 示例都能在 Google Collab 中运行,并在 README 中添加徽章
  • [ ] 用一个示例扩展环境
  • [ ] 多任务学习(同时学习多个技能)
  • [ ] 计算并存储顶层智能体指标(创建的预测、运行时执行、学习循环等)
  • [ ] 创建命名实体识别技能
  • [ ] 命令行工具(参见此 readme 的源代码示例)
  • [ ] 与 Adala 交互的 REST API
  • [ ] 视觉和多模态智能体技能

🤩 为 Adala 做贡献

增强技能、优化运行时,或开创新的智能体类型。无论您是精心设计细微的任务、优化计算环境,还是为特定领域定制专门的智能体,您的贡献都将推动 Adala 的演进。加入我们,共同塑造智能系统的未来,使 Adala 对全球用户来说更加多功能和具有影响力。

在此阅读更多

💬 支持

您需要帮助或希望与社区互动吗?查看 Discord 频道
无论您有问题、需要澄清,还是只是想讨论与项目相关的话题,Discord 社区都欢迎您!

6 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 24 ms
Developed with Cursor