@ezijing/ai-core
v2.0.0
Published
Core AI SDK for Tongyi Qianwen, DeepSeek, and Silicon Flow APIs
Readme
@ezijing/ai-core
@ezijing/ai-core 提供按模型路由的多 provider client。
安装
npm install @ezijing/ai-core创建 Provider
import {
createDeepSeekProvider,
createQianfanProvider,
createVolcengineProvider,
} from '@ezijing/ai-core'
const deepseek = createDeepSeekProvider({ apiKey: 'your-deepseek-key' })
const volcengine = createVolcengineProvider({ apiKey: 'your-volcengine-key' })
const qianfan = createQianfanProvider({ apiKey: 'your-qianfan-key' })创建 Client
import { createClient } from '@ezijing/ai-core'
const client = createClient({
providers: {
deepseek,
volcengine,
qianfan,
},
})获取模型列表
const models = client.getModels()模型结构:
type AIModel = {
label: string
provider: string
model: string
value: string
capabilities: ('text' | 'image' | 'video')[]
disabled?: boolean
}其中 disabled: true 的模型不会出现在 client.getModels() 里。
示例:
[
{
label: 'DeepSeek-V3',
provider: 'deepseek',
model: 'deepseek-chat',
value: 'deepseek:deepseek-chat',
capabilities: ['text'],
},
]文本生成
const response = await client.generateText({
model: 'deepseek:deepseek-chat',
prompt: '你好,请介绍一下自己',
})
console.log(response.content)
console.log(response.reasoning)
console.log(response.references)流式文本
const result = client.streamText({
model: 'volcengine:deepseek-v3-2-251201',
prompt: '请写一个故事',
})
for await (const chunk of result.textStream) {
console.log(chunk)
}
const finalText = await result.text
const response = await result.response消费完整流:
for await (const chunk of result.fullStream) {
console.log(chunk.content)
console.log(chunk.contentDelta)
console.log(chunk.reasoning)
}图片生成
const image = await client.generateImage({
model: 'volcengine:doubao-seedream-4-5-251128',
prompt: '一只可爱的小猫',
})
console.log(image.images)视频生成
const result = client.streamVideo({
model: 'volcengine:doubao-seedance-1-5-pro-251215',
prompt: '一只可爱的小猫在花园里玩耍',
})
for await (const update of result.statusStream) {
console.log(update.status)
}
const video = await result.response
console.log(video.url)
console.log(video.duration)
console.log(video.ratio)
console.log(video.resolution)取消视频任务:
result.cancel()RequestOptions
所有方法都支持统一的第二个参数:
type RequestOptions = AxiosRequestConfig最常用的是 signal:
const controller = new AbortController()
const result = client.streamText(
{
model: 'deepseek:deepseek-chat',
prompt: '你好',
},
{
signal: controller.signal,
},
)
controller.abort()路由规则
- 使用
provider:model作为唯一模型值 client只负责注册 provider 和按模型路由- provider 自己负责创建和请求适配
注意事项
- 浏览器直连时,provider key 仍然会暴露给最终用户
