ホームページ > テクノロジー周辺機器 > AI > ラングチェーンエージェントを構築して、Pythonでタスクを自動化します

ラングチェーンエージェントを構築して、Pythonでタスクを自動化します

William Shakespeare
リリース: 2025-03-04 10:35:10
オリジナル
811 人が閲覧しました

Langchainの90K Github Starsはすべて必要な信頼性です。今では、LLMベースのアプリケーションを構築するのが最もホットなフレームワークです。その包括的なツールとコンポーネントを使用すると、ほぼすべてのLLMを使用してエンドツーエンドのAIソリューションを構築できます。

おそらく、ラングチェーンの能力の中心にあるのはラングチェーンのエージェントです。これらは、タスクを実行し、意思決定を行い、他のツールやAPIと対話できる自律的または半自律的なツールです。それらは、LLMSで複雑なワークフローを自動化する際に大きな前進を表しています。 この記事では、chatgpt。

セットアップ

のような今日のチャットアプリケーションで厳密に不可能なタスクを実行できる独自のラングチェーンエージェントを構築する方法を学びます。

何かに入る前に、チュートリアルのために環境を設定しましょう。

最初に、新しいコンドラ環境の作成:

Langchainのパッケージとその他の必要なライブラリをいくつかのインストール:

$ conda create -n langchain python=3.9 -y
$ conda activate langchain
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
新しく作成されたコンドラ環境をカーネルとしてJupyterに追加する:

$ pip install langchain langchain_openai langchain_community langgraph ipykernel python-dotenv
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
APIキーなどの秘密を保存するための.ENVファイルの作成:

$ ipython kernel install --user --name=langchain
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
.envファイルからOpenai APIキーを取得する

OpenaiのGPT-3.5(デフォルト言語モデル)を照会することにより、すべてが正しく機能していることをテストする:
$ touch .env
$ vim .env  # Paste your OPENAI key
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
OPENAI_API_KEY='YOUR_KEY_HERE'
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

さて、私たちは始める準備ができています。
import os
from dotenv import load_dotenv
load_dotenv()
api_key = os.getenv('OPENAI_API_KEY')
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

langchainエージェントは何ですか?

from langchain_openai import OpenAI
llm = OpenAI(openai_api_key=api_key)
question = "Is Messi the best footballer of all time?"
output = llm.invoke(question)
print(output[:75])
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
エージェントフレームワークについて考えるのに時間を費やしましょう。具体的には、それが従来のチェーンパラダイムとどのように異なるか、およびエージェントのコンポーネントが何であるかを検討します。アプリケーションを構築する新しい方法を選択する必要がある理由を理解すると、コードの作成に備えてください。
There is no definitive answer to this question, as it is subjective and de
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
チェーン対エージェント

エージェントの定義特性は、一連のツールを考慮して問題を解決するために最良のアクションの順序を選択する能力です。 たとえば、

次のことがあるとしましょう。

天気api

衣類の推奨のための

mlモデル

自転車のルートのための

strava api

ユーザー設定データベース
  • 画像認識モデル
  • 言語モデル(テキスト生成)
  • 従来の問題解決には、リストから選択したツールのチェーンを使用することが含まれます。
  • チェーン1:気象ベースの衣類の推奨
  • 天気api
  • に電話してください
  • ML衣料品モデルに天気データを入力

衣類の推奨事項を生成します

ユーザーへの現在の結果

  1. チェーン2:気象ベースの自転車ルートの提案者
  2. 天気api
  3. に電話してください
  4. 人気のあるルートのStrava APIを呼び出します
  5. 気象条件に基づいた
  6. フィルタールート

