Sorry, the diff of this file is not supported yet
+27
| # AI SQL | ||
| Tools for Vercel AI SDK that lets your AI query PostgreSQL, MySQL or SQLite databases in one line. | ||
| ## Usage | ||
| ```ts | ||
| import * as ai from "ai"; | ||
| import { createOpenAI } from "@ai-sdk/openai"; | ||
| import { postgres, sqlTool } from "ai-sql"; // or mysql, sqlite | ||
| const openai = createOpenAI({ | ||
| compatibility: "strict", | ||
| apiKey: process.env.OPENAI_API_KEY!, | ||
| }); | ||
| const model = openai("gpt-4-turbo"); | ||
| const { text } = await ai.generateText({ | ||
| model: openai("gpt-4-turbo"), | ||
| prompt: "", | ||
| tools: { | ||
| postgreSQL: await sqlTool(postgres(process.env.POSTGRES_URL!)), | ||
| }, | ||
| maxSteps: 3, | ||
| }); | ||
| ``` |
| export interface ColumnDefinition { | ||
| name: string; | ||
| type: string; | ||
| primaryKey: boolean; | ||
| } | ||
| export interface TableDefinition { | ||
| name: string; | ||
| columns: ColumnDefinition[]; | ||
| } | ||
| export interface Schema { | ||
| database: string; | ||
| tables: TableDefinition[]; | ||
| } | ||
| export interface Database { | ||
| initialize: () => Promise<void>; | ||
| describe: () => Promise<Schema>; | ||
| query: (query: string) => Promise<object[]>; | ||
| } |
+19
-7
@@ -12,16 +12,28 @@ import { postgreSQLTool } from "../../src"; | ||
| }); | ||
| const model = openai("gpt-4-turbo", { | ||
| // additional settings | ||
| }); | ||
| const { text } = await ai.generateText({ | ||
| const params = { | ||
| model: openai("gpt-4-turbo"), | ||
| maxSteps: 3, | ||
| }; | ||
| const { text: text1 } = await ai.generateText({ | ||
| ...params, | ||
| tools: { | ||
| postgreSQL: await postgreSQLTool(process.env.POSTGRES_URL!), | ||
| }, | ||
| prompt: | ||
| "Create an employees table and an hours table to track work, add some example empoyees and hours, and return all employees", | ||
| "Create an employees table and an hours table to track work, add some example empoyees and hours (about 1 month worth of entries for each employee), and return all employees", | ||
| }); | ||
| console.log("OUTPUT", text1); | ||
| const { text: text2 } = await ai.generateText({ | ||
| ...params, | ||
| tools: { | ||
| postgreSQL: await postgreSQLTool(process.env.POSTGRES_URL!), | ||
| }, | ||
| maxSteps: 3, | ||
| prompt: | ||
| "How many employees worked more than 10 hours during any week of the month?", | ||
| }); | ||
| console.log("OUTPUT", text); | ||
| console.log("OUTPUT", text2); |
+1
-1
| { | ||
| "name": "ai-sql", | ||
| "description": "Give any Vercel AI SDK project the ability to interact with PostgreSQL, SQlite or MySQL databases in one line.", | ||
| "version": "0.0.1-2", | ||
| "version": "0.0.1-3", | ||
| "main": "./dist/index.cjs", | ||
@@ -6,0 +6,0 @@ "module": "./dist/index.mjs", |
+0
-1
@@ -46,3 +46,2 @@ import { tool } from "ai"; | ||
| const result = await client.query(query.query!); | ||
| console.log(result); | ||
@@ -49,0 +48,0 @@ const res = Array.isArray(result) ? result : [result]; |
| { | ||
| "name": "example", | ||
| "version": "1.0.0", | ||
| "lockfileVersion": 3, | ||
| "requires": true, | ||
| "packages": { | ||
| "": { | ||
| "name": "example", | ||
| "version": "1.0.0", | ||
| "license": "ISC", | ||
| "dependencies": { | ||
| "@ai-sdk/openai": "^1.0.12", | ||
| "ai": "^4.0.23", | ||
| "ai-sql": "file:..", | ||
| "dotenv": "^16.4.7" | ||
| } | ||
| }, | ||
| "..": { | ||
| "version": "1.0.0", | ||
| "license": "ISC", | ||
| "dependencies": { | ||
| "ai": "^4.0.23", | ||
| "pg": "^8.13.1", | ||
| "zod": "^3.24.1" | ||
| }, | ||
| "devDependencies": { | ||
| "@types/pg": "^8.11.10" | ||
| } | ||
| }, | ||
| "node_modules/@ai-sdk/openai": { | ||
| "version": "1.0.12", | ||
| "resolved": "https://registry.npmjs.org/@ai-sdk/openai/-/openai-1.0.12.tgz", | ||
| "integrity": "sha512-w/fe7UJLbTAnSYO/o0phdVYC/Xzt/N75I6H4CRj5Zx+etbnNgTrfgFxYNxUY2kEhAeZZvuSm4xwVzWPKX741rw==", | ||
| "license": "Apache-2.0", | ||
| "dependencies": { | ||
| "@ai-sdk/provider": "1.0.3", | ||
| "@ai-sdk/provider-utils": "2.0.5" | ||
| }, | ||
| "engines": { | ||
| "node": ">=18" | ||
| }, | ||
| "peerDependencies": { | ||
| "zod": "^3.0.0" | ||
| } | ||
| }, | ||
| "node_modules/@ai-sdk/provider": { | ||
| "version": "1.0.3", | ||
| "resolved": "https://registry.npmjs.org/@ai-sdk/provider/-/provider-1.0.3.tgz", | ||
| "integrity": "sha512-WiuJEpHTrltOIzv3x2wx4gwksAHW0h6nK3SoDzjqCOJLu/2OJ1yASESTIX+f07ChFykHElVoP80Ol/fe9dw6tQ==", | ||
| "license": "Apache-2.0", | ||
| "dependencies": { | ||
| "json-schema": "^0.4.0" | ||
| }, | ||
| "engines": { | ||
| "node": ">=18" | ||
| } | ||
| }, | ||
| "node_modules/@ai-sdk/provider-utils": { | ||
| "version": "2.0.5", | ||
| "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-2.0.5.tgz", | ||
| "integrity": "sha512-2M7vLhYN0ThGjNlzow7oO/lsL+DyMxvGMIYmVQvEYaCWhDzxH5dOp78VNjJIVwHzVLMbBDigX3rJuzAs853idw==", | ||
| "license": "Apache-2.0", | ||
| "dependencies": { | ||
| "@ai-sdk/provider": "1.0.3", | ||
| "eventsource-parser": "^3.0.0", | ||
| "nanoid": "^3.3.8", | ||
| "secure-json-parse": "^2.7.0" | ||
| }, | ||
| "engines": { | ||
| "node": ">=18" | ||
| }, | ||
| "peerDependencies": { | ||
| "zod": "^3.0.0" | ||
| }, | ||
| "peerDependenciesMeta": { | ||
| "zod": { | ||
| "optional": true | ||
| } | ||
| } | ||
| }, | ||
| "node_modules/@ai-sdk/react": { | ||
| "version": "1.0.7", | ||
| "resolved": "https://registry.npmjs.org/@ai-sdk/react/-/react-1.0.7.tgz", | ||
| "integrity": "sha512-j2/of4iCNq+r2Bjx0O9vdRhn5C/02t2Esenis71YtnsoynPz74eQlJ3N0RYYPheThiJes50yHdfdVdH9ulxs1A==", | ||
| "license": "Apache-2.0", | ||
| "dependencies": { | ||
| "@ai-sdk/provider-utils": "2.0.5", | ||
| "@ai-sdk/ui-utils": "1.0.6", | ||
| "swr": "^2.2.5", | ||
| "throttleit": "2.1.0" | ||
| }, | ||
| "engines": { | ||
| "node": ">=18" | ||
| }, | ||
| "peerDependencies": { | ||
| "react": "^18 || ^19 || ^19.0.0-rc", | ||
| "zod": "^3.0.0" | ||
| }, | ||
| "peerDependenciesMeta": { | ||
| "react": { | ||
| "optional": true | ||
| }, | ||
| "zod": { | ||
| "optional": true | ||
| } | ||
| } | ||
| }, | ||
| "node_modules/@ai-sdk/ui-utils": { | ||
| "version": "1.0.6", | ||
| "resolved": "https://registry.npmjs.org/@ai-sdk/ui-utils/-/ui-utils-1.0.6.tgz", | ||
| "integrity": "sha512-ZP6Vjj+VCnSPBIAvWAdKj2olQONJ/f4aZpkVCGkzprdhv8TjHwB6CTlXFS3zypuEGy4asg84dc1dvXKooQXFvg==", | ||
| "license": "Apache-2.0", | ||
| "dependencies": { | ||
| "@ai-sdk/provider": "1.0.3", | ||
| "@ai-sdk/provider-utils": "2.0.5", | ||
| "zod-to-json-schema": "^3.23.5" | ||
| }, | ||
| "engines": { | ||
| "node": ">=18" | ||
| }, | ||
| "peerDependencies": { | ||
| "zod": "^3.0.0" | ||
| }, | ||
| "peerDependenciesMeta": { | ||
| "zod": { | ||
| "optional": true | ||
| } | ||
| } | ||
| }, | ||
| "node_modules/@opentelemetry/api": { | ||
| "version": "1.9.0", | ||
| "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", | ||
| "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", | ||
| "license": "Apache-2.0", | ||
| "engines": { | ||
| "node": ">=8.0.0" | ||
| } | ||
| }, | ||
| "node_modules/@types/diff-match-patch": { | ||
| "version": "1.0.36", | ||
| "resolved": "https://registry.npmjs.org/@types/diff-match-patch/-/diff-match-patch-1.0.36.tgz", | ||
| "integrity": "sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg==", | ||
| "license": "MIT" | ||
| }, | ||
| "node_modules/ai": { | ||
| "version": "4.0.23", | ||
| "resolved": "https://registry.npmjs.org/ai/-/ai-4.0.23.tgz", | ||
| "integrity": "sha512-eQaAZGYVCBHBblWHl+SBGfuacyy0r4Mq7ASDPK6MqshWPRSF7wpumM4v8b65cX5MrofVeZh+dnlgYGI3ydoRMA==", | ||
| "license": "Apache-2.0", | ||
| "dependencies": { | ||
| "@ai-sdk/provider": "1.0.3", | ||
| "@ai-sdk/provider-utils": "2.0.5", | ||
| "@ai-sdk/react": "1.0.7", | ||
| "@ai-sdk/ui-utils": "1.0.6", | ||
| "@opentelemetry/api": "1.9.0", | ||
| "jsondiffpatch": "0.6.0", | ||
| "zod-to-json-schema": "^3.23.5" | ||
| }, | ||
| "engines": { | ||
| "node": ">=18" | ||
| }, | ||
| "peerDependencies": { | ||
| "react": "^18 || ^19 || ^19.0.0-rc", | ||
| "zod": "^3.0.0" | ||
| }, | ||
| "peerDependenciesMeta": { | ||
| "react": { | ||
| "optional": true | ||
| }, | ||
| "zod": { | ||
| "optional": true | ||
| } | ||
| } | ||
| }, | ||
| "node_modules/ai-sql": { | ||
| "resolved": "..", | ||
| "link": true | ||
| }, | ||
| "node_modules/chalk": { | ||
| "version": "5.4.1", | ||
| "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", | ||
| "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", | ||
| "license": "MIT", | ||
| "engines": { | ||
| "node": "^12.17.0 || ^14.13 || >=16.0.0" | ||
| }, | ||
| "funding": { | ||
| "url": "https://github.com/chalk/chalk?sponsor=1" | ||
| } | ||
| }, | ||
| "node_modules/dequal": { | ||
| "version": "2.0.3", | ||
| "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", | ||
| "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", | ||
| "license": "MIT", | ||
| "engines": { | ||
| "node": ">=6" | ||
| } | ||
| }, | ||
| "node_modules/diff-match-patch": { | ||
| "version": "1.0.5", | ||
| "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz", | ||
| "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==", | ||
| "license": "Apache-2.0" | ||
| }, | ||
| "node_modules/dotenv": { | ||
| "version": "16.4.7", | ||
| "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", | ||
| "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", | ||
| "license": "BSD-2-Clause", | ||
| "engines": { | ||
| "node": ">=12" | ||
| }, | ||
| "funding": { | ||
| "url": "https://dotenvx.com" | ||
| } | ||
| }, | ||
| "node_modules/eventsource-parser": { | ||
| "version": "3.0.0", | ||
| "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.0.tgz", | ||
| "integrity": "sha512-T1C0XCUimhxVQzW4zFipdx0SficT651NnkR0ZSH3yQwh+mFMdLfgjABVi4YtMTtaL4s168593DaoaRLMqryavA==", | ||
| "license": "MIT", | ||
| "engines": { | ||
| "node": ">=18.0.0" | ||
| } | ||
| }, | ||
| "node_modules/json-schema": { | ||
| "version": "0.4.0", | ||
| "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", | ||
| "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", | ||
| "license": "(AFL-2.1 OR BSD-3-Clause)" | ||
| }, | ||
| "node_modules/jsondiffpatch": { | ||
| "version": "0.6.0", | ||
| "resolved": "https://registry.npmjs.org/jsondiffpatch/-/jsondiffpatch-0.6.0.tgz", | ||
| "integrity": "sha512-3QItJOXp2AP1uv7waBkao5nCvhEv+QmJAd38Ybq7wNI74Q+BBmnLn4EDKz6yI9xGAIQoUF87qHt+kc1IVxB4zQ==", | ||
| "license": "MIT", | ||
| "dependencies": { | ||
| "@types/diff-match-patch": "^1.0.36", | ||
| "chalk": "^5.3.0", | ||
| "diff-match-patch": "^1.0.5" | ||
| }, | ||
| "bin": { | ||
| "jsondiffpatch": "bin/jsondiffpatch.js" | ||
| }, | ||
| "engines": { | ||
| "node": "^18.0.0 || >=20.0.0" | ||
| } | ||
| }, | ||
| "node_modules/nanoid": { | ||
| "version": "3.3.8", | ||
| "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", | ||
| "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", | ||
| "funding": [ | ||
| { | ||
| "type": "github", | ||
| "url": "https://github.com/sponsors/ai" | ||
| } | ||
| ], | ||
| "license": "MIT", | ||
| "bin": { | ||
| "nanoid": "bin/nanoid.cjs" | ||
| }, | ||
| "engines": { | ||
| "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" | ||
| } | ||
| }, | ||
| "node_modules/react": { | ||
| "version": "19.0.0", | ||
| "resolved": "https://registry.npmjs.org/react/-/react-19.0.0.tgz", | ||
| "integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==", | ||
| "license": "MIT", | ||
| "peer": true, | ||
| "engines": { | ||
| "node": ">=0.10.0" | ||
| } | ||
| }, | ||
| "node_modules/secure-json-parse": { | ||
| "version": "2.7.0", | ||
| "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", | ||
| "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==", | ||
| "license": "BSD-3-Clause" | ||
| }, | ||
| "node_modules/swr": { | ||
| "version": "2.3.0", | ||
| "resolved": "https://registry.npmjs.org/swr/-/swr-2.3.0.tgz", | ||
| "integrity": "sha512-NyZ76wA4yElZWBHzSgEJc28a0u6QZvhb6w0azeL2k7+Q1gAzVK+IqQYXhVOC/mzi+HZIozrZvBVeSeOZNR2bqA==", | ||
| "license": "MIT", | ||
| "dependencies": { | ||
| "dequal": "^2.0.3", | ||
| "use-sync-external-store": "^1.4.0" | ||
| }, | ||
| "peerDependencies": { | ||
| "react": "^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" | ||
| } | ||
| }, | ||
| "node_modules/throttleit": { | ||
| "version": "2.1.0", | ||
| "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-2.1.0.tgz", | ||
| "integrity": "sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw==", | ||
| "license": "MIT", | ||
| "engines": { | ||
| "node": ">=18" | ||
| }, | ||
| "funding": { | ||
| "url": "https://github.com/sponsors/sindresorhus" | ||
| } | ||
| }, | ||
| "node_modules/use-sync-external-store": { | ||
| "version": "1.4.0", | ||
| "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz", | ||
| "integrity": "sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==", | ||
| "license": "MIT", | ||
| "peerDependencies": { | ||
| "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" | ||
| } | ||
| }, | ||
| "node_modules/zod": { | ||
| "version": "3.24.1", | ||
| "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.1.tgz", | ||
| "integrity": "sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==", | ||
| "license": "MIT", | ||
| "peer": true, | ||
| "funding": { | ||
| "url": "https://github.com/sponsors/colinhacks" | ||
| } | ||
| }, | ||
| "node_modules/zod-to-json-schema": { | ||
| "version": "3.24.1", | ||
| "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.1.tgz", | ||
| "integrity": "sha512-3h08nf3Vw3Wl3PK+q3ow/lIil81IT2Oa7YpQyUUDsEWbXveMesdfK1xBd2RhCkynwZndAxixji/7SYJJowr62w==", | ||
| "license": "ISC", | ||
| "peerDependencies": { | ||
| "zod": "^3.24.1" | ||
| } | ||
| } | ||
| } | ||
| } |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
No README
QualityPackage does not have a README. This may indicate a failed publish or a low quality package.
Found 1 instance in 1 package
16214
0.19%8
33.33%1
-50%28
Infinity%97
-76.28%4
33.33%1
Infinity%