使用 Smolagents 與 Novita AI 打造自主代理

使用 Smolagents 與 Novita AI 打造自主代理

重點摘要

1. AI 代理:
賦予系統超越僵化、預設工作流程的自主決策能力。
運用迭代推理、適應性執行與持續學習。

2. Smolagents:
輕量級 Python 程式庫(約 1,000 行程式碼),簡化 AI 代理的建置。
直接輸出可操作的 Python 程式碼片段,並在沙盒環境中安全執行。
支援多種模型、多模態(文字、圖片、音訊、影片)以及外部工具整合。

3. Novita AI 支援:
與 Smolagents 相容,支援 DeepSeek R1 Turbo 等強大模型,效能更佳且價格實惠。

人工智慧已從模式識別進展至內容生成。下一個重大躍進是 代理型 AI(agentic AI)——能夠自主決策並採取行動,解決複雜的多步驟問題。本文將探討 AI 代理的概念、深入解析程式碼代理的細節、說明如何建置這類代理、比較不同底層模型的效能,並回答關於這項變革性技術的常見問題。

什麼是 AI 代理?

代理型 AI 旨在克服傳統僵化工作流程難以有效處理的挑戰。許多真實場景涉及複雜、細膩的流程,無法完全由靜態、預先定義的 if-else 結構來捕捉。代理型 AI 為工作流程導入靈活性與適應性,讓系統能根據不斷變化的情境動態決定並執行最佳的行動序列。

https://youtu.be/-pqzyvRp3Tc

運作原理?

代理型 AI 透過感知、推理、行動與學習的迭代動態循環來運作。AI 代理以大型語言模型(LLM)作為推理引擎,分析情況、規劃回應、協調專用模型並執行任務。工作流程通常包含以下步驟:

  • 資料攝取與感知: 代理從多個來源收集並處理資料,獲得情境感知,以輔助決策。
  • 推理與規劃: 代理利用 LLM 解讀資料、推理可能的解決方案、制定策略計畫,並決定達成目標所需的行動。
  • 行動與執行: 代理整合外部工具與預先定義的函式,根據推理結果執行任務。它們反覆執行行動、觀察結果並據此調整,直到達成目標。
  • 持續學習: 透過回饋迴路與檢索增強生成(RAG)等技術,代理存取專有資料來源,逐步改善理解,持續提升效能、準確度與相關性。

結合這些能力——自主決策、迭代推理、外部工具整合與持續改善——代理型 AI 有效橋接了 LLM 的推理能力與實際世界的執行與適應。

來源:Nvidia

什麼是 smolagents?

Smolagents 是一個輕量級 Python 程式庫,旨在簡化強大 AI 代理的建置。其核心邏輯僅約 1,000 行程式碼,提供極簡的抽象層,讓開發者擁有更大的直接控制權。Smolagents 定位為 transformers.agents 的後繼者,後者最終將被棄用。更多細節請參閱 GitHub

amolagents

主要功能 與關鍵機制

✨ 簡潔

  • Smolagents 以約 1,000 行程式碼實現強大的 AI 代理邏輯,保持極簡抽象,讓開發者擁有更大彈性(參見 agents.py)。

🧑‍💻 第一等程式碼代理支援

  • Smolagents 的 CodeAgent 直接將代理動作輸出為 Python 程式碼片段,而非 JSON 或純文字,從而提升效率與效能。它能在沙盒環境(E2B、Docker)中安全執行程式碼,並同時保留對傳統 JSON/文字代理的支援。

🤗 Hub 整合

  • Smolagents 允許透過 Hugging Face Hub 輕鬆分享與載入可重複使用的 Python 工具,促進協作與工具重用。

🌐 模型無關

  • Smolagents 支援幾乎任何大型語言模型(LLM)——本機 transformersollama 模型、Hugging Face 託管模型,以及透過 LiteLLM 使用的外部供應商(如 OpenAI 或 Anthropic)。

👁️ 模態無關

  • 使用 Smolagents 建立的代理能無縫處理多種輸入模態,包括文字、圖片、影片與音訊。

🛠️ 工具無關

  • Smolagents 能靈活整合來自各種生態系的工具,例如 LangChain、Anthropic 的 MCP,或 Hugging Face Hub Spaces。

smolagents 運作方式

如何使用 Smolagents 與 Novita AI API 建置代理?

Novita AI 是一個 AI 雲端平台,為開發者提供簡單 API 快速部署 AI 模型,同時提供實惠且可靠的 GPU 雲端服務,便於建置與擴展。

Smolagents 支援多種大型語言模型(LLM),包含 Novita AI!接下來我們將以 deepseek r1 turbo 為例,展示 Smolagents 與 Novita AI 的強大威力!

值得注意,Novita AI 推出了 Turbo 版本,吞吐量提升 3 倍,並有限時 60% 折扣!

novita ai no1

立即試用 DeepSeek R1 Turbo!

範例

輸入:

import os
from smolagents import OpenAIServerModel, CodeAgent, DuckDuckGoSearchTool

model = OpenAIServerModel(
    model_id="deepseek/deepseek-r1-turbo",
    api_base="https://api.novita.ai/v3/openai",
    api_key="Your API Key" # 換成目標伺服器的 API 金鑰
)

agent = CodeAgent(tools=[DuckDuckGoSearchTool()], model=model)

agent.run("請規劃從上海到北京的週末旅行,包含交通選項、行程安排與必備物品清單")

輸出:

