生成AIアプリ開発プロジェクトの始め方!LLM利用の落とし穴からBedrockによる具体的な実装方法を解説します

生成AIアプリ開発プロジェクトの始め方!LLM利用の落とし穴からBedrockによる具体的な実装方法を解説します

皆さん、こんにちは!

AI技術の活用が急速に広まっていますね。
様々なビジネスシーンでAIが導入され、業務効率化や新しいサービス創出に貢献しています。
特に最近では、従来のAIに加えて、生成AIを活用するケースも増えてきています。

本記事では、AIアプリ開発プロジェクト、特に生成AIアプリ開発プロジェクトの始め方について解説します。
AI開発の基礎知識から、生成AIの特徴、そしてAWSが提供するAIサービスの紹介、AWSでの生成AI開発の注意点まで、幅広くカバーしますので、ぜひ最後まで読んでみてください!

AIアプリ開発の基礎知識

AIアプリ開発を始めるにあたって、まずはAIの基本的な知識をおさらいしておきましょう。

AIという言葉は非常に広義で、様々な技術を含みます。その中でも、特に重要な要素技術が機械学習です。機械学習とは、大量のデータからAIモデルを学習させることで、未知のデータに対しても予測や判断を可能にする技術です。

機械学習の中でも、近年注目を集めているのが深層学習です。
深層学習は、人間の脳の神経回路を模倣したニューラルネットワークを多層構造化することで、従来の機械学習よりも複雑なデータ処理を可能にする技術です。画像認識や音声認識など、高度なAIタスクで優れた性能を発揮しています。

そして、最近話題の生成AIは、深層学習を用いて、テキスト、画像、音声、コードなどを生成するAIです。
クリエイティブなタスクや自動化など、様々な分野で活用が期待されています。

生成AIの特徴と従来のAIとの違い

生成AIが注目されている理由の一つに、従来のAIとは異なる特徴を持っていることが挙げられます。

従来のAIは、主に特定のタスクを解決することを目的として開発されてきました。
例えば、画像認識AIであれば、画像に写っている物体を認識する、といった具合です。
このようなAIは、入力データに対して、あらかじめ決められたルールに基づいて処理を行い、予測結果を出力します。

一方、生成AIは、新しいコンテンツを生成することを目的としています。
例えば、文章生成AIであれば、入力されたキーワードに基づいて、新しい文章を生成します。
生成AIは、大量のデータから学習したパターンに基づいて、新しいデータを作り出すことができるのです。

この生成AIの特徴により、従来のAIでは難しかった、以下のようなタスクが可能になりました。

タスク具体内容
文章生成広告文やニュース記事、小説、詩などを自動生成
画像生成写真やイラスト、デザインなどを自動生成
音声生成音楽やナレーション、音声合成などを自動生成
コード生成プログラムコードやソフトウェアなどを自動生成

生成AIの業務活用を始める前に知っておきたいこと

生成AIは強力なツールですが、業務活用を始める前にいくつか知っておくべき注意点があります。

1. 生成AIは完璧ではない

生成AIは大量のデータから学習することで、驚くほど自然なコンテンツを生成することができます。
しかし、あくまでも学習データに基づいた確率的な処理を行っているため、完璧な結果を保証するものではありません。
時には、事実とは異なる情報や、倫理的に問題のあるコンテンツを生成してしまうこともあります。

生成AIの出力結果を鵜呑みにせず、必ず人間が最終的なチェックを行うことが重要です。

2. 生成AIの出力結果を制御するには工夫が必要

生成AIの出力結果は、入力データや学習データによって大きく変化します。
そのため、出力結果を意図通りに制御するためには、いくつかの工夫が必要になります。

例えば、文章生成AIで特定のテーマに沿った文章を生成したい場合は、以下のような工夫が考えられます。

  • プロンプトエンジニアリング: AIに対する指示を工夫することで、出力結果を調整する
  • ファインチューニング: 自社のデータを使って、生成AIモデルを再学習させることで、より特定のニーズに合わせた出力結果を得る

3. 生成AIの利用コストを意識する

生成AIは、大量の計算リソースを必要とするため、利用コストが高額になる場合があります。
特に、大規模な生成AIモデルを利用する場合は、コストを意識した設計や運用が重要になります。

