首页 › AI Agent › 智能体 Agent 12要素原则 › 构建无状态式智能体

构建无状态式智能体

核心思路​

如果能预判模型极大概率会调用工具X,就不要反复走「模型输出调用指令→后端拉取数据」的Token往返流程。​

提前用确定性代码预取数据,直接塞进上下文,省去一轮模型推理与接口请求开销。​

​

飞书文档 - 图片

​

反面示例:让模型自己发起查询​

提示词原文​

​

代码块​

Plain Text

处理发布相关任务时,你需要先获取已发布的Git版本标签,才能执行生产环境部署。​

​

以下是当前流程记录:​

{{ thread.events }}​

​

请判断下一步操作,以JSON格式输出,可选意图如下:​

{​

"intent": "deploy_backend_to_prod",​

"tag": 字符串版本号​

}​

或​

{​

"intent": "list_git_tags"​

}​

或​

{​

"intent": "done_for_now",​

"message": 文本说明​

}​

​

​

对应业务代码​

​

代码块​

Python

​

​

这套方案存在多余损耗:模型先输出查询标签的工具调用,后端再请求接口、回填上下文,多一轮完整LLM交互。​

​

优化方案一:预取数据,直接注入提示词​

修改后的提示词(移除查询标签的可选意图)​

​

代码块​

Plain Text

处理发布相关任务时,你需要基于Git版本标签执行生产环境部署。​

​

当前已获取全部Git标签:​

{{ git_tags }}​

​

以下是当前流程记录:​

{{ thread.events }}​

​

​

优化代码​

​

代码块​

Python

thread = {"events": [initial_message]}​

# 提前确定性拉取版本标签,无需等待模型指令​

​

​

优化方案二:把预取记录写入会话事件流(推荐,统一上下文格式)​

直接将「查询动作+查询结果」作为事件存入会话,完全复用前文统一上下文结构,无需额外传参:​

​

代码块​

Python

thread = {"events": [initial_message]}​

​

# 1. 先写入发起查询事件​

thread["events"].append({"type": "list_git_tags"})​

# 2. 确定性预拉取标签​

git_tags = await fetch_git_tags()​

# 3. 将查询结果写入会话上下文​

thread["events"].append({​

"type": "list_git_tags_result",​

"data": git_tags​

})​

​

# 仅传入会话对象即可,数据已内置在上下文​

next_step = await determine_next_step(thread)​

​

while True:​

match next_step.intent:​

​

​

总结核心准则​

只要你能预判模型后续必然会调用某类工具,就提前通过确定性代码主动拉取数据。​

把「拉取原始数据」交给后端固定代码处理,让大模型专注完成更复杂的逻辑:如何利用已获取的数据做出业务决策。​

​