Type something to search...
Smolagents:让构建自主 Ai 代理变得简单的拥抱脸框架!

Smolagents:让构建自主 Ai 代理变得简单的拥抱脸框架!

技术文章标题

引言

在这篇文章中,我们将探讨一些技术细节和实现方法。

主要内容

  1. 技术概述

    • 介绍了相关技术的背景及其重要性。
    • 讨论了不同的应用场景。
  2. 实现步骤

    • 第一步:设置环境
    • 第二步:安装依赖
    • 第三步:运行示例代码
## 示例代码
def example_function():
    print("Hello, World!")

结论

通过以上步骤,我们可以成功实现所需的功能。希望这些信息对你有所帮助。

Source

被付费墙挡住了?免费阅读!

Hugging Face 最近推出了 smolagents,这是一个精简的库,旨在促进开发和管理利用大语言模型 (LLMs) 的 AI 代理的过程。这个创新框架使开发者能够创建能够与现实世界互动、做出明智决策并根据其输出执行任务的代理。在本文中,我们将深入探讨 smolagents 的本质、功能、最佳使用案例以及它们所提供的优势。

什么是 Smolagents?

Smolagents 是一个极简但强大的库,可以用最少的代码构建 AI 代理。通过提供简化的接口,它允许开发者将大语言模型无缝集成到他们的应用中,使这些模型能够执行诸如网络搜索、数据检索等任务。smolagents 的核心逻辑封装在大约一千行代码中,强调简单性和最小抽象。

如果你喜欢这篇文章并想表达一些支持:

  • 鼓掌 50 次——每一次的鼓掌都比你想象的更有帮助!
  • 关注 我在 Medium 上,并免费订阅以获取我的最新文章。
  • 让我们在 LinkedIn 上联系,在 GitHub 上查看我的项目,并在 Twitter 上保持联系!

Smolagents 的关键特性:

  • 简洁性:该库的设计确保代理逻辑简洁,使开发人员易于理解和使用。

  • 对代码代理的优先支持:Smolagents 专注于生成其操作代码的代理,增强了灵活性和控制力。为确保安全,它通过 E2B 支持在沙盒环境中执行。

Image 12

来源

  • Hub 集成:开发人员可以直接从 Hugging Face Hub 共享和加载工具,促进协作生态系统。

  • 与各种大语言模型的兼容性:该框架支持托管在 Hugging Face Hub 上的模型,包括通过 transformers 库或推理 API 加载的模型。它还通过 LiteLLM 集成支持来自 OpenAI、Ollama 等提供商的模型。

何时使用 Smolagents

Smolagents 在应用程序需要大语言模型动态确定其工作流时特别有益。在预定义工作流因任务的复杂性或可变性而不足的情况下,smolagents 提供了必要的灵活性。

然而,对于具有简单、确定性工作流的应用程序,传统的编码方法而不使用代理行为可能就足够了。

使用 Smolagents 构建代理

为了说明 smolagents 的实际应用,首先设置一个虚拟环境。

创建虚拟环境:

为了隔离您的开发环境,可以使用 Conda 或 Python 内置的 venv 模块创建虚拟环境。

使用 Conda:

  • 如果尚未安装 Conda,请先安装。

  • 创建一个新环境:

    conda create --name smolagents_env
    
  • 激活该环境:

    conda activate smolagents_env
    

使用 Python 内置的 venv

  • 创建一个新的虚拟环境:

    python -m venv smolagents_env
    
  • 激活该环境:

    对于 Windows:

    smolagents_env\Scripts\activate
    

    对于 macOS/Linux:

    source smolagents_env/bin/activate
    

一旦环境准备好,请继续安装必要的依赖项,并按照下面的详细说明探索 smolagents 的功能。

安装

首先安装所需的包。创建一个 requirements.txt 文件,内容如下:

datasets
langchain
langchain_community
langchain_text_splitters
smolagents
rank_bm25

然后,执行:

pip install -r requirements.txt

代码实现:

利用以下 Python 脚本创建一个代码代理,从知识库中检索信息,使用 Llama3.2 模型和 Ollama API:

import datasets
from langchain.docstore.document import Document
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_community.retrievers import BM25Retriever
from smolagents import Tool, LiteLLMModel, CodeAgent

knowledge_base = datasets.load_dataset("m-ric/huggingface_doc", split="train")
knowledge_base = knowledge_base.filter(lambda row: row["source"].startswith("huggingface/transformers"))

source_docs = [
    Document(page_content=doc["text"], metadata={"source": doc["source"].split("/")[1]})
    for doc in knowledge_base
]

text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=500,
    chunk_overlap=50,
    add_start_index=True,
    strip_whitespace=True,
    separators=["\\n\\n", "\\n", ".", " ", ""],
)
docs_processed = text_splitter.split_documents(source_docs)

class RetrieverTool(Tool):
    name = "retriever"
    description = "使用语义搜索来检索与您的查询最相关的 transformers 文档部分。"
    inputs = {
        "query": {
            "type": "string",
            "description": "要执行的查询。应与目标文档语义相近。使用肯定形式而非问题形式。",
        }
    }
    output_type = "string"

    def __init__(self, docs, **kwargs):
        super().__init__(**kwargs)
        self.retriever = BM25Retriever.from_documents(docs, k=10)

    def forward(self, query: str) -> str:
        assert isinstance(query, str), "您的搜索查询必须是字符串"
        docs = self.retriever.invoke(query)
        return "\n检索到的文档:\n" + "".join(
            [f"\n\n===== 文档 {i} =====\n{doc.page_content}" for i, doc in enumerate(docs)]
        )

