DeepSeek シリーズの大規模言語モデル (LLM) の機能を統合するには、安定したスケーラブルなバックエンドモデルサービスが必要です。本トピックでは、Platform for AI (PAI) の Model Gallery を使用して DeepSeek-V3 および DeepSeek-R1 モデルをデプロイする方法について説明します。この方法により、標準 API 互換のモデルサービスエンドポイントを作成でき、基盤となる環境設定、モデルの読み込み、推論の最適化といったインフラストラクチャの管理が不要になります。その後、このエンドポイントをアプリケーションに直接統合できます。
ソリューションアーキテクチャ
このソリューションは PAI 上に構築されており、以下のコアコンポーネントで構成されています。
Model Gallery: モデルの配布とデプロイのエントリポイントです。事前設定済みの DeepSeek モデルと、それに対応するデプロイ設定を提供します。
Elastic Algorithm Service (EAS): モデルのデプロイと推論をホストするコアサービスです。GPU などの基盤となる計算リソースを自動的に管理し、設定に基づいてモデルサービスインスタンスを起動します。
推論アクセラレーションエンジン (SGLang、vLLM、または BladeLLM): これらのエンジンは、モデルの推論パフォーマンスを最適化するために使用されます。
SGLang/vLLM: OpenAI API と完全に互換性のあるインターフェイスを提供し、既存のアプリケーションの移行を簡素化します。
BladeLLM: Alibaba Cloud 独自のパフォーマンス専有型推論フレームワークであり、特定のシナリオで優れた推論パフォーマンスを提供します。
API ゲートウェイ: EAS は、デプロイされたモデルサービスをセキュアな API ゲートウェイ経由で公開し、サービスエンドポイントと認証トークンを提供します。
ステップ 1: モデルとリソースの計画
1. 推論エンジンの選択
推奨: SGLang。パフォーマンス専有型を提供しながら OpenAI API 標準と完全に互換性があり、主流のアプリケーションエコシステムに最適です。ほとんどのシナリオで、vLLM よりも長い最大コンテキスト長をサポートします。
代替: vLLM。業界で広く利用されているフレームワークとして、優れた API 互換性も提供します。
特定シナリオ向け: BladeLLM。最大の推論パフォーマンスを優先し、OpenAI 標準とは異なる API を使用できる場合にのみ、Alibaba Cloud PAI が開発したパフォーマンス専有型推論フレームワークである BladeLLM を選択してください。たとえば、
client.models.list()をサポートしておらず、max_tokensパラメーターにはデフォルトの切り捨て動作があります。
2. モデルとリソースの選定
モデルの選択によって、必要な計算リソースとデプロイコストが決まります。DeepSeek モデルには「フルバージョン」と「蒸留版」があり、それぞれリソース要件が大幅に異なります。
開発とテスト:
DeepSeek-R1-Distill-Qwen-7Bなどの蒸留版モデルを使用します。これらのモデルはリソースフットプリントが小さく、通常は 24 GB の GPU メモリを搭載した単一の GPU で、迅速にデプロイでき、コスト効率が高いため、迅速な機能検証に最適です。本番環境: パフォーマンスとコストのバランスに基づいて評価します。
DeepSeek-R1-Distill-Qwen-32Bモデルは、効果とコストのバランスが取れています。より高いモデルパフォーマンスが必要な場合は、フルバージョンモデルを選択してください。これには、それぞれ 96 GB の GPU メモリを搭載した 8 つの GPU など、複数のハイエンド GPU が必要となり、コストが大幅に増加します。
以下の表は、さまざまなモデルバージョンの最小構成と、さまざまなインスタンスタイプおよび推論エンジンでサポートされる最大トークン数を示しています。
フルバージョンモデル
モデル | デプロイ方法 | 最大トークン数 (入力 + 出力) | 最小構成 | |
SGLang (推奨) | vLLM | |||
DeepSeek-R1 | シングルノード - NVIDIA GPU | 56,000 | 65,536 | シングルノード 8 × GU120 (8 × 96 GB の GPU メモリ) |
シングルノード - GP7V インスタンスタイプ | 56,000 | 16,384 | ||
分散 - Lingjun リソース | 163,840 | 163,840 | ||
DeepSeek-V3 | シングルノード - NVIDIA GPU | 56,000 | 65,536 | シングルノード 8 × GU120 (8 × 96 GB の GPU メモリ) |
シングルノード - GP7V インスタンスタイプ | 56,000 | 16,384 | ||
分散 - Lingjun Intelligent Computing Service リソース | 163,840 | 163,840 | ||
シングルノードデプロイのインスタンスタイプに関する注意点:
NVIDIA GPU:
ml.gu8v.c192m1024.8-gu120、ecs.gn8v-8x.48xlarge: パブリックリソースとして利用可能ですが、可用性が制限される場合があります。ecs.ebmgn8v.48xlarge: このインスタンスタイプはパブリックリソースとして使用できません。専用の EAS リソースを購入 してください。
GP7V インスタンスタイプ:
ml.gp7vf.16.40xlargeはパブリックリソースとして利用可能で、スポットインスタンスとしてのみ使用できます。NVIDIA GPU リソースが不足している場合は、中国 (ウランチャブ) リージョンに切り替えて GP7V リソースを検索してください。デプロイ時に VPC の設定が必要です。
分散デプロイのインスタンスタイプの説明 (パフォーマンス専有型が必要な場合に推奨):
分散デプロイは高速ネットワークに依存しており、PAI Lingjun Intelligent Computing Service を使用する必要があります。これは、パフォーマンス専有型で弾力性のある異種コンピューティング能力を提供します。また、デプロイ時には VPC の設定が必要です。PAI Lingjun Intelligent Computing Service を使用するには、リージョンを中国 (ウランチャブ) に切り替えてください。
Lingjun パブリックリソース:
ml.gu7xf.8xlarge-gu108単一インスタンスのデプロイに 4 台のマシンが必要で、スポットインスタンスとしてのみ使用できます。GP7V インスタンスタイプ: 単一インスタンスのデプロイには 2 台のマシンが必要です。
Lingjun プリペイドリソース: ホワイトリストへの登録が必要です。営業担当者にご連絡いただくか、チケットを起票してお問い合わせください。
蒸留版モデル
モデル | 最大トークン数 (入力 + 出力) | 最小構成 | ||
SGLang (推奨) | vLLM | BladeLLM | ||
DeepSeek-R1-Distill-Qwen-1.5B | 131,072 | 131,072 | 131,072 | 1 × A10 GPU (24 GB の GPU メモリ) |
DeepSeek-R1-Distill-Qwen-7B | 131,072 | 32,768 | 131,072 | 1 × A10 GPU (24 GB の GPU メモリ) |
DeepSeek-R1-Distill-Llama-8B | 131,072 | 32,768 | 131,072 | 1 × A10 GPU (24 GB の GPU メモリ) |
DeepSeek-R1-Distill-Qwen-14B | 131,072 | 32,768 | 131,072 | 1 × GPU L (48 GB の GPU メモリ) |
DeepSeek-R1-Distill-Qwen-32B | 131,072 | 32,768 | 131,072 | 2 × GPU L (2 × 48 GB の GPU メモリ) |
DeepSeek-R1-Distill-Llama-70B | 131,072 | 32,768 | 131,072 | 2 × GU120 (2 × 96 GB の GPU メモリ) |
ステップ 2: モデルサービスのデプロイ
PAI コンソールにログインし、左上で対象のリージョンを選択し、左側のナビゲーションウィンドウから [Workspaces] に移動して、ターゲットワークスペースを選択します。
ワークスペースで、[QuickStart] > [Model Gallery] に移動します。
モデルリストで、
DeepSeek-R1-Distill-Qwen-7Bなどのターゲットモデルを検索して選択し、モデルの詳細ページに移動します。右上隅にある [Deploy] をクリックします。デプロイ設定ページで、ステップ 1 の計画に基づいて次のパラメーターを設定します。
Inference engine: SGLang または vLLM を推奨します。
Resource for deployment: パブリックリソースまたは専用リソースを選択し、モデルの要件に基づいて適切な GPU 仕様を選択します。
デフォルトでは、パブリックリソースが使用され、推奨仕様が提供されます。可用性が不十分な場合は、別のリージョンに切り替えてみてください。
重要パブリックリソースでデプロイする場合、サービスが [Running] 状態になった時点で課金が開始され、呼び出しがない場合でも稼働時間に基づいて課金されます。テスト後は速やかにサービスを停止してください。
[Resource Quota] を選択した場合は、選択したインスタンスタイプに対応する推論エンジンとデプロイテンプレートを選択する必要があります。例えば、GP7V インスタンスタイプを使用する場合は、推論エンジンとして [SGLang] を選択し、デプロイテンプレートとして [Single-node - GP7V Instance Type] を選択します。

