⚠️ 本文档由 AI 自动翻译。如有任何不准确之处,请参考
英文原版 。
Dify 的 API 让你将 AI 能力集成到现有应用程序中,而无需从零开始构建 AI 基础设施。你可以获得大型语言模型的全部功能,同时拥有创建自定义用户体验的灵活性。
为什么使用 Dify API
跳过后端复杂性 直接从前端应用访问大型语言模型能力,无需管理 AI 基础设施
可视化应用管理 可视化设计和更新 AI 行为——更改会立即同步到所有 API 消费者
提供商灵活性 在 AI 提供商之间切换并集中管理 API 密钥,无需更改代码
API 集成的工作原理
构建应用 :在 Dify Studio 中构建具有所需 AI 能力的应用
生成 API 凭据 :安全访问应用功能
调用 API :从你的应用程序调用 API 获取 AI 驱动的响应
用户交互 :用户通过你的自定义界面交互,而 Dify 处理 AI 处理过程
你的 API 会自动继承 Dify 应用的所有功能——提示词、知识库、工具和模型配置。
开始使用
访问 API 设置
在你的应用中,导航至左侧边栏的 API Access 。
创建 API 凭据
为你的集成生成新凭据。你可以为不同环境或用户创建多个密钥。
查看文档
Dify 会生成针对你应用配置的完整 API 文档。
在应用中实现
使用提供的示例将 API 调用集成到你的应用程序中。
永远不要在前端代码或客户端请求中暴露 API 密钥。始终从后端调用 Dify API 以防止滥用并维护安全性。
API 安全
凭据管理:
为开发、测试和生产环境创建独立的 API 密钥
定期轮换密钥并撤销未使用的凭据
监控 API 使用情况以检测异常活动
最佳实践:
在后端将 API 密钥存储为环境变量
在你这边实施速率限制以防止过度使用
在转发到 Dify API 之前添加请求验证
记录 API 调用以便调试和监控
文本生成应用
这些应用程序用于生成高质量文本,如文送用户输入来获得生成的文本结果。用于生成文本的模型参数和提示词模板取决于开发者在 Dify 提示词编排页面中的设置。
你可以在 Applications -> Access 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 会为正在进行的对话进行处理。
管理动态变量: 如果需要在会话期间修改逻辑或变量,你可以使用会话变量(特定于会话的变量)来调整机器人的行为或响应。
你可以在 Applications -> Access 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())