先生「最近の技術ブログのトレンドはやっぱり生成AIだね。特にAmazon Bedrockの話題が多いよ」
生徒「Bedrockってなんですか?」
先生「生成AIのモデルをAPIで簡単に使えるサービスなんだ。例えばOpenAIのChatGPTとか、AnthropicのClaudeとかね。
GPT-4超えの日本語性能? 話題のELYZA製LLMをBedrockにインポート! サーバーレス化してみよう
っていう記事では、国産のELYZAのLLMをBedrockにインポートしてサーバーレスAPIとして公開してるんだ。すごいよね!」
生徒「へぇー!面白そう!でも生成AIって難しそうで...」
先生「確かに、新しいモデルや技術がどんどん出てきて、追いかけるのは大変だよね。でも、基本的な仕組みを理解すれば、そんなに難しくないよ。
例えば、エンジニアにも知って欲しいChatGPT基本テクニック
っていう記事では、ChatGPTを効果的に使うためのテクニックを紹介してるんだ。Markdown記法や変数の使い方、パラメータ設定なんかが解説されてるよ。」
生徒「パラメータ設定って重要なんですか?」
先生「もちろんだよ。例えば、temperatureっていうパラメータは、出力のランダム性を制御するんだ。値を大きくすると、よりクリエイティブな、予想外の回答が返ってくる。逆に小さくすると、より正確で、一貫性のある回答になるんだ。」
生徒「なるほど〜。じゃあ、実際にチャットボットを作ってみたいんですけど、どうすればいいですか?」
先生「いいね!じゃあ、Qiitaの記事を検索して、質問に答えてくれるチャットボットを作ってみようか。検索にはGoogle検索、生成AIにはBedrockのClaude 3を使うよ。」
生徒「面白そう!お願いします!」
先生「まず、チャットボットの構成はこうだよ。」
(先生はホワイトボードに以下の図を描く)
先生「ユーザーがチャットボットに質問を入力すると、まずClaude 3を使ってGoogle検索用の検索クエリを生成するんだ。
そのクエリでGoogle検索を行い、Qiitaの記事をいくつか取得する。
そして取得した記事のURLとユーザーの質問をClaude 3に渡して、最終的な回答を生成させる、という流れだね。」
生徒「なるほど!検索と生成AIを組み合わせて、賢いチャットボットを作るんですね!」
先生「そうだよ。具体的なコードはこんな感じになるよ。」
import boto3
import requests
from bs4 import BeautifulSoup
import json
# Bedrock のクライアントを作成
bedrock = boto3.client('bedrock-runtime')
# Claude 3 に検索クエリを生成させる関数(詳細は割愛)
def generate_search_query(question):
# ...
# Google 検索で Qiita の記事を検索する関数
def search_qiita(query):
url = f"https://www.google.com/search?q=site:qiita.com+{query}"
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
# 検索結果から記事の URL を抽出
urls = []
for link in soup.find_all('a', href=True):
if 'qiita.com' in link['href']:
urls.append(link['href'])
return urls
# Claude 3 に質問と記事の内容を渡して回答を生成させる関数
def generate_answer(question, articles):
# ...
# チャットボットのメイン処理
def main():
question = input("質問を入力してください: ")
query = generate_search_query(question)
articles = search_qiita(query)
answer = generate_answer(question, articles)
print("回答: ", answer)
if __name__ == '__main__':
main()
先生「これで、Qiitaの記事を検索して回答してくれるチャットボットが完成だ!」
生徒「すごい!実際に動くチャットボットが作れるんですね!生成AIって本当にすごいですね!」
先生「そうだね。生成AIを活用すれば、今まで難しかったことも簡単にできるようになる。可能性は無限大だよ!」