Ollama OpenAI 相容性更新

Ollama 現在內建了與 OpenAI Chat Completions API 的相容性。此更新讓開發者只需將現有的工具與應用程式重新導向至本地 Ollama 實例,即可使用大量專為 OpenAI 設計的現有工具與應用程式。

透過 OpenAI API 格式進行本地整合

Ollama 允許使用者透過將主機名稱更改為 http://localhost:11434,使用標準的 OpenAI API 格式來調用本地模型。這種相容性確保了預期使用 OpenAI 風格端點的應用程式可以與在本地運行的 Llama 2 或 Mistral 等模型進行通訊。

透過 cURL 實作

若要使用 cURL 與 API 進行互動,請求將被發送到 /v1/chat/completions 端點。一個典型的請求包含模型名稱以及包含 system 與 user 角色的 messages 陣列:

curl http://localhost:11434/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{ 
        "model": "llama2", 
        "messages": [ 
            { 
                "role": "system", 
                "content": "You are a helpful assistant." 
            }, 
            { 
                "role": "user", 
                "content": "Hello!" 
            } 
        ] 
    }'

透過官方函式庫實作

Ollama 與 OpenAI 官方的 Python 與 JavaScript 函式庫相容。整合時需要將 base_url (或 baseURL) 設定為 http://localhost:11434/v1。雖然函式庫需要 api_key 來初始化客戶端,但 Ollama 並不會使用它。

Python 範例:

from openai import OpenAI

client = OpenAI(
    base_url = 'http://localhost:11434/v1',
    api_key='ollama',
)

response = client.chat.completions.create(
  model="llama2",
  messages=[
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Who won the world series in 2020?"},
    {"role": "assistant", "content": "The LA Dodgers won in 2020."},
    {"role": "user", "content": "Where was it played?"}
  ]
)
print(response.choices[0].message.content)

JavaScript 範例:

import OpenAI from 'openai'

const openai = new OpenAI({
  baseURL: 'http://localhost:11434/v1',
  apiKey: 'ollama',
})

const completion = await openai.chat.completions.create({
  model: 'llama2',
  messages: [{ role: 'user', content: 'Why is the sky blue?' }],
})

console.log(completion.choices[0].message.content)

生態系統相容性與框架

由於 Ollama 採用了 OpenAI API 標準,因此它可以直接與熱門的開源 AI 框架整合。

Vercel AI SDK

開發者在構建對話式串流應用程式時,可以使用 Vercel AI SDK,只需在 API 路由中更新 OpenAI 客戶端配置,將其指向本地 Ollama 的 base URL,並使用 stream: true 指定所需的本地模型 (例如 llama2)。

Microsoft AutoGen

Ollama 支援透過 Microsoft AutoGen 進行多代理人應用程式開發。藉由將 config_list 配置為本地 base URL 與如 codellama 之類的模型,AutoGen 代理人可以本地執行任務,例如編寫程式碼來繪製股價變化圖。

未來開發路線圖

目前的 OpenAI API 支援屬於初步且實驗性質。Ollama 正在考慮在未來版本中進行以下改進:

  • Embeddings API: 支援生成向量嵌入 (embeddings)。
  • Function Calling: 模型觸發外部函式的能力。
  • Vision Support: 整合多模態能力。
  • Logprobs: 提供 token 生成的對數機率 (log probabilities)。

Sources

相關

  • 專案
  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch