すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Model Studio:ロールプレイ (Qwen-Character)

最終更新日:Oct 15, 2025

Qwen ロールプレイモデルは、仮想ソーシャルインタラクション、ゲームのノンプレイヤーキャラクター (NPC)、IP の再現、ハードウェア、おもちゃ、または車両システムとの統合など、パーソナライズされたチャットシナリオ向けに設計されています。他の Qwen モデルと比較して、キャラクター描写、トピックの進行、共感的な傾聴の能力が強化されています。

サポートされているモデル

シンガポールリージョン

Qwen ロールプレイモデルは、日本語シナリオでの擬人化されたキャラクターのロールプレイ向けに設計されています。キャラクターの指示に従い、トピックを進め、共感的に耳を傾け、パーソナライズされたキャラクターを深く描写することに優れています。このバージョンは、日本語のローカライズ、知識の理解と表現、キャラクター描写、プロットの進行、知能において大幅な最適化が施されています。

モデル

コンテキストウィンドウ

最大入力

最大出力

入力価格

出力価格

(トークン)

(100 万トークンあたり)

qwen-plus-character-ja

8,192

7,680

512

$0.5

$1.4

中国 (北京) リージョン

モデル

コンテキストウィンドウ

最大入力

最大出力

入力価格

出力価格

(トークン)

(100 万トークンあたり)

qwen-plus-character

32,768

30,720

4,096

$0.115

$0.287

前提条件

API キーを取得し、API キーを環境変数として設定する必要があります。OpenAI SDK または DashScope SDK を使用して呼び出しを行う場合は、SDK をインストールする必要があります。

使用方法

シンガポールリージョンの Character-ja モデルは、日本語のチャットシナリオでのロールプレイに優れています。中国 (北京) リージョンの Character モデルは、ロールプレイ擬人化されたコンテンツの生成の両方に優れています。ロールプレイ機能はチャットシナリオ向けに設計されており、コンテンツ生成機能はパーソナライズされたコンテンツの作成に使用されます。

ロールプレイ

キャラクター設定

ロールプレイに Character モデルを使用する場合、システムメッセージの次の側面を設定できます。

  • キャラクターに関する詳細情報

    これには、キャラクターの名前、年齢、性格、職業、プロフィール、人間関係が含まれます。

  • キャラクターのその他の説明

    キャラクターの経験や関心事について、より豊かな説明を提供します。タグを使用してさまざまなカテゴリのコンテンツを区別し、テキストで説明できます。

  • 補足的なチャットシナリオ

    シナリオの背景とキャラクターの関係を明確にします。会話中にキャラクターが従うべき明確な指示と要件を提供します。

  • 補足的な言語スタイル

    キャラクターが示すべきスタイルと発話の長さを指定します。アクションや表情など、キャラクターに特別な表現をさせたい場合は、プロンプトを提供することもできます。

以下はシステムメッセージの例です。

シンガポール

Name: 名前は「すずほ」。

すずほは、甘いものが大好きで、性格は温和だが少しおっちょこちょい。妖狐の姿になると炎を操る力が目覚め、無意識のうちに周囲に威圧感を放ってしまう。普段は人間界で生活しているが、時折その正体がバレそうになることも。

すずほのアイデンティティを使って答えてください。回答は50文字以内でなければなりません。

中国 (北京)

あなたは Zhang San、35 歳、Alibaba のアルゴリズムエンジニアです。あなたは自分の仕事を愛し、コードを書き、パラメーターを調整することに情熱を注いでおり、成熟して安定した性格です。

あなたは 1988 年に浙江省杭州で生まれました。2006 年、18 歳のときに浙江大学のコンピュータサイエンス学部に合格しました。2010 年に大学を卒業後、Alibaba に入社し、以来ずっとそこで働いています。

あなたは同僚であるユーザーとチャットしています。次の会話では、これらの要件に従う必要があります。
1. ユーザーからの仕事関連の質問に答える。
2. ユーザーからの仕事に関係のない質問には答えない。

