OpenAIのGPT-3.5-Turbo-16kを使ったPDFファイルに対して質問するウェブアプリの作り方
OpenAIのGPT-3.5-Turbo-16k-0613というモデルを使ってみました。GPT-3.5-Turboとの違いは、16kと書いてあり、1024*16トークンまで対応可能なOpenAIの言語モデルとなります。
普段は、API利用料が気になるので一番安いgpt-3.5-turboを利用していますが、GPT-3.5-Turbo-16k-0613は使用したことがなので使ってみます。
Chatのコードだと味気無いですので、今回は、pdfフォルダの配下に置いたPDFファイルの内容に対して、問い合わせを行うことが出来るウェブアプリを作ってみます。
随分シンプルです。
さて、今回利用したコードは以下となります。
requirements.txtとして、以下の内容のファイルを用意します。
streamlit
openai
PyPDF2
次に、app.pyとして、以下の内容のファイルを用意します。
import streamlit as st
from PyPDF2 import PdfReader
import os
import openai
# OpenAI APIキーの設定
openai.api_key = 'sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
# Streamlitアプリケーション
def app():
# ユーザーからの質問を入力
question = st.text_input("あなたの質問を入力してください:")
if question:
# PDFファイルの読み込みとテキストの抽出
pdf_folder = "pdf"
text = ""
for filename in os.listdir(pdf_folder):
if filename.endswith(".pdf"):
pdf_file = os.path.join(pdf_folder, filename)
with open(pdf_file, 'rb') as f:
reader = PdfReader(f)
for page in reader.pages:
text += page.extract_text()
# OpenAIでの質問
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo-16k-0613",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": text},
{"role": "user", "content": question}
]
)
# 結果の表示
st.write(response['choices'][0]['message']['content'])
if __name__ == "__main__":
app()
sk-xxxxxxxには、OpenAIで取得したAPIキーを記載します。
次に、pdf_folder="pdf"のところには、PDFファイルを配置するフォルダ名を記載します。今回は、pdfフォルダとなります。
次に、app.py、requirements.txt、pdfフォルダを同じ階層に配置します。pdfファイルは、pdfフォルダの配下に置きます。
次に、以下を自PCで実行します。
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
streamlit run app.py
実行しますと、下記の画面が出てきます。
今回のスクリプトでは、pdfフォルダの配置したpdfファイルを読み込んで、それをgpt-3.5-turbo-16k-0613モデルにAPI経由で渡して、質問しています。
16kのため、pdfファイルに記載の文字数が多すぎるとエラーになります。
この記事が気に入ったらサポートをしてみませんか?