Dify-13: 文本生成API端点

本文档提供了有关 Dify 中与文本生成相关的 API 端点的全面信息。文本生成 API 支持无会话持久性的单次请求文本生成,使其适用于翻译、摘要、文章写作等非对话式人工智能应用场景。

概述

文本生成 API 端点允许开发人员将 Dify 的文本生成功能集成到不需要维护对话上下文的应用程序中。每个请求都独立处理,仅根据该请求中提供的输入生成内容。

身份验证

所有 API 端点都需要使用 API 密钥进行身份验证。API 密钥应使用承载令牌格式包含在 Authorization HTTP 标头中。

Authorization: Bearer {API_KEY}

重要提示:出于安全原因,请始终将 API 密钥存储在服务器端,切勿存储在客户端代码或应用程序中。API 密钥泄露可能导致未经授权的访问和潜在的经济损失。

主要端点:创建文本生成消息

端点详情
  • URL/completion-messages
  • 方法:POST
  • 目的:根据提供的输入生成文本内容
请求格式
参数类型必填描述
inputsobject包含至少一个 query 字段的输入参数
response_modestring“streaming”(推荐)或 “blocking”
userstring用于跟踪和统计的唯一用户标识符
filesarray请求中包含的文件列表(支持图像)
示例请求体
{"inputs": {"query": "Summarize the benefits of artificial intelligence in healthcare"},"response_mode": "streaming","user": "user-123"
}

对于包含文件的请求,files 数组可以包含描述每个文件的对象:

{"files": [{"type": "image","transfer_method": "remote_url","url": "https://example.com/image.jpg"}]
}
响应格式
  • 阻塞模式:在阻塞模式下,API 在处理完成后返回完整响应:
{"event": "message","message_id": "9da23599-e713-473b-982c-4328d4f5c78a","mode": "completion","answer": "The benefits of artificial intelligence in healthcare include...","metadata": {"usage": {"prompt_tokens": 1033,"prompt_unit_price": "0.001","prompt_price_unit": "0.001","prompt_price": "0.0010330","completion_tokens": 128,"completion_unit_price": "0.002","completion_price_unit": "0.001","completion_price": "0.0002560","total_tokens": 1161,"total_price": "0.0012890","currency": "USD","latency": 0.7682376249867957}},"created_at": 1705407629
}
  • 流式模式:在流式模式下,API 使用服务器发送事件(SSE)在生成响应时返回响应块:
data: {"event": "message", "message_id": "5ad4cb98-f0c7-4085-b384-88c403be6290", "answer": " I", "created_at": 1679586595}
data: {"event": "message", "message_id": "5ad4cb98-f0c7-4085-b384-88c403be6290", "answer": "'m", "created_at": 1679586595}
data: {"event": "message", "message_id": "5ad4cb98-f0c7-4085-b384-88c403be6290", "answer": " glad", "created_at": 1679586595}
data: {"event": "message_end", "id": "5e52ce04-874b-4d27-9045-b3bc80def685", "metadata": {"usage": {...}}}

每个流式块都有特定的事件类型和相应的结构:

事件类型描述关键字段
message来自大语言模型的文本块message_id, answer, created_at
message_end流式传输结束message_id, metadata
tts_message文本转语音音频message_id, audio(base64 编码)
tts_message_end文本转语音流结束message_id
message_replace内容替换message_id, answer
error错误信息status, code, message
ping连接保持活动状态每 10 秒发送一次
错误响应
状态代码描述
400invalid_param请求中的参数无效
400app_unavailable应用配置不可用
400provider_not_initialize没有可用的模型凭证配置
400provider_quota_exceeded模型调用配额已超出
400model_currently_not_support当前模型不可用
400completion_request_error文本生成失败
500-内部服务器错误

支持的端点

文件上传端点
  • URL/files/upload
  • 方法:POST
  • 目的:上传文件(目前支持图像)以用于文本生成消息
  • Content-Type:multipart/form-data

请求参数

参数类型必填描述
filefile要上传的文件
userstring与文本生成消息中使用的用户标识符匹配的用户标识符

响应

{"id": "72fa9618-8f89-4a37-9b33-7e1178a24a67","name": "example.png","size": 1024,"extension": "png","mime_type": "image/png","created_by": "6ad1ab0a-73ff-4ac1-b9e4-cdb312f71f13","created_at": 1577836800
}
停止生成端点
  • URL/completion-messages/:task_id/stop
  • 方法:POST
  • 目的:停止正在进行的文本生成过程(仅流式模式)

请求参数

参数类型必填描述
userstring与文本生成消息中使用的用户标识符匹配的用户标识符

响应

