Skip to content

本节课代码:https://github.com/AI-FE/jupyter-notebook

在正式开始敲代码之前,先来了解一下市面上主流的 AI 研发技术栈:

  • OpenAI SDK、LangChain、LlamaIndex、Vercel AI SDK 快速上手使用。

  • 4 种技术栈对比和选择

学习环境:Jupyter Notebook + Deno + Vscode(Cursor)

  • Jupyter Notebook:在 AI 领域常用的一款交互式编程工具
  • Deno:一个现代化的 JavaScript 和 TypeScript 运行时,可以结合 Jupyter Notebook 使用

安装 Deno

bash
# 安装 Deno
curl -fsSL https://deno.land/x/install/install.sh | sh

# 使用 Deno 作为 Jupyter 的kernel(内核)
deno jupyter --install

安装 Jupyter Vscode(Cursor)插件

测试

OpenAI SDK

基本介绍

OpenAI 官方提供的 AI SDK

  • 提供了直接访问 OpenAI API 的能力
  • 集成了 chat、embedding、fine-tuning 等
  • 支持所有 OpenAI 系列的 LLM
  • 支持三方中转 api(302、openrouter 等)

快速上手

快速上手代码详见:jupyter-notebook/第 20 课/openai-api.ipynb

OpenAI 更多资料详见官方文档:https://platform.openai.com/docs/overview

LangChain

基本介绍

LangChain 是一个用于开发 LLM 应用的框架

  • 它提供了一套完整的工具链,通过 LCEL(LangChain Expression Language) 可以帮助开发者快速构建基于 LLM 的应用。
  • 支持大量 LLM 模型的调用,包括 OpenAI、Anthropic、Google 等。
  • 可通过 LangGraph 快速构建 Agent 应用

快速上手

LCEL 是 LangChain 提供的一种表达式语言,用于描述和执行复杂的链式操作。

Runnables

  • 一个 Runnable 是一个可以执行的组件,它可以是 LLM、工具、链 等。
  • 通过 Runnable 进行组合构建一条链式操作(Chain)。

Chains

  • 本身也是 Runnable
  • 也可以和其它的 Runnable 组合在一起,形成一条新的链式操作(Chain)。

快速上手代码详见:jupyter-notebook/第 20 课/langchain-api.ipynb

Langchain 更多资料详见官方文档:https://js.langchain.com/docs/how_to/

LlamaIndex

基本介绍

LlamaIndex 是一个开发 LLM 应用的框架

  • 专注于帮助 LLM 应用连接和处理自定义数据。它提供了一套完整的工具,核心用于构建 RAG 应用。

  • 支持大量 LLM 模型的调用,包括 OpenAI、Anthropic、Google 等。

  • 针对 RAG 的不同阶段包含很多内置的组件和优化方案(数据加载、分割、嵌入、检索前处理、检索后处理等)

快速上手

快速上手代码详见:jupyter-notebook/第 20 课/llamaindex-api.ipynb

LlamaIndex 更多资料详见官方文档:https://ts.llamaindex.ai/docs/llamaindex

Vercel AI SDK

基本介绍

Vercel AI SDK 是一个专注于前端 AI 应用开发的工具包,特别适合构建基于 React 、 Next.js、Vue 等的全栈 AI 应用。

  • 提供了一系列的 Hooks 和组件,用于快速构建 AI 应用。
  • 支持多种 LLM 模型,包括 OpenAI、Anthropic、Google 等。

快速上手

详见:jupyter-notebook/第 20 课/vercel-ai-sdk-api.ipynb

Vercel AI SDK 更多资料详见官方文档:https://sdk.vercel.ai/docs/introduction#why-use-the-ai-sdk

对比

AI 框架类比 UI 框架类比说明
OpenAI SDKTailwind CSS • 基础的工具集(原子化的样式,但不原始)
• 灵活性、可控性高但需要自己组装
LangChainAnt Design • LCEL 中包含大量的组件(类似于 Ant Design 中包含大量针对不同场景的组件)
• 可以快速搭建一个原型,但是可控性、灵活性相对较差
• 包含大量组件 api,学习成本相对较高
LlamaIndexAnt Design Pro • 同样包含很多组件,尤其是针对 RAG 应用的场景(类似于 Ant Design Pro 针对后台管理系统的场景)
• 能快速搭建一个原型,同样但是可控性、灵活性相对较差
• 包含大量组件 api,学习成本相对较高
Vercel AI SDKShadcn UI • 在基础工具集的基础上,拓展了一些使用场景,比如支持多模型、hooks 机制(类似于 Shadcn UI 基于 tailwind 拓展了一些组件场景,但没改变原始的 tailwind 写法)
• 相比较 OpenAI SDK,拓展了更多的使用场景,相比较于 LangChain、LlamaIndex,没有封装大量组件 api,学习成本、灵活、可控性更高

从 0 ~ 1 的场景,前端如何选择技术栈框架

原型验证

  • 可视化低代码平台:Dify 等

  • 代码构建,可以选择 LangChain(工具链大全集) 或 LlamaIndex(RAG 处理大全集)

生产环境

  • 全栈 AI 应用(可能会调用不同 LLM provider),可以选择 Vercel AI SDK

  • 深度聚焦使用 OpenAI,可以选择 OpenAI SDK