FlaskとLang Smithを連携する方法について解説
2024年12月2日
こんにちは!
今回の記事では、FlaskとLang Smithを連携する方法について解説します。LangSmithは、大規模言語モデル(LLM)を活用したアプリケーションの開発、デバッグ、モニタリングを行うSaasです。
ChatGPTとWebアプリを連携している方は、LangSmithを使うことをぜひおすすめします!
Lang Smithとは?
まずは、Lang Smithについて解説します。
LangSmithは、大規模言語モデル(LLM)を活用したアプリケーションの開発、デバッグ、モニタリングを支援するプラットフォームです。
これにより、LLMアプリケーションの信頼性と保守性を向上させることができます。
以下のように、どのような推論をしたのか、どのくらいトークンをしているのか、どのくらい時間がかかったのかなど、LLMに関するログを表示してくれます。
詳細は、Lang Smithのドキュメントご覧ください。
FlaskとLang Smithを連携する方法
ここからは、FlaskとLang Smithを連携させる方法について解説します。
Lang Smithに登録
まずは、Lang Smithに登録します。以下のURLをクリックします。
Googleのアカウントを持っている方は、そのままGoogleのアカウントでログインすることができます。
APIキーの作成
続いて、APIキーを作成します。
画面左下の歯車マーク”settings”をクリックします。
その後、「Create API Key」をクリックしてAPIキーを作成します。
APIキーが作成できたらLang Smith側の準備は完了です。
Flask側の実装
次にFlask側の実装を行います。
今回は、以下の記事のコードを使用します。
FlaskとLangChainを使った簡単な質問応答アプリの作り方(RetrievalQA)
Lang Smith設定前のapp.pyです。
from flask import Flask, request, render_template
from langchain_openai import OpenAI, OpenAIEmbeddings
from langchain_community.vectorstores import FAISS
from langchain.chains import RetrievalQA
from langchain.docstore.document import Document
# Flaskアプリの初期化
app = Flask(__name__)
# OpenAIのAPIキー設定(環境変数を使用することを推奨)
import os
os.environ["OPENAI_API_KEY"] = "自身のOPEN AIのAPIを記述"
# ドキュメントの用意
documents = [
Document(page_content="『【推しの子】』は赤坂アカと横槍メンゴによる青年漫画で、2020年から2024年まで週刊ヤングジャンプで連載されました。ジャンルは転生、サスペンスで、芸能界の光と闇を描いています。"),
Document(page_content="主人公アクアは、前世の記憶を持ちながらアイドルの子供として生まれ変わり、母を殺害した犯人を探し復讐を誓います。一方で妹ルビーはアイドルとして活躍を目指します。"),
Document(page_content="作中のB小町は、主人公たちが活動するアイドルグループで、新旧2つの世代があります。旧B小町は主人公たちの母アイが所属し、新B小町はルビーたちが中心となって活動します。"),
Document(page_content="【推しの子】のアニメ版は2023年から放送が開始され、2024年には第2期が放送されました。さらに、実写化も進行中で、Amazon Prime Videoで配信され、劇場公開も予定されています。"),
Document(page_content="本作は芸能界の闇や現代社会の問題を描きつつも、復讐劇や人間ドラマが中心です。主人公アクアの復讐や、妹ルビーのアイドル活動を通じて、家族の絆や葛藤も描かれています。")
]
# ドキュメントの埋め込みとインデックスの作成
embeddings = OpenAIEmbeddings()
vectorstore = FAISS.from_documents(documents, embeddings)
# RetrievalQAチェーンの作成
llm = OpenAI(temperature=1)
qa_chain = RetrievalQA.from_chain_type(llm=llm, chain_type="stuff", retriever=vectorstore.as_retriever())
# ルートの定義
@app.route("/", methods=["GET", "POST"])
def index():
answer = None
if request.method == "POST":
question = request.form["question"]
response = qa_chain.invoke({"query": question})
answer = response['result']
return render_template("index.html", answer=answer)
# アプリの実行
if __name__ == "__main__":
app.run(debug=True)
ここにLang Smithのコードを設定します。以下の内容を追加します。
import os
os.environ["OPENAI_API_KEY"] = "自身のOPEN AIのAPIを記述"
### ↓ここから追加 ###
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_ENDPOINT"] = "https://api.smith.langchain.com"
os.environ["LANGCHAIN_API_KEY"] = "[あなたのAPIキー]"
実装はこれだけです。
動作確認
Flaskを起動して、確認をしてみます。
ブラウザにて、「こんにちは!」と入力してみます。
すると、Lang Smith側に今回のログが表示されています。
このように、FlaskとLang Smithを連携させます。
まとめ
今回の記事では、FlaskとLang Smithの連携方法について解説しました。
この手順を参考にすることで、LLMを活用したアプリケーションの開発や運用がより効率的になるだけでなく、信頼性や保守性の向上にもつながります。
Lang Smithのログ機能を活用すれば、アプリケーションの動作を詳細に追跡し、改善点を発見しやすくなります。
ぜひ実際に試して、より強力なLLMアプリケーションを構築してみてください!
ここまでお読みいただきありがとうございました。
Pythonの基礎から応用まで学べる
Python WebAcademy
Python WebAcademyでは、Pythonの基礎からアーキテクチャなどの応用的な内容まで幅広く学べます。また、ブラウザ上で直接Pythonコードを試すことができ、実践的なスキルを身につけることが可能です。
無料で試すインフラの学習はInfraAcademy
おすすめの記事