首页
学习
活动
专区
圈层
工具
发布
技术百科首页 >Pydantic AI >Pydantic AI 的 Graph API 是如何定义工作流的?

Pydantic AI 的 Graph API 是如何定义工作流的?

词条归属:Pydantic AI

1. 基于类型提示的图定义

Pydantic Graph 使用类型提示定义节点和边,每个节点的 run 方法显式声明返回类型(即下一个可能的节点),使图结构在定义时即可验证。

代码语言:javascript
复制
from pydantic_graph import Graph, BaseNode, End
from dataclasses import dataclass

@dataclass
class ConversationState:
    user_name: str | None = None
    interests: list[str] = field(default_factory=list)

@dataclass
class GreetUser(BaseNode[ConversationState]):
    async def run(self, ctx: GraphRunContext[ConversationState]) -> 'AskName':
        print("Hello! Welcome to our recommendation system.")
        return AskName()

@dataclass
class AskName(BaseNode[ConversationState]):
    async def run(self, ctx: GraphRunContext[ConversationState]) -> 'AskInterests':
        name = input("What's your name? ")
        ctx.state.user_name = name
        return AskInterests()

# 定义图
conversation_graph = Graph(
    nodes=[GreetUser, AskName, AskInterests, GenerateRecommendations, SayGoodbye],
    state_type=ConversationState,
)

2. 状态持久化

Graph 支持状态持久化,允许工作流在任意节点暂停并从断点恢复。这对于长时间运行的工作流和人机交互场景尤为重要。

3. 与 Agent 集成

Graph 节点内部可以嵌入 Pydantic AI Agent,实现 AI 驱动的工作流节点。每个步骤都可以调用 Agent 进行结构化输出处理。

相关文章
AI智能体的崛起:Arazzo如何定义API工作流的未来
曾经,移动革命的口号是:“为此有一个应用程序”。如今,新的现实是,AI驱动的 Agent 正在极大地改变我们与软件交互的方式,创造了一个新的口号:“为此有一个 Agent!”从自动化任务到执行复杂的工作流,并代表我们自主行动,AI Agent 正在成为数字交互中关键的中介。虽然这看起来像是魔法,但 API——而不是新的巫术——仍然提供了使这些 Agent 工作流成为可能并服务于这类新用户的连接结构。
云云众生s
2025-03-05
5720
AI重塑数据分析师的工作流|AI是如何提高数分狗学习效率的
又到了周一AI的话题,上周聊了AI对数分冲击的一个侧面,今天从另一个方面来聊聊AI是如何提升数分狗的学习效率的~
做数据的二号姬
2023-10-24
5640
POJO、Java Bean是如何定义的
之前介绍过DTO、PO、VO的转换,在日常开发中还有一些类经常被人叫做POJO,还有的人叫它们Java Bean。这些概念都是在特定场景下引入,用来表明它们的特性的。那这些称呼都是啥意思,有啥标准和特征呢?今天就来分享一下这些没用的知识。
码农小胖哥
2022-10-05
1.1K0
大模型API的token是如何计算的?
在我们日常使用大语言模型(LLM)API 时,比如 OpenAI、Anthropic 或其他厂商的接口,token 数量几乎是一个绕不开的问题。无论是控制调用成本,还是预估模型上下文长度,都离不开对 token 计算方式的理解。比如我在某个平台调用大模型API的时候就会有一些相关的参数:
闫同学
2025-11-10
4.5K0
OpenStack中的RESTful API是如何实现的?
OpenStack作为一个开源的IaaS平台,各个组件和服务之间的消息传递都是通过RESTfulAPI和RPC传递,这里主要讲讲它是如何实现REST的。由于大家可能对OpenStack这个云平台不熟悉,稍微引用一段文字介绍一下OpenStack。 OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。 OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作。OpenStack支持几乎
Python中文社区
2018-01-31
2.6K0
点击加载更多
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
领券