Spaces:
Sleeping
Sleeping
from langchain_core.messages import ToolMessage | |
from langchain_core.runnables import RunnableLambda | |
from langgraph.prebuilt import ToolNode | |
def handle_tool_error(state) -> dict: | |
error = state.get("error") | |
tool_calls = state["messages"][-1].tool_calls | |
return { | |
"messages": [ | |
ToolMessage( | |
content=f"Error: {repr(error)}\n please fix your mistakes.", | |
tool_call_id=tc["id"], | |
) | |
for tc in tool_calls | |
] | |
} | |
def create_tool_node_with_fallback(tools: list) -> dict: | |
return ToolNode(tools).with_fallbacks( | |
[RunnableLambda(handle_tool_error)], exception_key="error" | |
) | |
def _print_event(event: dict, _printed: set, max_length=1500): | |
current_state = event.get("dialog_state") | |
if current_state: | |
print("Currently in: ", current_state) | |
message = event.get("messages") | |
if message: | |
if isinstance(message, list): | |
message = message[-1] | |
if message.id not in _printed: | |
msg_repr = message.pretty_repr(html=True) | |
if len(msg_repr) > max_length: | |
msg_repr = msg_repr[:max_length] + " ... (truncated)" | |
print(msg_repr) | |
_printed.add(message.id) | |
return current_state, message | |