本文档由 AI 自动翻译。如有任何不准确之处,请参考 英文原版。
Dify 的 API 让你将 AI 能力集成到现有应用程序中,而无需从零开始构建 AI 基础设施。你既能用上大语言模型的全部能力,又能自由打造定制化的用户体验。
为什么使用 Dify API
跳过后端复杂性
直接从前端应用访问大型语言模型能力,无需管理 AI 基础设施
可视化应用管理
可视化设计和更新 AI 行为,更改会立即同步到所有 API 消费者
提供商灵活性
在 AI 提供商之间切换并集中管理 API 密钥,无需更改代码
API 集成的工作原理
- 构建应用:在 Dify Studio 中构建具有所需 AI 能力的应用
- 生成 API 凭据:安全访问应用功能
- 调用 API:从你的应用程序调用 API 获取 AI 驱动的响应
- 用户交互:用户在你的自定义界面中操作,AI 推理则交由 Dify 完成
你的 API 会自动继承 Dify 应用的所有功能:提示词、知识库、工具和模型配置。
开始使用
访问 API 设置
在你的应用中,导航至左侧边栏的 访问 API。
创建 API 凭据
为你的集成生成新凭据。你可以为不同环境或用户创建多个密钥。
查看文档
Dify 会生成针对你应用配置的完整 API 文档。
在应用中实现
使用提供的示例将 API 调用集成到你的应用程序中。
永远不要在前端代码或客户端请求中暴露 API 密钥。始终从后端调用 Dify API 以防止滥用并维护安全性。
API 安全
凭据管理:
- 为开发、测试和生产环境创建独立的 API 密钥
- 定期轮换密钥并撤销未使用的凭据
- 监控 API 使用情况以检测异常活动
最佳实践:
- 在后端将 API 密钥存储为环境变量
- 在你这边实施速率限制以防止过度使用
- 在转发到 Dify API 之前添加请求验证
- 记录 API 调用以便调试和监控
文本生成应用
这些应用程序用于生成高质量文本,如传入用户输入来获得生成的文本结果。用于生成文本的模型参数和提示词模板取决于开发者在 Dify 提示词编排页面中的设置。
你可以在 应用 -> 访问 API 中找到此应用程序的 API 文档和示例请求。
例如,这里是一个调用文本生成 API 的示例:
curl --location --request POST 'https://api.dify.ai/v1/completion-messages' \
--header 'Authorization: Bearer ENTER-YOUR-SECRET-KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"inputs": {},
"response_mode": "streaming",
"user": "abc-123"
}'
import requests
import json
url = "https://api.dify.ai/v1/completion-messages"
headers = {
'Authorization': 'Bearer ENTER-YOUR-SECRET-KEY',
'Content-Type': 'application/json',
}
data = {
"inputs": {"text": 'Hello, how are you?'},
"response_mode": "streaming",
"user": "abc-123"
}
response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.text)
对话应用
对话应用通过问答格式促进与用户的持续对话。要启动对话,你需要调用 chat-messages API。每个会话都会生成一个 conversation_id,必须在后续 API 调用中包含此 ID 以维持对话流。
重要说明:服务 API 不会共享 WebApp 创建的对话。通过 API 创建的对话与在 WebApp 界面中创建的对话是隔离的。
conversation_id 的关键注意事项:
- 生成
conversation_id:开始新对话时,将 conversation_id 字段留空。系统将生成并返回新的 conversation_id,你将在未来的交互中使用此 ID 继续对话。
- 在现有会话中处理
conversation_id:一旦生成 conversation_id,对 API 的后续调用应包含此 conversation_id 以确保与 Dify 机器人的对话连续性。当传递之前的 conversation_id 时,任何新的 inputs 将被忽略。只有 query 会为正在进行的对话进行处理。
- 管理动态变量:如果需要在会话期间修改逻辑或变量,你可以使用会话变量(特定于会话的变量)来调整机器人的行为或响应。
你可以在 应用 -> 访问 API 中访问此应用程序的 API 文档和示例请求。
这里是一个调用 chat-messages API 的示例:
curl --location --request POST 'https://api.dify.ai/v1/chat-messages' \
--header 'Authorization: Bearer ENTER-YOUR-SECRET-KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"inputs": {},
"query": "eh",
"response_mode": "streaming",
"conversation_id": "1c7e55fb-1ba2-4e10-81b5-30addcea2276",
"user": "abc-123"
}'
import requests
import json
url = 'https://api.dify.ai/v1/chat-messages'
headers = {
'Authorization': 'Bearer ENTER-YOUR-SECRET-KEY',
'Content-Type': 'application/json',
}
data = {
"inputs": {},
"query": "eh",
"response_mode": "streaming",
"conversation_id": "1c7e55fb-1ba2-4e10-81b5-30addcea2276",
"user": "abc-123"
}
response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.text())