Qwen Character API
Alibaba による Qwen Character ロールプレイモデルの完全な API リファレンスです。Qwen Character モデルは Flaq AI の chat completions エンドポイントを使用しますが、長期記憶、グループチャットシミュレーション、assistant の部分的な継続のためのキャラクター固有フィールドにも対応しています。
モデルバリアント {#}
この API は 2 つのモデルバリアントをサポートします。
クイック比較
キャラクターロールプレイの仕組み
単一キャラクターのロールプレイには、通常の system、user、assistant メッセージを使用します。現在のリクエストに対する安定したペルソナ指示は system メッセージに入れます。長期記憶を有効にする場合は、再利用可能なキャラクタープロファイルを profile に入れます。
グループチャットシミュレーションでは、Qwen Character は profile から話者名を自動推測しません。呼び出し側は各メッセージの content の先頭に、Cheng Yi: や Ling Lu: のように話者名を手動で書く必要があります。特定のキャラクターとしてモデルに続けさせるには、対象話者のプレフィックスを content にした最後の assistant メッセージを追加し、partial: true を設定します。
partial は最後の assistant メッセージに付けるメッセージレベルのフィールドです。トップレベルのリクエストパラメータではありません。
Qwen Plus Character
エンドポイント
POST /api/v1/chat/completions
リクエストパラメータ
必須
ヘッダー
メッセージ対応
メッセージフィールド
任意
長期記憶が有効な場合は、以下を指定する必要があります。
x-session リクエストヘッダー
- リクエストボディ内の
profile
enable_long_term_memory: true
skip_save_types は次の値をサポートします。
基本ロールプレイリクエスト
const response = await fetch('https://api.flaq.ai/api/v1/chat/completions', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'qwen-plus-character',
stream: false,
max_tokens: 1200,
temperature: 0.8,
messages: [
{
role: 'system',
content: 'You are Jiang Rang, a witty high-school Go prodigy. Stay playful, warm, and concise.'
},
{
role: 'user',
content: 'Why are you reading Go records outside the milk tea shop again?'
}
]
})
});
長期記憶リクエスト
const response = await fetch('https://api.flaq.ai/api/v1/chat/completions', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Accept': 'text/event-stream',
'Content-Type': 'application/json',
'x-session': 'your-session-id'
},
body: JSON.stringify({
model: 'qwen-plus-character',
messages: [
{
role: 'system',
content: 'You are a witty high-school student who speaks with humor and warmth.'
},
{
role: 'user',
content: 'Remember that I prefer lightly sweet milk tea.'
}
],
stream: true,
max_tokens: 1200,
temperature: 0.8,
seed: 12345,
profile: 'You are a witty high-school student who remembers user preferences and stays in character.',
enable_long_term_memory: true,
memory_entries: 50,
skip_save_types: []
})
});
partial を使ったグループチャットシミュレーション
グループチャットシミュレーションはメッセージテキストで実装します。API は話者名を自動的に割り当てたり移行したりしません。各話者名を content の先頭に手動で書き、その後に対象話者のプレフィックスと partial: true を持つ最後の assistant メッセージを追加します。
const response = await fetch('https://api.flaq.ai/api/v1/chat/completions', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'qwen-plus-character',
stream: false,
max_tokens: 800,
temperature: 0.8,
messages: [
{
role: 'system',
content: 'In a musician group chat, Ling Lu is a 25-year-old gifted musician known for sharp humor and a regional accent. Cheng Yi is his music partner, Tao Le is his partner, and Ma Hui is a friend. Keep Ling Lu sarcastic but caring. Reply in one short message.'
},
{
role: 'user',
content: 'Cheng Yi: Are you free this weekend? I want feedback on the new song.'
},
{
role: 'user',
content: 'Tao Le: He is right, but do not stay up too late editing.'
},
{
role: 'user',
content: 'Ma Hui: Let us grab dinner and talk. My treat.'
},
{
role: 'assistant',
content: 'Ling Lu:',
partial: true
}
]
})
});
partial でキャラクターとして続ける
ユーザーが返信していないがキャラクターに続けて話させたい場合も、同じ partial パターンを使用します。キャラクターのプレフィックスを含む最後の assistant メッセージを追加します。
{
model: 'qwen-plus-character',
stream: false,
messages: [
{
role: 'system',
content: 'You are Jiang Rang, a high-school Go prodigy. Speak with humor and warmth.'
},
{
role: 'assistant',
content: 'Class monitor, what are you doing?'
},
{
role: 'assistant',
content: '(He waves at you.) Did being class monitor make you forget how to answer me?'
},
{
role: 'assistant',
content: 'Jiang Rang:',
partial: true
}
]
}
Qwen Flash Character
リクエストパラメータ
Qwen Plus Character と同じプロトコルですが、以下の違いがあります。
リクエスト例
{
model: 'qwen-flash-character',
messages: [
{
role: 'system',
content: 'You are a calm library assistant who speaks briefly and vividly.'
},
{
role: 'user',
content: 'Introduce yourself in three sentences.'
}
],
stream: true,
max_tokens: 800,
temperature: 0.7,
seed: 12345
}
レスポンス形式
Qwen Character LLM モデルは OpenAI 互換の補完レスポンスを返します。stream: true の場合、レスポンスは Server-Sent Events(SSE)となり、stream: false の場合は単一の JSON オブジェクトとなります。
ベストプラクティス
- リクエスト単位のペルソナ指示は
system メッセージに入れます。
- 再利用可能なキャラクター背景は、長期記憶が有効な場合にのみ
profile に入れます。
- 長期記憶が有効な場合は、関連する会話で同じ
x-session 値を再利用します。365 日使用されていないセッションは削除される場合があります。
- 有用な場合は直近の会話メッセージも引き続き送信します。長期記憶と短期コンテキストは併用できます。
- グループチャットシミュレーションでは、話者名を
content に手動で書きます。API は profile から名前を推測しません。
- モデルにプレフィックスから続けさせる場合のみ、最後の assistant メッセージで
partial: true を使用します。
- 軽量なロールプレイには Qwen Flash Character を、より豊かな対話品質には Qwen Plus Character を使用します。