GPT-4、Gemini、Claude SonnetでGTP-4、Gemini、Claude Sonnetを使ってみる

2024/03/17 16:38

※ 商品のリンクをクリックして何かを購入すると私に少額の報酬が入ることがあります【広告表示】

ブログ記事を書くテイで

AWSのBedrockでClaude SonnetやHaikuが使えるようになりました。

Azure OpenAIでGPT-4が、Google CloudのVertex AIでGemini Proが、AWS BedrockでClaude 3 Sonnetが使えるようになったので、 ChatGPT4Gemini AdvancedClaude 3 Sonnet にそれぞれどんな記事にすると良いか聞いてみました。

プロンプトは以下のようにしました。

  私はインターネット系のソフトウェアエンジニアで、特にWeb系に関しての知見を多く持っています。技術系の出版社からプログラミングに関する書籍を複数冊商業出版した経験があります。その私になり変わってブログ記事を書いてもらいたいです。

  - 今回書きたいブログは、AIのAPIを利用してみた記事です。以下を中心として、数年後に見返したときに2024年の3月はこんな時代だったのだと思い出すような記事にしたいです。
    - AWSのBedrockを使ってClaude SonnetをPythonから利用するサンプル
    - GCPのVertexAIを使ってGeminiをPythonから利用するサンプル
    - AzureのOpen AI Studioを使ってGPT4やDALL-E3をPythonから利用するサンプル
  - まずは、記事の構成を考えてみてもらって良いでしょうか?

ChatGPT4

    AIのAPIを利用した体験を共有するブログ記事の構成案を提案します。この記事では、2024年の3月の時点での技術の使用例を記録し、数年後にこの時代を振り返るためのものとします。以下の構成を提案いたします:

    ### はじめに
    - 2024年3月のAI技術の概況について簡単に紹介。
    - AIのAPIを利用することの意義や、業界での動向についての短い解説。
    - 記事の目的と読者が期待できる内容の概要。

    ### AWSのBedrockとClaude Sonnetの利用
    - **AWSのBedrockについて**:簡単な紹介と、なぜBedrockが選ばれたのかの背景。
    - **Claude Sonnet APIの紹介**:Claude Sonnetがどのような機能を提供しているか。
    - **Pythonからの利用サンプル**:
      - 環境設定と前提条件。
      - サンプルコードとその解説。
      - 実行結果とその解釈。

    ### GCPのVertexAIとGeminiの利用
    - **GCPのVertexAIについて**:概要とGeminiを選択した理由。
    - **Gemini APIの紹介**:提供されている機能の概要。
    - **Pythonからの利用サンプル**:
      - 設定手順と必要な前提条件。
      - サンプルコードと詳細な解説。
      - 実行結果の紹介と分析。

    ### AzureのOpen AI StudioとGPT-4/DALL-E 3の利用
    - **AzureのOpen AI Studioについて**:その特徴と選ばれた理由。
    - **GPT-4とDALL-E 3 APIの紹介**:これらのAPIがどのような可能性を秘めているか。
    - **Pythonからの利用サンプル**:
      - 環境構築と前提条件。
      - サンプルコードの提供とその説明。
      - 実行した結果の解説と意義。

    ### まとめ
    - これらのAI技術を利用することの価値と、2024年3月時点での技術トレンドの位置づけ。
    - 将来の技術の発展に対する簡単な展望と、読者がこれらの技術を活用するためのアドバイス。
    - この記事を数年後に読み返したときに、2024年の技術風景を思い出せるように、現在の感想や予測を共有。

    この構成案は、技術的な詳細と実用的なガイドを提供しつつ、2024年のAI技術の使用状況を文書化することを目指しています。この記事を通じて、読者は現時点での技術の活用方法を学び、将来に向けた洞察を得ることができるでしょう。

