dify-node-sdk
Version:
122 lines (94 loc) • 2.65 kB
Markdown
# Dify TypeScript SDK
✨ 基于 TypeScript 的 Dify API SDK,提供完善的类型定义和便捷的流式处理支持。
📝 版本变更日志请看:[CHANGELOG.md](https://github.com/yeyunwen/dify-ai-monorepo/blob/main/dify-sdk/CHANGELOG.md)。
👀 关于dify API 详细内容,可以查看官方文档:[访问 API](https://docs.dify.ai/api-reference/)。
## 特性
- 完整的 TypeScript 类型定义
- 支持所有 Dify API 端点
- 简化的流式数据处理
- 分离的客户端类 (DifyClient, ChatClient, CompletionClient, WorkflowClient)
- 支持 ESM 和 CommonJS
## 安装
```bash
npm install dify-node-sdk
# 或
yarn add dify-node-sdk
# 或
pnpm add dify-node-sdk
```
## 使用方法
### 基本使用
```typescript
import { ChatClient } from 'dify-node-sdk';
// 创建客户端实例
const client = new ChatClient('你的_API_KEY');
// 发送聊天消息
const response = await client.createChatMessage({
inputs: {},
query: '你好,请介绍一下你自己',
user: 'user_123',
});
console.log(response.data);
```
### 流式响应处理
```typescript
import { ChatClient } from 'dify-node-sdk';
const client = new ChatClient('YOU_API_KEY', 'YOU_BASE_URL');
// 使用流式响应
const resp = await client.createChatMessage(
{
inputs: {},
query: '你好,请介绍一下你自己',
user: 'user_123',
response_mode: 'streaming',
},
);
// 源码内的类型
export type EventType =
| 'workflow_started'
| 'workflow_finished'
| 'node_started'
| 'node_finished'
| 'message'
| 'message_end'
| 'tts_message'
| 'tts_message_end';
// ...
resp.onMessage = (message) => {
console.log('message', message)
}
resp.onNodeStarted = (message) => {
console.log('message', message)
}
// 注意:v0.0.6开始必须要调用start方法启动数据读取,防止在注册事件前的数据丢失
resp.start()
// or chain
resp
.onMessageEnd = (message) => {
console.log('message', message)
}
.onWorkflowStarted = (message) => {
console.log('message', message)
}.start()
```
### 文件上传
```typescript
import { DifyClient } from 'dify-node-sdk';
const client = new DifyClient('你的_API_KEY');
// 创建 FormData 对象
const formData = new FormData();
formData.append('file', fileBlob);
// 上传文件
const response = await client.fileUpload(formData);
const fileId = response.data.id;
// 在聊天消息中使用文件
const chatClient = new ChatClient('YOU_API_KEY', 'YOU_BASE_URL');
await chatClient.createChatMessage({
inputs: {},
query: '请分析这个文件的内容',
user: 'user_123',
files: [fileId],
});
```
## 许可证
MIT