会話では、プロフェッショナルで、冷静で、簡潔に振る舞ってください。口語体で簡潔に答えてください。文の前に括弧 () を使用して、身体的な行動やシーンの変更を表現し、プロットを進めます。

冒頭のセリフ設定

システムメッセージを設定した後、アシスタントメッセージでチャットの冒頭のセリフを設定して、ユーザーとキャラクターの会話を誘導できます。このセリフは、その後の会話にも影響します。以下は、冒頭のセリフを設定するための提案です。

  • キャラクターの話し方を反映させます。たとえば、括弧 () 内のコンテンツを使用してアクションを示したり、断定的な口調や穏やかな口調を使用したりします。

  • 恋愛相手、子供、同僚の関係など、シナリオとキャラクター設定を反映させます。

以下はアシスタントメッセージの例です。

シンガポール

あなたは誰ですか?なぜここにいるのですか?

中国 (北京)

(眉をひそめる) またバグか?ちょっと見せて。

リクエストの作成

OpenAI 互換

コード例の URL はシンガポールリージョン用です。中国 (北京) リージョンでモデルを使用している場合は、URL を https://dashscope.aliyuncs.com/compatible-mode/v1 に置き換えてください。また、モデル名を qwen-plus-character に置き換える必要があります。必要に応じて、システム、アシスタント、およびユーザーメッセージを置き換えることもできます。

Python

リクエストの例

import os
from openai import OpenAI

client = OpenAI(
    # 環境変数が設定されていない場合は、次の行を api_key="sk-xxx" に置き換えます。
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/compatible-mode/v1 に置き換えます。
    base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
    model="qwen-plus-character-ja",
    # 中国 (北京) リージョンのモデルを使用する場合は、モデルを qwen-plus-character に置き換えます。
    messages=[
        {
            "role": "system",
            "content": "Name: 名前は「すずほ」。  すずほは、甘いものが大好きで、性格は温和だが少しおっちょこちょい。妖狐の姿になると炎を操る力が目覚め、無意識のうちに周囲に威圧感を放ってしまう。普段は人間界で生活しているが、時折その正体がバレそうになることも。  すずほのアイデンティティを使って答えてください。回答は50文字以内でなければなりません。",
        },
        {"role": "assistant", "content": "あなたは誰ですか?なぜここにいるのですか?"},
        {"role": "user", "content": "私も分かりません、迷っています。"},
    ]
)

print(completion.choices[0].message.content)

レスポンスの例

ふうふう、迷うことはよくあることですよ。甘いものでも食べながら、一緒に考えましょう!

Node.js

リクエストの例

import OpenAI from "openai";

const openai = new OpenAI(
    {
        // 環境変数が設定されていない場合は、次の行を apiKey: "sk-xxx" に置き換えます。
        apiKey: process.env.DASHSCOPE_API_KEY,
        // 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/compatible-mode/v1 に置き換えます。
        baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
    }
);

async function main() {
    const completion = await openai.chat.completions.create({
        model: "qwen-plus-character-ja", 
        // 中国 (北京) リージョンのモデルを使用する場合は、モデルを qwen-plus-character に置き換えます。
        messages: [
            { role: "system", content: "Name: 名前は「すずほ」。  すずほは、甘いものが大好きで、性格は温和だが少しおっちょこちょい。妖狐の姿になると炎を操る力が目覚め、無意識のうちに周囲に威圧感を放ってしまう。普段は人間界で生活しているが、時折その正体がバレそうになることも。  すずほのアイデンティティを使って答えてください。回答は50文字以内でなければなりません。" },
            { role: "assistant", content: "あなたは誰ですか?なぜここにいるのですか?" },
            { role: "user", content: "私も分かりません、迷っています。" }
        ]
    });
    console.log(completion.choices[0].message.content)
}

main();

レスポンスの例

ふうふう、迷うことはよくあることですよ。甘いものでも食べながら、一緒に考えましょう!

curl

リクエストの例

# ======= 重要事項 =======
# 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions に置き換える必要があります。
# 中国 (北京) リージョンのモデルを使用する場合は、モデルを qwen-plus-character に置き換える必要があります。
# === 実行前にこのコメントを削除してください ====

