@tom_doerr: 通过自学习智能体实现数据标注自动化 https://github.com/HumanSignal/Adala…
摘要
Adala 是一个开源框架,用于构建自主数据标注智能体,这些智能体通过与基准数据集和 LLM 运行时交互,迭代式地学习技能。
查看缓存全文
缓存时间: 2026/05/10 18:30
使用自学习智能体自动化数据标注 https://t.co/P22rWetTBx https://t.co/uSdI3aOAcG — # HumanSignal/Adala 来源:https://github.com/HumanSignal/Adala PyPI 版本 (https://badge.fury.io/py/adala) Python 版本 GitHub GitHub Repo 星标 Adala 是一个 Autonomous DAta (Labeling) Agent(自主数据标注智能体)框架。Adala 提供了一个强大的框架,用于实现专注于数据处理的智能体,特别侧重于多样化的数据标注任务。这些智能体是自主的,意味着它们可以通过迭代学习独立获取一项或多项技能。这个学习过程受到运行环境、观察结果和反思的影响。用户通过提供地面真值(ground truth)数据集来定义环境。每个智能体在我们称为“运行时”(runtime)的环境中学习和应用其技能,这里的运行时等同于大语言模型(LLM)。训练智能体技能 ## 📢 为什么选择 Adala? - 🌟 可靠的智能体:智能体建立在真值数据的基础上。这确保了结果的一致性和可信度,使 Adala 成为您数据处理需求的可靠选择。 - 🎮 可控输出:对于每项技能,您可以配置所需的输出并设定特定约束,灵活度各异。无论您希望严格遵循特定指南,还是基于智能体的学习进行更自适应的输出,Adala 都允许您根据确切需求定制结果。 - 🎯 专注于数据处理:虽然智能体在多样化的数据标注任务中表现出色,但它们可以定制以满足广泛的数据处理需求。 - 🧠 自主学习:Adala 智能体不仅仅是自动化的;它们是智能的。它们基于环境、观察和反思,迭代且独立地发展技能。 - ✅ 灵活可扩展的运行时:Adala 的运行时环境是可适应的。单项技能可以部署到多个运行时,促进动态场景,如学生/教师架构。此外,框架的开放性邀请社区扩展和定制运行时,确保持续演进和适应多样化需求。 - 🚀 易于定制:快速定制和开发智能体以解决您特定需求面临的挑战,无需面临陡峭的学习曲线。 ## 🫵 Adala 适合谁? Adala 是一个多功能框架,专为人工智能和机器学习领域的个人和专业人士设计。以下人群可以受益: - 🧡 AI 工程师:使用模块化、互连的技能架构和设计 AI 智能体系统。构建生产级智能体系统,将底层机器学习抽象给 Adala 和 LLMs。 - 💻 机器学习研究员:实验复杂问题的分解和因果推理。 - 📈 数据科学家:应用智能体预处理和后处理数据。在处理大型 Dataframes 时,通过 Python 笔记本原生与 Adala 交互。 - 🏫 教育者和学生:将 Adala 用作教学工具或作为高级项目和研究的基础。 虽然上述角色是核心,但值得注意的是,Adala 精心设计以简化和提升 AI 开发之旅,服务于所有爱好者,无论他们在该领域的具体领域如何。 🥰 ## 🔌 安装 安装 Adala: sh pip install adala Adala 频繁发布更新。为了确保您使用的是最新版本,建议从 GitHub 安装: sh pip install git+https://github.com/HumanSignal/Adala.git 开发者安装: sh git clone https://github.com/HumanSignal/Adala.git cd Adala/ poetry install ## 📝 先决条件 设置 OPENAI_API_KEY(请参阅此处说明 (https://platform.openai.com/docs/quickstart/step-2-setup-your-api-key)) export OPENAI_API_KEY='your-openai-api-key' ## 🎬 快速入门 在此示例中,我们将直接在 Python 笔记本中使用 Adala 作为独立库。点击 这里 查看扩展的快速入门示例。 python 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=> 运行测试 ...') predictions = agent.run(test_df) print('\n => 测试结果:') print(predictions) 但是,如果您希望使用 Claude、Gemini 或其他兼容 OpenAI 的大语言模型,可以通过使用 OpenRouter.ai 实现。以下是如何使用 OpenRouter API 的示例: 首先设置 OPENROUTER_API_KEY 环境变量,您可以从 OpenRouter (https://openrouter.ai/api-keys) 获取。 export OPENROUTER_API_KEY='your-openrouter-api-key' 接下来,让我们看看如何修改前面的示例以使用 OpenRouter 和 Claude 3.5 Haiku。 python 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=> 运行测试 ...') predictions = agent.run(test_df) print('\n => 测试结果:') print(predictions) ### 👉 示例 | 技能 | 描述 | Colab | |————————————————————————————|———————————————————————————–|–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––| | ClassificationSkill | 将文本分类为一组预定义的标签。 | | | ClassificationSkillWithCoT | 使用思维链推理将文本分类为一组预定义的标签。 | | | SummarizationSkill | 将文本总结为较短的文本。 | | | QuestionAnsweringSkill | 根据给定上下文回答问题。 | | | TranslationSkill | 将文本从一种语言翻译成另一种语言。 | | | TextGenerationSkill | 根据给定提示生成文本。 | | | Skill sets | 通过一系列技能处理复杂任务。 | | | OntologyCreator | 从一组文本示例中推断本体。 | | | Math reasoning | 解决 GSM8k 数据集上的小学数学问题。 | 执行智能体技能 ## 🗺 路线图 - [x] 低级别技能管理(即 agent.get_skill(“name”))[已完成 @niklub] - [ ] 使每个笔记本示例在 Google Collab 中运行,并在 README 中添加徽章 - [ ] 扩展环境,再增加一个示例 - [ ] 多任务学习(同时学习多项技能) - [ ] 计算并存储顶层智能体指标(创建的预测、运行时执行、学习循环等) - [ ] 创建命名实体识别技能 - [ ] 命令行实用程序(参见此 readme 的源代码示例) - [ ] 与 Adala 交互的 REST API - [ ] 视觉和多模态智能体技能 ## 🤩 贡献于 Adala 增强技能,优化运行时,或开创新型智能体。无论您是处理细致入微的任务,完善计算环境,还是塑造专门针对独特领域的智能体,您的贡献都将推动 Adala 的演进。加入我们,共同塑造智能系统的未来,使 Adala 在全球用户中更加多样化和具有影响力。阅读更多 在这里。 ## 💬 支持 您需要帮助或希望与社区互动吗?查看 Discord 频道 (https://discord.gg/QBtgTbXTgU)!无论您有问题、需要澄清,还是仅仅想讨论与项目相关的主题,Discord 社区都欢迎您!
相似文章
@tom_doerr: 精选的 LLM、多模态模型与智能体列表 https://github.com/eudk/awesome-ai-tools…
一个精心策划的GitHub仓库,收录了大型语言模型、多模态生成工具、AI智能体和开发者平台,自2023年起持续维护。
@tom_doerr: 构建自主AI智能体的免费课程和代码 https://github.com/avinash201999/free-ai-agents-resources…
一个精心整理的GitHub仓库,聚合了构建自主AI智能体的免费课程、代码示例、教程和资源,面向从初学者到高级开发者的各层次开发者。
@tom_doerr: 从 200,000 项技能构建代理 https://github.com/ynulihao/AgentSkillOS…
AgentSkillOS 是一个开源框架,使开发者能够从超过 200,000 项可用技能中检索和编排流水线来构建 AI 代理。
@tom_doerr:开源长周期深度研究智能体 https://github.com/TIGER-AI-Lab/OpenResearcher…
TIGER-AI-Lab 发布 OpenResearcher,一款用于自动化长周期深度研究任务的开源智能体。
@omarsar0:Karpathy 的 autoresearch 仓库掀起一股新风潮,智能体已能训练 AI 模型打造 SoTA 智能体系统……
Karpathy 的 autoresearch 项目引发潮流:智能体训练 AI 模型构建最先进的智能体系统,同时暴露当前 LLM 在假设生成上的短板。