Open
Description
Question
Hey,
I'm trying to build a graph out of an agent run.
async def main(request: SequenceRequest) -> SequenceResponse:
deps = SequenceDependencies(scene_id=2, db=SequenceDatabase(), data=request)
nodes = []
# Begin an AgentRun, which is an async-iterable over the nodes of the agent's graph
async with sequence_agent.iter(request.prompt, deps=deps) as agent_run:
async for node in agent_run:
# Each node represents a step in the agent's execution
nodes.append(node)
result = agent_run.result
history = result.all_messages()
print("\nNodes\n")
for node in nodes:
print("\n", type(node))
print(node)
result_graph = Graph(nodes=nodes)
result_graph.mermaid_save("../tmp/output/graph.png")
...
Nodes in list
- <class 'pydantic_ai._agent_graph.UserPromptNode'> UserPromptNode
- <class 'pydantic_ai._agent_graph.ModelRequestNode'> ModelRequestNode
- <class 'pydantic_ai._agent_graph.CallToolsNode'> CallToolsNode
- <class 'pydantic_ai._agent_graph.ModelRequestNode'> ModelRequestNode
- <class 'pydantic_ai._agent_graph.CallToolsNode'> CallToolsNode
- <class 'pydantic_graph.nodes.End'> End
But get
File "C:\development\deferred-diffusion\venv\Lib\site-packages\pydantic_graph\graph.py", line 116, in __init__
self._register_node(node, parent_namespace)
File "C:\development\deferred-diffusion\venv\Lib\site-packages\pydantic_graph\graph.py", line 547, in _register_node
self.node_defs[node_id] = node.get_node_def(parent_namespace)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\deferred-diffusion\venv\Lib\site-packages\pydantic_graph\nodes.py", line 108, in get_node_def
type_hints = get_type_hints(cls.run, localns=local_ns, include_extras=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Admin\AppData\Local\Programs\Python\Python312\Lib\typing.py", line 2310, in get_type_hints
hints[name] = _eval_type(value, globalns, localns, type_params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Admin\AppData\Local\Programs\Python\Python312\Lib\typing.py", line 415, in _eval_type
return t._evaluate(globalns, localns, type_params, recursive_guard=recursive_guard)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Admin\AppData\Local\Programs\Python\Python312\Lib\typing.py", line 947, in _evaluate
eval(self.__forward_code__, globalns, localns),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<string>", line 1, in <module>
AttributeError: 'AgentRunResult' object has no attribute 'FinalResult'
Maybe I'm doing something wrong here or misunderstanding, but thought agents nodes was based upon the graph nodes. Or there is some better way to build out diagrams from agent runs.
Cheers,
Joe
Additional Context
pydantic-ai==0.0.55
Python 3.12.7
Windows 10 pro