Langchainの90K Github Starsはすべて必要な信頼性です。今では、LLMベースのアプリケーションを構築するのが最もホットなフレームワークです。その包括的なツールとコンポーネントを使用すると、ほぼすべてのLLMを使用してエンドツーエンドのAIソリューションを構築できます。
おそらく、ラングチェーンの能力の中心にあるのはラングチェーンのエージェントです。これらは、タスクを実行し、意思決定を行い、他のツールやAPIと対話できる自律的または半自律的なツールです。それらは、LLMSで複雑なワークフローを自動化する際に大きな前進を表しています。 この記事では、chatgpt。セットアップのような今日のチャットアプリケーションで厳密に不可能なタスクを実行できる独自のラングチェーンエージェントを構築する方法を学びます。
何かに入る前に、チュートリアルのために環境を設定しましょう。Langchainのパッケージとその他の必要なライブラリをいくつかのインストール:
$ conda create -n langchain python=3.9 -y $ conda activate langchain
$ pip install langchain langchain_openai langchain_community langgraph ipykernel python-dotenv
$ ipython kernel install --user --name=langchain
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
自転車のルートのための
strava apiユーザー設定データベース
衣類の推奨事項を生成します
ユーザーへの現在の結果
ユーザーへの適切なルートを現在
各チェーンは、所定の一連のステップと使用可能なツールのサブセットを使用して特定の問題を解決します。彼らは定義された範囲を超えて適応することはできません。また、時間とリソースの点では非効率的な開発の3つの別々の分岐も必要です。
さあ、これらすべてのツールにアクセスできるエージェントシステムを想像してください。それはできるでしょう:
エージェントは:
同じツールセットを使用して、さまざまな問題を処理します
ラングチェーンエージェントの作成に関与する可動部品がたくさんあります。最初で最も明白なのは言語モデルです。
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')
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オブジェクトでパイプオペレーターを使用すると、RunNableSequenceクラスのインスタンスを作成します。実行可能なシーケンスは、プロンプトテンプレートや言語/チャットモデルなど、.invoke()メソッドをサポートするオブジェクトのチェーンを表します。
さあ、チャットモデルの別のプロンプトテンプレートクラスを見てみましょう:
1. Prime Number: 73 is a prime number, which means it is only divisible by 1 and itself. This make
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
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
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
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
にアクセスする方法を構成するにはYouTubeSearchTool:トピックに関するYouTubeビデオを検索する
langchain_core.messages.ai.AIMessage
OpenIadalLeImageGenerationTool:プロンプトを使用して画像を生成する
ウィキペディアツールから始めて、それらを初期化しましょう:
$ 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
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
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)
モデルとツールを定義した後、エージェントを作成します。 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)
今、私たちのエージェントはステートレスです。つまり、以前の相互作用を覚えていないことを意味します。
$ 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
ここで、構成辞書:
を作成する必要があります
$ 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')
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
将来の傾向と開発
ラングスミスの使用を開始することを強くお勧めします。これは、生産グレードのLLMアプリケーションを構築するためのLangchainエコシステムの中心的な部分となっています。主要な利点のいくつかは次のとおりです
デバッグ:Langsmithはエージェントの実行の詳細な痕跡を提供し、問題を識別して修正しやすくします。
パフォーマンスの最適化:Langsmithを使用すると、トークンの使用、レイテンシ、その他のパフォーマンスメトリックを分析して、エージェントの効率を最適化できます。
テストと評価:Langsmithは、テストデータセットの作成と管理を促進し、さまざまなシナリオでエージェントのパフォーマンスを厳密に評価できるようにします。監視:実稼働環境では、Langsmithはリアルタイムの監視機能を提供し、エージェントのパフォーマンスを追跡し、迅速に異常を検出できるようにします。
langchain_api_key = "..."
をエクスポートします次に、エージェントを構築するために知っておくべき重要なコンポーネントを調べました:チャットモデル、ツール、およびプロンプトテンプレート。最後に、シンプルで高度なエージェントを構築する方法を示す2つの例を実行しました。自然言語処理は継続的に発展しており、ラングチェーンエージェントはこの進行の最前線にあり、さらに知的で多目的なAIの家族への道を開いています。
ここに、ラングチェーンを増やすための関連するリソースがあります:LangChainコースを使用したLLMアプリケーションの開発
Langchainを使用した迅速なエンジニアリングの紹介
Langchainチュートリアルを使用してLLMアプリケーションを構築する方法以上がラングチェーンエージェントを構築して、Pythonでタスクを自動化しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。