チャットボット開発の三銃士: LLAMA、LangChain、Python

チャットボット開発の三銃士: LLAMA、LangChain、Python

チャットボットの開発は、複数のテクノロジーとツールを組み合わせて使用​​する必要がある複雑で困難な作業です。この分野では、LLAMA、LangChain、Python の組み合わせが強力な組み合わせを形成し、チャットボットの設計と実装に優れたサポートを提供します。

まず、LLAMA は、高度な意味理解と対話管理機能を備えた強力な自然言語処理ツールです。これにより、チャットボットはユーザーの意図をより深く理解し、コンテキストに基づいてインテリジェントに応答できるようになります。 LLAMA はカスタマイズ性が高いため、開発者は実際のニーズに応じてチャットボットの言語処理機能を柔軟に調整できます。

フルスタック言語テクノロジープラットフォームとして、LangChain は Chatbot 向けの豊富な開発リソースを提供します。音声認識、テキスト処理、機械翻訳などの複数の言語テクノロジーを統合し、チャットボットのマルチモーダルインタラクションを包括的にサポートします。 LangChain の強力な機能により、開発者は複雑で柔軟なチャットボット システムを簡単に構築できます。

汎用プログラミング言語である Python は、チャットボットの開発に最適です。簡潔で強力な構文により開発プロセスがより効率的になり、豊富なサードパーティライブラリとエコシステムにより、チャットボット開発のための幅広いツールとリソースが提供されます。 Python のクロスプラットフォームの性質により、Chatbot をさまざまな環境で実行し、より幅広いアプリケーションを実現することもできます。

チャットボットの開発は、一般的な言語の理解と生成を実現する能力で大きな注目を集めている言語モデルの一種である大規模言語モデル (LLM) と切り離すことはできません。 LLM は、トレーニング中に大量のデータを使用して数十億のパラメータを学習し、トレーニングと実行中に大量のコンピューティング リソースを消費することで、これらの機能を実現します。

Langchain、llama、Python を使用して簡単なチャットボットを構築しましょう。

このシンプルなプロジェクトでは、HIV/AIDS に関する特定のトピックに関するチャットボットを作成したいと考えました。つまり、チャットボットに送信するメッセージに対して、チャットボットはトピックとメッセージの関連性に基づいて回答を試みます。しかし、その前に、いくつかの必要なコンポーネントをインストールしてダウンロードする必要があります。

1. 大規模言語モデル

Hugging FaceからダウンロードしたMETA AIのLLAMA 2を使用しました。

2. ランチェイン

言語モデルに基づくアプリケーションを開発するためのフレームワーク

pip install langchain

3. Llama-cpp-pythonをインストールする

llama.cpp ライブラリの Python 実装 (最新の llama.cpp バージョンを使用しようとしましたが、動作しませんでした。そのため、0.1.78 安定バージョンを使用することをお勧めします。また、C++ コンパイラがインストールされていることを確認してください)。

 pip install llama-cpp-pythnotallow==0.1.78

4. ライブラリのインポート

from langchain.prompts importPromptTemplate from langchain.llms importLlamaCpp from langchain.callbacks.manager importCallbackManager from langchain.callbacks.streaming_stdout import( StreamingStdOutCallbackHandler )

PromptTemplate: ユーザー入力に基づいて動的な値を構成するオブジェクトである PromptValue の作成を担当します。

llamacpp: Facebook の LLAMA モデルの C/C++ ポート。

CallbackManager: LangChain からのコールバックを処理します。

StreamingStdOutCallbackHandler: ストリーミング用のコールバック ハンドラー。

コード

まず、モデル パス用に“your_model_path”という変数を作成します。次に、トピックを HIV/AIDS のみに制限したいので、 “chat_topic”というトピック変数を作成し、 “HIV/AIDS”を入力します。もちろん、これは変更できます。トピックを制限したくない場合は、 “chat_topic”を削除してテンプレートを変更するだけです。その後、ユーザー入力を受け取るための“user_question”という変数と、後で使用するテンプレートを作成します。

 your_model_path = "写入你的模型路径" chat_topic = "hiv/aids" user_question = str(input("输入你的问题:")) template= """请解释这个问题:“{question}”,主题是关于{topic} """

