Text Generation
Transformers
Safetensors
Japanese
English
conversational
Inference Endpoints
DeL-TaiseiOzaki's picture
Update README.md
96e7159 verified
metadata
license: apache-2.0
language:
  - ja
  - en
base_model:
  - llm-jp/llm-jp-3-13b
pipeline_tag: text-generation
library_name: transformers
datasets:
  - DeL-TaiseiOzaki/Tengentoppa-sft-elyza-news-specialized
  - DeL-TaiseiOzaki/Tengentoppa-sft-reasoning-v2.0
  - DeL-TaiseiOzaki/Tengentoppa-sft-base-v1.0

Enhanced LLM-JP Model with Extended Tokenizer and Chat Template

This is an enhanced version of llm-jp-13B with an extended tokenizer that includes additional special tokens for structured conversations and advanced prompting.

image/jpg

Model Information

  • Base Model: llm-jp-13B
  • Added Features: Extended tokenizer with special tokens for structured conversations and chat template
  • Vocabulary Size: Extended from the base model

Special Tokens

Basic Tokens

  • UNK Token: {token_config.unk_token}
  • BOS Token: {token_config.bos_token}
  • EOS Token: {token_config.eos_token}
  • PAD Token: {token_config.pad_token}
  • CLS Token: {token_config.cls_token}
  • SEP Token: {token_config.sep_token}
  • MASK Token: {token_config.mask_token}

Conversation Structure Tokens

  • System: {token_config.system_token} and {token_config.system_end_token}
  • User: {token_config.user_token} and {token_config.user_end_token}
  • Assistant: {token_config.assistant_token} and {token_config.assistant_end_token}

Reasoning Process Tokens

  • Reasoning: {token_config.reasoning_token} and {token_config.reasoning_end_token}
  • Solution: {token_config.solution_token} and {token_config.solution_end_token}
  • Response: {token_config.response_token} and {token_config.response_end_token}

Hint and Supplementary Information Tokens

  • Hint: {token_config.hint_token} and {token_config.hint_end_token}
  • Note: {token_config.note_token} and {token_config.note_end_token}
  • Context: {token_config.context_token} and {token_config.context_end_token}
  • Reference: {token_config.reference_token} and {token_config.reference_end_token}
  • Example: {token_config.example_token} and {token_config.example_end_token}

Control Tokens

  • Important: {token_config.important_token} and {token_config.important_end_token}
  • Warning: {token_config.warning_token} and {token_config.warning_end_token}
  • Error: {token_config.error_token} and {token_config.error_end_token}

Chat Template Usage

このモデルは以下の役割(roles)をサポートしています:

  • system: システムプロンプト用
  • user: ユーザーの入力用
  • hint: ヒントやガイダンス用
  • reasoning: 推論プロセス用
  • assistant: アシスタントの応答用

Basic Usage:

from transformers import AutoModelForCausalLM, AutoTokenizer

model = AutoModelForCausalLM.from_pretrained("{model_name}")
tokenizer = AutoTokenizer.from_pretrained("{model_name}")

# チャット形式での使用例
messages = [
    {
        "role": "system",
        "content": "あなたは親切で有能なAIアシスタントです。"
    },
    {
        "role": "user",
        "content": "次の数学の問題を解いてください:2x + 3 = 7"
    },
    {
        "role": "hint",
        "content": "方程式を解くときは、まず両辺から数を移項することを考えてみましょう。"
    },
    {
        "role": "reasoning",
        "content": "この方程式を解くために以下のステップで考えます:\\n1. 3を両辺から引く\\n2. 両辺を2で割る"
    },
    {
        "role": "assistant",
        "content": "x = 2 が方程式の解です。"
    }
]

# チャットテンプレートを使用してメッセージを整形
prompt = tokenizer.apply_chat_template(messages, tokenize=False)
print("\\nGenerated prompt:\\n", prompt)

# トークン化と推論
inputs = tokenizer(prompt, return_tensors="pt", max_length=2048, truncation=True)
outputs = model.generate(**inputs, max_length=2048, temperature=0.7)
response = tokenizer.decode(outputs[0])
print("\\nModel response:\\n", response)

Advanced Usage:

カスタムシステムメッセージを使用

messages = [ { "role": "system", "content": "あなたは数学の専門家です。" }, { "role": "user", "content": "二次方程式 x² - 4x + 4 = 0 を解いてください。" } ]

生成プロンプトを追加せずにテンプレートを適用

prompt = tokenizer.apply_chat_template( messages, tokenize=False, add_generation_prompt=False )

手動でヒントを追加

prompt += "\n<|HINT|>因数分解を使うと簡単に解けるかもしれません。</|HINT|>"

手動で推論プロセスを追加

prompt += "\n<|REASONING|>1. この式は(x-2)²の形に似ています\n2. 実際に展開すると同じ式になります</|REASONING|>"

アシスタントの応答用のプロンプトを追加

prompt += "\n<|ASSISTANT|>"

以降は通常通り処理

inputs = tokenizer(prompt, return_tensors="pt", max_length=2048, truncation=True)


## Chat Template Specification

モデルのチャットテンプレートは以下の要素を含みます:
- 5つの異なるロール(system, user, hint, reasoning, assistant)
- 各ロールに対応する特殊トークン
- デフォルトのシステムメッセージ
- 柔軟なテンプレート構造

特徴:
- メッセージの順序は保持されます
- 各ロールは明確に区別されます
- システムメッセージは任意です
- ヒントと推論は必要に応じて追加できます

## Additional Notes

### トークナイザーの拡張について
- 元のトークナイザーの全機能を保持
- 新しい特殊トークンの追加による機能拡張
- チャットテンプレートによる構造化された会話のサポート

### 使用上の注意
- 特殊トークンは必要な場合にのみ使用してください
- 特殊トークのスキップをTrueにしないでください.
- チャットテンプレートは柔軟に調整可能です
- システムメッセージは対話の文脈に応じてカスタマイズできます