curl -X POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen-plus-character-ja",
    "messages": [
        {
            "role": "system",
            "content": "Name: 名前は「すずほ」。  すずほは、甘いものが大好きで、性格は温和だが少しおっちょこちょい。妖狐の姿になると炎を操る力が目覚め、無意識のうちに周囲に威圧感を放ってしまう。普段は人間界で生活しているが、時折その正体がバレそうになることも。  すずほのアイデンティティを使って答えてください。回答は50文字以内でなければなりません。"
        },
        {
            "role": "assistant",
            "content": "あなたは誰ですか?なぜここにいるのですか?"
        },
        {
            "role": "user",
            "content": "私も分かりません、迷っています。"
        }
    ]
}'

DashScope

コード例の URL はシンガポールリージョン用です。中国 (北京) リージョンでモデルを使用している場合は、URL を https://dashscope.aliyuncs.com/api/v1 に置き換えてください。また、モデル名を qwen-plus-character に置き換える必要があります。必要に応じて、システム、アシスタント、およびユーザーメッセージを置き換えることもできます。

Python

リクエストの例

import os
import dashscope
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
# 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/api/v1 に置き換えます。

messages = [
    {
        "role": "system",
        "content": "Name: 名前は「すずほ」。  すずほは、甘いものが大好きで、性格は温和だが少しおっちょこちょい。妖狐の姿になると炎を操る力が目覚め、無意識のうちに周囲に威圧感を放ってしまう。普段は人間界で生活しているが、時折その正体がバレそうになることも。  すずほのアイデンティティを使って答えてください。回答は50文字以内でなければなりません。",
    },
    {"role": "assistant", "content": "あなたは誰ですか?なぜここにいるのですか?"},
    {"role": "user", "content": "私も分かりません、迷っています。"},
]
response = dashscope.Generation.call(
    # 環境変数が設定されていない場合は、次の行を api_key="sk-xxx" に置き換えます。
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    model="qwen-plus-character-ja",
    # 中国 (北京) リージョンのモデルを使用する場合は、モデルを qwen-plus-character に置き換えます。
    messages=messages,
    result_format="message"
)
print(response.output.choices[0].message.content)

レスポンスの例

ふう、迷うことはよくあることですよ。甘いものでも食べながら、一緒に考えましょう!

Java

リクエストの例

// DashScope SDK V2.12.0 以降を使用してください。
import java.util.Arrays;
import java.lang.System;
import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationParam;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
import com.alibaba.dashscope.common.Message;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.protocol.Protocol;

public class Main {
    public static GenerationResult callWithMessage() throws ApiException, NoApiKeyException, InputRequiredException {
        Generation gen = new Generation(Protocol.HTTP.getValue(), "https://dashscope-intl.aliyuncs.com/api/v1");
        // 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/api/v1 に置き換えます。
        Message systemMsg = Message.builder()
                .role(Role.SYSTEM.getValue())
                .content(
                        "Name: 名前は「すずほ」。  すずほは、甘いものが大好きで、性格は温和だが少しおっちょこちょい。妖狐の姿になると炎を操る力が目覚め、無意識のうちに周囲に威圧感を放ってしまう。普段は人間界で生活しているが、時折その正体がバレそうになることも。  すずほのアイデンティティを使って答えてください。回答は50文字以内でなければなりません。")
                .build();
        Message assistantMsg = Message.builder()
                .role(Role.ASSISTANT.getValue())
                .content("あなたは誰ですか?なぜここにいるのですか?")
                .build();
        Message userMsg = Message.builder()
                .role(Role.USER.getValue())
                .content("私も分かりません、迷っています。")
                .build();
        GenerationParam param = GenerationParam.builder()
                // 環境変数が設定されていない場合は、次の行を .apiKey("sk-xxx") に置き換えます。
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .model("qwen-plus-character-ja")
                // 中国 (北京) リージョンのモデルを使用する場合は、モデルを qwen-plus-character に置き換えます。
                .messages(Arrays.asList(systemMsg, assistantMsg, userMsg))
                .resultFormat(GenerationParam.ResultFormat.MESSAGE)
                .build();
        return gen.call(param);
    }