ユーザーへの適切なルートを現在

  1. チェーン3:衣装写真アナライザー
    1. ユーザーの衣装の写真を受け取ります
    2. 画像認識モデルを使用して衣料品を識別します
    3. ユーザー設定データベースと比較
    4. テキスト生成モデルを使用してフィードバックを生成します
    5. 分析をユーザーに提示します

    各チェーンは、所定の一連のステップと使用可能なツールのサブセットを使用して特定の問題を解決します。彼らは定義された範囲を超えて適応することはできません。また、時間とリソースの点では非効率的な開発の3つの別々の分岐も必要です。

    さあ、これらすべてのツールにアクセスできるエージェントシステムを想像してください。それはできるでしょう:

      ユーザーのクエリまたは問題を理解してください(言語モデルを使用した自然言語を通じて)
    1. 問題に関連するツール(推論)
    2. を評価します 最も適切なツールを使用して、
    3. 動的にワークフローを作成します
    4. ワークフローを実行し、必要に応じてリアルタイム調整を行います(演技)
    5. 結果を評価し、過去の相互作用から学びます
    たとえば、ユーザーが「今日の自転車に乗るのに何を着るべきですか?」と尋ねた場合、エージェントは、Weather APIをチェックし、Stravaを介した適切な自転車ルートを分析し、適切な衣服を推奨し、ユーザーの過去の好みを考慮し、パーソナライズされた応答を生成する場合があります。

    エージェントは:

    同じツールセットを使用して、さまざまな問題を処理します

    ユニークな状況ごとにカスタムワークフローを作成
  • 特定のコンテキストとユーザーのニーズに基づいてそのアプローチを適応させる将来のパフォーマンスを向上させるために相互作用から学びます
  • Langchainの言語モデルを変換する能力(それ自体がテキストのみを作成する)は、適切なアクションを実行するために自由にリソースを使用できる推論エンジンに、その主要なアプリケーションの1つです。要するに、Langchainは、外の世界と相互作用する強力な自律剤の開発を可能にします。
  • キーコンポーネント
  • Langchainエージェントは、チャットモデル、プロンプトテンプレート、外部ツール、その他の関連するコンポーネントなど、いくつかのコンポーネントで構成されています。成功したエージェントを構築するには、各コンポーネントを確認し、それらの使用を理解する必要があります。
言語モデルとチャットモデル

ラングチェーンエージェントの作成に関与する可動部品がたくさんあります。最初で最も明白なのは言語モデルです。

OpenaiのGPT-3.5 Turboなどの言語モデルは、文字列を取得して生成します。通常、年長で、個々のユーザークエリに答えるのに最適です。

より新しい強力なモデルは通常、チャットモデルです。これは、入力として一連のメッセージを取得し、チャットメッセージを出力として返すことができます(プレーンテキストの使用とは対照的に):

$ conda create -n langchain python=3.9 -y
$ conda activate langchain
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

違った言い方をすれば、チャットモデルにより、自然言語で会話をすることができます。上記の例では、GPT-4O-MINIをシステムメッセージに続いてユーザークエリを使用して初期化しています。 SystemMessageおよびHummessageクラスの使用に注意してください

出力はメッセージオブジェクトであり、チャットモデルの予想される動作です。

$ pip install langchain langchain_openai langchain_community langgraph ipykernel python-dotenv
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
$ ipython kernel install --user --name=langchain
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
$ touch .env
$ vim .env  # Paste your OPENAI key
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
さらに、彼らはドットノートでアクセスできる他の有用なメタデータを返します:
OPENAI_API_KEY='YOUR_KEY_HERE'
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

import os
from dotenv import load_dotenv
load_dotenv()
api_key = os.getenv('OPENAI_API_KEY')
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ほとんどのエージェントは、更新された知識ベースと会話機能のためにチャットモデルを使用しています。ただし、メモリ要件のない単純なエージェントの場合、GPT-3.5のような言語モデルで十分です。
from langchain_openai import OpenAI
llm = OpenAI(openai_api_key=api_key)
question = "Is Messi the best footballer of all time?"
output = llm.invoke(question)
print(output[:75])
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
プロンプトテンプレート

言語モデルまたはチャットモデルを照会する最も効率的な方法は、迅速なテンプレートを使用することです。それらにより、あなたはあなたのクエリを一貫して動的に変数を挿入することを可能にし、モデルとの相互作用をより柔軟で再利用可能にします。 Langchainでは、プロンプトテンプレートには多くのタイプのテンプレートがあり、最も基本的なテンプレートがProshtTemplateクラスです。言語(プレーンテキスト)モデルで使用できます:

クラスでは、ブラケット表記を使用して交換する変数のプレースホルダーを使用して文字列を作成する必要があります。次に、変数の名前とともにこのテンプレート文字列をProsptTemplateクラスに渡す必要があります。したがって、プロンプトを構築します。

