LangChainの発見:ドキュメントとのチャット、チャットボット翻訳、ウィキペディアとのチャット、合成データ生成

LangChainの発見:ドキュメントとのチャット、チャットボット翻訳、ウィキペディアとのチャット、合成データの生成

Generative AI世界の成長は、重要なPythonライブラリであるLangChainのおかげで可能になっており、最近の興味も以下のグラフで示されています。

Google Trends

LangChainとは何ですか?

LangChainは、一般的にはラッパーであり、より具体的には大規模言語モデルを中心としたアプリケーションの開発のために設計されたオープンソースフレームワークです。

フレームワークのアイデアは、異なるコンポーネントを「チェーン」して、LLMを活用したより高度なユースケースを構築することです。

LangChainはいくつかのコンポーネントで構築されています。

  • Schema:AIモデルの構築に使用されるデータの基本的な構造を指します。テキスト、チャットメッセージ、文書など、さまざまな形式で提供されます。
  • モデル:フレームワークでカバーされているいくつかのモデルがあります。大規模言語モデルはテキスト文字列を入力として受け取り、テキスト文字列を出力として返します。チャットモデルはチャットメッセージのリストを入力とし、チャットメッセージを返します。テキスト埋め込みモデルはテキストを入力とし、ベクトル(浮動小数点数のリスト)を返します。
  • Prompts:モデルの新しいプログラミング方法を表します。悪いプロンプトは悪い出力を生成し、良いプロンプトは強力です。良いプロンプトは、テンプレート、具体例、出力解析などの複数の要素を使用して構造化することができます。
  • Indexes:LLMがドキュメントと対話するための機能を提供します。ユーザーのクエリを受け取り、最も関連性の高い情報を返します。ドキュメントローダー、テキストスプリッター、ベクトルストア、リトリーバーなど、いくつかの種類のインデックスが存在します。ドキュメントローダーはさまざまなソースからドキュメントを読み込むために使用され、テキストスプリッターはユーザーのクエリを小さなチャンクに分割するために使用されます。ベクトルストアは埋め込みを大量に保存し、リトリーバーは読み込まれたデータから関連情報を取得するために使用されます。
  • Memory:AIシステムがユーザーとの以前の会話を覚えて、ユーザーのコンテキストをより理解するための機能です。メモリはチャット履歴の形式で保存されます。
  • Chains:ユーザーの入力に対するAIシステムの応答のシーケンスです。ユーザーの質問に対する応答のシーケンスに基づくシンプルなチェーンと、自然言語処理(NLP)アルゴリズムを使用してユーザーの入力の要約を生成する要約チェーンがあります。
  • Agents:AIシステムがユーザーと対話するためのソフトウェアコンポーネントです。ツールキットとエージェントの2つのタイプがあります。ツールキットはAIアプリケーションを構築するために必要なリソースを備えたフレームワークです。エージェントはプリビルトのAIアプリケーションで、顧客との対話に使用することができます。

LangChainの典型的なユースケースには、ドキュメント分析、チャットボット、要約、コード解析などがあります。

この記事では、OpenAIのGPT 3.5 turboを活用して、4つのユースケースを紹介しました。これらのユースケースは、ノートブックで詳細に説明されています。

ドキュメントとのチャット

まず最初のユースケースでは、ナレッジベースのQ&Aについて説明します。このタイプのアプリケーションでは、ドキュメントが読み込まれ、分割され、埋め込みが作成され、ベクトル検索プロセスを容易にするデータ構造であるベクトルストアに格納されます。ユーザーのクエリも埋め込みに変換され、セマンティックサーチが実行され、正しい情報が取得され、出力回答が生成されます。

QA pipeline from LangChain

このタスクでは、論文をアップロードし、感情分析と感情検出のレビューについて説明しました。以下は、クエリの結果です:

llm = ChatOpenAI(temperature=0, model_name='gpt-3.5-turbo')chain = load_qa_chain(llm, chain_type="map_reduce")query1 = "ドキュメントに示された感情分析と感情分析の課題について説明できますか?"docs = docsearch.similarity_search(query1)chain.run(input_documents=docs, question=query1)

