1.はじめに
前回の記事では、Langchain+Taggingで課題と解決手段を抽出しましたが、日本語に対応したGoogle VertexAIでも、文章から構造化されたデータを抽出可能になっています。
2.準備
(1)VertexAIについて
公式の
あらゆるユースケースに対応したフルマネージドの機械学習(ML)ツールを使用して、ML モデルの構築、デプロイ、スケーリングを高速化します。
のとおり、GoogleCloud上でAL/MLをするならば、このサービスを利用します。
すごく基本的なところ(データ抽出や特徴量の保管)からモデル作成、デプロイ、MLOpsと言われる部分までもカバーしてくれているもので、私は最近piplelineの柔軟性に感激しました。
そのVertexAIの中では、chatGPTと並ぶGoogleの大規模言語モデルであるPaLM2を利用可能です。PaLM2は、最近Googleのサービス(GoogleBigQuery、Gmailやスプレッドシートなど)との融合が進んでいます。
PaLM2はAPIとしても呼び出す事ができ、その機能を使って、GUIだけでも色々なアプリケーションが作れます。
今回はfine-tuningではなく、プロンプトを工夫することで、課題と解決手段を抽出してみます。下図の「TEXT-PROMPT」です。
3.流れ・結果
先程のPROMPTボタン⇒STRUCTUREDボタン(下図右上)で進むと、Context,Examples,Testのそれぞれの欄が現れます。そこで、下記図の通り、ContextとExamplesの部分にほしい感じにInputとOutputを書いて、
次に、Testの部分に抽出したい文章を入れると、同じ形で出力してくれました。このへんはAzure OpenAIと似ています。
いい感じに調整できたら、VIEW CODEで(+少し編集)すれば、すぐに使えるコードを出してくれます。Colaboratryならそのままコピペで行けますし、webAPIで展開したければ、CloudFunctionsに載せるのが楽と思います。
こんな感じです。プロンプトも含めて出力されます。
import vertexai
from vertexai.language_models import TextGenerationModel
vertexai.init(project="******", location="*****")
parameters = {
"candidate_count": 1,
"max_output_tokens": 1024,
"temperature": 0.2,
"top_p": 0.8,
"top_k": 40
}
model = TextGenerationModel.from_pretrained("text-bison")
response = model.predict(
"""文章中から課題とその解決手段(技術的特徴)を抽出してください。
Text: 〜略〜
JSON: {
〜略〜 }
Text: {}
JSON:
""".format(text),
**parameters
)
print(f"Response from Model: {response.text}")
Langchainのtaggingでもできますが、こちらもGUIでポチポチとやるだけでモデルが完成して楽ですね!
pythonライブラリなどですぐに呼び出せるようになっているのもありがたいです。
Commenti