Langfuse + Claude Claude+ OpenAI GPT Latest OpenAI GPT Latest+ Vercel Vercel+ React React + pgvector+ TypeScript+ BM25+ Supabase

React 个体作品集集成双模 AI 聊天机器人,Agentic RAG 混合检索与全链路追踪

✓ 混合检索+重排提升 RAG 质量✓ 每步追踪成本可观测 ✕ 组件多,部署链路复杂✕ 依赖多个付费 API

方案简介

本方案来自 santifer.io —— 一个「生产级交互式作品集」,核心是用一个以第一人称回答问题的 AI 聊天机器人「Santi」来证明简历所描述的技能。README 明确指出静态 PDF 只罗列技能而无法证明技能,该项目则让作品集本身成为技能演示。

技术配方为:前端 React + TypeScript + Vite + Tailwind,聊天入口为 React 挂件 FloatingChat.tsx,请求发往部署在 Vercel Edge 上的 api/chat.js;后端用 Claude Sonnet 做 tool_use 决策与流式生成,需要检索时走 Agentic RAG 流水线:OpenAI text-embedding-3-small 生成向量,Supabase pgvector(语义检索)+ 全文检索(BM25)做混合搜索,再用 Claude Haiku 做重排与多样化;每一跳都通过 Langfuse 追踪(含成本);打分通过 waitUntil 异步执行,零额外延迟。

适合希望构建可观测、可评估、带安全防线的个人/小型 LLM 应用的开发者。

亮点与能力

  • AI Chatbot "Santi":Text (Claude Sonnet) + Voice (OpenAI Realtime API),以第一人称作为 Santiago 回答
  • Agentic RAG:混合检索(pgvector + BM25)+ Haiku 重排,仅在需要时激活(tool_use 决策)
  • 6-Layer Defense:关键词检测、金丝雀令牌、指纹、反提取、在线安全评分、对抗红队,越狱实时邮件告警
  • 71 Automated Evals:10 类测试,每次 push 作为 CI 门禁
  • LLMOps Dashboard:私有 /ops,8 个标签页展示 Langfuse + Supabase 真实生产数据
  • Closed Loop:Trace → 在线评分 → 质量 < 0.7 → 自动生成测试 → CI 阻断部署
  • 流式输出:React 挂件通过流式 SSE 呈现回复,附带快速提示词与联系 CTA
  • 异步评分零延迟:waitUntil → Haiku scoring (0ms added latency)

组成与分工

  • React / FloatingChat.tsx:聊天挂件,负责流式 SSE、快速提示词、联系 CTA
  • Vercel Edge / api/chat.js:主聊天边缘函数,承载 RAG、追踪、评分、流式与防御
  • Claude Sonnet:tool_use 决策(是否触发 RAG)+ 流式生成最终回答
  • OpenAI embeddings (text-embedding-3-small):文本向量化,供语义检索
  • Supabase pgvector + 全文检索:语义(pgvector)与 BM25 混合搜索的知识库
  • Claude Haiku:RAG 结果重排与多样化;另用于异步在线评分与 LLM-as-Judge 评测
  • Langfuse:每个 span 的全链路追踪与成本记录,同时作为 prompt registry(含文件 fallback)
  • api/_shared/rag.js:RAG 流水线——混合搜索、重排、成本追踪、意图分类

前置要求

  • 前端:React + TypeScript + Vite + Tailwind
  • 后端运行时:Vercel(Edge Functions)
  • 模型 API:Claude(Sonnet / Haiku)、OpenAI(embeddings)
  • 数据库:Supabase(启用 pgvector 扩展,含全文检索)
  • 可观测性:Langfuse 账号与追踪密钥

实施步骤

1. 搭建前端与聊天挂件

用 React + TypeScript + Vite + Tailwind 建站,集成 src/FloatingChat.tsx 聊天挂件。

2. 部署边缘聊天 API

api/chat.js 部署到 Vercel Edge,作为主聊天入口,内部串联系统提示词、Claude 决策、RAG、流式生成、Langfuse 追踪与安全防御。

3. 准备知识库与混合检索

在 Supabase 中启用 pgvector,将文档用 OpenAI text-embedding-3-small 向量写入;检索时同时使用 pgvector 语义搜索与全文 BM25,再由 Claude Haiku 重排。

4. 接入 Langfuse

配置追踪,使每个 span(含成本)都上报;系统提示词走 Langfuse prompt registry,chatbot-prompt.txt 仅作 fallback(生产使用 Langfuse v5)。

5. 运行评测与红队

通过 npm 脚本运行 71 条自动评测与红队对抗测试:

npm run evals

npm run adversarial

6. 搭建 /ops 运维面板

部署 api/ops/ 下的 auth/stats/traces/evals 等端点,以 OPS_DASHBOARD_SECRET 鉴权,展示 Langfuse 与 Supabase 真实数据。

使用与配置要点

日常运行

  • 聊天挂件以流式 SSE 输出回答,RAG 引用带 source badges(来源徽标)
  • 评分经 waitUntil 异步执行,用户侧零额外延迟
  • 提示词更新在 Langfuse registry 中进行版本管理

验证与监控

  • 访问私有 /ops 面板查看 8 个标签页:Overview / Conversations / Costs / RAG / Security / Evals / Voice / System
  • Costs 页按 toolDecision/embedding/reranking/generation/voice 拆分成本(数据源 trace.metadata.cost
  • Security 页展示防御漏斗、安全评分分布与越狱列表
  • 闭环机制:质量 < 0.7 的 trace 会自动生成测试,CI 门禁阻断部署

注意事项与常见问题

  • chatbot-prompt.txt 只是 fallback 提示词,生产环境使用 Langfuse v5 的注册提示词
  • /ops 面板是私有、密码保护的(校验 OPS_DASHBOARD_SECRET
  • RAG 仅按需激活(由 Claude tool_use 决策),并非每条消息都检索
  • 评测约 70% 为确定性断言(contains/regex/词数),约 30% 为 LLM-as-Judge(Haiku),需注意 judge 的成本与偏差

优缺点

  • ✓ 混合检索+重排提升 RAG 质量
  • ✓ 每步追踪成本可观测
  • ✕ 组件多,部署链路复杂
  • ✕ 依赖多个付费 API

出处

本方案挖掘自开源项目 santifer/cv-santiago,方案内容与实施命令均来自其 README 原文。

方案出处
santifer/cv-santiago:Interactive CV with AI chat integration. Built with React 19, TypeScript, Claude
833 star Interactive CV with AI chat integration. Built with React 19, TypeScript, Claude API. Chat with my AI avatar about my experience.

本方案由真实开源项目挖掘整理,实施命令均来自其 README 原文,安装使用请遵循项目开源协议。