十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

AI Agent开发实战教程:从Python基础到RAG应用部署全流程

AI Agent开发实战教程:从Python基础到RAG应用部署全流程 这次我们来看一个面向程序员转型的 AI Agent 开发教程。这个教程的核心不是讲空洞的理论而是提供一套从零到一、学完就能上手的实战路径。对于想从传统开发转向 AI 领域的工程师来说最关心的是需要什么基础学哪些技术栈如何快速搭建一个能跑起来的 Agent以及学完真的能找到工作吗这篇文章将为你拆解这套教程的核心内容并提供一个可落地的学习与实践框架。我们会重点关注 Agent 开发所需的关键技术如 Python、Transformer、RAG、主流框架选择、本地与云端部署的权衡以及如何构建一个具备实际功能的 Agent 项目来充实你的简历。无论你是想入门 AI 应用开发还是希望将 Agent 能力集成到现有系统中这里都有清晰的路线图。1. 核心能力速览Agent 开发技术栈全景在深入细节之前我们先通过一个表格快速了解成为一名 AI Agent 开发者需要掌握的核心技术组件及其作用。这能帮你快速判断学习路径的难度和重点。能力项说明与典型技术学习目标编程基础Python是绝对主流。需掌握基础语法、面向对象、常用库requests, json, os等。能编写脚本处理数据、调用 API、构建简单应用。AI 模型基础Transformer 架构是基石。理解注意力机制、编码器-解码器结构。了解Swin Transformer,Vision Transformer等变体。理解主流大模型如 GPT、LLaMA的工作原理能看懂模型输入输出。Agent 核心概念AI Agent框架如 LangChain, AutoGen、Agentic RAG、工具调用Function Calling、智能体工作流。能使用框架构建能规划、使用工具、执行任务的智能体。知识增强RAG检索增强生成框架结合向量数据库如 Chroma, Milvus、知识图谱。为 Agent 接入私有知识库解决模型幻觉问题构建专业领域应用。开发与部署API 调用OpenAI, 开源模型、本地模型部署Ollama, vLLM、Web 服务开发FastAPI, Flask。能让 Agent 服务化提供 HTTP 接口集成到业务系统。问题排查处理Agent terminated due to error、调试提示词Prompt、优化 RAG 检索效果。具备独立调试和优化 Agent 应用的能力。这套教程的价值在于它试图将以上分散的技术点串联成一个连贯的、以就业为导向的学习体系。2. 适用场景与使用边界学习 AI Agent 开发首先要明确它能做什么不能做什么。适合谁有一定编程基础不限语言的程序员希望转型或切入 AI 应用开发领域。全栈或后端开发者希望为现有产品增加 AI 智能交互能力。对 AI 感兴趣的技术爱好者不满足于仅使用 ChatGPT想自己创造 AI 应用。学生或求职者希望积累具有竞争力的 AI 项目经验。能解决什么问题自动化流程构建能自动处理邮件、生成报告、分析数据的智能助手。智能客服与问答基于企业文档库搭建精准回答专业问题的客服机器人。代码辅助开发能理解项目上下文、自动生成或重构代码的编程伴侣。决策支持系统利用 Agent 的规划能力为复杂问题如资源调度提供解决方案建议。不适合什么场景替代底层算法研发本路径侧重于应用层开发而非研发新的 AI 模型。无编程基础的纯小白需要至少能看懂代码建议先补充 Python 基础。追求短期速成神话AI 领域知识更新快需要持续学习和实践教程是地图不是自动驾驶。合规与伦理边界数据安全处理企业或用户数据时必须确保数据脱敏、传输加密并遵守相关法律法规。内容合规构建的 Agent 应避免生成有害、歧视性或侵权内容需设计内容过滤机制。模型授权使用开源模型需遵守其协议调用商业 API 需注意使用条款和成本。透明度对于关键决策Agent 应能提供推理依据避免成为无法解释的“黑箱”。3. 环境准备与前置条件开始动手之前请确保你的开发环境就绪。以下是通用清单具体版本可能随教程项目微调。操作系统推荐Linux (Ubuntu 20.04) 或 macOS。系统对 Python 和 Docker 支持友好。也可用Windows 10/11。建议使用 WSL2 (Windows Subsystem for Linux) 以获得接近 Linux 的开发体验。基础软件Python: 版本 3.8 - 3.11。避免使用最新的 3.12某些库可能兼容不佳。# 检查版本 python --version pip --versionConda 或 Venv (强烈推荐)用于创建独立的 Python 环境避免包冲突。# 使用 conda conda create -n agent-env python3.10 conda activate agent-env # 或使用 venv python -m venv agent-env # Linux/macOS source agent-env/bin/activate # Windows .\agent-env\Scripts\activateGit: 用于克隆代码库和教程项目。Docker Docker Compose (可选但推荐)用于快速部署向量数据库、模型服务等依赖。硬件要求CPU: 现代多核处理器即可。内存: 建议 16GB 或以上。运行本地模型和向量数据库时消耗较大。存储: 至少 50GB 可用空间用于存放 Python 包、模型文件和数据。GPU (可选)如果计划本地部署大模型进行推理需要 NVIDIA GPU显存至少 8GB推荐 12GB。对于学习阶段前期可完全依赖云端 API如 OpenAI, DeepSeek以降低门槛。网络要求稳定的网络连接用于安装 Python 包、下载模型和调用云端 API。4. 学习路径与核心项目部署一套好的教程会引导你通过项目驱动学习。下面是一个模拟的、从入门到精通的四阶段项目部署与学习路径。4.1 阶段一Python 与 AI 基础环境搭建目标跑通第一个 AI 交互脚本。项目命令行天气查询 Agent。技术点Python 基础、API 调用OpenWeatherMap、JSON 解析、基础 Prompt 工程。部署步骤创建项目目录并初始化环境。mkdir weather-agent cd weather-agent python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate安装依赖。pip install requests python-dotenv编写核心脚本weather_agent.py。import os import requests from dotenv import load_dotenv load_dotenv() # 加载 .env 文件中的环境变量 class WeatherAgent: def __init__(self): self.api_key os.getenv(OPENWEATHER_API_KEY) self.base_url http://api.openweathermap.org/data/2.5/weather def get_weather(self, city: str) - str: 查询城市天气 params { q: city, appid: self.api_key, units: metric, lang: zh_cn } try: response requests.get(self.base_url, paramsparams, timeout10) response.raise_for_status() data response.json() city_name data[name] temp data[main][temp] desc data[weather][0][description] return f{city_name}的天气{desc}气温 {temp}°C。 except requests.exceptions.RequestException as e: return f查询天气失败{e} if __name__ __main__: agent WeatherAgent() city input(请输入要查询的城市名) print(agent.get_weather(city))创建.env文件存储密钥切勿提交到 Git。OPENWEATHER_API_KEYyour_api_key_here运行测试。python weather_agent.py # 输入北京 # 预期输出北京的天气晴气温 22°C。验证脚本能成功调用 API 并返回结构化的天气信息。这完成了 Agent 的“感知-行动”基础循环。4.2 阶段二引入大模型与 LangChain 框架目标让 Agent 能理解自然语言指令并调用工具。项目智能日程管理助手。技术点LangChain 框架、OpenAI API或开源模型、Function Calling、对话记忆。部署步骤在新环境中安装 LangChain 等库。pip install langchain langchain-openai langchain-community使用 LangChain 定义工具和 Agent。以下是一个简化示例使用 OpenAI 模型。from langchain.agents import AgentExecutor, create_openai_tools_agent from langchain_openai import ChatOpenAI from langchain.tools import Tool from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder import pytz from datetime import datetime # 1. 定义工具函数 def get_current_time(timezone: str Asia/Shanghai) - str: 获取指定时区的当前时间。 try: tz pytz.timezone(timezone) current_time datetime.now(tz).strftime(%Y-%m-%d %H:%M:%S) return f{timezone} 的当前时间是{current_time} except pytz.exceptions.UnknownTimeZoneError: return f未知时区{timezone} # 2. 将函数包装成 LangChain Tool tools [ Tool( nameGetCurrentTime, funcget_current_time, description获取指定时区的当前时间。输入应为有效的时区名称例如 Asia/Shanghai 或 America/New_York。 ) ] # 3. 设置提示词模板 prompt ChatPromptTemplate.from_messages([ (system, 你是一个有用的助手。请根据用户需求使用可用工具来回答问题。), MessagesPlaceholder(variable_namechat_history), (human, {input}), MessagesPlaceholder(variable_nameagent_scratchpad), ]) # 4. 初始化 LLM (这里使用 OpenAI也可替换为 Ollama 本地模型) llm ChatOpenAI(modelgpt-3.5-turbo, temperature0, openai_api_keyyour-key) # 5. 创建 Agent agent create_openai_tools_agent(llm, tools, prompt) agent_executor AgentExecutor(agentagent, toolstools, verboseTrue) # 6. 运行测试 result agent_executor.invoke({input: 现在纽约是几点, chat_history: []}) print(result[output])运行脚本观察 Agent 如何自动选择GetCurrentTime工具并传入参数America/New_York。验证Agent 能正确解析用户关于时间的自然语言问题并调用相应的工具函数获得答案。这实现了初步的“规划-工具调用”能力。4.3 阶段三构建 RAG 知识库增强型 Agent目标让 Agent 基于私有知识库回答专业问题减少幻觉。项目公司内部文档问答机器人。技术点RAG 全流程、文档加载与切分、文本向量化、向量数据库Chroma、检索器、提示词优化。部署步骤安装 RAG 相关依赖。pip install langchain-chroma langchain-text-splitters pypdf准备知识库文档如 PDF放入./docs目录。编写 RAG 构建与查询脚本rag_agent.py。from langchain_chroma import Chroma from langchain_openai import OpenAIEmbeddings, ChatOpenAI from langchain_text_splitters import RecursiveCharacterTextSplitter from langchain_community.document_loaders import PyPDFLoader from langchain_core.prompts import ChatPromptTemplate from langchain_core.runnables import RunnablePassthrough from langchain_core.output_parsers import StrOutputParser import os # 设置环境变量 os.environ[OPENAI_API_KEY] your-openai-key # 1. 加载与切分文档 loader PyPDFLoader(./docs/company_handbook.pdf) # 替换为你的PDF路径 documents loader.load() text_splitter RecursiveCharacterTextSplitter(chunk_size1000, chunk_overlap200) splits text_splitter.split_documents(documents) # 2. 创建向量存储 vectorstore Chroma.from_documents( documentssplits, embeddingOpenAIEmbeddings(), persist_directory./chroma_db # 向量数据库本地存储路径 ) retriever vectorstore.as_retriever(search_kwargs{k: 3}) # 检索最相关的3个片段 # 3. 构建 RAG 提示词模板 template 你是一个公司内部知识助手。请仅根据以下提供的上下文信息来回答问题。 如果上下文信息不足以回答问题请直接说“根据现有资料我无法回答这个问题”。 上下文 {context} 问题{question} 答案 prompt ChatPromptTemplate.from_template(template) # 4. 定义 RAG 链 llm ChatOpenAI(modelgpt-3.5-turbo) rag_chain ( {context: retriever, question: RunnablePassthrough()} | prompt | llm | StrOutputParser() ) # 5. 提问测试 question 公司的年假政策是怎样的 answer rag_chain.invoke(question) print(f问题{question}\n答案{answer})运行脚本首次会生成向量数据库之后可直接查询。验证Agent 的回答严格基于你提供的 PDF 文档内容。尝试问一个文档中没有的问题观察它是否会拒绝回答或产生幻觉。这掌握了 Agent 专业化的关键技能。4.4 阶段四全功能 Agent 系统与服务化目标整合多工具、记忆、RAG并通过 Web API 提供服务。项目个人研究助理 Agent支持文献查询、总结、日程提醒。技术点Agent 工作流编排、记忆存储Redis、FastAPI 服务化、前端简单交互。部署步骤使用 Docker Compose 启动 Redis用于记忆。# docker-compose.yml version: 3.8 services: redis: image: redis:alpine ports: - 6379:6379 volumes: - redis_data:/data volumes: redis_data:运行docker-compose up -d构建更复杂的 Agent集成多个工具和记忆。# 示例一个结合了时间、计算和网络搜索的 Agent from langchain.agents import initialize_agent, AgentType from langchain.memory import RedisChatMessageHistory from langchain_openai import ChatOpenAI from langchain_community.utilities import WikipediaAPIWrapper from langchain_community.tools import WikipediaQueryRun, ArxivQueryRun llm ChatOpenAI(modelgpt-4, temperature0) # 工具列表 tools [ Tool.from_function(get_current_time), # 时间工具 WikipediaQueryRun(api_wrapperWikipediaAPIWrapper()), # 维基百科 ArxivQueryRun(), # Arxiv 论文 # ... 可以添加更多工具 ] # 创建带有记忆的 Agent agent initialize_agent( tools, llm, agentAgentType.CHAT_CONVERSATIONAL_REACT_DESCRIPTION, # 支持对话的Agent类型 memoryRedisChatMessageHistory(session_iduser1, urlredis://localhost:6379/0), verboseTrue, handle_parsing_errorsTrue # 处理解析错误 ) # 进行多轮对话测试 agent.run(帮我查一下 Transformer 模型的最新论文。) agent.run(作者是谁) # 这里能利用记忆理解“作者”指代上一轮论文的作者使用 FastAPI 将 Agent 封装成 HTTP 服务。# main.py from fastapi import FastAPI, HTTPException from pydantic import BaseModel from your_agent_module import get_agent_executor # 导入你封装好的Agent app FastAPI(titleResearch Assistant API) agent get_agent_executor() class QueryRequest(BaseModel): session_id: str question: str app.post(/chat) async def chat_with_agent(request: QueryRequest): try: result agent.invoke({ input: request.question, chat_history: agent.memory.load_memory_variables({}).get(chat_history, []) }) return {answer: result[output]} except Exception as e: raise HTTPException(status_code500, detailstr(e))使用uvicorn启动服务uvicorn main:app --reload --host 0.0.0.0 --port 8000通过curl或前端页面测试 API。curl -X POST http://127.0.0.1:8000/chat \ -H Content-Type: application/json \ -d {session_id: user_001, question: 用简单的话解释一下 RAG 是什么}至此你已经完成了一个具备实用价值、可对外提供服务的 AI Agent 系统原型。5. 功能测试与效果验证要点在开发每个阶段的 Agent 后需要进行系统化测试确保其功能符合预期。5.1 基础工具调用测试测试目的验证 Agent 能否正确识别用户意图并调用对应工具。测试用例“现在几点了” - 应调用GetCurrentTime工具默认返回本地时间。“计算 123 乘以 456。” - 如果接入了计算工具应返回正确结果。“搜索关于 Python 的最新资讯。” - 应调用网络搜索工具。成功标准Agent 输出结果准确且在verboseTrue模式下能看到清晰的工具调用链日志。5.2 RAG 知识问答测试测试目的验证 Agent 能否基于给定文档准确回答并抵抗幻觉。测试步骤相关性检索测试提问一个文档中明确存在的知识点如“报销流程”检查返回的答案是否直接源自文档片段。拒答能力测试提问一个文档中完全不存在的知识点如“公司火星移民计划”。理想的 Agent 应回答“无法回答”或“文档未提及”而不是编造信息。多跳推理测试提问需要结合文档中多处信息才能回答的问题如“张三在项目A和项目B中分别担任什么角色”。成功标准答案有据可查对于未知问题能诚实回应。5.3 多轮对话与记忆测试测试目的验证 Agent 能否在对话中保持上下文连贯性。测试用例第一轮“介绍一下 Transformer 模型。”第二轮“它最早在哪篇论文中提出”这里的“它”应指代 Transformer。第三轮“作者有哪些人”这里的“作者”应指代上轮论文的作者。成功标准Agent 能正确理解代词指代无需用户重复说明对话流畅自然。5.4 服务接口API测试测试目的验证封装成 Web 服务的 Agent 是否稳定可靠。测试方法连通性测试使用curl或 Postman 发送简单请求检查 HTTP 状态码是否为 200返回格式是否为 JSON。压力测试初步使用工具如locust模拟短时间内多个并发请求观察服务响应时间和错误率。异常输入测试发送空问题、超长文本、特殊字符等检查服务是否优雅处理返回明确错误信息而非崩溃。成功标准接口响应迅速通常在 2-10 秒内错误处理得当在高并发下基本稳定。6. 资源占用与性能观察开发本地部署的 Agent 应用时资源管理至关重要。内存与 CPU 占用观察工具使用htop(Linux/macOS) 或任务管理器 (Windows)。主要消耗点向量数据库Chroma 在加载大量文档时会占用较多内存。本地大模型推理这是最大的资源消耗者。即使是 7B 参数的量化模型也需数 GB 内存/显存。Python 进程LangChain 应用本身内存开销相对较小。优化建议前期学习使用云端 APIOpenAI, DeepSeek可完全避免本地资源压力。必须本地运行时考虑使用量化模型如 GGUF 格式和性能更高的推理引擎如 vLLM, Ollama。网络延迟影响调用云端 API 时网络延迟是主要性能瓶颈。观察方法在代码中记录请求发起和收到响应的时间戳。优化建议采用异步调用asyncio,aiohttp来并发处理多个不依赖的请求设置合理的超时时间如 30 秒。向量检索性能影响因素向量索引类型、向量维度、检索数量k 值、硬件。测试方法对同一问题多次查询计算平均响应时间。优化建议选择合适的向量数据库生产环境考虑 Milvus, Qdrant优化文档切分策略避免片段过小或过大在内存允许的情况下使用cache缓存常见查询。提示词Prompt长度与 Token 消耗影响过长的 Prompt 会增加 API 调用成本和响应时间也可能触及模型上下文长度限制。观察方法使用tiktoken库针对 OpenAI 模型或模型的tokenizer来计算 Token 数。优化建议精简系统提示词在 RAG 中控制检索上下文的长度对长对话历史进行摘要或选择性保留。7. 常见问题与排查方法在学习和开发过程中你一定会遇到各种问题。下表列出了典型问题及解决思路。问题现象可能原因排查方式解决方案ModuleNotFoundError: No module named ‘xxx’依赖未安装或不在当前 Python 环境。运行pip list | grep xxx检查。确认终端已激活正确的虚拟环境。在正确的环境中运行pip install xxx。使用requirements.txt统一管理依赖。OpenAI API调用返回认证错误API Key 错误、过期或未设置。检查环境变量OPENAI_API_KEY是否设置正确。在代码中打印 Key 的前几位勿泄露完整 Key确认。重新生成 API Key 并确保正确设置。使用python-dotenv从文件加载。Agent 频繁触发Agent terminated due to error工具调用失败、模型输出格式解析错误、网络超时。开启verboseTrue查看详细执行日志。检查工具函数是否抛出异常。为工具函数增加健壮的异常处理。使用handle_parsing_errorsTrue参数。简化 Prompt 或更换更稳定的模型。RAG 回答质量差答非所问文档切分不合理、检索 top-k 值不合适、向量模型不匹配、Prompt 不佳。检查检索到的文本片段是否与问题相关。评估文档切分后的语义完整性。调整文本切分器参数chunk_size,chunk_overlap。尝试不同的嵌入模型。优化检索提示词明确要求“基于上下文”。本地模型加载失败或推理极慢显存/内存不足、模型格式不兼容、未使用 GPU。使用nvidia-smi查看显存占用。检查模型文件是否完整。确认 PyTorch 是否为 GPU 版本。换用量化版本模型如 4-bit, 8-bit。确保有足够的内存/显存。使用vLLM等高效推理框架。服务FastAPI启动后无法访问端口被占用、防火墙阻止、服务绑定到127.0.0.1。使用netstat -tulnp | grep 端口号检查端口。确认服务启动日志中绑定的 host 是0.0.0.0。更换端口。关闭冲突进程。启动命令指定--host 0.0.0.0。检查云服务器安全组规则。多轮对话中 Agent 忘记上下文记忆存储未正确配置或未传入新对话。检查memory对象是否在每次调用时都被正确使用。查看 Redis 等存储中是否有数据。确保每次调用agent.invoke或agent.run时都传入了chat_history。检查记忆后端的连接。8. 最佳实践与使用建议遵循以下建议可以让你更高效、更稳健地开发和部署 Agent 应用。从简单开始逐步迭代不要一开始就设计复杂的多 Agent 系统。从一个工具、一个功能做起验证通后再添加新能力。版本控制与依赖管理使用git管理代码。使用requirements.txt或poetry精确记录所有依赖包及其版本确保环境可复现。# 生成 requirements.txt pip freeze requirements.txt # 在新环境安装 pip install -r requirements.txt配置与密钥管理永远不要将 API Key、数据库密码等硬编码在代码中。使用环境变量或.env文件管理并将.env加入.gitignore。日志记录为你的 Agent 应用添加详细的日志记录记录关键步骤、工具调用、耗时和错误信息。这将是调试和优化的最重要依据。import logging logging.basicConfig(levellogging.INFO, format%(asctime)s - %(name)s - %(levelname)s - %(message)s) logger logging.getLogger(__name__) logger.info(Agent started processing query: %s, user_question)为生产环境做准备容器化使用 Docker 将应用及其依赖打包确保环境一致性。健康检查为 Web 服务添加/health端点供监控系统检查。限流与熔断如果调用付费 API必须实施限流防止意外高额账单。使用tenacity等库实现重试和熔断机制。合规与安全用户数据明确告知用户数据如何被使用和存储遵守隐私政策。内容过滤在 Agent 的最终输出前加入一层内容安全过滤防止生成不当内容。审计日志记录所有用户的重要操作和 AI 的关键决策以备审计。9. 总结与下一步这套教程的核心价值在于提供了一个清晰的、项目驱动的学习地图。它从最简单的 API 调用开始逐步引入 LangChain 框架、RAG 知识库、记忆机制最终完成一个可服务的 Agent 系统。这个路径模拟了真实工作中从原型到产品的迭代过程。最值得尝试的点快速获得正反馈第一阶段就能在几小时内做出一个能运行的 AI 小工具。理解完整技术栈不是孤立地学某个库而是看到 Python、LLM、框架、数据库、Web 服务如何协同工作。构建可展示的项目完成四个阶段后你拥有了一套可以写进简历的、有复杂度的 AI 项目组合。最先应该验证的功能 建议你按照文章顺序从“天气查询 Agent”开始确保基础环境Python, API调用畅通无阻。这是后续所有复杂功能的基石。最容易踩的坑环境配置问题虚拟环境没激活、依赖版本冲突。务必养成使用虚拟环境的习惯。API 密钥问题忘记设置或错误设置环境变量导致调用失败。对模型能力的误解期望模型完成它训练数据之外或需要精确计算的任务。合理设计工具来弥补模型的不足。RAG 检索效果差盲目套用模板未根据自身文档特点调整切分和检索策略。后续扩展方向探索更多框架除了 LangChain还可以了解 Semantic Kernel, LlamaIndex, AutoGen 等。深入本地化部署研究 Ollama, LM Studio, Text Generation WebUI在本地运行更强大的开源模型。实现复杂工作流设计多 Agent 协作系统让不同的 Agent 负责规划、执行、审核等不同角色。集成到真实业务将你的 Agent 作为插件或微服务集成到现有的 CMS、CRM 或内部办公系统中。AI Agent 开发是一个实践性极强的领域。最好的学习方式就是动手去构建遇到问题解决问题。这篇文章和它所解读的教程为你提供了工具、地图和第一批干粮剩下的路需要你在一个个项目的实践中自己走出来。建议收藏本文在开发每个阶段回头对照检查和排查问题。
返回列表