すべての設定が正しいことを確認したら、[Deploy] をクリックします。システムがサービスの作成を開始します。
説明フルバージョンの DeepSeek-R1 のような大規模なパラメータを持つモデルの場合、モデルのロードプロセスに 20~30 分かかることがあります。
[Model Gallery] > [Task Management] > [Deployment Tasks] ページでデプロイタスクのステータスを確認します。サービス名をクリックしてサービスの詳細ページに移動します。また、右上隅の [More Information] をクリックして、PAI-EAS モデルサービスの詳細ページに移動して詳細情報を確認することもできます。

ステップ 3: オンラインデバッグ
[Model Gallery] > [Task Management] > [Deployment Tasks] ページに移動し、デプロイされたサービスの名前をクリックします。
[Online Test] セクションで、オンラインデバッグツールを見つけます。
SGLang/vLLM でデプロイした場合、サービスの API 記述ファイルは <EAS_ENDPOINT>/openapi.json から取得できます。以下の手順では、チャット補完エンドポイント POST <EAS_ENDPOINT>/v1/chat/completions をテストします。
API パスを追加します。オンラインテストツールはエンドポイント URL を事前に入力します。特定の API パスである
v1/chat/completionsを追加します。リクエスト本文を作成します。
プロンプトが「What is 3+5?」の場合
リクエストボディの形式は以下の通りです。
modelパラメータの値は、<EAS_ENDPOINT>/v1/modelsエンドポイントから取得したモデル名です。この例ではDeepSeek-R1-Distill-Qwen-7Bを使用します。{ "model": "DeepSeek-R1-Distill-Qwen-7B", "messages": [ { "role": "user", "content": "What is 3+5?" } ] }リクエストを送信します。

