こんにちは、みなさん! 私はナタラジです。あなたと同じように、最近の人工知能の進歩に魅了されています。起こっているすべての発展を常に把握しておく必要があることに気づき、私は個人的な学習の旅に乗り出すことに決め、こうして100 日間の AIが誕生しました。このシリーズでは、LLM について学び、ブログ投稿を通じてアイデア、実験、意見、傾向、学習内容を共有します。 HackerNoonのここから、または私の個人的な Web サイトからこの旅をたどることができます。今日の記事では、GPT-4 を利用してセマンティック カーネルを構築してみます。
私が書いている「100 Days of AI」シリーズを読んでいる人なら、ほとんどの投稿に何らかの実験やデモがあることに気づくでしょう。投稿の最後には、私が調査したテクノロジーで実現可能なアイデアもリストします。したがって、次の明らかな疑問は、これらの実験をデモ可能な製品に簡単にまとめて人々と共有し、フィードバックを得る方法はあるだろうか、ということです。
この投稿では、AI 実験をフィードバックを取得できるデモに簡単に変換する方法を検討します。
テキストを取り込んで概要を返す AI アプリを作成するとします。そして、それを人々と共有してフィードバックを得たいと考えています。このアプリ用の Web アプリを作成する必要がある場合は、ホスティング ソリューションを見つけて、スタック全体がどのようになるかを把握するために UI をコーディングする必要があります。もちろん、より高速に実行できるようにする Web アプリ スタックが開始されていますが、ユースケースにはそれほど複雑さは必要ありません。代わりに、このアプリのコードを書かずに Web アプリのようなインターフェイスを作成する Gradio を使用します。
Gradio は、AI アプリのデモを簡単に作成し、Web アプリの形式で視聴者と共有できる Python ライブラリです。
Gradio を使用して生成 AI 実験を簡単にデモする方法を理解するために、アプリに長いテキストを与えると、アプリがその長いテキストの概要を出力する要約 Web アプリを構築します。
Gradio と一緒にハグ顔アプリを使用するので、手順に従ってハグ顔 API キーを手元に置いておくようにしてください。まず、.env ファイルから API キーをロードし、必要な Python モジュールを追加します。
import os import io from IPython.display import Image, display, HTML #from PIL import Image import base64 import openai env_path = '../.env' from dotenv import load_dotenv, find_dotenv _ = load_dotenv(find_dotenv(env_path)) # read local .env file hf_api_key = os.environ['HF_API_KEY']
私たちが達成したいことの核となるロジックは、長いテキストをモデルに送信し、テキストの概要を取得することです。長いテキストを入力として受け取り、 distilbartと呼ばれるハグ顔のモデルを呼び出す関数を定義します。これを行う関数は次のとおりです。
def get_completion(inputs, parameters=None, ENDPOINT_URL=os.environ['HF_API_SUMMARY_BASE']): headers = { "Authorization": f"Bearer {hf_api_key}", "Content-Type": "application/json" } data = { "inputs": inputs } if parameters is not None: data.update({"parameters": parameters}) response = requests.request("POST", ENDPOINT_URL, headers=headers, data=json.dumps(data) ) return json.loads(response.content.decode("utf-8"))
Gradio と対話する主な方法は、インターフェイス関数を使用することです。関数とそれに対応する入力と出力を渡す必要があります。この目的のために、 summaryという新しい関数を定義したことに注意してください。この関数は、要約される長いテキストである入力を受け取り、関数はステップ 2 のget_completion関数を呼び出して入力テキストの要約を取得し、それを出力として返します。最後の行では、gradio にこのアプリのデモを起動するよう依頼しています。 share=Trueを指定することで、他の人に共有できるパブリック リンクを作成するように gradio に指示し、ローカル Web ホストを実行する必要がある server_port も指定します。以下のコードでは、出力に表示される入力フィールドと出力フィールドのタイトル、説明、ラベルもカスタマイズしています。
import gradio as gr def summarize(input): output = get_completion(input) return output[0]['summary_text'] gr.close_all() demo = gr.Interface(fn=summarize, inputs=[gr.Textbox(label="Text to summarize", lines=6)], outputs=[gr.Textbox(label="Result", lines=3)], title="Text summarization with distilbart-cnn", description="Summarize any text using the `shleifer/distilbart-cnn-12-6` model under the hood!" ) demo.launch(share=True, server_port=int(os.environ['PORT1']))
これを実行すると、ブラウザの http://127.0.0.1:<ポート番号> に出力が表示されます。
Gradio を使用してプロジェクトをデモするのはとても簡単です。ここでの利点は、開発者が UI スタックを考え出し、そのスタックを学習して本番環境に導入するという複雑な作業を行う必要がないことです。 Gradio が代わりにやってくれます。
Gradio はさまざまな入力および出力タイプを提供しており、これを使用すると、簡単に共有できる、より複雑で興味深いデモを作成できます。今後の投稿では、Gradio やその他のツールを使用したデモをさらに詳しく見ていきます。
以上、100 日間の AI の 12 日目でした。
私は「Above Average」というニュースレターを執筆しており、大手テクノロジー業界で起こっているすべての背後にある二次的な洞察について話しています。テクノロジー業界にいて、平均的な人間になりたくない場合は、購読してください。
AI の 100 日に関する最新情報については、 Twitter 、 LinkedIn 、またはHackerNoonで私をフォローしてください。テクノロジーに携わっている場合は、ここにあるテクノロジー専門家のコミュニティに参加することに興味があるかもしれません。