tools = [check_user_promotion, get_local_data, get_kpi_info, list_all_kpis]
llm_with_tools = model.bind_tools(tools)
def reasoner(state: MessagesState):
message_history = [
msg for msg in state["messages"][:-1]
if isinstance(msg, (HumanMessage, AIMessage))
and not hasattr(msg, 'tool_calls')
and not hasattr(msg, 'tool_call_id')
]
if len(message_history) >= 4:
last_human_message = state["messages"][-1]
summary_prompt = (
"Summarize the conversation between the human and AI, "
"focusing only on the key points of their dialogue. "
"Ignore any tool interactions or technical details."
)
summary_message = model.invoke(
message_history + [HumanMessage(content=summary_prompt)]
)
delete_messages = [RemoveMessage(id=m.id) for m in state["messages"]]
human_message = HumanMessage(content=last_human_message.content)
response = llm_with_tools.invoke([sys_msg, summary_message, human_message])
message_updates = [summary_message, human_message, response] + delete_messages
else:
message_updates = llm_with_tools.invoke([sys_msg] + state["messages"])
return {"messages": message_updates}
builder = StateGraph(MessagesState)
builder.add_node("reasoner", reasoner)
builder.add_node("tools", ToolNode(tools))
builder.add_edge(START, "reasoner")
builder.add_conditional_edges("reasoner", tools_condition)
builder.add_edge("tools", "reasoner")
memory = MemorySaver()
react_graph = builder.compile(checkpointer=memory)
< /code>
Я разрабатываю чат -бот, он работает нормально, но я хотел преобразовать некоторые инструменты в отдельный агент, почему? Поскольку у него будет свой собственный рабочий процесс и больше инструментов, например, если вопрос связан с «KPI», агент обработает вывод, где будет несколько инструментов + человек в цикле, я искал и изучил документацию , просто каждый раздел объясняется отдельно, и я изо всех сил пытаюсь поместить все это в рамках текущей реализации с памятью и маршрутизацией. .
Подробнее здесь: https://stackoverflow.com/questions/793 ... h-workflow