ChatGPT 共有 - LLM アプリケーションの開発方法
1 背景
ChatGPT は業界に大きな衝撃を与え、あらゆる分野で大規模な言語モデルと一般的な人工知能について議論しています。 AIは50年以上の発展を経て、産業構造の水平展開の重要な時期を迎えています。この変化は、「事前トレーニングと微調整」から「事前トレーニング、プロンプト、予測」へと進化した NLP 分野のパラダイム シフトに起因します。この新しいモデルでは、下流のタスクが事前トレーニングされたモデルに適応するため、複数のタスクに適した大規模なモデルが作成されます。この変化により、AI業界では水平分業の基礎が築かれ、大規模な言語モデルがインフラとなり、ユーザーとモデルの接続に注力するプロンプトエンジニアリング企業が次々と誕生しました。 AI 業界の分業は、基盤となるインフラストラクチャ (クラウド サービス プロバイダー)、大規模モデル、プロンプト エンジニアリング プラットフォーム、端末アプリケーションなどを含めて、最初に形になりました。 AI 業界の変化に伴い、開発者は大規模言語モデル (LLM) とプロンプト エンジニアリングを最大限に活用して革新的なアプリケーションを開発できます。
2 Prompt-Ops のアプリケーション
現在、LLM に基づいてアプリケーションを開発する必要があります。私たちが直面している最大のエンジニアリング上の問題は何ですか?
- #大きな言語モデルはインターネットに接続できないため、最新情報を取得できません
- 大きな言語モデルにはプライベート データが含まれていないため、垂直的な質問に答えることができません
- 大きな言語モデル オープン API (text-davinci-003) には、ChatGPT ほど優れたコンテキスト機能がありません。
- 大きな言語モデルは、他のツールを駆動できません。
- さまざまな LLM サービスにアクセスし、さまざまな大規模な言語モデルの呼び出しを抽象化できます。
- さまざまな PromptTemplate を作成し、カスタマイズされた Prompt テンプレートを実装できます
- チェーンを作成できますPromptTemplate への呼び出しを結合します。
- 検索/数学/プライベート データベースのリンク/Python コードなど、GPT-3 が現在苦手なことを達成するためにさまざまなツールを呼び出すことができます。
- それは使用できます。エージェントは、LLM を操作して、どのアクションをどの順序で実行するかを決定します。アクションは、ツールを使用してその出力を観察することも、ユーザーに返すこともできます。
- メモリ モジュールを通じて会話履歴のモデリングを実現できます。
ファジー API 構成: GPT-3 Statmuse Langchain を使用した NBA 統計のクエリ
スポーツ データ検索サイトと組み合わせて Langchain を使用して、複雑なデータの質問をし、正確な応答を取得します。例: 「2022-2023 NBA シーズンのボストン セルティックスの 1 試合あたりの平均ディフェンス ポイントは何点ですか? 昨シーズンの平均と比較してパーセンテージはどのように変化しましたか?」
2.2.4 Python REPL に接続し、ブラウザを開いて音楽を再生します。
かなり SF シーンです。Langchain を使用して Python REPL ツールに接続し、「play me a songs」と入力すると、インポートされました。 webBrowser パッケージをインストールし、ブラウザを開くコードを呼び出し、「never Gonna give you up」という曲を再生してくれました
def pythonTool(): bash = BashProcess() python_repl_util = Tool( "Python REPL", PythonREPL().run, """A Python shell. Use this to execute python commands. Input should be a valid python command. If you expect output it should be printed out.""", ) command_tool = Tool( name="bash", descriptinotallow="""A Bash shell. Use this to execute Bash commands. Input should be a valid Bash command. If you expect output it should be printed out.""", func=bash.run, ) # math_tool = _get_llm_math(llm) # search_tool = _get_serpapi() tools = [python_repl_util, command_tool] agent = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True) agent.run("给我播放一首音乐")
2.2.5 连接私有数据
连接私有数据对第三方企业做LLM应用来说非常重要。下面举几个例子
- LangchainJs的文档,结合了Langchain:AI-powered search for LangchainJS Documentation,你可以直接问文档内容、技术细节。
- 数据库产品 Supabase也做了同样的事情,将自己的文档与ChatGPT相连接,使得开发者可以很方便的询问/查找自己遇到的技术问题。https://supabase.com/docs
- 政府信息问答的一个例子:Co-pilot for government
法律公文和政策条款一般都非常复杂繁琐,这个demo中将旧金山政府的信息用Langchain与GPT结合,做到询问其中细节能获得准确回复的效果。
> Entering new AgentExecutor chain... I need to find out the size limit for a storage shed without a permit and then search for sheds that are smaller than that size. Action: SF Building Codes QA System Action Input: "What is the size limit for a storage shed without a permit in San Francisco?" Observation: The size limit for a storage shed without a permit in San Francisco is 100 square feet (9.29 m2). Thought:Now that I know the size limit, I can search for sheds that are smaller than 100 square feet. Action: Google Action Input: "Storage sheds smaller than 100 square feet" Observation: Results 1 - 24 of 279 ... Thought:I need to filter the Google search results to only show sheds that are smaller than 100 square feet and suitable for backyard storage. Action: Google Action Input: "Backyard storage sheds smaller than 100 square feet" Thought:I have found several options for backyard storage sheds that are smaller than 100 square feet and do not require a permit. Final Answer: The size limit for a storage shed without a permit in San Francisco is 100 square feet. There are many options for backyard storage sheds that are smaller than 100 square feet and do not require a permit, including small sheds under 36 square feet and medium sheds between 37 and 100 square feet.
2.3 结合私有数据问答
LLM应用与私有数据交互非常重要,我看到无数人在问一些ChatGPT无法回答的问题了:问认不认识谁、问自己公司业务细节、问各种可能不包含在预训练数据集里的东西。这些都已用Langchain和LlaMaIndex来解决。试想一下,将私有数据与LLM相结合,将改变数据原有的访问方式,通过问答能很自然地获取到自己需要的信息,这是比当前的搜索/打标分类都要高效的数据交互方式。
2.3.1 如何构建一个基于私有数据的LLM问答系统
向量数据库现在看起来是构建LLM App中很关键的一个组件。首先 LLM 的预训练和微调过程不可能包含我们所期待的私有数据,因此如何将LLM关联到私有数据成为一个很关键的需求。而且LLM的“接口”-自然语言通常不是像Key-Value的映射那样精确地。而且在这一阶段我们希望LLM去理解我们的知识库,而不是简单的在其中搜索相同的字符串,我们希望询问关于我们知识库的细节,并给出一定理解后的答案(以及来源),这样匹配向量这样的搜索方式是一个非常合适且关键的解决方案。还有一个关键点是,LLM在每次调用是按token计费(即文本量),并且目前的接口的上下文有着4096 tokens的限制。,因此面对庞大的数据,我们也不可能将所有的数据一次性传给LLM。因此才有了第一张图那个流程图的结构。本地预先将我们私有的数据转成向量存在Qdrant里,用户问答时,将用户的问题转为向量,然后去Qdrant里进行搜索(相似性匹配)得到Top K个结果,然后将这些结果(注意这里的结果已经是自然语言了)传给LLM进行总结输出。
2.3.2 结合私有数据问答的抽象流程
这里使用Langchain社区博客的流程图为例
私有数据分割成小于LLM上下文的分块,创建向量后存入向量数据库
将问题计算向量后在向量数据库进行相似性搜索,算出相关性较高的top k个结果后拼接prompt送往LLM获得答案。
2.3.3 重要なコンポーネント
- OpenAI Ada モデル: text-embedding-ada-002 モデルは、1536 次元のベクトルをすばやくエンコードできます。このベクトルを使用して、テキストの性別間の類似性を計算できます。 。
- Langchain / LLamaIndex: Langchain には、ファイルの分割とベクター データベースでのインデックス付けを容易にするさまざまなテキスト スプリッターとドキュメント コネクタが含まれています。LlamaIndex は、他のデータ接続デバイスと同様に、ベクター ストレージからデータをロードできます。このデータは、LlamaIndex データ構造で使用できます。
- Vector データベースには、Chroma / FAISS / Milvus / PGVector / Qdrant / Pinecone など、多くのオプションがあります。
2.3.4 OpenAI プライベート デプロイメントとコストの問題
OpenAI プライベート デプロイメントに関する最近のニュースについて話しましょう. Langchain がリンクに使用されている場合、巨大なプライベート データに直面し、埋め込みを使用するモデル (OpenAI の ada) を使用して入力問題ベクトルを計算し、Qdrant などのベクトル データベースを使用してプライベート データ ベクトルとベクトル検索を管理し、中間リンクとして Langchain を使用すると問題は解決できますが、トークンの消費は無視できません。 。プライベート展開の微調整により、前述の問題のほとんどが解決される可能性があります。裕福な大企業はモデル インスタンスと微調整を使用し、中小企業の独立系開発者は Langchain などのフレームワークを使用している可能性があります。将来、OpenAI の LLM サービス機能がオーバーフローすると、Prompt は不要になり、Langchain の機能も組み込まれる可能性があり、LLM アプリケーションの開発とアクセスにはインターフェイス呼び出しのみが必要になる可能性があります。
2.4 2023 年の LLM アプリケーション テクノロジー スタック
2023 AI デモの単純な構築に使用される最新のテクノロジー スタック:
- ホスト: Vercel
- フロント-end: Next.js
- バックエンド: Vercel with flask
- データベース: Supabase
- AI モデル: OpenAI / Replicate / Hugging Face
- LLMフレームワーク層 : LangChain / LLaMaIndex
- ベクトルストレージ/検索: Pinecone / FAISS
2.5 プロンプト操作 現時点での最大の問題
プロンプトの一部Langchain のような操作 クラス ツールへの反対: stream.thesephist.com 主な問題は、このクラスのツール/フレームワークでは、コードと LLM の間の接続として自然言語を使用し、制御フローとして非決定的言語自体を使用していることです。ちょっとクレイジーです。また、モデルの出力効果を評価すること自体が非常に面倒な作業となっており、良い解決策はなく、巨大なスプレッドシートを保持し、人手に頼っているところが多いです。 (LLM を評価するために LLM を使用する計画もありますが、これはまだ比較的初期段階です。) したがって、これが製品化され、Twitter のデモとしてではなく実際にユーザーに直面するまでには、やるべきことがまだたくさんあるかもしれません。
テストプロセスで直面する大きな課題について詳しく話しましょう。製品に開発段階でうまく機能するプロンプトのセットがある場合、テストのために引き渡された後、数百または数千のプロンプトをテストすることで問題を特定できる可能性があります。効果が保証できないため、実際にCエンドユーザーに提供するのは大きな課題となるだろう。また、微調整サービスやモデル インスタンスを使用していない場合、OpenAI がモデルを更新すると、運用環境内のすべてのプロンプトの影響を再テストする必要が生じる可能性があります。プロンプトもコードと同様にバージョンごとに管理する必要があるため、プロンプトに変更があるかどうかに関係なく、オンラインにする前に各バージョンの回帰テストを行う必要があります。優れた自動評価ソリューションがなければ、多数のケースを手動でテストする必要があり、多くの人的資源を消費することになります。
プライベート データを組み合わせる LLM アプリケーションを開発するための優れたエンジニアリング ソリューションは数多くあります。デモを実行して良好な結果を得るのは簡単ですが、そのようなアプリケーションは依然として細心の注意を払って扱う必要があります。結局のところ、私たちはソーシャルメディアや指導者の前でデモンストレーションを行うためのプロジェクトを行っているだけではありません。ユーザーに入力用に提供されるのはダイアログ ボックスです。自然言語は非常に幅広いため、何万もの結果をテストしたとしても、予期しない結果が発生する可能性があります。結局のところ、新しい bing や chatGPT などの製品もインジェクションを求められます。この不確実性に直面して、エンジニアリングでそれをどのように回避するか、テストでそれをカバーする方法はすべて、成熟した製品で解決する必要がある問題であり、やるべきことはまだたくさんあります。
しかし、このタイプの Prompt-Ops ツール/フレームワークを完全に否定する必要はないと思います。結局のところ、この段階でアイデアを検証するために多くの優れたデモを作成できるのです。
3 将来的に考えられるいくつかの製品形式
ChatGPT API がオープンされた後の LLM アプリケーションの考えられる形式について話しましょう。
- 会話チャットは最も直感的な利用方法であり、会話履歴はAPI上で管理されます。
- 仮想キャラクター チャットは、基本的な対話チャットに基づいて、API の prefix_message にいくつかのキャラクター定義プロンプトを作成して、Character.ai と同様の効果を実現します。さらに深くなると、ゲームのキャラクター、仮想人物、XR アシスタントなどになる可能性があります。
- Notion に似たテキスト支援ライティング ツール。現在、Notion と FlowU には同様のアプリケーションがあります。将来的には、さまざまなコミュニティにパブリッシャーが統合される傾向があり、ユーザーによるパブリッシングの敷居が低くなり、パブリッシングの品質が向上するでしょう。
- データ要約ツールは、Chat-Your-Data を実装し、ユーザーに文書入力を提供し、ユーザーが提供したデータとチャットできるようにします。本質的には、インターネット上の公開データとユーザーのプライベート データのみが関係します。
- 大企業向けの Chat-Your-Data: 各大企業は、大企業のプライベート データを組み合わせて、独自のビジネスに基づいてより良いサービスを提供します。たとえば、ユーザーのレビューを組み合わせた Dianping では、「ネオソウルと R&B 音楽を演奏するバーに行きたい」というように使用できます。たとえば、ビジネス詳細ページでは、この製品に対するすべてのユーザーの評価を要約して、ユーザーが次のことを行うことができます。この製品に関する情報を提供し、Q&A を行います。
- 行政、医療、教育などの分野と統合し、オンラインの各機関の公式ウェブサイトとオフラインの大型スクリーンを統合して、より良い市民サービスを提供します。
- IFTTT やさまざまなプライベート プロトコルなどの他のツールと組み合わせると、LLM は、IoT シナリオ、Office Copilot など、より多くのツールやシステムにアクセスできます。
LLM アプリケーションは実際には人間とコンピューターの対話の新しい方法であり、ユーザーが自然言語を使用して現在のシステムと通信できるようにします。多くのアプリケーションはチャット ウィンドウのみに簡略化することもできます。
4 まとめ
現在、一般的な大規模モデルのトレーニング/デプロイメントはコストが高いため、産業レベルの分業条件は基本的に成熟しており、多数の大規模モデルは必要ありません。中小企業や個人の開発者にとって、LLM の適用は避けられない選択となるでしょう。新しい形式のプログラミング/エンジニアリング パラダイムでは、エンジニアがタイムリーに学習し、理解する必要があります。現在のオープン ソース テクノロジ スタックは、ほとんどの製品のニーズをすでに満たしています。アイデアを検証するために簡単なデモを試すことができます。
参考:
- https://blog.langchain.dev/tutorial-chatgpt-over-your-data/
チュートリアル: ChatGPT の概要あなたのデータ
- https://qdrant.tech/articles/langchain-integration/
定型文なしの LangChain と Qdrant による質問応答
- #https://mp.weixin.qq.com/s/VZ6n4qlDx4bh41YvD1HqgQ
以上がChatGPT 共有 - LLM アプリケーションの開発方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









