(gradio5)チャットボットの形式が変わっていましたね。messagesに変更しよう。
(gradio5)チャットボットの形式が変わっていましたね。messagesに変更しよう。
こんにちは、makokonです。今回は、Gradioでチャットボットを作成する際のバージョンアップに伴う変更についてお話しします。特に、Gradio 5での新しいメッセージ形式への対応に焦点を当てます。この変更は、従来のプログラムに手直しを要するものですが、結果的には多くの大規模言語モデル(LLM)のメッセージ形式と互換性を持たせることができ、便利です。では、具体的にどのように対応したのかを見ていきましょう。
新しいgradioの特徴についてはこちら。
多くの改善がされていますが、そのへんは詳しい解説を書いておられる方がたくさんいますので、適当に検索してください。基本的に互換性が保たれている限り、あまり気にしなくてもいいかなと思っています。
気になったのはこちら
便利機能としてGradioのチャットボットは、.retry、.undo、likeという3つのイベントを提供しており、これらの機能をアプリケーションに組み込むことができます。それはそれとして、このページには、サンプルコードとして
def respond(
prompt: str,
history,
):
if not history:
history = [{"role": "system", "content": "You are a friendly chatbot"}]
history.append({"role": "user", "content": prompt})
# 以下略
というような、記述がありchatbotの形式が従来から変わっています。
OpenAIのAPIでも利用するうようなおなじみの、メッセージ形式ですで、とても便利になったとも言えますが、従来と互換性がないとなると問題ですね。
確認してみましょう
従来コード gradio4.py
pip install --upgrade gradio
$ pip list|grep gradio
gradio 5.3.0
gradio_client 1.4.2
import gradio as gr
with gr.Blocks() as demo:
chatbot = gr.Chatbot()
msg = gr.Textbox(label="チャット 質問を入力")
def chat_ai(query,chat_history):
response = "Hello Gradio World"
chat_history.append((query,response))
return "",chat_history
msg.submit(chat_ai, [msg, chatbot], [msg, chatbot])
demo.launch(share=True)
テキストボックスになにか入力してエンターを押すと、"Hello Gradio World"と返す、人工無能チャットです。
これを実行すると、以下のようなwarningメッセージがずらずら出ます。
今のところ、従来のままでも動いているようですが、将来的にはきっと互換性がなくなるでしょう。そもそも、実行するたびにこんなメッセージを見ていたら心が痛みます。
早速直しましょう。
新しいmessages形式への対応 gradio5.py
では早速
import gradio as gr
with gr.Blocks() as demo:
#chatbot = gr.Chatbot()
chatbot = gr.Chatbot(type="messages")
msg = gr.Textbox(label="チャット 質問を入力")
def chat_ai(query,chat_history):
response = "Hello Gradio World"
#chat_history.append((query,response))
chat_history.append({"role":"user","content":query})
chat_history.append({"role":"assistant","content":response})
return "",chat_history
msg.submit(chat_ai, [msg, chatbot], [msg, chatbot])
demo.launch(share=True)
変更した行は、
chatbot = gr.Chatbot(type="messages")
chat_history.append({"role":"user","content":query})
chat_history.append({"role":"assistant","content":response})
の3行です。
実行すると、無事ワーニングが消えました。
実行結果は「無能」なので、いいでしょう。
この結果、多くのLLMの会話履歴管理をそのまま利用できるので、とても便利ですね。
ただ、今回は事実上1箇所の変更でしたが、多くのチャットアプリでは、会話履歴だけでなく、システムメッセージや、エラーコード、テキストモード、画像モードなど多くの表示にチャットボットを利用していますので、メッセージ管理がバラけていると大変ですね。
この機会に、メッセージ管理を一つにまとめようと思います。
まとめ
今回は、Gradio 5へのアップデートに伴い、互換性が怪しくなる従来のチャットボットコードを新しいメッセージ形式に対応させました。この新形式は、多くのLLMと共通しており、より一貫性のあるメッセージ管理が可能です。Gradio 5の新機能を活用するためにも、今後はこの新しい形式を積極的に取り入れていくことをおすすめします。
#Gradio5
#ChatbotDevelopment
#MachineLearning
#AIIntegration
#PythonCoding
#OpenAI
#TechUpdates
#APIDevelopment
#SoftwareUpgrade
#DevCommunity
#チャットボット
#機械学習
#AI統合
#Pythonプログラミング
#技術アップデート
#API開発
#ソフトウェアアップグレード
#開発者コミュニティ