Type something to search...
使用拥抱脸 Smol 代理开启智能工作流:本地或云

使用拥抱脸 Smol 代理开启智能工作流:本地或云

image generated by author and DALL-E.3

Hugging Face的SMOL代理

Hugging Face的SMOL代理代表了大型语言模型(LLMs)与现实世界交互方式的范式转变。与遵循严格工作流程的传统AI系统不同,SMOL代理是轻量级的、以代码为先的AI程序,其中LLM输出动态控制执行流程。基于一个极简框架(约1,000行核心代码),它们优先考虑简单性、安全性和灵活性,使开发者能够部署编写和执行代码以解决复杂任务的代理。

高效的AI系统需要LLMs与现实世界交互,例如检索信息或执行任务,这个概念被称为_代理_。这决定了LLMs在工作流程中的控制程度,并在一个光谱上演变,从基本输出到启动复杂的多代理工作流。

Hugging Face的_SMOL代理_通过利用轻量级、安全和灵活的框架来说明这一点,在这些框架中,LLM输出动态驱动执行。

Image 10

Source: Hugging Face Github

这些代理使开发者能够通过将简单性与强大的执行能力相结合来部署复杂任务的解决方案。

什么是SMOL代理?

SMOL代理是多步骤AI系统,使用大型语言模型迭代地规划、执行和完善操作。主要特点包括:

  1. 代码驱动的操作:代理编写Python代码片段来调用工具(例如,API、数据库),而不是依赖基于JSON的工具调用,从而提高可组合性并减少约30%的步骤。
  2. 多代理工作流:代理可以协调其他代理,实现层次化任务分解(例如,一个管理代理协调专业子代理)。
  3. 集成中心:工具和代理可以通过Hugging Face Hub共享,促进协作。
  4. 安全性:代码执行在使用E2B或受限环境的沙箱中进行,以防止不安全的操作。

它们在需要动态决策的场景中表现出色,例如旅行规划、实时数据分析或客户支持,在这些情况下,预定义的工作流往往无法满足需求。

构建 SMOL 代理

先决条件

  • Python 3.11+
  • 安装库:

步骤 1:初始化代码代理

SMOL代理由 CodeAgent 类驱动,该类使用大型语言模型生成可执行代码。首先导入模块并定义工具:

from smolagents import CodeAgent, HfApiModel, tool

@tool  
def get_travel_duration(start: str, end: str, mode: str = "driving") -> str:  
    """计算两个地点之间的旅行时间."""  
    import googlemaps  
    gmaps = googlemaps.Client(key=os.getenv("GMAPS_API_KEY"))  
    directions = gmaps.directions(start, end, mode=mode)  
    return directions[0]['legs'][0]['duration']['text']

步骤 2:配置代理

加载模型(例如,Hugging Face 的推理 API 或通过 LiteLLM 的 OpenAI)并初始化代理:

model = HfApiModel(model_id="meta-llama/Llama-3.3-70B-Instruct")  
agent = CodeAgent(  
    tools=[get_travel_duration],  
    model=model,  
    additional_authorized_imports=["datetime"],  
    use_e2b_executor=True  
)

注意:您可以通过 LM Studio 使用 OpenAI 格式的本地模型。

步骤 3:执行多步骤任务

在复杂查询上运行代理。代理迭代地编写代码、执行工具并优化其方法:

response = agent.run(  
    "计划一次围绕巴黎的单日自行车游,并为每个停靠点安排时间。"  
)  
print(response)

输出

  1. 从埃菲尔铁塔出发(上午 9:00)。
  2. 前往巴黎圣母院(上午 10:46,46 分钟车程)。

代理使用 get_travel_duration 计算交通时间,并动态调整行程。

第4步:检查和调试

查看代理的执行日志:

for step in agent.logs:  
    print(f"Step {step['index']}: {step['llm_output']}")  
    print(f"Observation: {step['observation']}")

示例用例

  1. 自动化客户支持:

    from smolagents import ManagedAgent
    
    support_agent = CodeAgent(tools=[knowledge_base_search, escalate_to_human])  
    managed_agent = ManagedAgent(  
        agent=support_agent,  
        name="support_bot",  
        description="处理客户查询和升级。"  
    )  
    manager_agent.run("客户投诉:我的订单延迟了。")
    
  2. 实时数据分析:

    @tool  
    def query_database(sql: str) -> pd.DataFrame:  
        """在客户数据库上运行SQL查询."""  
        ...
    
    agent = CodeAgent(tools=[query_database], model=HfApiModel())  
    agent.run("查找2024年第四季度按收入排序的前5名客户。")
    
  3. 物联网集成:

    @tool  
    def read_temperature(sensor_id: int) -> float:  
        """从传感器获取温度."""  
        ...
    
    agent = CodeAgent(tools=[read_temperature], model=TransformersModel("tiny-llama"))  
    agent.run("每10分钟监测厨房温度,如果超过30°C则发出警报。")
    

为什么SMOL代理脱颖而出

Image 11

来源:Huggingface github

  1. 代码 > JSON:使用Python编写操作(而不是JSON)提高了灵活性,并利用了大型语言模型的代码生成训练。
  2. 开源性能:基准测试显示,像Llama-3.3–70B这样的开放模型在代理任务中与GPT-4o相匹配。
  3. 安全性:限制导入和E2B沙盒化降低了代码执行风险。

构建商业分析 SMOL 代理:分步指南

用例:创建一个代理,使用本地大型语言模型通过 LM Studio 分析学术研究以寻找市场机会。

Image 12

工作流作者/LN Claude.ai

第 1 步:定义特定领域工具

@tool
def search_papers(query: str, max_results: int = 10) -> List[Dict[str, Any]]:
    """增强的 arXiv 搜索,带有商业过滤器"""

@tool 
def analyze_market_potential(papers: List[Dict[str, Any]]) -> Dict[str, Any]:
    """使用正则表达式模式提取商业洞察"""

@tool
def generate_business_report(papers: List, analysis: Dict) -> str:
    """将发现结构化为 markdown"""

第 2 步:配置本地大型语言模型集成

model = OpenAIServerModel(
    model_id="deepseek-r1-distill-qwen-7b",
    api_base="http://localhost:1234/v1",  
    api_key="lm-studio"                   
)

第 3 步:组装代理

agent = CodeAgent(
    tools=[search_papers, analyze_market_potential, generate_business_report],
    model=model,
    add_base_tools=True  
)

第 4 步:执行分析链

result = agent.run(
    f"""分析 '{query}' 的方法:
    1. 查找 {max_papers} 篇论文          -> search_papers()
    2. 提取市场洞察                   -> analyze_market_potential() 
    3. 生成格式化报告                 -> generate_business_report()
    包括特定的片段和模型"""
)

第5步:验证和迭代

for step in agent.logs:
    print(f"Step {step['index']}: {step['llm_output']}")
    print(f"Observation: {step['observation']}")

完整代码在GitHub上

何时避免使用代理

代理引入了复杂性和不可预测性。如果满足以下条件,请坚持使用确定性代码:

  • 任务符合预定义工作流(例如,表单提交)。
  • 可靠性至关重要(例如,金融交易)。

结论

SMOL代理通过将Hugging Face的生态系统与代码优先的灵活性相结合,使代理AI实现民主化。通过利用SMOL代理,开发者可以构建能够动态适应现实世界复杂性的系统,并探索各种用例。随着这项技术的发展,期待将推出用户友好的UI界面,使其对更广泛的受众更加可及。

参考文献

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...