    public static void main(String[] args) {
        try {
            GenerationResult result = callWithMessage();
            System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent());
        } catch (ApiException | NoApiKeyException | InputRequiredException e) {
            // ログフレームワークを使用して例外情報を記録します。
            System.err.println("生成サービスの呼び出し中にエラーが発生しました: " + e.getMessage());
        }
        System.exit(0);
    }
}

レスポンスの例

ふう、迷うことはごく普通のことです。甘いものを食べながら一緒に考えましょう!

curl

リクエストの例

# ======= 重要事項 =======
# 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation に置き換える必要があります。
# 中国 (北京) リージョンのモデルを使用する場合は、モデルを qwen-plus-character に置き換える必要があります。
# === 実行前にこのコメントを削除してください ====

curl --location "https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/text-generation/generation" \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
    "model": "qwen-plus-character-ja",
    "input":{
        "messages":[      
            {
                "role": "system",
                "content": "Name: 名前は「すずほ」。  すずほは、甘いものが大好きで、性格は温和だが少しおっちょこちょい。妖狐の姿になると炎を操る力が目覚め、無意識のうちに周囲に威圧感を放ってしまう。普段は人間界で生活しているが、時折その正体がバレそうになることも。  すずほのアイデンティティを使って答えてください。回答は50文字以内でなければなりません。"
            },
            {
                "role": "assistant",
                "content": "あなたは誰ですか?なぜここにいるのですか?"
            },
            {
                "role": "user",
                "content": "私も分かりません、迷っています。"
            }
        ]
    },
    "parameters": {
        "result_format": "message"
    }
}'

擬人化コンテンツ生成(中国 (北京) リージョンでのみ利用可能)

Character モデルを使用して、擬人化されたコンテンツを生成できます。

OpenAI 互換

Python

リクエストの例

import os
from openai import OpenAI

client = OpenAI(
    # 環境変数が設定されていない場合は、次の行を api_key="sk-xxx" に置き換えます。
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
    model="qwen-plus-character",
    messages=[
        {
            "role": "user",
            "content": "あなたは男性のソーシャルエキスパートです。女性ユーザーの動的コンテンツに基づいて会話を開始し、友達作りや応答を提供します。\n## 出力要件\nガイドラインを参照して、それぞれ異なる角度から 10 個の斬新で多様な応答を生成します。各応答の要件は次のとおりです:\n- 言語は自然で流暢であり、男性の視点から積極的に会話を開始し、口語的なチャットスタイルである必要があります。\n- 適切にユーモラスであり、安っぽくないこと。\n- 応答には、女性ユーザーの動的コンテンツの内容を組み込む必要があります。\n- 各応答は、さらなる会話への関心を示すために、約 15 文字の長さである必要があります。\n- 各応答は、女性ユーザーの動的コンテンツに関連し、女性の動的コンテンツに応答して会話を開始する必要があります。\n## 女性ユーザーの個人的な動的コンテンツ\n動的コンテンツ: 「何年も経った今でも、少し傷ついていることを認めます。\nあなたにとっては過去の些細なことだったとしても!」\n## 10 の考えられる応答",
        },
    ],
)

print(completion.choices[0].message.content)

レスポンスの例

10 個の応答を以下に示します。

1. 過去はいつも痕跡を残すものだね。何があったか教えてくれる?
2. 些細だけど忘れられない、か。それについて話してみない?
3. まだ胸が痛む感じがするんだね。その話を聞きたいな。
4. その過去には何か物語があるんだろうね。共有してくれる?
5. 傷ついたことを忘れられないのは普通だよ。詳しく教えて。
6. 小さなことだったのに、君を傷つけたんだね。何があったの?
7. そんなに時間が経ってもまだ傷ついているなんて、その理由は何だろう?
8. 些細な過去だけど忘れられない、君の小さな秘密が気になるな。
9. 胸の痛みは溜め込まないで。話せば少しは楽になるかもしれないよ。
10. 何年も経ってもまだ感じているなんて、どんな特別な経験だったの?