変数の値を使用して.invoke()を呼び出します。プロンプトがモデルにどのように渡されるかを示します。 このプロンプトテンプレートを言語モデルに渡すには、パイプオペレーターを使用してそれをチェーンする必要があります。

There is no definitive answer to this question, as it is subjective and de
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
from langchain_openai import OpenAI
llm = OpenAI(api_key=api_key, model="gpt-3.5-turbo-instruct")
question = "What is special about the number 73?"
output = llm.invoke(question)
print(output[:100])
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
パイプ演算子(|)は、複数のラングチェーンコンポーネントとツールをチェーンするように設計されたLangchain Expression Language(LCEL)の一部です。

Langchainオブジェクトでパイプオペレーターを使用すると、RunNableSequenceクラスのインスタンスを作成します。実行可能なシーケンスは、プロンプトテンプレートや言語/チャットモデルなど、.invoke()メソッドをサポートするオブジェクトのチェーンを表します。

さあ、チャットモデルの別のプロンプトテンプレートクラスを見てみましょう:

1. Prime Number: 73 is a prime number, which means it is only divisible by 1 and itself. This make
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
チャットモデルには、入力として一連のメッセージが必要であると述べました。初期入力は通常、チャットモデルに動作方法を伝えるシステムプロンプトです。したがって、ChatPromptTemplateクラスを使用して、さまざまな性格のチャットモデルを簡単に作成できます。
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage, AIMessageChunk, SystemMessage
# Initialize the model
chat_model = ChatOpenAI(api_key=api_key, model='gpt-4o-mini')
# Write the messages
messages = [SystemMessage(content='You are a grumpy pirate.'),
           HumanMessage(content="What's up?")]
output = chat_model.invoke(messages)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

クラスには、入力としてロールベースのメッセージのリストが必要です。リストの各メンバーは、必要に応じて定義された変数プレースホルダーを持つ(役割、メッセージ)タプルでなければなりません。

準備ができたら、同じパイプオペレーターを使用して、さまざまな動作を持つチャットモデルを作成できます。
$ conda create -n langchain python=3.9 -y
$ conda activate langchain
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
$ pip install langchain langchain_openai langchain_community langgraph ipykernel python-dotenv
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

ツール

前のセクションでは、エージェントが特定の問題を解決するために自由にツールの組み合わせを選択できることを述べました。

Langchainは、多数の人気のあるAPIやサービスとの統合を提供し、エージェントが他の世界と対話できるようにしています。それらのほとんどはlangchain_communityパッケージの下で入手できますが、一部はlangchain_coreにあります。 たとえば、

ARXIVツールを使用して、さまざまなトピックの紙の概要を取得する方法は次のとおりです。

$ ipython kernel install --user --name=langchain
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
クラス名でインポートするのではなく、ツールをロードする別の方法があります。
$ touch .env
$ vim .env  # Paste your OPENAI key
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
上記の上記では、load_tools()関数を使用して、ARXIVとDALL-Eの両方のイメージジェネレーターツールを同時にロードしています。この関数にロードされたツールには、同じ使用法の構文があります。
OPENAI_API_KEY='YOUR_KEY_HERE'
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

import os
from dotenv import load_dotenv
load_dotenv()
api_key = os.getenv('OPENAI_API_KEY')
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

from langchain_openai import OpenAI
llm = OpenAI(openai_api_key=api_key)
question = "Is Messi the best footballer of all time?"
output = llm.invoke(question)
print(output[:75])
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
There is no definitive answer to this question, as it is subjective and de
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
load_tools関数では、arxivqueryrun対「arxiv」の例のように、ツールクラスの文字列名を知る必要があります。 get_all_tool_names関数を実行することにより、任意のツールの文字列名をすばやく確認できます:
from langchain_openai import OpenAI
llm = OpenAI(api_key=api_key, model="gpt-3.5-turbo-instruct")
question = "What is special about the number 73?"
output = llm.invoke(question)
print(output[:100])
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
1. Prime Number: 73 is a prime number, which means it is only divisible by 1 and itself. This make
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

ラングチェーンエージェントを構築して、Pythonでタスクを自動化しますload_tools()は速記の関数にすぎないことに注意してください。エージェントを構築する場合は、クラスコンストラクターを使用してツールをロードすることをお勧めします。これにより、特定の動作に基づいて構成できます。 Langchainエージェントを構築する方法の段階的なワークフロー

