Files
miku-discord/readmes/JAPANESE_MODE_QUICK_START.md

149 lines
4.0 KiB
Markdown
Raw Permalink Normal View History

# Japanese Mode - Quick Reference for Web UI
## What Was Implemented
A **language toggle system** for the Miku bot that switches between:
- **English Mode** (Default) - Uses standard Llama 3.1 model
- **Japanese Mode** - Uses Llama 3.1 Swallow model, responds entirely in Japanese
## API Endpoints
### 1. Check Language Status
```
GET /language
```
Response:
```json
{
"language_mode": "english",
"available_languages": ["english", "japanese"],
"current_model": "llama3.1"
}
```
### 2. Toggle Language (English ↔ Japanese)
```
POST /language/toggle
```
Response:
```json
{
"status": "ok",
"language_mode": "japanese",
"model_now_using": "swallow",
"message": "Miku is now speaking in JAPANESE!"
}
```
### 3. Set Specific Language
```
POST /language/set?language=japanese
```
or
```
POST /language/set?language=english
```
Response:
```json
{
"status": "ok",
"language_mode": "japanese",
"model_now_using": "swallow",
"message": "Miku is now speaking in JAPANESE!"
}
```
## Web UI Integration
Add a simple toggle button to your web UI:
```html
<button onclick="toggleLanguage()">🌐 Toggle Language</button>
<div id="language-status">English</div>
<script>
async function toggleLanguage() {
const response = await fetch('/language/toggle', { method: 'POST' });
const data = await response.json();
document.getElementById('language-status').textContent =
data.language_mode.toUpperCase();
}
async function getLanguageStatus() {
const response = await fetch('/language');
const data = await response.json();
document.getElementById('language-status').textContent =
data.language_mode.toUpperCase();
}
// Check status on load
getLanguageStatus();
</script>
```
## Design Approach
**Why no full translation of prompts?**
Instead of translating all Miku's personality prompts to Japanese, we:
1. **Keep English context** - Helps the Swallow model understand Miku's personality better
2. **Append language instruction** - Add "Respond entirely in Japanese (日本語)" to the prompt
3. **Let Swallow handle it** - The model is trained for Japanese and understands English instructions
**Benefits:**
- ✅ Minimal implementation effort
- ✅ No translation maintenance needed
- ✅ Model still understands Miku's complete personality
- ✅ Can easily expand to other languages
- ✅ Works perfectly for instruction-based language switching
## How the Bot Behaves
### English Mode
- Responds in English
- Uses standard Llama 3.1 model
- All personality and context in English
- Emoji reactions work as normal
### Japanese Mode
- Responds entirely in 日本語 (Japanese)
- Uses Llama 3.1 Swallow model (trained on Japanese text)
- Understands English context but responds in Japanese
- Maintains same personality and mood system
## Testing the Implementation
1. **Default behavior** - Miku speaks English
2. **Toggle once** - Miku switches to Japanese
3. **Send message** - Check if response is in Japanese
4. **Toggle again** - Miku switches back to English
5. **Send message** - Confirm response is in English
## Technical Details
| Component | English | Japanese |
|-----------|---------|----------|
| Text Model | `llama3.1` | `swallow` |
| Prompts | miku_prompt.txt | miku_prompt_jp.txt |
| Lore | miku_lore.txt | miku_lore_jp.txt |
| Lyrics | miku_lyrics.txt | miku_lyrics_jp.txt |
| Language Instruction | None | "Respond in 日本語 only" |
## Notes
- Language mode is **global** (affects all users/servers)
- If you need **per-server language settings**, store mode in `servers_config.json`
- Evil mode takes priority over language mode if both are active
- Conversation history stores both English and Japanese messages seamlessly
- Vision model always uses NVIDIA GPU (language mode doesn't affect vision)
## Future Improvements
1. Save language preference to `memory/servers_config.json`
2. Add `LANGUAGE_MODE` to per-server settings
3. Create per-channel language support
4. Add language auto-detection from user messages
5. Create fully translated Japanese prompt files for better accuracy