大家好,我是程序员鱼皮。
想必你已经发现了,如今的搜索引擎已经全面进化了。
以前搜东西,就是输入关键词,然后在一堆蓝色链接里挑着看。
现在呢,直接输入一个问题,AI 会帮你联网搜索、汇总分析,给出一份带引用来源的完整回答。
比如主打 AI 搜索的 Perplexity,据说月活用户已经突破 1 亿了;Google、百度、必应也都在搜索结果里加了 AI 智能摘要。
搜索这件事,正在从「人找信息」变成「AI 帮你找信息」。
![]()
那这种 AI 搜索引擎到底是怎么实现的?
这篇文章,我就全程用 Codex + GPT-5.5 来开发一个 AI 搜索引擎,后端对接 DeepSeek V4 实现 AI 联网搜索和智能总结。看完之后,你不仅能学到 AI 编程的流程套路,感受新开发工具和模型的能力,还能学到 AI Agent 应用的开发思路。
建议收藏,我们开始~
需求分析
这次要做的项目叫 yupi-ai-search AI 搜索引擎,对标 Perplexity。
要注意,AI 搜索引擎跟普通的 AI 对话应用不一样。如果你只让 AI 回答问题,它用的是训练数据里的旧知识,回答可能是过时的。AI 搜索引擎的关键在于联网搜索能力,让 AI 先去网上搜最新的信息,再基于这些信息来回答,这样才能确保答案是准确、及时的。
具体的需求是:用户输入一个问题,系统自动联网搜索最新信息,再交给 AI 大模型综合分析,生成一份带引用来源的智能回答,同时还能像传统搜索引擎一样查看完整的搜索结果列表。用户还可以通过相关问题推荐继续追问,不断深挖感兴趣的内容。
![]()
方案设计
这个项目采用前后端分离架构,前端用 Vue 3,后端用 Python FastAPI + LangChain。
不过传统的前后端技术不是重点,实现 AI 搜索引擎的关键在于两样东西:一个是搜索服务,负责联网获取最新信息;一个是 AI 大模型,负责理解搜索结果并生成综合回答。
AI 大模型我就选择 DeepSeek V4,试试它在真实业务场景中的效果。
这个项目真正的核心是,搜索服务要怎么实现?
搜索服务
先简单聊聊搜索引擎的原理。
传统搜索引擎干的事情其实就 3 步:
抓取网页,派爬虫到处爬
建立索引,把网页内容整理成数据库
排名展示,根据相关性给结果排序
Google、百度这些搜索引擎,背后都是几十万台服务器在跑这套系统。
![]()
如果搁以前,让你自己开发一个搜索引擎,简直想都不敢想,光是抓取全网页面这一步就能把人劝退。
但现在不一样了,有了 AI 编程工具,加上现成的搜索引擎 API 服务,你不需要自己爬网页、建索引,直接调 API 就能拿到搜索结果,然后交给 AI 总结就完事了。
目前专门为 AI 应用设计的搜索服务已经有不少了,比如 Tavily Search、Firecrawl、Brave Search API 等等,它们都能通过 API 调用拿到结构化的搜索结果,直接给 AI 使用。
![]()
下面重点介绍一下本项目选用的 Tavily Search。
Tavily Search
Tavily Search 是目前 AI 应用开发领域最主流的搜索 API 之一,知名的 AI 应用开发框架 LangChain 官方首推的搜索工具就是它。
它有几个优势:
返回的是结构化的搜索结果(标题、URL、内容摘要),不是原始 HTML,直接塞给 AI 就能用,省 tokens
搜索速度快,一般 3 秒左右就能出结果
LangChain 有官方集成包
langchain-tavily,几行代码就能接入支持中文搜索,可以通过
country参数设置为中国,优化中文搜索结果
价格方面,免费版每月 1000 次 API 调用,不需要绑信用卡,对于个人项目和 MVP 验证完全够了。按需付费是每次 0.008 美元(约 6 分钱),Growth 套餐 10 万次/月 500 美元,所以实际上线还是要注意成本的。
下面我带大家简单体验一下。
进入 Tavily 官网,可以看到它提供 4 方面的能力,包括联网搜索、提取网页内容、爬虫和深度研究。
![]()
登录后进入管理后台,获取 API Key:
![]()
然后进入 调试广场,可以在这里验证搜索效果。
比如我搜索一下 “程序员鱼皮”,可以看到返回了 JSON 格式的结构化结果,每条都包含标题、URL 和内容摘要,搜到了我的博客、GitHub 主页等信息,还挺全面的。
![]()
它还支持很多参数设置,比如搜索的详细程度、时间范围、是否包含网页内容、最大搜索结果数、国家等等。
比如我把搜索国家设置为中国,就能搜到国内平台的文章了:
![]()
验证完搜索效果没问题,接下来看看怎么在代码里使用。
LangChain 集成 Tavily
这个项目中,我们使用主流的 AI 应用开发框架 LangChain 来集成 Tavily。
LangChain 有现成的官方集成包langchain-tavily,用起来非常方便。只需要在代码里给 Agent 绑定 TavilySearch 工具,然后创建 Agent 就能直接对话了:
from langchain_tavily import TavilySearch
from langchain.agents import create_tool_calling_agent
tavily_search_tool = TavilySearch(
max_results=5,
topic="general",
)# 创建 Agent,绑定搜索工具
agent = create_tool_calling_agent(model, [tavily_search_tool])
# 用户提问,Agent 自动判断是否需要搜索
response = agent.invoke({"messages": "最近有什么 AI 新闻?"})
除了搜索,还有 TavilyExtract 工具,可以根据网址提取干净的网页内容:
![]()
看不懂代码没关系,之后我们把这些需求写进提示词,让 AI 自己去查文档、写代码就行。
Firecrawl 搜索服务
除了 Tavily,Firecrawl 也是一个不错的选择。Firecrawl 更擅长网页抓取和全站爬取,它本身也提供了搜索功能。
两者的定位有一点儿差异,我用表格简单对比一下:
维度
Tavily Search
Firecrawl
定位
AI 原生搜索 API,专为 RAG/Agent 设计
Web 数据 API,主打网页抓取和内容提取
搜索速度
1 ~ 3 秒
~7 秒(含页面抓取)
返回格式
结构化摘要,节省 Tokens
Markdown/HTML/JSON,内容更完整
LangChain 集成
官方首推,有专用包
有 Python SDK,需自行封装
开源
是(AGPL-3.0,可自部署)
免费额度
1000 次/月
1000 credits/月
100K 量级月费
$500
$83
最适合场景
AI Agent 联网搜索
全站爬取、数据提取
对于我们这个 AI 搜索引擎项目,Tavily 的搜索速度和结构化返回更合适,所以选它作为主力。
在后面的环境准备部分,我也会带大家安装 Firecrawl,不过它的作用是帮 AI 编程工具联网搜索技术文档,跟项目本身的搜索功能不是一回事儿。
核心业务流程
最后梳理一下整个 AI 搜索引擎的核心流程:
用户在前端输入问题
后端接收请求,调用 Tavily Search API 联网搜索,拿到结构化的搜索结果
把搜索结果作为上下文注入 Prompt,交给 DeepSeek V4 大模型
AI 基于搜索结果生成带引用编号的综合回答,通过 SSE 流式返回给前端
前端同时展示 AI 综合回答和完整的搜索结果列表
AI 回答完成后,自动生成相关问题推荐,方便用户继续探索
打开 Codex,确认模型列表里有 GPT-5.5。如果看不到,大概率是账号的问题,可能需要开通更高级的会员,我这里用的是 Plus 会员。
![]()
可以看到界面上已经有了 GPT-5.5 模型选项,还支持调节智能程度(低 / 中 / 高 / 超高),我一般选择「高」。
左下角进入设置,把工作模式切换为「用于编程」,这样 AI 的回复会更专业、更适合开发场景:
![]()
然后在设置中开启「电脑操控」,并安装 Google Chrome 浏览器扩展。这样后面可以让 AI 帮你自动操作电脑和浏览器进行测试。
![]()
安装 AI 扩展
Codex 的 AI 扩展主要包括三类:
MCP 服务,用于连接外部工具
Agent Skills 技能包,让 AI 学会特定的专业技能
Plugins 插件,给 AI 增加更多能力
官方自带了一些内置的插件和技能,比如 Computer Use、Browser Use、PDF 处理、演示文稿编辑等:
![]()
![]()
不过这次项目需要的几个扩展,Codex 默认没有,得自己安装。
我们需要下面 3 个扩展:
Firecrawl:联网搜索和网页抓取,让 AI 能获取最新的技术信息
Context7:查询最新的技术文档和 API 用法,减少 AI 瞎编的情况
UI UX Pro Max:前端美化技能,让生成的页面更有设计感
你可以直接在 Codex 设置里手动添加 MCP 服务,但是要手动填写一堆参数,非常麻烦!
![]()
好在我们可以换一种方式,用每个 AI 服务提供的命令来快速安装。
1、安装 Firecrawl
Firecrawl 是一个联网搜索和网页抓取工具,能让 AI 在开发前先搜索最新的技术信息和文档。虽然我们的项目用的是 Tavily Search 做搜索功能,但 Firecrawl 在这里的作用是帮 AI 编程工具查资料。
打开终端,输入下列命令:
npx -y firecrawl-cli@latest init --all --browser
执行后,会自动打开浏览器,要在弹出的页面中点击授权:
![]()
安装完成后,会自动注册 12 个相关技能:
![]()
在 Codex 的技能管理中,就能看到新添加的 Firecrawl 相关技能了:
![]()
2、安装 Context7
Context7 是一个技术文档查询工具,让 AI 能获取到各种框架和库的最新官方文档,避免用过时的 API 写代码。
先在终端输入一行命令来安装:
npx ctx7@latest setup
它会问是安装 MCP 服务还是 CLI + Skills,这里我选择 CLI + Skills。你会发现,现在越来越多工具已经从 MCP 转向 CLI + Skills 的方式了:
![]()
同样在弹出的网页中授权,不用自己获取和输入 API Key,太方便了!
![]()
然后选择要给哪个 AI 编程工具安装,我选择为 Codex 安装:
![]()
安装成功:
![]()
在 Codex 中确认已安装的技能:
![]()
3、安装 UI UX Pro Max
这是一个前端美化技能包,能让 AI 生成的页面更有设计感,不会有一大堆的 Emoji。
输入一行命令:
uipro init
选择为 Codex 安装技能:
![]()
安装成功:
![]()
在 Codex 的技能管理中,能看到新技能:
![]()
至此,环境准备完成!下次开发项目时,就不用再重复准备了~
开发编码
新建一个yupi-ai-search项目文件夹,在 Codex 中打开:
![]()
然后输入提示词。这里分享一下我实际用的提示词,给大家参考:
## 角色
你是一个全栈工程师,擅长 Python + FastAPI + LangChain + Vue 开发。
## 任务
开发一个叫 yupi-ai-search 的 AI 搜索引擎网站。用户输入自然语言问题,系统自动联网搜索最新信息,再将搜索结果交给 DeepSeek V4 大模型综合分析,生成一份带引用来源的智能回答,同时展示完整的搜索结果列表。
核心功能:
1. 搜索主页:简洁的搜索框,输入问题后发起 AI 搜索
2. AI 联网搜索:调用 Tavily Search API 获取最新网页信息,将搜索结果作为上下文注入 Prompt,让 AI 生成综合回答
3. 引用来源展示:AI 回答中引用的信息必须标注来源编号,底部列出所有引用来源的标题和链接,用户可点击跳转原文
4. 搜索结果列表:除了 AI 综合回答外,还要像传统搜索引擎一样展示完整的搜索结果列表,包括 AI 未直接引用到的结果
5. 流式输出:AI 回答支持 SSE 流式输出,打字机效果实时显示
6. 搜索历史:本地存储搜索历史记录,支持快速重新搜索
7. 相关问题推荐:AI 回答完成后,自动生成 3-5 个相关问题供用户继续探索
## 技术栈
- 后端:Python FastAPI + LangChain
- 前端:Vue 3 前后端分离,支持 Markdown 渲染和代码高亮
- AI 模型:对接 DeepSeek V4(兼容 OpenAI SDK 格式,通过环境变量配置)
- 搜索:Tavily Search API(通过 langchain-tavily 集成)
## 要求1. 页面参考 Perplexity 的简洁风格,搜索页面居中大搜索框,结果页面信息密度高,使用 UI UX Pro Max 技能美化
2. 开发前,先通过 Firecrawl 联网搜索相关信息,通过 Context7 查询 LangChain、FastAPI、Tavily Search、DeepSeek API 的最新文档
3. 必须生成完整可运行的代码,每步完成后必须自主测试验证
虽然看着又臭又长,但其实是借助 AI 生成的,我简单解读一下这段提示词的几个要点:
角色定义放在最前面,让 AI 进入全栈工程师的状态
任务描述用自然语言把需求讲清楚
技术栈只列关键选型,比如 LangChain + Tavily Search 的组合,让 AI 自己决定具体的实现方案
最后两条要求是关键,让 AI 先查文档再写代码,避免瞎编写法;让 AI 开发完后自主测试,减少翻车
模型我选择 GPT-5.5,智能程度选「高」,权限给完全访问(主要图个省事儿):
![]()
小提示,如果你想让 AI 测试得更完整,可以先获取到 Tavily Search 和 DeepSeek 的 API Key 并直接提供给 AI,否则 AI 是没办法测试搜索和 AI 总结能力的。
把上述提示词发送给 AI,整个任务还是比较复杂的,接下来就是漫长的等待了。。。
可以看到 AI 先用 Firecrawl 和 Context7 搜索了 Tavily Search、LangChain、FastAPI、DeepSeek API 的用法和文档,做完调研后,才能开始写代码:
![]()
AI 生成完代码后,会自主打开浏览器进行前端测试:
![]()
从开发到测试运行,总共花了 23 分钟。AI 生成了完整的前端和后端项目代码,还自动写好了项目文档:
![]()
把鼠标放到 Codex 右侧,可以查看整个任务的生成结果、后台终端和信息来源。
![]()
![]()
感兴趣的同学可以看下 AI 生成的核心代码。后端的核心是一个 SSE 流式接口,接收到用户的搜索请求后,先调用 Tavily Search 获取网页搜索结果,然后把搜索结果注入 Prompt 并交给 DeepSeek V4 生成带引用的综合回答,最后再生成相关问题推荐。
如果搜索失败了,还有降级策略,会提示用户回答未经联网验证:
![]()
测试验证
接下来根据 AI 给出的指引,需要填写 API Key:
![]()
先到 DeepSeek 开放平台 获取 DeepSeek 的 API Key,Tavily 的 API Key 前面已经拿到了:
![]()
然后修改项目后端目录下的环境变量配置文件,把.env.example重命名为.env,填入你自己的 API Key:
![]()
注意,如果你的项目要开源,一定记得在.gitignore中忽略.env文件,防止 API Key 泄露到 GitHub 上!
配置完环境变量后,让 AI 重启项目:
![]()
人工测试
接下来人工测试一下。
打开网页,好家伙,主页竟然如此精简!
AI 真的是很听提示词的话了,简洁风格 + 居中大搜索框,跟 Perplexity 的感觉确实有几分相似 :
![]()
来输入一个问题试试:什么是鱼皮的 AI 编程导航?
其实我的 2 个网站分别是 编程导航 和 鱼皮 AI 导航,这里我故意把 2 个产品混为一谈,看看搜索结果和 AI 的总结效果如何~
大概 4 秒左右,界面就展示出了搜索结果列表,然后 20 秒左右给出了完整的 AI 总结。可以看到左侧是 AI 的综合回答,带着引用编号;右侧是完整的搜索结果列表,包含了标题、摘要和链接,跟传统搜索引擎一样可以逐条浏览:
![]()
搜索和生成速度还是挺快的,而且 AI 把我的两个不同的产品分得很清楚,内容也是准确的。
底部可以看到引用来源和相关问题推荐,点击引用就能跳转到原文,点击相关问题就能快速发起下一次搜索:
![]()
在 Codex 的对话页面,把鼠标放到右侧,点击查看后台终端,能看到 Python 后端的日志信息,每一次搜索请求都有记录:
![]()
从搜索结果来看,默认搜索的信息源以国内为主。但 Tavily Search 同样支持国外信息源搜索,比如我问:Claude Code 4.7 怎么样?
这次的搜索来源就变成了中英文混合的了,不少英文技术博客的测评文章都搜到了:
![]()
你还可以在提问中指定搜索来源,比如我问:鱼皮在 X 上有哪些 Claude Code 教程?
搜索结果中就包含了 X 的原始文章页面:
![]()
怎么样,轻轻松松就开发出了一个属于自己的 AI 搜索引擎,国内外信息尽在我手~
AI 自主测试
核心功能测试没问题了,但如果项目要正式上线,还要测试一堆边界条件,比如输入空白内容会不会崩?网络超时了怎么办?搜索没有结果时页面展示是否正常等等?
一个个手动测太麻烦了,干脆直接让 AI 帮忙。
Codex 内置了浏览器操控能力,输入@浏览器使用插件,直接让 AI 自主测试:
@浏览器 打开浏览器,自主测试所有功能
出了问题自动修复,确保所有功能正常可用
可以看到 AI 在 Codex 内部打开了一个浏览器,自己输入了问题并搜索,然后检查搜索结果列表、AI 回答、引用来源、相关问题、搜索历史等所有功能是否正常:
![]()
等了 18 分钟,AI 完成了端到端的自主测试,还顺手做了一点儿优化:
![]()
至此项目就开发完了,很简单吧?
扩展思路
虽然我们很快就开发出了一个能用的 AI 搜索引擎,但要知道,开发完成只是第一步。一个成熟的搜索引擎产品,要考虑的事情还有很多,这也是跟其他同学拉开差距的地方。
我这里借助 AI 给大家提供一些思路:
搜索结果缓存:同样的问题短时间内被多个用户搜索,没必要每次都调 Tavily 的 API,缓存下来能省不少成本
搜索结果排序优化:可以根据来源的权威性、内容的时效性来重新排序,而不是直接用 Tavily 返回的顺序
多模态搜索:支持搜图片、搜视频、搜文件,不只是文字
可观测性:加上日志、监控和链路追踪,知道每一次搜索请求经历了哪些步骤、各花了多少时间、哪里容易出问题
成本控制:搜索 API 和大模型 API 都是按量计费的,要做好限流、配额管理,防止被恶意刷接口,一不小心就是一笔大开支
安全防护:防止 Prompt 注入攻击、过滤违规内容,这些上线前必须考虑
我们要学会站在巨人的肩膀上,用现成的工具快速搭建原型,但同时也要能看到原型背后缺少的东西,这才是真正的工程能力。
我的感受
最后聊聊我用 Codex、GPT-5.5 和 DeepSeek V4 的真实感受。
先说 Codex,Codex 的界面主打一个简洁,第一眼看上去甚至不像 AI 编程工具,更像个 AI 聊天助手。但功能其实比较完整,比如 MCP 和 Skills 扩展、插件市场、自动化、Git 集成、Browser Use、Computer Use,AI 编程所需的工程能力基本都具备了。
而且最近的更新速度嘎嘎快,还有工夫整个 AI 桌面宠物给我们加点儿情绪价值……(虽然有些 UI 调整我觉得不如之前的好看)
![]()
不过缺点也很明显。默认可用的模型有限,不像 Cursor 和 Copilot 原生就整合了 Claude、GPT、Gemini 各种模型随便切。易用性也差了一些,从 MCP 配置那里大家应该已经感受到了。Copilot 可以直接在扩展市场一键搜索安装 MCP,Cursor 也支持可视化编辑 JSON 配置,Codex 这边还得自己折腾命令行或者手写 TOML。
![]()
再说说 GPT-5.5 模型。我除了这个项目之外,之前的教程以及自己的项目中也多次用到了 GPT-5.5,整体感觉不如 Claude Opus 4.6。但能力还是很强的,只要提示词到位,基本都能一把梭全栈项目的前端和后端,而且核心业务流程大概率一次性跑通。
我感觉 GPT-5.5 的特点是很听提示词的话,前端表现中规中矩,不会给你特别大的惊喜。所以想要利用好能力强的大模型,提示词还是得认真写、功能点列清楚、给一点方案和开发流程的引导,AI 才能给你满意的结果。
再看看 GPT-5.5 的成本。这次开发消耗了 13.4 万 tokens,上下文用了 52%。Codex 桌面端的上下文容量是 258K,开发这种全栈项目基本够用了:
![]()
我目前开的是 GPT Plus 会员,一个月 20 刀(150 元左右),每 5 小时和每周有限额。做完这个项目后,5 小时的额度用了差不多一半,不算扩展功能的话,1 周差不多能做 10 个完整项目。
![]()
最后说说 DeepSeek V4 吧。这次项目用的是 V4-Flash 模型作为搜索引擎的大脑,生成速度还是挺快的,效果也不错,作为搜索结果的整理完全够用了,不需要上 Pro。
Flash 模型的价格很便宜,我测试时用了 24 次请求才花了 9 分钱。按正常上线给用户访问的量来算,1 天 1000 次请求大约消耗 3.75 元,性价比很高,我们团队的一些业务也会对接 DeepSeek API。
![]()
总的来说,AI 应用开发的门槛已经非常低了。以前做一个搜索引擎是大厂才能干的事情,现在一段提示词就能搞出来一个能用的原型。
但毕竟「能做出来」和「做得好」之间还有很大的距离,前面提到的缓存、安全、成本控制这些工程化的东西,才是真正考验功底的地方。
OK 就分享到这里,本文会收录到我免费开源的 ,上千张图、几十万字,带你从 0 开始快速学会 AI 编程,做出自己的产品、跑通变现全流程,一次拿捏。
开源指路:https://github.com/liyupi/ai-guide
我是鱼皮,持续分享 AI 编程干货。觉得有用的话记得点赞收藏和关注,也欢迎在评论区聊聊:你现在最常用哪个 AI 编程工具?觉得 GPT-5.5 的 DeepSeek-V4 怎么样?
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.