langchian_agent的高级使用

设置agent名称

python 复制代码
agent = create_agent(
    model=model,
    name = "chat_assistant"
)
作用 说明
流式输出归因 流式输出时,可判断当前 token/事件来自哪个 Agent。
消息身份标记 生成的 AIMessage 会带上 name,便于会话记录、审计和回放。
调试与 trace 可读性 日志和链路追踪中能快速识别当前执行的是哪个 Agent。
组件化封装 Agent 作为可复用模块时,name 能保持统一身份,方便注册、监控和迁移。
前端展示 可视化界面可直接用 name 展示"当前活跃 Agent""本轮输出来源"。
稳定运行时 ID 相比临时展示名,name 更适合用于日志检索、监控统计和跨模块协作。

系统提示词

使用 create_agent 创建 Agent 时,需传入模型和工具、可选地传入系统提示词。提示词为Agent 提供了任务背景、行为准则和操作指南。

系统指令,即SystemMessage,通过 system_prompt 设置,定义 Agent 行为。这个参数可以是str或者SystemMessage类型。

使用建议:

  • 明确说明 Agent 的角色

  • 定义输出格式

  • 说明何时使用工具

agent的结构化输出

python 复制代码
# 2.Pydantic结构化方式定义
class ContactInfo(BaseModel):
    """用户的联系方式"""
    name: str = Field(description="用户姓名")
    email: str = Field(description="用户邮箱地址")
    phone: str = Field(description="用户的手机号")
​
# 3.agent初始化
agent = create_agent(
    model=model,
    response_format=ProviderStrategy(ContactInfo)
)

agent的流式输出

invoke() 是"一次性等完整结果",用户要等很久才能看到输出。流式输出用 agent.stream() 替代 invoke(),让 Agent 在执行过程中渐进式地把中间结果吐出来,实现"打字机效果"或"步骤可视化",大幅降低等待焦虑。

python 复制代码
# 非流式(一次性返回)
result = agent.invoke({"messages": [...]})
​
# 流式(逐步返回)
for chunk in agent.stream({"messages": [...]}, stream_mode="updates"):
    print(chunk)

关键在于 stream_mode 参数,指定"流出来的是什么"。

7 种输出模式

模式 输出内容 适用场景
updates(默认) 每步增量变化的部分 观察 Agent 思考/调工具/拿结果的执行进度
values 每步执行后的完整状态 需要每步都拿到全量状态、做状态持久化
messages 流式返回的 token + 元数据 聊天机器人"打字机效果",最佳交互体验
tasks 任务开始/结束时间 + 结果/错误 监控任务生命周期
debug 比 tasks 更详细(含步骤、时间戳、类型) 调试、链路追踪
checkpoints 每次检查点创建时输出状态 状态持久化、工作流恢复、分布式跟踪
custom 开发者用 get_stream_writer() 自定义输出 业务进度(如"已处理 10/100 条")、自定义日志

模式也可以组合

python 复制代码
for stream_mode, chunk in agent.stream(
    {"messages": [...]},
    stream_mode=["tasks", "updates"]  # 同时监听两种
):
    print(f"模式: {stream_mode}, 数据: {chunk}")
相关推荐
段一凡-华北理工大学5 小时前
工业智能体:从Codex/Claude到项目实战~系列文章05:从“AI助手“到“工业智能体“:能力跃迁与落地范式
人工智能·python·claude·codex·工业智能体·高炉炼铁智能化
深蓝AI6 小时前
ContextVar 到线程池就丢了?asyncio.to_thread 和 run_in_executor 实测
python
岁月宁静7 小时前
什么是 Agent:从"会聊天"到"会做事"
人工智能·python
岁月宁静7 小时前
AI 应用开发工程师简历怎么写:HR 初筛、技术复筛、面试追问,三道关卡各看什么?
人工智能·python·面试
来让爷抱一个7 小时前
Python 异步里混用同步库,事件循环被卡住的全过程
开发语言·python
小肝一下9 小时前
3.基础语法(3)
python
深蓝AI10 小时前
Python 子进程树:父进程被杀后,孙进程为何还在跑?
python
心祭丫丫10 小时前
【每天一个 Python 小案例17】Python 实现通讯录
开发语言·人工智能·笔记·python·学习
爱你真是太好了10 小时前
Skill 索引瘦身与渐进加载
python
贾公子11 小时前
检测链路的容量规划——用 Little's Law 算清 QPS、并发与积压
后端·python