Skip to content

WIP: Vercel AI integration #14

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Jul 30, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
123 changes: 123 additions & 0 deletions integrations/vercel_ai.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
---
title: " Vercel AI"
description: "Integrate ScrapeGraphAI into Vercel AI"
---

## Overview

[Vercel AI sdk](https://ai-sdk.dev/) is a very populate javascript/typescript framework to interact with various LLMs providers. This page shows how to integrate it with ScrapeGraph

<Card
title="Official Vercel AI documentation"
icon="book"
href="https://ai-sdk.dev/"
>
View the integration on LlamaHub
</Card>

## Installation

Follow out [javascript sdk installation steps](/sdks/javascript) using your favourite package manager:

```bash
# Using npm
npm i scrapegraph-js

# Using pnpm
pnpm i scrapegraph-js

# Using yarn
yarn add scrapegraph-js

# Using bun
bun add scrapegraph-js
```

Then, install [vercel ai](https://ai-sdk.dev/docs/getting-started) with their [openai provider](https://ai-sdk.dev/providers/ai-sdk-providers/openai)

```bash
# Using npm
npm i ai @ai-sdk/openai

# Using pnpm
pnpm i ai @ai-sdk/openai

# Using yarn
yarn add ai @ai-sdk/openai

# Using bun
bun add ai @ai-sdk/openai
```

## Usage

ScrapeGraph sdk can be used like any other tools, see [vercel ai tool calling doc](https://ai-sdk.dev/docs/ai-sdk-core/tools-and-tool-calling)

```ts
import { z } from "zod";
import { generateText, tool } from "ai";
import { openai } from "@ai-sdk/openai";
import { smartScraper } from "scrapegraph-js";

const apiKey = process.env.SGAI_APIKEY;

const ArticleSchema = z.object({
title: z.string().describe("The article title"),
author: z.string().describe("The author's name"),
publishDate: z.string().describe("Article publication date"),
content: z.string().describe("Main article content"),
category: z.string().describe("Article category"),
});

const ArticlesArraySchema = z
.array(ArticleSchema)
.describe("Array of articles");

const result = await generateText({
model: openai("gpt-4.1-mini"),
tools: {
scrape: tool({
description: "Get articles information for a given url.",
parameters: z.object({
url: z.string().describe("The exact url."),
}),
execute: async ({ url }) => {
const response = await smartScraper(
apiKey,
url,
"Extract the article information",
ArticlesArraySchema
);
const result: z.infer<typeof ArticleSchema> = response;
return result;
},
}),
},
prompt: "Can you find me the articles on https://scrapegraphai.com/blog?",
});

console.log(result);
```

**TODO ADD THE LOGS**

## Support

Need help with the integration?

<CardGroup cols={2}>
<Card
title="GitHub Issues"
icon="github"
href="https://github.com/ScrapeGraphAI/llama-index-tools-scrapegraph/issues"
>
Report bugs and request features
</Card>
<Card
title="Discord Community"
icon="discord"
href="https://discord.gg/uJN7TYcpNa"
>
Get help from our community
</Card>
</CardGroup>
38 changes: 10 additions & 28 deletions mint.json
Original file line number Diff line number Diff line change
Expand Up @@ -89,25 +89,17 @@
"services/pagination",
{
"group": "Additional Parameters",
"pages": [
"services/additional-parameters/headers"
]
"pages": ["services/additional-parameters/headers"]
},
{
"group": "Browser Extensions",
"pages": [
"services/extensions/firefox",
"services/extensions/chrome"
]
"pages": ["services/extensions/firefox", "services/extensions/chrome"]
}
]
},
{
"group": "Official SDKs",
"pages": [
"sdks/python",
"sdks/javascript"
]
"pages": ["sdks/python", "sdks/javascript"]
},
{
"group": "Integrations",
Expand All @@ -116,14 +108,13 @@
"integrations/llamaindex",
"integrations/crewai",
"integrations/agno",
"integrations/langflow"
"integrations/langflow",
"integrations/vercel_ai"
]
},
{
"group": "Cookbook",
"pages": [
"cookbook/introduction"
]
"pages": ["cookbook/introduction"]
},
{
"group": "Examples",
Expand All @@ -140,10 +131,7 @@
},
{
"group": "API Documentation",
"pages": [
"api-reference/introduction",
"api-reference/errors"
]
"pages": ["api-reference/introduction", "api-reference/errors"]
},
{
"group": "SmartScraper",
Expand All @@ -152,7 +140,7 @@
"api-reference/endpoint/smartscraper/get-status"
]
},

{
"group": "SearchScraper",
"pages": [
Expand Down Expand Up @@ -184,18 +172,12 @@
},
{
"group": "Contribute",
"pages": [
"contribute/opensource",
"contribute/feedback"
]
"pages": ["contribute/opensource", "contribute/feedback"]
},
{
"group": "Resources",
"icon": "puzzle-piece",
"pages": [
"resources/badge",
"resources/mastering-prompts"
]
"pages": ["resources/badge", "resources/mastering-prompts"]
}
],
"footerSocials": {
Expand Down
Loading