{"_id":"@amical/dify-ai-provider","_rev":"4-6ba3c178ad8332741da0fbccb020c586","name":"@amical/dify-ai-provider","dist-tags":{"latest":"0.1.10"},"versions":{"0.1.7":{"name":"@amical/dify-ai-provider","version":"0.1.7","keywords":["ai","dify","vercel-ai-sdk","dify-ai-provider"],"author":{"name":"Oscar Jiang","email":"pengj0520@gmail.com"},"license":"MIT","_id":"@amical/dify-ai-provider@0.1.7","maintainers":[{"name":"linhuibin","email":"1032352370@qq.com"}],"homepage":"https://github.com/warmwind/dify-ai-provider#readme","bugs":{"url":"https://github.com/warmwind/dify-ai-provider/issues"},"dist":{"shasum":"85d5b9c40c1f420caee0ea61cb6f84c1fb9f1f9a","tarball":"https://registry.npmjs.org/@amical/dify-ai-provider/-/dify-ai-provider-0.1.7.tgz","fileCount":6,"integrity":"sha512-TJ79LXPlL657JpS0I1w08najlqZDI3QdwsROaJvUIGO0uJvdp7p4552Eq47lXAA9seB6Rump44HzwVPieQ+e4Q==","signatures":[{"sig":"MEUCIQCs52Bf/IHWU/V9Jsp/m7CH6C5umC9Tq08b8uqLLNgPWwIgdHjVP/gnhcAEdu8nZU9oFACKwJD823JuFs3HnYXXHtg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38538},"main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"8a83b9c3c5cbb59bd3dab23e01d7470103c691d8","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup"},"_npmUser":{"name":"linhuibin","email":"1032352370@qq.com"},"repository":{"url":"git+https://github.com/warmwind/dify-ai-provider.git","type":"git"},"_npmVersion":"10.2.5","description":"Dify provider for Vercel AI SDK","directories":{},"_nodeVersion":"20.9.0","dependencies":{"zod":"^3.24.3","@ai-sdk/provider":"^1.1.3","@ai-sdk/provider-utils":"^2.2.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.15.9+sha512.68046141893c66fad01c079231128e9afb89ef87e2691d69e4d40eee228988295fd4682181bae55b58418c3a253bde65a505ec7c5f9403ece5cc3cd37dcf2531","prepublishOnly":"npm run build","devDependencies":{"tsx":"^4.7.0","tsup":"^8.0.1","vitest":"^1.0.0","typescript":"^5.3.3","@types/node":"^20.11.5"},"_npmOperationalInternal":{"tmp":"tmp/dify-ai-provider_0.1.7_1759198819820_0.16492027658750263","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@amical/dify-ai-provider","version":"0.1.8","keywords":["ai","dify","vercel-ai-sdk","dify-ai-provider"],"author":{"name":"Oscar Jiang","email":"pengj0520@gmail.com"},"license":"MIT","_id":"@amical/dify-ai-provider@0.1.8","maintainers":[{"name":"linhuibin","email":"1032352370@qq.com"}],"homepage":"https://github.com/warmwind/dify-ai-provider#readme","bugs":{"url":"https://github.com/warmwind/dify-ai-provider/issues"},"dist":{"shasum":"c0b462f3ced501ee2dfa601b466504227ce2f36a","tarball":"https://registry.npmjs.org/@amical/dify-ai-provider/-/dify-ai-provider-0.1.8.tgz","fileCount":6,"integrity":"sha512-q8qwx5tA28gpTIMopXIp4/8XxQHtz4HP+aGbJGwaP3BQr2byzRcMGrWtc0Z1N1McvKQCSsvX1N9M0HreL7yFLA==","signatures":[{"sig":"MEUCIQDoF6THCCMDVzrjB/0DN0Y2k5oJuCJmurOw6WexTB5QagIgHebcQA0dK+Q0Mz5FrSlHIV2504HCavwInsbxHm5K8IU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38538},"main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"9896d2eba5b608d29887233b38b4a941536e714c","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup"},"_npmUser":{"name":"linhuibin","email":"1032352370@qq.com"},"repository":{"url":"git+https://github.com/warmwind/dify-ai-provider.git","type":"git"},"_npmVersion":"10.2.5","description":"Dify provider for Vercel AI SDK","directories":{},"_nodeVersion":"20.9.0","dependencies":{"zod":"^3.24.3","@ai-sdk/provider":"^1.1.3","@ai-sdk/provider-utils":"^2.2.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.15.9+sha512.68046141893c66fad01c079231128e9afb89ef87e2691d69e4d40eee228988295fd4682181bae55b58418c3a253bde65a505ec7c5f9403ece5cc3cd37dcf2531","prepublishOnly":"npm run build","devDependencies":{"tsx":"^4.7.0","tsup":"^8.0.1","vitest":"^1.0.0","typescript":"^5.3.3","@types/node":"^20.11.5"},"_npmOperationalInternal":{"tmp":"tmp/dify-ai-provider_0.1.8_1759205769670_0.8721731282158072","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@amical/dify-ai-provider","version":"0.1.9","keywords":["ai","dify","vercel-ai-sdk","dify-ai-provider"],"author":{"name":"Oscar Jiang","email":"pengj0520@gmail.com"},"license":"MIT","_id":"@amical/dify-ai-provider@0.1.9","maintainers":[{"name":"linhuibin","email":"1032352370@qq.com"}],"homepage":"https://github.com/warmwind/dify-ai-provider#readme","bugs":{"url":"https://github.com/warmwind/dify-ai-provider/issues"},"dist":{"shasum":"9725fe849fb332dfcda99eba8bf3da2656b1d103","tarball":"https://registry.npmjs.org/@amical/dify-ai-provider/-/dify-ai-provider-0.1.9.tgz","fileCount":6,"integrity":"sha512-W7AZdzTqXghpS/4ErT/3EB6GH3lcAgLnj1Z93DfwcdElVPvI0HeRW6Ez70P+UbwuiIdy3+CQNc+Gw5AFuqhrbA==","signatures":[{"sig":"MEUCIHwx3NrAUEgBwsPX3VBWBzFXO5z4Go/Mbl+oNeMVnyxZAiEAkG6umaslVMtsfmQyQPRaHKN2bEY8XOXhuqcsxVWug0M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38810},"main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"a5a55889db7084905226e837d23c390bcdc6a3ac","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup"},"_npmUser":{"name":"linhuibin","email":"1032352370@qq.com"},"repository":{"url":"git+https://github.com/warmwind/dify-ai-provider.git","type":"git"},"_npmVersion":"10.2.5","description":"Dify provider for Vercel AI SDK","directories":{},"_nodeVersion":"20.9.0","dependencies":{"zod":"^3.24.3","@ai-sdk/provider":"^1.1.3","@ai-sdk/provider-utils":"^2.2.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.15.9+sha512.68046141893c66fad01c079231128e9afb89ef87e2691d69e4d40eee228988295fd4682181bae55b58418c3a253bde65a505ec7c5f9403ece5cc3cd37dcf2531","prepublishOnly":"npm run build","devDependencies":{"tsx":"^4.7.0","tsup":"^8.0.1","vitest":"^1.0.0","typescript":"^5.3.3","@types/node":"^20.11.5"},"_npmOperationalInternal":{"tmp":"tmp/dify-ai-provider_0.1.9_1759209467199_0.5615489282448756","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@amical/dify-ai-provider","version":"0.1.10","description":"Dify provider for Vercel AI SDK","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsup","dev":"tsup --watch","test":"vitest run"},"exports":{"./package.json":"./package.json",".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"keywords":["ai","dify","vercel-ai-sdk","dify-ai-provider"],"author":{"name":"Oscar Jiang","email":"pengj0520@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/warmwind/dify-ai-provider.git"},"homepage":"https://github.com/warmwind/dify-ai-provider#readme","bugs":{"url":"https://github.com/warmwind/dify-ai-provider/issues"},"publishConfig":{"access":"public"},"prepublishOnly":"npm run build","license":"MIT","dependencies":{"@ai-sdk/provider":"^1.1.3","@ai-sdk/provider-utils":"^2.2.7","zod":"^3.24.3"},"devDependencies":{"@types/node":"^20.11.5","tsup":"^8.0.1","tsx":"^4.7.0","typescript":"^5.3.3","vitest":"^1.0.0"},"packageManager":"pnpm@9.15.9+sha512.68046141893c66fad01c079231128e9afb89ef87e2691d69e4d40eee228988295fd4682181bae55b58418c3a253bde65a505ec7c5f9403ece5cc3cd37dcf2531","_id":"@amical/dify-ai-provider@0.1.10","gitHead":"70b3fbaa6f25ca2a2173bd6df5adfe92e359c0d2","_nodeVersion":"20.9.0","_npmVersion":"10.2.5","dist":{"integrity":"sha512-PmMsUTQ7gUv+JBJmiEuTpv/JnUaWkWKBitm/YAQyygJ1Zc6N8x9nuPPf0lhkSYAVuqasxx/rL70HjM3+dsh4dQ==","shasum":"b8279ea2be84c92254954c557a9f4e7f1702754b","tarball":"https://registry.npmjs.org/@amical/dify-ai-provider/-/dify-ai-provider-0.1.10.tgz","fileCount":6,"unpackedSize":38863,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDkgQxI3SAPlMv4DCj5fC/cx5jXCD8dZe5pqkue/j2bOQIgUaVtqNR18yGHAY0eJieNp1oV6vDYqsQdt5Negw3IqRg="}]},"_npmUser":{"name":"linhuibin","email":"1032352370@qq.com"},"directories":{},"maintainers":[{"name":"linhuibin","email":"1032352370@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dify-ai-provider_0.1.10_1759213197120_0.10622587356337343"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-30T02:20:19.739Z","modified":"2025-09-30T06:19:57.517Z","0.1.7":"2025-09-30T02:20:19.990Z","0.1.8":"2025-09-30T04:16:09.866Z","0.1.9":"2025-09-30T05:17:47.417Z","0.1.10":"2025-09-30T06:19:57.332Z"},"bugs":{"url":"https://github.com/warmwind/dify-ai-provider/issues"},"author":{"name":"Oscar Jiang","email":"pengj0520@gmail.com"},"license":"MIT","homepage":"https://github.com/warmwind/dify-ai-provider#readme","keywords":["ai","dify","vercel-ai-sdk","dify-ai-provider"],"repository":{"type":"git","url":"git+https://github.com/warmwind/dify-ai-provider.git"},"description":"Dify provider for Vercel AI SDK","maintainers":[{"name":"linhuibin","email":"1032352370@qq.com"}],"readme":"# Dify AI Provider for Vercel AI SDK\r\n\r\n> **Note:** The current version only supports text messages.\r\n\r\nA provider for [Dify.AI](https://dify.ai/) to work with [Vercel AI SDK](https://sdk.vercel.ai/).\r\n\r\nThis provider allows you to easily integrate Dify AI's application workflow with your applications using the Vercel AI SDK.\r\n\r\n## Setting Up with Dify\r\n\r\nTo use this provider, you'll need:\r\n\r\n- **Dify Account**: Create an account at [Dify.AI](https://dify.ai/)\r\n- **Dify Application**: Each application functions as a model within the Vercel AI SDK\r\n  - **Application ID**: Serves as the model ID in your code, can be found in the URL: `https://cloud.dify.ai/app/${dify-application-id}/workflow`\r\n  - **API Key**: can be obtained from the application settings\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install dify-ai-provider\r\n\r\n# pnpm\r\npnpm add dify-ai-provider\r\n\r\n# yarn\r\nyarn add dify-ai-provider\r\n```\r\n\r\n## Usage\r\n\r\n### Basic Example\r\n\r\n```typescript\r\nimport { generateText } from \"ai\";\r\nimport { difyProvider } from \"dify-ai-provider\";\r\n\r\nprocess.env.DIFY_API_KEY = \"dify-api-key\"; // app-...\r\n\r\n// Create a Dify provider instance\r\nconst dify = difyProvider(\"dify-application-id\", {\r\n  responseMode: \"blocking\",\r\n});\r\n\r\n// Generate text using Dify AI\r\nconst { text, providerMetadata } = await generateText({\r\n  model: dify,\r\n  messages: [{ role: \"user\", content: \"Hello, how are you today?\" }],\r\n  headers: { \"user-id\": \"test-user\" },\r\n});\r\n\r\nconst { conversationId, messageId } = providerMetadata.difyWorkflowData;\r\nconsole.log(text);\r\nconsole.log(\"conversationId\", conversationId);\r\nconsole.log(\"messageId\", messageId);\r\n```\r\n\r\n### Continuing a Conversation\r\n\r\nYou can continue a conversation by providing a `chat-id` and `user-id` in request header:\r\n\r\n```typescript\r\nconst { text: followUpText } = await generateText({\r\n  model: dify,\r\n  messages: [\r\n    { role: \"user\", content: \"That's great! What can you help me with?\" },\r\n  ],\r\n  headers: { \"user-id\": \"test-user\", \"chat-id\": conversationId },\r\n});\r\n\r\nconsole.log(\"followUpText\", followUpText);\r\n```\r\n\r\n### Streaming\r\n\r\n```typescript\r\nimport { streamText } from \"ai\";\r\nimport { difyProvider } from \"dify-ai-provider\";\r\n\r\nconst dify = difyProvider(\"dify-application-id\");\r\n\r\nconst stream = streamText({\r\n  model: dify,\r\n  messages: [{ role: \"user\", content: \"Write a short poem about AI.\" }],\r\n});\r\n\r\n// Process text deltas as they arrive\r\nfor await (const chunk of stream.textStream) {\r\n  process.stdout.write(chunk);\r\n}\r\n```\r\n\r\n### Use self-hosted dify\r\n\r\n```typescript\r\nimport { createDifyProvider } from \"dify-ai-provider\";\r\nconst difyProvider = createDifyProvider({\r\n  baseURL: \"your-base-url\",\r\n});\r\nconst dify = difyProvider(\"dify-application-id\", {\r\n  responseMode: \"blocking\",\r\n  apiKey: \"dify-api-key\",\r\n});\r\n```\r\n\r\n### Use in Next.js AI Chatbot\r\n\r\n[Next.js AI Chatbot](https://github.com/vercel/ai-chatbot) is a full-featured, hackable Next.js AI chatbot built by Vercel. If you want to use it as a chatbot frontend for a Dify application, follow the guidelines below:\r\n\r\n#### Key Concepts\r\n\r\n- In Dify, an **application** corresponds to a **model ID** in the AI provider\r\n- A Dify **conversation** maps to a **chat session** in the chatbot\r\n- When you first send a message to Dify, it automatically generates a new conversation\r\n- You must save and reuse the conversation ID for subsequent messages to maintain chat continuity\r\n- Without reusing the conversation ID, each message will create a new conversation in Dify\r\n\r\n#### Getting the Conversation ID\r\n\r\nYou can retrieve the Dify conversation ID from the `onFinish` callback:\r\n\r\n```ts\r\nonFinish: async ({ response, providerMetadata }) => {\r\n  const conversationId = providerMetadata?.difyWorkflowData?.conversationId as string;\r\n  const messageId = providerMetadata?.difyWorkflowData?.messageId as string;\r\n  // Save conversationId for future use\r\n}\r\n```\r\n\r\n#### Passing Headers for Conversation Continuity\r\n\r\nPass the user ID and conversation ID in the headers when calling `streamText`:\r\n\r\n> **Important:** The `conversation_id` must be obtained from a Dify response. Using an invalid conversation ID will result in an error stating that the conversation does not exist.\r\n\r\n```ts\r\nconst stream = createDataStream({\r\n  execute: (dataStream) => {\r\n    const headers = {\r\n      'user-id': session.user.id,\r\n      'chat-id': conversation_id_returned_from_dify\r\n    };\r\n\r\n    const result = streamText({\r\n      model: myProvider.languageModel(selectedChatModel),\r\n      headers,\r\n      // ... other options\r\n    });\r\n\r\n    // ... rest of implementation\r\n  }\r\n  // ... other options\r\n});\r\n```\r\n\r\n## API Reference\r\n\r\n### `difyProvider(modelId, settings?)`\r\n\r\nCreates a Dify chat model instance.\r\n\r\n#### Parameters\r\n\r\n- ProviderSettings\r\n\r\n  - `modelId` (string): The ID of your Dify application.\r\n  - `settings` (optional object):\r\n    - `baseURL` (string): The base URL for the Dify API. Default is `https://api.dify.ai/v1`.\r\n    - `headers` (Record<string, string>): The headers that will be set to dify api\r\n\r\n- ChatSettings\r\n\r\n  - `inputs` (object): Additional inputs to send with the request.\r\n  - `responseMode` (string): Response mode, defaults to `\"streaming\"`.\r\n  - `apiKey` (string): Your Dify application API key. If not provided, it will use the `DIFY_API_KEY` environment variable.\r\n\r\n## Documentation\r\n\r\n- [Vercel AI SDK documentation](https://sdk.vercel.ai/docs/introduction)\r\n- [Dify API documentation](https://docs.dify.ai/guides/application-publishing/developing-with-apis)\r\n","readmeFilename":"README.md"}