96SEO 2026-08-11 19:24 20
你是不是也听过这些词:Agent、智能体、自主决策…,听起来很高级,但总觉得离实际代码有点远?

如果你正面临这样的问题:想把AI落地到业务,却被繁琐框架吓退;或者需要快速验证思路,却没有一份完整可直接跑通的代码;这篇文章,说白了就是为你量身定制。
在写代码之前,我们先理解一个最简单、也最主要的模型——ReAct 范式。
就像你闭着眼睛走迷宫:摸一下→ 摸到墙了→ 我应该往左转→ 再迈一步…直到走出去,
我们的旅行助手也是这样工作的。先上个最终效果图:
使用者: 查一下某城市今天的天气,接下来根据天气推荐一个景点。--- 第1轮
Thought: 需要先获取某城市的实时天气。话说回来,从Action来看,get_wear
Observation: 某城市当前天气: Sunny。气温24°C
--- 第2轮
Thought: 天气晴朗,适合户外现在基于天气推荐景点。从Action来看,get_attraction
Observation: 推荐某湖公园、某历史步道
--- 第3轮
Thought: 已经得到推荐,可以回答使用者了。Action的观点是,Finish
看到了吗?不过,它没有一次性生成答案,而是自己决定分两步走。每一步都用到了上一步的真实结果。这才是“自主”的雏形,
我们只需要三个东西:
Thought 和 Action。这里我用兼容OpenAI接口的模型,你可以用官方GPT、国产模型或本地跑Ollama。Action,接下来调用对应函数。
pip install requests openai tavily-python # tavily是搜索API,你也可以换成别的
AGENT_SYSTEM_PROMPT = """你是一个智能旅行助手。你需要一步步完成使用者请求。# 可用工具:
- get_wear: 查询某城市的实时天气。- get_attraction: 根据城市和天气推荐景点。# 输出格式:
每次回复只能包含一对 Thought 和 Action,格式如下:
Thought: 你的思考过程
Action这方面。- 调用工具:get_wear
- 或者结束:Finish
# 关键规则:
- 一次只输出一对 Thought-Action,不要输出多对。话说回来,- Action 必须写在同一行。其实,- 当信息足够回答使用者时必须使用 Finish 结束。"""
工具1:查询真实天气
import requests
def get_wear -> str:
url = f"https://wttr.in/{city}?format=j1"
try的观点是,resp = requests.get
resp.raise_for_status
data = resp.json
current = data
desc = current
temp = current
return f"{city}当前天气:{desc},气温{temp}°C"
except Exception as e:
return f"天气查询失败:{e}"
}
工具2:根据天气推荐景点
from tavily import TavilyClient
import os
def get_attraction -> str:
api_key=os.getenv
if not api_key:
return "错误: 未设置 TILY_API_KEY"
client=TavilyClient
query=f"{city} {wear} 天气下 推荐 景点"
至于try,res=client.search
if res.get:
return res
snippets= for r in res.get]
return "推荐:
"+ "
".join if snippets else "未找到相关景点"
except Exception as e:
return f"搜索失败:{e}"
}
把工具放进字典。方便后面调用:
available_tools={
'get_wear':get_wear,'get_attraction':get_attraction,}
LLM客户端
from openai import OpenAI
class LLMClient:
def __init__:
self.model=model
self.client=OpenAI
def generate:
messages=
resp=self.client.chat.completions.create(
model=self.model,messages=messages,temperature=0.0 # 低温度让输出更确定
)
return resp.choices.message.content
}
三、主循环:把一切串起来
主要代码不超过30行。关键步骤的观点是,
-
维护
prompt_history。把使用者消息、每次 Thought‑Action 与 Observation 全部拼进去。
-
循环调用 LLM,每次得到输出后用正则解析 Action 字段。
-
如果是 Finish 就结束;否则解析出工具名与参数,从字典里调用对应函数。把结果包装成 Observation 加入历史里。
下面是完整主循环代码,请替换自己的 API KEY:
import re,os
LLM_CONFIG={
'model':'gpt--turbo'。# 或你自己的模型名
'api_key':'YOUR_API_KEY','base_url':'https://api.openai.com/v1'
}
os.environ="YOUR_TILY_KEY"
llm=LLMClient
user_msg ="帮我查一下某城市今天的天气,接下来根据天气推荐一个景点。"
history=
print
MAX_LOOPS=10 # 防止无限循环
for step in range:
print
prompt="
".join
output=llm.generate
# 提取第一个完整 Thought‑Action 对
match=re.search|\Z)'。output,re.DOTALL)
if match:
output=match.group.strip
print
history.append
action_match=re.search',output)
if not action_match:
obs=f"Observation 错误:未找到 Action,请按格式输出"
print;history.append;continue
action_str=action_match.group.strip
# 判断是否完成
if action_str.startswith:
final=re.search\]',action_str).group
print
break
# 解析工具名和参数
tool_name=re.search\.group
args_str=re.search\)',action_str).group
kwargs=dict=\"\"',args_str))
if tool_name not in available_tools:
obs=f"Observation 错误:未知工具 {tool_name}"
else这方面。result=available_tools
obs=f"Observation:{result}"
print
history.append
四、跑起来看看
以下为精简后的示例输出 :
使用者输入 : 帮我查一下某城市今天的天气,接下来根据天气推荐一个景点。=== 第 1 轮 ===
模型输出 :
Thought : 需要先获取某城市当前的天气情况。Action : get_wear
Observation : 某城市当前天气 : Sunny。气温24°C
=== 第 2 轮 ===
模型输出 :
Thought : 天气晴朗,现在基于这个信息推荐适合户外活动 的 景点。Action : get_attraction
Observation : 推荐 : 某湖公园,某山 徒步路线。
=== 第 3 轮 ===
模型输出 :
Thought : 已经获得推荐,可以给出最终回答了。Action : Finish
✅任务完成 最终回答 : 某城 今天晴朗 温暖,很适合户外活动。推荐您去 某湖 公园 划船,或者 去 某山 徒步 .
注 :如果第一步先查到多云。则接下来会自动变成室内场所建议,这正是 AI 智能体与传统流程式脚本最大的区别——没有硬编码规则,而是完全由 LLM 动态推理。
五、你可以怎么玩?
-
加新工具 : 如订酒店 API 、日历查询 、邮件发送 等,只需把函数放进 available_tools 并在 System Prompt 声明即可;Llm 会自行决定何时调用。
-
换更强模型 : 使用 GPT‑4 / Claude 等,可提高规划与选型准确率。
-
增加记忆 : 将历史存入向量数据库。让智能体“记住”之前聊过的偏好,从而提供更精准建议。老实说,
-
多智能体协作 : 启动两条循环。一个负责信息检索,一个负责报告,它们通过 Observation 相互传递,实现协同工作。
六、常见坑和方法
-
LLM 输出格式飘忽 : 正则解析容易失败。可尝试 OpenAI 原生 Function Calling 替代文本解析,更稳定。
-
陷入循环 : 如反复查天 气不结束。解决办法 : 在 System Prompt 明确最大调用次数或在代码中限制 loop 次数。
-
工具参数错误 : LLM 有时会漏掉引号,例如
get_wear。可通过强调参数格式或在解析时加入容错处理。
七、
作为专业的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