惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

I
Intezer
The Register - Security
The Register - Security
博客园 - 三生石上(FineUI控件)
博客园_首页
量子位
Hugging Face - Blog
Hugging Face - Blog
Engineering at Meta
Engineering at Meta
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Last Week in AI
Last Week in AI
博客园 - 【当耐特】
N
Netflix TechBlog - Medium
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
GbyAI
GbyAI
D
Docker
M
MIT News - Artificial intelligence
Jina AI
Jina AI
The GitHub Blog
The GitHub Blog
V
Visual Studio Blog
T
Tailwind CSS Blog
S
SegmentFault 最新的问题
Microsoft Azure Blog
Microsoft Azure Blog
G
Google Developers Blog
有赞技术团队
有赞技术团队
IT之家
IT之家
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Troy Hunt's Blog
Cyberwarzone
Cyberwarzone
Recorded Future
Recorded Future
H
Help Net Security
L
LINUX DO - 热门话题
罗磊的独立博客
Google DeepMind News
Google DeepMind News
NISL@THU
NISL@THU
SecWiki News
SecWiki News
T
Threat Research - Cisco Blogs
T
Threatpost
Cloudbric
Cloudbric
G
GRAHAM CLULEY
S
Security @ Cisco Blogs
Hacker News - Newest:
Hacker News - Newest: "LLM"
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
P
Proofpoint News Feed
V2EX - 技术
V2EX - 技术
L
LangChain Blog
The Cloudflare Blog
雷峰网
雷峰网
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
B
Blog
T
The Blog of Author Tim Ferriss

博客园_首页