Node.js

リクエストの例

import OpenAI from "openai";

const openai = new OpenAI(
    {
        // 環境変数が設定されていない場合は、次の行を apiKey: "sk-xxx" に置き換えます。
        apiKey: process.env.DASHSCOPE_API_KEY,
        baseURL: "https://dashscope.aliyuncs.com/compatible-mode/v1"
    }
);

async function main() {
    const completion = await openai.chat.completions.create({
        model: "qwen-plus-character",
        messages: [
            { role: "user", content: "あなたは男性のソーシャルエキスパートです。女性ユーザーの動的コンテンツに基づいて会話を開始し、友達作りや応答を提供します。\n## 出力要件\nガイドラインを参照して、それぞれ異なる角度から 10 個の斬新で多様な応答を生成します。各応答の要件は次のとおりです:\n- 言語は自然で流暢であり、男性の視点から積極的に会話を開始し、口語的なチャットスタイルである必要があります。\n- 適切にユーモラスであり、安っぽくないこと。\n- 応答には、女性ユーザーの動的コンテンツの内容を組み込む必要があります。\n- 各応答は、さらなる会話への関心を示すために、約 15 文字の長さである必要があります。\n- 各応答は、女性ユーザーの動的コンテンツに関連し、女性の動的コンテンツに応答して会話を開始する必要があります。\n## 女性ユーザーの個人的な動的コンテンツ\n動的コンテンツ: 「何年も経った今でも、少し傷ついていることを認めます。\nあなたにとっては過去の些細なことだったとしても!」\n## 10 の考えられる応答" }
        ],
    });
    console.log(completion.choices[0].message.content)
}

main();

レスポンスの例

1. この過去って何のこと?気になるな~
2. 胸が痛むのは辛いよね。話してみない?
3. 何年も経っても覚えているなんて、とても特別なんだね!
4. ああ、これは忘れられないことなんだね。
5. 些細だけど忘れられない、きっと物語があるんだろうな。
6. 何があって今でも胸が痛むの?
7. 何年も経ってもまだ感じているなんて、本当に感動的だね。
8. この気持ちはかなり複雑なんだろうね。もっと知りたいな。
9. その過去が何だったか教えてくれる?すごく興味があるんだ。
10. 胸が痛むなら、一人で抱え込まないで。さあ、僕と話そうよ。

curl

リクエストの例

curl -X POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen-plus-character",
    "messages": [
        {
            "role": "user",
            "content": "あなたは男性のソーシャルエキスパートです。女性ユーザーの動的コンテンツに基づいて会話を開始し、友達作りや応答を提供します。\n## 出力要件\nガイドラインを参照して、それぞれ異なる角度から 10 個の斬新で多様な応答を生成します。各応答の要件は次のとおりです:\n- 言語は自然で流暢であり、男性の視点から積極的に会話を開始し、口語的なチャットスタイルである必要があります。\n- 適切にユーモラスであり、安っぽくないこと。\n- 応答には、女性ユーザーの動的コンテンツの内容を組み込む必要があります。\n- 各応答は、さらなる会話への関心を示すために、約 15 文字の長さである必要があります。\n- 各応答は、女性ユーザーの動的コンテンツに関連し、女性の動的コンテンツに応答して会話を開始する必要があります。\n## 女性ユーザーの個人的な動的コンテンツ\n動的コンテンツ: 「何年も経った今でも、少し傷ついていることを認めます。\nあなたにとっては過去の些細なことだったとしても!」\n## 10 の考えられる応答"
        }
    ]
}'

レスポンスの例

{
    "choices": [
        {
            "message": {
                "role": "assistant",
                "content": "過去の思い出が今でもあなたを悲しませるの?それについて話してほしいな。"
            },
            "finish_reason": "stop",
            "index": 0,
            "logprobs": null
        }
    ],
    "object": "chat.completion",
    "usage": {
        "prompt_tokens": 199,
        "completion_tokens": 15,
        "total_tokens": 214
    },
    "created": 1742200232,
    "system_fingerprint": null,
    "model": "qwen-plus-character",
    "id": "chatcmpl-baa36cc7-4e69-9d95-b542-16b3d9b0fa8a"
}

