AI Agent 开发
Agent开发常用框架:
- LangChain
- LlamaIndex
- Vercel AI SDK
LangChain:一站式 LLM 应用开发框架
一句话总结
LangChain 把「模型调用 + 外部数据 + 工具 + 记忆 + 流程编排」全部标准化,让你像搭积木一样快速组合出聊天机器人、RAG、Agent 等大模型应用。
1. 为什么会出现 LangChain?
痛点 | LangChain 解法 |
---|---|
Prompt 难复用、难管理 | 提供 PromptTemplate、FewShotTemplate |
各家 LLM API 风格各异 | 统一 ChatModel 接口,一行代码切换 OpenAI、Claude、DeepSeek |
想实现检索/记忆/工具调用要写大量胶水代码 | 内置「链(Chain)」「代理(Agent)」模板 |
调试、监控无从下手 | LangSmith 可视化追踪每一次 LLM 调用 |
2. 技术全景图
┌────────────┐ ┌────────────┐ ┌────────────┐
│ LangSmith │ │ LangGraph │ │ LangServe │
│ 调试&监控 │ │ 图状流程 │ │ REST 部署 │
└────────────┘ └────────────┘ └────────────┘▲ ▲ ▲└──────────────────┼──────────────────┘LangChain Core
┌────────────────────────────────────────────────┐
│ 组件层 │
│ • Models:LLM、Chat、Embedding │
│ • Prompts:模板、少样本示例、输出解析器 │
│ • Memory:Buffer、Summary、VectorStoreRetriever│
│ • Indexes:文档加载器、分割器、向量库 │
│ • Chains:LLMChain、RetrievalQA、SQL Chain │
│ • Agents:ReAct、OpenAI Functions、Plan&Execute│
└────────────────────────────────────────────────┘
3. 快速上手(Python)
① 安装
pip install langchain langchain-openai langchain-chroma streamlit
② 30 行 RAG 问答 Demo
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_chroma import Chroma
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_community.document_loaders import TextLoader
from langchain.chains import RetrievalQA# 1) 加载 & 切片
docs = TextLoader("faq.txt").load()
texts = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50).split_documents(docs)# 2) 向量化 & 建索引
db = Chroma.from_documents(texts, OpenAIEmbeddings(), persist_directory="./chroma_db")# 3) 检索 + 生成
qa = RetrievalQA.from_chain_type(llm=ChatOpenAI(model="gpt-3.5-turbo", temperature=0),retriever=db.as_retriever(search_kwargs={"k": 3}))
print(qa.invoke("如何申请年假?"))
4. 典型使用场景
场景 | 关键组件 | 参考模板 |
---|---|---|
RAG 知识库问答 | RetrievalQA + VectorStoreRetriever | [Docs QA] |
SQL 自然语言查询 | SQLDatabaseChain | [NL2SQL] |
多工具 Agent | ReAct Agent + Tool | [WebSearch+Calculator] |
多轮对话机器人 | ConversationChain + Memory | [ChatBot] |
5. 生产落地路线图
阶段 | 工具 | 关键动作 |
---|---|---|
开发 | LangChain + LCEL | 用 ` |
调试 | LangSmith | 追踪 Token 用量、延迟、失败链路 |
部署 | LangServe | pip install "langserve[server]" 一键转 FastAPI |
运维 | LangGraph Platform | 可视化 DAG、灰度发布、A/B Prompt |
6. 避坑 & 最佳实践
- 版本管理:2024 年起官方拆分为
langchain-core
+langchain-community
+ 独立集成包(如langchain-openai
),务必对齐版本。 - Prompt 版本:使用
langsmith
的 Prompt Hub 做版本控制与灰度实验。 - 检索质量:
- 先用
MultiQueryRetriever
自动生成多查询提升召回; - 再用
Cross-encoder
(如 bge-reranker)做重排。
- 先用
- 流式输出:所有链/Agent 都实现
Runnable
接口,直接chain.stream(...)
逐字返回。 - Token 成本控制:为长文档启用「父文档检索」或「上下文压缩」模式。
7. 一条命令体验官方模板
pip install langchain-cli
langchain app new my-rag --template rag-chroma
cd my-rag
langchain serve # 本地 http://127.0.0.1:8000/docs
8. 延伸阅读
- 官方中文文档:https://docs.langchain.com.cn
- 互动课程:《LangChain 从 0 到 1》FOSDEM 2024 幻灯片
- 实战电子书:《大模型应用开发:RAG 实战课》
一句话:把 LangChain 当作「LLM 界的 Spring Boot」即可——帮你屏蔽底层差异,专注业务逻辑。
LlamaIndex 全景速览:从 0 到生产级知识助手
一句话定义
LlamaIndex 是一个面向企业私有数据的端到端 RAG(Retrieval-Augmented Generation)框架:把任何格式的文档、数据库、API → 拆块 → 向量化 → 建索引 → 问答/摘要/代理,开箱即用,且天然支持多代理和云原生部署。
1. 设计哲学:以“数据→索引→查询”为核心
阶段 | 核心概念 | 常用类/方法 |
---|---|---|
数据摄取 | Loader → Document | SimpleDirectoryReader , LlamaHub 连接器 |
切块/节点 | Document → Node | SentenceSplitter , TokenTextSplitter , 可自定义 chunk_size/overlap |
向量化 | Node → Embedding | OpenAIEmbeddings , bge-large , nvolveqa_40k |
索引构建 | Embedding → Index | VectorStoreIndex , TreeIndex , KeywordTableIndex |
查询引擎 | Index → QueryEngine | index.as_query_engine() , RetrieverQueryEngine |
聊天/代理 | QueryEngine → ChatEngine | CondenseQuestionChatEngine , ReActAgent |
2. 30 行代码跑通一个本地知识问答
# pip install llama-index
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader# 1) 数据加载
documents = SimpleDirectoryReader("data").load_data() # 支持 pdf, md, docx, 图片等# 2) 建索引(默认 embedding=text-embedding-ada-002)
index = VectorStoreIndex.from_documents(documents)# 3) 问答
query_engine = index.as_query_engine()
answer = query_engine.query("作者在大学做了什么?")
print(answer)
- 第一次运行后执行
index.storage_context.persist("storage")
即可把索引落盘,下次秒加载。
3. 进阶功能速查表
需求 | 做法 | 关键 API/组件 |
---|---|---|
混合检索(稠密+稀疏) | BM25Retriever + VectorIndexRetriever → RetrieverRouter | |
重排序 | LLMRerank , CohereRerank 节点后处理器 | |
流式回答 | query_engine.query_stream("...") | |
多轮对话 | CondensePlusContextChatEngine.from_defaults() | |
多代理协作 | AgentRunner + AgentWorker (异步优先、事件驱动) | |
复杂文档解析 | LlamaParse(表格/图表 OCR)、Excel 智能体(RL 结构理解) | |
云端托管 | LlamaCloud:一行代码 LlamaCloudIndex("my_index") |
4. 数据连接器(LlamaHub)一览
from llama_index import download_loaderGoogleDocsReader = download_loader("GoogleDocsReader")
NotionPageReader = download_loader("NotionPageReader")
SlackReader = download_loader("SlackReader")
- 支持 100+ 源:SharePoint、S3、Confluence、Discord、Apify…
5. 典型企业场景
场景 | LlamaIndex 组件组合 |
---|---|
内部知识库问答 | SimpleDirectoryReader → VectorStoreIndex → ChatEngine |
合同风险审查 | LlamaParse 提取条款 → TreeIndex 做层级检索 → ReActAgent 调用外部法规 API |
财务报表分析 | Excel 智能体 → Pydantic 数据模型 → RetrieverQueryEngine |
多文档比对 | SubQuestionQueryEngine :把大问题拆成子问题并行检索 |
6. 生产落地 checklist
-
性能
- 节点大小:512-1024 token;overlap 50-100;重排 Top-k=5
- 用
asyncio
+AgentRunner
实现高并发异步查询
-
安全合规
- 本地部署:Ollama、Llamafile;或 LlamaCloud 私网 VPC
- 权限控制:在
Document.metadata
打标签,检索时过滤
-
可观测性
- 启用回调:
CallbackManager
对接 LangSmith / Arize - 追踪 token 用量、延迟、用户反馈
- 启用回调:
7. 学习资源
- 官方文档(中文):https://llama-index.readthedocs.io/zh/latest
- 交互式教程:LlamaIndex Notebook Examples(Google Colab 可直接跑)
- 社区仓库:LlamaHub https://llamahub.ai
- 企业级白皮书:LlamaCloud & LlamaParse 官方博客
一句话总结
LlamaIndex = 「数据连接器 + 分块器 + 向量索引 + 查询引擎 + 多代理」全家桶,面向企业私有知识,3 分钟原型,3 天可投产。
Vercel AI SDK 速查表(2025-07 版)
一句话:
Vercel AI SDK 是「TypeScript 版 LangChain」,但专为前端/全栈打造——统一 20+ LLM 的调用方式,提供流式 UI 钩子和Server Actions,让你在 Next.js、Vue、Svelte 中 5 分钟上线聊天机器人或生成式应用。
1. 模块速览
模块 | 作用 | 入口 |
---|---|---|
AI SDK Core | 统一 LLM 调用(文本、结构化对象、工具) | import { generateText, streamText, generateObject } from 'ai' |
AI SDK UI | React/Vue/Svelte 流式 Hooks | import { useChat, useCompletion } from 'ai/react' |
AI SDK RSC | Next.js Server Actions 流式返回 | import { createStreamableValue, streamUI } from 'ai/rsc' |
2. 30 秒上手(Next.js 14)
① 安装
npm i ai @ai-sdk/openai
② 服务端路由(零配置流式)
// app/api/chat/route.ts
import { openai } from '@ai-sdk/openai';
import { StreamingTextResponse, streamText } from 'ai';export async function POST(req: Request) {const { messages } = await req.json();const result = await streamText({model: openai('gpt-4o'),messages,});return new StreamingTextResponse(result.textStream);
}
③ 客户端组件
'use client';
import { useChat } from 'ai/react';export default function Chat() {const { messages, input, handleInputChange, handleSubmit } = useChat();return (<form onSubmit={handleSubmit}><input value={input} onChange={handleInputChange} />{messages.map(m => <p key={m.id}>{m.role}: {m.content}</p>)}</form>);
}
npm run dev
即可体验打字机效果。
3. 高级功能
需求 | 代码片段 |
---|---|
结构化输出 | generateObject({ schema: z.object({ name: z.string() }), prompt }) |
切换模型 | 把 openai('gpt-4o') 换成 anthropic('claude-3-7-sonnet') 即可 |
缓存响应 | onCompletion: (text) => await kv.set(key, text, { ex: 3600 }) |
Server Actions 流式 | 使用 createStreamableValue 直接返回 ReadableStream |
4. 一键模板
npx create-next-app@latest my-ai-app --template vercel/ai
官方模板已集成:
- Chat UI(ShadcnUI)
- 模型切换 (OpenAI / Anthropic / Mistral)
- 流式 + 缓存 + 结构化输出
5. 生态对比
特性 | Vercel AI SDK | LangChain (Python) |
---|---|---|
语言 | TypeScript 优先 | Python 优先 |
UI 流式 | 内置 Hooks & RSC | 需自行封装 |
框架 | Next.js/React/Vue/Svelte | 任意 Python 后端 |
模型切换 | 两行代码 | 需改 provider 实例 |
部署 | Vercel Edge Functions / 任意 Node | FastAPI / Flask |
总结
把 Vercel AI SDK 当作「前端界的 LangChain」即可:
- 前端开发者 5 分钟上线流式聊天;
- 全栈团队用 Server Actions 无需手写 API;
- 支持 20+ 模型,两行代码切换。