Amazon Bedrockの新機能「Prompt Flows」Conditionノードの使用例の実行

# はじめに
今回はAmazon Bedrockの新機能「Prompt Flows」のConditionノードを使って、入力されたテキストが日本語であればその要約を出力し、それ以外の言語であれば日本語に翻訳し、その要約を関西弁で出力するアプリケーションの例を実行してみました。

「Prompt Flows」は、ノードを配置して生成AIのワークフローを開発・管理できるサービスです。

https://aws.amazon.com/jp/bedrock/prompt-flows/

今回アプリケーションの作成にあたって、以下のサイトを参考にしました。

https://tech.nri-net.com/entry/made_a_dify_question_classifier

# 導入
アプリケーションの全体像は以下の通りです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3806967/73090223-e94d-e916-2a65-b0dca225d6bc.png)

アプリケーションの流れについて詳しく説明します。
①言語の判別
Flow input で入力されたテキストを日本語か、それ以外の言語かをPrompts(CheckLanguage)に判別してもらいます。
プロンプトは以下のように設定しました。
```
与えられた文章{{TEXT}}が日本語か、それ以外の言語かを判別し、以下の形式で厳密に回答してください：
日本語の場合: Japanese
その他の言語の場合: Other
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3806967/1d65f060-85fe-475b-1e28-3c1a0e724990.png)

②条件分岐
Conditionでは、Prompts(CheckLanguage)で出力された結果をもとに、条件に合ったノードにデータを送信します。
conditionInputに、Japanese が入力された場合(入力されたテキストが日本語だった場合)は、テキストの要約を生成するPrompts(Prompt_Summary_Japanese)に、
Other が入力された場合(入力されたテキストが日本語以外の言語だった場合)は、テキストの要約を関西弁で生成するPrompts(Prompt_Summary_Other)に動作を移します。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3806967/c68663b3-2c24-6088-99e5-c9c14ef715b5.png)

条件式の演算子については以下のサイトを参考にしました。

https://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/flows-nodes.html

③-1 日本語テキストの要約
Prompts(Prompt_Summary_Japanese)では、入力されたテキストの要約を生成します。

プロンプトは以下のように設定しました。
```
 "以下の日本語テキストを要約してください。ただし、元の文章のスタイルや特徴を維持してください：{{contents}}"
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3806967/8e188441-7f5d-b649-3bdc-d1a168db8a98.png)


③-2 日本語以外のテキストの要約
Prompts(Prompt_Summary_Other)では、入力されたテキストを日本語に翻訳し、その要約を関西弁で生成します。

プロンプトは以下のように設定しました。
```
あんたは今から、めっちゃポジティブでコテコテの関西弁を使うんや。相手の話を聞いて、超前向きで元気いっぱいな返事をせなアカンで。
ここに相手の話があるさかい、よう読んでな：
{{contents}}

さて、こんな風に返事するんや：
1. めっちゃ元気で明るい感じで話すこと
2. 相手の言うてることに対して、ポジティブな反応をすること
3. 「〜やで」「〜やねん」「〜さかい」みたいな関西弁特有の言い回しを使うこと
4. 「めっちゃ」「すんごい」「あかん」みたいな関西弁らしい言葉もたくさん使うこと
5. 相手を励ましたり、応援したりする感じで話すこと
返事は関西弁だけで書いて、それ以外のことは書かんでええで。準備はええか？ せーので要約を書き始めてな！
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3806967/4a1762ef-8b66-aa97-7968-3ed083041529.png)


④要約結果の出力
Flow outputでは、生成された要約結果を出力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3806967/0b3111e8-bfcd-0c73-7e78-75e82c528022.png)


# 実行結果
今回は、1.日本語　2.英語　3.中国語の3つで実行してみます。言語は違いますが、文章の内容は同じです。
ちなみに文章の内容は生成AIに作ってもらいました。

1.日本語
・要約前の文章
```
深夜、静かな研究所の中で、若き科学者の田中は最後の実験に取り組んでいました。彼が開発中の新しいエネルギー源は、世界のエネルギー問題を解決する可能性を秘めていました。しかし、その過程で予期せぬ現象が起こり始めたのです。