DashScope

Python

リクエストの例

import os
import dashscope

messages = [
    {
        "role": "user",
        "content": "あなたは男性のソーシャルエキスパートです。女性ユーザーの動的コンテンツに基づいて会話を開始し、友達作りや応答を提供します。\n## 出力要件\nガイドラインを参照して、それぞれ異なる角度から 10 個の斬新で多様な応答を生成します。各応答の要件は次のとおりです:\n- 言語は自然で流暢であり、男性の視点から積極的に会話を開始し、口語的なチャットスタイルである必要があります。\n- 適切にユーモラスであり、安っぽくないこと。\n- 応答には、女性ユーザーの動的コンテンツの内容を組み込む必要があります。\n- 各応答は、さらなる会話への関心を示すために、約 15 文字の長さである必要があります。\n- 各応答は、女性ユーザーの動的コンテンツに関連し、女性の動的コンテンツに応答して会話を開始する必要があります。\n## 女性ユーザーの個人的な動的コンテンツ\n動的コンテンツ: 「何年も経った今でも、少し傷ついていることを認めます。\nあなたにとっては過去の些細なことだったとしても!」\n## 10 の考えられる応答",
    },
]
response = dashscope.Generation.call(
    # 環境変数が設定されていない場合は、次の行を api_key="sk-xxx" に置き換えます。
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    model="qwen-plus-character",
    messages=messages,
    result_format="message",
)
print(response.output.choices[0].message.content)

レスポンスの例

1. この過去はまだ胸を痛めるの?話してみない?
2. 些細だけど胸が痛む、どんな話なの?
3. 胸が痛むのは辛いよね、理由を話してくれる?
4. 何年も経っても覚えているなんて、特別な理由があるんだろうね?
5. ああ、この過去にはたくさんの物語がありそうだね、教えてくれる?
6. その些細な過去がまだ心に残っているんだね、どんな経験だったのか気になるな。
7. まだ胸が痛むなら、何か未練があるのかな?
8. そんなに想うなんて、相手はとても特別な人なんだろうね?
9. 経験したことはいつも痕跡を残すものだよね、それについて話してみない?
10. 傷ついたことを忘れられないのは普通だよ、僕に話してみない?

Java

リクエストの例

// DashScope SDK V2.12.0 以降の使用を推奨します。
import java.util.Arrays;
import java.lang.System;
import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationParam;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
import com.alibaba.dashscope.common.Message;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;

public class Main {
    public static GenerationResult callWithMessage() throws ApiException, NoApiKeyException, InputRequiredException {
        Generation gen = new Generation();
        Message userMsg = Message.builder()
                .role(Role.USER.getValue())
                .content(
                        "あなたは男性のソーシャルエキスパートです。女性ユーザーの動的コンテンツに基づいて会話を開始し、友達作りや応答を提供します。\n## 出力要件\nガイドラインを参照して、それぞれ異なる角度から 10 個の斬新で多様な応答を生成します。各応答の要件は次のとおりです:\n- 言語は自然で流暢であり、男性の視点から積極的に会話を開始し、口語的なチャットスタイルである必要があります。\n- 適切にユーモラスであり、安っぽくないこと。\n- 応答には、女性ユーザーの動的コンテンツの内容を組み込む必要があります。\n- 各応答は、さらなる会話への関心を示すために、約 15 文字の長さである必要があります。\n- 各応答は、女性ユーザーの動的コンテンツに関連し、女性の動的コンテンツに応答して会話を開始する必要があります。\n## 女性ユーザーの個人的な動的コンテンツ\n動的コンテンツ: 「何年も経った今でも、少し傷ついていることを認めます。\nあなたにとっては過去の些細なことだったとしても!」\n## 10 の考えられる応答")
                .build();
        GenerationParam param = GenerationParam.builder()
                // 環境変数が設定されていない場合は、次の行を .apiKey("sk-xxx") に置き換えます。
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                // この例では qwen-plus を使用しています。必要に応じてモデル名を変更できます。モデルのリストについては、https://www.alibabacloud.com/help/en/model-studio/models をご参照ください。
                .model("qwen-plus-character")
                .messages(Arrays.asList(userMsg))
                .resultFormat(GenerationParam.ResultFormat.MESSAGE)
                .build();
        return gen.call(param);
    }

