掌握 AI 开发必备的 9 个开源 JavaScript 库🧙✨
我已经使用 Python 和 JavaScript 进行开发很长一段时间了,从事 AI 和非 AI 项目。
我注意到,与人工智能开发相关的生态系统在很大程度上倾向于 Python。然而,Javascript/Typescript 比 Python 有一些明显的优势。
- 性能:JavaScript/TypeScript 由于其异步特性和非阻塞 I/O,通常在基于 Web 的应用程序中表现更好。
- 集成:更容易与 Web 技术集成,使得创建由 AI 驱动的 Web 应用程序更加简单,无需切换语言。
- 包管理:说实话:Javascript 的包管理优于 Python。
目前,AI 领域充斥着大量的 Python 库。几乎所有新库都原生支持 Python。
然而,我们知道 JS 仍然统治着 Web 开发领域,而 JS/TS 支持使得将 AI 集成到 Web 应用中变得非常容易,从而提升前端和后端的开发体验。
所以,如果你也在寻找用于开发 AI 应用的 JS 库,那就不用再找了。我整理了一份令人垂涎的开源库清单,用于构建出色的 AI 应用程序。
请随意探索他们的 GitHub 存储库,为您最喜欢的存储库做出贡献,并通过为存储库加星标来支持他们。
1. Composio 👑 - 以 10 倍速度构建可靠代理
如果您探索过这个领域,您就会知道构建可靠的 AI 代理可能非常具有挑战性,特别是当您想要自动化涉及外部应用程序(如 Discord、Slack、Calendar 等)的工作流程时。
这就是 Composio 发挥作用的地方。他们正在构建用于构建 AI 驱动应用程序的工具基础设施。
您可以将 CRM、生产力、开发、人力资源等各个业务垂直领域的 100 多种流行工具与您的 AI 代理集成,以自动化复杂的工作流程。
它们为 Javascript 提供原生支持。
您可以通过运行以下命令开始使用 Composio。
npm install composio-core openai
#yarn add composio-core openai
#pnpm add composio-core openai
定义一种方法让用户连接他们的 GitHub 帐户。
import { OpenAI } from "openai";
import { OpenAIToolSet } from "composio-core";
const toolset = new OpenAIToolSet({
apiKey: process.env.COMPOSIO_API_KEY,
});
async function setupUserConnectionIfNotExists(entityId) {
const entity = await toolset.client.getEntity(entityId);
const connection = await entity.getConnection('github');
if (!connection) {
// If this entity/user hasn't already connected, the account
const connection = await entity.initiateConnection(appName);
console.log("Log in via: ", connection.redirectUrl);
return connection.waitUntilActive(60);
}
return connection;
}
将所需的工具添加到 OpenAI SDK 并将实体名称传递给 executeAgent
函数。
async function executeAgent(entityName) {
const entity = await toolset.client.getEntity(entityName)
await setupUserConnectionIfNotExists(entity.id);
const tools = await toolset.get_actions({ actions: ["github_activity_star_repo_for_authenticated_user"] }, entity.id);
const instruction = "Star a repo ComposioHQ/composio on GitHub"
const client = new OpenAI({ apiKey: process.env.OPEN_AI_API_KEY })
const response = await client.chat.completions.create({
model: "gpt-4-turbo",
messages: [{
role: "user",
content: instruction,
}],
tools: tools,
tool_choice: "auto",
})
console.log(response.choices[0].message.tool_calls);
await toolset.handle_tool_call(response, entity.id);
}
executeGithubAgent("joey")
执行代码并让代理为您完成工作。
Composio 与 LangChain、LlamaIndex、CrewAi 等著名框架兼容。
欲了解更多信息,请访问官方 文档,欲查看更复杂的示例,请参阅存储库的 示例 部分。
2. 讲师-JS - 从法学硕士 (LLM) 中提取结构化数据
我一直觉得从法学硕士的回复中提取有用的信息是一件苦差事。但现在不再如此了。
讲师提供了一种简单而结构化的方法来提取和验证 LLM 响应。
它还原生支持 Python 和 JavaScript。对于 JavaScript,它使用 Zod 进行数据验证。
以下是您可以快速开始使用它的方法。
npm i @instructor-ai/instructor zod openai
从 LLM 回应中提取信息。
import Instructor from "@instructor-ai/instructor";
import OpenAI from "openai"
import { z } from "zod"
const oai = new OpenAI({
apiKey: process.env.OPENAI_API_KEY ?? undefined,
organization: process.env.OPENAI_ORG_ID ?? undefined
})
const client = Instructor({
client: oai,
mode: "TOOLS"
})
const UserSchema = z.object({
// Description will be used in the prompt
age: z.number().describe("The age of the user"),
name: z.string()
})
// User will be of type z.infer<typeof UserSchema>
const user = await client.chat.completions.create({
messages: [{ role: "user", content: "Jason Liu is 30 years old" }],
model: "gpt-3.5-turbo",
response_model: {
schema: UserSchema,
name: "User"
}
})
console.log(user)
// { age: 30, name: "Jason Liu" }
欲了解更多信息,请访问官方 文档 页面。
3. CopilotKit - 为 React 应用构建 AI Copilot
如果您有一个令人兴奋的项目或正在进行一个新项目并希望为其配备 AI 功能,那么 CopilotKit 就是您需要的解决方案。
它是一个现成的 Copilot,您可以将其与您的应用程序或您可以访问的任何代码(OSS)集成。
它提供文本区域、弹出窗口、侧边栏和聊天机器人等 React 组件,以增强任何具有 AI 功能的应用程序。
使用以下命令开始使用 CopilotKit。
npm i @copilotkit/react-core @copilotkit/react-ui
必须 CopilotKit
包装所有与 CopilotKit 交互的组件。您也应该先从 CopilotSidebar
(稍后切换到其他 UI 提供程序)开始。
"use client";
import { CopilotKit } from "@copilotkit/react-core";
import { CopilotSidebar } from "@copilotkit/react-ui";
import "@copilotkit/react-ui/styles.css";
export default function RootLayout({children}) {
return (
<CopilotKit publicApiKey=" the API key or self-host (see below)">
<CopilotSidebar>
{children}
</CopilotSidebar>
</CopilotKit>
);
}
您可以查看他们的 文档 以获取更多信息。
4. E2B——人工智能应用程序的代码解释
如果您正在构建需要 LLM 执行代码的 AI Web 应用程序(例如 AI 分析师和 SWE 代理),那么 E2B 的代码解释器是您的首选。
它为 LLM 执行代码提供了一个安全可靠的云环境。
它允许人工智能使用与人类相同的工具(例如 GitHub 存储库和云浏览器)长时间安全运行。
代码解释器 SDK 允许您在安全的小型虚拟机( E2B 沙盒 )中运行 AI 生成的代码,以实现 AI 代码执行。沙盒内有一个 Jupyter 服务器,您可以通过其 SDK 进行控制。
使用以下命令开始使用 E2B。
npm i @e2b/code-interpreter
执行一个程序。
import { CodeInterpreter } from '@e2b/code-interpreter'
const sandbox = await CodeInterpreter.create()
await sandbox.notebook.execCell('x = 1')
const execution = await sandbox.notebook.execCell('x+=1; x')
console.log(execution.text) // outputs 2
await sandbox.close()
有关如何使用 E2B 的更多信息,请访问其官方 文档。
5. LanceDB——面向 AI 应用的高性能向量数据库
如果没有矢量数据库,AI 应用就不完整。矢量数据库可以帮助您存储、查询和管理非结构化数据(例如文本、图像、视频和音频)的嵌入。
LanceDB 是最好的开源矢量数据库之一,具有原生 Javascript 支持。
它提供生产规模的矢量搜索、多模式支持、零拷贝、自动数据版本控制、GPU 驱动的查询等。
开始使用 LanceDB。
npm install @lancedb/lancedb
创建并查询矢量数据库。
import * as lancedb from "@lancedb/lancedb";
const db = await lancedb.connect("data/sample-lancedb");
const table = await db.createTable("vectors", [
{ id: 1, vector: [0.1, 0.2], item: "foo", price: 10 },
{ id: 2, vector: [1.1, 1.2], item: "bar", price: 50 },
], {mode: 'overwrite'});
const query = table.vectorSearch([0.1, 0.3]).limit(2);
const results = await query.toArray();
// You can also search for rows by specific criteria without involving a vector search.
const rowsByCriteria = await table.query().where("price >= 10").toArray();
您可以在此处的文档中找到有关 LanceDB 的更多信息。
6. Trigger.Dev
Trigger. Dev 是一个开源平台和 SDK,可让您创建长时间运行且不会超时的后台作业。只需编写常规异步代码并进行部署,即可避免超时。
它们还能让您可靠地调用 AI API,无超时、自动重试和追踪。您可以使用现有的 SDK。
import { task } from "@trigger.dev/sdk/v3";
// Generate an image using OpenAI Dall-E 3
export const generateContent = task({
id: "generate-content",
retry: {
maxAttempts: 3,
},
run: async ({ theme, description }: Payload) => {
const textResult = await openai.chat.completions.create({
model: "gpt-4o",
messages: generateTextPrompt(theme, description),
});
if (!textResult.choices[0]) {
throw new Error("No content, retrying…");
}
const imageResult = await openai.images.generate({
model: "dall-e-3",
prompt: generateImagePrompt(theme, description),
});
if (!imageResult.data[0]) {
throw new Error("No image, retrying…");
}
return {
text: textResult.choices[0],
image: imageResult.data[0].url,
};
},
});
7. Vercel AI SDK - 使用 Typescript 构建 AI Web 应用程序
如果我现在要构建一个全栈 AI 驱动的应用程序,我会毫不犹豫地选择 Vercel AI SDK。
它是一个工具包,旨在让开发人员使用 React、Vue、NEXT、Sveltekit 等构建 AI Web 应用程序。
Vercel AI SDK 抽象了 LLM 提供商,消除了构建聊天机器人的样板代码,并提供了交互式可视化组件以提供丰富的客户体验。
它分为三个部分,
- AI SDK Cor e:用于生成文本、结构化数据和与 LLM 的工具交互的单一 API。
- AI SDK U I:独立于框架的钩子,用于快速构建聊天和生成 UI。
- AI SDK RSC:使用 React Server Components (RSC) 流式生成 UI 的库。
首先,安装该库。
npm install ai
安装您选择的模型提供程序。
npm install @ai-sdk/openai
调用 OpenAI API。
import { generateText } from 'ai';
import { openai } from '@ai-sdk/openai'; // Ensure OPENAI_API_KEY environment variable is set
async function main() {
const { text } = await generateText({
model: openai('gpt-4-turbo'),
system: 'You are a friendly assistant!',
prompt: 'Why is the sky blue?',
});
console.log(text);
}
main();
有关 Vercel AI SDK 的更多信息,请访问其文档。
8. Julep——AI 应用的托管后端
破解具有长期记忆的人工智能应用程序至少是一项艰巨的任务。
开源人工智能平台 Julep 正在解决同样的问题。
它就像 AI 版 Firebase 或 Supabase,提供内存(用户管理)、知识(内置 RAG 和上下文管理)、工具(与 Composio 和其他工具集成)以及即将推出的任务。
他们还提供 Javascript 支持。
查看他们的 文档 以了解更多信息。
9. Gateway——单一 API 即可访问 200 多个法学硕士课程
要构建 AI 应用程序,通常需要来自不同提供商的多个 LLM。然而,LLM 提供商各自拥有自己的 SDK,这使得管理多个提供商变得困难。
Gateway 通过统一的 API 简化了对 200 多个开源和闭源模型的请求。它还支持缓存、回退、重试、超时和负载均衡等功能,已准备好投入生产,并可进行边缘部署以最大程度地降低延迟。
要在本地运行它,请在终端中运行以下命令,它将在本地系统上启动网关:
npx @portkey-ai/gateway
更多信息请参阅他们的存储库。
您是否使用或构建过其他一些很酷的 AI 工具或框架?
请在评论中让我知道:)
文章来源:https://dev.to/composiodev/9-must-know-open-source-javascript-libraries-for-mastering-ai-development-2i9m