GPT-4 と LangChain に基づいたクラウドベースのカスタマイズされた PDF ナレッジ ベース AI チャットボットを構築する

参考:

GitHub - mayooear/gpt4-pdf-chatbot-langchain: 大きな PDF ドキュメント用の GPT4 および LangChain チャットボット

1. 概要:

新しい GPT-4 API を使用して、複数の大きな PDF ファイル用の chatGPT チャットボットを構築します。

使用されるテクノロジー スタックには、LangChain、Pinecone、Typescript、Openai、Next.js が含まれます。LangChain は、スケーラブルな AI/LLM 大規模言語モデル アプリケーションとチャットボットの構築を容易にするフレームワークです。Pinecone は、埋め込まれたテキスト形式の PDF を保存し、後で同様のドキュメントを検索できるようにするためのベクター ストアです。

2. 準備作業:

OpenAI API Key GPT-3.5或者GPT-4 openai 

松ぼっくりAPI キー/環境/インデックス  

Pinecone Starter (無料) プラン ユーザーのインデックスは 7 日後に削除されます。これを防ぐには、7 日前に API リクエストを Pinecone に送信してカウンターをリセットします。無料で使い続けることができます。

3. プロジェクト gpt4-pdf-chatbot-langchain を複製またはダウンロードします。

git clone https://github.com/mayooear/gpt4-pdf-chatbot-langchain.git

4. 依存関係パッケージをインストールする

Yarn をインストールするには npm を使用します。npm をお持ちでない場合は、インストール ガイドを参照してください。 

npm/Node.js の紹介とクイックインストール - Linux CentOS_Entropy - Go のブログ - CSDN ブログ

npm install yarn -g

 次に、yarn を使用して依存関係パッケージをインストールします

 プロジェクトのルートディレクトリに入り、コマンドを実行します。

yarn install

インストールが成功すると、node_modules ディレクトリが表示されます。

gpt4-pdf-chatbot-langchain-main$ ls -a
.           declarations  .eslintrc.json  node_modules        .prettierrc  styles               utils           yarn.lock
..          docs          .gitignore      package.json        public       tailwind.config.cjs  venv
components  .env          .idea           pages               README.md    tsconfig.json        visual-guide
config      .env.example  next.config.js  postcss.config.cjs  scripts      types                yarn-error.log

5.環境構成

.env.example を .env 構成ファイルにコピーします

OPENAI_API_KEY=sk-xxx

# Update these with your pinecone details from your dashboard.
# PINECONE_INDEX_NAME is in the indexes tab under "index name" in blue
# PINECONE_ENVIRONMENT is in indexes tab under "Environment". Example: "us-east1-gcp"
PINECONE_API_KEY=xxx
PINECONE_ENVIRONMENT=us-west1-gcp-free
PINECONE_INDEX_NAME=xxx

config/pinecone.tsの変更

config フォルダーで、PINECONE_NAME_SPACE を、npm run ingest を実行するときに PINECONE_NAME_SPACE に埋め込みを保存する名前空間に置き換えます。この名前空間は、後でクエリと取得に使用されます。

チャットボットのプロンプトワードと OpenAI モデルを変更する

独自のユースケースに合わせて、utils/makechain.tsのQA_PROMPT を変更します。

gpt-4 API にアクセスできる場合は、新しい OpenAI のモデル名を gpt-4 に変更します。このリポジトリの外部で gpt-4 API にアクセスできることを確認してください。アクセスできない場合、アプリケーションは機能しません。

import { OpenAI } from 'langchain/llms/openai';
import { PineconeStore } from 'langchain/vectorstores/pinecone';
import { ConversationalRetrievalQAChain } from 'langchain/chains';

const CONDENSE_PROMPT = `Given the following conversation and a follow up question, rephrase the follow up question to be a standalone question.

Chat History:
{chat_history}
Follow Up Input: {question}
Standalone question:`;

const QA_PROMPT = `You are a helpful AI assistant. Use the following pieces of context to answer the question at the end.
If you don't know the answer, just say you don't know. DO NOT try to make up an answer.
If the question is not related to the context, politely respond that you are tuned to only answer questions that are related to the context.

{context}

Question: {question}
Helpful answer in markdown:`;

export const makeChain = (vectorstore: PineconeStore) => {
  const model = new OpenAI({
    temperature: 0, // increase temepreature to get more creative answers
    modelName: 'gpt-3.5-turbo', //change this to gpt-4 if you have access
  });

  const chain = ConversationalRetrievalQAChain.fromLLM(
    model,
    vectorstore.asRetriever(),
    {
      qaTemplate: QA_PROMPT,
      questionGeneratorTemplate: CONDENSE_PROMPT,
      returnSourceDocuments: true, //The number of source documents returned is 4 by default
    },
  );
  return chain;
};

6. PDF ドキュメントをナレッジベースとして追加する

OpenAI および Pinecone とのデータのやり取りがあるため、ドキュメントをアップロードする前にデータのプライバシーとセキュリティを慎重に考慮することをお勧めします。

1 つ以上の PDF ドキュメントを docs ディレクトリにアップロードします

アップロードコマンドを実行する

npm run ingest

Pinecone でアップロードが成功したかどうかを確認する

7. ナレッジベースチャットボットを実行する

埋め込みとコンテンツが Pinecone に正常に追加されたことを確認したら、アプリケーション npm run dev を実行してローカル開発環境を開始し、チャット インターフェイスに質問を入力して会話を開始できます。

注文の実行:

npm run dev

8. FAQトラブルシューティング

https://github.com/mayooear/gpt4-pdf-chatbot-langchain#troubleshooting

issues 一般に、解決策については、このリポジトリのセクション に注目してください discussions 。

一般的なエラー

  • 最新の Node バージョンを実行していることを確認してください。走る node -v
  • 別の PDF を試すか、まず PDF をテキストに変換してください。PDF が破損しているか、スキャンされているか、テキストに変換するために OCR が必要である可能性があります。
  • Console.log 変数 env を確認し、それらが公開されていることを確認してください。
  • このリポジトリと同じバージョンの LangChain と Pinecone を使用していることを確認してください。
  • 有効な (そして機能する) API キー、環境、インデックス名を含むファイルが作成されていることを確認してください .env 。
  • modelName で 変更する場合は OpenAI、適切なモデルの API にアクセスできることを確認してください。
  • 請求先アカウントに十分な OpenAI クレジットと有効なカードがあることを確認してください。
  • グローバル環境に複数の OPENAPI キーがないことを確認してください。そうすると、 env プロジェクトのローカル ファイルがシステム env 変数によって上書きされます。
  • process.env まだ問題がある場合は、API キーを変数にハードコーディングしてみてください 。

松ぼっくりエラー

  • 松ぼっくりダッシュボード environment と  ファイル index のダッシュボードが一致していること を確認してください 。pinecone.ts.env
  • ベクトルの次元を に設定していることを確認してください 1536
  • 松ぼっくりの名前空間が小文字であることを確認してください。
  • スターター (無料) プランのユーザーの松ぼっくりインデックスは、7 日間非アクティブな状態が続くと削除されます。これを防ぐには、7 日前にカウンターをリセットする API リクエストを Pinecone に送信します。
  • 新しい Pinecone プロジェクト、インデックス、クローン リポジトリを使用して、最初から再試行します。

おすすめ

転載: blog.csdn.net/holyvslin/article/details/132403863