
Product
Socket for Asana Is Now Available
Create and manage Asana tasks directly from Socket alerts, with manual task creation, automated ticketing rules, and two-way sync.
@guolei1994/fast-ai
Advanced tools
轻量、同构(Node.js 与浏览器)的 AI 工具库,提供 OpenAI 风格的对话与函数调用(Tools / Function Calling)能力,默认兼容 OpenAI/OpenAI 风格接口。
chat/completions 语义,默认基于 https://api.openai.com/v1zod 定义参数,自动转换为 JSON SchemacreateOpenAI、generateText、createTool 等实用方法请同时安装 peer dependencies:zod 与 zod-to-json-schema。
# npm
yarn add @guolei1994/fast-ai zod zod-to-json-schema
# 或者
npm i @guolei1994/fast-ai zod zod-to-json-schema
# 或者
pnpm add @guolei1994/fast-ai zod zod-to-json-schema
Node.js 18+(或支持 fetch 的运行时)推荐。
import { createOpenAI, generateText } from '@guolei1994/fast-ai';
// 你可以使用 OpenAI 的 API Key,或兼容的 OpenAI 风格服务
const client = createOpenAI({
// 可选:自定义 baseURL。默认 https://api.openai.com/v1
// baseURL: 'https://api.openai.com/v1',
apiKey: process.env.OPENAI_API_KEY!,
});
async function main() {
const text = await generateText({
client,
model: 'Qwen/Qwen2.5-7B-Instruct', // 具体模型名称按服务商实际为准
messages: [
{ role: 'system', content: 'You are a helpful assistant.' },
{ role: 'user', content: '用一句话解释什么是同构库。' },
],
});
console.log(text);
}
main();
使用 zod 定义工具的参数,generateText 会在模型触发工具调用时自动执行并把结果回传给模型,直到返回自然语言回复。
import { z } from 'zod';
import { createOpenAI, generateText, createTool } from '@guolei1994/fast-ai';
const weatherTool = createTool({
name: 'get_weather',
description: '查询某城市当前天气',
parameters: z.object({ city: z.string() }),
async execute({ city }) {
// 这里用真实 API 替换即可
return `${city} 晴,28℃`;
},
});
const client = createOpenAI({ apiKey: process.env.OPENAI_API_KEY! });
const text = await generateText({
client,
model: 'Qwen/Qwen2.5-7B-Instruct',
messages: [
{ role: 'user', content: '今天上海天气怎么样?' },
],
tools: [weatherTool],
onToolCall: (name) => console.log('调用工具:', name),
});
console.log(text);
本包提供 IIFE 版本:dist/fast-ai.global.js 与 dist/fast-ai.global.min.js,全局变量名为 FastAI。
如使用全局构建,需在其前以全局方式引入 zod 与 zod-to-json-schema(不同 CDN 的 UMD/全局构建入口可能不同,请参考各库发布说明):
<!-- 示例(路径仅供参考,请以实际 CDN 路径为准) -->
<script src="https://cdn.jsdelivr.net/npm/zod@3/dist/index.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/zod-to-json-schema@3/dist/umd/index.umd.js"></script>
<script src="https://unpkg.com/@guolei1994/fast-ai/dist/fast-ai.global.min.js"></script>
<script>
const { createOpenAI, generateText, createTool } = window.FastAI;
const client = createOpenAI({ apiKey: 'YOUR_API_KEY' });
generateText({
client,
model: 'Qwen/Qwen2.5-7B-Instruct',
messages: [{ role: 'user', content: '你好' }],
}).then((text) => {
document.body.innerText = text;
});
</script>
createOpenAI(options)
options.baseURL?: string 可选,默认 https://api.openai.com/v1options.apiKey?: string 可选(若不传,将从环境变量 OPENAI_API_KEY 读取)OpenAIClient,可用于 generateTextgenerateText(options)
{ client: OpenAIClient, model: string, messages: ChatMessage[], tools?, onToolCall? }{ model: ChatModelRef, messages: ChatMessage[], tools?, onToolCall? }(传入由 createOpenAI 构造的 ChatModelRef)Promise<string>(直接返回文本)tool_callscreateTool({ name, description?, parameters, execute })
parameters 使用 zod schema 定义;内部将自动用 zod-to-json-schema 转换为 JSON Schemaexecute 可返回字符串或 Promise<string>其他导出:
detectEnvironment(): 'node' | 'browser'hello(name?: string): string类型与导出可参见源码:src/index.ts、src/fastai.ts。
# 清理构建产物
npm run clean
# 构建(tsup + rollup 全量构建)
npm run build
# 本地开发(watch)
npm run dev
# 运行测试(vitest)
npm test
# Lint
yarn lint
dist/dist/fast-ai.global.js、dist/fast-ai.global.min.jsv0.3.0)后推送到远端,会触发 GitHub Actions,自动构建并发布到 npm。package.json 中的 versiongit add -A
git commit -m "chore(release): 0.3.0"
git tag v0.3.0
git push && git push --tags
npm publish(需仓库已配置发布用的 npm token)。MIT
FAQs
Isomorphic AI utilities for Node.js and browsers.
We found that @guolei1994/fast-ai demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.

Product
Create and manage Asana tasks directly from Socket alerts, with manual task creation, automated ticketing rules, and two-way sync.

Security News
Open VSX has removed three extension IDs from its malicious-extension list as the legitimate publishers they impersonated move to claim the names for themselves.

Product
Socket’s PHP and Composer support is now in Beta for all customers, with PHP reachability analysis generally available.