e2b-dev/e2b-cookbook

config with thread_id error

LizhongLiu-cims opened this issue · 2 comments

I try to run code here: examples/langgraph-python/langgraph_e2b_python/code_interpreter_tool.py

All my code is same as the example, expect that I added the memorysaver to enable the llm have chat memory for constant chat experience.


workflow = MessageGraph()
workflow.add_node("agent", llm.bind_tools(tools))
workflow.add_node("action", lambda x: execute_tools(x, tool_map))

#Conditional agent -> action OR agent -> END
workflow.add_conditional_edges(
"agent",
should_continue,
)
#Always transition action -> agent
workflow.add_edge("action", "agent")

workflow.set_entry_point("agent")
memory = MemorySaver()
app = workflow.compile(checkpointer = memory)

#4. Invoke the app
config = {"configurable": {"thread_id": str(uuid.uuid4())}}
result = app.invoke(input=("user", "please generate a random line plots"), config = config)


I got error message below when try to add config argument:


venv\lib\site-packages\langgraph\serde\jsonplus.py:72, in JsonPlusSerializer._default(self, obj)
68 return self._encode_constructor_args(
69 obj.class, kwargs={"node": obj.node, "arg": obj.arg}
70 )
71 else:
---> 72 raise TypeError(
73 f"Object of type {obj.class.name} is not JSON serializable"
74 )

TypeError: Object of type Result is not JSON serializable


I suppose the error comes due to change of message format that can not be json.dump(), is there any quick way to fix this? like some parser function maybe?

Hi @LizhongLiu-cims, yes this looks like a JSON format problem. Sometimes the model ignores the required JSON schema they should be producing. This could be related

Hi @mlejva, in that way, if I want to add memory as checkpointer to save the history, do I need to rewrite my own memory function instead of using MemorySaver() from langgraph.checkpoint? If that way, could you please provide an demo example to follow? Thanks!