簡単
ReAct(推論と行動)は、複雑なタスクにおける知能のパフォーマンスを高めるために、推論と行動を組み合わせたフレームワークです。このフレームワークは、論理的な推論と実践的な行動を緊密に統合することで、知能がダイナミックな環境でより効果的にタスクを実行することを可能にします。
この文書では リ・アクト フレームワークは オーラマ ローカルエージェント(Agent)はOllamaで実装されています。OllamaのパワーとReActの柔軟性を組み合わせることで、ユーザーはローカル環境に効率的な対話型エージェントを作成することができます。この実装は、複雑なタスクを処理することができ、複数の対話モードをサポートし、高いリアルタイム性能を必要とするローカルアプリケーションのタスク自動化とユーザー体験を最適化します。
注:この文書には、核となるコードの断片と詳細な説明が含まれています。完全なコードは ノート .
1.依存関係のインポート
from langchain_core.tools import tool
from langchain.pydantic_v1 import BaseModel, Field
from langchain_core.tools import render_text_description
from langchain.agents import AgentExecutor, create_react_agent
from langchain import hub
from langchain_community.chat_models import チャットオラマ
2.エージェントツールの初期化
定義する 検索入力
クラス継承 ベースモデル
これは入力データのモードを定義するのに使われる。
ツール(args_schema=SearchInput)
ツールデコレーターを使ったデコレーション 天気予報
関数の入力モードを次のように指定する。 検索入力
.
class SearchInput(BaseModel).
Location: str = Field(description="検索する場所") # 説明情報を持つ入力スキーマを記述するPydanticモデルを定義します。
ツール(args_schema=SearchInput)
def weather_forecast(location: str).
"""Weather_forecast_tool.""""
print(f "{location}の天気") #は天気を予測する場所を表示します。
return f "A dummy forecast for {location}" # 与えられた場所のダミーの天気予報を返します。
3.現地オペレーション
この例では gemma:2b
モデルによっては、出力が大きく異なることがある(ランダム性が高い)。
llm = ChatOllama(model="gemma:2b") # "gemma:2b "を使って、ChatOllamaモデルを初期化します。
tools = [weather_forecast] # weather_forecastツールを使う
prompt = hub.pull("hwchase17/react-json") # 特定のプロンプトをハブから引き出す
プロンプト = prompt.partial(
tools=render_text_description(tools), # プロンプトのツールのテキスト説明をレンダリングする
tool_names=", ".join([t.name for t in tools]), # ツール名をカンマ区切りの文字列に連結する。
)
agent = create_react_agent(llm, tools, prompt) # llm、ツール、カスタムプロンプトを使用してエージェントを作成します。
agent_executor = AgentExecutor(agent=agent, tools=tools, handle_parsing_errors=True, verbose=False, format="json") #を初期化します。AgentExecutorを初期化する。
print(agent_executor.invoke({"input": "What is the weather in Paris?"})) # テスト入力でエージェントを起動し、結果を表示する。
対話履歴の使用
ダイアログ履歴を使用する場合は リアクト・チャット
プロンプト・テンプレート。呼び出し時に チャット履歴
.
#は特定のプロンプトをプルオフする。ここではreact-chatが使われていることに注意。
prompt = hub.pull("hwchase17/react-chat")
# ReActエージェントをビルドする
agent_history = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent_history, tools=tools, verbose=False)
agent_executor.invoke(
{
"input": "私の名前は? 必要な場合のみツールを使用し、そうでない場合はFinal Answerで応答する、
"chat_history": "Human: こんにちは!私の名前はBobです。}
はじめまして", }
はじめまして", }
書誌
https://react-lm.github.io/
https://python.langchain.com/v0.1/docs/modules/agents/agent_types/react/