1 つの API を使用して複数の LLM にアクセスする AI チャットボットを作成する方法

王林
リリース: 2024-08-25 06:02:02
オリジナル
751 人が閲覧しました

元々は Liz Acosta による Streamlit ブログで公開されました

初めて AI 画像ジェネレーターを使って遊んだ時の気持ちよさを覚えていますか?それらの 2,000 万本の指と悪夢のようなスパゲッティを食べる画像は、ただ面白いだけではなく、うっかりそれを暴露してしまいました。 AI モデルの賢さは私たちと同じくらいです。私たちと同じように、彼らも手を描くのに苦労しています。

How to create an AI chatbot using one API to access multiple LLMs

AI モデルは急速に洗練されてきましたが、現在では非常に多くのモデルが存在します。そして、繰り返しになりますが、私たちと同じように、彼らの中には、特定のタスクにおいて他のタスクよりも優れている人もいます。たとえば、テキストの生成を考えてみましょう。 Llama、Gemma、Mistral はすべて LLM ですが、コード生成が得意な人もいれば、ブレインストーミング、コーディング、クリエイティブ ライティングが得意な人もいます。これらはプロンプトに応じて異なる利点を提供するため、AI アプリケーションに複数のモデルを含めることは理にかなっている可能性があります。

しかし、コードを複製せずにこれらすべてのモデルをアプリにどのように統合するのでしょうか? AI の使用をよりモジュール化し、維持と拡張を容易にするにはどうすればよいでしょうか?そこで API は、さまざまなテクノロジー間で通信するための標準化された一連の手順を提供できます。

このブログ投稿では、Streamlit で Replicate を使用して、単一の API 呼び出しでさまざまな LLM を構成してプロンプトを表示できるアプリを作成する方法を説明します。心配しないでください。私が「アプリ」と言うとき、Flask サーバー全体を起動したり、ルートを面倒に設定したり、CSS について心配したりする必要があるという意味ではありません。 Streamlit がそれをカバーします?

続きを読んで学習してください:

    レプリケートとは
  • Streamlit とは
  • チャットボット Streamlit アプリを複製するデモを構築する方法
  • Replicate を使用するためのベスト プラクティス
読みたくないですか?このデモを探索する他の方法は次のとおりです:

    ここの Streamlit Cookbook リポジトリでコードを見つけてください
  • ここでアプリのデプロイされたバージョンを試してください
  • Replicate 創設デザイナー、Zeke Sikelianos によるビデオウォークスルーをここでご覧ください。
レプリケートとは何ですか?

Replicate は、開発者が CLI、API、または SDK を介してオープンソース AI モデルをデプロイ、微調整し、アクセスできるようにするプラットフォームです。このプラットフォームを使用すると、プログラムによって AI 機能をソフトウェア アプリケーションに簡単に統合できます。

Replicateで利用可能なモデル

  • テキスト: Llama 3 のようなモデルは、入力プロンプトに基づいて、一貫した文脈に関連したテキストを生成できます。
  • 画像: 安定拡散などのモデルは、テキスト プロンプトから高品質の画像を生成できます。
  • 音声: ささやき声のようなモデルは音声をテキストに変換でき、xtts-v2 のようなモデルは自然な音声を生成できます。
  • ビデオ: animate-diff などのモデル、または videocrafter などの安定した拡散のバリエーションは、それぞれテキストと画像のプロンプトからビデオを生成および/または編集できます。
Replicate を一緒に使用すると、入力を受け入れ、テキスト、画像、音声、ビデオなどのさまざまな形式で出力を生成できるマルチモーダル アプリを開発できます。

ストリームリットとは何ですか?

Streamlit は、わずか数行のコードで高度にインタラクティブなアプリを構築できるオープンソースの Python フレームワークです。 Streamlit は、LLM、ベクトル データベース、または LangChain、LlamaIndex、Weights & Biases などのさまざまな AI フレームワークなど、生成 AI のすべての最新ツールと統合します。 Streamlit のチャット要素を使用すると、AI との対話が特に簡単になり、「データと対話する」チャットボットを構築できます。

