ドキュメンテーション

はじめに

エージェントフロー

テキスト埋め込み

トークン化

モデルの管理

モデル情報

テキスト補完

ロードされた言語モデルからテキスト補完を生成するには、llm.complete(...)を使用します。テキスト補完とは、フォーマットされていない文字列をモデルに送信し、モデルがテキストを補完することを期待するものです。

これは、複数ターンにわたるチャット会話とは異なります。チャット補完の詳細については、チャット補完をご覧ください。

1. モデルのインスタンス化

まず、補完を生成するためのモデルをロードする必要があります。これは、トップレベルのllmコンビニエンスAPIを使用するか、スコープ付きリソースAPIを使用する場合にllm名前空間内のmodelメソッドを使用することで行うことができます。例えば、Qwen2.5 7B Instructの使用方法は以下のとおりです。

import lmstudio as lms
model = lms.llm("qwen2.5-7b-instruct")

2. 補完の生成

モデルをロードしたら、llmハンドル上のcompleteメソッドに文字列を渡すことで補完を生成できます。

# The `chat` object is created in the previous step.
result = model.complete("My name is", config={"maxTokens": 100})

print(result)

3. 予測統計の出力

生成に使用されたモデル、生成されたトークンの数、最初のトークンまでの時間、停止理由など、予測のメタデータも出力できます。

# `result` is the response from the model.
print("Model used:", result.model_info.display_name)
print("Predicted tokens:", result.stats.predicted_tokens_count)
print("Time to first token (seconds):", result.stats.time_to_first_token_sec)
print("Stop reason:", result.stats.stop_reason)

例: LLMにターミナルをシミュレートさせる

ここでは、completeメソッドを使用してターミナルをシミュレートする方法の例を示します。

import lmstudio as lms

model = lms.llm()
console_history = []

while True:
    try:
        user_command = input("$ ")
    except EOFError:
        print()
        break
    if user_command.strip() == "exit":
        break
    console_history.append(f"$ {user_command}")
    history_prompt = "\n".join(console_history)
    prediction_stream = model.complete_stream(
        history_prompt,
        config={ "stopStrings": ["$"] },
    )
    for fragment in prediction_stream:
        print(fragment.content, end="", flush=True)
    print()
    console_history.append(prediction_stream.result().content)

推論パラメータのカスタマイズ

.complete()configキーワードパラメータを介して、推論パラメータを渡すことができます。

prediction_stream = model.complete_stream(initial_text, config={
    "temperature": 0.6,
    "maxTokens": 50,
})

設定可能な内容の詳細については、モデルの設定をご覧ください。

プログレスコールバック

長いプロンプトは、最初のトークンまでに時間がかかることがよくあります。つまり、モデルがプロンプトを処理するのに長い時間がかかります。このプロセスの進捗状況に関する更新を取得したい場合は、プロンプト処理の進捗状況を0.0〜1.0の浮動小数点数で受け取るフロートコールバックをcompleteに提供できます。

import lmstudio as lms

llm = lms.llm()

completion = llm.complete(
    "My name is",
    on_prompt_processing_progress = (lambda progress: print(f"{progress*100}% complete")),
)

on_prompt_processing_progressに加えて、利用可能なその他のプログレスコールバックは次のとおりです。

  • on_first_token: プロンプト処理が完了し、最初のトークンが発行された後に呼び出されます。引数は受け取りません(トークンが発行されるときに処理するには、ストリーミングイテレーションAPIまたはon_prediction_fragmentを使用します)。
  • on_prediction_fragment: クライアントが受信した各予測フラグメントに対して呼び出されます。ストリームイテレーションAPIを反復処理する場合と同じ予測フラグメントを受け取ります。
  • on_message: 予測が完了したときに、アシスタント応答メッセージとともに呼び出されます。受信したメッセージをチャット履歴インスタンスに追加することを目的としています。