smolagents顛覆傳統AI智能體!支持ollama本地部署!Hugging Face開源全新AI智能體框架支持工具調用和代碼執行!輕鬆實現Text to SQL!新手小白從入門到精通只需10分鐘

AI超元域
10 位粉絲
2025年1月4日
歡迎來到AI超源域
huggyface官方近期開源了一款全新的AI智能體
smallagents
這款AI智能體框架設計簡單
使用方面我們只需要幾行代碼
就可以創建功能強大的AI智能體項目
而且執行速度非常快
遠遠超過其他智能體框架
像平時我們在使用其他AI智能體框架的時候
比如說像atozhen
他們的代碼過於繁瑣
學習曲線較爲陡峭
新手想做到精通
需要大量的學習時間才能達到精通的水平
而smallagents徹底改變了這一切
因爲smallagents的設計理念是通過最小的代碼
實現最強大的功能
讓開發者能夠快速構建和部署自己的AI智能體應用
它提供安全的python解釋器
還有e2b紗線環境
原生支持工具調用
而且它支持多種大模型的機身
包括olama
還有gbd4o
cloud3.5等兼容所有OpenAI API格式的模型
而且支持soso引擎等工具機身
用戶也可以自定義自己的工具
而且還支持codeagent類
通過codeagent類實現代碼形式的工具調用
相比傳統的json文本格式工具調用
更加直觀和高效
而且支持python代碼直接執行工具函數調用
好
本期視頻將爲大家詳細演示smallagents的部署和使用
並且通過幾個實際案例來演示smallagents的使用場景
好
視頻的開始
先爲大家演示我們如何在smallagents調用olama中的本地模型
首先我們要確保olama中已經安裝了本地模型
然後我們在終端命令行用paypayinstall
來安裝smallagents的passing庫
我們直接執行
這裏我們要削本一下
當安裝完成之後
我們回到pycharm
我在pycharm中創建了一個腳本
然後這個腳本就是調用olama中的模型
這裏我調用的模型是olama中的metronemo
因爲這款模型它的參數比較小
但是它執行復雜任務的能力還是比較不錯的
在modelid這裏我們一定要填olama
後面再跟上olama中模型的名稱
然後api-base這裏我們就填127.0.0.1
端口號是11434
然後這個api-key這裏可以不用填
也可以隨便填一個內容就可以
下面這裏就是從smallagents中導入codeagent這個類
好
下面這裏我們初始化這個類
然後工具這裏我們給它留空
因爲這裏不需要調用工具
然後在模型這裏我們就填剛纔我們設置的olama中的模型
好
下面這裏我們就是來運行這個AI智能器
然後這裏我給它設置的這個任務是
在斐波氮氣數列中第20個數是什麼
然後這裏我們就可以來執行一下了
這裏我們直接在中端中用passing加這個交配名稱
來執行這個任務
這裏已經開始運行
這裏我們要稍等一下
可以看到這裏它會顯示調用的是olama中的metronemo這個模型
它會通過codeagent爲我們生成這個代碼
這裏已經執行完成
它爲我們生成了這個計算斐波氮氣數列中
第20個數是什麼數字的這個代碼
好
如果想在smallagents中調用工具來解決更加複雜的問題
也非常簡單
比如說我們在smallagents中調用搜索引擎的工具
我們只需要在這裏導入所需的工具就可以
比如說我這裏導入duckduckgo這個搜索引擎的工具
下面我們就可以在這個工具這裏
輸入duckduckgo搜索引擎的這個工具
這樣的話我們就可以來運行一下了
然後我們這裏還是用passive命令來運行
我們可以看一下
這裏它給出了這個運行結果6765
這個是沒有任何問題的
像這樣的話我們就在smallagents中
調用了smallagents官方爲我們預定好的一些工具
而且我們還可以自己手動來定義其他工具
下面爲大家詳細演示
我們如何在smallagents中來調用自己定義的這些工具
爲了方便演示
我將在谷歌的colab中爲大家演示下面幾個案例
我們先在谷歌的colab中執行這條命令
來安裝smallagents
還有sqlalc
還有subapi提供的搜索引擎功能
這條命令執行完成
下面爲大家演示第一個案例
第一個案例我們實現的是自定義的搜索引擎工具
然後這裏我使用了subapi的搜索引擎功能
我們可以詳細看一下這個代碼
然後這裏就是導入所需的這些庫和模塊
下面這裏是設置獲取openai的api key
然後這個openai的api key
我在colab中已經設置好了
這裏已經啓用
下面這裏就是設置我們要調用的模型
然後這裏我調用的是openai的gpd4o mini模型
我們再接着往下看
然後這裏就是我們自定義了一個工具
然後自定義工具的時候一定要加入這個符號
下面這裏我們就是自定義的subapi的搜索引擎功能
它的返回值是一個字符串
然後它的作用就是搜索ai相關新聞
並且返回結果
然後這個輸入的參數就是要搜索的ai相關新聞的關鍵詞
下面在這個參數這裏
搜索引擎我們調用的是谷歌新聞的搜索引擎
下面這裏就是搜索英文的新聞來源
然後這裏的語言我們設置爲了英文
然後這裏就是subapi的api key
想獲取subapi的api key非常簡單
我們只需要打開subapi官方網站就可以獲取它的api key了
下面這裏就是獲取前三條新聞
然後這裏大家也可以根據自己的需求去改
下面這裏就是格式化這個輸出結果
這裏包含標題還有這個新聞源
還有這個日期還有鏈接
然後在工具這裏我們就填入了剛纔我們自定義的這個工具
下面這裏就是執行任務
並且輸出這個任務的執行過程還有結果
然後這裏我設置的這個任務的提示詞就是
最近有哪些人工智能方面的新聞
我們可以直接執行這個代碼
我們看一下它這個執行結果
然後它這裏調用的就是GPT-O mini這個模型
然後下面這裏就是通過調用搜索到了三個結果
這裏包含標題還包含這個新聞來源
還包含日期還包含鏈接
我們再接着往下看
這裏就是這個AI智能體執行的輸出結果
然後它這個最終回答就是
這裏是最新的人工智能新聞文章
而且它對這個結果用markdown格式進行的輸出
像這樣的話我們只用了很簡單的代碼
就在smallagents中實現了調用自己編寫的這個工具
爲了更好的理解工具調用
然後下面這裏我還實現了一個獲取實時天氣預報的一個工具
我們可以詳細看一下
想實現這個天氣預報的功能
我們先點開這個鏈接
然後獲取這個天氣預報api的apk
然後我們只需要複製自己的apk就可以
然後複製好apk之後
我們這裏要填在谷歌的colab中
這樣的話就可以進行調用
當apk設置好之後
這裏我定義了這個天氣預報的這個工具
然後這裏的參數包含城市名稱
並且這裏是否使用設施度
然後默認是使用設施度
然後這個返回結果是返回一個字符串
下面這裏就是獲取要查詢城市的這個境緯度
然後這裏就是調用天氣預報的這一篇來獲取天氣數據
然後這裏我還設置了一個溫度轉換的功能
我們再往下看
然後下面這裏就是格式化這個結果
並且返回這個天氣預報的信息
這裏就是初始化這個工具調用的agent
然後在工具這裏我們就設置這個天氣預報的這個工具
下面這裏我們設置了兩個任務
第一個就是獲取法國的天氣
然後第二個就是獲取紐約的天氣
並且將它轉換成華氏設施度
這裏我們可以直接執行來看一下這個執行結果
好 這裏它很快給出了這個執行結果
然後這裏就是第一個任務 也就是法國的天氣
然後這裏調用了gpso
然後這裏的位置就是法國
然後這裏就給出了法國的這個天氣預報
包括天氣狀況 溫度 還有溼度 還有風速
然後這裏它用自然語言描述了這個法國的天氣
然後我們再接着往下看
然後這裏它執行了第二個任務 也就是紐約的天氣
並且轉換爲華氏設施度
然後下面這裏它用自然語言
將這個法國的天氣進行了描述和輸出
這樣的話 我們就輕鬆在smallagents中實現了自己自定義工具
並且在這個to calling agent中來調用我們自定義的工具
來執行我們所要求的這個任務
然後這幾個案例都比較簡單
下面我們看一下用它來執行taxed to sql功能
因爲taxed to sql功能是企業任務中最常見的一些功能
而且在之前的多期視頻中
我都有爲大家演示過
用不同的方式和不同的框架來實現taxed to sql功能
像我們在smallagents中來實現taxed to sql功能也是非常簡單的
而且這些代碼非常簡潔
執行速度也遠比其他框架要快很多
我們看一下我實現了這個taxed to sql的功能的簡單介紹
然後這裏就是用戶輸入自然語言
通過這個smallagents調用GPT的模型
來理解這個意圖並且生成sql語句
再使用sqlagent工具執行sql查詢並且返回結果
而且我實現了這個taxed to sql功能
它還支持多表聯合查詢等複雜查詢
我們可以詳細看一下這個代碼
然後這裏就是導入sqlalcum所需的這些依賴
然後下面這裏就是導入smallagents中所需的這些依賴
包括工具調用還有codeagent
然後下面這裏是創建了一個內存數據庫
它是運行在內存中的一個數據庫
因爲我們爲了方便演示
然後這個taxed to sql功能
我們模擬的是一個進銷存的系統
所以這裏我們創建了兩個表
第一個就是商品表
然後第二個就是訂單表
我們簡單的模擬一個進銷存的系統
我們可以看一下這個表結構
在商品表中包含這個產品id
還有產品名稱
還有產品類別
還有價格
還有庫存數量等
然後這個產品id作爲主件
然後我們再看一下這個訂單表
這個訂單表中包括訂單id
產品id
產品id是爲了和這個產品表進行關聯
然後產品id設爲了外接
還有這個客戶名稱
還有訂單日期
還有這個數量
還有這個總價
我們再接着往下看
然後這裏我們模擬生成了一些商品的數據
這裏包含這些商品的名稱
然後這些都是電子設備
它們的類別有手機
有筆記本
還有配件
還有平板
還有智能手錶等電子設備
然後這裏是給他們模擬的這個價格
然後我們再接着往下看
然後這裏就是自行將模擬的這些數據
插入到數據庫的表中
我們再接着往下看
然後這裏就是模擬生成的一些訂單數據
在這個訂單數據中包含這些客戶的名稱
訂單日期
還有購買的數量
還有這個總價等
然後這裏就是獲取這個表結構的這些信息
下面這裏我們又自定義了一個工具
然後這個工具它支持sql查詢
並且它支持商品表還有訂單表的聯合查詢
然後它的返回類型也是一個字符串類型
我們再往下看
然後這裏我們就是創建這個agent的這個實例
然後在工具這裏我們就調用了我們剛纔自定義的這個工具
然後在模型這裏我們調用gb4o mini模型
大家也可以改成其他模型或者本地模型
下面這裏我創建了幾個查詢實例
我們可以先執行第一個查詢實例看一下
第一個查詢實例是獲取銷量最高的商品信息
這裏我們就是用自然語言來設置的查詢任務
這裏是查詢銷量最高的商品的詳細信息
包括商品名稱 銷量 還有銷售總額
然後需要聯合查詢這個商品表和訂單表
按訂單數量統計
這裏我們直接執行看一下這個執行結果
這裏很快給出了這個執行結果
這裏就是它爲我們生成的這個支持聯合查詢的sql語句
然後這裏它是通過自然語言轉換成的sql語句
這裏就是這個執行日誌
它這裏查詢到的是手機殼
然後這裏它給出了這個最終的結果
然後這個商品名就是手機殼
然後這個數量就是10 這個總價就是490
好 下面我們再執行第二個任務 看一下這個效果
第二個任務是獲取庫存緊張的商品
然後查詢庫存低於50件的商品數量
並且返回商品的名稱 類別 當前庫存數量
然後按這個升序排序 我們這裏直接執行
然後看一下這個查詢的結果
這裏它很快給出了這個查詢結果
然後這裏它查詢到了三個庫存數量最低的商品
然後爲了節省時間 剩下幾個任務我們讓它同時來執行
這裏我們直接運行 看一下這個執行的效果
好 這裏它開始執行
這裏已經執行完成
可以看到這裏執行的這些結果都是沒有任何問題的
然後這裏我們就不再具體去看了
大家可以自行去測試
通過我們測試發現smallagents它的調用非常簡單
而且我們可以用它來實現像text-to-sql這種複雜的需求
而且我們只需要幾行代碼就可以自己構建一個AI智能體
哪怕沒有編程經驗 我們也能快速入門
本期視頻所用到的代碼和指令
我都會放在視頻下方的描述欄或者評論區
如果你在視頻下方無法找到的話
也可以通過我的博客去查找
因爲我會將每期視頻的代碼和筆記都會同步到我的博客
好 本期視頻就做到這裏
歡迎大家點贊關注和轉發 謝謝大家觀看