DALL-E 3は、前モデルより大幅に改良されたモデルとして2023年9月に正式導入されました。これは、複雑な詳細を含む画像を作成できる、これまでで最高の AI 画像ジェネレーターの 1 つと考えられています。ただし、発売当初は対象外でした

翻訳者 | Bugatti レビュー | Chonglou この記事では、GroqLPU 推論エンジンを使用して JanAI と VSCode で超高速応答を生成する方法について説明します。 Groq は AI のインフラストラクチャ側に焦点を当てているなど、誰もがより優れた大規模言語モデル (LLM) の構築に取り組んでいます。これらの大型モデルがより迅速に応答するためには、これらの大型モデルからの迅速な応答が鍵となります。このチュートリアルでは、GroqLPU 解析エンジンと、API と JanAI を使用してラップトップ上でローカルにアクセスする方法を紹介します。この記事では、これを VSCode に統合して、コードの生成、コードのリファクタリング、ドキュメントの入力、テスト ユニットの生成を支援します。この記事では、独自の人工知能プログラミングアシスタントを無料で作成します。 GroqLPU 推論エンジン Groq の概要

テレンス・タオなど多くの数学者に賞賛されたこの正式な数学ツール、LeanCopilot が再び進化しました。ちょうど今、カリフォルニア工科大学のアニマ・アナンドクマール教授が、チームが LeanCopilot 論文の拡張版をリリースし、コードベースを更新したと発表しました。イメージペーパーのアドレス: https://arxiv.org/pdf/2404.12534.pdf 最新の実験では、この Copilot ツールが数学的証明ステップの 80% 以上を自動化できることが示されています。この記録は、以前のベースラインのイソップよりも 2.3 倍優れています。そして、以前と同様に、MIT ライセンスの下でオープンソースです。写真の彼は中国人の少年、ソン・ペイヤンです。

