> For the complete documentation index, see [llms.txt](https://docs.tensorx.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.tensorx.ai/developer-sdks/vercel-ai-sdk.md).

# ▲ Vercel AI SDK

The [Vercel AI SDK](https://sdk.vercel.ai/) is a TypeScript toolkit for building AI-powered applications. Connect it to TensorX using the OpenAI-compatible provider.

## Prerequisites

* Node.js 18+
* TensorX API key from [app.tensorx.ai](https://app.tensorx.ai)

## Installation

```bash
npm install ai @ai-sdk/openai-compatible
# or
pnpm add ai @ai-sdk/openai-compatible
# or
yarn add ai @ai-sdk/openai-compatible
```

## Configuration

### Create Provider Instance

```typescript
import { createOpenAICompatible } from '@ai-sdk/openai-compatible';

const tensorx = createOpenAICompatible({
  name: 'tensorx',
  apiKey: process.env.TENSORX_API_KEY,
  baseURL: 'https://api.tensorx.ai/v1',
});
```

### Environment Variables

Create a `.env.local` file:

```env
TENSORX_API_KEY=your-tensorx-api-key
```

## Usage Examples

### Text Generation

```typescript
import { generateText } from 'ai';
import { createOpenAICompatible } from '@ai-sdk/openai-compatible';

const tensorx = createOpenAICompatible({
  name: 'tensorx',
  apiKey: process.env.TENSORX_API_KEY,
  baseURL: 'https://api.tensorx.ai/v1',
});

const { text } = await generateText({
  model: tensorx('claude-sonnet-4-20250514'),
  prompt: 'Write a haiku about programming.',
});

console.log(text);
```

### Streaming Text

```typescript
import { streamText } from 'ai';
import { createOpenAICompatible } from '@ai-sdk/openai-compatible';

const tensorx = createOpenAICompatible({
  name: 'tensorx',
  apiKey: process.env.TENSORX_API_KEY,
  baseURL: 'https://api.tensorx.ai/v1',
});

const { textStream } = await streamText({
  model: tensorx('gpt-4o'),
  prompt: 'Explain the theory of relativity.',
});

for await (const chunk of textStream) {
  process.stdout.write(chunk);
}
```

### Chat Completions

```typescript
import { generateText } from 'ai';
import { createOpenAICompatible } from '@ai-sdk/openai-compatible';

const tensorx = createOpenAICompatible({
  name: 'tensorx',
  apiKey: process.env.TENSORX_API_KEY,
  baseURL: 'https://api.tensorx.ai/v1',
});

const { text } = await generateText({
  model: tensorx('claude-sonnet-4-20250514'),
  messages: [
    { role: 'system', content: 'You are a helpful coding assistant.' },
    { role: 'user', content: 'How do I create a REST API in Node.js?' },
  ],
});

console.log(text);
```

### Structured Output

```typescript
import { generateObject } from 'ai';
import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
import { z } from 'zod';

const tensorx = createOpenAICompatible({
  name: 'tensorx',
  apiKey: process.env.TENSORX_API_KEY,
  baseURL: 'https://api.tensorx.ai/v1',
});

const { object } = await generateObject({
  model: tensorx('gpt-4o'),
  schema: z.object({
    recipe: z.object({
      name: z.string(),
      ingredients: z.array(z.string()),
      steps: z.array(z.string()),
    }),
  }),
  prompt: 'Generate a recipe for chocolate chip cookies.',
});

console.log(object.recipe);
```

## Next.js Integration

### API Route (App Router)

```typescript
// app/api/chat/route.ts
import { streamText } from 'ai';
import { createOpenAICompatible } from '@ai-sdk/openai-compatible';

const tensorx = createOpenAICompatible({
  name: 'tensorx',
  apiKey: process.env.TENSORX_API_KEY,
  baseURL: 'https://api.tensorx.ai/v1',
});

export async function POST(req: Request) {
  const { messages } = await req.json();

  const result = await streamText({
    model: tensorx('claude-sonnet-4-20250514'),
    messages,
  });

  return result.toDataStreamResponse();
}
```

### React Component

```typescript
// components/Chat.tsx
'use client';

import { useChat } from 'ai/react';

export default function Chat() {
  const { messages, input, handleInputChange, handleSubmit } = useChat({
    api: '/api/chat',
  });

  return (
    <div>
      {messages.map((m) => (
        <div key={m.id}>
          <strong>{m.role}:</strong> {m.content}
        </div>
      ))}
      
      <form onSubmit={handleSubmit}>
        <input
          value={input}
          onChange={handleInputChange}
          placeholder="Say something..."
        />
        <button type="submit">Send</button>
      </form>
    </div>
  );
}
```

## Tool Calling

```typescript
import { generateText, tool } from 'ai';
import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
import { z } from 'zod';

const tensorx = createOpenAICompatible({
  name: 'tensorx',
  apiKey: process.env.TENSORX_API_KEY,
  baseURL: 'https://api.tensorx.ai/v1',
});

const result = await generateText({
  model: tensorx('gpt-4o'),
  tools: {
    weather: tool({
      description: 'Get the weather in a location',
      parameters: z.object({
        location: z.string().describe('The location to get weather for'),
      }),
      execute: async ({ location }) => {
        // Implement weather lookup
        return { temperature: 72, condition: 'sunny' };
      },
    }),
  },
  prompt: 'What is the weather in San Francisco?',
});

console.log(result);
```

## Available Models

See [TensorX Models](/api-reference/models.md) for all available models.

| Model                        | Best For                       |
| ---------------------------- | ------------------------------ |
| `claude-sonnet-4-20250514`   | Complex reasoning, coding      |
| `claude-3-5-sonnet-20241022` | General chat, analysis         |
| `gpt-4o`                     | Multi-modal, tool calling      |
| `gpt-4o-mini`                | Fast responses, cost-effective |

## Troubleshooting

### API connection errors

Verify your configuration:

```typescript
const tensorx = createOpenAICompatible({
  name: 'tensorx',
  apiKey: process.env.TENSORX_API_KEY,  // Must be set
  baseURL: 'https://api.tensorx.ai/v1',  // Include /v1
});
```

### Streaming not working

Ensure you're using `streamText` instead of `generateText` and returning `toDataStreamResponse()`.

## Resources

* [Vercel AI SDK Documentation](https://sdk.vercel.ai/)
* [Vercel AI SDK GitHub](https://github.com/vercel/ai)
* [TensorX API Reference](/api-reference/overview.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.tensorx.ai/developer-sdks/vercel-ai-sdk.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
