跳到主要内容

二、OpenAI 兼容性

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

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

1. 使用方法

(1). OpenAI Python库

from openai import OpenAI

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

# 必需但被忽略
api_key='ollama',
)

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

(2). OpenAI JavaScript库

import OpenAI from 'openai'

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

// 必需但被忽略
apiKey: 'ollama',
})

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

(3). 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!"
}
]
}'

2. 端点

(1). /v1/chat/completions

支持的功能

  • 聊天完成
  • 流式传输
  • JSON 模式
  • 可复现的输出
  • 视觉
  • 函数调用
  • Logprobs

支持的请求字段

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

注意事项

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

3. 模型

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

ollama pull llama2

(1). 默认模型名称

对于依赖于默认 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!"
}
]
}'