例えば、以下のような方法でコストを削減することができます。

  • 適切な生成AIモデルを選択する: タスクの難易度や精度要件に応じて、適切な規模の生成AIモデルを選択する
  • 利用頻度を調整する: 生成AIの利用頻度を必要最小限に抑える
  • サーバーレスアーキテクチャを活用する: AWS Lambdaなどのサーバーレスサービスを活用することで、必要な時だけ計算リソースを利用する

AWSが提供するAIサービスの紹介

AWSは、AIアプリ開発を支援する様々なサービスを提供しています。
これらのサービスを活用することで、高性能なAIアプリを効率的に開発・運用することができます。

AWSのAIサービスは、大きく2つのグループに分けられます。

1. APIですぐに使えるAIサービス

これらのサービスは、AWSが学習済みのAIモデルを提供しており、API経由で簡単に利用することができます。自社でAIモデルを開発する必要がないため、手軽にAIを活用したい場合に最適です。

  • Amazon Rekognition: 画像認識・動画分析サービス
  • Amazon Textract: 文書からのテキスト抽出・分析サービス
  • Amazon Polly: 音声合成サービス
  • Amazon Translate: 翻訳サービス
  • Amazon Personalize: 個別レコメンドサービス
  • Amazon Comprehend: テキスト分析サービス

2. 独自のAIモデル開発をサポートする機械学習サービス

Amazon SageMaker は、独自のAIモデルを開発・運用するための環境を提供します。
より高度なAIアプリを開発したい場合や、自社のデータを使ってカスタマイズしたAIモデルを作成したい場合に最適です。

  • Amazon SageMaker: 機械学習モデルの構築・学習・デプロイを支援する統合開発環境
  • Amazon SageMaker Studio: 機械学習のための統合開発環境
  • Amazon SageMaker Autopilot: 機械学習モデルの自動構築・学習サービス
  • Amazon SageMaker Ground Truth: 機械学習モデルの学習データ作成を支援するサービス

従来のAIサービスを自社アプリに組み込む方法

AWSのAIサービスは、API経由で簡単に自社アプリに組み込むことができます。

例えば、Amazon Rekognitionの画像認識機能を自社アプリに組み込む場合は、以下のような手順になります。

  1. Amazon Rekognition APIを呼び出すコードを記述: 自社アプリからAmazon Rekognition APIを呼び出すためのコードを記述します。
  2. 画像データをAmazon Rekognitionに送信: 自社アプリで処理したい画像データをAmazon Rekognitionに送信します。
  3. Amazon Rekognitionから認識結果を取得: Amazon Rekognitionが画像を分析し、認識結果を返します。
  4. 認識結果を自社アプリで利用: 自社アプリでAmazon Rekognitionから取得した認識結果を利用します。

具体的なコード例としては、Python SDKを用いた場合、以下のようなコードでAmazon Rekognitionのラベル検出機能を利用することができます。

import boto3

# Amazon Rekognitionクライアントを作成
rekognition = boto3.client('rekognition')

# 画像ファイルを開く
with open('image.jpg', 'rb') as image_file:
    # 画像データをAmazon Rekognitionに送信
    response = rekognition.detect_labels(Image={'Bytes': image_file.read()})

# 認識結果を表示
for label in response['Labels']:
print(f"{label['Name']}: {label['Confidence']:.2f}%")
    

生成AIサービスを自社アプリに組み込む方法

生成AIサービスも、従来のAIサービスと同様にAPI経由で自社アプリに組み込むことができます。

例えば、Amazon BedrockのClaudeを利用して、自社アプリでテキストを日本語に翻訳する機能を組み込む場合は、以下のような手順になります。

  1. Amazon Bedrock APIを呼び出すコードを記述: 自社アプリからAmazon Bedrock APIを呼び出すためのコードを記述します。
  2. 翻訳したいテキストとプロンプトをAmazon Bedrockに送信: 自社アプリで翻訳したいテキストと、翻訳指示などを含むプロンプトをAmazon Bedrockに送信します。
  3. Amazon Bedrockから翻訳結果を取得: Amazon Bedrockがテキストを翻訳し、結果を返します。
  4. 翻訳結果を自社アプリで利用: 自社アプリでAmazon Bedrockから取得した翻訳結果を利用します。

具体的なコード例としては、Python SDKを用いた場合、以下のようなコードでAmazon BedrockのClaudeを利用することができます。

