# @aki-io/aki-io 中文文档

规范地址：https://npmcn.com/package/%40aki-io/aki-io/

版本：1\.0\.1
npm 元数据更新时间：2026-04-05T19:39:28.854Z
中文译文更新时间：2026-11-05T21:39:30.709Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40aki-io/aki-io
原文对照：https://npmcn.com/package/%40aki-io/aki-io/?lang=original
项目主页：https://aki.io/
源码仓库：https://github.com/aki-io-labs/aki-io

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：61 kB，19 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=18\.0\.0
- 运行依赖：0 个
- 首次发布：2026-04-05T19:14:16.342Z
- 最新版本发布：2026-04-05T19:39:28.731Z
- 近 30 天下载量：17035（2026-10-06 至 2026-11-04，npm 官方下载统计）
- 已发布版本数：2（近 12 个月 2 个）

## 中文简介

AKI.IO AI Model Hub API的官方类型脚本/节点.js SDK

## 安装

```sh
npm install @aki-io/aki-io
```

也可以使用：`pnpm add @aki-io/aki-io`、`yarn add @aki-io/aki-io`、`bun add @aki-io/aki-io`

## README

# AKI.IO 类型脚本/节点.js SDK

一个现代的TypeScript/Node.js SDK,用于AKI.IO AI Model Hub API.

## 安装

```bash
npm install @aki-io/aki-io
```

```bash
yarn add @aki-io/aki-io
```

```bash
pnpm add @aki-io/aki-io
```

## 快速启动

```typescript
import { AkiClient } from '@aki-io/aki-io'

const client = new AkiClient({
  endpointName: 'llama3_chat',
  apiKey: 'your-api-key-here'
})

const result = await client.doApiRequest({
  prompt_input: 'Hello, how are you?'
})

console.log(result.text)
```

## 配置

```typescript
const client = new AkiClient({
  endpointName: 'llama3_chat',        // Required: API endpoint name
  apiKey: 'your-api-key-here',        // Required: Your API key
  apiServer: 'https://aki.io',        // Optional: API server URL (default: 'https://aki.io')
  outputBinaryFormat: 'base64',       // Optional: 'base64' or 'byteString' (default: 'base64')
  raiseExceptions: false,             // Optional: Throw exceptions on errors (default: false)
  progressInterval: 0.2,              // Optional: Progress poll interval in seconds (default: 0.2)
  returnToolCallDict: false           // Optional: Parse tool calls as JSON (default: false)
})
```

## 使用量

### 简单请求

```typescript
import { AkiClient } from '@aki-io/aki-io'

const client = new AkiClient({
  endpointName: 'llama3_chat',
  apiKey: process.env.AKI_API_KEY!
})

const result = await client.doApiRequest({
  prompt_input: 'What is the capital of France?'
})

if (result.success) {
  console.log(result.text)
} else {
  console.error('Error:', result.error)
}
```

### 聊天环境

```typescript
const result = await client.doApiRequest({
  chat_context: [
    { role: 'system', content: 'You are a helpful assistant.' },
    { role: 'user', content: 'What is 2+2?' },
    { role: 'assistant', content: '2+2 equals 4.' },
    { role: 'user', content: 'And what is 3+3?' }
  ]
})

console.log(result.text)
```

### 进程调用

```typescript
const result = await client.doApiRequest(
  {
    prompt_input: 'Write a long story about a robot.'
  },
  (progressInfo, progressData) => {
    console.log(`Progress: ${progressInfo.progress}%`)
    console.log(`Queue Position: ${progressInfo.queue_position}`)
    
    if (progressData?.text) {
      console.log('Partial text:', progressData.text)
    }
  }
)

console.log('Final result:', result.text)
```

### Async 生成器( 结构化)

```typescript
for await (const update of client.getApiRequestGenerator({ 
  prompt_input: 'Tell me a joke' 
})) {
  if (update.job_state === 'started') {
    console.log('Job started:', update.job_id)
  } else if (update.job_state === 'processing') {
    console.log('Progress:', update.progress_data?.text)
  } else if (update.job_state === 'done') {
    console.log('Final result:', update.result_data?.text)
  }
}
```

### 方便函数

```typescript
import { doAkiRequest } from '@aki-io/aki-io'

const result = await doAkiRequest(
  'llama3_chat',
  'your-api-key',
  { prompt_input: 'Hello!' }
)

console.log(result.text)
```

### 验证 API 密钥

```typescript
const validation = await client.initApiKey()

if (validation.success) {
  console.log('API key is valid')
} else {
  console.error('Invalid API key:', validation.error)
}
```

### 获取可用的终点

