LangChainは、自然言語の入力に基づいてさまざまなツールと対話し、意思決定を行うAIエージェントを構築するための強力なフレームワークを提供します。この包括的なガイドでは、LangChainを使用して洗練されたAIエージェントを作成する方法について、詳細な手順とサンプルコードを紹介します。
それなら、Anakin AIを見逃すことはできません!
Anakin AIは、ワークフローオートメーションのためのオールインワンプラットフォームであり、使いやすいノーコードアプリビルダーで強力なAIアプリを作成することができます。 Llama 3、Claude Sonnet 3.5、GPT-4、Uncensored LLMs、Stable Diffusionを使用して、数分で夢のAIアプリを構築してください!
LangChainエージェントの理解
LangChainエージェントは、言語モデルを使用して特定のタスクを達成するためのアクションのシーケンスを決定するAIパワードのエンティティです。これらのエージェントはさまざまなツールと対話し、入力に基づいて意思決定し、アクションを実行することができます。
LangChainエージェントの主要なコンポーネント
- 言語モデル:コアの意思決定エンジン(例:OpenAIのGPTモデルなど)
- ツール:エージェントが外部システムと対話するために使用できる関数やAPI
- メモリ:エージェントが対話間で情報を保持することができる
- プロンプトテンプレート:エージェントの動作と意思決定プロセスをガイドする
LangChainエージェントの環境の設定
エージェントの構築を開始する前に、開発環境を設定しましょう。
LangChainと依存関係のインストール
まず、LangChainとその依存関係をインストールします:
pip install langchain langchain-openai python-dotenv
環境変数の設定
プロジェクトディレクトリに.env
ファイルを作成し、OpenAIのAPIキーを追加します:
OPENAI_API_KEY=your_api_key_here
最初のLangChainエージェントの作成
ウェブ検索や質問に回答できるシンプルなエージェントを作成しましょう。
必要なモジュールのインポート
from langchain_openai import ChatOpenAI
from langchain.agents import load_tools, initialize_agent, AgentType
from langchain.agents.agent_toolkits import create_python_agent
from langchain.tools.python.tool import PythonREPLTool
from dotenv import load_dotenv
import os
# 環境変数をロード
load_dotenv()
言語モデルの初期化
llm = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0)
LangChainエージェントのツールの設定
tools = load_tools(["wikipedia", "llm-math"], llm=llm)
LangChainエージェントの作成
agent = initialize_agent(
tools,
llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True
)
LangChainエージェントの実行
response = agent.run("フランスの人口を2の平方根で割った値は何ですか?")
print(response)
このエージェントは、Wikipediaを使用してフランスの人口を調べ、LLM-mathツールを使用して計算を実行します。
高度なLangChainエージェントのテクニック
洗練されたエージェントを構築するためのより高度なテクニックを探ってみましょう。
LangChainを使用したPython REPLエージェントの作成
このエージェントは、Pythonコードを実行して問題を解決することができます。
python_agent = create_python_agent(
llm,
tool=PythonREPLTool(),
verbose=True
)
python_agent.run("最初の10個のフィボナッチ数を計算する")
LangChainエージェントでのメモリの実装
エージェントが前の対話を覚える機能を追加するには:
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory(memory_key="chat_history")
agent_with_memory = initialize_agent(
tools,
llm,
agent=AgentType.CHAT_CONVERSATIONAL_REACT_DESCRIPTION,
verbose=True,
memory=memory
)
agent_with_memory.run("私の名前はアリスです。あなたの名前は何ですか?")
agent_with_memory.run("私の名前は何ですか?")
LangChainエージェント用のカスタムツールの構築
エージェントが使用できるカスタムツールを作成しましょう。
カスタムツールの定義
from langchain.tools import BaseTool
from typing import Optional, Type
from pydantic import BaseModel, Field
class WeatherInput(BaseModel):
city: str = Field(description="天気を調べる都市")
class WeatherTool(BaseTool):
name = "weather"
description = "指定した都市の現在の天気を取得します"
args_schema: Type[BaseModel] = WeatherInput
def _run(self, city: str):
# 実際のシナリオでは、ここで天気APIを呼び出すことがあります
return f"{city}の天気は晴れで25°Cです"
def _arun(self, city: str):
# 非同期実装の場合
raise NotImplementedError("WeatherToolは非同期に対応していません")
weather_tool = WeatherTool()
カスタムツールをLangChainエージェントに組み込む
tools.append(weather_tool)
agent_with_custom_tool = initialize_agent(
tools,
llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True
)
agent_with_custom_tool.run("パリの天気はどうですか?")
LangChainでマルチステップタスクエージェントを作成するための記事の続きは次のとおりです。
LangChainを使用してマルチステップタスクエージェントを作成する
より複雑なマルチステップのタスクに対応できるエージェントを構築しましょう。
マルチステップエージェントの定義
マルチステップのタスクエージェントを作成するには、LangChainのcreate_openai_functions_agent
関数を使用します。このエージェントタイプは、複雑なタスクを処理するのに適しており、複数のステップやツールが必要な場合があります。
まず、必要なコンポーネントをインポートします:
from langchain_openai import ChatOpenAI
from langchain.agents import create_openai_functions_agent
from langchain.agents import AgentExecutor
from langchain.tools import Tool
from langchain_community.tools import WikipediaQueryRun
from langchain_community.utilities import WikipediaAPIWrapper
from langchain_community.tools import DuckDuckGoSearchRun
次に、ツールを定義します:
# Wikipediaツール
wikipedia = WikipediaQueryRun(api_wrapper=WikipediaAPIWrapper())
wikipedia_tool = Tool(
name="Wikipedia",
func=wikipedia.run,
description="トピックに関する詳細な情報を得るためのWikipediaに問い合わせるのに役立ちます。"
)
# ウェブ検索ツール
search = DuckDuckGoSearchRun()
search_tool = Tool(
name="Web Search",
func=search.run,
description="現在の情報やWikipediaで見つからないトピックのインターネット検索に役立ちます。"
)
tools = [wikipedia_tool, search_tool]
次に、言語モデルとエージェントを作成します:
llm = ChatOpenAI(temperature=0, model="gpt-3.5-turbo")
agent = create_openai_functions_agent(llm, tools, prompt)
最後に、エージェントの実行者を作成します:
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
マルチステップエージェントの使用
エージェントが設定されたので、マルチステップのタスクをテストしてみましょう:
task = """
1. 2022年に物理学のノーベル賞を受賞した人物を調べてください。
2. 彼らのフィールドへの主要な貢献を調査してください。
3. 彼らの研究が日常のテクノロジーにどのように影響を与えるかを説明してください。
"""
response = agent_executor.invoke({"input": task})
print(response["output"])
このタスクでは、エージェントは以下のことを行う必要があります:
- 現在の情報(2022年のノーベル賞受賞者)の検索
- 彼らの研究に関する詳細な情報の収集
- 彼らの研究の実際的な影響を分析して説明する
エージェントは、ウェブ検索とWikipediaのツールの両方を使用して情報を収集し、この情報を統合して包括的な応答を提供します。
マルチステップエージェントの強化
エージェントをさらに強力にするために、追加のツールを追加したり、動作をカスタマイズしたりすることができます:
より専門化されたツールの追加:エージェントが処理するタスクの種類に応じて、数学的な計算、データ分析、特定のサービスへのAPI呼び出しなど、さまざまなツールを追加することができます。
メモリの実装:複数の対話でコンテキストを維持する必要があるタスクには、エージェントにメモリコンポーネントを追加することができます。
カスタムのプロンプト:エージェントの動作をカスタマイズして、タスクの特定の方法でアプローチするか、問題の特定の側面に焦点を当てるのに役立てることができます。
エラーハンドリング:ツールが失敗したり予期しない結果を返したりする状況を管理するために、堅牢なエラーハンドリングを実装してください。
マルチステップタスクエージェントを作成することで、AIアシスタントの能力を大幅に拡張することができます。このエージェントは複数の情報源と推論のステップを必要とする複雑なクエリを処理できるため、さまざまなアプリケーションに対して強力なツールとなります。
結論
LangChainエージェントとマルチエージェントシステムは、より柔軟で能力の高いAIアプリケーションを作成するための強力なパラダイムを提供します。言語モデルとツール、意思決定能力を組み合わせることで、エージェントは従来のチャットボットや質問応答システムでは難しい複雑なマルチステップのタスクに取り組むことができます。
LangGraphなどのフレームワークを使用すると、開発者は特化したエージェントが協力して目標を達成する複雑なエージェントワークフローを作成することができます。信頼性と制御に対する課題はまだありますが、エージェントベースのアーキテクチャは、言語モデルアプリケーションの機能拡張の可能性を示しています。
この分野が進化するにつれて、現実の問題を解決するために推論、計画、行動をより人間らしい方法で行うことができる、ますます高度なマルチエージェントシステムが登場することが期待されます。
それなら、Anakin AIを見逃すことはできません!
Anakin AIは、ワークフローオートメーションのためのオールインワンプラットフォームであり、使いやすいノーコードアプリビルダーで強力なAIアプリを作成することができます。 Llama 3、Claude Sonnet 3.5、GPT-4、Uncensored LLMs、Stable Diffusionを使用して、数分で夢のAIアプリを構築してください!