Plaud Note AI ボイスレコーダー (Amazon で 159 ドルで購入可能) を開発した企業 Plaud が新製品を発表しました。 NotePin と呼ばれるこのデバイスは AI メモリ カプセルとして説明されており、Humane AI Pin と同様にウェアラブルです。ノートピンは

ホーム画面から重要なものを削除してしまい、元に戻そうとしていますか?さまざまな方法でアプリのアイコンを画面に戻すことができます。 iPhoneでホーム画面から削除を元に戻す方法 前述したように、iPhoneでこの変更を復元する方法はいくつかあります。方法 1 – App ライブラリのアプリ アイコンを置き換える App ライブラリから直接ホーム画面にアプリ アイコンを配置できます。ステップ 1 – 横にスワイプして、アプリ ライブラリ内のすべてのアプリを見つけます。ステップ 2 – 前に削除したアプリのアイコンを見つけます。ステップ 3 – アプリのアイコンをメインライブラリからホーム画面上の正しい場所にドラッグするだけです。これが応用図です

AIGC について詳しくは、51CTOAI.x コミュニティ https://www.51cto.com/aigc/Translator|Jingyan Reviewer|Chonglou を参照してください。これらの質問は、インターネット上のどこでも見られる従来の質問バンクとは異なります。既成概念にとらわれずに考える必要があります。大規模言語モデル (LLM) は、データ サイエンス、生成人工知能 (GenAI)、および人工知能の分野でますます重要になっています。これらの複雑なアルゴリズムは人間のスキルを向上させ、多くの業界で効率とイノベーションを推進し、企業が競争力を維持するための鍵となります。 LLM は、自然言語処理、テキスト生成、音声認識、推奨システムなどの分野で幅広い用途に使用できます。 LLM は大量のデータから学習することでテキストを生成できます。

