Skip to content

OpenAI 接口兼容性

请注意:OpenAI 兼容性处于实验阶段,可能会进行重大调整,包括破坏性更改。如需访问 Ollama API 的所有功能,请参阅 Ollama 的 Python 库JavaScript 库REST API 文档

Ollama提供了对OpenAI API部分功能的实验性兼容性,以帮助现有应用程序连接到Ollama。

使用方法

开放人工智能Python库

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='llama3',
)

开放人工智能JavaScript库

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: 'llama3',
})

curl

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

api 接口

"/v1/chat/completions"

支持的功能

  • [x] Chat completions(完整的对话补全)
  • [x] Streaming(流媒体)
  • [x] JSON mode(JSON模式)
  • [x] Reproducible outputs(可复现的输出)
  • [ ] Vision(视觉)
  • [ ] Function calling(函数调用)
  • [ ] Logprobs(日志概率)

支持的请求字段

  • [x] model
  • [x] messages
    • [x] Text content
    • [ ] Array of content parts
  • [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

shell
ollama pull llama3

默认模型名称

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

ollama cp llama3 gpt-3.5-turbo

然后,可以将这个新的模型名称指定给 model 字段:

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

热爱生活,热爱 Ollama