OpenAI 相容性

2024年2月8日

OpenAI compatibility

Ollama 現在內建與 OpenAI Chat Completions API 的相容性,讓您可以在本地端使用更多工具和應用程式與 Ollama 搭配使用。

設定

首先下載 Ollama 並拉取模型,例如 Llama 2Mistral

ollama pull llama2

使用方式

cURL

若要調用 Ollama 相容於 OpenAI 的 API 端點,請使用相同的 OpenAI 格式,並將主機名稱變更為 https://127.0.0.1:11434

curl https://127.0.0.1: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!"
            }
        ]
    }'

OpenAI Python 程式庫

from openai import OpenAI

client = OpenAI(
    base_url = 'https://127.0.0.1:11434/v1',
    api_key='ollama', # required, but unused
)

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)

OpenAI JavaScript 程式庫

import OpenAI from 'openai'

const openai = new OpenAI({
  baseURL: 'https://127.0.0.1:11434/v1',
  apiKey: 'ollama', // required but unused
})

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)

範例

Vercel AI SDK

Vercel AI SDK 是一個開放原始碼程式庫,用於建構對話式串流應用程式。若要開始使用,請使用 create-next-app 來複製範例儲存庫

npx create-next-app --example https://github.com/vercel/ai/tree/main/examples/next-openai example
cd example

接著,在 app/api/chat/route.ts 中進行以下兩項編輯,以更新聊天範例來使用 Ollama

const openai = new OpenAI({
  baseURL: 'https://127.0.0.1:11434/v1',
  apiKey: 'ollama',
});
const response = await openai.chat.completions.create({
  model: 'llama2',
  stream: true,
  messages,
});

下一步,執行應用程式

npm run dev

最後,在瀏覽器中開啟範例應用程式,網址為 https://127.0.0.1:3000

Autogen

Autogen 是微軟推出的一個熱門開放原始碼框架,用於建構多代理程式應用程式。對於此範例,我們將使用 Code Llama 模型

ollama pull codellama

安裝 Autogen

pip install pyautogen

接著建立一個 Python 腳本 example.py,以搭配 Autogen 使用 Ollama

from autogen import AssistantAgent, UserProxyAgent

config_list = [
  {
    "model": "codellama",
    "base_url": "https://127.0.0.1:11434/v1",
    "api_key": "ollama",
  }
]

assistant = AssistantAgent("assistant", llm_config={"config_list": config_list})

user_proxy = UserProxyAgent("user_proxy", code_execution_config={"work_dir": "coding", "use_docker": False})
user_proxy.initiate_chat(assistant, message="Plot a chart of NVDA and TESLA stock price change YTD.")

最後,執行此範例,讓助理撰寫程式碼來繪製圖表

python example.py

更多功能即將推出

這是 OpenAI API 的初步實驗性支援。正在考慮的未來改進包括

  • Embeddings API
  • Function calling
  • Vision support
  • Logprobs

歡迎提出 GitHub issue 如需更多資訊,請參閱 OpenAI 相容性文件