```typescript
const endpoints = await client.getEndpointList()

console.log('Available endpoints:', endpoints)
```

### 获取终点细节

```typescript
const details = await client.getEndpointDetails('llama3_chat')

console.log('Endpoint details:', details)
```

### 二进制数据处理

```typescript
import { encodeBinary, decodeBinary } from '@aki-io/aki-io'

const imageBuffer = await fs.readFile('image.png')

const encoded = encodeBinary(imageBuffer, 'png')
console.log(encoded)
// data:image/png;base64,iVBORw0KGgo...

const [format, decoded] = decodeBinary(encoded)
console.log(format)  // 'png'
console.log(decoded) // Buffer containing the image data
```

### 处理错误

```typescript
import { AkiClient, AkiError, ConnectionError, ValidationError } from '@aki-io/aki-io'

const client = new AkiClient({
  endpointName: 'llama3_chat',
  apiKey: 'your-api-key',
  raiseExceptions: true
})

try {
  const result = await client.doApiRequest({ prompt_input: 'Hello' })
  console.log(result.text)
} catch (error) {
  if (error instanceof ValidationError) {
    console.error('Invalid request:', error.message)
  } else if (error instanceof ConnectionError) {
    console.error('Connection failed:', error.message)
  } else if (error instanceof AkiError) {
    console.error('API error:', error.message)
  }
}
```

## API 参考

### `AkiClient`

#### 构造器

```typescript
new AkiClient(config: AkiClientConfig)
```

#### 方法

-   `doApiRequest(params, progressCallback?)` - 请求API
-   `getApiRequestGenerator(params)` - 获取同步生成器进行流出
-   `initApiKey(apiKey?)` - 验证 API 密钥
-   `getEndpointList()` - 获取可用的终点列表
-   `getEndpointDetails(endpointName?)` - 获取终点细节
-   `cancelRequest(jobId?)` - 取消运行中的请求
-   `setApiKey(apiKey)` - 设置新的 API 密钥
-   `getVersion()` - 获得SDK版本(静态)

### 工具函数

-   `encodeBinary(data, format?, type?)` - 编码二进制数据至基数64
-   `decodeBinary(base64String)` - 解码基数64到二进制
-   `isValidBase64(string)` - 检查字符串是否有效
-   `isValidJson(string)` - 检查字符串是否有效 JSON

### 类型

```typescript
interface AkiClientConfig {
  endpointName: string
  apiKey: string
  apiServer?: string
  outputBinaryFormat?: 'base64' | 'byteString'
  raiseExceptions?: boolean
  progressInterval?: number
  returnToolCallDict?: boolean
}

interface ApiResponse {
  success: boolean
  job_id?: string
  text?: string
  images?: string | string[]
  error?: string
  error_code?: number
  // ... additional fields
}

interface ProgressInfo {
  job_id: string
  progress: number
  queue_position: number
  estimate: number
  job_state?: JobState
  success?: boolean
}

interface ProgressData {
  text?: string
  images?: string | string[]
  num_generated_tokens?: number
  // ... additional fields
}

type ProgressCallback = (progressInfo: ProgressInfo, progressData: ProgressData | null) => void
type JobState = 'started' | 'processing' | 'done' | 'canceled' | 'lapsed'
```

## 所需资源

-   节点.js 18.0.0或以上
-   TypeScript 5.0 或以上(用于开发)

## 许可证

麻省理工学院执照 - 看 [自由主义](https://npmcn.com/package/%40aki-io/LICENSE) 详细文件.

## 支助

-   联合国 [页:1](https://aki.io/docs)
-   问题: [https://github.com/aki-io-labs/aki-io/ 问题](https://github.com/aki-io-labs/aki-io/issues)
-   网站: [https://aki.io (英语)](https://aki.io/)

## 常见问题

### @aki-io/aki-io 是什么？

AKI\.IO AI Model Hub API的官方类型脚本/节点\.js SDK

### 如何安装 @aki-io/aki-io？

在项目目录运行 npm install @aki-io/aki-io，或使用 pnpm add / yarn add / bun add。

### @aki-io/aki-io 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @aki-io/aki-io 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @aki-io/aki-io 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=18\.0\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @aki-io/aki-io 可以商用吗？

@aki-io/aki-io 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @aki-io/aki-io 的下载量有多少？

根据 npm 官方下载统计，@aki-io/aki-io 在 2026/10/06 – 2026/11/04 这 30 天内被下载 17,035 次，日均约 568 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @aki-io/aki-io 还在维护吗？

最新版本 1\.0\.1 发布于 2026/04/06（7 个月前）；至今共发布 2 个版本，其中过去 12 个月发布了 2 个；首次发布于 2026/04/06。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

