チャットボット開発の三銃士: 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 は科学的仮説の偽のデータセットを生成し、学術的誠実性に脅威を与える可能性がある。

ブログ    
ブログ    
ブログ    

推薦する

機械学習が近い将来教育を変える5つの方法

テクノロジーは私たちの生活、仕事、遊び方を変えており、教育も例外ではありません。機械学習は他の分野を...

...

人工知能の革新はいかにしてより賢いロボットの進化につながるのか

ロボットはコンピューターによってプログラムされた機械です。人間の介入なしに一連の複雑なアクションを自...

自動運転の 6 つのレベル: 真の無人運転までどれくらいの距離があるのでしょうか?

社会の発展に伴い、わが国の工場は徐々に手作業中心から設備中心へと変化し、人類の創造性が十分に反映され...

回帰、分類、クラスタリング: 機械学習アルゴリズムの長所と短所を分析する 3 つの主要な方向

このチュートリアルでは、著者が最新の機械学習アルゴリズムについて簡単に実践的なレビューを行います。同...

...

人工ニューラル ネットワーク入門 - コンピューターは学習できるか?

人工ニューラル ネットワークは、人工知能 (人間の認知能力を模倣するプログラム) を作成する方法です...

同義千文の720億パラメータモデルがオープンソース化、初の「フルサイズ・フルモード」オープンソース化を実現

12月1日、アリババクラウド同義千文の720億パラメータモデルQwen-72Bがオープンソース化され...

ChatGPT に触発されて、Google DeepMind は 7100 万の遺伝子変異を予測します。 AIが人間の遺伝学を解読

タンパク質予測モデルAlphaFoldがAIの世界に津波のような波を起こした後、Alphaファミリー...

...

...

RAG か微調整か?マイクロソフトは特定分野における大規模モデルアプリケーションの構築プロセスガイドを公開した

大規模な言語モデル アプリケーションを構築するときに、独自のデータとドメイン固有のデータを組み込む一...

今後の企業イノベーションを牽引する10の優れたテクノロジー

エンタープライズ テクノロジーの将来は、業界を変えるほどの大きな革新をもたらすでしょう。 5G から...

...