ホームページ >テクノロジー周辺機器 >AI >GPT を使用してチャットボットを構築するための段階的な詳細な分析

GPT を使用してチャットボットを構築するための段階的な詳細な分析

PHPz
PHPz転載
2023-04-07 19:41:012399ブラウズ

ChatGPT を使用したチャットは楽しくて有益です。チャットすることで、新しいアイデアを検討できます。しかし、これらはよりカジュアルな使用例であり、特に幻覚を引き起こす可能性があることに気づくと、目新しさはすぐに薄れてしまいます。

ChatGPT をより効率的に使用するにはどうすればよいですか? OpenAI が GPT3.5 シリーズの API をリリースすると、チャット以上のことができるようになります。 QA (質問と回答) は、企業や個人にとって非常に効果的な使用例です。自然言語を使用してボットに自分のファイル/データについて質問すると、ボットはファイルから情報を取得して応答を生成することで迅速に答えることができます。顧客サポート、包括的なユーザー調査、個人の知識管理などに使用します。

ボットにファイルに関連する質問をしてください。安定拡散法を使用して生成された画像。

この記事では、独自のデータに基づいて Q&A チャットボットを構築する方法について説明します。これには、一部のメソッドが機能しない理由や、llama-index と GPT API の使用方法に関するステップバイステップ ガイドが含まれます。効率的な方法でドキュメント Q&A チャットボットを構築します。

(Q&A チャットボットの構築方法だけを知りたい場合は、「ドキュメント Q&A チャットボットのステップバイステップの構築」セクションに直接スキップできます)

さまざまな方法を検討する

ChatGPT が登場したら 仕事をするときに、ChatGPT を仕事のアシスタントとして使用して、時間とエネルギーを節約することを考えることができます。

最初に思い浮かぶのは、この目標を達成するために、独自のデータを使用して GPT モデルを微調整することです。ただし、微調整にはかなりの費用がかかり、サンプルを含む大規模なデータセットが必要です。ファイルが変更されるたびに微調整することも不可能です。さらに重要な点は、微調整によってモデルにドキュメント内のすべての情報を「認識」させることはできず、代わりにモデルに新しいスキルを教える必要があるということです。したがって、微調整は (複数の) ドキュメントの品質保証にとって良いアイデアではありません。

2 番目の方法は、プロンプトにコンテキストを提供してプロンプト エンジニアリングを行うことです。たとえば、直接質問する代わりに、実際の質問の前に元のドキュメントの内容を追加できます。しかし、GPT モデルの注意力は限られており、ヒントで数千単語しか受け入れられません (約 4000 トークンまたは 3000 単語)。何千もの顧客フィードバックメールと何百もの製品ドキュメントがあるため、プロンプトですべてのコンテキストを提供することは不可能です。料金は使用されるトークンの数に基づいて決定されるため、API に長いコンテキストを渡すこともコストがかかります。

I will ask you questions based on the following context:
— Start of Context —

YOUR DOCUMENT CONTENT

— End of Context—
My question is: “What features do users want to see in the app?”

プロンプトには入力タグの数に制限があるため、この問題を解決するアイデアを思いつきました。まずアルゴリズムを使用してドキュメントを検索し、関連する抜粋を抽出し、次にこれらのみを使用します。コンテキストは問題とともに GPT モデルに渡されます。このプロセスでは、シンプルで便利な gpt-index ライブラリ (現在は LlamaIndex に名前変更されました) を使用する必要があります。

GPT を使用してチャットボットを構築するための段階的な詳細な分析

ファイルから関連する部分を抽出し、プロンプトにフィードバックします。

次のセクションでは、LlamaIndex と GPT を使用して独自のデータに Q&A チャットボットを構築するためのステップバイステップのチュートリアルを示します。

ドキュメント Q&A チャットボットを構築するステップバイステップ

このセクションでは、LlamaIndex と GPT (text-davinci-003) を使用して、既存のドキュメントに基づいて Q&A チャットボットを構築します。自然言語でドキュメントについて質問し、チャットボットから回答を得ることができます。