{"result": "success"
}
消息反馈端点
  • URL/messages/:message_id/feedbacks
  • 方法:POST
  • 目的:对生成的内容提供反馈(点赞、点踩、评论)

请求参数

参数类型必填描述
ratingstring“like”、“dislike” 或 null(撤销评分)
userstring用户标识符
contentstring详细的反馈内容

响应

{"result": "success"
}
文本转语音端点
  • URL/text-to-audio
  • 方法:POST
  • 目的:将文本转换为语音音频

请求参数

参数类型必填描述
message_idstring要转换为音频的先前生成的消息 ID
textstring要转换的文本内容(如果未提供 message_id 则使用)
userstring用户标识符

响应:API 直接返回音频文件,Content-Type 为 audio/wav。

系统架构中的文本生成 API

以下图表说明了文本生成 API 如何与 Dify 系统的其他组件集成:

请求 - 响应流程

以下图表显示了文本生成 API 的请求 - 响应流程:

与聊天 API 的主要区别

功能文本生成 API聊天 API
会话持久性
对话历史记录不维护维护
用例一次性文本生成(翻译、摘要)交互式对话
主要端点/completion-messages/chat-messages
对话 ID不使用继续对话时需要

实现注意事项

  • 流式响应使用服务器发送事件(SSE)格式。
  • 响应内容可能会受到审核,不适当的内容会通过 message_replace 事件进行替换。
  • Cloudflare 超时限制请求为 100 秒。
  • 文件上传目前仅支持图像文件(png, jpg, jpeg, webp, gif)。
  • 在文本生成请求中使用文件时,请确保模型支持视觉功能。

错误处理

发生错误时,API 返回适当的 HTTP 状态码和错误信息:

  • 对于阻塞模式请求,错误信息直接在 HTTP 响应中返回。
  • 对于流式模式请求,错误作为 SSE 事件发送,事件类型为 error。

常见的错误场景包括:

  • 无效参数(400)
  • 应用配置问题(400)
  • 模型提供方初始化问题(400)
  • 配额超出错误(400)
  • 不支持的模型(400)
  • 文本生成失败(400)
  • 内部服务器错误(500)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/92396.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/92396.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode 3620. Network Recovery Pathways

Leetcode 3620. Network Recovery Pathways 1. 解题思路2. 代码实现 题目链接:3620. Network Recovery Pathways 1. 解题思路 这一题我最开始想的是遍历一下所有的网络路径,不过遇到了超时的情况。因此后来调整了一下处理思路,使用二分法的…

链路备份技术(链路聚合、RSTP)

一、链路聚合!链路备份技术之一-----链路聚合(Link Aggregation)被视为链路备份技术,核心原因在于它能通过多条物理链路的捆绑,实现 “一条链路故障时,其他链路自动接管流量” 的冗余备份效果,同…

PyTorch新手实操 安装

PyTorch简介 PyTorch 是一个基于 Python 的开源深度学习框架,由 Meta AI(原 Facebook AI)主导开发,以动态计算图(Define-by-Run)为核心,支持灵活构建和训练神经网络模型。其设计理念高度契合科…

Element Plus Table 组件扩展:表尾合计功能详解

前言在现代数据驱动的社会中,数据分析和统计成为了非常重要的任务。为了更有效地分析数据和展示统计结果,前端开发人员可以使用Vue框架和Element Plus组件库来实现数据的统计和分析功能。以下是一个关于如何在 Element Plus 的 el-table 组件中实现行汇总…

神经网络 非线性激活层 正则化层 线性层

神经网络 非线性激活层 作用:增强模型的非线性拟合能力 非线性激活层网络: class activateNet(nn.Module):def __init__(self):super(activateNet,self).__init__()self.relu nn.ReLU()self.sigmoid nn.Sigmoid()def forward(self,input):#output sel…

【Vue进阶学习笔记】组件通信专题精讲

目录前言props 父传子原理说明使用场景代码示例父组件 PropsTest.vue子组件 Child.vue自定义事件 $emit 子传父原理说明使用场景代码示例父组件 EventTest.vue子组件 Event2.vueEvent Bus 兄弟/跨层通信原理说明使用场景代码示例事件总线 bus/index.ts兄弟组件通信示例Child2.v…

【PTA数据结构 | C语言版】求最小生成树的Prim算法

本专栏持续输出数据结构题目集,欢迎订阅。 文章目录题目代码题目 请编写程序,实现在带权的无向图中求最小生成树的 Prim 算法。 注意:当多个待收录顶点到当前点集的距离等长时,按编号升序进行收录。 输入格式: 输入首…

【加解密与C】Rot系列(四)RotSpecial

