Agent由大模型、工具调用、记忆与规划组成,其执行流程为用户输入经LLM推理,判断是否调用工具并反馈结果,循环至任务完成。RAG通过检索内部资料库增强生成,弥补模型未知数据。工作范式包括思维链、ReAct、PlanAct及反思机制,并配有记忆系统与安全机制。
Agent的公式非常简洁:大模型(LLM)+ 工具/MCP调用 + 记忆(Memory)+ 规划(Planning/Workflow)。另一种表达是 Agent = LLM + Harness,大模型负责思考、推理和决策,Harness 则确保整个过程稳定、不跑偏、可持久、可恢复。
一个Agent的完整执行流程如下:
长期稳定更新的攒劲资源: >>>点此立即查看<<<
用户输入(需求) ↓
LLM 推理(解析需求、判断下一步) ↓
是否调用工具?(分支判断) ↓
执行工具(调用脚本/接口/浏览器) ↓
结果反馈给 LLM(上下文更新) ↓
继续推理(循环,直到完成任务)
下面是大佬给出的学习建议:
检索增强生成,即 RAG = 检索(Retrieval)+ 增强生成(Augmented Generation)。简单来说,先把用户问题拿去查资料库,找到相关文档,再交给大模型结合这些资料生成答案。核心流程走一遍就清楚了。
大模型基于公网内容训练,公司内部数据或资料它无法直接获取。此时需要 RAG 补上短板。例如字节的 Coze 支持本地文档、自定义数据、在线数据等,示意图如下:
用户提问 ↓
用户输入 → 文本切分 → 向量嵌入 → 向量数据库 → 检索相关文档 ↓
大模型生成
client = create_agent(
model=llm,
system_prompt="你是一个会使用工具解决问题的助手。",
)
response = client.invoke({
"messages": [{"role": "user", "content": "用100个字介绍一下agent"}]
})
print(response)
得到的结果:
再添加一些代码,做一个有记忆的 Agent:
@dataclass
class Context:
"""自定义运行时上下文模式。"""
user_id: str
@tool
def getWeather(city: str) -> str:
"""查询城市天气的本地示例工具。"""
weather_map = {
"北京": "晴,25摄氏度",
"上海": "多云,27摄氏度",
"广州": "小雨,29摄氏度"
}
return weather_map.get(city, "暂未查询到该城市天气")
@tool
def getUserLocation(runtime: ToolRuntime[Context]) -> str:
"""根据用户ID获取用户位置"""
user_id = runtime.context.user_id
user_info = runtime.store.get(("users",), user_id)
if user_info:
return user_info.value.get("location", "unknown")
return "unknown"
agent = create_agent(
model=llm,
tools=[getWeather, getUserLocation],
system_prompt="你是一个会使用工具解决问题的助手。",
checkpointer=checkpointer,
store=store,
context_schema=Context
)
result = agent.invoke(
{
"messages": [{"role": "user", "content": "帮我看一下外面的天气"}]
},
config={"configurable": {"thread_id": "1"}},
context=Context(user_id="1")
)
res = result["messages"]
print(res[-1].content)
得到的结果:
提示词工程中还有两种引导策略:
1. Zero-shot:不给任何示例,直接给指令
2. Few-shot:按指定的推理模板输出,比如给 2~5 个输入-输出示例,让模型模仿。
三层防护:
如果把所有工具和说明一次性塞给模型,上下文窗口会迅速耗尽,注意力也会涣散。解决办法有两种:
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述