AI的下一個突破:Tool Calling 如何重塑我們與科技的互動

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

Tool Calling 正在重塑智能助理的能力邊界。本文深入解析這項技術的核心機制、實際應用及潛在影響。掌握 AI 發展前沿,請即刻閱讀!

Image Credit by DALLE

什麼是 Tool Calling?為什麼你現在就該開始關注?

還記得以前的AI只會「嘴砲」嗎?現在,工具呼叫技術徹底改變了遊戲規則!

“工具呼叫就像給AI配備了一把瑞士軍刀 — — 現在它可以為任何工作選擇合適的工具,大大擴展了它的問題解決能力。” — 匿名AI研究員爆料

你絕對想不到它能做到什麼程度,讓我們繼續往下看…

Tool Calling的關鍵特性:

  1. 動態互動:AI 可以根據對話內容決定何時使用哪些工具。
  2. 能力擴展:執行超出訓練數據範圍的任務,如獲取即時數據或執行指令。
  3. 靈活性:開發者可以創建自定義工具以滿足特定需求。

LangGraph 革命:工具節點實戰

LangGraph 是一個強大的框架,用於構建複雜的 AI 工作流程。它通過創新的工具節點(Tool Node)概念迸出了 Tool Calling。讓我們來看看它是如何運作的,以及為什麼它如此重要。

什麼是ToolNode?

ToolNode是 LangGraph 中的一個關鍵組件,它充當 AI 建議和實際工具執行之間的橋樑。它的設計目的是:

  • 與 LangGraph 的預建 ReAct agent 無縫協作
  • 適應任何帶有 messages 鍵的 StateGraph
  • 並行執行多個工具呼叫以提高效率

打造天氣查詢 Agent:步驟教學

讓我們一步步走過使用 LangGraph 和 Tool Calling 創建一個簡單但強大的天氣查詢 agent 的過程:

from langchain_core.messages import AIMessage
from langchain_core.tools import tool
from langgraph.prebuilt import ToolNode
from langchain_openai import ChatOpenAI
from langgraph.graph import END, MessagesState, StateGraph
from typing import Literal

# 步驟一:定義天氣工具
@tool
def get_taiwan_weather(city: str) -> str:
"""查詢台灣特定城市的天氣狀況。"""
weather_data = {
"台北": "晴天,溫度28°C",
"台中": "多雲,溫度26°C",
"高雄": "陰天,溫度30°C"
}
return f"{city}的天氣:{weather_data.get(city, '暫無資料')}"

# 步驟二:設置模型和工具節點
tools = [get_taiwan_weather]
tool_node = ToolNode(tools)
model = ChatOpenAI()
model_with_tools = model.bind_tools(tools)

# 步驟三:定義控制流程函數
def should_continue(state: MessagesState) -> Literal["tools", END]:
last_message = state["messages"][-1]
return "tools" if last_message.tool_calls else END

def call_model(state: MessagesState):
messages = state["messages"]
response = model.invoke(messages)
return {"messages": [response]}

# 步驟四:建立和配置圖
workflow = StateGraph(MessagesState)
workflow.add_node("agent", call_model)
workflow.add_node("tools", tool_node)
workflow.set_entry_point("agent")
workflow.add_conditional_edges("agent", should_continue)
workflow.add_edge("tools", "agent")

graph = workflow.compile()

# 步驟五:與 Agent 互動
user_input = "高雄天氣如何?"
events = graph.stream({"messages": [("user", user_input)]}, stream_mode="values")
for event in events:
if "messages" in event:
event["messages"][-1].pretty_print()

這段程式碼展示了使用工具呼叫和 LangGraph 創建一個能夠查詢天氣信息的 AI agent 的威力和簡潔性。

ToolNode的內部運作機制

了解 ToolNode 的內部運作方式可以幫助你充分發揮它們的潛力:

  1. 它們執行最後一個 AIMessage 中請求的工具。
  2. 支持多種圖結構。
  3. 並行運行工具呼叫以提高效率。
  4. 為每個工具呼叫輸出標準化的 ToolMessages。

專業提示:在實施工具節點時,確保你的狀態包含消息列表,最後一條消息是 AIMessage,並且它包含已填充的 tool_calls。

你怎麼看?

  • 你認為工具呼叫會如何改變你與 AI 系統的互動?
  • 你希望在未來看到哪些工具被整合到 AI 助手中?

歡迎在下方留言分享你的想法!

準備開始了嗎?

AI 工具呼叫的世界充滿了創新的機會。無論你是想創建下一個突破性 AI 應用的開發者,還是希望利用 AI 獲得競爭優勢的企業領袖,現在就是深入研究的最佳時機。

今天就開始嘗試 LangGraph 和工具呼叫吧。AI 的未來不僅僅是更智能的對話 — — 而是能夠在現實世界中真正代表我們行動的 AI。

你準備好成為這場革命的一部分了嗎?

如果你覺得這篇文章有幫助,別忘了給個讚 👏 並追蹤我,獲取更多 AI 技術前沿的洞察!

--

--

許恆修 | Heng-Shiou Sheu

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