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 进行多智能体应用开发。通过使用本地 base URL 和 codellama 等模型配置 config_list,AutoGen 智能体可以在本地执行任务,例如编写代码来绘制股票价格变化图。

未来开发路线图

目前的 OpenAI API 支持是初步且实验性的。Ollama 正在考虑在未来的版本中进行以下改进:

  • Embeddings API: 支持生成向量嵌入。
  • Function Calling: 模型触发外部函数的能力。
  • Vision Support: 集成多模态能力。
  • Logprobs: 提供 token 生成的对数概率。

Sources

相关

  • 项目
  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch