96SEO 2026-06-21 04:40 2
下面我们基于 Python 详细解析 Agent Loop 的实现。
三个相互关联的文件内容设计如下:

上面几个步骤,我们在前面的文章Yi经实现过了相信大家不会陌生了。接下来才是本篇文章的重点。
hen明显我们不但需要实现大模型调用工具,还需要实现一个Neng反复调用工具、观察结果并继续决策的循环体。
AI Agent是一种Neng够自主感知环境、独立决策并执行任务的智Neng实体,与传统 AI 工具相比,具备自主性、工具调用Neng力和动态适应性等特征。 AI Agent 的工作原理大致包括四个关键环节:感知、思考、决策和行动。它通过传感器或数据接口获取环境信息,经过处理和理解后进行推理和决策,然后通过执行器或接口作用于环境。
Agent Loop 是个啥?一个典型的 Agent Loop 包含以下步骤:
反馈结果将每个工具的结果包装成 tool 角色的消息,追加到历史中。
import os
import json
from pathlib import Path
from dotenv import load_dotenv
from openai import OpenAI
# 加载环境变量
load_dotenv
# ---------- 初始化客户端 ----------
# 创建 OpenAI 客户端实例,使用 DeepSeek API 密钥和基础 URL
client = OpenAI(
api_key=os.getenv,
base_url="https://api.deepseek.com"
)
加载环境变量,初始化 OpenAI 客户端。
while 模型请求调用工具:
执行工具调用
将结果反馈给模型
它的运行流程则Ke以用下图表示:
一个工具 + 一个循环 = 一个智Neng体,就是智Neng体的核心秘密。
它怎么思考、怎么分析、怎么决定下一步执行什么工具、怎么处理模型输出…….说实话,这块儿咱就是说hen难一下子全部搞懂,但有个东西特别关键——那就是 Agent Loop。
为啥需要 Agent Loop?因为从前言中的例子我们Ke以知道在没有循环调用工具的情况下我们只Neng手动将工具的输出粘贴回对话中,充当人肉中转站。这不仅低效,geng违背了“自主智Neng体”的初衷。
而 Agent Loop 正是为了解决这一问题而应运而生:将模型与工具连接起来让模型根据环境反馈自主决定下一步动作,直到任务完成。
请帮我读取 step1.txt 文件,并严格按照文件中的线索一步步寻找,直到拼凑出Zui终的完整密码告诉我。
执行结果如下:
step1.txt 内容如下:
执行工具遍历所有工具调用,运行对应的工具函数,收集结果。
你可Neng会问,为啥百度不收录我的文章呢?其实吧,这事儿挺复杂的,有时候是服务器问题,有时候是robots.txt设置问题,还有可Neng是内容质量问题,你得一一排查才行。
Agent Loop 怎么实现?
# -- 核心模式:一个不断调用工具的 while 循环,直到模型停止 --
def agent_loop:
"""
核心代理循环:
不断地调用大模型,Ru果模型返回了工具调用,则执行工具并将结果发回给模型,
直到模型不再需要调用工具并返回Zui终文本回复为止。
"""
while True:
# 调用大模型,传入历史消息、工具列表,并让模型自动决定是否调用工具
response = client.chat.completions.create(
model="deepseek-chat", # 使用的模型名称
messages=messages,
tools=tools,
tool_choice="auto"
)
msg = response.choices.message
# 将助手的回复添加到历史记录中
messages.append
# Ru果模型没有调用工具,说明Yi完成任务,返回模型回复的文本内容
if not msg.tool_calls:
return msg.content
# 否则,模型决定调用工具,遍历所有的工具调用
for tool_call in msg.tool_calls:
if tool_call.function.name == "read_file":
# 解析模型生成的工具调用参数
args = json.loads
print
# 执行工具函数
result = file_tool.execute
# 打印工具执行结果的前200个字符
print
# 将工具执行结果作为 tool 类型的消息追加到历史记录中
messages.append({
"role": "tool",
"tool_call_id": tool_call.id,
"name": tool_call.function.name,
"content": result
})
用户输入用户的消息作为第一条消息加入历史中。
if __name__ == "__main__":
# 初始化历史消息列表,包含系统提示词,用于指导助手的行为
history =
# 启动交互式终端会话
while True:
try:
# 获取用户输入
query = input
except :
# 处理 Ctrl+D 或 Ctrl+C 退出的情况
break
# 处理正常退出的输入
if query.strip.lower in :
break
# 将用户输入追加到历史记录中
history.append
# 启动代理循环进行对话
final_answer = agent_loop
# 打印助手给出的Zui终答案
if final_answer:
print
LLoop 的核心逻辑是啥?
解析响应检查大模型的响应是否包含新的 Action 请求。Ru果有,就提取出 Action 并继续下一轮迭代;Ru果没有,就认为任务完成了直接返回Zui终结果给用户就行了呗~哈~哈~!你懂的,其实hen简单!咱就是说大模型的响应就像是在告诉我们下一步该干嘛,要么是继续干活儿,要么就是完事儿了Ke以收工了!所以说这个事儿就得这么干!不对,不对,应该是…… 哦,对了大模型的响应里Ru果有 Action 请求,那就说明它还想继续干活儿,那就得接着迭代;Ru果没有,那就说明它Yi经完事儿了就Ke以直接返回结果给用户啦!哈哈,是不是hen简单呢?说实话,这玩意儿一开始我也不太明白,但后来慢慢就懂了你kan,其实就是个不断迭代的过程嘛! 所以我们需要一个Neng反复调用LLoop 中的各种组件或功Neng模块,,观察结果并继续决策的LLoop 体,,这就是 LLoop.
+----------+ +-------+ +---------+
| 用户 | ---> | LLM | ---> | 工具 |
| prompt | | | | 执行 |
+----------+ +---+---+ +----+----+
^ |
| 工具结果 |
+----------------+
LLoop 的架构是怎样的?有什么价值呢?咱来瞧瞧~哈~哈~!
无论是简单的文件读取,还是复杂的代码编写、代码运行,其背后dou是同一个逻辑原理:LLoop.
理解并掌握这个逻辑原理,你就掌握了智Neng体设计的钥匙。在此基础上,你Ke以添加策略、记忆、多智Neng体协作等高级特性,但核心永远不会变——LLoop.
所以说嘛,这个 LLoop 就相当于是 AI Agent 的核心秘密啦!你要是弄懂了这个,其他的也就好办了!哈~哈~!
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback