見出し画像

LangChain の Agent・Tool・Toolkits の概要

「LangChain」の「Agent」「Tool」「Toolkits」の概要をまとめました。

・langchain 0.1


1. Agent

1-1. Agentの概要

Agent」は、LLMで実行する一連の行動を決定するChainです。通常の「Chain」では一連の行動が (コード内に) ハードコーディングされていますが、「Agent」では「LLM」がどの行動をどの順序で実行するかを決定します。

1-2. Agentのスキーマ

「Agent」との連携を容易にするための「スキーマ」がいくつかあります。

◎ AgentAction
AgentAction」は、Agentが実行する行動を表すデータクラスです。これには、toolプロパティ (呼び出す必要があるToolの名前) と、tool_inputプロパティ (そのツールへの入力) があります。

◎ AgentFinish
AgentFinish」は、「Agent」がユーザーに応答を返す準備ができた時の、Agentからの最終結果を表すデータクラスです。 これには、return_valuesプロパティ (エージェントの応答) があります。 

◎ Intermediate Steps
Intermediate Steps」は、過去のAgentの行動と現在のAgentの実行に関する出力を表すデータ形です。Agentが既に行った作業を知るために、将来の反復に渡すことが重要です。これは List[Tuple[AgentAction, Any]] として型付けされます。現在のところ、observation は最大限の柔軟性を持たせるためにAny型のままですが、実際には文字列であることが多いです。

1-3. Agentの入出力

◎ Agentの入力
Agentの入力は、「辞書」です。必要なキーは、intermediate_stepsの1つだけです。これは、上で説明した「Intermediate Steps」に対応します。一般に「PromptTemplate」は、これら辞書をLLMに渡すことができる形式に変換します。

◎ Agentの出力
Agentの出力は、「AgentAction」(次に実行する行動) と「AgentActionリスト」または「AgentFinish」(ユーザーに送信する最終応答) です。「Output Parser」は、生のLLM出力を取得し、これら3つのいずれかに変換します。

1-4. AgentExecutor

「AgentExecutor」は、「Agent」のランタイムです。 これは実際にAgentを呼び出し、Agentが選択した行動を実行し、行動の出力をAgentに返し、これを繰り返します。

擬似コードでは、次のようになります。

next_action = agent.get_action(...)
while next_action != AgentFinish:
    observation = run(next_action)
    next_action = agent.get_action(..., next_action, observation)
return next_action

これは単純に見えるかもしれませんが、このランタイムは次のような複雑な問題を処理します。

(1) Agentが存在しないToolを選択した場合の処理
(2) Toolがエラーを起こした場合の対処
(3) AgentがTool呼び出しに解析できない出力を生成する場合の処理
(4) 標準出力またはLangSmithへのすべてのレベル (Agentの決定、Tool呼び出し) でのログ記録と可観測性

1-5. 組み込みAgent

「組み込みAgent」の一覧は次のとおりです。

OpenAI Tools - create_openai_tools_agent()
 最新のOpenAIモデル (1106 以降) を使用している場合
OpenAI Functions - create_openai_functions_agent()
OpenAIモデル、またはFunction Calling可能でOpenAIと同じ関数パラメータを持つモデルを使用している場合
XML - create_xml_agent()
Anthropicモデル、またはXMLに優れた他のモデルを使用している場合
Structured Chat - create_structured_chat_agent()
複数の入力を持つToolをサポートする必要がある場合
JSON Chat - create_json_chat_agent()
 JSONが得意なモデルを使用している場合
ReAct - create_react_agent()
単純なモデルを使用している場合
Self Ask With Search - create_self_ask_with_search_agent()
単純なモデルを使用していて、検索ツールが1つしかない場合

詳しくは「Agent Types」を参照してください。

2. Tool

2-1. Toolの概要

Tool」は、Agentが呼び出すことができる機能です。「Tool」は、次の2つのコンポーネントで構成されます。

・Toolの入力スキーマ
Toolを呼び出すためにどのようなパラメータが必要かをLLMに伝えます。これがないと、正しい入力が何であるかを認識できません。これらのパラメータには賢明な名前を付けて説明する必要があります。

・実行する関数
これは通常、呼び出される単なる Python 関数です。

「Tool」に関しては、設計上の重要な考慮事項が 2 つあります。

・Agentに適切なToolへのアクセスを許可
・Agentに最も役立つ方法でToolを説明

Agentに適切なToolへのアクセスを許可しないと、Agentは指定された目的を達成できなくなります。Toolついてうまく説明しないと、AgentはToolの適切な使用方法がわかりません。

2-2. 組み込みTool

「組み込みTool」の一覧は次のとおりです。

・Alpha Vantage
・Apify
・ArXiv
・AWS Lambda
・Shell (bash)
・Bearly Code Interpreter
・Bing Search
・Brave Search
・ChatGPT Plugins
・Connery Action Tool
・Dall-E Image Generator
・DataForSEO
・DuckDuckGo Search
・E2B Data Analysis
・Eden AI
・Eleven Labs Text2Speech
・Exa Search
・File System
・Golden Query
・Google Cloud Text-to-Speech
・Google Drive
・Google Finance
・Google Jobs
・Google Lens
・Google Places
・Google Scholar
・Google Search
・Google Serper
・Google Trends
・Gradio
・GraphQL
・HuggingFace Hub Tools
・Human as a tool
・IFTTT WebHooks
・Infobip
・Ionic Shopping Tool
・Lemon Agent
・Memorize
・Nuclia Understanding
・NVIDIA Riva: ASR and TTS
・OpenWeatherMap
・Quickstart
・Polygon Stock Market API Tools
・PubMed
・Python REPL
・Reddit Search
・Requests
・SceneXplain
・Search Tools
・SearchApi
・SearxNG Search
・Semantic Scholar API Tool
・SerpAPI
・SQL Database
・StackExchange
・Tavily Search
・Twilio
・Wikidata
・Wikipedia
・Wolfram Alpha
・Yahoo Finance News
・You.com Search
・YouTube
・Zapier Natural Language Actions

詳しくは「Tools Integrations」を参照してください。

3. Toolkits

3-1. Toolkitsの概要

「Toolkits」は、特定の目的のためにグループ化された3~5 個程度の「Tool」セットです。たとえば、「GitHub Toolkits」には、「GitHub の問題を検索するためのTool」「ファイルを読み取るためのTool」「コメントするためのTool」などが含まれています。

3-2. 組み込みToolkits

「組み込みToolkits」の一覧は次のとおりです。

・AINetwork
・Airbyte Question Answering
・Amadeus
・Azure AI Services
・Azure Cognitive Services
・ClickUp
・Cogniswitch Tools
・Connery Toolkit
・CSV
・Document Comparison
・Github
・Gitlab
・Gmail
・Jira
・JSON
・MultiOn
・NASA
・Office365
・OpenAPI
・Natural Language APIs
・Pandas Dataframe
・PlayWright Browser
・Polygon IO Toolkit
・PowerBI Dataset
・Python
・Robocorp
・Slack
・Spark Dataframe
・Spark SQL
・SQL Database
・Steam Game Recommendation & Game Details
・Xorbits

詳しくは「Toolkits Integrations」を参照してください。



この記事が気に入ったらサポートをしてみませんか?