Python AI 智能体开发 - 任务导向型学习大纲

通过完成 个人 AI 智能助手 项目的 5 个版本迭代,系统掌握 AI 智能体开发全栈技能


📋 项目总览

版本 项目名称 核心功能 学习周期 技术重点
V1.0 基础对话机器人 简单问答对话 第 1-2 周 Python 基础、API 调用
V2.0 知识库问答系统 文档检索 + 回答 第 3-6 周 RAG、向量数据库
V3.0 多模态解析助手 图片/视频/音频处理 第 7-9 周 OCR、语音识别
V4.0 智能体 Agent 系统 工具调用、Function Call 第 10-13 周 Agent 编排、Text-to-SQL
V5.0 企业级部署版本 高并发、版本管理、监控 第 14-16 周 性能优化、部署上线

🎯 V1.0 基础对话机器人(第 1-2 周)

学习目标

掌握 Python 基础语法、异步编程、大模型 API 调用

任务清单

任务编号 任务名称 学习内容 交付物 验收标准
T1.1 环境搭建 Python 3.10+、pip、虚拟环境 requirements.txt 能成功安装所有依赖
T1.2 FastAPI 框架入门 FastAPI 路由、请求响应 app/main.py 能启动服务并访问 /health 接口
T1.3 异步编程基础 async/awaitasyncio utils/async_helper.py 理解并发与并行区别
T1.4 大模型 API 调用 通义千问/OpenAI API services/llm_client.py 能完成简单对话
T1.5 对话接口开发 POST /chat 接口 api/v1/chat.py 能接收用户消息并返回回复

项目结构

project_v1/
├── app/
│   ├── main.py              # 入口文件
│   ├── config.py            # 配置管理
│   └── api/
│       └── v1/
│           └── chat.py      # 对话接口
├── services/
│   └── llm_client.py        # 大模型客户端
├── utils/
│   └── async_helper.py      # 异步工具
├── requirements.txt
└── .env                     # 环境变量

核心代码任务

任务 T1.4 代码示例

# services/llm_client.py
from openai import AsyncOpenAI

class LLMClient:
    def __init__(self, api_key: str, base_url: str):
        self.client = AsyncOpenAI(api_key=api_key, base_url=base_url)
        self.model = "qwen-turbo"
    
    async def chat(self, messages: list) -> str:
        response = await self.client.chat.completions.create(
            model=self.model,
            messages=messages
        )
        return response.choices[0].message.content

任务 T1.5 代码示例

# app/api/v1/chat.py
from fastapi import APIRouter
from pydantic import BaseModel
from services.llm_client import LLMClient

router = APIRouter()
llm_client = LLMClient(api_key="xxx", base_url="xxx")

class ChatRequest(BaseModel):
    message: str

class ChatResponse(BaseModel):
    reply: str

@router.post("/chat", response_model=ChatResponse)
async def chat(request: ChatRequest) -> ChatResponse:
    messages = [{"role": "user", "content": request.message}]
    reply = await llm_client.chat(messages)
    return ChatResponse(reply=reply)

学习检查点

  • 能独立创建 Python 虚拟环境
  • 理解 async/await 工作原理
  • 能调用大模型 API 完成对话
  • 能用 FastAPI 创建 RESTful 接口
  • V1.0 项目能成功运行并对话

🎯 V2.0 知识库问答系统(第 3-6 周)

学习目标

掌握 RAG 全链路、向量数据库、文档解析与分片

任务清单