先ほど作成したテンプレートを使用するPromptTemplate変数を作成し、それを“prompt”変数に割り当てます。次に、プロンプトの形式を変更し、 “final_prompt”変数に割り当てます。先ほど初期化した“chat_topic”のトピック“user_question”中的问题を使用します次に、 “Callbackmanager”という変数を作成し、それにストリーム ハンドラーを割り当てます。

 prompt = PromptTemplate.from_template(template) final_prompt = prompt.format( topic=chat_topic, questinotallow=user_question ) CallbackManager= CallbackManager([StreamingStdOutCallbackHandler()])

その後、モデルを作成しましょう。

 llm = LlamaCpp( model_path=your_model_path, n_ctx=6000, n_gpu_layers=512, n_batch=30, callback_manager=CallbackManager, temperature=0.9, max_tokens=4095, n_parts=1, verbose=0 )

model_path : LLAMA モデルへのパス。

n_ctx : トークン コンテキスト ウィンドウ。応答を生成するときにモデルが受け入れることができるトークンの数。

n_gpu_layers : GPU メモリにロードするレイヤーの数。

n_batch : 並列処理するトークンの数。

callback_manager : コールバックを処理します。

temperature : サンプリングに使用する温度。温度が高いほど、より創造的で想像力豊かなテキストが生成され、温度が低いほど、より正確で現実的なテキストが生成されます。

max_tokens : 生成されるトークンの最大数。

n_parts : モデルを分割するパーツの数。

verbose : 詳細な出力を出力します。

最後に、モデルを呼び出してプロンプトを渡します。

 python "你的文件名.py"

実行するには、上記のコマンドを cmd に入力するだけです。

デモ

完全なコード

from langchain.prompts importPromptTemplate from langchain.llms importLlamaCpp from langchain.callbacks.manager importCallbackManager from langchain.callbacks.streaming_stdout import( StreamingStdOutCallbackHandler ) your_model_path = "write your model path" chat_topic = "hiv/aids" user_question = str(input("Enter your question : ")) template= """ Please explain this question : "{question}" the topic is about {topic} """ prompt = PromptTemplate.from_template(template) final_prompt = prompt.format( topic=chat_topic, questinotallow=user_question ) CallbackManager= CallbackManager([StreamingStdOutCallbackHandler()]) llm = LlamaCpp( model_path=your_model_path, n_ctx=6000, n_gpu_layers=512, n_batch=30, callback_manager=CallbackManager, temperature=0.9, max_tokens=4095, n_parts=1, verbose=0 ) llm(final_prompt)

<<:  オーディオ品質評価方法の簡単な分析

>>:  研究によると、ChatGPT は科学的仮説の偽のデータセットを生成し、学術的誠実性に脅威を与える可能性がある。

ブログ    
ブログ    
ブログ    

推薦する

ロシアのロボット宇宙飛行士が3Dプリントされた骨組織サンプルを持って地球に帰還

ロシア衛星ネットワークによると、最近、ロシアの「3Dバイオプリンティングソリューションズ」社のマネー...

会話型AIの本当の限界は人間の忍耐力だ

私たちは多くの驚くべき進歩を目撃しました。最新の AI 技術は、数千億の計算能力を瞬時に活用すること...

...

顔認識技術の応用リスクと法的規制

顔認識技術は、顔の特徴に基づいて人物を識別する高度な認識技術です。非感度、利便性、正確性から広く利用...

機械学習モデルのパフォーマンスを測定する 10 の指標

大規模モデルは非常に強力ですが、実際の問題を解決するには必ずしも大規模モデルに完全に依存する必要はあ...

ネイチャー、サイエンス、セルが参加し、80の学術機関がCOVID-19研究を無料で提供する

[[314283]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI...

...

Nokelockの「1+2」戦略は、スマートロックを商業利用の新時代へと導きます

5月15日、世界有数のIoTロック企業であるnokelockの製品発表会が北京金宇シェラトンホテルで...

...

データ分析 機械学習 タイタニック号事件 - 裁判

私は51CTOアカデミー講師の唐玉迪です。51CTOアカデミーの「4.20 ITリチャージフェスティ...

...

インテル、コード名「NLP Architect」の自然言語処理用オープンソースライブラリを発表

[[230933]] 1年前に設立されたインテルAIラボは最近、新たな動きを見せている。数日前、In...

製造業で「ロボット」が増加中

1997年、IBMが開発したディープ・ブルーがロシアのチェス名人ガルリ・カスパロフに勝利し、人工知能...

ベイジアンネットワークを使用して病院の患者数を予測する

翻訳者|朱 仙中レビュー | Chonglou複雑さを乗り越える: 医療における患者数の予測医療にお...