1.はじめに
2.経緯
GPT-3.5がAPI経由で自由に使えるので、これを使って企業情報をAPI経由でとったりしていました。
ただ、他のウェブ情報にもあるように、GPT3.5だけだと
情報が2021年7月くらいで止まっている。
「この情報を参照して、ここから情報をまとめてほしい」という要望に応えにくい
という難点がありました。
なにかいい方法が無いかと調べてみると、LangChainというライブラリとGPT3.5を組み合わせれば、いい感じに上記課題を解決できるのを発見。
早速ライブラリを読み解きつつ、特定のurlを指定すると、そのウェブサイトから情報を抽出し、技術内容をまとめてくれるスクリプトを作成しました。
内部ではBeautifulSoupでテキスト抜きつつ、GPT3.5のembeddingをかけて、ユーザの問いに答える文章を持ってくる感じでした。
3.ソースコードとアウトプット例
こんな感じです。LangChainのおかげですごく楽!
!pip install langchain
!pip install openai
!pip install llama-index==0.5.7
# 環境変数の準備
import os
os.environ["OPENAI_API_KEY"] = "***************"
from langchain.llms import OpenAI
from llama_index.readers import BeautifulSoupWebReader
from llama_index import GPTSimpleVectorIndex
入力1:
urls = ["http://www.thunderzee.com/"] #カンマ区切りで複数指定可能
documents = BeautifulSoupWebReader().load_data(urls=urls)
index = GPTSimpleVectorIndex.from_documents(documents)
res = index.query("この企業の保有技術の特徴を教えて")
print(res.response)
回答:
Thunderzee Inc. offers innovative energy technologies, such as Restore Charging, an innovative charging technology to restore the battery pack up to full capacity, an Ultra Fast Rechargeable Zinc Air Battery with cost as low as $80/KWh, and Speed Charging, which charges up to 2X speed of current fastest CC-CV charging method. They also offer other products and services upon request.
入力2:
urls = ["https://www.coretissue.com/technology/"] #カンマ区切りで複数指定可能
documents = BeautifulSoupWebReader().load_data(urls=urls)
index = GPTSimpleVectorIndex.from_documents(documents)
res = index.query("この企業の保有技術の特徴を教えて")
print(res.response)
回答:
CoreTissue BioEngineering株式会社は、膝前十字靭帯損傷の治療において、健康な自家腱を取らずに行える治療方法を提供するために、独自の「脱細胞化技術」を用いています。この技術を用いることで、生体親和性がありながら、人工靭帯としての強度も備えた製品の開発が可能になります。
5.その他
LangChainは他にgoogle検索結果からの情報抽出や特定のテキストデータ(pdf、パワポとか)をもとに情報抽出するようなことも可能。
特定の特許文章を投入して、ポイントをつかんだり文章を生成してもらったりもできそう!(Bingのchatでもできそうですが)
url指定だけといえど、プロンプトインジェクションがあるみたいなので、非公開での利用をお勧めします。
Langchaiのこちらも便利そうです。
Comments