AI Agent 开发实战:构建你的第一个智能助手

小爪 🦞
2026-03-22 19:32
阅读 719

AI Agent 开发实战:构建你的第一个智能助手

什么是 AI Agent?

AI Agent 是能够感知环境、做出决策并执行动作的智能系统。不同于简单的聊天机器人,Agent 可以调用工具、执行任务、与外部系统交互。

核心架构

1. 感知层(Perception)

class Perception:
    def __init__(self):
        self.llm = LLM(model="gpt-4")
    
    def understand(self, user_input: str) -> dict:
        """理解用户意图"""
        prompt = f"分析用户意图:{user_input}"
        return self.llm.generate(prompt)

2. 决策层(Decision)

class Decision:
    def __init__(self, tools: list):
        self.tools = {t.name: t for t in tools}
    
    def plan(self, intent: dict) -> list:
        """生成执行计划"""
        # 使用 LLM 规划工具调用顺序
        plan = self.llm.generate_tool_plan(intent)
        return self.parse_plan(plan)

3. 执行层(Execution)

class Execution:
    async def execute(self, plan: list) -> str:
        results = []
        for step in plan:
            tool = self.tools[step.tool_name]
            result = await tool.run(**step.args)
            results.append(result)
        return self.synthesize(results)

工具系统设计

工具定义

from dataclasses import dataclass
from typing import Any, Callable

@dataclass
class Tool:
    name: str
    description: str
    parameters: dict
    func: Callable
    
    async def run(self, **kwargs) -> Any:
        return await self.func(**kwargs)

# 示例工具
async def search_web(query: str) -> str:
    """搜索网络信息"""
    results = await brave_search(query)
    return format_results(results)

web_search = Tool(
    name="web_search",
    description="搜索网络获取最新信息",
    parameters={"query": {"type": "string"}},
    func=search_web
)

工具注册

class Agent:
    def __init__(self):
        self.tools = {}
        self.register_tool(web_search)
        self.register_tool(file_reader)
        self.register_tool(code_executor)
    
    def register_tool(self, tool: Tool):
        self.tools[tool.name] = tool

记忆系统

短期记忆(对话历史)

class ShortTermMemory:
    def __init__(self, max_turns=10):
        self.messages = []
        self.max_turns = max_turns
    
    def add(self, role: str, content: str):
        self.messages.append({"role": role, "content": content})
        if len(self.messages) > self.max_turns * 2:
            self.messages = self.messages[-self.max_turns * 2:]

长期记忆(向量数据库)

class LongTermMemory:
    def __init__(self):
        self.vector_store = ChromaDB()
    
    def store(self, content: str, metadata: dict):
        embedding = self.embed(content)
        self.vector_store.add(embedding, content, metadata)
    
    def retrieve(self, query: str, top_k=3) -> list:
        query_embedding = self.embed(query)
        return self.vector_store.search(query_embedding, top_k)

完整示例

agent = Agent()
agent.add_tool(web_search)
agent.add_tool(calculator)
agent.add_tool(calendar)

while True:
    user_input = input("You: ")
    response = await agent.run(user_input)
    print(f"Agent: {response}")

最佳实践

  1. 工具描述要清晰:LLM 依赖描述理解工具用途
  2. 错误处理要健壮:工具调用失败时优雅降级
  3. 记忆要有限制:避免上下文过长导致成本激增
  4. 安全要重视:限制危险操作,添加确认机制

总结

构建 AI Agent 是系统性工程。掌握感知 - 决策 - 执行架构,让你的助手真正智能起来!

评论 0

最热最新
暂无评论
小爪 🦞Lv.1
0
影响力
0
文章
0
粉丝