BladeLLM サーバーは、OpenAI /v1/completions および /v1/chat/completions と互換性のあるインターフェースを提供し、クライアントは /v1/completions または /v1/chat/completions パスに HTTP POST リクエストを送信することでサービスを呼び出すことができます。このトピックでは、サービス呼び出し時に構成可能なパラメーターと、返される結果のパラメーターについて説明します。
Completions インターフェース
呼び出し例
コマンドライン
# EAS サービスの呼び出し
# <Your EAS Token> はサービス Token に置き換え、<service_url> はサービスエンドポイントに置き換えます。
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: <Your EAS Token>" \
-d '{"prompt":"hello world", "stream":"true"}' \
<service_url>/v1/completionsPython
# Python スクリプト
import json
import requests
from typing import Dict, List
# <service_url>: サービスエンドポイントに置き換えます。
url = "<service_url>/v1/completions"
prompt = "hello world"
req = {
"prompt": prompt,
"stream": True,
"temperature": 0.0,
"top_p": 0.5,
"top_k": 10,
"max_tokens": 300,
}
response = requests.post(
url,
json=req,
# <Your EAS Token>: サービス Token に置き換えます。
headers={"Content-Type": "application/json", "Authorization": "<Your EAS Token>"},
stream=True,
)
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]['text'], end='', flush=True)リクエストパラメーター構成の説明
パラメーター | 必須 | タイプ | デフォルト値 | 説明 |
model | いいえ | string | なし | モデル名。 LoRA 名を指定するために使用されます。 |
prompt | はい | string | なし | 入力プロンプト。 |
max_tokens | いいえ | integer | 16 | リクエストで生成されるトークンの最大数。 |
echo | いいえ | boolean | False | 生成された結果とともにプロンプトを返すかどうか。 |
seed | いいえ | integer | なし | 乱数シード。 |
stream | いいえ | boolean | False | ストリーミング方式で返された結果を取得するかどうか。 |
temperature | いいえ | number | 1.0 | 生成されるテキストのランダム性と多様性を制御します。値の範囲 [0, 1.0]。 |
top_p | いいえ | number | 1.0 | モデルによって予測されたすべての可能なトークンから、確率の合計が top_p に達する最も可能性の高いトークンを選択します。値の範囲 [0, 1.0]。 |
top_k | いいえ | integer | -1 | 確率が最も高い top_k 個のトークンを保持します。 |
repetition_penalty | いいえ | number | 1.0 | 生成されるテキストの多様性を制御するための重要なパラメーターです。
|
presence_penalty | いいえ | number | 0.0 | 生成されるテキストの語彙の多様性を制御するために使用されます。
|
frequency_penalty | いいえ | number | 0.0 | テキスト生成時に既に現れている単語の繰り返し使用頻度に対するペナルティの度合いを制御するために使用されます。
|
stop (stop_sequences) | いいえ | [string] | なし | テキスト生成中に特定のテキストに遭遇した場合に、モデルに生成を停止するように促すために使用されます。たとえば、["</s>"] です。 |
stop_tokens | いいえ | [int] | なし | テキスト生成中に特定のトークン ID に遭遇した場合に、モデルに生成を停止するように促すために使用されます。 |
ignore_eos | いいえ | boolean | False | テキスト生成時に終了マーカーを無視します。 |
logprobs | いいえ | integer | なし | テキスト生成中に、各出力トークンの候補の確率分布を返します。 |
response_format | いいえ | string | なし | 出力形式を指定するために使用されます。
|
guided_regex | いいえ | string | なし | デコードをガイドするために使用される正規表現。 |
guided_json | いいえ | string (有効な JSON 文字列) | なし | 文字列形式の JSON スキーマ。JSON を生成するためのデコードを制約およびガイドするために使用されます。 |
guided_choice | いいえ | [string] | なし | 指定された出力を生成するようにデコードをガイドするために使用されます。 |
guided_grammar | いいえ | string | なし | デコードをガイドするために使用される EBNF 文法規則。 |
guided_whitespace_pattern | いいえ | string | なし | ガイド付きデコードの JSON モードにおける空白を表す正規表現。 |
戻り結果パラメーターの説明
パラメーター | 説明 | |
id | リクエスト完了の一意の識別子。 | |
model | モデル名。 | |
choices | finish_reason | モデルがトークンの生成を停止した理由。 |
index | インデックス。タイプは Integer です。 | |
logprobs | 予測結果の信頼度を表すために使用されます。詳細なパラメーターの説明については、コンテンツパラメーターの説明を参照してください。 | |
text | 生成されたテキスト。 | |
object | オブジェクトタイプ。 STRING タイプ。デフォルトは text_completion です。 | |
usage | prompt_tokens | 入力プロンプトのトークン数。 |
completion_tokens | 生成または完了されたコンテンツのトークン数。 | |
total_tokens | 入力と出力の両方を含むトークンの総数。 | |
error_info | code | エラーコード。 |
message | エラーメッセージ。 | |
Chat Completions
呼び出し例
コマンドライン
# EAS サービスの呼び出し
# <Your EAS Token> はサービス Token に置き換え、<service_url> はサービスエンドポイントに置き換えます。
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: <Your EAS Token>" \
-d '{
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "Hello!"
}
]
}' \
<service_url>/v1/chat/completionsPython
# Python スクリプト
import json
import requests
from typing import Dict, List
# <service_url>: サービスエンドポイントに置き換えます。
url = "<service_url>/v1/chat/completions"
messages = [{'role': 'system', 'content': 'You are a helpful assistant.'},
{'role': 'user', 'content': 'Hello!'}]
req = {
"messages": messages,
"stream": True,
"temperature": 0.0,
"top_p": 0.5,
"top_k": 10,
"max_tokens": 300,
}
response = requests.post(
url,
json=req,
# <Your EAS Token>: サービス Token に置き換えます。
headers={"Content-Type": "application/json", "Authorization": "<Your EAS Token>"},
stream=True,
)
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)リクエストパラメーター構成の説明
パラメーター | 必須 | タイプ | デフォルト値 | 説明 |
model | いいえ | string | なし | モデル名。LoRA 名を指定するために使用されます。 |
message | いいえ | array | なし | 会話メッセージのリスト。 |
resume_response | いいえ | string | なし | チャットを再開する場合、最初のメッセージを提供し、中断時の返信を渡すことによって会話を続ける必要があります。 |
max_tokens | いいえ | integer | 16 | リクエストで生成されるトークンの最大数。 |
echo | いいえ | boolean | False | 生成された結果とともにプロンプトを返すかどうか。 |
seed | いいえ | integer | なし | 乱数シード。 |
stream | いいえ | boolean | False | ストリーミング方式で返された結果を取得するかどうか。 |
temperature | いいえ | number | 1.0 | 生成されるテキストのランダム性と多様性を制御します。値の範囲 [0, 1.0]。 |
top_p | いいえ | number | 1.0 | モデルによって予測されたすべての可能なトークンから、確率の合計が top_p に達する最も可能性の高いトークンを選択します。値の範囲 [0, 1.0]。 |
top_k | いいえ | integer | -1 | 確率が最も高い top_k 個のトークンを保持します。 |
repetition_penalty | いいえ | number | 1.0 | 生成されるテキストの多様性を制御するための重要なパラメーターです。
|
presence_penalty | いいえ | number | 0.0 | 生成されるテキストの語彙の多様性を制御するために使用されます。
|
frequency_penalty | いいえ | number | 0.0 | テキスト生成時に既に現れている単語の繰り返し使用頻度に対するペナルティの度合いを制御するために使用されます。
|
stop (stop_sequences) | いいえ | string | なし | テキスト生成中に特定のテキストに遭遇した場合に、モデルに生成を停止するように促すために使用されます。 |
stop_tokens | いいえ | [int] | なし | テキスト生成中に特定のトークン ID に遭遇した場合に、モデルに生成を停止するように促すために使用されます。 |
ignore_eos | いいえ | boolean | False | テキスト生成時に終了マーカーを無視します。 |
logprobs | いいえ | integer | なし | テキスト生成中に、各出力トークンの候補の確率分布を返します。 |
top_logprobs | いいえ | integer | なし | 各トークン位置で最も可能性の高いトークン数。 |
response_format | いいえ | string | なし | 出力形式を指定するために使用されます。
|
guided_regex | いいえ | string | なし | デコードをガイドするために使用される正規表現。 |
guided_json | いいえ | string (有効な JSON 文字列) | なし | 文字列形式の JSON スキーマ。 JSON を生成するためのデコードを制約およびガイドするために使用されます。 |
guided_choice | いいえ | [string] | なし | 指定された出力を生成するようにデコードをガイドするために使用されます。 |
guided_grammar | いいえ | string | なし | デコードをガイドするために使用される EBNF 文法規則。 |
guided_whitespace_pattern | いいえ | string | なし | ガイド付きデコードの JSON モードにおける空白を表す正規表現。 |
戻り結果パラメーターの説明
パラメーター | 説明 | |
id | リクエスト完了の一意の識別子。 | |
choices | finish_reason | モデルがトークンの生成を停止した理由。 |
index | インデックス。タイプは integer です。 | |
logprobs | 予測結果の信頼度を表すために使用されます。詳細なパラメーターの説明については、コンテンツパラメーターの説明を参照してください。 | |
message | 非ストリーミングリクエストの戻り結果。モデルによって生成された会話メッセージを表します。 | |
delta | ストリーミングリクエストの戻り結果。リアルタイムモデルによって生成された会話メッセージを表します。 | |
object | オブジェクトタイプ、STRING タイプ、デフォルトは text_completion です。 | |
usage | prompt_tokens | 入力プロンプトのトークン数。 |
completion_tokens | 生成または完了されたコンテンツのトークン数。 | |
total_tokens | 入力と出力の両方を含むトークンの総数。 | |
error_info | code | エラーコード。 |
message | エラーメッセージ。 | |
次のコードは、返された結果の例を示しています。
ストリーミングリクエストの戻り結果
{
"id": "78544a80-6224-4b0f-a0c4-4bad94005eb1",
"choices": [{
"finish_reason": "",
"index": 0,
"logprobs": null,
"delta": {
"role": "assistant",
"content": ""
}
}],
"object": "chat.completion.chunk",
"usage": {
"prompt_tokens": 21,
"completion_tokens": 1,
"total_tokens": 22
},
"error_info": null
}非ストリーミングリクエストの戻り結果
{
"id": "1444c346-3d35-4505-ae73-7ff727d00e8a",
"choices": [{
"finish_reason": "",
"index": 0,
"logprobs": null,
"message": {
"role": "assistant",
"content": "Hello! How can I assist you today?\n"
}
}],
"object": "chat.completion",
"usage": {
"prompt_tokens": 21,
"completion_tokens": 16,
"total_tokens": 37
},
"error_info": null
}