LLM
🔧 讓 LLM 用上 Tools!用 DuckDuckGo 強化 AI 回答能力 🦆💡
2025-06-06 · — views
大家好~今天來帶大家體驗一下 LangChain 中非常實用又有趣的一個能力:讓 AI 模型學會「使用工具」!
沒錯,你沒看錯,我們不只要問 LLM 問題,還要教他先去查資料再回答!這樣做最大的好處是什麼?👇
✅ 回答變得更即時
✅ 能處理與外部世界有關的資訊
✅ 不再活在模型訓練時的舊知識中!
🧠 為什麼模型需要 Tool?
想像一下,我們問一個語言模型:
gpt-4o-mini 的計價是?
傳統模型會根據訓練資料胡亂猜 🤷♂️,有些甚至根本沒聽過 GPT-4o-mini!(尤其是版本較舊的模型)
但如果我們讓它先查一下最新資料,然後再來回答,是不是就變聰明了?🤓
這就是 tool usage 的核心!
🔍 本次範例:DuckDuckGo Search Tool + LangChain Chain
我們這次的目標是:
讓 AI 模型使用 DuckDuckGo 搜尋來幫我們查價格,然後再整理回應
🧱 Step 1:定義提示模板
from langchain_core.prompts import ChatPromptTemplate
from langchain_community.utilities import DuckDuckGoSearchAPIWrapper
from langchain.chat_models import AzureChatOpenAI
from rich import print as pprint
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import (RunnablePassthrough, RunnableLambda)
result_template = "請回答問題:{input}\n 以下為搜尋結果{result}"
result_prompt = ChatPromptTemplate.from_template(result_template)
我們先準備好 prompt:
模型會收到使用者問題 + 查到的結果,一起當作參考資料 📝
⚙️ Step 2:建立 Chain 流程
search = DuckDuckGoSearchAPIWrapper()
chain = (
{
"result": RunnableLambda(lambda input: search.results(input, max_results=5)),
"input": RunnablePassthrough()
}
| result_prompt
| chat_model
| str_parser
)
來拆解一下這段!
| 元件 | 功能說明 |
|---|---|
RunnableLambda(...) | 將輸入 input 丟去 DuckDuckGo 查詢前 5 筆結果 🔍 |
RunnablePassthrough() | 保留原始輸入,等下 prompt 也會用到 |
ChatPromptTemplate | 將原始輸入 + 查詢結果組合成 prompt 給 LLM 看 📄 |
chat_model | 丟進 Azure ChatGPT 模型中進行回應 💬 |
StrOutputParser | 把回應整理成純文字,方便輸出 ✂️ |
一口氣就能完成:「🔎 查資料 ➜ 🧠 想回答 ➜ 🖨️ 輸出內容」
🎯 實際執行:來查查 GPT-4o-mini 的價格!
pprint(chain.invoke("gpt-4o-mini的計價"))
###result###
根據搜尋結果,GPT-4o mini 的計價如下:
- 每百萬輸入令牌 (input tokens) 價格為 15 美元(即每 1,000 個輸入令牌價格為 0.015 美元)。
- 每百萬輸出令牌 (output tokens) 價格為 60 美元(即每 1,000 個輸出令牌價格為 0.06 美元)。
這樣的定價使 GPT-4o mini 在性能和成本上相較於之前的模型更加具有吸引力,特別適合需要高效能且控制成本的應用場景。
📊 整理一下:用 Tools 的好處是?
| 項目 | 沒有 Tool 的 LLM 🤕 | 有 Tool 的 LLM 😎 |
|---|---|---|
| 即時資訊 | 無法回答 | 查資料後回答 |
| 時效性 | 只知道訓練前的資料 | 能回應最新變化 |
| 可擴充性 | 模型功能有限 | 可串接多種工具 |
| 應用場景 | 單純對話 | 智能助理、RAG系統、QA bot |
🧠 小結:用 Tool,讓你的 LLM 真正動起來!
LangChain 提供的 Tool Chain 能力,讓我們的 LLM 不再是「只能回答書本知識的學生」,而是「能上網找答案的高手」!
未來不只查價錢,你還可以讓模型:
-
查氣象 ☁️
-
查股票 📈
-
查電影介紹 🎬
-
查 Wikipedia 🧠
✨ 總之,給模型一把瑞士刀,讓它什麼都能做!