model = LiteLLMModel(
    model_id="ollama_chat/llama3.2",
    api_base="http://localhost:11434",  
    api_key="ollama"  
)

retriever_tool = RetrieverTool(docs_processed)
agent = CodeAgent(tools=[retriever_tool], model=model, max_iterations=4, verbose=True)

agent_output = agent.run("对于 transformers 模型训练,前向传播和反向传播哪个更慢?")

print("最终输出:")
print(agent_output)

该脚本演示了如何设置一个代码代理,可以处理和从指定知识库中检索信息,展示了 smolagents 在实际应用中的实用性。

Image 13

Image 14

Image 15

使用 Smolagents 的优势

  • 效率:通过降低代理开发的复杂性,smolagents 加速了 AI 驱动解决方案的部署。
  • 灵活性:能够集成多种大语言模型和工具,使得可以针对特定应用需求提供量身定制的解决方案。
  • 安全性:支持沙箱执行环境,smolagents 确保代码代理安全运行,降低潜在风险。

用例:

Smolagents 可以应用于各个领域,包括:

  • 技术文档检索:通过检索精确且具有上下文相关性的内容,简化对知识库的访问。
  • 动态工作流自动化:通过使大语言模型能够动态确定工作流,增强复杂系统中的决策过程。
  • 互动教育工具:为学习平台构建 AI 代理,能够回答查询并根据用户需求提供量身定制的指导。

最终思考:

Smolagents 作为一个代理框架,弥合了大语言模型能力与实际应用之间的差距。它的极简设计、一流的代码代理支持和强大的集成使其成为人工智能开发领域的游戏规则改变者。

其他资源:

完整代码: https://github.com/imanoop7/experiment-notebooks
Smolagents: https://huggingface.co/blog/smolagents
Smolagents Github: https://github.com/huggingface/smolagents/tree/main
我的 GitHub: https://github.com/imanoop7
LinkedIn: www.linkedin.com/in/anoop-maurya-908499148
X: https://x.com/imanoop_7

Related Posts

结合chatgpt-o3-mini与perplexity Deep Research的3步提示:提升论文写作质量的终极指南

结合chatgpt-o3-mini与perplexity Deep Research的3步提示:提升论文写作质量的终极指南

AI 研究报告和论文写作 合并两个系统指令以获得两个模型的最佳效果 Perplexity AI 的 Deep Research 工具提供专家级的研究报告,而 OpenAI 的 ChatGPT-o3-mini-high 擅长推理。我发现你可以将它们结合起来生成令人难以置信的论文,这些论文比任何一个模型单独撰写的都要好。你只需要将这个一次性提示复制到 **

阅读更多
让 Excel 过时的 10 种 Ai 工具:实现数据分析自动化,节省手工作业时间

让 Excel 过时的 10 种 Ai 工具:实现数据分析自动化,节省手工作业时间

Non members click here作为一名软件开发人员,多年来的一个发现总是让我感到惊讶,那就是人们还在 Excel

阅读更多
使用 ChatGPT 搜索网络功能的 10 种创意方法

使用 ChatGPT 搜索网络功能的 10 种创意方法

例如,提示和输出 你知道可以使用 ChatGPT 的“搜索网络”功能来完成许多任务,而不仅仅是基本的网络搜索吗? 对于那些不知道的人,ChatGPT 新的“搜索网络”功能提供实时信息。 截至撰写此帖时,该功能仅对使用 ChatGPT 4o 和 4o-mini 的付费会员开放。 ![](https://images.weserv.nl/?url=https://cdn-im

阅读更多
掌握Ai代理:解密Google革命性白皮书的10个关键问题解答

掌握Ai代理:解密Google革命性白皮书的10个关键问题解答

10 个常见问题解答 本文是我推出的一个名为“10 个常见问题解答”的新系列的一部分。在本系列中,我旨在通过回答关于该主题的十个最常见问题来分解复杂的概念。我的目标是使用简单的语言和相关的类比,使这些想法易于理解。 图片来自 [Solen Feyissa](https://unsplash.com/@solenfeyissa?utm_source=medium&utm_medi

阅读更多
在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和科技这样一个动态的行业中,保持领先意味着不断提升你的技能。无论你是希望深入了解人工智能模型性能、掌握数据分析,还是希望通过人工智能转变传统领域如法律,这些课程都是你成功的捷径。以下是一个精心策划的高价值课程列表,可以助力你的职业发展,并让你始终处于创新的前沿。 1. 生成性人工智能简介课程: [生成性人工智能简介](https://genai.works

阅读更多
揭开真相!深度探悉DeepSeek AI的十大误区,您被误导了吗?

揭开真相!深度探悉DeepSeek AI的十大误区,您被误导了吗?

在AI军备竞赛中分辨事实与虚构 DeepSeek AI真的是它所宣传的游戏规则改变者,还是仅仅聪明的营销和战略炒作?👀 虽然一些人将其视为AI效率的革命性飞跃,但另一些人则认为它的成功建立在借用(甚至窃取的)创新和可疑的做法之上。传言称,DeepSeek的首席执行官在疫情期间像囤积卫生纸一样囤积Nvidia芯片——这只是冰山一角。 从其声称的550万美元培训预算到使用Open

阅读更多
Type something to search...