import boto3

# Amazon Bedrockクライアントを作成
bedrock = boto3.client('bedrock-runtime')

# 翻訳したいテキスト
text = "This is a sample text."

# プロンプト
prompt = f"""
Human: 日本語に翻訳してください。
Assistant: わかりました。日本語に翻訳します。
Human: {text}
Assistant: 
"""

# Amazon Bedrockにリクエストを送信
response = bedrock.invoke_model(
    modelId='anthropic.claude-v1',
    body=prompt.encode('utf-8'),
    contentType='text/plain',
    accept='text/plain'
)

# 翻訳結果を取得
translation = response['body'].read().decode('utf-8')

# 翻訳結果を表示
print(translation)
    

生成AIの出力結果をカスタマイズする方法

生成AIの出力結果をカスタマイズする方法として、プロンプトエンジニアリングファインチューニングがあります。

プロンプトエンジニアリングは、AIに対する指示であるプロンプトを工夫することで、出力結果を調整する手法です。
例えば、文章生成AIに「猫について詳しく説明してください」というプロンプトを与える場合、以下のような工夫ができます。

  • 制約条件を追加: 「100文字以内で説明してください」のように、出力結果の長さや形式を指定する
  • 具体例を追加: 「例えば、ペルシャ猫やアメリカンショートヘアなど、様々な種類がいます」のように、具体的な情報を追加する
  • 質問形式にする: 「猫の魅力は何ですか?」のように、質問形式にすることで、より具体的な回答を得やすくする

ファインチューニングは、自社のデータを使って、既存の生成AIモデルを再学習させる手法です。
これにより、より特定のニーズに合わせた出力結果を得ることができます。
例えば、自社の商品に関するレビューデータを使って、感情分析AIモデルをファインチューニングすることで、自社商品に対する顧客の感情をより正確に分析できるようになります。

生成AI開発における注意点

生成AIは従来のAIとは異なる特徴を持つため、開発・運用にはいくつかの注意点があります。

1. hallucinations (幻覚)

生成AIは、学習データに存在しない情報を生成してしまうことがあります。
これをhallucinations (幻覚)と呼びます。
hallucinationsを防ぐためには、以下のような対策が考えられます。

  • 入力データの妥当性をチェック: 生成AIに入力するデータが、学習データの範囲内であることを確認する
  • 出力結果の妥当性をチェック: 生成AIの出力結果が、事実と整合性を持っているかを確認する
  • ファクトチェック: 生成AIの出力結果を、他の情報源と照らし合わせて確認する

2. 出力の制御

生成AIの出力結果を完全に制御することは難しい場合があります。
出力結果が意図通りにならない場合は、以下のような対策を検討する必要があります。

  • プロンプトエンジニアリング: プロンプトを工夫することで、出力結果を調整する
  • ファインチューニング: 自社のデータを使って、生成AIモデルを再学習させる
  • 後処理: 生成AIの出力結果に対して、後処理を行うことで、必要な情報だけを抽出する

3. データの品質

生成AIの出力結果は、学習データの品質に大きく影響を受けます。
学習データに偏りやノイズが含まれていると、生成AIの出力結果も偏ったり、不正確になったりします。
高品質な学習データを用意することが、高性能な生成AIを開発する上で非常に重要になります。

4. 倫理的な問題

生成AIは、倫理的に問題のあるコンテンツを生成してしまう可能性があります。
例えば、差別的な表現やフェイクニュースなどを生成してしまう可能性があります。
生成AIを利用する際には、倫理的な問題を十分に考慮し、責任ある開発・運用を行うことが重要です。

まとめ

今回は、AIアプリ開発プロジェクト、特に生成AIアプリ開発プロジェクトの始め方について解説しました。
AI開発の基礎知識から、AWSのAIサービスの紹介、そしてAWSでの生成AI開発の注意点までを解説しました。

生成AIは、従来のAIでは難しかったタスクを可能にする、非常に強力なツールです。
AWSのAIサービスを活用することで、生成AIを簡単に自社アプリに組み込み、様々なビジネス課題を解決することができます。

ぜひ今回の内容を参考に、生成AIを活用したAIアプリ開発にチャレンジしてみてください!

AWSモダナイズ開発データ分析基盤構築とデータ活用支援、基幹業務システムのUI.UX刷新はお気軽にお問い合わせください。