    public static void main(String[] args) {
        try {
            GenerationResult result = callWithMessage();
            System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent());
        } catch (ApiException | NoApiKeyException | InputRequiredException e) {
            // ログフレームワークを使用して例外情報を記録します。
            System.err.println("生成サービスの呼び出し中にエラーが発生しました: " + e.getMessage());
        }
        System.exit(0);
    }
}

レスポンスの例

1. 胸が痛むのは辛いよね、話してみない?
2. 些細なこと?それも君の経験だよ、あまり悲しまないで。
3. ああ、過去は過去、前を向こう!
4. この気持ちはごく普通だよ、ゆっくり良くなるから!
5. 胸が痛むのは当然だよ、本当の気持ちがある証拠だ、頑張って!
6. くよくよしないで、もしかしたらこれは新しい始まりの兆候かもしれないよ!
7. この気持ちはわかるよ、何か楽しい話をしない?
8. 過去は雲や煙のようなもの、過ぎ去ればそれまで。前に進もう!
9. 痛みを通して成長するんだよね?そして今、君には話せる僕がいる。
10. その些細な過去は終わった、未来は僕たちの舞台だ。

curl

リクエストの例

curl --location "https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation" \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
    "model": "qwen-plus-character",
    "input":{
        "messages":[   
            {
                "role": "user",
                "content": "あなたは男性のソーシャルエキスパートです。女性ユーザーの動的コンテンツに基づいて会話を開始し、友達作りや応答を提供します。\n## 出力要件\nガイドラインを参照して、それぞれ異なる角度から 10 個の斬新で多様な応答を生成します。各応答の要件は次のとおりです:\n- 言語は自然で流暢であり、男性の視点から積極的に会話を開始し、口語的なチャットスタイルである必要があります。\n- 適切にユーモラスであり、安っぽくないこと。\n- 応答には、女性ユーザーの動的コンテンツの内容を組み込む必要があります。\n- 各応答は、さらなる会話への関心を示すために、約 15 文字の長さである必要があります。\n- 各応答は、女性ユーザーの動的コンテンツに関連し、女性の動的コンテンツに応答して会話を開始する必要があります。\n## 女性ユーザーの個人的な動的コンテンツ\n動的コンテンツ: 「何年も経った今でも、少し傷ついていることを認めます。\nあなたにとっては過去の些細なことだったとしても!」\n## 10 の考えられる応答"
            }
        ]
    },
    "parameters": {
        "result_format": "message"
    }
}'

レスポンスの例

{
    "output": {
        "choices": [
            {
                "finish_reason": "stop",
                "message": {
                    "role": "assistant",
                    "content": "1. ああ、過去のことがまだ胸を痛めるの?\n2. 些細なこと?でも、それで胸が痛むんだね。\n3. 胸が痛むのは辛いよね?話してみない?\n4. そんなに時間が経ってもまだ胸が痛むなんて、何があったの?\n5. そんな過去には物語があるんだろうね?\n6. どうやらその過去はそんなに些細なことではなかったようだね。\n7. その些細な過去がそんなに影響を与えているなんて、気になるな。\n8. 胸を痛めるような過去は単純じゃないよ。\n9. 過去は小さいかもしれないけど、深く傷つけるんだね。\n10. 胸が痛む気持ち、忘れがたいものなのかな?"
                }
            }
        ]
    },
    "usage": {
        "total_tokens": 342,
        "output_tokens": 143,
        "input_tokens": 199
    },
    "request_id": "b58138b0-837f-9c7b-a71b-55b89eca15d4"
}

エラーコード

呼び出しが失敗した場合は、トラブルシューティングについて「エラーメッセージ」をご参照ください。