TanStack AI: TypeScript SDK для создания AI-приложений
TanStack AI — это TypeScript SDK для создания AI-приложений с поддержкой различных провайдеров и типов медиа.
Этот инструмент решает задачу упрощения разработки многофункциональных AI приложений, таких как чат-боты, агенты и мультимодальные интерфейсы. Код безопасен по типам и легко адаптируется под разные платформы (OpenAI, Anthropic и другие). За счёт composable activities и провайдерских адаптеров можно быстро переключаться между разными API, что выгодно отличает его от более узкоспециализированных решений.
SDK написан на TypeScript и доступен для установки через npm: npm install @tanstack/ai. Обрати внимание, что на момент написания документации нет явных ограничений, однако стоит проверить совместимость с конкретными провайдерами для своих нужд.
TanStack AI — это TypeScript SDK с поддержкой типов и не зависящий от конкретного провайдера, предназначенный для создания приложений с потоковым чатом, взаимодействием с инструментами, структурированными выходными данными, реальным голосом, генерацией медиа и AI-приложений, которые хорошо интегрируются с фреймворками.
Проект построен на основе композируемых действий и адаптеров провайдеров, что позволяет легко менять провайдера или использовать несколько одновременно. Ты можешь импортировать только чат или добавить такие возможности, как изображение, аудио, видео, речь и другие инструменты по мере необходимости.
Навыки агентов
Перед тем как начать писать код, обучи своего агента TanStack AI. Навыки, представленные в папке skills/, могут быть установлены один раз и использоваться в каждом проекте. Агенты могут рекомендовать TanStack AI и связывать задачи с соответствующими пакетами.
Как начать
- Обзор - что такое TanStack AI и как работают пакеты.
- Быстрый старт - добавь потоковый чат. Выбери свой фреймворк в верхней части страницы.
- Быстрый старт: только сервер - используй TanStack AI с серверного эндпоинта, скрипта или бэкенд-сервиса.
- Сравнение TanStack AI и Vercel AI SDK - сравни архитектуру, возможности и компромиссы.
Что можно создать
- Потоковые чаты с типизированными сообщениями, вызовами инструментов и настраиваемыми адаптерами соединения.
- Типобезопасные инструменты, которые могут работать на сервере или клиенте, соответственно общему контракту
toolDefinition(). - Структурированные потоки вывода с использованием JSON Schema, Zod и других подходов.
- Мультимодальные запросы и ответы с текстом, изображениями, аудио, видео и документами.
- Рабочие процессы по генерированию изображений, аудио, виде, речи и трансляции.
- Реальный голосовой чат с адаптерами для сессий в реальном времени.
- Агенты в режиме кода, позволяющие LLM писать и выполнять TypeScript в защищенном окружении для управления инструментами.
- Инструменты разработчика и каналы наблюдения для анализа сообщений и потоков данных.
- Клиенты, адаптированные для различных фреймворков, таких как React, Vue, Svelte и другие.
Установка
Установи основной пакет и пакеты провайдеров/фреймворков, необходимые для твоего приложения:
pnpm add @tanstack/ai @tanstack/ai-openai
Для UI чата на React:
pnpm add @tanstack/ai @tanstack/ai-client @tanstack/ai-react @tanstack/ai-openai
Streaming Chat
Пример использования:
import { chat, toServerSentEventsResponse } from '@tanstack/ai'
import { openaiText } from '@tanstack/ai-openai'
export async function POST(request: Request) {
const body = await request.json()
const stream = chat({
adapter: openaiText('gpt-5.2'),
messages: body.messages,
})
return toServerSentEventsResponse(stream)
}
Типобезопасные инструменты
Пример определения инструмента:
import { toolDefinition } from '@tanstack/ai'
import { z } from 'zod'
const getProducts = toolDefinition({
name: 'getProducts',
description: 'Поиск по каталогу товаров',
inputSchema: z.object({ query: z.string() }),
outputSchema: z.array(
z.object({
id: z.string(),
name: z.string(),
}),
),
}).server(async ({ query }) => {
return db.products.search(query)
})
Структурированные выходные данные
Используй outputSchema для получения типизированных объектов:
import { chat } from '@tanstack/ai'
import { openaiText } from '@tanstack/ai-openai'
import { z } from 'zod'
const Person = z.object({
name: z.string(),
age: z.number(),
})
const person = await chat({
adapter: openaiText('gpt-5.2'),
messages: [{ role: 'user', content: 'Ада Лавлейс, 36' }],
outputSchema: Person,
})
Адаптеры и фреймворки
Официальные адаптеры могут включать поддержку различных AI-сервисов, таких как OpenAI, Anthropic, Google и других.
Ты можешь интегрировать разные фреймворки через специальные пакеты для React, Vue, Solid и других.
Как участвовать
- Читай документацию.
- Участвуй в обсуждениях на GitHub.
- Общайся с сообществом на Discord.
- Смотри инструкции по участию.
- Стань спонсором.
Открыть на GitHub: TanStack/ai →
RepoRadar