最後に、このセクションでは、前のセクションで得た知識を使用して、Langchainエージェントを段階的に作成する方法を確認します。

今後の例では、テキスト、画像、またはビデオの3つの媒体を介してトピックを説明できるエージェントを構築します。より具体的には、尋ねられた質問に基づいて、エージェントはトピックをどのような形式で説明するかを決定します。
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage, AIMessageChunk, SystemMessage
# Initialize the model
chat_model = ChatOpenAI(api_key=api_key, model='gpt-4o-mini')
# Write the messages
messages = [SystemMessage(content='You are a grumpy pirate.'),
           HumanMessage(content="What's up?")]
output = chat_model.invoke(messages)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
始めましょう。記事の冒頭でカバーされている環境のセットアップ方法を確認してください。 
type(output)
ログイン後にコピー
ログイン後にコピー

1。ツールの定義

環境を構成した後の最初のステップは、エージェントに提供するツールを定義することです。それらをインポートしましょう:

5つのクラスをインポートしています:

wikipediaapiwrapper:wikipedia api

にアクセスする方法を構成するには

wikipediaqueryrun:Wikipediaページの概要を生成する

YouTubeSearchTool:トピックに関するYouTubeビデオを検索する

langchain_core.messages.ai.AIMessage
ログイン後にコピー
ログイン後にコピー
dalleapiwrapper:OpenaiのDalleエンドポイントにアクセスする方法を構成するため

