AI学习第 5 天·实战:构建一个会查资料、会记忆、会生成报告的 AI Agent,大模型入门到精通,收藏这篇就足够了!
昨天我们拆解了 AI Agent 的必备基础组件:
- 大脑(LLM)
- 长期记忆(向量数据库)
- 手脚(API 调用)
- 调度系统(任务管理)
今天,我们就用它们来做一个实战版 AI Agent。
这个 Agent 能够:
- 根据主题自动搜索最新资料
- 结合知识库记忆进行分析
- 自动生成一份可读性强的报告
一、功能目标
- 输入一个主题,例如「2025 年 AI 发展趋势」
- Agent 会先调用搜索引擎 API 找到最新资料
- 将资料存入向量数据库作为长期记忆
- LLM 根据资料 + 记忆生成一份结构化报告
- 最终输出 Markdown 格式,方便直接放到文档或公众号,并存储pdf文档
二、技术选型
| 组件 | 选择 |
|---|---|
| LLM(大脑) | DeepSeek API(性价比高) |
| 向量数据库 | FAISS(本地快速、易集成) |
| API 调用 | SerpAPI(搜索引擎) |
| 任务管理 | LangChain 的 Agent Executor(轻量) |
三、项目结构
ai-agent-content-pipeline/
├── backend/
│ ├── app/
│ │ ├── agents/
│ │ │ ├── article_agent.py
│ │ │ ├── layout_agent.py
│ │ │ ├── news_agent.py
│ │ │ ├── report_agent.py
│ │ ├── routes/
│ │ │ ├── content.py
│ │ │ ├── publish.py
│ │ ├── utils/
│ │ │ ├── llm_helper.py
│ │ │ ├── memory_manager.py
│ │ │ ├── serpapi_helper.py
│ │ ├── config.py
│ │ └── __init__.py
│ ├── main.py
│ └── requirements.txt
├── frontend/
│ ├── src/
│ │ ├── pages/
│ │ │ └── Dashboard.jsx
│ │ ├── api/
│ │ │ └── content.js
│ │ ├── App.js
│ │ ├── index.js
│ │ └── ...
│ ├── public/
│ │ └── index.html
│ └── package.json
├── wechat_drafts/ # 生成的 html 草稿
├── reports/ # 生成的 PDF 报告
├── faiss_index/ # 向量数据库持久化目录
├── .env # 环境变量
└── README.md
四、核心代码
1. 搜索工具(serpapi_helper.py)
from langchain_community.document_loaders import WebBaseLoader
from app.utils.llm_helper import get_llm
from serpapi import GoogleSearch
import os
SERPAPI_API_KEY = os.getenv("SERPAPI_API_KEY")
def search_ai_news(topic: str = "人工智能AI") -> list:
"""
使用 SerpAPI 搜索指定主题的新闻。
:param topic: 搜索主题,默认为“人工智能AI”
:return: 新闻列表
"""
params = {
"engine": "google",
"q": f"{topic} 新闻 site:36kr.com OR site:techcrunch.com OR site:news.qq.com",
"api_key":SERPAPI_API_KEY,
"tbs": "qdr:w", # 最近一周
"num": 5,
"hl": "zh-CN",
"gl": "cn"
}
search = GoogleSearch(params)
results = search.get_dict()
return results
def search_resource(topic: str, num_results: int = 5) -> list:
"""
使用 SerpAPI 搜索任意主题的网页,并返回网页内容文档列表。
:param query: 搜索关键词
:param num_results: 返回网页数量
:return: 网页内容文档列表
"""
params = {
"engine": "google",
"q": topic,
"api_key": SERPAPI_API_KEY,
"tbs": "qdr:w",
"num": num_results,
"hl": "zh-CN",
"gl": "cn"
}
search = GoogleSearch(params)
results = search.get_dict()
return results
def get_links_doc(results):
if not results or "organic_results" not in results:
return []
# 提取前几个搜索链接
links = [item["link"] for item in results.get("organic_results", [])[:3]]
print("抓到的链接:", links)
# 加载网页内容
loader = WebBaseLoader(links)
docs = loader.load()
return docs
说明:需要申请SERPAPI,我使用的是免费版 每月有250次搜索记录
- 长期记忆管理(memory_manager.py)
from langchain_community.vectorstores import FAISS
from langchain_huggingface import HuggingFaceEmbeddings
from langchain.docstore.document import Document
import os
class MemoryManager:
def __init__(self, persist_dir="faiss_index"):
self.embeddings = HuggingFaceEmbeddings( model_name="shibing624/text2vec-base-chinese")
self.persist_dir = persist_dir
self.vectorstore = None
def create_or_load(self):
if os.path.exists(self.persist_dir) and os.listdir(self.persist_dir):
# 加载本地索引时允许反序列化
self.vectorstore = FAISS.load_local(
self.persist_dir,
self.embeddings,
allow_dangerous_deserialization=True
)
else:
self.vectorstore = None
return self.vectorstore
def add_texts(self, texts):
docs = [Document(page_content=t) for t in texts]
if self.vectorstore is None:
# 首次创建
self.vectorstore = FAISS.from_documents(docs, self.embeddings)
else:
self.vectorstore.add_documents(docs)
self.vectorstore.save_local(self.persist_dir)
def search(self, query, k=5):
if self.vectorstore is None:
self.create_or_load()
return self.vectorstore.similarity_search(query, k=k)
- 报告生成 Agent(report_agent.py)
from langchain.chains import RetrievalQA
from langchain.prompts import PromptTemplate
from app.utils.llm_helper import get_llm
from app.utils.serpapi_helper import search_resource, get_links_doc
from app.utils.memory_manager import MemoryManager
from fpdf import FPDF
import os
def save_report_to_pdf(report_content: str, topic: str, output_dir: str = "reports") -> str:
"""
将报告内容保存为 PDF 文件
:param report_content: 报告正文(Markdown或纯文本)
:param topic: 报告主题(用于文件名)
:param output_dir: 保存目录
:return: 文件路径
"""
if not os.path.exists(output_dir):
os.makedirs(output_dir)
safe_title = "".join(c for c in topic if c.isalnum() or c in (' ', '_', '-')).rstrip()
filename = f"{safe_title or 'report'}.pdf"
filepath = os.path.join(output_dir, filename)
pdf = FPDF()
pdf.add_page()
pdf.add_font('SimHei', '', 'SimHei.ttf', uni=True) # 需要有 SimHei.ttf 中文字体文件
pdf.set_font('SimHei', '', 14)
for line in report_content.split('\n'):
pdf.multi_cell(0, 10, line)
pdf.output(filepath)
return filepath
def generate_report(topic: str = "大模型") -> str:
# 1. 新闻检索与网页加载
search_results = search_resource(topic)
docs = get_links_doc(search_results)
if not docs:
return "未能获取相关内容,无法生成报告。"
# 2. 写入长期记忆(向量库)
memory_manager = MemoryManager()
vectorstore = memory_manager.create_or_load()
memory_manager.add_texts([doc.page_content for doc in docs])
# 3. 取出 vectorstore
vectorstore = memory_manager.vectorstore
if vectorstore is None:
return "向量库初始化失败,无法生成报告。"
# 4. 构建检索增强生成 Agent
retriever = vectorstore.as_retriever(search_kwargs={"k": 5})
prompt_template = """
你是一个专业的研究员,根据提供的资料,生成一份 Markdown 格式的结构化报告。
主题:{question}
要求:
1. 摘要最新关键信息
2. 列出 3~5 个重要趋势或要点
3. 用数据或实例支撑结论
4. 最后加上未来展望
资料:
{context}
"""
prompt = PromptTemplate(template=prompt_template, input_variables=["question", "context"])
llm = get_llm()
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
retriever=retriever,
chain_type_kwargs={"prompt": prompt},
return_source_documents=False # 需要的话可设 True
)
# 5. 生成报告(注意传入 dict,key 为 "query")
result = qa_chain.invoke({"query": topic})
# 6. 兼容不同 LangChain 版本的返回结构
if isinstance(result, dict):
report_content = result.get("result") or result.get("output_text") or ""
else:
report_content = str(result)
# 7. 保存为 PDF
pdf_path = save_report_to_pdf(report_content, topic)
print(f"报告已保存为 PDF: {pdf_path}")
return report_content
4、封装fastapi
from fastapi import APIRouter
from pydantic import BaseModel
from app.agents.report_agent import generate_report
router = APIRouter()
# 请求模型
class GenerateRequest(BaseModel):
topic: str
@router.post("/generate_report")
def get_report(req: GenerateRequest):
report = generate_report(req.topic)
return {
"topic": req.topic,
"report": report
# "pdf_path": pdf_path # 如有需要可加上
}
五、运行效果
```markdown
# 2025年AI发展趋势报告
## 摘要
2025年上半年,AI领域呈现加速演进态势,核心趋势聚焦于**智能代理(Agent)的普
及化**、**多模态推理能力的突破**以及**行业竞争格局的重塑**。技术突破与场景落
地双向驱动,AI正从工具型应用向自主决策的智能体转型,算力资源与数据交互成为竞
争关键要素。--
## 核心趋势与要点
### 1. 智能代理(Agent)成为应用主流-
**关键动态**:通用类Agent产品(如OpenAI的ChatGPT
Agent)通过整合多工具能力,完成复杂任务(如市场调研、数据分析),交付形式扩
展至可视化报告、交互式海报等。
**数据支撑**:AI编程工具Cursor年收入突破5亿美元,验证Agent在垂类场景的商业价
值。
**技术延伸**:模型上下文协议(MCP)快速发展,解决模型与外部信息交互的标准化
问题。
### 2. 多模态推理能力显著提升
**模型进展**:大模型端到端融合视觉与文本能力,实现跨模态深度推理(如处理图像-文本混合任务)。- **案例**:Gemini 2.5 Pro发布顶尖视频生成模型Veo 3,多模态性能达SOTA水平。
**评估变革**:传统静态评测榜单(如MMLU)快速饱和,动态实用任务成为新评估方向
。
### 3. 技术范式向多智能体与实时交互演进- **前沿方向**:
- **Multi-Agent系统**:OpenAI等厂商探索协作式问题求解,构建复杂AI生态。-
**经验学习(Era
Experience)**:谷歌提出模型通过实时交互学习,减少对人类数据的依赖。
of
**技术瓶颈**:AI生成内容验证成本高,代码验证成为自动化提升关键(如AI编程领域
)。
### 4. 行业竞争格局重构- **头部玩家动态**:
- xAI发布Grok 4跻身第一梯队,OpenAI技术优势弱化。
- 中美技术差距缩小,中国企业在多模态领域表现突出(如视频生成、语义理解)。- **算力竞赛**:头部厂商计算集群达数十万卡规模,强化学习算力需求超过预训练。--
## 未来展望
1. **Agent生态扩展**:垂直领域Agent将深度整合工作流,自然语言交互成为标配。
2.
**多模态工业化**:视觉Agent与文本中枢结合,推动医疗、教育等场景的自动化升级
。
3.
**技术边界突破**:多智能体协作与实时经验学习可能催生新一代通用人工智能(AGI
)框架。
4.
**地缘竞争加剧**:算力与数据资源将成国家战略资产,开源社区与商业闭源模式持续
博弈。
> **报告来源**:量子位智库《2025上半年AI核心成果及趋势报告》
>
**完整报告**:[下载链接](https://jkhbjkhb.feishu.cn/wiki/W5D7wuDcbiPXDLkaRLQ
cAJpOn8f)
注:报告基于假设性资料(2025年)生成,实际进展需以实时数据为准。
六、今日总结
今天我们完成了一个能查资料(搜索 API)、存记忆(向量数据库)、生成报告(LLM + 模板)的agent demo,代码我也在整理中,稍后会上传到git 方便学习的伙伴运行代码。
想入门 AI 大模型却找不到清晰方向?备考大厂 AI 岗还在四处搜集零散资料?别再浪费时间啦!2025 年 AI 大模型全套学习资料已整理完毕,从学习路线到面试真题,从工具教程到行业报告,一站式覆盖你的所有需求,现在全部免费分享!
👇👇扫码免费领取全部内容👇👇

一、学习必备:100+本大模型电子书+26 份行业报告 + 600+ 套技术PPT,帮你看透 AI 趋势
想了解大模型的行业动态、商业落地案例?大模型电子书?这份资料帮你站在 “行业高度” 学 AI:
1. 100+本大模型方向电子书

2. 26 份行业研究报告:覆盖多领域实践与趋势
报告包含阿里、DeepSeek 等权威机构发布的核心内容,涵盖:
- 职业趋势:《AI + 职业趋势报告》《中国 AI 人才粮仓模型解析》;
- 商业落地:《生成式 AI 商业落地白皮书》《AI Agent 应用落地技术白皮书》;
- 领域细分:《AGI 在金融领域的应用报告》《AI GC 实践案例集》;
- 行业监测:《2024 年中国大模型季度监测报告》《2025 年中国技术市场发展趋势》。
3. 600+套技术大会 PPT:听行业大咖讲实战
PPT 整理自 2024-2025 年热门技术大会,包含百度、腾讯、字节等企业的一线实践:

- 安全方向:《端侧大模型的安全建设》《大模型驱动安全升级(腾讯代码安全实践)》;
- 产品与创新:《大模型产品如何创新与创收》《AI 时代的新范式:构建 AI 产品》;
- 多模态与 Agent:《Step-Video 开源模型(视频生成进展)》《Agentic RAG 的现在与未来》;
- 工程落地:《从原型到生产:AgentOps 加速字节 AI 应用落地》《智能代码助手 CodeFuse 的架构设计》。
二、求职必看:大厂 AI 岗面试 “弹药库”,300 + 真题 + 107 道面经直接抱走
想冲字节、腾讯、阿里、蔚来等大厂 AI 岗?这份面试资料帮你提前 “押题”,拒绝临场慌!

1. 107 道大厂面经:覆盖 Prompt、RAG、大模型应用工程师等热门岗位
面经整理自 2021-2025 年真实面试场景,包含 TPlink、字节、腾讯、蔚来、虾皮、中兴、科大讯飞、京东等企业的高频考题,每道题都附带思路解析:

2. 102 道 AI 大模型真题:直击大模型核心考点
针对大模型专属考题,从概念到实践全面覆盖,帮你理清底层逻辑:

3. 97 道 LLMs 真题:聚焦大型语言模型高频问题
专门拆解 LLMs 的核心痛点与解决方案,比如让很多人头疼的 “复读机问题”:

三、路线必明: AI 大模型学习路线图,1 张图理清核心内容
刚接触 AI 大模型,不知道该从哪学起?这份「AI大模型 学习路线图」直接帮你划重点,不用再盲目摸索!

路线图涵盖 5 大核心板块,从基础到进阶层层递进:一步步带你从入门到进阶,从理论到实战。

L1阶段:启航篇丨极速破界AI新时代
L1阶段:了解大模型的基础知识,以及大模型在各个行业的应用和分析,学习理解大模型的核心原理、关键技术以及大模型应用场景。

L2阶段:攻坚篇丨RAG开发实战工坊
L2阶段:AI大模型RAG应用开发工程,主要学习RAG检索增强生成:包括Naive RAG、Advanced-RAG以及RAG性能评估,还有GraphRAG在内的多个RAG热门项目的分析。

L3阶段:跃迁篇丨Agent智能体架构设计
L3阶段:大模型Agent应用架构进阶实现,主要学习LangChain、 LIamaIndex框架,也会学习到AutoGPT、 MetaGPT等多Agent系统,打造Agent智能体。

L4阶段:精进篇丨模型微调与私有化部署
L4阶段:大模型的微调和私有化部署,更加深入的探讨Transformer架构,学习大模型的微调技术,利用DeepSpeed、Lamam Factory等工具快速进行模型微调,并通过Ollama、vLLM等推理部署框架,实现模型的快速部署。

L5阶段:专题集丨特训篇 【录播课】

四、资料领取:全套内容免费抱走,学 AI 不用再找第二份
不管你是 0 基础想入门 AI 大模型,还是有基础想冲刺大厂、了解行业趋势,这份资料都能满足你!
现在只需按照提示操作,就能免费领取:
👇👇扫码免费领取全部内容👇👇

2025 年想抓住 AI 大模型的风口?别犹豫,这份免费资料就是你的 “起跑线”!
更多推荐
所有评论(0)