Perplexity.aiをモデルにした基本的なオープンソースAI検索エンジン。 AIを搭載した質問アンウェープラットフォームに慣れていない場合は、ChatGptのような大きな言語モデルを使用して質問に答えますが、ChatGPTを改善して、正確でリアルタイムの検索結果を引き込み、回答を補足します(「知識のカットオフ」はありません)。また、幻覚ではなく、トピックをさらに研究できる自信を築く回答自体の中に引用をリストします。
search.phpに追加してください([[埋め込んでください]」を探してください)ChatGptのようなLLMSの主な課題は、知識のカットオフがあることです(そして、時には幻覚を起こす傾向があります)。それは、特定の日付までデータについてトレーニングされているためです(2021年9月など)。したがって、最新の質問への回答が必要な場合、または単にトピックを詳細に調査したい場合は、関連するソースで答えを増やす必要があります。この手法は、RAG(検索拡張生成)として知られています。そして、私たちの場合、GoogleやBingなどの検索エンジンからLLMの最新情報を単純に提供できます。
これを自分で構築するには、最初にBing、Google(Serper経由)、Brave、またはその他のAPIキーにサインアップすることをお勧めします。 Bing、Brave、およびSerperはすべて、開始するための無料使用を提供します。
search.phpでは、必要に応じてAPIキーを置きます(「[[埋め込んでください]」を探します)。この例では、Serperを介してBraveとGoogleの両方のコードがあります。
ここでは、LLMプロバイダーからAPIキーにサインアップする必要があります。現在、多くのプロバイダーが選択できます。たとえば、Openai、人類、任意のスケール、Groq、Cloudflare、Prplexity、Lepton、またはAWS、Azure、Google Cloudなどの大手プレーヤーがあります。私はこれらの多くを成功させて使用し、現在および人気のある閉鎖およびオープンソースモデルのサブセットを提供しています。また、各モデルには、独自の強み、さまざまなコスト、異なる速度があります。たとえば、GPT-4は非常に正確ですが、高価で遅いです。疑わしい場合は、OpenaiのChatGPT-3.5-Turboを使用することをお勧めします。それは十分に良く、十分に安く、これをテストするのに十分な速さです。
幸いなことに、これらのLLMサービスプロバイダーのほとんどはOpenaiのAPI形式と互換性があるため、別のプロバイダー /モデルに切り替えることは最小限の作業に過ぎません(または、チャットボットにコードを書くように依頼してください!)。
search.phpでは、必要に応じてAPIキーを置きます([[埋め込んでください]」を探します)。この例では、OpenAI(ChatGPT-3.5-Turbo / GPT-4の場合)およびGROQ(Mixtral-8B7B用)を使用しています。したがって、作業を最小限に抑えるには、それらの一方または両方のキーを取得してください。
LLMに質問をしたい場合は、多くの追加コンテキストを提供できます。各モデルには独自の制限があり、それらのいくつかは非常に大きいです。 GPT-4-Turboの場合、最初のHarry Potterの本全体を質問で伝えることができます。 Googleの非常に強力なGemini 1.5は、100万台以上のトークンのコンテキストサイズをサポートできます。 7冊のハリーポッターシリーズ全体を渡すのに十分です!
幸いなことに、8〜10の検索結果のスニペットに沿ったスニペットに沿ったものははるかに小さく、GPT-3.5-ターボやMistral-7Bなどのより高速な(そしてはるかに安い)モデルの多くを使用できます。
私の経験では、ユーザーの質問、カスタムプロンプトメッセージ、および検索結果のスニペットを渡すことは、通常1Kトークン未満です。これは、最も基本的なモデルの制限さえも十分に下回っているため、問題はないはずです。
search.phpには、私があなたと遊んでいたサンプルプロンプトがあります。 Lepton AIの人々に帽子をかぶって、同様のプロジェクトをオープンソーシングし、このプロンプトを改良するのに役立ちました。
困惑の素晴らしい特徴の1つは、フォローアップの質問を提案する方法です。幸いなことに、これは簡単に複製できます。
これを行うには、関連する質問を求める(並行して)LLMに2回目の呼び出しを行うことができます。そして、再びコンテキストでこれらの引用を伝えることを忘れないでください。
または、LLMが質問に答えて関連する質問を考え出すように、プロンプトを構築しようとすることができます。これにより、API呼び出しといくつかのトークンが節約されますが、これらのLLMが常に一貫した再現可能な形式で常に回答するようにするのは少し難しいです。
これを完全な例にするには、使用可能なUIが必要です。 UIを可能な限りシンプルに保ち、すべてがindex.htmlにあります。 Bootstrap、JQuery、およびいくつかの基本的なCSS / JavaScript、Markdown、およびJS Syntaxハイライターを使用してこれを実現しています。
エクスペリエンスを改善するために、UIは次のことを行います。
実用的な例を調べるには、https://yaddleai.comをご覧ください。画像を取得するために並行して2回目の検索コールを追加しましたが、最新ニュースを取得するために別のページを書き、他のいくつかのマイナーな改善を書きました。