跳转至

OpenAI 兼容性

注意: OpenAI 兼容性是实验性的,可能会有重大调整,包括破坏性更改。要完全访问 Ollama API,请查看 Ollama Python 库JavaScript 库REST API

Ollama 提供与 OpenAI API 的部分兼容性,以帮助将现有应用程序连接到 Ollama。

使用方式

OpenAI Python 库

from openai import OpenAI

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

    # required but ignored
    api_key='ollama',
)

chat_completion = client.chat.completions.create(
    messages=[
        {
            'role': 'user',
            'content': 'Say this is a test',
        }
    ],
    model='llama2',
)

OpenAI JavaScript 库

import OpenAI from 'openai'

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

  // required but ignored
  apiKey: 'ollama',
})

const chatCompletion = await openai.chat.completions.create({
  messages: [{ role: 'user', content: 'Say this is a test' }],
  model: 'llama2',
})

curl

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!"
            }
        ]
    }'

端点

/v1/chat/completions

支持的功能

  • [x] 对话补全
  • [x] 流式传输
  • [x] JSON 模式
  • [x] 可重现输出
  • [ ] 视觉
  • [ ] 函数调用
  • [ ] Logprobs

支持的请求字段

  • [x] model
  • [x] messages
  • [x] 文本 content
  • [ ] content 部分的数组
  • [x] frequency_penalty
  • [x] presence_penalty
  • [x] response_format
  • [x] seed
  • [x] stop
  • [x] stream
  • [x] temperature
  • [x] top_p
  • [x] max_tokens
  • [ ] logit_bias
  • [ ] tools
  • [ ] tool_choice
  • [ ] user
  • [ ] n

备注

  • 设置 seed 将始终将 temperature 设置为 0
  • finish_reason 将始终是 stop
  • 对于提示评估被缓存的完成,usage.prompt_tokens 将为 0

模型

在使用模型之前,本地拉取 ollama pull

ollama pull llama2

默认模型名称

对于依赖于默认 OpenAI 模型名称(如 gpt-3.5-turbo)的工具,请使用 ollama cp 将现有模型名称复制到一个临时名称:

ollama cp llama2 gpt-3.5-turbo

之后,可以在 model 字段中指定这个新的模型名称:

curl http://localhost:11434/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "gpt-3.5-turbo",
        "messages": [
            {
                "role": "user",
                "content": "Hello!"
            }
        ]
    }'