任务编号 任务名称 学习内容 交付物 验收标准
T2.1 向量数据库部署 [Chroma](file://d:\前端agent\comfyui\comfy\model_base.py#L1597-L1607)/Milvus Docker 部署 docker-compose.yml 向量库能正常启动
T2.2 Embedding 模型集成 BGE-M3 模型调用 engines/embedding.py 能将文本转为向量
T2.3 文档解析模块 PyMuPDFpython-docx services/parser.py 能解析 PDF/Word 文档
T2.4 分片策略实现 ChunkingStrategy 5 种策略 services/chunking.py 支持多种分片方式
T2.5 向量索引构建 向量存储与检索 services/vector_store.py 能存储和查询向量
T2.6 检索服务开发 retrieve_context 函数 services/retrieval.py 能返回相关文档片段
T2.7 RAG 问答接口 结合检索与生成 api/v1/knowledge_chat.py 能基于知识库回答
T2.8 查询改写优化 query_rewrite 提升检索 services/query_rewrite.py 模糊提问能正确理解

项目结构升级

project_v2/
├── app/
│   ├── main.py
│   ├── config.py
│   └── api/
│       └── v1/
│           ├── chat.py
│           └── knowledge_chat.py    # 知识库问答接口
├── services/
│   ├── llm_client.py
│   ├── parser.py                    # 文档解析
│   ├── chunking.py                  # 分片策略
│   ├── vector_store.py              # 向量存储
│   ├── retrieval.py                 # 检索服务
│   └── query_rewrite.py             # 查询改写
├── engines/
│   ├── embedding.py                 # Embedding 模型
│   └── rerank.py                    # Rerank 模型
├── models/
│   └── document.py                  # 文档数据模型
├── docker-compose.yml
└── requirements.txt

核心代码任务

任务 T2.4 代码示例

# services/chunking.py
from typing import List
from abc import ABC, abstractmethod

class ChunkingStrategy(ABC):
    @abstractmethod
    def chunk(self, text: str) -> List[str]:
        pass

class TokenChunking(ChunkingStrategy):
    def __init__(self, chunk_size: int = 500, chunk_overlap: int = 50):
        self.chunk_size = chunk_size
        self.chunk_overlap = chunk_overlap
    
    def chunk(self, text: str) -> List[str]:
        # 按 Token 分片实现
        chunks = []
        # ... 实现逻辑
        return chunks

class ParagraphChunking(ChunkingStrategy):
    def chunk(self, text: str) -> List[str]:
        # 按段落分片实现
        return text.split('\n\n')

任务 T2.7 代码示例

# services/retrieval.py
from typing import List
from engines.embedding import EmbeddingModel
from engines.rerank import RerankEngine

class RetrievalService:
    def __init__(self):
        self.embedder = EmbeddingModel()
        self.reranker = RerankEngine()
    
    async def retrieve_context(self, query: str, top_k: int = 5) -> List[dict]:
        # 1. 向量化查询
        query_vector = await self.embedder.embed(query)
        
        # 2. 向量检索
        candidates = await self.vector_search(query_vector, top_k=top_k * 2)
        
        # 3. Rerank 重排
        ranked_docs = await self.reranker.rerank(query, candidates, top_k=top_k)
        
        return ranked_docs

学习检查点

  • 理解向量检索原理
  • 能部署并使用向量数据库
  • 掌握 5 种文档分片策略
  • 能实现完整的 RAG 检索链路
  • V2.0 项目能基于知识库准确回答

🎯 V3.0 多模态解析助手(第 7-9 周)

学习目标

掌握 OCR、语音识别、多模态数据处理

任务清单

任务编号 任务名称 学习内容 交付物 验收标准
T3.1 OCR 引擎集成 PaddleOCR 部署与调用 engines/ocr.py 能识别图片文字
T3.2 语音转文字 Whisper 模型集成 engines/whisper.py 能转录音频内容
T3.3 视频处理模块 视频抽帧 + 语音提取 services/video_parser.py 能解析视频内容
T3.4 多模态统一接口 统一文件解析入口 services/multimodal_parser.py 支持 5+ 种文件格式
T3.5 图表理解模块 Qwen-VL 图片描述生成 engines/vision.py 能描述图表内容
T3.6 知识库多模态入库 多模态数据向量化 services/multimodal_ingest.py 图片/视频能入库检索

项目结构升级

project_v3/
├── services/
│   ├── parser.py
│   ├── chunking.py
│   ├── multimodal_parser.py       # 多模态解析统一入口
│   └── video_parser.py            # 视频处理
├── engines/
│   ├── embedding.py
│   ├── rerank.py
│   ├── ocr.py                     # OCR 引擎
│   ├── whisper.py                 # 语音识别
│   └── vision.py                  # 视觉模型
└── tests/
    └── test_multimodal.py         # 多模态测试

核心代码任务

任务 T3.1 代码示例

# engines/ocr.py
from paddleocr import PaddleOCR

class OCRProcessor:
    def __init__(self):
        self.ocr = PaddleOCR(use_angle_cls=True, lang='ch')
    
    async def extract_text(self, image_path: str) -> str:
        result = self.ocr.ocr(image_path, cls=True)
        text = ""
        for line in result[0]:
            text += line[1][0] + "\n"
        return text

任务 T3.4 代码示例

# services/multimodal_parser.py
from typing import List
from engines.ocr import OCRProcessor
from engines.whisper import AudioTranscriber
from engines.vision import VisionModel

class MultiModalParser:
    def __init__(self):
        self.ocr = OCRProcessor()
        self.transcriber = AudioTranscriber()
        self.vision = VisionModel()
    
    async def parse_file(self, file_path: str, file_type: str) -> List[str]:
        if file_type in ["jpg", "png", "jpeg"]:
            return await self.ocr.extract_text(file_path)
        elif file_type in ["mp3", "wav"]:
            return await self.transcriber.transcribe(file_path)
        elif file_type in ["mp4", "avi"]:
            return await self.parse_video(file_path)
        elif file_type in ["pdf", "docx"]:
            return await self.parse_document(file_path)
        return []
    
    async def parse_video(self, video_path: str) -> List[str]:
        # 视频抽帧 + 语音提取
        pass

学习检查点

  • 能集成 OCR 识别图片文字
  • 能使用 Whisper 转录音频
  • 理解多模态数据处理流程
  • V3.0 项目能处理图片/视频/音频

🎯 V4.0 智能体 Agent 系统(第 10-13 周)

学习目标

掌握 Agent 编排、Function Call、Text-to-SQL、工具调用

任务清单

任务编号 任务名称 学习内容 交付物 验收标准
T4.1 Agent 框架学习 LangChain Agent 核心 services/agent_base.py 理解 Agent 工作原理
T4.2 工具定义与注册 [Tools](file://d:\前端agent\dify-main\web\app\components\app\configuration\tools\index.tsx#L22-L193) 集合定义 tools/base.py 能定义自定义工具
T4.3 Function Call 实现 函数调用机制 services/function_call.py 模型能调用指定函数
T4.4 Text-to-SQL 模块 自然语言查数据库 services/sql_agent.py 能用自然语言查询
T4.5 提示词工程 PromptTemplate 设计 prompts/system.py 减少模型幻觉
T4.6 溯源机制实现 Advisor 机制、引用标注 models/citation.py 回答能标注来源
T4.7 Agent 工作流编排 多工具协同工作 services/agent_workflow.py 能完成复杂任务
T4.8 代码解释器集成 Python 代码执行 tools/code_interpreter.py 能执行模型生成代码

项目结构升级

project_v4/
├── services/
│   ├── agent_base.py              # Agent 基类
│   ├── agent_workflow.py          # 工作流编排
│   ├── function_call.py           # 函数调用
│   └── sql_agent.py               # SQL 代理
├── tools/
│   ├── base.py                    # 工具基类
│   ├── calculator.py              # 计算器工具
│   ├── search.py                  # 搜索工具
│   └── code_interpreter.py        # 代码解释器
├── prompts/
│   └── system.py                  # 系统提示词
├── models/
│   ├── document.py
│   └── citation.py                # 溯源模型
└── tests/
    └── test_agent.py

核心代码任务

任务 T4.2 代码示例

# tools/base.py
from abc import ABC, abstractmethod
from typing import Any, Dict

class Tool(ABC):
    name: str
    description: str
    
    @abstractmethod
    async def execute(self, **kwargs) -> Any:
        pass

class CalculatorTool(Tool):
    name = "calculator"
    description = "执行数学计算"
    
    async def execute(self, expression: str) -> float:
        return eval(expression)

任务 T4.4 代码示例

# services/sql_agent.py
from sqlalchemy import text
from langchain.sql_database import SQLDatabase

class SQLAgent:
    def __init__(self, db_uri: str):
        self.db = SQLDatabase.from_uri(db_uri)
    
    async def query(self, natural_language: str) -> dict:
        # 1. 自然语言转 SQL
        sql = await self.nl_to_sql(natural_language)
        
        # 2. 执行 SQL
        result = self.db.run(sql)
        
        # 3. 返回结果
        return {"sql": sql, "data": result}
    
    async def nl_to_sql(self, nl: str) -> str:
        # 调用 LLM 生成 SQL
        pass

任务 T4.6 代码示例

# models/citation.py
from pydantic import BaseModel
from typing import List

class Citation(BaseModel):
    source_doc_id: str
    page_number: int
    chunk_index: int
    content: str

class GenerationResult(BaseModel):
    answer: str
    citations: List[Citation]
    confidence: float

class AdvisorMechanism:
    def attach_citations(self, answer: str, contexts: List[dict]) -> GenerationResult:
        # 绑定溯源信息
        citations = [
            Citation(
                source_doc_id=ctx["doc_id"],
                page_number=ctx["page"],
                chunk_index=ctx["chunk_idx"],
                content=ctx["content"]
            )
            for ctx in contexts
        ]
        return GenerationResult(answer=answer, citations=citations, confidence=0.95)

学习检查点

  • 理解 Agent 工作原理
  • 能定义和注册自定义工具
  • 掌握 Function Call 机制
  • 能实现 Text-to-SQL 查询
  • V4.0 项目能调用工具完成复杂任务

🎯 V5.0 企业级部署版本(第 14-16 周)

学习目标

掌握高并发优化、版本管理、监控部署、简历包装

任务清单

任务编号 任务名称 学习内容 交付物 验收标准
T5.1 知识库版本隔离 版本管理表设计 models/version.py 支持多版本知识库
T5.2 增量更新机制 incremental_update 实现 services/version_mgr.py 支持热更新
T5.3 任务队列集成 Celery+Redis 异步任务 tasks/ingest.py 支持异步文档处理
T5.4 性能压力测试 locust 压测工具 tests/performance.py 输出性能报告
T5.5 监控日志系统 Prometheus+Grafana monitoring/ 能查看系统指标
T5.6 Docker 容器化部署 生产环境部署 docker-compose.prod.yml 一键部署上线
T5.7 API 文档完善 Swagger 文档 /docs 页面 接口文档完整
T5.8 简历与作品集整理 项目亮点量化 README.md、简历 完成求职材料

项目结构升级

project_v5/
├── app/
├── services/
├── tools/
├── tasks/                         # 异步任务
│   └── ingest.py                  # 文档入库任务
├── models/
│   ├── document.py
│   ├── citation.py
│   └── version.py                 # 版本模型
├── monitoring/                    # 监控配置
├── tests/
│   ├── test_agent.py
│   └── performance.py             # 性能测试
├── docker-compose.yml
├── docker-compose.prod.yml        # 生产环境
├── README.md                      # 项目文档
└── requirements.txt

核心代码任务

任务 T5.2 代码示例

# services/version_mgr.py
from typing import Optional
from models.version import KnowledgeVersion

class VersionManager:
    async def create_version(self, knowledge_id: str, version_name: str) -> int:
        # 创建新版本
        pass
    
    async def incremental_update(self, knowledge_id: str, documents: list) -> dict:
        # 增量更新逻辑
        # 1. 识别新增/修改/删除文档
        # 2. 只处理变更部分
        # 3. 更新向量索引
        pass
    
    async def rollback(self, knowledge_id: str, target_version: int) -> bool:
        # 版本回滚
        pass

任务 T5.4 代码示例

# tests/performance.py
from locust import HttpUser, task, between

class RAGUser(HttpUser):
    wait_time = between(1, 3)
    
    @task
    def chat(self):
        self.client.post("/api/v1/chat", json={"message": "测试问题"})
    
    @task(3)
    def knowledge_chat(self):
        self.client.post("/api/v1/knowledge/chat", json={"message": "知识库问题"})

学习检查点

  • 理解版本隔离与增量更新
  • 能使用 Celery 处理异步任务
  • 能进行性能压力测试
  • 能 Docker 容器化部署
  • V5.0 项目可生产环境部署
  • 完成简历与作品集整理

📊 学习进度追踪表

| 周次 | 版本 | 完成任务 | 累计进度 | 状态 |
|------|------|----------|----------|------|
| 第 1 周 | V1.0 | T1.1-T1.3 | 6% | ⬜ |
| 第 2 周 | V1.0 | T1.4-T1.5 | 12% | ⬜ |
| 第 3 周 | V2.0 | T2.1-T2.2 | 20% | ⬜ |
| 第 4 周 | V2.0 | T2.3-T2.4 | 28% | ⬜ |
| 第 5 周 | V2.0 | T2.5-T2.6 | 36% | ⬜ |
| 第 6 周 | V2.0 | T2.7-T2.8 | 44% | ⬜ |
| 第 7 周 | V3.0 | T3.1-T3.2 | 52% | ⬜ |
| 第 8 周 | V3.0 | T3.3-T3.4 | 60% | ⬜ |
| 第 9 周 | V3.0 | T3.5-T3.6 | 68% | ⬜ |
| 第 10 周 | V4.0 | T4.1-T4.2 | 76% | ⬜ |
| 第 11 周 | V4.0 | T4.3-T4.4 | 84% | ⬜ |
| 第 12 周 | V4.0 | T4.5-T4.6 | 92% | ⬜ |
| 第 13 周 | V4.0 | T4.7-T4.8 | 100% | ⬜ |
| 第 14 周 | V5.0 | T5.1-T5.3 | - | ⬜ |
| 第 15 周 | V5.0 | T5.4-T5.6 | - | ⬜ |
| 第 16 周 | V5.0 | T5.7-T5.8 | - | ⬜ |

🏆 最终交付物清单

交付物 说明 用途
完整项目代码 GitHub 仓库 作品集展示
技术文档 README.md、API 文档 项目说明
部署脚本 Docker 配置、部署指南 快速部署
测试报告 单元测试、性能测试 质量证明
演示视频 项目功能演示 面试展示
简历项目描述 量化指标、技术亮点 求职材料

📚 配套学习资源

阶段 资源类型 资源名称 链接/说明
V1.0 教程 Python 官方教程 docs.python.org
V1.0 教程 FastAPI 官方文档 fastapi.tiangolo.com
V2.0 教程 LangChain 官方教程 python.langchain.com
V2.0 文档 Milvus 快速开始 milvus.io/docs
V3.0 教程 PaddleOCR 文档 github.com/PaddlePaddle/PaddleOCR
V3.0 教程 Whisper 官方文档 github.com/openai/whisper
V4.0 教程 LangChain Agent 指南 python.langchain.com/docs/modules/agents
V5.0 教程 Celery 官方文档 docs.celeryq.dev
V5.0 教程 Docker 官方教程 docs.docker.com

按照此大纲学习,每完成一个任务就打勾,16 周后您将拥有一个完整的企业级 AI 智能体项目,同时掌握所有核心技能,可直接用于求职面试。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