ステップ 4: モデルサービスの呼び出し
DeepSeek-R1 モデルシリーズの公式な使用推奨事項は以下の通りです。
temperatureを 0.5 から 0.7 の間に設定します。繰り返しや支離滅裂な出力を防ぐため、推奨値は 0.6 です。システムプロンプトを追加せず、すべての指示をユーザープロンプトに配置します。
数学関連の質問については、プロンプトに「Please reason step by step and put the final answer in a \boxed{}.」を含めることを推奨します。
BladeLLM を使用する際に予期せぬ出力の切り捨てを防ぐため、リクエストに max_tokens パラメータを指定する必要があります。このパラメータを省略すると、BladeLLM エンジンは出力をデフォルトの 16 トークンに切り捨てます。
API 呼び出し
サービスエンドポイントとトークンを取得します。
[Model Gallery]] > [Task Management] > [Deployment Tasks] ページで、デプロイされたサービスの名前をクリックしてサービスの詳細ページに移動します。
[View Call Information] をクリックして、サービスエンドポイントとトークンを取得します。

チャット API 呼び出しの例を使用します。
<EAS_ENDPOINT>をサービスエンドポイントに、<EAS_TOKEN>をサービストークンに置き換えます。OpenAI SDK
注:
エンドポイントの末尾に
/v1を追加します。BladeLLM で高速化されたデプロイは
client.models.list()をサポートしていません。回避策として、modelパラメーターを空の文字列 ("") に設定します。
SGLang/vLLM で高速化されたデプロイ
from openai import OpenAI # 1. クライアントを設定 # <EAS_ENDPOINT> と <EAS_TOKEN> をサービスの実際のエンドポイントとトークンに置き換え openai_api_key = "<EAS_TOKEN>" openai_api_base = "<EAS_ENDPOINT>/v1" client = OpenAI( api_key=openai_api_key, base_url=openai_api_base, ) # 2. モデル名を取得 try: model = client.models.list().data[0].id print(model) except Exception as e: print(f"モデルリストの取得に失敗しました。エンドポイントとトークンを確認してください。エラー: {e}") # 3. リクエストを作成して送信 stream = True chat_completion = client.chat.completions.create( messages=[ {"role": "user", "content": "Hello, please introduce yourself."} ], model=model, max_tokens=2048, stream=stream, ) if stream: for chunk in chat_completion: print(chunk.choices[0].delta.content, end="") else: result = chat_completion.choices[0].message.content print(result)BladeLLM で高速化されたデプロイ
from openai import OpenAI ##### API 設定 ##### # <EAS_ENDPOINT> をデプロイされたサービスのエンドポイントに、<EAS_TOKEN> をデプロイされたサービスのトークンに置き換え openai_api_key = "<EAS_TOKEN>" openai_api_base = "<EAS_ENDPOINT>/v1" client = OpenAI( api_key=openai_api_key, base_url=openai_api_base, ) # BladeLLM で高速化されたデプロイは、現在 client.models.list() を使用したモデル名の取得をサポートしていません。互換性のために model の値を "" に設定 model="" stream = True chat_completion = client.chat.completions.create( messages=[ {"role": "user", "content": "Hello, please introduce yourself."} ], model=model, max_tokens=2048, stream=stream, ) if stream: for chunk in chat_completion: print(chunk.choices[0].delta.content, end="") else: result = chat_completion.choices[0].message.content print(result)HTTP
SGLang/vLLM で高速化されたデプロイ
モデルリスト API
<EAS_ENDPOINT>/v1/modelsから取得したモデル名で <model_name> を置き換えます。curl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: <EAS_TOKEN>" \ -d '{ "model": "<model_name>", "messages": [ { "role": "user", "content": "hello!" } ] }' \ <EAS_ENDPOINT>/v1/chat/completionsimport json import requests # <EAS_ENDPOINT> をデプロイされたサービスのエンドポイントに、<EAS_TOKEN> をデプロイされたサービスのトークンに置き換え EAS_ENDPOINT = "<EAS_ENDPOINT>" EAS_TOKEN = "<EAS_TOKEN>" url = f"{EAS_ENDPOINT}/v1/chat/completions" headers = { "Content-Type": "application/json", "Authorization": EAS_TOKEN, } # <model_name> をモデルリスト API <EAS_ENDPOINT>/v1/models から取得したモデル名に置き換え model = "<model_name>" stream = True messages = [ {"role": "user", "content": "Hello, please introduce yourself."}, ] req = { "messages": messages, "stream": stream, "temperature": 0.6, "top_p": 0.5, "top_k": 10, "max_tokens": 300, "model": model, } response = requests.post( url, json=req, headers=headers, stream=stream, ) if stream: for chunk in response.iter_lines(chunk_size=8192, decode_unicode=False): msg = chunk.decode("utf-8") if msg.startswith("data"): info = msg[6:] if info == "[DONE]": break else: resp = json.loads(info) print(resp["choices"][0]["delta"]["content"], end="", flush=True) else: resp = json.loads(response.text) print(resp["choices"][0]["message"]["content"])BladeLLM で高速化されたデプロイ
curl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: <EAS_TOKEN>" \ -d '{ "messages": [ { "role": "user", "content": "hello!" } ] }' \ <EAS_ENDPOINT>/v1/chat/completionsimport json import requests # <EAS_ENDPOINT> をデプロイされたサービスのエンドポイントに、<EAS_TOKEN> をデプロイされたサービスのトークンに置き換え EAS_ENDPOINT = "<EAS_ENDPOINT>" EAS_TOKEN = "<EAS_TOKEN>" url = f"{EAS_ENDPOINT}/v1/chat/completions" headers = { "Content-Type": "application/json", "Authorization": EAS_TOKEN, } stream = True messages = [ {"role": "user", "content": "Hello, please introduce yourself."}, ] # BladeLLM を使用してデプロイメントを高速化する場合、max_tokens パラメーターを指定しないと、出力はデフォルトで 16 トークンに切り捨てられます。必要に応じて max_tokens リクエストパラメーターを調整することを推奨します。 req = { "messages": messages, "stream": stream, "temperature": 0.6, "top_p": 0.5, "top_k": 10, "max_tokens": 300, } response = requests.post( url, json=req, headers=headers, stream=stream, ) if stream: for chunk in response.iter_lines(chunk_size=8192, decode_unicode=False): msg = chunk.decode("utf-8") if msg.startswith("data"): info = msg[6:] if info == "[DONE]": break else: resp = json.loads(info) if resp["choices"][0]["delta"].get("content") is not None: print(resp["choices"][0]["delta"]["content"], end="", flush=True) else: resp = json.loads(response.text) print(resp["choices"][0]["message"]["content"])異なるモデルやデプロイフレームワークでは、推論サービスを使用する際の動作が異なります。API 呼び出しに関するより詳細な手順については、Model Gallery のモデル紹介ページをご参照ください。
ローカル WebUI の構築
Gradio は、機械学習モデル用のインタラクティブなインターフェイスを迅速に作成するための、ユーザーフレンドリな Python ライブラリです。次の手順に従って、Gradio WebUI をローカルで実行します。
コードのダウンロード: デプロイ時に選択した推論エンジンに基づいて適切なコードをダウンロードします。GitHub へのネットワークアクセスが安定している場合は GitHub リンクを使用します。それ以外の場合は、OSS リンクを使用します。
vLLM, SGLang: vLLM/SGLang_github, vLLM/SGLang_oss
BladeLLM: BladeLLM_github, BladeLLM_oss
環境の準備: Python 3.10 以降が必要です。依存関係をインストールします:
pip install openai gradio。Web アプリケーションの起動: ターミナルで次のコマンドを実行します。
<EAS_ENDPOINT>と<EAS_TOKEN>をサービスのエンドポイントとトークンに置き換えます。python webui_client.py --eas_endpoint "<EAS_ENDPOINT>" --eas_token "<EAS_TOKEN>"アプリケーションが正常に起動すると、ローカル URL (通常は
http://127.0.0.1:7860) がコンソールに出力されます。ブラウザでこの URL を開いて WebUI にアクセスします。
サードパーティアプリケーションの統合
Chatbox、Dify、または Cherry Studio に接続するには、「サードパーティクライアントの統合」をご参照ください。
ステップ 5: リソースのクリーンアップ
パブリックリソースを使用してデプロイされたサービスは、サービスが正常に作成された時点から課金が開始され、実行時間に基づいて課金されます。不要になったサービスは、さらなる課金を防ぐために停止または削除してください。
[Task Management] > [Deployment Tasks] ページに戻ります。
停止したいサービスを見つけ、[Actions] 列の [Stop] または [Delete] をクリックします。
Stop: サービスインスタンスがリリースされ、課金が停止します。サービス設定は保存され、後で再起動できます。
Delete: サービス設定とインスタンスの両方が完全に削除されます。

コストとリスク
コストの内訳
パブリックリソースを使用してデプロイされたサービスは、作成時 (ステータスが「Running」になった時点) から停止または削除されるまで分単位で課金され、請求は時間単位で精算されます。サービスがアイドル状態であっても課金は継続します。サービスを停止すると課金も停止します。
詳細については、「Elastic Algorithm Service (EAS) の課金」をご参照ください。
コスト管理の推奨事項
迅速なクリーンアップ: 開発およびテスト後は、コストを管理するためにサービスを直ちに [Stop] または [Delete] してください。
適切なモデルの選択: 非本番環境では、低コストの蒸留版モデルの使用を優先してください。
スポットリソースの使用: 非本番タスクの場合、デプロイ時にスポットモードを有効にします。ただし、入札が成功するには特定の条件を満たす必要があり、リソースの不安定性のリスクがあることに注意してください。
長期利用割引の活用: 長期間実行される本番サービスの場合、Savings Plansまたはプリペイドリソースを購入することでコストを削減できます。
主なリスク
予期せぬコスト: サービスの停止を忘れると、継続的に課金されます。使用後は必ず直ちにリソースをクリーンアップしてください。
BladeLLM での出力の切り捨て:BladeLLM エンジンを使用する際、API リクエストで
max_tokensを指定しないと、出力が 16 トークンに切り捨てられ、予期せぬ動作や機能不全を引き起こす可能性があります。不適切な API 呼び出し仕様:
DeepSeek-R1 シリーズのモデルを呼び出す際に
messagesにsystemプロンプトを含めると、予期せぬ動作につながる可能性があります。API リクエスト URL は
/v1/chat/completionsのようなパスで終わる必要があります。そうでない場合、404 エラーが返されます。
リソースの可用性: LLM、特にフルバージョンのものをデプロイする場合、一部のリージョンではハイエンド GPU リソースの可用性が限られており、デプロイの失敗や長い待機時間につながる可能性があります。他のリージョンへの切り替えを試みてください。
モデルデプロイに関するよくある質問
デプロイをクリックした後、サービスが待機のままになる
考えられる理由は次のとおりです:
現在のリージョンのマシンリソースが不足しています。
モデルが大きく、ロードに時間がかかります。DeepSeek-R1 や DeepSeek-V3 のような LLM の場合、このプロセスには 20~30 分かかることがあります。
しばらく待って様子を見ることができます。長時間経過してもサービスが起動しない場合は、以下の手順を試してください。
[Task Management] > [Deployment Tasks] ページに移動して、デプロイタスクの詳細を表示します。ページの右上にある をクリックして、PAI-EAS モデルサービスの詳細ページに移動し、サービスインスタンスのステータスを確認します。

現在のサービスを停止し、コンソールの左上で別のリージョンに切り替えて再デプロイします。
説明DeepSeek-R1 や DeepSeek-V3 などの超大規模パラメーターモデルでは、サービスを起動するために 8-GPU のセットアップが必要であり、リソースの可用性は限られています。
DeepSeek-R1-Distill-Qwen-7Bのように、リソースがより容易に入手できる小規模な蒸留モデルのデプロイを検討してください。
モデル呼び出しに関するよくある質問
API を呼び出すと 404 エラーが発生するのはなぜですか?
呼び出している URL に v1/chat/completions などの OpenAI API サフィックスが追加されているかどうかを確認してください。詳細については、モデルのホームページにある API 呼び出しの説明を参照してください。
vLLM で高速化されたデプロイを使用する場合、チャット API 呼び出しのリクエストボディの model パラメーターに正しいモデル名が入力されているかどうかを確認してください。/v1/models エンドポイントを呼び出すことでモデル名を取得できます。
リクエストが長すぎてゲートウェイタイムアウトが発生する
デプロイ時に使用されるゲートウェイのデフォルトのリクエストタイムアウトは 180 秒です。このタイムアウトを延長する必要がある場合は、専用ゲートウェイを設定し、チケットを起票して専用ゲートウェイのリクエストタイムアウトを調整してください。調整可能な最大タイムアウトは 600 秒です。
「Web 検索」機能がないのはなぜですか?
「Web 検索」機能は、モデルサービスをデプロイするだけでは実装できません。モデルサービスに基づいて AI アプリケーション (Agent) を構築する必要があります。
モデルが思考プロセスをスキップした場合はどうすればよいですか?
DeepSeek-R1 モデルをデプロイし、モデルが時々思考プロセスをスキップする状況に遭遇した場合は、DeepSeek の更新された、思考を強制するチャットテンプレートを使用してください。使用するには:
起動コマンドの変更。
図に示すように、JSON を編集することでサービス設定を編集します。
containers-scriptフィールドを変更して"--chat-template /model_dir/template_force_thinking.jinja"を追加します ("--served-model-name DeepSeek-R1"の後に追加できます)。
サービスが既にデプロイされている場合は、[Model Gallery] > [Task Management] > [Deployment Tasks] に移動し、デプロイされたサービスの名前をクリックしてから、詳細ページの右上にある [Update Service] をクリックして同じ設定ページにアクセスします。

リクエストボディの変更。各リクエストで、
messages配列の末尾に{"role": "assistant", "content": "<think>\n"}を追加します。
DeepSeek-R1 の思考モードを無効にできますか?
DeepSeek-R1 シリーズのモデルは、現在、思考プロセスを無効にすることをサポートしていません。
マルチターン対話はどのように実装しますか?
モデルサービス自体は会話履歴を保存しません。クライアントアプリケーションが履歴を保存し、後続のリクエストに含める責任を負います。以下は、SGLang でデプロイされたサービスの例です。
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: <EAS_TOKEN>" \
-d '{
"model": "<model_name>",
"messages": [
{
"role": "user",
"content": "Hello"
},
{
"role": "assistant",
"content": "Hello! I'm glad to see you. What can I help you with?"
},
{
"role": "user",
"content": "What was my previous question?"
}
]
}' \
<EAS_ENDPOINT>/v1/chat/completions