8
8
生成AIに関する記事を書こう!
Qiita Engineer Festa20242024年7月17日まで開催中!

生成AI超入門!先生と一緒にチャットボットを作ってみよう!

Posted at

先生「最近の技術ブログのトレンドはやっぱり生成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を活用すれば、今まで難しかったことも簡単にできるようになる。可能性は無限大だよ!」

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8