iT邦幫忙

2025 iThome 鐵人賽

DAY 19
0
生成式 AI

nutc_imac_Agent拼裝車系列 第 19

Day19 使用 Ollama API 與 ChatOllama 串接本地模型

  • 分享至 

  • xImage
  •  

在昨天介紹了Ollama,我們認識了 Ollama 的基本概念,也了解如何在本地端運行大型語言模型。今天,我們介紹 Ollama 的 API 端點,並實際透過 ChatOllama 進行串接,讓應用程式能夠像呼叫雲端服務一樣,與本地模型進行互動。今天將說明如何呼叫 API、傳遞請求與取得回應,並示範如何將 ChatOllama 整合到專案中,打造屬於自己的本地 AI 對話系統。

Ollama API 常用端點

  • 列出本地模型
    curl 'http://localhost:11434/api/tags

  • 顯示模型訊息
    curl 'http://localhost:11434/api/show -d '{
    "model": "gpt-oss:20b"
    }'

  • 刪除模型
    curl -X DELETE 'http://localhost:11434/api/delete -d '{
    "model": "gemma3:27b"
    }'

  • 生成回應
    curl 'http://localhost:11434/api/generate -d '{
    "model": "gpt-oss:20b",
    "prompt": "請幫我用一句話介紹台北。"
    }'

串接 ChatOllama

除了直接呼叫 Ollama 的 API 之外,我們也可以透過 ChatOllama 這個介面,快速把本地模型整合進應用程式中。以下是一個簡單的範例,示範如何透過 ChatOllama 與模型互動,並取得回應:


# ==== 可調參數 ====
MODEL = "gpt-oss:20b"
OLLAMA_BASE_URL = "http://10.0.0.209:11434"  # 或 "http://localhost:11434"

SYSTEM_HINT = "你是一個友善的中文助理,請用繁體中文回答問題。"

async def run_agent(nl_query: str):
    llm = ChatOllama(
        model=MODEL,
        base_url=OLLAMA_BASE_URL,
        temperature=0.0,
    )

    messages = [
        SystemMessage(content=SYSTEM_HINT),
        HumanMessage(content=nl_query),
    ]

    result = await llm.ainvoke(messages)
    return result

if __name__ == "__main__":
    out = asyncio.run(run_agent("請幫我用一句話介紹台北。"))
    print("\n=== 模型回覆 ===")
    print(out.content)

建立一個 ChatOllama 實例,設定模型名稱與 Base URL,然後透過 ainvoke() 方法將提示與訊息傳入,並非同步取得模型的回覆。這種方式就像是使用雲端 API 一樣,但是運行在本地端,不需要把資料傳到外部服務,適合內部應用或需要隱私的場景。
https://ithelp.ithome.com.tw/upload/images/20251003/20150369MVMGwDK5Zd.png


上一篇
Day18 Ollama 是什麼?讓大語言模型走進本地
系列文
nutc_imac_Agent拼裝車19
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言