RotSpecial 函数解析RotSpecial 是一个自定义函数,通常用于处理特定的旋转操作,尤其在图形变换或数据处理中。该函数可能涉及欧拉角、四元数或其他旋转表示方法,具体行为取决于实现上下文。以下是关于该函数的通用解释和可能的使用方法&#…

【机器学习深度学习】LLaMAFactory中的精度训练选择——bf16、fp16、fp32与pure_bf16深度解析

目录 前言 一、 为什么精度如此重要?—— 内存、速度与稳定性的三角博弈 二、 四大精度/模式详解: bf16, fp16, fp32, pure_bf16 三、 关键特性对比表 ▲四大计算类型核心对比表 ▲ 显存占用对比示例(175B参数模型) ▲LLa…

C# 基于halcon的视觉工作流-章21-点查找

C# 基于halcon的视觉工作流-章21-点查找 本章目标: 一、检测显著点; 二、Harris检测兴趣点; 三、Harris二项式检测兴趣点; 四、Sojka运算符检测角点; 五、Lepetit算子检测兴趣点;一、检测显著点 halcon算子…

(11)机器学习小白入门YOLOv:YOLOv8-cls epochs与数据量的关系

YOLOv8-cls epochs与数据量的关系 (1)机器学习小白入门YOLOv :从概念到实践 (2)机器学习小白入门 YOLOv:从模块优化到工程部署 (3)机器学习小白入门 YOLOv: 解锁图片分类新技能 (4)机器学习小白入门YOLOv :图片标注实操手册 (5)机…

Grafana | 如何将 11.x 升级快速到最新 12.x 版本?

[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ]📢 大家好,我是 WeiyiGeek,一名深耕安全运维开发(SecOpsDev)领域的技术从业者,致力于探索DevOps与安全的融合(Dev…

Dubbo + Spring Boot + Zookeeper 快速搭建分布式服务

Dubbo Spring Boot Zookeeper 快速搭建分布式服务 本文将详细介绍如何基于 Dubbo、Spring Boot 和 Zookeeper 快速搭建一个简单的分布式服务调用场景,包含服务提供者(Provider)、服务消费者(Consumer)及公共接口&…

五分钟掌握 TDengine 数据文件的工作原理

小 T 导读:今天我们来探讨一下——TDengine中的时序数据到底是如何存储的? 在上一期的文章《五分钟掌握 TDengine 时序数据的保留策略》中,我们知道了TDengine是如何按照时间段对数据进行分区来管理数据的。 接下来,我们和大家一起…

Python爬虫实战:研究http-parser库相关技术

一、研究背景与意义 在当今数字化时代,网络数据蕴含着巨大的价值。从商业决策、学术研究到社会治理,对海量网络信息的有效采集与分析至关重要。网络爬虫作为数据获取的核心工具,其性能与稳定性直接影响数据质量。然而,随着互联网技术的发展,网站反爬机制不断升级,传统爬…

Go语言实战案例-批量重命名文件

在《Go语言100个实战案例》中的 文件与IO操作篇 - 案例17:批量重命名文件 的完整内容,适合初学者实践如何使用 Go 操作文件系统并批量处理文件名。🎯 案例目标实现一个小工具,能够批量重命名指定目录下的所有文件,例如…

基于单片机非接触红外测温系统

传送门 👉👉👉👉其他作品题目速选一览表 👉👉👉👉其他作品题目功能速览 概述 本设计实现了一种基于单片机的非接触式红外测温系统,适用于快速、安全测量物体表面温…

Python 入门手札:从 0 到会--第十天Python常用的第三方库Numpy,Pandas,Matplotlib

目录 一、Numpy 1.NumPy 是什么? 1.1安装numpy 1.2 导入numpy模块 2.NumPy 的核心:ndarray 2.1 什么是 ndarray? 2.2 ndarray 的创建方式 2.3 常见属性(用于查看数组结构) 2.4 ndarray 的切片与索引 2.5 ndarr…

mysql 性能优化之Explain讲解

EXPLAIN是 MySQL 中用于分析查询执行计划的重要工具,通过它可以查看查询如何使用索引、扫描数据的方式以及表连接顺序等信息,从而找出性能瓶颈。以下是关于EXPLAIN的详细介绍和实战指南:1. EXPLAIN 基本用法在SELECT、INSERT、UPDATE、DELETE…

Redis 连接:深度解析与最佳实践

Redis 连接:深度解析与最佳实践 引言 Redis 作为一款高性能的内存数据结构存储系统,在当今的互联网应用中扮演着越来越重要的角色。高效的 Redis 连接管理对于保证系统的稳定性和性能至关重要。本文将深入探讨 Redis 连接的原理、配置以及最佳实践,帮助读者更好地理解和应…