前提条件

このチュートリアルを開始する前に、いくつかの準備をする必要があります:

  • OpenAI API キー (https://platform.openai にあります) .com /account/api-keys が見つかりました。
  • ファイル データベース。 LlamaIndex は、Notion、Google Docs、Asana など、さまざまなデータ ソースをサポートしています。この記事では、簡単なテキスト ファイルのみをデモンストレーションに使用します。
  • ローカルの Python 環境またはオンラインの Google Colab ノートブック。

ワークフロー

ワークフローは非常にシンプルで、必要な手順はいくつかだけです:

  • 1. LlamaIndex を使用してドキュメント データのインデックスを作成します。
  • 2. 自然言語を使用してインデックスをクエリします。
  • 3.LlamaIndex は関連する部分を取得し、GPT チップに渡します。
  • 4. GPT に関連するコンテキストを尋ね、応答を作成します。

LlamaIndex は、生のドキュメント データをベクトル インデックスに変換します。これはクエリに非常に効率的です。このインデックスを使用して、クエリとデータの類似性に基づいて最も関連性の高い部分を見つけます。次に、取得したコンテンツを GPT に送信するプロンプトに挿入し、GPT が質問に答えるためのコンテキストを取得できるようにします。

セットアップ

最初にライブラリをインストールする必要があります。ターミナルまたは Google Colab Notebook で次のコマンドを実行するだけです。これらのコマンドは、LlamaIndex と OpenAI の両方をインストールします。

!pip install llama-index
!pip install openai

次のステップは、これらのライブラリを Python にインポートし、新しい .py ファイルに OpenAI API キーを設定することです。

# 导入必要的库
from llama_index import GPTSimpleVectorIndex, Document, SimpleDirectoryReader
import os

os.environ['OPENAI_API_KEY'] = 'sk-YOUR-API-KEY'

インデックスの構築と保存

必要なライブラリをインストールしてインポートした後、ドキュメントのインデックスを構築する必要があります。

ドキュメントをロードするには、LllamaIndex が提供する SimpleDirectoryReader メソッドを使用するか、文字列からロードできます。

# 从一个目录中加载
documents = SimpleDirectoryReader('your_directory').load_data()

# 从字符串中加载,假设将数据保存为字符串text1,text2,...
text_list = [text1, text2, ...]
documents = [Document(t) for t in text_list]

LlamaIndex还提供各种数据连接器,包括Notion、Asana、Google Drive、Obsidian等。可以在https://llamahub.ai/找到可用的数据连接器。

加载完文档后,就可以用以下方法简单地构建索引了:

# 构建一个简单的向量索引
index = GPTSimpleVectorIndex(documents)

如果想保存索引并加载它以便将来使用,可以使用以下方法:

# 将索引保存在`index.json`文件中
index.save_to_disk('index.json')
# 从保存的`index.json`文件中加载索引
index = GPTSimpleVectorIndex.load_from_disk('index.json')

查询索引并获得响应

查询索引很简单:

# 查询索引
response = index.query("What features do users want to see in the app?")
print(response)

GPT を使用してチャットボットを構築するための段階的な詳細な分析

一个回应的例子。

然后就可以得到答案了。在幕后,LlamaIndex将接收提示,在索引中搜索相关块,并将提示和相关块传递给GPT。

一些高级用法的说明

上面的步骤只是展示了使用LlamaIndex和GPT回答问题的一个非常简单的入门用法。但可以做得比这更多。事实上,可以配置LlamaIndex来使用不同的大型语言模型(LLM),为不同的任务使用不同类型的索引,用一个新的索引来更新现有的索引,等等。如果有兴趣,可以在https://gpt-index.readthedocs.io/en/latest/index.html,阅读他们的文档。

总结

本文中展示了如何结合使用GPT和LlamaIndex来构建一个文档问答聊天机器人。虽然GPT(和其他LLM)本身就很强大,但如果把它与其他工具、数据或流程结合起来,它的力量也会被大大增强。

以上がGPT を使用してチャットボットを構築するための段階的な詳細な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。