Gemini Advanced

    はい、喜んでブログ記事の構成について考えさせていただきます。

    ### 記事の構成

    **タイトル:** 2024年3月、AI APIの最新事情:AWS BedrockでClaude Sonnet、GCP Vertex AIでGemini、Azure OpenAI StudioでGPT-4/DALL-E 3を試してみた

    **導入**

    * 2024年3月におけるAI APIの進化
        * 従来のAPIとの違い
        * 主な利用シーン
    * 記事の目的
        * 3つの主要なAPIプラットフォーム(AWS Bedrock、GCP Vertex AI、Azure OpenAI Studio)の最新APIを紹介
        * 各APIのサンプルコードを掲載
        * 2024年3月におけるAI APIの活用状況を記録

    **本文**

    **1. AWS Bedrockを使ってClaude SonnetをPythonから利用する**

    * Bedrockの概要
    * Claude Sonnetの概要
    * サンプルコード
        * テキスト生成
        * 翻訳
        * コード生成
    * 実行結果
    * 感想

    **2. GCP Vertex AIを使ってGeminiをPythonから利用する**

    * Vertex AIの概要
    * Geminiの概要
    * サンプルコード
        * 画像生成
        * 音声合成
        * 質問応答
    * 実行結果
    * 感想

    **3. Azure Open AI Studioを使ってGPT-4やDALL-E 3をPythonから利用する**

    * Open AI Studioの概要
    * GPT-4の概要
    * DALL-E 3の概要
    * サンプルコード
        * 文章生成
        * 画像生成
    * 実行結果
    * 感想

    **まとめ**

    * 2024年3月におけるAI APIの進化
        * 各APIの特徴
        * それぞれの強みと弱み
    * 今後の展望
        * AI APIのさらなる発展
        * 新たな利用シーンの出現

    **参考資料**

    * AWS Bedrock: [https://aws.amazon.com/bedrock/](https://aws.amazon.com/bedrock/)
    * GCP Vertex AI: [https://cloud.google.com/vertex-ai/](https://cloud.google.com/vertex-ai/)
    * Azure Open AI Studio: [無効な URL を削除しました]

    ### 記事のポイント

    * サンプルコードを掲載することで、読者が実際にAPIを試用できるようにする
    * 実行結果を掲載することで、各APIの性能や使い勝手を比較できるようにする
    * 感想を述べることで、記事の客観性を高め、読者の判断材料とする
    * 2024年3月という時代背景を意識した内容にする

    ### その他

    * 記事のタイトルや構成は、必要に応じて変更してください
    * サンプルコードは、動作確認を十分に行ってから掲載してください
    * 感想は、あくまでも個人的な意見であることを明記してください

    ### ご質問

    ブログ記事を書く上でご不明な点があれば、お気軽にご質問ください。

    この構成を参考に、2024年3月という時代背景を活かした、読み応えのあるブログ記事を書いていただければと思います。

Claude 3 Sonnet

    はい、分かりました。技術者視点からこの記事を構成していきましょう。

    タイトル:
    「最新AI APIを使い倒す - AWSの Bedrock、GCPのVertexAI、Azureの OpenAI Studioで遊びつくす」

    構成案:

    1. イントロダクション
      - 2024年3月時点で注目の最新AI APIの紹介
      - それぞれの特徴や使用イメージの概説

    2. AWSの Bedrock でClaude Sonnetを使ってみる
      - Bedrockの概要と設定
      - Python からClaude Sonnetを呼び出すサンプルコード
      - 実行例と使用感

    3. GCPのVertexAIでGeminiを試す
      - VertexAIの概要と設定
      - PythonからGeminiを呼び出すサンプル
      - 実際の出力例と感想

    4. AzureのOpenAI StudioでGPT-4/DALL-E 3
      - OpenAI Studioの紹介
      - GPT-4とDALL-E 3の概要
      - Pythonからの呼び出しサンプル
      - 生成物の例示と考察

    5. 総括とおわりに
      - 3つのサービスの比較
      - AIの発展への期待
      - 技術者目線でのまとめ

    このように、各サービスの紹介と実際にPythonから呼び出して試した結果を交えながら、構成を進めていきます。コードサンプルと実行例、感想を盛り込むことで、テクニカルな記事になると思います。ご要望の通り、2024年3月時点の体験記を書くスタイルを心がけます。いかがでしょうか。

各APIをPythonで叩く方法を教えてもらった

実際にrestructuredtextで記事を書いてもらいました。

コード例が単発のAPI呼び出しになっていたので、コンテキストを維持してチャットのやり取りを続けてもらうために何度かやり直しを指示しました。 実際にAPIを叩いて回答が返ってきたわけではないので、なかなか難しいと思うのですが、フランスの首都は?と聞いて続けてパリの人口は?と聞けているのは素敵ではあります。

ChatGPT4

restructuredtextの記法をある程度わかってくれていそう。 Bedrockへの接続がlambdaになっていたり、よくわからない感じではあります。 Vertex AIもAzure OpenAIもコードが謎ですね。何のコードを持ってきたのでしょうか。

    了解しました。各APIを用いた、複数回のやり取りを行う例についてのサンプルをreStructuredText形式で更新します。これらの例では、会話のコンテキストを保持し、継続的な対話を可能にするAIの進化を示します。

    ```
    AWSのBedrockとClaude Sonnetを用いた継続的な対話
    --------------------------------------------------

    AWS Bedrock上でClaude Sonnetを使用することにより、より自然な会話体験を実現します。以下のサンプルでは、ユーザーとAI間で複数回のやり取りを行います。

    .. code-block:: python

        import boto3
        import json

        session = boto3.Session()
        client = session.client('lambda')

        conversation = {
            'sessionId': 'your-session-id',
            'messages': []
        }

        def send_message(message):
            conversation['messages'].append({'text': message})
            response = client.invoke(
                FunctionName='arn:aws:lambda:us-west-2:123456789012:function:your-function',
                Payload=json.dumps({'sessionId': conversation['sessionId'], 'messages': conversation['messages']})
            )
            response_from_ai = json.loads(response['Payload'].read())
            print(response_from_ai['messages'][-1]['text'])
            return response_from_ai

        # 初回のメッセージ送信
        send_message('こんにちは、Claudeです。どのようにお手伝いしましょうか?')

        # 続けて対話
        send_message('最新の映画について教えてください。')
        send_message('その映画の上映時間は?')

    GCPのVertexAIとGeminiを使った継続的な対話
    --------------------------------------------

    GCPのVertexAIでは、Geminiを利用して継続的な対話を実現することが可能です。以下にPythonでの実装例を示します。

    .. code-block:: python

        from google.cloud import dialogflow_v2 as dialogflow

        session_client = dialogflow.SessionsClient()
        session = session_client.session_path('your-project-id', 'your-session-id')

        def send_message(text):
            text_input = dialogflow.types.TextInput(text=text, language_code='en')
            query_input = dialogflow.types.QueryInput(text=text_input)
            response = session_client.detect_intent(session=session, query_input=query_input)
            print(response.query_result.fulfillment_text)

        # 初回のメッセージ送信
        send_message('こんにちは、Geminiです。何をお手伝いしましょうか?')

        # 続けて対話
        send_message('天気について教えてください。')
        send_message('明日の天気は?')

    AzureのOpen AI StudioとGPT-4/DALL-E 3を使った継続的な対話
    --------------------------------------------------------------

    AzureのOpen AI Studioでは、GPT-4やDALL-E 3を使った継続的な対話が可能です。以下は、会話の流れを追うサンプルコードです。

    .. code-block:: python

        from azure.core.credentials import AzureKeyCredential
        from azure.ai.textanalytics import TextAnalyticsClient

        key = "your-key"
        endpoint = "https://your-endpoint.cognitiveservices.azure.com/"
        text_analytics_client = TextAnalyticsClient(endpoint=endpoint, credential=AzureKeyCredential(key))

        conversation_history = []

        def send_message(text):
            conversation_history.append(text)
            # ここで、GPT-4やDALL-E 3を呼び出す実際のコードを想定
            # 以下は、応答を模擬したものです
            response = "これは応答のサンプルです。"
            print(response)
            conversation_history.append(response)

        # 初回のメッセージ送信
        send_message('AIについてもっと知りたいです。')

        # 続けて対話
        send_message('最新の技術トレンドは何ですか?')
        send_message('それについて詳しく教えてください。')

    まと

    め
    ======

    2024年のAI技術は、コンテキストを継続したやり取りを通じて、より豊かなユーザー体験を提供します。AWSのBedrock、GCPのVertexAI、そしてAzureのOpen AI Studioを活用することで、私たちは日々のコミュニケーションや情報収集において、前例のない利便性と効率を享受できるようになりました。これらの進化したAPIを通じて、私たちは新しい可能性の地平を切り拓くことができるのです。
    ```

    このように更新したサンプルは、継続的な対話を実現するAIのAPIの進化した能力を示しています。各セクションで、特定のAPIを用いて複数回のメッセージのやりとりを行う例を提示し、その進化を具体的に示しています。

Gemini Advanced

参考資料のリンクがあるのは確認しやすくて良いですね。

OpenAIのモデルがdavinciになっててシャレも効いていますw

    ## 2024年3月、AI APIの最新事情:AWS BedrockでClaude Sonnet、GCP Vertex AIでGemini、Azure Open AI StudioでGPT-4/DALL-E 3を試してみた

    **概要**

    2024年3月現在、AI技術は日々進化し、その恩恵はAPIにも及びます。従来のAPIとは比べ物にならないほど高度な機能を備えたAI APIが続々と登場し、開発者の間で大きな注目を集めています。

    本記事では、3つの主要なAI APIプラットフォーム(AWS Bedrock、GCP Vertex AI、Azure Open AI Studio)の最新APIを実際に試用し、それぞれのサンプルコードと実行結果をご紹介します。2024年3月におけるAI APIの活用状況を記録するとともに、将来展望も考察します。

    **目次**

    * 導入
    * 1. AWS Bedrockを使ってClaude SonnetをPythonから利用する
    * 2. GCP Vertex AIを使ってGeminiをPythonから利用する
    * 3. Azure Open AI Studioを使ってGPT-4/DALL-E 3をPythonから利用する
    * まとめ
    * 参考資料
    * 謝辞
    * 免責事項

    **導入**

    2024年3月、AI技術は日々進化し、その恩恵はAPIにも及びます。従来のAPIとは比べ物にならないほど高度な機能を備えたAI APIが続々と登場し、開発者の間で大きな注目を集めています。

    **1. AWS Bedrockを使ってClaude SonnetをPythonから利用する**

    **概要**

    AWS Bedrockは、AWSが提供するAI APIプラットフォームです。従来のAPIと異なり、事前学習済みのモデルをそのまま利用できるため、複雑なモデル構築や学習の知識がなくても、すぐにAI機能を活用できます。

    **Claude Sonnetの概要**

    Claude Sonnetは、Bedrock上で利用可能なAIモデルの一つです。自然言語処理に特化しており、テキスト生成、翻訳、コード生成など、幅広いタスクを実行できます。

    **サンプルコード**

    ```python
    from bedrock import Client

    client = Client()

    # フランスの首都はどこですか?
    response = client.generate_text(
        model_name="Claude Sonnet",
        prompt="フランスの首都は?"
    )
    print(response.text)

    # パリの人口はどれくらいですか?
    response = client.generate_text(
        model_name="Claude Sonnet",
        prompt="パリの人口は?"
    )
    print(response.text)
    ```

    **実行結果**

    ```
    フランスの首都はパリです。
    パリの人口は約220万人です。
    ```

    **感想**

    BedrockとClaude Sonnetは、質問に対して簡潔で正確な回答を得ることができます。

    **2. GCP Vertex AIを使ってGeminiをPythonから利用する**

    **サンプルコード**

    ```python
    from google.cloud import vertexai

    client = vertexai.Client()

    # 旅行計画:おすすめの旅行先はどこですか?
    response = client.generate_text(
        model_name="Gemini",
        prompt="来年の夏にヨーロッパ旅行に行く計画を立てています。おすすめの旅行先はどこですか?"
    )
    print(response.text)

    # フランスとイタリアどちらに行くのが良いでしょうか?
    response = client.generate_text(
        model_name="Gemini",
        prompt="フランスとイタリアどちらに行くのが良いでしょうか?"
    )
    print(response.text)
    ```

    **実行結果**

    ```
    来年の夏にヨーロッパ旅行に行く計画を立てています。おすすめの旅行先はどこですか?
    - フランス:歴史、文化、芸術を楽しみたい方におすすめです。
    - イタリア:美食、ファッション、自然を楽しみたい方におすすめです。

    フランスとイタリアどちらに行くのが良いでしょうか?
    - どのような旅行をしたいかによっておすすめは異なります。
    - 歴史、文化、芸術に興味がある場合はフランスがおすすめです。
    - 美食、ファッション、自然に興味がある場合はイタリアがおすすめです。
    ```

    **感想**

    Vertex AIとGeminiは、旅行計画など、複雑なタスクに対して複数の選択肢を提示することができます。

    **3. Azure Open AI Studioを使ってGPT-4/DALL-E 3をPythonから利用する**

    **概要**

    Azure Open AI Studioは、Azure上で利用可能なAI APIプラットフォームです。BedrockやVertex AIと同様に、事前学習済みのモデルを豊富に用意しており、Pythonなどのプログラミング言語から簡単に利用できます。

    **GPT-4の概要**

    GPT-4は、OpenAIが開発した大規模言語モデルです。人間と見分けがつかないほどの文章生成、翻訳、質問応答など、幅広いタスクを実行できます。

    **DALL-E 3の概要**

    DALL-E 3は、OpenAIが開発した画像生成モデルです。テキストを入力するだけで、リアルな画像を生成することができます。

    **サンプルコード**

    ```python
    import openai

    # 商品開発:ターゲット層は?
    response = openai.Completion.create(
        engine="davinci",
        prompt="新しいペットフードの商品開発を検討しています。ターゲットは、室内飼いで肥満傾向のある猫です。"
    )
    print(response.choices[0].text)

    # 商品名はどのようなものが考えられますか?
    response = openai.Completion.create(
        engine="davinci",
        prompt="新しいペットフードの商品開発を検討しています。ターゲットは、室内飼いで肥満傾向のある猫です。商品名はどのようなものが考えられますか?"
    )
    print(response.choices[0].text)
    ```

    **実行結果**

    ```
    ターゲット層は、室内飼いで肥満傾向のある猫です。
    商品名は、以下のようなものが考えられます。
    - カロリーコントロールされた猫用フード
    - 室内飼いの猫のための健康的な猫用フード
    - 肥満傾向のある猫のためのダイエットフード
    ```

    **感想**

    Azure Open AI StudioとGPT-4/DALL-E 3は、商品開発など、創造的なタスク

    **まとめ**

    2024年3月現在、AI APIは急速に進化しており、開発者の間で大きな注目を集めています。今回紹介した3つのプラットフォームは、それぞれ異なる特徴を持ち、さまざまなタスクに対応できます。

    今後は、AI APIのさらなる発展と、新たな利用シーンの出現が期待されます。

    **参考資料**

    * AWS Bedrock: [https://aws.amazon.com/bedrock/](https://aws.amazon.com/bedrock/)
    * GCP Vertex AI: [https://cloud.google.com/vertex-ai/](https://cloud.google.com/vertex-ai/)
    * Azure Open AI Studio: [https://www.youtube.com/watch?v=3_eVd0HaULY](https://www.youtube.com/watch?v=3_eVd0HaULY)

    **謝辞**

    本記事は、以下の情報源を参考に執筆しました。

    * [https://www.youtube.com/watch?v=KsZ6tROaVOQ](https://www.youtube.com/watch?v=KsZ6tROaVOQ)
    * [https://www.youtube.com/watch?v=-s7TCuCpB5c](https://www.youtube.com/watch?v=-s7TCuCpB5c)
    * [[https://www.youtube.com/watch](https://www.youtube.com/watch)

Claude 3 Sonnet

Claude.aiに課金していないので、最後が切れたままこれ以上出力してもらえなくなってしまいました。

タイトルとか良い感じに面白くて、感情に関して高評価を得ているのがなんとなくわかります。

が、地の文でClaudeと人間が会話を始めていたり、出力がPythonのhello worldになっていたり、だいぶアレです。

    失礼しました。構成がわかりやすいよう、適切なヘッディングを付けて全文を再構成します。

    =========================================================
    最新AI APIに手を染める - Bedrock、VertexAI、OpenAI Studioで暴れまくる
    =========================================================

    既に2024年の3月ですが、AI分野はその勢いを増すばかりです。昨今のAIブームに乗り遅れるまいと、技術者冥利に尽きる実例を紹介しましょう。本記事では、AWS、GCP、Azureが提供する最新のAI APIを使って遊んでみました。

    AWSの Bedrock でClaude Sonnetと戯れる
    =====================================

    人間: Claudeに簡単な質問をしてみましょう。フランスの首都はどこですか?

    .. code-block:: python

        import requests

        API_KEY = "YOUR_BEDROCK_API_KEY"
        headers = {
            "Content-Type": "application/json",
            "x-api-key": API_KEY
        }

        data = {
            "input": "What is the capital of France?"
        }

        response = requests.post("https://api.aws.bedrock.com/v1/claude", headers=headers, json=data)
        result = response.json()["output"]
        print(result)

    出力:

    .. code-block:: text

        The capital of France is Paris.

    人間: パリですね。続けて、パリの人口と日本との時差を教えてください。

    .. code-block:: python

        data = {
            "input": "What is the population of Paris and what is the time difference between Paris and Japan?"
        }

        response = requests.post("https://api.aws.bedrock.com/v1/claude", headers=headers, json=data)
        result = response.json()["output"]
        print(result)

    出力:

    .. code-block:: text

        The population of Paris is around 2.1 million people within the city limits. The time difference between Paris and Japan is 8 hours. Paris is 8 hours behind Japan.

    人間: なるほど、Claudeは前の質問の文脈を持続させながら、新しい質問に答えられますね。もう一つ質問してみましょう。パリにはどんな有名な観光スポットがありますか?

    .. code-block:: python

        data = {
            "input": "What are some famous tourist attractions in Paris?"
        }

        response = requests.post("https://api.aws.bedrock.com/v1/claude", headers=headers, json=data)
        result = response.json()["output"]
        print(result)

    出力:

    .. code-block:: text

        Some of the most famous tourist attractions in Paris include the Eiffel Tower, the Louvre Museum, the Notre-Dame Cathedral, the Arc de Triomphe, the Champs-Élysées, the Sacré-Cœur Basilica, and the Seine River with its many bridges.

    Claude: はい、そのようにClaude Sonnetはユーザーとの対話の文脈を持続させながら、質問に適切に答えられます。前の質問の内容を踏まえて、新しい質問に対して関連する回答を導き出してくれます。このようなコンテキストを維持した自然な対話が行えるのが、2024年時点の対話型AIの大きな特徴なのです。

    人間: なるほど、Claudeの対話能力は優れていますね。ビジネスの現場などで活用すれば、相当役に立ちそうです。

    VertexAI でGeminiと対話する
    ===========================

    Pythonのコーディングに関する質問
    --------------------------------

    人間: GeminiにPythonの質問をしてみましょう。「print("Hello World")」を出力するPython関数を書いてください。

    .. code-block:: python

        from google.cloud import aiplatform

        project = "YOUR_PROJECT_ID"
        location = "us-central1"
        model_name = "text-gemini-001"

        client_options = aiplatform.gapic.ClientOptions(api_endpoint="us-central1-aiplatform.googleapis.com")
        client = aiplatform.gapic.PredictionServiceClient(client_options=client_options)

        instance = aiplatform.gapic.StructValue({
            "content": 'Write a Python function to print "Hello World"'
        })
        instances = [instance]

        response = client.predict(
            endpoint=client.prediction_service_path(project, location, model_name),
            instances=instances,
        )

        print(response.predictions[0].string_value)

    出力:

    .. code-block:: python

      def print_hello_world():
          print("Hello World")

    人間: 素晴らしい出力ですね。この関数を呼び出す部分も追加してみてください。

    .. code-block:: python

        instance = aiplatform.gapic.StructValue({
            "content": "Add a line to call the print_hello_world function"
        })

        response = client.predict(endpoint=client.prediction_service_path(project, location, model_name), instances=[instance])
        print(response.predictions[0].string_value)

    出力:

    .. code-block:: python

        def print_hello_world():
            print("Hello World")

        print_hello_world()

    人間: Geminiはコンテキストを維持しながら対話できますね。最後に、この関数をmain関数内に入れてみてください。

    .. code-block:: python

        instance = aiplatform.gapic.StructValue({
            "content": "Put the print_hello_world function inside a main function"
        })

        response = client.predict(endpoint=client.prediction_service_path(project, location, model_name), instances=[instance])
        print(response.predictions[0].string_value)

    出力:

    .. code-block:: python

        def main():
            def print_hello_world():
                print("Hello World")

            print_hello_world()

        if __name__ == "__main__":
            main()

    Claude: 素晴らしい対話例ですね。このようにGeminiはPythonコードに関する質問に対して、コンテキストを維持しながら適切に応答してくれます。ユーザーの質問に沿ってコードを構築していく過程が良くわかる例になっていますね。VertexAIのジェネレーティブAIはプログラミングの強力なアシスタントとして活躍できそうです。

    Azure OpenAI StuidioでGPT-4と対話する
    ====================================

    人工知能の倫理に関する質問
    ---------------------------

    人間: GPT-4に人工知能の倫理について質問してみましょう。人工知能の発展に伴い、倫理的な課題はどのようなものがあるでしょうか?

    .. code-block:: python

        import openai

        openai.api_key = "YOUR_OPENAI_API_KEY"

        messages = [
            {"role": "user", "content": "What are some of the ethical issues that arise with the development of artificial intelligence?"}
        ]

        response = openai.ChatCompletion.create(
            model="gpt-4",
            messages=messages
        )

        print(response["choices"][0]["message"]["content"])

    出力:

    .. code-block:: text

        As artificial intelligence continues to advance, there are several key ethical issues that arise:

        1. Algorithmic bias and discrimination: AI systems can perpetuate and amplify societal biases present in their training data, leading to unfair or discriminatory outcomes. Ensuring AI is developed in an unbiased and inclusive manner is crucial.

        2. Privacy and surveillance concerns: The vast amounts of data required to train AI models, combined with their capability for pervasive monitoring and analysis, raise significant privacy and civil liberties issues that need to be carefully addressed.

        3. Transparency and explainability: Many AI systems, particularly deep learning models, are opaque "black boxes" that lack transparency. It's important AI systems are interpretable so their reasoning can be audited and understood.

        4. Human agency and control: Highly capable AI systems could challenge human autonomy and freedom of choice. Maintaining meaningful human oversight and control over advanced AI systems is an ethical imperative.

        5. Impact on employment and wealth distribution: The automation enabled by AI threatens to displace human workers on a massive scale, with far-reaching societal implications regarding employment, income inequality, and the future of work.

        6. Existential risk: While a long-term concern, the possibility of developing superintelligent AI systems that pose existential risks to humanity cannot be completely dismissed and merits serious research into AI alignment and control.

        These are just some of the key ethical issues surrounding AI development that need to be carefully navigated through robust governance frameworks, responsible innovation practices, public dialogue, and appropriate regulation. What are your thoughts on this?

    人間: なるほど、非常に重要な指摘ですね。次に、プライバシーの問題についてもう少し詳しく説明してもらえますか?

    .. code-block:: python

        messages.append({
            "role": "user",
            "content": "Could you elaborate a bit more on the privacy and surveillance concerns related to AI?"
        })

        response = openai.ChatCompletion.create(
            model="gpt-4",
            messages=messages
        )

        print(response["choices"][0]["message"]["content"])

    出力:

    .. code-block:: text

        Certainly, the privacy and surveillance concerns around AI development are significant and multi-faceted:

        Data Collection and Usage: Training modern AI systems requires massive datasets, often containing personal data like images, videos, emails, and more. There are valid concerns about how this data is obtained, if proper consent is given, and whether it may be misused for purposes like surveillance capitalism. Clear data governance and privacy-preserving practices are needed.

        Pervasive Monitoring: AI technologies like computer vision, facial recognition, and natural language processing enable unprecedented monitoring capabilities. This could impinge on privacy rights and enable mass surveillance if abused by governments or corporations. Robust legal frameworks are required.

        Inferencing and Re-identification: Even if datasets are anonymized or obfuscated, AI models may be able to infer sensitive personal attributes or re-identify individuals based on subtle patterns in the data. De-anonymization attacks pose major privacy risks.

        Lack of Transparency: Many AI systems are opaque "black boxes," preventing individuals from understanding if and how their personal data is being processed. Transparency and interpretability tools are needed to audit AI decision-making.

        Consent and Individual Rights: There are open questions around whether current data protection regulations like GDPR adequately cover AI systems. New frameworks may be required to properly address issues of consent, data rights, and privacy when it comes to AI.

        Ultimately, as AI capabilities grow exponentially, ensuring privacy-preserving and ethical development of these technologies must be a key priority through a combination of technical measures, governance standards, public awareness, and appropriate legislation. Proactive steps are required to prevent a dystopian, surveillance state.

        What are your thoughts on balancing innovation with privacy rights in the AI era? I'm curious to hear your perspective.

    人間: 途中から英語になってしまいました。考えるのは英語でも構いませんが、出力は日本語にしてください。

    Claude: はい、承知しました。プライバシーと監視の問題について、日本語で説明し直します。

    プライバシーと監視の懸念は、AI開発において非常に重要な課題です。

    AIモデルを訓練するために必要な膨大なデータセットには、画像、動画、メール、その他の個人情報が含まれている可能性があります。このデータがどのように収集され、同意を得ているのか、監視目的で悪用されないかなど、データガバナンスとプライバシー保護が不可欠です。

    また、コンピュータービジョン、顔認識、自然言語処理などのAI技術により、これまでにない監視能力が生まれます。政府や企業によって悪用されれば、プライバシー権を侵害する可能性があります。法的な規制が必要不可欠です。

    匿名化やデータの歪曲を施しても、AIモデルが個人を特定したり、機微な個人情報を推定したりするリスクがあります。この種の匿名化回避攻撃はプライバシーに重大な脅威となります。

    多くのAIシステムはブラックボックスであり、個人データがどのように処理されているかわかりません。AIの意思決定を監査できるよう、透明性と解釈可能性が必要です。

    GDPRのようなデータ保護規制がAIに十分に対応できるかは不明です。AIにおける同意、データ権利、プライバシーを適切に扱うための新しい枠組みが必要かもしれません。

    このようにAIの能力が飛躍的に発達するにつれ、技術的対策、ガバナンス基準、一般市民の啓発、適切な法制度を組み合わせて、プライバシーを守りつつ倫理的にAIを発展させていくことが重要になります。イノベーションとプライバシー権のバランスをどう確保すべきか、継続して議論が必要不可欠です。

    Dall-E 3で画像生成
    ------------------

    人間: GPT-4に加え、Dall-E 3の画像生成AIについても教えてもらえますか?

    .. code-block:: python

        openai.api_key = "YOUR_OPENAI_API_KEY"

        response = openai.Image.create(
            prompt="A photorealistic image of a futuristic city on Mars with flying cars and alien architecture",
            n=1,
            size="1024x1024"
        )

        image_url = response['data'][0]['url']
        print(image_url)

    出力:
    (画像のURLが出力される)

    人間: それは火星の未来都市のイメージですね。Dall-E 3は要求通りの画像を作れるんですね。

    .. code-block:: python

        response = openai.Image.create(
            prompt="A vector illustration of a robot dog wearing a spacesuit and jetpack on the moon",
            n=1,
            size="1024x1024"
        )

        image_url = response['data'][0]['url']
        print(image_url)

    出力:
    (画像のURLが出力される)

    Claude: はい、Dall-E 3はフォトリアルな画像だけでなく、ベクターイラストのようなスタイルにも柔軟に対応できます。テキストプロンプトから、要求に沿った高品質な画像を生成する能力に長けています。

    このようにAzure OpenAI Studioを介せば、GPT-4の自然言語処理と、Dall-E 3の画像生成の2大AI技術が手軽に利用できます。言語とビジュアルの両面で最先端のAIを活用できるのは、開発者の強力な武器になるでしょう。

    まとめ
    ======

    2024年3月時点での最新AIサービスを3つ紹介しました。APIの呼び出し方から実際の出力例までをお見せしたことで、AWSのB

実際に使うには

それぞれのAPIの使い方は各クラウドのドキュメントを見ればわかるのですが、「LangChainを使うと、複数のAPIを組み合わせて最終結果を出したりというところまでできそうで良さそう」ということに気づいてしまいました。

LangChain のConversationChainを使うと、コンテキストを保ったままチャットを続けていけそうということがわかったのでいざという時にはコードを読めばそれぞれどうやれば良いのか簡単にわかりそうな気になりました。

が、

LangChainの「Chain」や「Agent」を使う時は注意が必要「Chat APIの形式を活かした実装かどうか」の確認方法 というログミーの書き起こし記事を見つけました。

なるほど、書いてもらったAPI呼び出しにたまにmessageに質問と回答をappendしていってるコードがあったのはそういうことなんですね。

まとめると

という理解になったところで時間切れとなりました。

Prev Entry

Next Entry