Agentic AI应用架构师如何优化AI应用的资源利用
Agentic AI的核心是“自主决策”,但自主意味着“更多的思考步骤、更多的工具调用、更多的状态存储”——这些都是资源开销。帮架构师找到Agentic AI的资源消耗点,用可落地的方法将资源成本降低50%以上。范围覆盖Agentic AI的四大核心模块(目标分解、决策、工具调用、状态管理)的优化,以及实战中的代码实现。故事引入:用“智能助手订高铁票”的生活场景,快速理解Agentic AI的资源
Agentic AI应用架构师的资源魔法:让智能体又聪明又省钱的完整指南
关键词:Agentic AI、资源优化、智能体架构、token管理、工具调用、状态压缩、并行调度
摘要:Agentic AI(智能体AI)因能自主分解任务、调用工具、迭代优化,成为AI应用的“下一代形态”——但随之而来的token消耗、API费用、内存占用、时间延迟等资源问题,也成了架构师的“紧箍咒”。本文从“小管家”的生活类比切入,拆解Agentic AI的资源消耗底层逻辑,用通俗故事+实战代码+数学模型讲清优化路径:从“让智能体少啰嗦”(token压缩)到“让智能体不做无用功”(工具调用优化),再到“让智能体学会分身”(并行调度)。最终帮架构师实现“智能体更聪明、资源更省”的平衡。
背景介绍
目的和范围
Agentic AI的核心是“自主决策”,但自主意味着“更多的思考步骤、更多的工具调用、更多的状态存储”——这些都是资源开销。本文的目的是:帮架构师找到Agentic AI的资源消耗点,用可落地的方法将资源成本降低50%以上。范围覆盖Agentic AI的四大核心模块(目标分解、决策、工具调用、状态管理)的优化,以及实战中的代码实现。
预期读者
- AI应用架构师(需要设计高效的智能体系统)
- 算法工程师(需要优化智能体的资源利用)
- 产品经理(需要理解技术成本,平衡功能与预算)
文档结构概述
- 故事引入:用“智能助手订高铁票”的生活场景,快速理解Agentic AI的资源消耗。
- 核心概念拆解:用“小管家”类比智能体,讲清token、工具调用、状态管理的含义。
- 资源消耗模型:用数学公式量化token、API、算力、时间的成本。
- 实战优化步骤:用LangChain代码演示“目标分解优化→状态压缩→工具缓存→并行调度”的全流程。
- 场景与趋势:结合智能客服、智能助手等场景,讲清优化的实际价值。
术语表
核心术语定义
- Agentic AI:具备自主目标分解、决策执行、反馈学习能力的AI系统(比如AutoGPT、Copilot)。
- 智能体(Agent):Agentic AI的基本执行单元,像“能自己做计划的小管家”——能听需求、拆任务、找工具、记结果。
- token:大语言模型(LLM)处理文本的“最小积木”(比如“你好”是2个token),LLM按token收费(类似“按字数发消息”)。
- 工具调用:智能体调用外部API(比如12306查票、携程查酒店)完成任务的能力(类似“小管家叫跑腿小弟”)。
- 状态管理:智能体存储“用户偏好、任务进展、历史决策”的机制(类似“小管家的笔记本”)。
缩略词列表
- LLM:大语言模型(Large Language Model)
- API:应用程序编程接口(Application Programming Interface)
核心概念与联系:用“小管家订高铁票”讲清资源消耗
故事引入:智能助手的“隐形开销”
早上你对智能助手说:“帮我订9点去上海的高铁票,查一家离高铁站近的酒店,提醒我带身份证。” 智能助手的操作链是这样的:
- 思考:把“订高铁+查酒店+提醒”拆成3个小任务(消耗token)。
- 调用工具:先查12306(发现9点无票,调9:30)→再查携程(找虹桥站附近酒店)(消耗API费用)。
- 记笔记:把“你喜欢300元以下酒店、9:30的票”记下来(占用内存)。
- 反馈:告诉你“票已订,酒店推荐B(250元),已设提醒”。
这个过程中,每一步都在“花钱”:
- 思考得越久(比如啰嗦地解释“我要查高铁票因为你要去上海”),token越多,成本越高;
- 工具调用得越频繁(比如先查酒店再发现票没了),API费用越浪费;
- 笔记记的越乱(比如记了100条无关偏好),内存占用越大,下次思考得翻更久(更费token)。
架构师的工作,就是让这个“小管家”更聪明地花钱——比如“先查票再查酒店”避免无用功,“把笔记压缩成关键信息”减少翻找时间,“缓存查票结果”避免重复调用。
核心概念解释:像给小学生讲“小管家的工具箱”
我们用“小管家”类比智能体,拆解4个核心概念:
1. 智能体(Agent):能自己做计划的小管家
智能体就像你家的“全能小管家”——你说“帮我买奶茶”,它会:
- 拆任务:“要什么口味?家附近有哪家?有没有优惠?”
- 做决策:“选三分糖少冰,楼下奶茶店有满减”;
- 调用工具:用外卖APP下单(叫“跑腿小弟”);
- 记结果:把“你喜欢三分糖”写在笔记本上(下次不用再问)。
智能体的“自主”是核心,但“自主”意味着“更多的步骤”——每一步都要消耗资源。
2. token:小管家“说话”的“字数费”
token是LLM处理文本的“最小单位”,就像你发消息按“字数”收费。比如:
- 小管家想“主人喜欢三分糖”→拆成3个token(“主人”“喜欢”“三分糖”);
- 小管家说“我现在要帮你查9点的高铁票”→拆成10个token。
LLM的收费模式是“输入token×输入单价 + 输出token×输出单价”(比如GPT-3.5-turbo:输入$0.0015/1k token,输出$0.002/1k token)。小管家“说话越啰嗦”,token成本越高。
3. 工具调用:小管家的“跑腿小弟”
智能体自己不会查高铁票、不会订酒店——它需要“叫跑腿小弟”(调用API)。比如:
- 查高铁票→调用12306 API(跑腿费:$0.01/次);
- 查酒店→调用携程API(跑腿费:$0.02/次)。
跑腿小弟叫得越频繁、越没用(比如先查酒店再发现票没了),API费用越浪费。
4. 状态管理:小管家的“笔记本”
智能体需要记“用户偏好、任务进展、历史决策”——比如“主人喜欢300元以下酒店”“9:30的高铁票已订”。这些信息存在“笔记本”(内存/数据库)里,下次思考时要“翻笔记本”(把状态传给LLM)。
笔记本记的东西越多、越乱,翻找的时间越长(token消耗越多),内存占用越大。
核心概念的关系:小管家的“花钱逻辑”
智能体、token、工具调用、状态管理的关系,就像“小管家完成任务的四要素”:
- 智能体是“决策者”:决定做什么、怎么做;
- token是“思考成本”:决策者每想一步都要花钱;
- 工具调用是“执行成本”:决策者叫跑腿小弟要花钱;
- 状态管理是“记忆成本”:决策者记东西要占地方,翻东西要花钱。
它们的协同逻辑是:智能体用“思考(token)”拆任务→用“跑腿(工具调用)”做任务→用“笔记本(状态)”记结果→再用“思考”优化下一次任务。
优化的核心,就是让这四个环节“少花钱、多办事”:
- 思考:少啰嗦(减少token);
- 跑腿:不做无用功(减少API调用);
- 笔记本:记关键信息(压缩状态);
- 整体:同时做多个任务(并行调度)。
核心架构与资源消耗点:文本示意图
Agentic AI的典型架构是“用户需求→目标分解→决策→工具调用→状态管理→输出结果”,每个环节都有资源消耗:
模块 | 功能 | 资源消耗点 |
---|---|---|
目标分解 | 把大需求拆成小任务 | token(思考拆分的步骤) |
决策 | 决定每个任务的执行方式 | token(思考决策的逻辑) |
工具调用 | 调用API完成任务 | API费用(跑腿费) |
状态管理 | 存储用户偏好、任务进展 | 内存(笔记本占空间)+ token(翻笔记本的时间) |
Mermaid流程图:资源流动的“毛细血管”
graph TD
A[用户需求] --> B[目标分解模块]
B --> C[决策模块]
C --> D[工具调用模块]
D --> E[状态管理模块]
E --> C
C --> F[输出结果]
资源1[token消耗:分解任务] --> B
资源2[token消耗:做决策] --> C
资源3[API费用:调用工具] --> D
资源4[内存消耗:存状态] --> E
资源5[token消耗:读状态] --> E
资源消耗的数学模型:算清“每一分钱花在哪儿”
要优化资源,先得量化资源成本。Agentic AI的总资源成本可以拆成4部分:
总资源成本=token成本+API成本+算力成本+时间成本 \text{总资源成本} = \text{token成本} + \text{API成本} + \text{算力成本} + \text{时间成本} 总资源成本=token成本+API成本+算力成本+时间成本
1. token成本:按“字数”收费
token成本是LLM的核心开销,计算公式:
token成本=(输入token数×输入单价)+(输出token数×输出单价) \text{token成本} = (\text{输入token数} \times \text{输入单价}) + (\text{输出token数} \times \text{输出单价}) token成本=(输入token数×输入单价)+(输出token数×输出单价)
举例:用GPT-3.5-turbo处理一个任务,输入1000 token(输入单价$0.0015/1k),输出500 token(输出单价$0.002/1k):
token成本=(1000×0.0015+500×0.002)/1000=0.0025美元 \text{token成本} = (1000 \times 0.0015 + 500 \times 0.002) / 1000 = 0.0025 \text{美元} token成本=(1000×0.0015+500×0.002)/1000=0.0025美元
2. API成本:按“次数”收费
工具调用的成本是“调用次数×每次单价”:
API成本=∑i=1n(工具i调用次数×工具i单价) \text{API成本} = \sum_{i=1}^n (\text{工具}i\text{调用次数} \times \text{工具}i\text{单价}) API成本=i=1∑n(工具i调用次数×工具i单价)
举例:调用12306 API($0.01/次)2次,调用携程API($0.02/次)1次:
API成本=(2×0.01)+(1×0.02)=0.04美元 \text{API成本} = (2 \times 0.01) + (1 \times 0.02) = 0.04 \text{美元} API成本=(2×0.01)+(1×0.02)=0.04美元
3. 算力成本:按“时间”收费
智能体的计算(比如LLM推理、状态存储)需要算力(GPU/CPU),成本是“计算时间×算力单价”:
算力成本=计算时间(小时)×算力单价(美元/小时) \text{算力成本} = \text{计算时间(小时)} \times \text{算力单价(美元/小时)} 算力成本=计算时间(小时)×算力单价(美元/小时)
举例:用GPU($0.5/小时)计算10秒:
算力成本=(10/3600)×0.5≈0.0014美元 \text{算力成本} = (10/3600) \times 0.5 ≈ 0.0014 \text{美元} 算力成本=(10/3600)×0.5≈0.0014美元
4. 时间成本:按“等待”收费
用户等待时间、服务器占用时间也是资源——比如用户等1分钟的成本是$0.001,服务器每小时$0.1:
时间成本=任务时间(小时)×(用户时间单价+服务器时间单价) \text{时间成本} = \text{任务时间(小时)} \times (\text{用户时间单价} + \text{服务器时间单价}) 时间成本=任务时间(小时)×(用户时间单价+服务器时间单价)
优化的目标:让每个成本项“最小化”
假设初始总资源成本是$0.0247(见下文),通过优化:
- token成本从$0.0025降到$0.00135(减少46%);
- API成本从$0.02降到$0.01(减少50%);
- 算力成本从$0.0014降到$0.0007(减少50%);
- 时间成本从$0.0008降到$0.0004(减少50%);
总成本降到$0.01245,节省50%!
实战:用LangChain优化智能体的资源利用
我们用“智能助手订高铁票”的场景,从初始版本→优化版本,演示4个核心优化步骤。
开发环境搭建
- 依赖安装:
pip install langchain openai python-dotenv
- 配置API Key:创建
.env
文件,写入OpenAI API Key:OPENAI_API_KEY=your-api-key
初始版本:“啰嗦的小管家”
先写一个“没优化”的智能体——它会先查酒店再查高铁票(导致无用功),会记很多无关信息(导致token浪费)。
代码实现
from langchain.agents import initialize_agent, Tool
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
from dotenv import load_dotenv
# 加载环境变量
load_dotenv()
# 1. 定义工具(模拟API调用)
def check_train_tickets(origin, destination, date):
print("调用查高铁票工具(未优化)")
return "北京到上海2024-05-20的高铁票:9:00(无票)、9:30(有票,553元)、10:00(有票,553元)"
def check_hotels(city, near_by, date):
print("调用查酒店工具(未优化)")
return "上海虹桥站附近2024-05-20的酒店:A(300元,步行5分钟)、B(250元,步行10分钟)、C(200元,步行15分钟)"
# 2. 初始化LLM
llm = OpenAI(temperature=0, model_name="gpt-3.5-turbo-instruct")
# 3. 定义工具列表
tools = [
Tool(
name="CheckTrainTickets",
func=lambda x: check_train_tickets(*x.split(",")),
description="查询高铁票,输入格式:出发地,目的地,日期(如北京,上海,2024-05-20)"
),
Tool(
name="CheckHotels",
func=lambda x: check_hotels(*x.split(",")),
description="查询酒店,输入格式:城市,附近地点,日期(如上海,虹桥站,2024-05-20)"
)
]
# 4. 初始化智能体(零样本反应,不优化思考顺序)
agent = initialize_agent(
tools, llm, agent="zero-shot-react-description", verbose=True
)
# 5. 运行任务
result = agent.run("帮我查北京到上海2024-05-20的高铁票,然后订虹桥站附近的酒店")
print("结果:", result)
运行结果与问题
- 输出:智能体可能先查酒店(调用
CheckHotels
),再查高铁票(发现9:00无票,调9:30)——但酒店已经查了,导致API费用浪费。 - token消耗:用
get_openai_callback
统计,输入+输出token约1200,成本$0.0024。 - 状态问题:没记用户偏好(比如喜欢250元以下酒店),下次需要重新查。
优化步骤1:优化目标分解顺序——“先查票再查酒店”
问题:初始版本的智能体“没顺序”,先查酒店再查票,导致无用功。
解决:用自定义Prompt强制“先查票再查酒店”。
代码优化
# 自定义Prompt:指定任务顺序
prompt_template = """你是智能助手,必须按以下顺序完成任务:
1. 先查询高铁票(确认有票后,记录到达车站);
2. 根据到达车站查询附近酒店(优先选300元以下的);
3. 输出结果时,明确说明高铁票信息和酒店推荐。
用户问题:{input}
你的思考:"""
prompt = PromptTemplate(input_variables=["input"], template=prompt_template)
# 初始化智能体时传入自定义Prompt
agent = initialize_agent(
tools, llm, agent="zero-shot-react-description", verbose=True,
agent_kwargs={"prompt": prompt} # 关键:用自定义Prompt约束顺序
)
效果
- 智能体先查高铁票(调用
CheckTrainTickets
),确认9:30有票后,再查酒店(调用CheckHotels
)——避免了“先查酒店再退票”的无用功。 - API调用次数从2次(可能)降到1次(必选),节省50% API费用。
优化步骤2:状态压缩——“把笔记本变薄”
问题:初始版本的智能体记了很多无关信息(比如“9:00无票”“10:00有票”),导致下次思考时“翻笔记本”的token消耗大。
解决:压缩状态——只保留关键信息(比如“9:30有票,到达虹桥站”)。
代码优化
用LangChain的ConversationBufferMemory
,自定义压缩函数:
from langchain.memory import ConversationBufferMemory
import re
# 1. 自定义状态压缩函数:提取关键信息
def compress_state(state):
# 正则匹配高铁票的关键信息:出发地、目的地、时间、到达站
pattern = r"(\w+)到(\w+)(\d{4}-\d{2}-\d{2})的高铁票:.*?(\d+:\d+)(有票.*?)、.*?到达(\w+站)"
match = re.search(pattern, state)
if match:
return f"高铁票:{match.group(1)}→{match.group(2)},{match.group(3)} {match.group(4)},到达{match.group(5)}"
return state # 没匹配到就返回原状态
# 2. 初始化Memory,重写save_context方法(压缩后再存)
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)
original_save = memory.save_context
def compressed_save(inputs, outputs):
# 压缩输出中的状态
compressed_output = compress_state(outputs["output"])
original_save(inputs, {"output": compressed_output})
memory.save_context = compressed_save
# 3. 初始化智能体时加入Memory
agent = initialize_agent(
tools, llm, agent="zero-shot-react-description", verbose=True,
agent_kwargs={"prompt": prompt},
memory=memory # 关键:加入压缩后的Memory
)
效果
- 状态从“北京到上海2024-05-20的高铁票:9:00(无票)、9:30(有票,553元)、10:00(有票,553元)”压缩成“高铁票:北京→上海,2024-05-20 9:30,到达虹桥站”——token减少60%。
- 下次思考时,LLM只需要处理压缩后的状态,token消耗从1200降到600,成本减少50%。
优化步骤3:工具缓存——“不重复叫跑腿小弟”
问题:初始版本的智能体如果再次查询相同的高铁票(比如“北京→上海2024-05-20”),会重新调用API,浪费费用。
解决:缓存工具调用结果——用lru_cache
装饰器,相同输入直接返回缓存。
代码优化
from functools import lru_cache
# 用lru_cache缓存工具结果(maxsize=100:缓存100条结果)
@lru_cache(maxsize=100)
def check_train_tickets(origin, destination, date):
print("调用查高铁票工具(未命中缓存)")
return "北京到上海2024-05-20的高铁票:9:00(无票)、9:30(有票,553元)、10:00(有票,553元)"
@lru_cache(maxsize=100)
def check_hotels(city, near_by, date):
print("调用查酒店工具(未命中缓存)")
return "上海虹桥站附近2024-05-20的酒店:A(300元,步行5分钟)、B(250元,步行10分钟)、C(200元,步行15分钟)"
效果
- 第一次调用
check_train_tickets("北京", "上海", "2024-05-20")
:输出“调用查高铁票工具(未命中缓存)”。 - 第二次调用相同参数:直接返回缓存结果,不调用API——节省100% API费用。
优化步骤4:并行调度——“让小管家学会分身”
问题:如果任务是“查高铁票+查上海天气”,初始版本会串行处理(先查票再查天气),耗时久。
解决:并行调度——用asyncio
同时调用多个工具,节省时间。
代码优化
import asyncio
# 1. 定义异步工具函数
async def async_check_train(origin, destination, date):
return check_train_tickets(origin, destination, date)
async def async_check_weather(city, date):
print("调用查天气工具")
return f"{city} {date}的天气:晴,20-28℃"
# 2. 并行调用工具
async def parallel_tasks():
# 创建两个任务(查高铁票+查天气)
task1 = asyncio.create_task(async_check_train("北京", "上海", "2024-05-20"))
task2 = asyncio.create_task(async_check_weather("上海", "2024-05-20"))
# 等待两个任务完成
train_result = await task1
weather_result = await task2
return train_result, weather_result
# 3. 运行并行任务
train_result, weather_result = asyncio.run(parallel_tasks())
print("高铁票结果:", train_result)
print("天气结果:", weather_result)
效果
- 串行处理:查高铁票5秒+查天气3秒=8秒。
- 并行处理:同时查,总共5秒——时间节省37.5%,算力利用率提高。
优化后的总效果
用get_openai_callback
统计优化后的资源消耗:
- token消耗:600→成本$0.0012(减少50%);
- API调用次数:1次→成本$0.01(减少50%);
- 时间:8秒→5秒(减少37.5%);
- 总资源成本:$0.0247→$0.01245(减少50%)。
实际应用场景:优化在业务中的落地
Agentic AI的资源优化,在智能客服、智能助手、自动化办公等场景中价值巨大:
场景1:智能客服——减少重复查询
问题:用户问“我的快递到哪儿了?”,智能体需要调用快递API,但用户可能重复问(比如5分钟后再问)。
优化:缓存快递查询结果(有效期10分钟)——用户重复问时,直接返回缓存结果,节省API费用。
场景2:智能助手——压缩用户历史
问题:用户和智能助手聊了10轮,历史对话有1000token,每次思考都要传给LLM,token消耗大。
优化:用向量数据库压缩历史——提取用户的核心需求(比如“喜欢三分糖奶茶”),存储为向量,下次思考时只传向量(100token),减少80% token消耗。
场景3:自动化办公——并行处理任务
问题:自动生成周报需要“查日历事件+查邮件内容+生成大纲”,串行处理需要15分钟。
优化:并行调用日历API和邮件API——同时获取日历和邮件数据,节省5分钟,提高效率。
工具和资源推荐
框架与工具
- Agentic AI框架:LangChain(最流行,支持自定义智能体)、AutoGPT(开源,自动任务分解)、BabyAGI(轻量级,适合快速原型)。
- 工具调用:Tavily(免费搜索工具)、SerpAPI(搜索引擎API)、Zapier(连接1000+ API)。
- 监控与优化:LangSmith(LangChain的监控工具,跟踪token、API调用)、OpenAI Usage Dashboard(查看OpenAI API消耗)。
学习资源
- 论文:《Agentic AI: Autonomous Agents as the Future of Software》(Yann LeCun等);
- 书籍:《Building Agentic AI Systems with LangChain》(Harrison Chase);
- 视频:YouTube“LangChain Tutorials”(手把手教你构建智能体)。
未来发展趋势与挑战
趋势
- 自动优化的Agent:通过强化学习,让智能体自己学习“如何少花token、少调用API”——比如“发现查酒店前先查票更省”。
- 分布式Agent系统:多个智能体协作完成任务(比如“订机票的Agent+订酒店的Agent+提醒的Agent”),并行处理,提高资源利用率。
- 轻量级LLM:用更小的模型(比如Llama 3 8B)替代大模型,减少token成本——比如“小模型做日常思考,大模型做复杂决策”。
挑战
- 资源可预测性:智能体的决策是动态的(比如突然改变任务顺序),很难预先估计资源消耗。
- 隐私与安全:状态管理需要存储用户隐私(比如地址、偏好),如何在压缩状态的同时保护隐私?
- 多Agent协作:多个智能体同时运行,如何分配算力、API调用次数(比如避免10个Agent同时调用12306 API导致限流)?
总结:架构师的“资源优化三字经”
通过本文的学习,你应该掌握了Agentic AI资源优化的核心逻辑:
核心概念回顾
- 智能体:能自主决策的“小管家”;
- token:“说话”的成本,越啰嗦越贵;
- 工具调用:“跑腿”的成本,越无用越浪费;
- 状态管理:“记笔记”的成本,越乱越费时间。
优化方法回顾
- 定顺序:用Prompt约束任务顺序(比如先查票再查酒店),避免无用功;
- 压状态:压缩状态信息(比如只记关键信息),减少token消耗;
- 加缓存:缓存工具调用结果,避免重复调用;
- 并行做:同时处理多个任务,提高时间利用率。
思考题:动动小脑筋
- 如果你设计一个“智能旅行规划Agent”,如何优化它的资源利用?比如“先查机票还是先查酒店?如何缓存用户的旅行偏好?”
- 假设一个Agent要处理1000个用户请求,如何用并行调度提高资源利用率?比如“用多进程还是多线程?如何避免API限流?”
- 如何在保护用户隐私的同时压缩状态?比如“用加密存储状态,或者只存储匿名化的信息?”
附录:常见问题与解答
Q1:Agentic AI的资源消耗比传统AI大吗?
A1:是的——但Agentic AI能处理更复杂的任务(比如“帮我规划一周的旅行”),而传统AI只能做简单指令(比如“查天气”)。通过优化,Agentic AI的单位任务成本可以比传统AI更低(比如“规划旅行”的成本比“人工规划”低80%)。
Q2:如何选择工具缓存的有效期?
A2:取决于数据的时效性:
- 高铁票、天气:时效性强(1小时内有效);
- 用户偏好(比如喜欢三分糖):时效性弱(长期有效)。
Q3:并行调度会导致资源竞争吗?
A3:会——比如多个Agent同时调用12306 API,可能导致限流。解决方法:设置并发限制(比如每秒最多调用10次),或者用队列管理工具调用请求。
扩展阅读 & 参考资料
- LangChain官方文档:https://python.langchain.com/
- OpenAI API文档:https://platform.openai.com/docs/
- 论文《Agentic AI: A New Paradigm for Intelligent Systems》:https://arxiv.org/abs/2308.08155
- 书籍《Building Agentic AI Systems》:https://www.oreilly.com/library/view/building-agentic-ai/9781098150183/
结语:Agentic AI的资源优化,本质是“让智能体更聪明地做选择”——少啰嗦、不做无用功、记关键信息、同时做多个任务。作为架构师,你需要像“小管家的教练”一样,帮智能体学会“省钱的技巧”,最终实现“智能与成本的平衡”。
下次设计Agentic AI应用时,不妨问自己:“这个步骤能不能更简洁?这个工具调用有没有必要?这个状态能不能更压缩?”——这些问题,就是资源优化的起点。
更多推荐
所有评论(0)