0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LiteLLM Proxy ServerでAzure openAIを本家openAIぽく使う

Posted at

Azure OpenAIリソースを使うことが多いんだけど、ちょっとOSSのプログラム試そうとすると、意外と対応してなかったりして、面倒なときがあります。本家openaiのみの対応だったり、Azure対応してるふりして実はコード内では全然だったり、Azureまわりはテストされてなかったり。

ということで、Azure OpenAIが使いにくければ、本家openaiっぽくつかえればいいんじゃない?ということで、LiteLLM Proxy Server (LLM Gateway)を使ってみたのでその備忘録です。

以下を参考にしました。
https://docs.litellm.ai/docs/proxy/docker_quick_start

環境

Windows
VSC
Python 3.10.11

環境はWindowsですが、VSCのターミナルでぽちぽち試している感じなので、linuxとかでもほぼ同じ感じで動くと思います。

LiteLLM Proxy Serverの設定

ライブラリをインストールします。venvの設定は割愛。

$ pip install 'litellm[proxy]'

config.yamlに以下を設定します。gpt-4o-miniという名前でデプロイしたモデルを設定しています。

model_list:
  - model_name: gpt-4o-mini
    litellm_params:
      model: azure/gpt-4o-mini
      api_base: "Azure openAIリソースのベースURLを設定"
      api_key: "Azure openAIリソースのAPIキーを設定"

コマンドラインで試す

コマンドラインで以下たたきます。うまくいかない場合は、改行を適宜削除してみるとよいです。

curl -X POST 'http://localhost:4000/chat/completions' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer sk-1234' \
-d '{
    "model": "gpt-3.5-turbo",
    "messages": [
      {
        "role": "system",
        "content": "You are a helpful math tutor. Guide the user through the solution step by step."
      },
      {
        "role": "user",
        "content": "how can I solve 8x + 7 = -23"
      }
    ]
}'

以下のように、ちゃんと結果がかえってきます。英語できいてるから、英語でかえってきてますね。

 tutor. Guide the user through the solution step by step."      },      {        "role": "user",        "content": "how can I solve 8x + 7 = -23"      }    ]}'{"id":"chatcmpl-AZfSw8ZSiqJ6Khdv8Nnw7QLg06N7S","created":1733064238,"model":"gpt-4o-mini",
"object":"chat.completion","system_fingerprint":"fp_04751d0b65","choices":[{"finish_reason":"stop","index":0,"message":{"content":"To solve the equation \\( 8x + 7 = -23 \\), follow these steps:\n\n### Step 1: Isolate the term with the variable (8x)\nFirst, you want to 
get the term involving \\( x \\) by itself on one side. Start by subtracting \\( 7 \\) from both sides of the equation:\n\n\\[\n8x + 7 - 7 = -23 - 7\n\\]\n\nThis simplifies to:\n\n\\[\n8x = -30\n\\]\n\n### Step 2: Solve for \\( x \\)\nNext, you need to get \\( x \\) by 
itself. You do this by dividing both sides of the equation by \\( 8 \\):\n\n\\[\nx = \\frac{-30}{8}\n\\]\n\n### Step 3: Simplify the fraction\nYou can simplify the fraction \\( \\frac{-30}{8} \\) by dividing both the numerator and the denominator by the greatest common 
divisor, which is \\( 2 \\):\n\n\\[\nx = \\frac{-30 \\div 2}{8 \\div 2} = \\frac{-15}{4}\n\\]\n\n### Final Answer\nSo, the solution to the equation \\( 8x + 7 = -23 \\) is:\n\n\\[\nx = -\\frac{15}{4}\n\\]\n\nIf you prefer it as a decimal, you can also express it as:\n\n\\[\nx = -3.75\n\\] \n\nWould you like any further explanation on any of the steps?","role":"assistant","tool_calls":null,"function_call":null}}],"usage":{"completion_tokens":310,"prompt_tokens":41,"total_tokens":351,"completion_tokens_details":null,"prompt_tokens_details":null},"service_tier":null,"prompt_filter_results":[{"prompt_index":0,"content_filter_results":{"hate":{"filtered":false,"severity":"safe"},"jailbreak":{"filtered":false,"detected":false},"self_harm":{"filtered":false,"severity":"safe"},"sexual":{"filtered":false,"severity":"safe"},"violence":{"filtered":false,"severity":"safe"}}}]}

pythonから呼び出す

openaiライブラリ経由で、本家っぽく呼び出してみます。

pip install openai==0.28

pythonプログラムは以下。

import openai

# Azure互換のAPIエンドポイントを指定
openai.api_base = "http://localhost:4000/v1"

# APIキーを設定
openai.api_key = "sk-1234"  # litellmで設定したキー。デフォルトがこれ。

# リクエストを送信
response = openai.ChatCompletion.create(
    model="gpt-4o-mini",  # litellmで指定したモデル名
    messages=[
        {
            "role": "system",
            "content": "You are a helpful math tutor. Guide the user through the solution step by step."
        },
        {
            "role": "user",
            "content": "次の数式はどのように解けばよい? 8x + 7 = -23"
        }
    ]
)

# 結果を表示
print(response.choices[0].message["content"])

結果が以下のように出力されます。それっぽいものが出てきました。

数式 \( 8x + 7 = -23 \) を解くためには、まず \( x \) を孤立させるためにいくつかのステップ
を踏む必要があります。以下の手順に従って解いていきましょう。

### ステップ 1: 両辺から 7 を引く

方程式の両辺から 7 を引きます。この操作により、\( x \) の項を一方の辺に集めることができま 
す。

\[
8x + 7 - 7 = -23 - 7
\]

これを計算すると、

\[
8x = -30
\]

### ステップ 2: 両辺を 8 で割る

次に、\( x \) を単独にするために、両辺を 8 で割ります。

\[
\frac{8x}{8} = \frac{-30}{8}
\]

これを計算すると、

\[
x = -\frac{30}{8}
\]

### ステップ 3: 簡略化する

\( -\frac{30}{8} \) を約分します。30 と 8 は 2 で割れるので、

\[
x = -\frac{15}{4}
\]

### 結果

したがって、解は次のようになります。

\[
x = -\frac{15}{4}
\]

このようにして方程式を解くことができました。もし他に質問があれば教えてください!

これを使えば、どんなOSSも気楽に遊び倒せますね。
Azure openAIだけでなく、config.yamlでollamaで起動したLLMも指定できそうです。
便利!

以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?