@aihubmix/ai-sdk-provider
Version:
<div align="center"> <a href="README.md">🇺🇸 English</a> | <a href="README.zh.md">🇨🇳 中文</a> | <a href="README.ja.md">🇯🇵 日本語</a> </div>
308 lines (237 loc) • 7.08 kB
Markdown
# AI SDK - Aihubmix Provider
<div align="center">
<a href="README.md">🇺🇸 English</a> |
<a href="README.zh.md">🇨🇳 中文</a> |
<a href="README.ja.md">🇯🇵 日本語</a>
</div>
> **🎉 10% 折扣!**
已内置app-code,使用此方式请求所有模型可享受 10% 折扣。
**[Aihubmix 官方网站](https://aihubmix.com/)** | **[模型广场](https://aihubmix.com/models)**
**[Aihubmix provider](https://sdk.vercel.ai/providers/community-providers/aihubmix)** 适用于 [AI SDK](https://ai-sdk.dev/docs)
一个网关,无限模型;一站式请求:OpenAI、Claude、Gemini、DeepSeek、Qwen 以及超过 500 个 AI 模型。
## 安装 AI SDK v6 版本
```bash
npm i @aihubmix/ai-sdk-provider
```
### (旧版)安装 AI SDK v5 版本
```bash
npm i @aihubmix/ai-sdk-provider@0.0.6
```
## 支持的功能
Aihubmix provider 支持以下 AI 功能:
- **文本生成**:使用各种模型进行聊天完成
- **流式文本**:实时文本流式传输
- **图像生成**:从文本提示创建图像
- **嵌入**:单个和批量文本嵌入
- **对象生成**:使用模式的结构化数据生成
- **流式对象**:实时结构化数据流式传输
- **语音合成**:文本转语音转换
- **转录**:语音转文本转换
- **工具**:网络搜索和其他工具
## Provider 实例
您可以从 `@aihubmix/ai-sdk-provider` 导入默认的 provider 实例 `aihubmix`:
```ts
import { aihubmix } from '@aihubmix/ai-sdk-provider';
```
## 配置
将您的 Aihubmix API 密钥设置为环境变量:
```bash
export AIHUBMIX_API_KEY="your-api-key-here"
```
或直接传递给 provider:
```ts
import { createAihubmix } from '@aihubmix/ai-sdk-provider';
const aihubmix = createAihubmix({
apiKey: 'your-api-key-here',
});
```
## 使用
首先,导入必要的函数:
```ts
import { createAihubmix } from '@aihubmix/ai-sdk-provider';
import {
generateText,
streamText,
experimental_generateImage as generateImage,
embed,
embedMany,
generateObject,
streamObject,
experimental_generateSpeech as generateSpeech,
experimental_transcribe as transcribe
} from 'ai';
import { z } from 'zod';
```
> **注意**:`generateImage`、`generateSpeech` 和 `transcribe` 等 API 在 AI SDK v6 中仍为实验性功能。
### 生成文本
```ts
import { aihubmix } from '@aihubmix/ai-sdk-provider';
import { generateText } from 'ai';
const { text } = await generateText({
model: aihubmix('o4-mini'),
prompt: '为4个人写一个素食千层面食谱。',
});
```
### Claude 模型
```ts
import { aihubmix } from '@aihubmix/ai-sdk-provider';
import { generateText } from 'ai';
const { text } = await generateText({
model: aihubmix('claude-3-7-sonnet-20250219'),
prompt: '用简单的术语解释量子计算。',
});
```
### Gemini 模型
```ts
import { aihubmix } from '@aihubmix/ai-sdk-provider';
import { generateText } from 'ai';
const { text } = await generateText({
model: aihubmix('gemini-2.5-flash'),
prompt: '创建一个Python脚本来对数字列表进行排序。',
});
```
### 图像生成
```ts
import { aihubmix } from '@aihubmix/ai-sdk-provider';
import { generateImage } from 'ai';
const { image } = await generateImage({
model: aihubmix.image('gpt-image-1'),
prompt: '山间美丽的日落',
});
```
### 嵌入
```ts
import { aihubmix } from '@aihubmix/ai-sdk-provider';
import { embed } from 'ai';
const { embedding } = await embed({
model: aihubmix.embedding('text-embedding-ada-002'),
value: '你好,世界!',
});
```
### 转录
```ts
import { aihubmix } from '@aihubmix/ai-sdk-provider';
import { transcribe } from 'ai';
const { text } = await transcribe({
model: aihubmix.transcription('whisper-1'),
audio: audioFile,
});
```
### 流式文本
```ts
import { aihubmix } from '@aihubmix/ai-sdk-provider';
import { streamText } from 'ai';
const result = streamText({
model: aihubmix('gpt-3.5-turbo'),
prompt: '写一个关于机器人学习绘画的短故事。',
maxOutputTokens: 256,
temperature: 0.3,
maxRetries: 3,
});
let fullText = '';
for await (const textPart of result.textStream) {
fullText += textPart;
process.stdout.write(textPart);
}
console.log('\n使用情况:', await result.usage);
console.log('完成原因:', await result.finishReason);
```
### 生成对象
```ts
import { aihubmix } from '@aihubmix/ai-sdk-provider';
import { generateObject } from 'ai';
import { z } from 'zod';
const result = await generateObject({
model: aihubmix('gpt-4o-mini'),
schema: z.object({
recipe: z.object({
name: z.string(),
ingredients: z.array(
z.object({
name: z.string(),
amount: z.string(),
}),
),
steps: z.array(z.string()),
}),
}),
prompt: '生成一个千层面食谱。',
});
console.log(JSON.stringify(result.object.recipe, null, 2));
console.log('Token使用情况:', result.usage);
console.log('完成原因:', result.finishReason);
```
### 流式对象
```ts
import { aihubmix } from '@aihubmix/ai-sdk-provider';
import { streamObject } from 'ai';
import { z } from 'zod';
const result = await streamObject({
model: aihubmix('gpt-4o-mini'),
schema: z.object({
recipe: z.object({
name: z.string(),
ingredients: z.array(
z.object({
name: z.string(),
amount: z.string(),
}),
),
steps: z.array(z.string()),
}),
}),
prompt: '生成一个千层面食谱。',
});
for await (const objectPart of result.partialObjectStream) {
console.log(objectPart);
}
console.log('Token使用情况:', result.usage);
console.log('最终对象:', result.object);
```
### 批量嵌入
```ts
import { aihubmix } from '@aihubmix/ai-sdk-provider';
import { embedMany } from 'ai';
const { embeddings, usage } = await embedMany({
model: aihubmix.embedding('text-embedding-3-small'),
values: [
'海滩上的晴天',
'城市里的雨天下午',
'山间的雪夜',
],
});
console.log('嵌入向量:', embeddings);
console.log('使用情况:', usage);
```
### 语音合成
```ts
import { aihubmix } from '@aihubmix/ai-sdk-provider';
import { generateSpeech } from 'ai';
const { audio } = await generateSpeech({
model: aihubmix.speech('tts-1'),
text: '你好,这是语音合成的测试。',
});
// 保存音频文件
await saveAudioFile(audio);
console.log('音频生成成功:', audio);
```
### 工具
Aihubmix provider 支持各种工具,包括网络搜索:
```ts
import { aihubmix } from '@aihubmix/ai-sdk-provider';
import { generateText } from 'ai';
const { text } = await generateText({
model: aihubmix('gpt-4'),
prompt: 'AI的最新发展是什么?',
tools: {
webSearchPreview: aihubmix.tools.webSearchPreview({
searchContextSize: 'high',
}),
},
});
```
## 附加资源
- [Aihubmix Provider 仓库](https://github.com/AIhubmix/ai-sdk-provider)
- [Aihubmix 文档](https://docs.aihubmix.com/en)
- [Aihubmix 控制台](https://aihubmix.com)
- [Aihubmix 商务合作](mailto:business@aihubmix.com)