コード例が単発の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