解鎖 AI 超能力:LangChain Tools 讓你的 AI 助手進化為全能戰士

許恆修 | Heng-Shiou Sheu
6 min readAug 23, 2024

在人工智能快速發展的今天,你是否想過如何讓你的 AI 助手不僅能聊天,還能執行各種複雜任務?LangChain Tools 就是實現這一目標的神奇鑰匙。本文將帶你深入探索如何利用 LangChain Tools 擴展 AI 模型的能力,從基礎到進階,打造屬於你的超級 AI 助手。

Image Credit by DALLE

🌟 LangChain Tools:AI 的瑞士軍刀

想像一下,如果 AI 模型是一位超級英雄,那麼 LangChain Tools 就是它的多功能腰帶。這些工具賦予 AI 執行各種特定任務的能力,從查詢實時數據到複雜的邏輯運算,無所不能。

💡 LangChain Tools 本質上是為 AI 模型量身打造的功能模組,能夠大幅擴展 AI 的能力範圍。

🛠️ 打造你的第一個 LangChain Tool

讓我們從一個簡單而實用的例子開始 — — 創建一個查詢台灣天氣的工具:

from langchain.tools import tool
@tool
def query_taiwan_weather(city: str) -> str:
"""查詢台灣特定城市的天氣狀況。"""
weather_data = {
"台北": "晴天,溫度28°C",
"台中": "多雲,溫度26°C",
"高雄": "陰天,溫度30°C"
}
return f"{city}的天氣:{weather_data.get(city, '暫無資料')}"
# 使用這個工具
result = query_taiwan_weather.run("台北")
print(result)
Image Credit by Author

這個簡單的工具展示了 LangChain Tools 的基本用法。通過 `@tool` 裝飾器,我們輕鬆將一個普通的 Python 函數轉變為 AI 可調用的工具。

🚀 進階技巧:StructuredTool

如果說 `@tool` 裝飾器是你的入門法器,那麼 `StructuredTool` 就是你的進階武器。它提供了更多的控制選項,讓你的 AI 助手更加智能和靈活。

from langchain_core.tools import StructuredTool
from langchain.pydantic_v1 import BaseModel, Field
class NightMarketInput(BaseModel):
item: str = Field(description="夜市小吃名稱")
quantity: int = Field(description="購買數量")
def calculate_night_market_price(item: str, quantity: int) -> str:
prices = {"蚵仔煎": 60, "臭豆腐": 40, "珍珠奶茶": 50}
if item not in prices:
return f"抱歉,我們沒有 {item} 的價格信息。"
total = prices[item] * quantity
return f"{quantity} 份 {item} 的總價是 {total} 元新台幣。"
night_market_calculator = StructuredTool.from_function(
func=calculate_night_market_price,
name="台灣夜市小吃計價器",
description="計算台灣夜市常見小吃的總價",
args_schema=NightMarketInput
)
# 使用這個工具
result = night_market_calculator.invoke({"item": "蚵仔煎", "quantity": 2})
print(result)

這個例子展示了如何使用 `StructuredTool` 創建一個更複雜的工具,它不僅可以計算價格,還能處理結構化的輸入。

⚠️ 錯誤處理:為你的 AI 工具添加安全氣囊

即使是最智能的 AI 也可能遇到意外情況。為你的工具添加錯誤處理,就像給超級英雄穿上防護服:

from langchain_core.tools import ToolException
def get_weather(city: str) -> str:
"""查詢指定城市的天氣。"""
raise ToolException(f"錯誤:找不到名為 {city} 的城市。")
get_weather_tool = StructuredTool.from_function(
func=get_weather,
handle_tool_error="抱歉,找不到該城市,但我相信那裡的天氣一定很宜人!"
)
result = get_weather_tool.invoke({"city": "未知城市"})
print(result)

這個例子展示了如何優雅地處理可能出現的錯誤,確保你的 AI 助手即使在面對未知情況時也能給出合理的回應。

💡 最佳實踐與提示

1. 明確的文檔字串:為每個工具提供清晰、詳細的文檔字串,這將幫助 AI 模型更好地理解和使用這些工具。

2. 類型提示:盡可能使用類型提示,這不僅提高了代碼的可讀性,還能幫助捕捉潛在的錯誤。

3. 錯誤處理:始終考慮可能的錯誤情況,並提供有意義的錯誤信息或回退策略。

思考

  • 在你的領域中,有哪些重複性的任務可以通過 LangChain Tools 自動化?

開始你的 AI 超能力之旅

現在,是時候讓你的 AI 助手進化成超級英雄了!以下是你可以採取的步驟:

1. 安裝 LangChain 庫
2. 創建你的第一個自定義工具
3. 實驗不同類型的工具和錯誤處理方法
4. 組合多個工具,打造一個多功能 AI 助手

記住,每個改變遊戲規則的 AI 應用都始於一個簡單的想法。也許下一個革命性的 AI 工具,就將由你創造!

你準備好踏上這場 AI 超能力之旅了嗎?讓我們一起探索 LangChain Tools 的無限可能!

— -

如果你覺得這篇文章有幫助,別忘了按讚和分享!你對 LangChain Tools 有什麼想法或疑問嗎?請在評論區告訴我,讓我們一起討論 AI 的未來!

--

--

許恆修 | Heng-Shiou Sheu

AI研究員 @喬泰科技,軟體工程師@微光國際,業界講師 @FCU 創能學院,Co-Founder @圖靈文本。專注將科技應用於改善生活中,持續性分享軟體架構設計、前沿人工智慧研究、公司治理等觀念。整合科技、人文思維於一體。聯絡 📪 hengshiousheu@gmail.com