提供された情報によれば、ドキュメントに示された感情分析と感情分析の課題には以下が含まれます:リソースの不足:ドキュメントでは、課題の1つとしてリソースの不足が挙げられており、特に統計アルゴリズムのための大規模な注釈付きデータセットの収集の難しさが指摘されています。大規模なデータセットの手動ラベリングは時間がかかり信頼性が低いです。感情の使用:ドキュメントでは、感情の使用が感情分析と感情検出の課題を生じさせると述べていますが、この課題が具体的にどのように現れるのかは提供されていません。ウェブスラングの普及:ドキュメントでは、ウェブスラングの普及が感情分析と感情検出の課題であると述べていますが、この課題が分析にどのように影響するのかは提供されていません。語彙的および構文的な曖昧さ:ドキュメントは、語彙的および構文的な曖昧さが感情分析と感情検出の課題であると述べていますが、この課題が分析にどのように影響するのかは提供されていません。感情の伝達のための標準規則の不足:ドキュメントは、複数のプラットフォーム間で感情を伝えるための標準規則の不足を強調しており、個人が異なる方法で感情を表現するため、研究者が効率的にすべての領域で機能するテクニックを開発することが困難です。提供される情報は、ドキュメントの抽出部分に基づいているため、ここに含まれていないフルドキュメントに記載されている追加の課題がある可能性があります。

チャットボットの翻訳

2番目のユースケースでは、ChatGPTの登場によって妨害された、典型的な会話型AIであるチャットボットを探究しました。この目標のために、HumanメッセージとAIメッセージを組織するシステムに基づいたスキーマを使用し、翻訳タスクを実行しました。

LangChainからのチャットボットパイプライン

次は私のクエリの結果です:

chat = ChatOpenAI(temperature=0, model_name='gpt-3.5-turbo')chat([HumanMessage(content="この英文をドイツ語に翻訳してください:スタートアップビジネスの開発に興味があります")])

AIMessage(content='Ich interessiere mich für die Entwicklung eines Start-up-Unternehmens.')

以下は、テストとしてGoogle翻訳によるドイツ語から英語への結果です…素晴らしいですね!!!

私はドイツ語が流暢ではないため、他の言語で何かを書いたり読んだりする必要がある場合に役立つと思います。

ウィキペディアとのチャット

3番目のタスクでは、ウィキペディアのページのウェブスクレイピングのアイデアがありましたが、ウィキペディアからアクセスしデータを解析するPythonライブラリを使う最も簡単な方法を選択しました。この方法で、「WikipediaRetriever」というツールを使って、私は百科事典から必要な情報を問い合わせて取得することができます。そして、私のクエリの結果です。

model = ChatOpenAI(temperature=0, model_name='gpt-3.5-turbo')qa = ConversationalRetrievalChain.from_llm(model, retriever=retriever)questions = [    "ストームとは何ですか?",    "持続可能性とは何ですか?",    "気候変動とは何ですか?",]chat_history = []for question in questions:    result = qa({"question": question, "chat_history": chat_history})    chat_history.append((question, result["answer"]))    print(f"-> **質問**: {question} \n")    print(f"**回答**: {result['answer']} \n")