Streamlit を Replicate などのプラットフォームと組み合わせると、アプリ設計のオーバーヘッドなしで生成 AI アプリケーションを作成できます。

? Streamlit がどのように前進する方向にバイアスをかけるかについて詳しくは、このブログ投稿をご覧ください。

Streamlit について詳しくは、101 ガイドをご覧ください。

アプリのレシピをお試しください: Replicate + Streamlit

しかし、私の言葉を鵜呑みにしないでください。自分でアプリを試すか、ビデオのウォークスルーを見てどう思うかを確認してください。

このデモでは、Replicate を使用して Streamlit チャットボット アプリを起動します。このアプリは単一の API を使用して 3 つの異なる LLM にアクセスし、温度やトップポイントなどのパラメーターを調整します。これらのパラメーターは、AI が生成したテキストのランダム性と多様性、およびトークンの選択方法に影響を与えます。

?

モデル温度とは何ですか? 温度は、モデルがトークンを選択する方法を制御します。温度が低いとモデルはより保守的になり、一般的で「安全な」単語が優先されます。逆に、温度が高いと、モデルは可能性の低いトークンを選択することでより多くのリスクを取ることが奨励され、その結果、より創造的な出力が得られます。

? top-p とは何ですか? 「核サンプリング」とも呼ばれ、ランダム性を調整するもう 1 つの方法です。これは、top-p 値が増加するにつれて、より幅広いトークンのセットを考慮することで機能します。 top-p 値が高いほど、より多様な範囲のトークンがサンプリングされ、より多様な出力が生成されます。

前提条件

  • Python バージョン >=3.8、!=3.9.7
  • レプリケート API キー (無料トライアルの制限を超えて機能にアクセスするには、支払い方法が必要であることに注意してください。)

? API キーの詳細については、こちらのブログ投稿をご覧ください。

環境設定

ローカルセットアップ

  1. Cookbook リポジトリのクローンを作成します: git clone https://github.com/streamlit/cookbook.git
  2. Cookbook のルート ディレクトリから、ディレクトリを Replicate レシピに変更します: cd Recipes/replicate
  3. レプリケート API キーを .streamlit/secrets_template.toml ファイルに追加します
  4. ファイル名を Secrets_template.toml から Secrets.toml に更新します: mv .streamlit/secrets_template.toml .streamlit/secrets.toml (Streamlit でのシークレット処理の詳細については、こちらのドキュメントを参照してください。)
  5. 仮想環境を作成します: python -m venv replicatevenv
  6. 仮想環境をアクティブ化します:sourcereplicatevenv/bin/activate
  7. 依存関係をインストールします: pip install -rrequirements.txt

GitHub コードスペースのセットアップ

  1. GitHub のクックブック リポジトリで、[コード] ボタンから [コードスペース] オプションを選択して新しいコードスペースを作成します

    How to create an AI chatbot using one API to access multiple LLMs

  2. コードスペースが生成されたら、Replicate API キーを Recipes/replicate/.streamlit/secrets_template.toml ファイルに追加します

  3. ファイル名を Secrets_template.toml から Secrets.toml に更新します
    (Streamlit でのシークレット処理の詳細については、こちらのドキュメントを参照してください。)

  4. クックブックのルート ディレクトリから、ディレクトリを Replicate レシピに変更します: cd Recipes/replicate

  5. 依存関係をインストールします: pip install -rrequirements.txt

Replicate を使用してテキスト生成モデルを実行する

  1. recipate_hello_world.py という名前のファイルを Recipes/replicate ディレクトリに作成します
  2. 次のコードをファイルに追加します:

    import replicate   
    
    import toml
    
    import os
    
    # Read the secrets from the secrets.toml file
    with open(".streamlit/secrets.toml", "r") as f:
        secrets = toml.load(f)
    
    # Create an environment variable for the Replicate API token 
    os.environ['REPLICATE_API_TOKEN'] = secrets["REPLICATE_API_TOKEN"]
    
    # Run a model
    for event in replicate.stream("meta/meta-llama-3-8b",
                                 input={"prompt": "What is Streamlit?"},):
        print(str(event), end="")
    
    ログイン後にコピー
  3. スクリプトを実行します: python replicate_hello_world.py