Plist 二进制格式 Milvus 和 PGVector,哪个更好? OpenClaw 已过时?在 VS Code 中运行 Hermes Agent! 第30篇文章:一个大三计科生的自白 Manim如何在数学公式中完美显示中文? Docker 部署 RocketMQ 5 并发编程核心概念辨析 C#事务处理最佳实践:别再让“主表存了、明细丢了”的破事发生 CLI 是什么?为什么大厂突然集体卷命令行? 【从0到1构建一个ClaudeAgent】协作-自主Agent UIImageView 设置图片不生效的原因排查 最小二乘问题详解20:无先验约束下的增量式SFM自由网平差 痞子衡嵌入式:大话双核i.MXRT1180之XIP应用里借助MU实现可靠Flash IAP的方法 AI Chat 封装, SemanticKerne.AiProvider.Unified 已发布 Windows下右键编辑js文件无法打开记事本——在注册表中使用环境变量 在后台服务中使用 Scoped 服务,为什么总是报错? H200 安装驱动并使用sglang启动模型 wireshark 抓包Trap上报告警内容 我用 AI 辅助开发了一系列小工具(2):图片压缩工具 [A Primer On MC and CC] 2.1 Memory Consistency 1 - 指令重排序和 SC 模型 Oracle数据库SCN推进技术详解与实践指南 玩转控件:封装个带图片的Label控件 Claude Code 4.7 真正该升级的不是模型,而是你的工作流 前端小白一句话,AI 帮我做了个颜值拉满的桌面媒体播放器。当代码不再是门槛,一句话编程就是现实。 5. WorkBuddy: 小龙虾的灵魂三件套,让你的小龙虾不只是工具 SQLite 分片方案实战:三种分片策略的深度对比 告别简陋 UI!一款基于 Fluent Design 和基于 WinUI 的开源免费、现代化的 Avalonia UI 控件库 关于二进制排列组合枚举的总结 AI开发-python-LangGraph框架(3-27-LangGraph从零实现大模型智能决策工作流) ElasticSearch主分片和副本分片概念详解 【002】HTTPS 粗解:证书、TLS 握手与对后端配置的影响 Hermes Agent 一周暴涨五万 Star,但我劝你别急着追 明明连接的是Redis的DB0,为什么能查到DB3的数据? 【从0到1构建一个ClaudeAgent】协作-Agent团队 熟悉电子元器件之后,电子小白下一步该怎么走? MAF快速入门(23)通过C#类定义Skills .NET 高级开发 | 手写一个对象映射框架 FastAPI数据库ORM怎么选?我肝了三个Demo后,终于不再纠结了 mysqldump 参数拾遗:在遗忘与铭记之间 C# .NET 周刊|2026年3月5期 Claude code入门 - 陈彦斌 一文学习入门 ThingsBoard 开源物联网平台 GitHub 热门项目 | 2026年04月16日 如何为GIT设置全局勾子,为每次提交追加信息 Number.isFinite和isFinite与isNaN()和Number.isNaN的区别 PortSwigger SQL注入LAB2 推荐一个测试人必备的Skills,从功能到性能全搞定(附详细实操和安装下载方式) 筑基期:掌握Odoo基础核心知识点02(Odoo XML 开发方式详解) GLM模型这么火,咱们用vllm也咧一个呗! 深入理解 AbortController:从底层原理到跨语言设计哲学 字符串学习笔记 多租户系统框架的基础模块设计和分析设计 Apache SeaTunnel Zeta 为什么能做到“又快又稳”? AI开发-python-LangGraph框架(3-26-LangGraph基本概念及第一个简单样例) Vue 3 组件通信,别只会用 Props 和 Emits 了,这几个狠活儿你得看看 ElasticSearch7.X版本配置密码 用Manim实现动态交点计算--从一个动点问题说起 团结引擎+Addressable+Instant Game打包抖音小游戏 function call 实战:让 LLM 自动判断 pod 异常、调用日志工具并完成故障分析 bubseek —— 让 Agent 的足迹,变成团队的洞察 通过 C# 读取并导出 PDF 书签 如何用 GitHub Actions 实现 Steam 自动化发布 【从0到1构建一个ClaudeAgent】并发-后台任务 .NET 高级开发 | 定制 ASP.NET Core 框架 电子小白:什么是运算放大器(运放) zero2Agent:面向大厂面试的 Agent 工程教程,从概念到生产的完整学习路线 堆上的ORW HC32F460 USB CDC通信异常:非对齐访问异常排查 20260413-Hyperbridge 攻击事件:发生在默克尔山上的验证绕过 那些喊着AI 要淘汰你的人,正在靠你的焦虑赚大钱! 深度学习进阶(八)Swin Transformer 最小二乘问题详解19:带先验约束的增量式SFM优化与实现 SnapTranslate 3.0 正式发布:全局划词翻译 + 完整英语学习闭环,一站式搞定查词、记词、复习 工作的意义、工作的困难认知再思考 .NET + AI 进阶实战:基于类的技能开发 - 打造可治理的 Agent 能力模块 【从0到1构建一个ClaudeAgent】规划与协调-技能 上周热点回顾(4.6-4.12) 电子小白的工具三件套:面包板、杜邦线、万能板 单表五亿数据的查询优化 | Mysql、StarRocks 2. WorkBuddy:从“我是谁”到“帮我干活” C# 如何减少代码运行时间:7 个实战技巧 基于HelixToolkit.SharpDX 渲染3D模型 - 笺上知微 从零开始的双臂具身VLA起源及现阶段发展综述 - SkyXZ 记对 xonsh shell 的使用, 脚本编写, 迁移及调优 - pluvium27 受够了Vibe Coding的失控?换个起点,让AI事半功倍 从开始配置漏洞环境到漏洞复现流程 - 難しい 关于10年工作经验的程序员对OpenClaw的实战经验分享以及看法 - 虚无境 Any metadata 的内存布局 C# .NET 周刊|2026年3月2期 - InCerry 我帮你测过了,测试圈排名第二的 Skill 依然很牛逼 Skill Discovery | 无监督技能发现的经典工作总结 - MoonOut 上下文工程是什么?过时了么?一文讲明白! - 一枫说码 开了 TUN 模式还是直连?90% 的人都踩过这个坑 AScript扩展多种脚本语言 - rockey627 AI 学习笔记:Agent 的记忆机制 你能被装进一个文件里吗?——7 万人把同事"蒸馏"成了 AI - 我没有三颗心脏 Claude Code 通关手册(七):给 AI 装上技能包——Skills 完全指南 - 暮色之狐 在浏览器中快速编辑代码:VSCode Web 集成实践 - Newbe36524 蒸馏自己 skill?基于 Deepseek 的蒸馏器,丐版蒸馏方式,简单便捷 - To_Carpe_Diem Spring AI Aliababa和AgentScope,哪个更好? - 苏三说技术
再见百度,我用 1 小时,开发了个 AI 搜索引擎!Codex + GPT 5.5 + DeepSeek V4 真香~
程序员鱼皮 · 2026-05-13 · via 博客园_首页