transport = web_search(query="Shanghai to Beijing transportation weekend trip 2024")                                                                                                                                                                                                                                                           
  print("Transportation options:", transport)                                                                                                                                                                                                                                                                                                    
                                                                                                                                                                                                                                                                                                                                                 
  attractions = web_search(query="Beijing 2-day itinerary top attractions 2024")                                                                                                                                                                                                                                                                 
  print("Attraction recommendations:", attractions)                                                                                                                                                                                                                                                                                              
                                                                                                                                                                                                                                                                                                                                                 
  details = web_search(query="Beijing travel must-haves 2024")                                                                                                                                                                                                                                                                                   
  print("Essential items and tips:", details)                                                                                                                                                                                                                                                                                                    
                                                                                                                                                                                                                                                                                                                                                 
  weekend_plan = {                                                                                                                                                                                                                                                                                                                               
      "Transportation": {                                                                                                                                                                                                                                                                                                                        
          "Recommended Option": "Friday evening G12 train (18:00-22:30) from Shanghai Hongqiao to Beijing South",                                                                                                                                                                                                                                
          "Alternative": "Saturday morning flight (07:00-09:00+transit time)"                                                                                                                                                                                                                                                                    
      },                                                                                                                                                                                                                                                                                                                                         
      "Itinerary": {                                                                                                                                                                                                                                                                                                                             
          "Day 1 (Saturday)": [                                                                                                                                                                                                                                                                                                                  
              "08:30 - Tiananmen Square (free entry)",                                                                                                                                                                                                                                                                                           
              "10:00 - Forbidden City (booked ticket, 3-4hr tour)",                                                                                                                                                                                                                                                                              
              "14:00 - Temple of Heaven",                                                                                                                                                                                                                                                                                                        
              "Evening: Houhai Lake dinner + hutongs exploration"                                                                                                                                                                                                                                                                                
          ],                                                                                                                                                                                                                                                                                                                                     
          "Day 2 (Sunday)": [                                                                                                                                                                                                                                                                                                                    
              "07:00 - Depart for Mutianyu Great Wall (book shuttle/taxi)",                                                                                                                                                                                                                                                                      
              "09:00-12:00 - Great Wall visit (cable car recommended)",                                                                                                                                                                                                                                                                          
              "14:00 - Summer Palace",                                                                                                                                                                                                                                                                                                           
              "18:00 - Return to city, take G27 train (19:00-23:18) back to Shanghai"                                                                                                                                                                                                                                                            
          ]                                                                                                                                                                                                                                                                                                                                      
      },                                                                                                                                                                                                                                                                                                                                         
      "Must-Haves": [                                                                                                                                                                                                                                                                                                                            
          "Pre-booked Forbidden City ticket (¥60)",                                                                                                                                                                                                                                                                                              
          "Comfortable walking shoes",                                                                                                                                                                                                                                                                                                           
          "Layered clothing (check weather forecast)",                                                                                                                                                                                                                                                                                           
          "Portable WiFi/power bank",                                                                                                                                                                                                                                                                                                            
          "WeChat Pay/Alipay balance",                                                                                                                                                                                                                                                                                                           
          "ID/passport for train ticket collection"                                                                                                                                                                                                                                                                                              
      ]                                                                                                                                                                                                                                                                                                                                          
  }                                                                                                                                                                                                                                                                                                                                              
                                                                                                                                                                                                                                                                                                                                                 
  final_answer(weekend_plan)                                       

最終答案

Final answer: {'Transportation': {'Recommended Option': 'Friday evening G12 train (18:00-22:30) from Shanghai Hongqiao to Beijing South', 'Alternative': 'Saturday morning flight (07:00-09:00+transit time)'}, 'Itinerary': {'Day 1 (Saturday)': ['08:30 - Tiananmen Square (free entry)', '10:00 - Forbidden City (booked ticket, 3-4hr tour)', '14:00 - Temple of Heaven', 'Evening: Houhai Lake dinner + hutongs exploration'], 'Day 2 (Sunday)': ['07:00 - Depart for Mutianyu Great Wall (book shuttle/taxi)', '09:00-12:00 - Great Wall visit (cable car recommended)', '14:00 - Summer Palace', '18:00 - Return to city, take G27 train (19:00-23:18) back to Shanghai']},         
'Must-Haves': ['Pre-booked Forbidden City ticket (¥60)', 'Comfortable walking shoes', 'Layered clothing (check weather forecast)', 'Portable WiFi/power bank', 'WeChat Pay/Alipay balance', 'ID/passport for train ticket collection']}

Smolagents 中的模型效能比較

smolagents LLM 排行榜

更多細節請參閱 Hugging Face

代理型 AI 代表了人工智慧的重大進展,賦予系統自主解決問題與執行任務的能力。Smolagents 提供一個輕量但強大的框架,專為建置智慧代理而設計,強調直接以程式碼為基礎的行動,並與多種大型語言模型(LLM)相容。隨著開源模型快速進步,Smolagents 為開發者提供了易於上手且功能多樣的工具箱,得以在各個領域探索與實現代理型 AI 的無限潛力。

常見問題

代理型 AI 與生成式 AI 的主要差異為何?

生成式 AI 專注於創造新內容(如文字、圖片),而代理型 AI 則專注於做出決策及執行自主任務以達成目標。

在 smolagents 中執行程式碼安全嗎?

smolagents 提供安全的程式碼執行選項,包括使用 E2B 或 Docker 的沙盒環境,可消除對本機系統的風險。

我可以在哪裡找到更多關於 smolagents 的資訊?

您可以在 smolagents 的 GitHub 儲存庫及專屬的 Hugging Face Space 中找到完整的文件、教學與範例。

Novita AI 是一站式雲端平台,助力您的 AI 願景。整合 API、無伺服器、GPU 實例——兼具成本效益的工具。無需管理基礎設施,免費開始,讓您的 AI 願景成為現實。

推薦閱讀