モデルによって生成されたテキストの印刷が表示されるはずです。

レプリケート モデルとその動作の詳細については、ここでドキュメントを参照してください。その中核となる、レプリケート「モデル」とは、入力を受け入れて出力を返す、トレーニングされ、パッケージ化され、公開されたソフトウェア プログラムを指します。

この特定のケースでは、モデルは meta/meta-llama-3-8b で、入力は "prompt": "What is Streamlit?" です。スクリプトを実行すると、Replicate エンドポイントへの呼び出しが行われ、印刷されるテキストは Replicate を介してモデルから返された出力です。

デモの実行 Streamlit チャットボット アプリを複製する

デモ アプリを実行するには、Streamlit CLI を使用します: streamlit run streamlit_app.py。

このコマンドを実行すると、アプリがローカルホストのポートにデプロイされます。この場所にアクセスすると、Streamlit アプリが実行されていることがわかります。

How to create an AI chatbot using one API to access multiple LLMs

このアプリを使用すると、レプリケート経由でさまざまな LLM にプロンプ​​トを表示し、指定した構成に従って生成テキストを生成できます。

複数の LLM モデルに共通の API

Replicate を使用すると、1 つの API で複数のオープンソース LLM にプロンプ​​トを表示できるため、最新のソフトウェア フローへの AI の統合が簡素化されます。

これは次のコード ブロックで実現されます:

for event in replicate.stream(model, 
                             input={"prompt": prompt_str,
                             "prompt_template": r"{prompt}", 
                             "temperature": temperature,
                             "top_p": top_p,}):
    yield str(event)
ログイン後にコピー

モデル、温度、およびトップ p 構成は、Streamlit の入力ウィジェットを介してユーザーによって提供されます。 Streamlit のチャット要素を使用すると、アプリにチャットボット機能を簡単に統合できます。最も良い点は、これらのコンポーネントを実装してスタイル設定するために JavaScript や CSS の知識が必要ないことです。Streamlit は、それらすべてをすぐに提供します。

ベストプラクティスを複製する

プロンプトに最適なモデルを使用する

Replicate は、パブリック モデルを検索するための API エンドポイントを提供します。 Web サイトで注目のモデルやユースケースを調べることもできます。これにより、特定のニーズに適したモデルを簡単に見つけることができます。

モデルが異なれば、パフォーマンス特性も異なります。精度と速度のニーズに基づいて、適切なモデルを使用してください。

Webhook、ストリーミング、画像 URL によるパフォーマンスの向上

レプリケートの出力データは 1 時間のみ利用可能です。 Webhook を使用してデータを独自のストレージに保存します。 Webhook を設定してモデルからの非同期応答を処理することもできます。これは、スケーラブルなアプリケーションを構築するために非常に重要です。

可能な場合はストリーミングを活用します。一部のモデルはストリーミングをサポートしており、生成中に部分的な結果を取得できます。これはリアルタイム アプリケーションに最適です。

画像 URL を使用すると、Base 64 でエンコードされたアップロードされた画像を使用するよりもパフォーマンスが向上します。

Streamlit で AI の可能性を解き放つ

Streamlit を使用すると、数か月に及ぶアプリ設計作業が、わずか数行の Python に合理化されます。これは、最新の AI 発明を披露するのに最適なフレームワークです。

Streamlit クックブックの他の AI レシピを使用してすぐに起動して実行できます。 (そして、あなたが何を構築しているのかをフォーラムで見せてもらうことを忘れないでください!)

ストリームリットを楽しんでください! ?

以上が1 つの API を使用して複数の LLM にアクセスする AI チャットボットを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!