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も指定できそうです。
便利!
以上