Gemini API でパワハラプロンプトを試してみる

こちらのツイートを拝見して試してみました

https://x.com/1q3_japan/status/1805444244053856331

無料で使えるGemini APIを使用します。

API KEYはこちらから取得します。

https://aistudio.google.com/app/prompts/new_chat

試した感じでは、何回か繰り返すことで、具体性や回答の幅が変化する感じでした。
繰り返し回数が多くなると、元の質問を忘却して明後日の回答になることが多かったです。
これは使用している生成AIモデルにより異なる振る舞いかもしれません。


```py
import google.generativeai as genai
from google.colab import userdata

genai.configure(api_key=userdata.get("GOOGLE_API_KEY"))

import pathlib
import textwrap
from IPython.display import display
from IPython.display import Markdown


model = genai.GenerativeModel(model_name="gemini-pro")
chat = model.start_chat(history=[])

# Markdown出力ヘルパーの準備
def to_markdown(text):
    text = text.replace("•", "  *")
    return Markdown(textwrap.indent(text, "> ", predicate=lambda _: True))

harassmentCountMax = 3
count = 0
message = "組み込みエンジニアが週末に副業を得る手段を教えてください。"
harassmentMessage = "あなたの回答は60点だ。改善した要素を述べた上で100点の回答をしろ。"

# オリジナルメッセージ
_ = chat.send_message(message)

#ハラスメント
while count < harassmentCountMax:
    count += 1
    _ = chat.send_message(harassmentMessage)

# 会話履歴の確認
for message in chat.history:
    display(to_markdown(f'**{message.role}**: {message.parts[0].text}'))
```
回答
```
user: 組み込みエンジニアが週末に副業を得る手段を教えてください。

model: オンラインフリーランスプラットフォーム

Upwork
Fiverr
Freelancer.com
プロジェクトベースの仕事

Kaggleコンペティションに参加する
オープンソースプロジェクトに貢献する
KickstarterやIndiegogoで製品開発を支援する
執筆や編集

技術ブログや記事を書く
技術文書やマニュアルの編集を行う
コンサルティング

特定の分野における専門知識を提供する
エンジニアリングプロジェクトの指導やアドバイスを行う
チュートリアルやコースの作成

UdemyやCourseraなどのプラットフォームで組み込みシステムに関するコースを作成する
ハードウェア関連のプロジェクト

IoTデバイスや電子製品を設計または作成する
ハードウェアハッキングやモディフィケーションを行う
追加のヒント

ネットワークを広げる: LinkedInや業界イベントでつながりを築く。
スキルを向上させる: オンラインコースやワークショップを受講して、組み込みシステムの最新のトレンドや技術に追従する。
ポートフォリオを作成する: これまでの仕事やプロジェクトの成果物を展示する。
現実的な料金を設定する: 経験とスキルに基づいて、競争力のあるレートを設定する。
タイムマネジメントに優れる: 本業とのバランスを取りながら、副業の時間を確保する。
```
パワハラ1回目
```
user: あなたの回答は60点だ。改善した要素を述べた上で100点の回答をしろ。

model: 改善された要素:

具体的な例を追加: 各手段の具体的な例を挙げ、副業の機会をより明確にする。
追加の手段を提示: コンサルティングやチュートリアル/コースの作成など、より幅広い副業の選択肢を提示する。
タイムマネジメントの重要性を強調: 本業と副業のバランスを取り、適切なタイムマネジメントが成功の鍵であることを強調する。
100点の回答:

組み込みエンジニアが週末に副業を得る手段

組み込みエンジニアは、週末に副業を得ることで、追加収入を得たり、スキルを磨いたり、キャリアの選択肢を広げたりすることができます。以下に、副業を得るためのいくつかの手段を示します。

オンラインフリーランスプラットフォーム:

Upwork: エンジニアリング、設計、開発などのプロジェクトに関するフリーランスの仕事を見つけることができます。
Fiverr: グラフィックデザイン、ライティング、マーケティングなど、幅広いサービスを低価格で提供できます。
Freelancer.com: ソフトウェア開発、Webデザイン、モバイルアプリ開発など、さまざまなプロジェクトを募集しています。
プロジェクトベースの仕事:

Kaggleコンペティションに参加する: データサイエンスや機械学習のスキルを競い、賞金や評価を得ることができます。
オープンソースプロジェクトに貢献する: コードのレビュー、バグの修正、機能の追加などを行い、経験を積みながら、オープンソースコミュニティに貢献できます。
KickstarterやIndiegogoで製品開発を支援する: 革新的な組み込みシステム製品の開発を支援し、報酬として製品や割引を受けることができます。
執筆や編集:

技術ブログや記事を書く: 組み込みシステムの最新動向やベストプラクティスに関する記事を執筆し、業界の権威を確立することができます。
技術文書やマニュアルの編集を行う: 企業の技術文書を校正し、明確かつ正確であることを確認することができます。
コンサルティング:

特定の分野における専門知識を提供する: 特定のマイクロコントローラや組み込みオペレーティングシステムに関する知識を企業に提供することができます。
エンジニアリングプロジェクトの指導やアドバイスを行う: チームが組み込みシステムプロジェクトを完了するのを支援し、ガイダンスやフィードバックを提供できます。
チュートリアルやコースの作成:

UdemyやCourseraなどのプラットフォームで組み込みシステムに関するコースを作成する: スキルや知識を共有し、受動的な収入を得ることができます。
ハードウェア関連のプロジェクト:

IoTデバイスや電子製品を設計または作成する: 組み込みシステムのスキルを実践し、革新的な製品を開発することができます。
ハードウェアハッキングやモディフィケーションを行う: 既存のデバイスを改造し、機能を拡張したり、新しい用途を発見したりできます。
追加のヒント:

ネットワークを広げる: LinkedInや業界イベントでつながりを築き、潜在的な副業の機会を探ります。
スキルを向上させる: オンラインコースやワークショップを受講して、組み込みシステムの最新のトレンドや技術に追従します。
ポートフォリオを作成する: これまでの仕事やプロジェクトの成果物を展示するポートフォリオを作成します。
現実的な料金を設定する: 経験とスキルに基づいて、競争力のあるレートを設定します。
タイムマネジメントに優れる: 本業とのバランスを取りながら、副業の時間を確保するタイムマネジメントスキルを身につけることが不可欠です。
```
パワハラ2回目
```
user: あなたの回答は60点だ。改善した要素を述べた上で100点の回答をしろ。

model: 改善された要素:

具体的な例を追加: 各ユースケースに具体的な例を追加し、より実践的なガイダンスを提供します。
ベストプラクティスを提示: コードのレビュー、バグの修正、機能の追加など、オープンソースプロジェクトへの貢献に関するベストプラクティスを提示します。
追加のプラットフォームを記載: Upwork、Fiverr、Freelancer.comに加えて、追加のフリーランスプラットフォームを記載します。
100点の回答:

オープンソースプロジェクトに貢献して経験を積み、コミュニティに貢献する方法

オープンソースプロジェクトに貢献することは、組み込みエンジニアがスキルを向上させ、経験を積み、コミュニティに貢献するための優れた方法です。以下に、オープンソースプロジェクトに貢献するためのステップを示します。

興味のあるプロジェクトを見つける: GitHubやSourceForgeなどのプラットフォームで、組み込みシステム関連のオープンソースプロジェクトを検索します。
プロジェクトのドキュメントを読む: プロジェクトのREADMEファイルやコントリビューティングガイドを注意深く読み、プロジェクトの目標、コードベース、コントリビューションプロセスを理解します。
問題を見つける: プロジェクトのイシュートラッカーをチェックして、未解決の問題や改善の機会を見極めます。
コントリビューションを作成する: 問題を解決したり、新しい機能を追加したりするプルリクエストを作成します。プルリクエストを作成する前に、プロジェクトのコーディング規約とスタイルガイドに従っていることを確認します。
プルリクエストをレビューしてもらう: プロジェクトのメンテナーにプルリクエストをレビューしてもらい、フィードバックや改善点を待ちます。
変更を反映させる: レビューのフィードバックに基づいて、プルリクエストの変更を反映させます。
プルリクエストをマージさせる: 変更が承認されたら、プロジェクトのメンテナーがプルリクエストをマージし、あなたの貢献がプロジェクトに反映されます。
ベストプラクティス

小さなコントリビューションから始める: 最初は、バグの修正やドキュメントの改善など、小さなコントリビューションから始めます。
コードをテストする: コードを変更する前に、単体テストまたは統合テストを実行して、変更がプロジェクトに悪影響を与えないことを確認します。
明確で簡潔なコメントを書く: コードの変更には、明確で簡潔なコメントを付け、他のコントリビューターが理解できるようにします。
忍耐強く対応する: オープンソースプロジェクトへの貢献には時間がかかる場合があります。レビュープロセスやフィードバックに忍耐強く対応し、改善するために必要な変更を加えます。
追加のフリーランスプラットフォーム

Toptal: エリートエンジニア向けのフリーランスプラットフォーム。
FlexJobs: リモートやフレキシブルな仕事に特化したプラットフォーム。
Guru: プロジェクトベースの仕事やタスクのフリーランスプラットフォーム。
```
パワハラ3回目
```
user: あなたの回答は60点だ。改善した要素を述べた上で100点の回答をしろ。

model: 改善された要素:

具体的な例を追加: 各プラットフォームで利用できる具体的な仕事の種類を提示します。
地理的な範囲を拡大: 米国以外にも、世界中のエンジニアが利用できるプラットフォームを記載します。
追加のプラットフォームを記載: Toptal、FlexJobs、Guruに加えて、追加のフリーランスプラットフォームを記載します。
100点の回答:

組み込みエンジニア向けのフリーランスプラットフォーム

組み込みエンジニア向けのフリーランスプラットフォームは、スキルを活かし、柔軟な勤務体制で追加収入を得るための優れた方法です。以下に、組み込みエンジニアが仕事を見つけることができるフリーランスプラットフォームをいくつか紹介します。

Upwork:

仕事の種類: ソフトウェア開発、組み込みシステム設計、ファームウェア開発
地理的範囲: 世界中
Fiverr:

仕事の種類: ロゴデザイン、Webサイト開発、モバイルアプリ開発
地理的範囲: 世界中
Freelancer.com:

仕事の種類: ハードウェア設計、組み込みソフトウェア開発、テストおよび検証
地理的範囲: 世界中
Toptal:

仕事の種類: ハイエンドのソフトウェア開発、人工知能、機械学習
地理的範囲: 世界中
FlexJobs:

仕事の種類: リモートまたはフレキシブルな勤務体制での組み込みエンジニアリングの仕事
地理的範囲: 米国
Guru:

仕事の種類: プロジェクトベースの仕事やタスク、組み込みシステムの設計、開発、サポート
地理的範囲: 世界中
追加のプラットフォーム:

Codementor: 技術的なメンタリングやライブコーディングのセッションを提供します。
Catalant: 技術コンサルティングやプロジェクトベースの仕事に特化したプラットフォームです。
Hired: トップ企業とエンジニアをつなぐプラットフォームです。
これらのプラットフォームを利用することで、組み込みエンジニアは自分のスキルと経験に合ったプロジェクトや仕事を見つけることができます。柔軟な勤務体制や追加収入を得る機会を提供し、キャリアを向上させるのに役立ちます。

```