-> **質問**: ストームとは何ですか? **回答**: ストームは、強風、降水(雨、雪、あるいはひょう)、そしてしばしば雷鳴といった特徴を持つ天候現象です。ストームは、強度や持続時間が異なる場合があり、雷雨、ハリケーン、吹雪、あるいは竜巻などの様々な形態で発生することがあります。ストームは、財産に大きな被害をもたらし、人の安全にリスクをもたらすことがあります。-> **質問**: 持続可能性とは何ですか? **回答**: 持続可能性とは、長期にわたって何かを維持または支える能力を指す概念です。環境の文脈では、持続可能性は主要な環境問題(気候変動、生物多様性の喪失、および汚染など)に対抗することに焦点を当てることがよくあります。それは経済的な発展、環境保護、および社会的な幸福のバランスを見つけることを関与します。持続可能性は、グローバル、国家、個人のレベルでの意思決定を導き、現在の世代のニーズを損なうことなく、将来の世代が自分たちのニーズを満たす能力を損なわないことを目指しています。-> **質問**: 気候変動とは何ですか? **回答**: 気候変動は、地球の気候パターンの長期的な変化を指します。これには、気温、降水量、風のパターン、および気候システムの他の側面の変化が含まれます。それは主に人間の活動、特に化石燃料の燃焼によるものであり、これによって温室効果ガスが大気中に放出されます。二酸化炭素やメタンなどの温室効果ガスは、熱を閉じ込め、地球の温暖化に寄与します。気候変動は、海面上昇、より頻繁で激しい極端な天候現象、生物多様性の損失、および人間の健康と福祉への脅威など、環境、生態系、および人間社会に広範な影響を及ぼします。これは、人類が直面する最大の課題の一つと考えられており、その影響を緩和し変化に適応するために、世界規模の取り組みが必要です。

ウィキペディアを参照したいときに要約情報を取得するのに便利なツールだと思います。

合成データジェネレータ

最後のタスクでは、ChatGPTの生成力を利用して合成データを生成することを考えました。これらの人工的に生成されたデータは、実際の個人やエンティティの情報を含まないように、実データの特徴を模倣しています。

開始するには、生成したいデータの構造を提供する必要があります。例えば、生成したい変数は医療費のデータとして扱われます。

class MedicalCharges(BaseModel):    ID: int    Age: int    BMI: float    Height: int    Children: int    Charges: float

合成データ生成プログラムに方向性を与えるために、いくつかの現実世界の例を提供することが役立ちます。

examples = [    {        "example": """ID: 123456, Age: 34, BMI: 27.9,        Children: 0, Height: 170, Charges: 1884.90"""    },    {        "example": """ID: 253459, Age: 45, BMI: 22.7,        Children: 2, Height: 167, Charges: 1725.34"""    },    {        "example": """ID: 323758, Age: 23, BMI: 18.9,        Children: 0, Height: 178, Charges: 3866.60"""    }]

このステップでは、合成データ生成プログラムを使用して、言語モデルが正しい形式で合成データを生成する方法に関する指示を含むプロンプトテンプレートを作成できます。

OPENAI_TEMPLATE = PromptTemplate(input_variables=["example"], template="{example}")prompt_template = FewShotPromptTemplate(    prefix=SYNTHETIC_FEW_SHOT_PREFIX,    examples=examples,    suffix=SYNTHETIC_FEW_SHOT_SUFFIX,    input_variables=["subject", "extra"],    example_prompt=OPENAI_TEMPLATE,)

これで、データ生成モデルと合成データを構築する準備が整いました。

synthetic_data_generator = create_openai_data_generator(    output_schema=MedicalCharges,    llm=ChatOpenAI(temperature=1, model_name='gpt-3.5-turbo'),    prompt=prompt_template,)synthetic_results = synthetic_data_generator.generate(    subject="Medical_Charges",    extra="chosen at random",    runs=10)

ここに10のサンプルの結果があります。

合成データ生成は、データサイエンティストにとって非常に重要な手法です。これにより、テストや研究、機械学習モデルのトレーニングが行え、同時に個人情報やセキュリティを保護することができます。

最終的な考え

LangChainのGitHubリポジトリは66,000以上のスターを獲得しました。これはOpenAI、Hugging Face、Googleなどのさまざまなプロバイダーからいくつかの大規模言語モデルへのアクセスを提供する強力なツールです。これらのモデルはAPIコールを介してアクセスでき、開発者はわずかなコードで生産性向上を目指したアプリケーションを構築することができます。

LangChainはその機能により、大規模言語モデルを活用した会話型AIや他の生成AIツールを企業全体に統合するのに適しており、必須のツールとなるでしょう。

参考文献:

Notebook

LangChain

LangChainチュートリアル

A review on sentiment analysis and emotion detection from text

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more