OpenIadalLeImageGenerationTool:プロンプトを使用して画像を生成する

  • ユーザーがエージェントを照会すると、テキスト形式のウィキペディア記事を使用してトピックを説明するか、視覚的理解のためにdall-eを使用して画像を作成するか、より深い理解のためにYouTubeビデオを提案するかどうかを決定します。

    ウィキペディアツールから始めて、それらを初期化しましょう:

    $ conda create -n langchain python=3.9 -y
    $ conda activate langchain
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    $ pip install langchain langchain_openai langchain_community langgraph ipykernel python-dotenv
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー

    Dalle Image Generator:

    $ ipython kernel install --user --name=langchain
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー

    ラングチェーンエージェントを構築して、Pythonでタスクを自動化します

    YouTube検索ツール:

    $ touch .env
    $ vim .env  # Paste your OPENAI key
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    OPENAI_API_KEY='YOUR_KEY_HERE'
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー

    ツールの説明に特に注意してください。エージェントは、提供する説明に基づいて使用する1つのツールを決定します。 

    次に、ツールをリストに入れます:

    import os
    from dotenv import load_dotenv
    load_dotenv()
    api_key = os.getenv('OPENAI_API_KEY')
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー

    エージェントを作成せずに、このツールのセットをチャットモデルに既にバインドできます。

    from langchain_openai import OpenAI
    llm = OpenAI(openai_api_key=api_key)
    question = "Is Messi the best footballer of all time?"
    output = llm.invoke(question)
    print(output[:75])
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    簡単なメッセージでモデルを呼び出してみましょう:

    There is no definitive answer to this question, as it is subjective and de
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    from langchain_openai import OpenAI
    llm = OpenAI(api_key=api_key, model="gpt-3.5-turbo-instruct")
    question = "What is special about the number 73?"
    output = llm.invoke(question)
    print(output[:100])
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    出力は、回答を生成するときにバインドされたツールが使用されなかったことを示しています。それでは、モデルがトレーニングデータを超えて見るように強制する特定の質問をしましょう。

    1. Prime Number: 73 is a prime number, which means it is only divisible by 1 and itself. This make
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    テキスト出力はないことがわかりますが、OpenaiのDalleが言及されています。ツールはまだ呼び出されていません。モデルは単にそれを使用することを示唆しています。実際にそれを呼ぶには - 行動を起こすには、エージェントを作成する必要があります。
    from langchain_openai import ChatOpenAI
    from langchain_core.messages import HumanMessage, AIMessageChunk, SystemMessage
    # Initialize the model
    chat_model = ChatOpenAI(api_key=api_key, model='gpt-4o-mini')
    # Write the messages
    messages = [SystemMessage(content='You are a grumpy pirate.'),
               HumanMessage(content="What's up?")]
    output = chat_model.invoke(messages)
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    2。シンプルなエージェントの作成

    モデルとツールを定義した後、エージェントを作成します。 LangChainは、Langgraphパッケージから高レベルのcreate_react_agent()関数インターフェイスを提供し、React(Reason and Act)エージェントをすばやく作成します。

    チャットモデルとツールのリストでエージェントを初期化している間、システムプロンプトを渡して、一般的に動作する方法をモデルに伝えています。これで、クエリを受け入れる準備ができました:

    type(output)
    ログイン後にコピー
    ログイン後にコピー

    可能性のある応答を受け取りました。これは、ツール呼び出しのない単純なテキストの回答です。それでは、ポイントにもっと何かを聞いてみましょう:

    langchain_core.messages.ai.AIMessage
    ログイン後にコピー
    ログイン後にコピー
    print(output.content)
    ログイン後にコピー

    今回は、4つのメッセージがあります。メッセージのクラス名とそのコンテンツを見てみましょう:

    Arrr, not much but the sound of waves and the creakin' of me ship. What do ye want? Make it quick, I've got treasure to hunt and rum to drink!
    ログイン後にコピー
    output.dict()
    ログイン後にコピー

    ここに行きます! 3番目のメッセージは、光合成に関するウィキペディアページの概要です。最後のメッセージはチャットモデルからのものです。チャットモデルは、回答を構築するときにツールコールの内容を使用しています。

    最後に取った手順をモジュール化する関数をすばやく作成しましょう:
    {'content': "Arrr, not much but the sound of waves and the creakin' of me ship. What do ye want? Make it quick, I've got treasure to hunt and rum to drink!",
    'additional_kwargs': {},
    'response_metadata': {'token_usage': {'completion_tokens': 38,
      'prompt_tokens': 21,
      'total_tokens': 59},
     'model_name': 'gpt-4o-mini-2024-07-18',
     'system_fingerprint': 'fp_48196bc67a',
     'finish_reason': 'stop',
     'logprobs': None},
    'type': 'ai',
    'name': None,
    'id': 'run-fde829bf-8f5f-4926-a1ed-ab53609ce03a-0',
    'example': False,
    'tool_calls': [],
    'invalid_tool_calls': [],
    'usage_metadata': {'input_tokens': 21,
     'output_tokens': 38,
     'total_tokens': 59}}
    ログイン後にコピー
    from langchain_core.prompts import PromptTemplate
    query_template = "Tell me about {book_name} by {author}."
    prompt = PromptTemplate(input_variables=["book_name", "author"], template=query_template)
    prompt.invoke({"book_name": "Song of Ice and Fire", "author": "GRRM"})
    ログイン後にコピー

    3。システムプロンプトの改良

    さあ、エージェントがどのように振る舞うべきかについての詳細な指示でシステムのプロンプトを更新しましょう:

    StringPromptValue(text='Tell me about Song of Ice and Fire by GRRM.')
    ログイン後にコピー

    新しいシステムプロンプトでエージェントを再作成しましょう:

    私たちのメッセージ(非常に有益だった:)に基づいて、from langchain_openai import OpenAI llm = OpenAI(api_key=api_key) # Create a chain chain = prompt | llm # Invoke the chain output = chain.invoke({"book_name": "Deathly Hallows", "author": "J.K. Rowling"}) print(output[:100])

    Deathly Hallows is the seventh and final book in the popular Harry Potter series, written by J.K. R
    ログイン後にコピー
    type(chain)
    ログイン後にコピー
    4。エージェントにメモリを追加

    今、私たちのエージェントはステートレスです。つまり、以前の相互作用を覚えていないことを意味します。
    $ conda create -n langchain python=3.9 -y
    $ conda activate langchain
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    $ pip install langchain langchain_openai langchain_community langgraph ipykernel python-dotenv
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー

    チャットメッセージの履歴をエージェントに追加する最も簡単な方法は、LanggraphのSqlitessaverクラスを使用することです。

    $ ipython kernel install --user --name=langchain
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    データベースファイルを作成するSQLitesSaverクラスの.from_conn_string()メソッドを使用してメモリを初期化します。次に、メモリをcreate_react_agent()functionのcheckpointerパラメーターに渡します。

    ここで、構成辞書:

    を作成する必要があります

    $ touch .env
    $ vim .env  # Paste your OPENAI key
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    辞書は、ある会話を別の会話と区別するためのスレッドIDを定義し、エージェントの.invoke()メソッドに渡されます。したがって、この動作を含めるようにexecute()関数を更新しましょう:

    OPENAI_API_KEY='YOUR_KEY_HERE'
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    import os
    from dotenv import load_dotenv
    load_dotenv()
    api_key = os.getenv('OPENAI_API_KEY')
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    さて、エージェントに以前のクエリについて尋ねましょう:

    from langchain_openai import OpenAI
    llm = OpenAI(openai_api_key=api_key)
    question = "Is Messi the best footballer of all time?"
    output = llm.invoke(question)
    print(output[:75])
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    There is no definitive answer to this question, as it is subjective and de
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    予想どおり、エージェントは以前のメッセージを返しています!今、私たちはChatGptのようなチャットUIだけが必要であり、カスタムチャットボットを手に入れました。

    将来の傾向と開発

    記事を通して、エージェントの観点からLangchainがどこに向かっているのかを垣間見ることができました。ごく最近まで、Langchainは主にAgentExecutorクラスを使用していましたが、Langgraphのエージェントにゆっくりと置き換えられています。

    純粋なラングチェーンエージェントは開始するのに問題ありませんが、Langgraphよりも同じエージェントを構築するために、より多くのコードが必要です。また、特定のポイントの後、AgentExecutorフレームワークは、Langgraphが複雑なマルチツールエージェントを構築するために持っている柔軟性を提供しません。 そのため、今こそ波に乗ってランググラフから直接始めるのに最適な時期です。

    ラングスミスの使用を開始することを強くお勧めします。これは、生産グレードのLLMアプリケーションを構築するためのLangchainエコシステムの中心的な部分となっています。主要な利点のいくつかは次のとおりです

    デバッグ:Langsmithはエージェントの実行の詳細な痕跡を提供し、問題を識別して修正しやすくします。

    パフォーマンスの最適化:Langsmithを使用すると、トークンの使用、レイテンシ、その他のパフォーマンスメトリックを分析して、エージェントの効率を最適化できます。

    テストと評価:Langsmithは、テストデータセットの作成と管理を促進し、さまざまなシナリオでエージェントのパフォーマンスを厳密に評価できるようにします。

    監視:実稼働環境では、Langsmithはリアルタイムの監視機能を提供し、エージェントのパフォーマンスを追跡し、迅速に異常を検出できるようにします。

      ここに、Langsmithを始める方法があります:
    • ここで無料のアカウントにサインアップしてください。
    • 環境変数を設定します。
    • langchain_tracing_v2 = "true"
    をエクスポートします

    langchain_api_key = "..."

    をエクスポートします
      そしてあなたは行ってもいいです!言語/チャットモデルのクエリを開始すると、Langsmithは各実行に関するさまざまなメトリックの記録を開始します。
    1. 結論

      この記事では、Langchainエージェントがチェーンとそれらの構築に使用される重要なビルディングブロックとは異なる理由を調査しました。最初に、エージェントが何であり、意思決定における柔軟性と能力に関するより伝統的なチェーン構成とどのように異なるかを紹介しました。

      次に、エージェントを構築するために知っておくべき重要なコンポーネントを調べました:チャットモデル、ツール、およびプロンプトテンプレート。最後に、シンプルで高度なエージェントを構築する方法を示す2つの例を実行しました。自然言語処理は継続的に発展しており、ラングチェーンエージェントはこの進行の最前線にあり、さらに知的で多目的なAIの家族への道を開いています。

      ここに、ラングチェーンを増やすための関連するリソースがあります:

      LangChainコースを使用したLLMアプリケーションの開発

      Langchainを使用した迅速なエンジニアリングの紹介

      Langchainチュートリアルを使用してLLMアプリケーションを構築する方法
      • Langchainツールを使用したブラウジング機能を備えたGPTモデルの構築langchain vs llamaindex:詳細な比較
      • 読んでいただきありがとうございます!

以上がラングチェーンエージェントを構築して、Pythonでタスクを自動化しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート