mirror of https://github.com/langgenius/dify.git
106 lines
2.6 KiB
Markdown
106 lines
2.6 KiB
Markdown
# Dify Node.js SDK
|
|
|
|
This is the Node.js SDK for the Dify API, which allows you to easily integrate Dify into your Node.js applications.
|
|
|
|
## Install
|
|
|
|
```bash
|
|
npm install dify-client
|
|
```
|
|
|
|
## Usage
|
|
|
|
After installing the SDK, you can use it in your project like this:
|
|
|
|
```js
|
|
import {
|
|
DifyClient,
|
|
ChatClient,
|
|
CompletionClient,
|
|
WorkflowClient,
|
|
KnowledgeBaseClient,
|
|
WorkspaceClient
|
|
} from 'dify-client'
|
|
|
|
const API_KEY = 'your-app-api-key'
|
|
const DATASET_API_KEY = 'your-dataset-api-key'
|
|
const user = 'random-user-id'
|
|
const query = 'Please tell me a short story in 10 words or less.'
|
|
|
|
const chatClient = new ChatClient(API_KEY)
|
|
const completionClient = new CompletionClient(API_KEY)
|
|
const workflowClient = new WorkflowClient(API_KEY)
|
|
const kbClient = new KnowledgeBaseClient(DATASET_API_KEY)
|
|
const workspaceClient = new WorkspaceClient(DATASET_API_KEY)
|
|
const client = new DifyClient(API_KEY)
|
|
|
|
// App core
|
|
await client.getApplicationParameters(user)
|
|
await client.messageFeedback('message-id', 'like', user)
|
|
|
|
// Completion (blocking)
|
|
await completionClient.createCompletionMessage({
|
|
inputs: { query },
|
|
user,
|
|
response_mode: 'blocking'
|
|
})
|
|
|
|
// Chat (streaming)
|
|
const stream = await chatClient.createChatMessage({
|
|
inputs: {},
|
|
query,
|
|
user,
|
|
response_mode: 'streaming'
|
|
})
|
|
for await (const event of stream) {
|
|
console.log(event.event, event.data)
|
|
}
|
|
|
|
// Chatflow (advanced chat via workflow_id)
|
|
await chatClient.createChatMessage({
|
|
inputs: {},
|
|
query,
|
|
user,
|
|
workflow_id: 'workflow-id',
|
|
response_mode: 'blocking'
|
|
})
|
|
|
|
// Workflow run (blocking or streaming)
|
|
await workflowClient.run({
|
|
inputs: { query },
|
|
user,
|
|
response_mode: 'blocking'
|
|
})
|
|
|
|
// Knowledge base (dataset token required)
|
|
await kbClient.listDatasets({ page: 1, limit: 20 })
|
|
await kbClient.createDataset({ name: 'KB', indexing_technique: 'economy' })
|
|
|
|
// RAG pipeline (may require service API route registration)
|
|
const pipelineStream = await kbClient.runPipeline('dataset-id', {
|
|
inputs: {},
|
|
datasource_type: 'online_document',
|
|
datasource_info_list: [],
|
|
start_node_id: 'start-node-id',
|
|
is_published: true,
|
|
response_mode: 'streaming'
|
|
})
|
|
for await (const event of pipelineStream) {
|
|
console.log(event.data)
|
|
}
|
|
|
|
// Workspace models (dataset token required)
|
|
await workspaceClient.getModelsByType('text-embedding')
|
|
|
|
```
|
|
|
|
Notes:
|
|
|
|
- App endpoints use an app API token; knowledge base and workspace endpoints use a dataset API token.
|
|
- Chat/completion require a stable `user` identifier in the request payload.
|
|
- For streaming responses, iterate the returned AsyncIterable. Use `stream.toText()` to collect text.
|
|
|
|
## License
|
|
|
|
This SDK is released under the MIT License.
|