Agent 是什么

一、定义

Agent = 大模型 + 工具 + 循环决策

二、Agent 流程

用户提问 → 模型思考 → 决定要不要用工具 → 执行工具 → 看结果 → 再思考 → … → 最终回答

三、Agent 的完整架构(五个组件)

用户

Agent 主循环

LLM
大脑/决策者

Tools
手/能力

Memory
记忆

Prompt
规则/人设

外部世界
API/数据库/文件

组件 作用
LLM 理解任务、决定下一步
Tools 执行具体动作
Memory 记住对话历史、长期知识
Prompt 定义角色、规则、输出格式
Loop 串联以上组件,循环直到完成

四、ReAct 是什么?

ReAct = Reason(推理)+ Act(行动),目前最常见的 Agent 模式。

Thought(思考): 用户问北京天气,我需要查天气工具
Action(行动):  调用 get_weather(city="北京")
Observation(观察): 工具返回 "晴,25℃"
Thought: 我已经有数据了,可以回答了
Action:  输出最终答案给用户

五、Tool Loop(工具循环)

tool_calls

普通文字回复

超过最大轮数

用户输入任务

把 messages + tools 发给模型

模型返回什么?

执行对应工具函数

把结果以 role:tool 追加到 messages

任务完成,返回给用户

强制终止,提示失败

六、完整示例

def run_agent(client, model, user_message) -> str:
    messages = [
        {
            "role": "system",
            "content": "你是数学助手。涉及计算时必须调用 calculate 工具,不要自己心算。",
        },
        {"role": "user", "content": user_message},
    ]
    for turn in range(MAX_TURNS):
        response = client.chat.completions.create(
            model=model, messages=messages, tools=TOOLS
        )
        message = response.choices[0].message
        if message.tool_calls:
            messages.append(message)
            for tool_call in message.tool_calls:
                tool_result = dispatch_tool(
                    tool_call,
                )
                messages.append(
                    {
                        "role": "tool",
                        "content": tool_result,
                        "tool_call_id": tool_call.id,
                    }
                )
        else:
            return message.content
    return "对话达到最大轮数,请重新开始。"

更多推荐