mcpField
M
modelslab-chat-generation

modelslab-chat-generation

github.com/modelslabエージェントワークフロー1356 回インストール36 週間前に更新
リポジトリ

modelslab-chat-generation について

ModelsLab の OpenAI 互換エンドポイントでチャット補完を行うスキルです。複数の LLM を使う開発者向けで、プロンプト、ツール呼び出し、ストリーミング、構造化 JSON に対応します。

主な機能

  1. 01OpenAI 互換のチャット補完
  2. 0260 種類以上の LLM モデル
  3. 03システムプロンプトと複数ターンの会話
  4. 04ツール呼び出しとストリーミング
  5. 05構造化 JSON レスポンス

活用シーン

  1. 01対話型 AI アプリの構築
  2. 02OpenAI SDK から ModelsLab への切り替え
  3. 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(汎用)
Google
  • 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 72B
  • Qwen-Qwen2.5-Coder-32B-Instruct — Qwen 2.5 Coder
Mistral
  • mistralai-Mixtral-8x7B-Instruct-v0.1 — Mixtral 8x7B
  • mistralai-Mistral-Small-24B-Instruct-2501 — Mistral Small

主なパラメーター

パラメーター型必須説明
model_idstringはいLLM モデル識別子(別名:model)
messagesarrayはいrole と content を含むメッセージオブジェクトの配列
temperaturefloatいいえサンプリング温度(0~2、デフォルト値はモデルによって異なります)
max_tokensintegerいいえ生成するトークンの最大数
top_pfloatいいえニュークリアスサンプリング(0~1)
top_kintegerいいえTop-k サンプリング
frequency_penaltyfloatいいえ頻度ペナルティ(-2~2)
presence_penaltyfloatいいえ存在ペナルティ(-2~2)
streamingbooleanいいえストリーミングレスポンスを有効にします(別名:stream)
nintegerいいえ補完の数(1~10)
stoparrayいいえ停止シーケンス(最大 4 個)
seedintegerいいえ再現性のための乱数シード
toolsarrayいいえ関数/ツールの定義
tool_choicestringいいえツール選択方法
response_formatobjectいいえ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}")

リソース

関連スキル

  • modelslab-model-discovery - モデルを検索して絞り込む
  • modelslab-account-management - API キーと請求を管理する
  • modelslab-image-generation - テキストから画像を生成する

コメント