株式会社シベスピ 従業員ブログ

シベスピの社員ブログ。技術・想い・経験沢山書いていきます!

自然言語処理を活用してWebページを生成してみる

はじめに

文章生成AIとして有名なChatGPTですが、単純に文章を作る以外の活用方法がないかと考え、ユーザーが入力したテキストをもとにHTMLを自動生成するプログラムを作ってみました。

OpenAI APIとは

OpenAI APIは、OpenAIが提供する人工知能APIです。
このAPIを使用することで、プログラム内にレベルの高い自然言語処理を組み込むことができます。

OpenAI APIの利用には料金がかかります。料金はAPIの使用量に基づいており、生成されるテキストの量に応じて請求されます。
料金体系の詳細については、OpenAIの公式ウェブサイトや料金ページを参照ください。
openai.com

今回使用するAPIについて

OpenAIからは、画像や音声などに関するものまで複数の種類がありますが、
今回は受け取ったテキストに対するメッセージを返すChat Completionsを使用します。
https://platform.openai.com/docs/guides/text-generation/chat-completions-api

messages配列で会話内容を渡すことで回答を生成させることができます。

messages=[
    {"role": "system", "content": "とてもフランクな口調で回答してください"},
    {"role": "user", "content": "英語を学びたいのですが、何から勉強すればいいですか?"}
  ]
roleについて

userは自分のメッセージ、systemはassistantの行動を設定できます。

作ってみる

今回はpythonを使用して、
 ①ユーザーからの入力を受け付け
 ②APIを呼び出し、入力されたテキストの解析・コードの生成
 ③ファイル出力&ブラウザ上で表示
のプログラムを作成します。

ソースコード

import os
from openai import OpenAI
import codecs
import webbrowser

# apiキーの設定
client = OpenAI(
    api_key="APIキー"
)

# 引数をのテキストをもとにHTMLを生成して返す
def generateHTML(txtInput):
    chat_completion = client.chat.completions.create(
        messages=[
            {
                "role": "system",
                "content": "HTMLを生成してください。UIは、ユーザーが見やすく使いやすいものにしてください。"
            },
            {
                "role": "user",
                "content": txtInput
            }
        ],
        model="gpt-3.5-turbo"
    )
    return chat_completion.choices[0].message.content

# ユーザーの入力を受け付け
txtInput = input(">> ")

# HTMLの生成
txtAnswer = generateHTML(txtInput)

# 生成されたHTMLをhtmlファイルに出力
txtFileName = "index.html"
fileResult = codecs.open(txtFileName, "w","utf-8")
fileResult.write(txtAnswer)

# 出力したhtmlをブラウザ上で開く
webbrowser.open_new_tab(txtFileName)

fileResult.close()

実行例

プログラムを実行し、「身長と体重を入力すると、BMIを計算する」と入力してみました。

要求の通り身長体重を計算するとBMIを表示する上、体形まで教えてくれました。
日本肥満学会BMI基準と照らし合わせても正しそうです。

BMI 判定
18.5未満 低体重(痩せ型) 
18.5〜25未満 普通体重
25〜30未満 肥満(1度)
30〜35未満 肥満(2度)
35〜40未満 肥満(3度)
40以上 肥満(4度)

最後に

ユーザーからの入力に応じたWebページ生成プログラムを作ってみました。
今回作成したのは非常に簡単な作りのプログラムですが、工夫次第でさらに効果的に活用できる余地がありそうです。