
return {"messages": [response]}
def tool_node(state: AgentState):
messages = state["messages"]
last_message = messages[-1]
messages = []
for call in last_message.tool_calls:
if call["name"] == "exec_command":
value = exec_command.invoke(call["args"])
tool_message = ToolMessage(
content=value,
name=call["name"],
tool_call_id=call["id"],
)
messages.append(tool_message)
return {"messages": messages}
ここでは、
agent_node
と
tool_node
の二つの関数を定義しています。また、事前に
agent_
node
関数で使用する
ChatOpenAI
のインスタンスを生成し、
exec_command
ツールをバインドし
ています。
agent_node
関数は、エージェントノードの処理を実装しています。現在状態として保持し
ているメッセージリストをLLMに渡し、その結果を新しいメッセージリストとして返します。
返されたメッセージリストは、現在のメッセージリストの末尾に連結されます。
tool_node
関数は、ツールノードの処理を実装しています ...