0%

Mastra:加速 AI 应用开发的 TypeScript 框架

在人工智能技术日新月异的当下,AI 应用如雨后春笋般不断涌现。然而,构建这类应用往往面临诸多挑战,如不同的模型整合、智能交互逻辑的设计、RAG 的设计等,从零开始构建往往需要耗费不少成本。Mastra,作为一个快速开发构建 AI 应用的框架,为开发者们提供了新的解决方案。

简介

Mastra 是一个用于快速构建 AI 应用的 TypeScript 框架,代码仓库位于
https://github.com/mastra-ai/mastra 。其旨在为开发者提供构建 AI 应用所需的基础组件,助力快速搭建各类 AI 应用及功能。

Mastra 包含以下主要的特色功能和模块:

  • 大语言模型 LLM:Mastra 借助 Vercel AI SDK,为开发者提供统一接口,可与 OpenAI、Anthropic、Google Gemini 等众多大语言模型供应商交互,开发者能灵活选择模型、供应商以及是否采用流式响应
  • 智能体 Agent:在 Mastra 中,智能体为大语言模型提供工具、工作流和同步数据。智能体可以调用你自己的函数或第三方集成的 API,并访问你自己构建的知识库。
  • 工具 Tool:Mastra 的工具是带有类型的函数,由代理或工作流执行,内置集成访问和参数验证功能。每个工具都有用来定义输入的模式、实现逻辑的执行函数,以及访问已配置集成的能力。
  • 工作流 Workflow:Mastra 的工作流是基于图的状态机,支持循环、逻辑分支、用户输入等待、其他工作流的嵌入、错误处理、重试、解析等复杂功能。工作流既可以通过代码构建,也能使用可视化编辑器操作,并且每个工作流步骤都内置 OpenTelemetry 进行跟踪。
  • 检索增强生成 RAG:RAG 是一种采用特定查询技术的 ETL(提取、转换、加载)管道,这些技术包括分块、嵌入和向量搜索。
  • 集成 Integration:在 Mastra 中,可以把第三方服务自动生成的、类型安全的 API 客户端,用作智能体的工具,或在工作流中使用。
  • 评估 Eval:Mastra 提供了自动评估指标,使用模型评分以及基于规则和统计的方法,来评估大语言模型的输出,每次评估都会返回一个 0 到 1 之间的标准化分数,可进行记录和比较,也支持开发者自定义。

使用

开始使用 Mastra 前,首先需要确保环境有 Node.js v20.0+,并拥有 LLM 提供者所提供的 API Key,如 OpenAI, Anthropic 和 Google Gemini 等。

Mastra 最简单的使用方法,使使用 create-mastra 包,这个命令行工具能快速开始构建 Mastra 应用。使用 npx 安装运行:

1
npx create-mastra@latest

运行后,会出现以下的安装提示:

1
2
3
4
5
6
7
8
9
10
What do you want to name your project? my-mastra-app
Choose components to install:
◯ Agents (recommended)
◯ Tools
◯ Workflows
Select default provider:
◯ OpenAI (recommended)
◯ Anthropic
◯ Groq
Would you like to include example code? No / Yes

在完成了配置项的选择后,create-mastra 会完成项目的设置,安装依赖并配置所选择的组件和 LLM 提供者。LLM API Key 可以配置在 .env 文件中:

1
OPENAI_API_KEY=<your-openai-key>

create-mastra 也支持直接使用命令行选项运行:

1
npx create-mastra@latest --components agents,tools --llm openai --example

除了 create-mastra 工具外,Mastra 也支持手动安装。首先创建一个文件夹:

1
2
mkdir hello-mastra
cd hello-mastra

然后,初始化一个 TypeScript 项目,并安装 mastra/core 依赖:

1
2
3
4
npm init -y
npm install typescript tsx @types/node mastra@alpha --save-dev
npm install @mastra/core@alpha zod
npx tsc --init

完成 LLM API Key 的配置后,首先创建一个工具 Tool:

1
mkdir -p src/mastra/tools && touch src/mastra/tools/weather-tool.ts

然后往其中添加工具的代码:

1
2
3
4
5
6
7
8
export const weatherTool = createTool({
id: "get-weather",
description: "Get current weather for a location",
inputSchema: z.object({
location: z.string().describe("City name"),
}),
...
})

创建完工具后,创建一个 Agent:

1
mkdir -p src/mastra/agents && touch src/mastra/agents/weather.ts

填写以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import { openai } from "@ai-sdk/openai";
import { Agent } from "@mastra/core/agent";
import { weatherTool } from "../tools/weather-tool";

export const weatherAgent = new Agent({
name: "Weather Agent",
instructions: `You are a helpful weather assistant that provides accurate weather information.

Your primary function is to help users get weather details for specific locations. When responding:
- Always ask for a location if none is provided
- Include relevant details like humidity, wind conditions, and precipitation
- Keep responses concise but informative

Use the weatherTool to fetch current weather data.`,
model: openai("gpt-4o-mini"),
tools: { weatherTool },
});

在其中提供了这个 Agent 的任务,和使用的模型。最后进行 Agent 的注册:

1
2
3
4
5
6
7
import { Mastra } from "@mastra/core";

import { weatherAgent } from "./agents/weather";

export const mastra = new Mastra({
agents: { weatherAgent },
});

总结

Mastra 作为一个开源的 TypeScript 框架,为 AI 应用开发带来了极大的便利。其整合了多种关键功能,降低了开发门槛,提升了开发效率,无论是对经验丰富的开发者,还是刚涉足 AI 领域的新手,都具有很高的价值。

Mastra 能在诸多 AI 应用开发领域中得到应用,加速 AI 应用构建。在智能客服领域,利用其代理功能和工作流机制,能打造出高效、智能的客服机器人,快速响应用户问题并提供准确解答;在智能写作辅助方面,借助 RAG 功能,为写作工具提供丰富的知识支持,帮助创作者生成更优质的内容;在数据分析与处理领域,通过调用正好各类工具和集成第三方服务,能实现数据的自动化处理和分析。

-------------本文结束感谢您的阅读-------------