modelslab-chat-generation について
ModelsLab の OpenAI 互換エンドポイントでチャット補完を行うスキルです。複数の LLM を使う開発者向けで、プロンプト、ツール呼び出し、ストリーミング、構造化 JSON に対応します。
主な機能
- 01OpenAI 互換のチャット補完
- 0260 種類以上の LLM モデル
- 03システムプロンプトと複数ターンの会話
- 04ツール呼び出しとストリーミング
- 05構造化 JSON レスポンス
活用シーン
- 01対話型 AI アプリの構築
- 02OpenAI SDK から ModelsLab への切り替え
- 03リアルタイムのテキスト生成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ modelslab/ skills --skill modelslab-chat-generationインストール後、Claude Code で/modelslab-chat-generationを入力して読み込まれたか確認します。
詳細
ModelsLab チャット/LLM 生成
単一の OpenAI 互換エンドポイントを通じて、60 以上の LLM モデルにチャット補完を送信します。
このスキルを使用する場面
- AI モデル(DeepSeek、Llama、Gemini、Qwen、Mistral)とチャットする
- 会話型 AI アプリケーションを構築する
- システムプロンプトを使ってテキスト補完を生成する
- LLM で関数/ツール呼び出しを使用する
- リアルタイム出力のためにレスポンスをストリーミングする
- 構造化された JSON レスポンスを取得する
API エンドポイント
チャット補完:POST https://modelslab.com/api/v7/llm/chat/completions
このエンドポイントは OpenAI のチャット補完形式に準拠しているため、OpenAI から簡単に切り替えたり、OpenAI SDK を使用したりできます。
クイックスタート
import requests
def chat(message, api_key, model="meta-llama-3-8B-instruct"):
"""Send a chat completion request.
Args:
message: The user message
api_key: Your ModelsLab API key
model: LLM model ID (use modelslab models search --feature llmaster to find models)
"""
response = requests.post(
"https://modelslab.com/api/v7/llm/chat/completions",
json={
"key": api_key,
"model_id": model,
"messages": [
{"role": "user", "content": message}
],
"max_tokens": 200,
"temperature": 0.7
}
)
data = response.json()
if "choices" in data:
return data["choices"][0]["message"]["content"]
else:
raise Exception(f"Error: {data.get('message', 'Unknown error')}")
# Usage
reply = chat(
"Explain quantum computing in simple terms.",
"your_api_key"
)
print(reply)
システムプロンプトを使用する場合
def chat_with_system(system_prompt, message, api_key, model="meta-llama-3-8B-instruct"):
"""Chat with a system prompt for role/behavior control."""
response = requests.post(
"https://modelslab.com/api/v7/llm/chat/completions",
json={
"key": api_key,
"model_id": model,
"messages": [
{"role": "system", "content": system_prompt},
{"role": "user", "content": message}
],
"max_tokens": 500,
"temperature": 0.7
}
)
data = response.json()
if "choices" in data:
return data["choices"][0]["message"]["content"]
# Usage
reply = chat_with_system(
"You are a Python expert. Give concise code examples.",
"How do I read a CSV file?",
"your_api_key"
)
マルチターンの会話
def conversation(messages, api_key, model="meta-llama-3-8B-instruct"):
"""Send a multi-turn conversation."""
response = requests.post(
"https://modelslab.com/api/v7/llm/chat/completions",
json={
"key": api_key,
"model_id": model,
"messages": messages,
"max_tokens": 500,
"temperature": 0.7
}
)
return response.json()
# Multi-turn example
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "What is Python?"},
{"role": "assistant", "content": "Python is a high-level programming language..."},
{"role": "user", "content": "Show me a hello world example."}
]
result = conversation(messages, "your_api_key")
print(result["choices"][0]["message"]["content"])
OpenAI SDK との互換性
ベース URL と API キーを変更することで、公式の OpenAI Python SDK を使用できます。
from openai import OpenAI
client = OpenAI(
base_url="https://modelslab.com/api/v7/llm",
api_key="your_modelslab_api_key"
)
response = client.chat.completions.create(
model="meta-llama-3-8B-instruct",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello!"}
],
max_tokens=100,
temperature=0.7
)
print(response.choices[0].message.content)
cURL の例
curl -X POST "https://modelslab.com/api/v7/llm/chat/completions" \
-H "Content-Type: application/json" \
-d '{
"key": "your_api_key",
"model_id": "meta-llama-3-8B-instruct",
"messages": [
{"role": "user", "content": "Say hello in one sentence."}
],
"max_tokens": 50,
"temperature": 0.7
}'
LLM モデルの検索
# Search all chat/LLM models
modelslab models search --feature llmaster
# Search by provider
modelslab models search --search "deepseek"
modelslab models search --search "llama"
modelslab models search --search "gemini"
# Get model details
modelslab models detail --id meta-llama-3-8B-instruct
人気の LLM モデル ID
Meta Llama
meta-llama-3-8B-instruct— Llama 3 8B(高速、効率的)meta-llama-Llama-3.3-70B-Instruct-Turbo— Llama 3.3 70B(高性能)meta-llama-Meta-Llama-3.1-405B-Instruct-Turbo— Llama 3.1 405B(最大規模)
DeepSeek
deepseek-ai-DeepSeek-R1-Distill-Llama-70B— DeepSeek R1(推論)deepseek-ai-DeepSeek-V3— DeepSeek V3(汎用)
gemini-2.0-flash-001— Gemini 2.0 Flash(高速)gemini-2.5-pro— Gemini 2.5 Pro(高性能)
Qwen
Qwen-Qwen2.5-72B-Instruct-Turbo— Qwen 2.5 72BQwen-Qwen2.5-Coder-32B-Instruct— Qwen 2.5 Coder
Mistral
mistralai-Mixtral-8x7B-Instruct-v0.1— Mixtral 8x7Bmistralai-Mistral-Small-24B-Instruct-2501— Mistral Small
主なパラメーター
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
model_id | string | はい | LLM モデル識別子(別名:model) |
messages | array | はい | role と content を含むメッセージオブジェクトの配列 |
temperature | float | いいえ | サンプリング温度(0~2、デフォルト値はモデルによって異なります) |
max_tokens | integer | いいえ | 生成するトークンの最大数 |
top_p | float | いいえ | ニュークリアスサンプリング(0~1) |
top_k | integer | いいえ | Top-k サンプリング |
frequency_penalty | float | いいえ | 頻度ペナルティ(-2~2) |
presence_penalty | float | いいえ | 存在ペナルティ(-2~2) |
streaming | boolean | いいえ | ストリーミングレスポンスを有効にします(別名:stream) |
n | integer | いいえ | 補完の数(1~10) |
stop | array | いいえ | 停止シーケンス(最大 4 個) |
seed | integer | いいえ | 再現性のための乱数シード |
tools | array | いいえ | 関数/ツールの定義 |
tool_choice | string | いいえ | ツール選択方法 |
response_format | object | いいえ | JSON モードの場合は {"type": "json_object"} |
レスポンス形式
レスポンスは OpenAI のチャット補完形式に準拠しています。
{
"id": "gen-...",
"model": "meta-llama-3-8B-instruct",
"object": "chat.completion",
"created": 1771658583,
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "Hello! How can I help you today?"
}
}
],
"usage": {
"prompt_tokens": 17,
"completion_tokens": 10,
"total_tokens": 27
}
}
エラー処理
def safe_chat(message, api_key, model="meta-llama-3-8B-instruct"):
"""Chat with error handling."""
try:
response = requests.post(
"https://modelslab.com/api/v7/llm/chat/completions",
json={
"key": api_key,
"model_id": model,
"messages": [{"role": "user", "content": message}],
"max_tokens": 200
}
)
data = response.json()
if "choices" in data:
return data["choices"][0]["message"]["content"]
elif data.get("status") == "error":
raise Exception(data.get("message", "Unknown error"))
else:
raise Exception(f"Unexpected response: {data}")
except requests.exceptions.RequestException as e:
raise Exception(f"Network error: {e}")
try:
reply = safe_chat("Hello!", "your_api_key")
print(reply)
except Exception as e:
print(f"Chat failed: {e}")
リソース
- API ドキュメント:https://docs.modelslab.com/uncensored-chat-api/overview
- モデル一覧:https://modelslab.com/models
- API キーの取得:https://modelslab.com/dashboard/api-keys
- CLI ツール:https://github.com/ModelsLab/modelslab-cli
関連スキル
modelslab-model-discovery- モデルを検索して絞り込むmodelslab-account-management- API キーと請求を管理するmodelslab-image-generation- テキストから画像を生成する
コメント
Markdown 対応