← 文章列表
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 🧠

✨ 總之,給模型一把瑞士刀,讓它什麼都能做!