@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>
307 lines (237 loc) • 7.96 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)**
[AI SDK](https://ai-sdk.dev/docs)用の **[Aihubmix provider](https://sdk.vercel.ai/providers/community-providers/aihubmix)**
一つのゲートウェイ、無限のモデル;ワンストップリクエスト: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)