大家好,我是程序员鱼皮。

想必你已经发现了,如今的搜索引擎已经全面进化了。

以前搜东西,就是输入关键词,然后在一堆蓝色链接里挑着看。

现在呢,直接输入一个问题,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 步:

  1. 抓取网页,派爬虫到处爬
  2. 建立索引,把网页内容整理成数据库
  3. 排名展示,根据相关性给结果排序

Google、百度这些搜索引擎,背后都是几十万台服务器在跑这套系统。

如果搁以前,让你自己开发一个搜索引擎,简直想都不敢想,光是抓取全网页面这一步就能把人劝退。

但现在不一样了,有了 AI 编程工具,加上现成的搜索引擎 API 服务,你不需要自己爬网页、建索引,直接调 API 就能拿到搜索结果,然后交给 AI 总结就完事了。

目前专门为 AI 应用设计的搜索服务已经有不少了,比如 Tavily Search、Firecrawl、Brave Search API 等等,它们都能通过 API 调用拿到结构化的搜索结果,直接给 AI 使用。

下面重点介绍一下本项目选用的 Tavily Search。

Tavily Search 是目前 AI 应用开发领域最主流的搜索 API 之一,知名的 AI 应用开发框架 LangChain 官方首推的搜索工具就是它。

它有几个优势:

  1. 返回的是结构化的搜索结果(标题、URL、内容摘要),不是原始 HTML,直接塞给 AI 就能用,省 tokens
  2. 搜索速度快,一般 3 秒左右就能出结果
  3. LangChain 有官方集成包 langchain-tavily,几行代码就能接入
  4. 支持中文搜索,可以通过 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 搜索引擎的核心流程:

  1. 用户在前端输入问题
  2. 后端接收请求,调用 Tavily Search API 联网搜索,拿到结构化的搜索结果
  3. 把搜索结果作为上下文注入 Prompt,交给 DeepSeek V4 大模型
  4. AI 基于搜索结果生成带引用编号的综合回答,通过 SSE 流式返回给前端
  5. 前端同时展示 AI 综合回答和完整的搜索结果列表
  6. AI 回答完成后,自动生成相关问题推荐,方便用户继续探索

AI搜索引擎核心业务流程图

环境准备

Codex 配置

打开 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 个扩展:

  1. Firecrawl:联网搜索和网页抓取,让 AI 能获取最新的技术信息
  2. Context7:查询最新的技术文档和 API 用法,减少 AI 瞎编的情况
  3. 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 回复的最下方,可以查看和审核生成的所有代码文件:

感兴趣的同学可以看下 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 给大家提供一些思路:

  1. 搜索结果缓存:同样的问题短时间内被多个用户搜索,没必要每次都调 Tavily 的 API,缓存下来能省不少成本
  2. 搜索结果排序优化:可以根据来源的权威性、内容的时效性来重新排序,而不是直接用 Tavily 返回的顺序
  3. 多模态搜索:支持搜图片、搜视频、搜文件,不只是文字
  4. 可观测性:加上日志、监控和链路追踪,知道每一次搜索请求经历了哪些步骤、各花了多少时间、哪里容易出问题
  5. 成本控制:搜索 API 和大模型 API 都是按量计费的,要做好限流、配额管理,防止被恶意刷接口,一不小心就是一笔大开支
  6. 安全防护:防止 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 就分享到这里,本文会收录到我免费开源的 《Vibe Coding 零基础入门教程》,上千张图、几十万字,带你从 0 开始快速学会 AI 编程,做出自己的产品、跑通变现全流程,一次拿捏。

开源指路:https://github.com/liyupi/ai-guide

我是鱼皮,持续分享 AI 编程干货。觉得有用的话记得点赞收藏和关注,也欢迎在评论区聊聊:你现在最常用哪个 AI 编程工具?觉得 GPT-5.5 的 DeepSeek-V4 怎么样?