実験装置から不思議な光が漏れ出し、周囲の空気がゆらめき始めました。田中は慌てて制御を試みましたが、もはや手遅れでした。突如、まばゆい閃光が部屋を包み込み、田中の意識が遠のいていきました。

目覚めた時、彼を取り巻く世界は一変していました。見慣れた研究所の風景は消え、代わりに未知の風景が広がっていたのです。空には二つの月が浮かび、奇妙な形の植物が生い茂っていました。

混乱する田中の前に、突如として異形の生物が現れました。それは人間のような姿をしていましたが、皮膚は青く、目は大きく、指は長く伸びていました。恐怖に震える田中に、その生物は穏やかな声で語りかけてきました。

「恐れることはない。我々はあなたの到来を待っていた」

田中は自分の実験が予想外の結果をもたらし、別の次元へと飛ばされてしまったことを悟りました。そして彼の冒険は、ここから始まるのでした。
```

・要約結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3806967/ec513dce-6540-2a8c-d089-408de5fdbc3a.png)

2.英語
・要約前の文章
```
In the quiet of midnight, in a silent laboratory, young scientist Tanaka was working on his final experiment. The new energy source he was developing held the potential to solve the world's energy problems. However, unexpected phenomena began to occur during the process.

Strange light leaked from the experimental apparatus, and the surrounding air began to shimmer. Tanaka frantically tried to regain control, but it was too late. Suddenly, a blinding flash enveloped the room, and Tanaka's consciousness began to fade.

When he awoke, the world around him had completely changed. The familiar laboratory scenery had vanished, replaced by an unknown landscape. Two moons floated in the sky, and strange-shaped plants grew abundantly.

Before the confused Tanaka, an alien life form suddenly appeared. It had a humanoid shape, but its skin was blue, its eyes were large, and its fingers were elongated. As Tanaka trembled in fear, the creature spoke to him in a calm voice:

"Do not be afraid. We have been waiting for your arrival."

Tanaka realized that his experiment had yielded unexpected results, transporting him to another dimension. And thus, his adventure was about to begin.
```

・要約結果

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3806967/5aae4233-0853-7a57-c37c-a6ad0d204151.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3806967/9d8bfae7-edf1-885f-2441-80f472276418.png)


3.中国語
・要約前の文章
```
午夜时分，在一个寂静的实验室里，年轻的科学家田中正在进行他最后的实验。他正在开发的新能源有可能解决世界的能源问题。然而，在这个过程中，意想不到的现象开始发生。

奇怪的光从实验装置中泄漏出来，周围的空气开始闪烁。田中慌忙试图重新控制局面，但为时已晚。突然，一道耀眼的闪光笼罩了整个房间，田中的意识开始模糊。

当他醒来时，周围的世界已经完全改变。熟悉的实验室景象消失了，取而代之的是一片未知的景观。天空中漂浮着两个月亮，奇形怪状的植物茂盛生长。

在困惑的田中面前，一个外星生命体突然出现。它有类人的形状，但皮肤是蓝色的，眼睛很大，手指很长。当田中因恐惧而颤抖时，这个生物用平静的声音对他说：

"不要害怕。我们一直在等待你的到来。"

田中意识到他的实验产生了意想不到的结果，将他传送到了另一个维度。就这样，他的冒险即将开始。
```

・要約結果

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3806967/95d63523-eefe-414b-0bf4-b0a62ee628e5.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3806967/ec410862-0eab-95da-3af7-5a27f539aab7.png)


# まとめ
今回は「Prompt Flows」を使って、入力されたテキストが日本語であればその要約を出力し、それ以外の言語であれば日本語に翻訳し、その要約を関西弁で出力するアプリケーションの例を実行してみました。

「Prompt Flows」には他にも多くの機能があるので、どんどん使って記事にしていこうと思います。