PHP における矢印記号の役割と実際の応用 PHP では、通常、オブジェクトのプロパティとメソッドにアクセスするために矢印記号 (->) が使用されます。オブジェクトとは、PHP におけるオブジェクト指向プログラミング (OOP) の基本概念の 1 つで、実際の開発においては、矢印記号がオブジェクトを操作する上で重要な役割を果たします。この記事では、矢印記号の役割と実際の応用例を紹介し、読者の理解を深めるために具体的なコード例を示します。 1. オブジェクトのプロパティにアクセスするための矢印シンボルの役割 矢印シンボルは、オブジェクトのプロパティにアクセスするために使用できます。ペアをインスタンス化するとき

Graph Retrieval Enhanced Generation (GraphRAG) は徐々に普及しており、従来のベクトル検索方法を強力に補完するものとなっています。この方法では、グラフ データベースの構造的特徴を利用してデータをノードと関係の形式で編成し、それによって取得された情報の深さと文脈の関連性が強化されます。グラフには、相互に関連する多様な情報を表現および保存するという自然な利点があり、異なるデータ型間の複雑な関係やプロパティを簡単に把握できます。ベクトル データベースはこの種の構造化情報を処理できず、高次元ベクトルで表される非構造化データの処理に重点を置いています。 RAG アプリケーションでは、構造化グラフ データと非構造化テキスト ベクトル検索を組み合わせることで、両方の利点を同時に享受できます。これについてこの記事で説明します。構造
