Ollama OpenAI 互換性アップデート

Ollama は、OpenAI Chat Completions API との組み込みの互換性を備えるようになりました。このアップデートにより、開発者は既存の OpenAI 用に設計された幅広いツールやアプリケーションを、ローカルの Ollama インスタンスにリダイレクトするだけで使用できるようになります。

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

対話型ストリーミングアプリケーションを構築している開発者は、API ルート内の OpenAI クライアント設定を、ローカルの Ollama base URL を指すように更新し、stream: true を指定して目的のローカルモデル (例: llama2) を指定することで、Vercel AI SDK を使用できます。

Microsoft AutoGen

Ollama は Microsoft AutoGen を介してマルチエージェントアプリケーションの開発をサポートしています。config_list をローカルの base URL と codellama のようなモデルで構成することで、AutoGen エージェントは、株価の変化をプロットするためのコードを書くといったタスクをローカルで実行できます。

将来の開発ロードマップ

現在の OpenAI API サポートは初期段階であり、実験的なものです。Ollama は、将来のリリースに向けて以下の改善を検討しています。

  • Embeddings API: ベクトル埋め込みの生成をサポート。
  • Function Calling: モデルが外部関数を呼び出す機能。
  • Vision Support: マルチモーダル機能の統合。
  • Logprobs: トークン生成のログ確率の提供。

Sources

関連

  • プロジェクト
  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch