Skip to content

Building graph out of agent iter #1467

Open
@JoeGaffney

Description

@JoeGaffney

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions