华为云Flexus+DeepSeek征文|基于Dify构建API文档生成代码工作流
基于Dify构建API文档智能转代码工作流,通过大模型解析接口文档秒级生成生产级代码,打通设计到开发闭环。
华为云Flexus+DeepSeek征文|基于Dify构建API文档生成代码工作流
一、构建API文档生成代码工作流前言
在快速迭代的现代软件开发中,API接口
开发是连接前后端、服务与服务的关键枢纽。然而,传统开发流程中仍存在显著痛点:接口文档与代码实现割裂。开发者需反复在文档编写、业务编码与联调测试间切换,不仅效率低下,还易因文档过时引发协作冲突。能否将接口文档直接转化为可运行代码
?能否让机器理解文档语义,自动生成高质量基础实现?大语言模型(LLM)的突破性发展,让这一设想成为可能。通过将自然语言描述的API文档(如OpenAPI/Swagger
规范)输入LLM,结合精准的工程化提示设计,可引导模型生成结构清晰、符合规范的接口框架、数据模型甚至业务逻辑伪代码。
基于华为云Flexus X实例与MaaS平台的深度协同,为API文档驱动代码生成工作流提供了强大支撑:Flexus X实例
以柔性算力动态匹配开发负载,通过X-Turbo加速
引擎实现长时高性能输出,显著提升代码生成效率并降低30%综合用云成本;MaaS平台
则缝集成主流大模型
及千行百业预置能力,提供开箱即用的AI开发环境,结合200万Token免费额度与全链路安全管控,实现零门槛智能化落地。二者以“弹性算力+即用智能”的双引擎架构,为企业打造安全、高效、低成本的智能开发新范式。
二、构建API文档生成代码工作流环境
2.1 基于FlexusX实例的Dify平台
华为云FlexusX实例
提供高性价比的云服务器,按需选择资源规格、支持自动扩展,减少资源闲置,优化成本投入,并且首创大模型QoS保障,智能全域调度,算力分配长稳态运行,一直加速一直快,用于搭建Dify-LLM应用开发平台。
Dify是一个能力丰富的开源AI应用开发平台
,为大型语言模型(LLM)应用的开发而设计。它巧妙地结合了后端即服务(Backend as Service)和LLMOps的理念,提供了一套易用的界面和API,加速了开发者构建可扩展的生成式AI应用的过程。
参考:华为云Flexus+DeepSeek征文 | 基于FlexusX单机一键部署社区版Dify-LLM应用开发平台教程
2.2 基于MaaS的模型API商用服务
MaaS预置服务的商用服务为企业用户提供高性能、高可用的推理API服务,支持按Token用量计费的模式。该服务适用于需要商用级稳定性、更高调用频次和专业支持的场景。
参考:华为云Flexus+DeepSeek征文 | 基于ModelArts Studio开通和使用DeepSeek-V3/R1商用服务教程
三、构建API文档生成代码工作流实战
3.1 配置Dify环境
输入管理员的邮箱和密码,登录基于FlexusX部署好的Dify网站
将MaaS平台的模型服务接入Dify,这里我们选择的是DeepSeek R1商用服务
,需要记住调用说明中的接口信息
和 API Key 管理中API Key
,若没有可以重新创建即可
配置Dify模型供应商:设置 - 模型供应商 - 找到OpenAI-API-compatible
供应商并单击添加模型
,在添加 OpenAI-API-compatible对话框,配置相关参数,然后单击保存
参数 | 说明 |
---|---|
模型类型 | 选择LLM 。 |
模型名称 | 填入模型名称。 |
API Key | 填入创建的API Key。 |
API Endpoint URL | 填入获取的MaaS服务的基础API地址,需要去掉地址尾部的“/chat/completions”后填入 |
3.2 配置Dify工具
Jina AI
Jina AI 是一个开源神经搜索框架,用于构建可扩展的多模态 AI 应用程序。它提供了用于索引和检索各种数据的工具,包括分割网页、获取单个页面和搜索网站的能力。它专注于简化复杂的 AI 搜索功能,并使 Web 数据处理更容易。
进入 Jina 主页 ,输入账号和密码进行登录,首次需要创建一个 API 密钥,点击首页的 API 导航就会提示创建
点击管理 API 密钥,就可以查看密钥和免费额度,默认剩余 10,000,000 个词元
访问Dify - 工具,搜索 Jina ,然后找到并安装它
安装成功后,点击去授权 Jina ,输入刚刚获取到的 KEY,点击保存即可
授权成功后,我们就可以将 Jina 节点添加到 Chatflow 或 Workflow 管道用于网页爬取和数据抓取了,提供的三个方法:
切分器
:将长文本拆分成小段落,并做分词处理。获取单页面
:获取目标网址(可以是 PDF),并将其转换为适合大模型处理的 Markdown 格式。联网搜索
:针对给定的查询在互联网上进行搜索,并以适合大模型处理的 Markdown 格式返回最相关的结果。
3.3 创建API文档生成代码工作流
在 Dify - 工作室,创建空白应用,选择工作流,输入应用名称和图标,点击创建
在开始节点
添加4个参数用于用户输入,主要是输入 API 文档本地文件
或者在线 API URL
file
(单文件):API本地文档(二选一),选填api_ur
l(文本):API文档Url(二选一),选填other
(文本):额外说明,选填language
(下拉选项):编程语言,必填,由Java、Python等
language
的下拉选项添加如下,包括常用的5种编程语言
添加条件分支,判断条件为 api_url 不为空,用于判断是API URL 还是API 文件
若 api_url 不为空,则添加 Jina AI 工具的获取单页面
功能节点,输入网址为 api_url
若 api_url 为空且文件必须存在,因为规则是二者必须选一个,则添加文档提取器
节点,输入变量为上传的 API 文档文件
然后将二个分支都接入变量聚合器节点,添加二个变量,网址的解析结果text
和 文档的解析结果text
再将结果连接到 LLM 节点,模型
默认是 MaaS 通过的DeepSeek R1模型,建议将模型的Tempreture
设置为0
Tempreture
:核采样阀值。用于决定结果随机性,取值越高随机性越强即相同的问题得到的不同答案的可能性越高。
再输入系统提示词
,参考如下:
# 你是一个软件工程师,帮助用户解读API文档并直接生成代码。
## 工作流程
1. 根据用户的要求解读API文档
2. 简要想用户介绍API文档中涉及到的接口
3. 根据用户的要求使用{{#1740959153996.language#}}编写测试代码
## 工作要求
1. 如果在输入的接口文档找没有找到接口,请向用户澄清。
2. 如果输入的接口文档中找到了多个接口,请向用户澄清具体是哪个接口。
3. 如果文档中涉及到了api-key或认证相关内容,可以使用用户提供加入到接口中。
4. 如果文档中提及了某些必须传入的参数和认证用的api-key,而用户没有提供,请告知用户未生成代码的具体原因,并询问用户该如何处理必需的参数。如:按照API文档的描述,在调用XX接口时,需要提供XX参数,并询问用户该如何处理?
5. 请注意API文档中描述的输入和输出参数的格式,严格按照文档中描述的格式组织代码。
## 输出格式
1. 编写测试代码
2. 解释每个输入参数和输出参数具体的含义
再输入用户提示词
,参考如下:
接口文档内容如下{{#变量聚合器.output#}}。
请使用 {{#开始.language#}} 编写代码
用户要求:{{#开始.other#}}
最后添加结束节点,输入 LLM 的输出变量,将结果告知用户
编排工作流后点击右上角的运行
,输入API文档URL:https://302ai.apifox.cn/api-194185107
,编程语言选为 Java
,额外说明可以不填
点击开始,等待运行完成,可以在追踪中查看运行流程,通过输入的 API URL 使用 Jina 工具解析得到文档说明数据
再将解析的 API 文档输入给 LLM,再由 LLM 生成代码
最后输出最终的结果展示给用户
根据接口文档,我将为您编写调用"Reader(网页转md格式)"接口的Java代码:
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class JinaReaderExample {
private static final String API_KEY = "YOUR_API_KEY"; // 替换为你的API Key
private static final String TARGET_WEBSITE = "https://302.ai"; // 要转换的网站地址
public static void main(String[] args) {
OkHttpClient client = new OkHttpClient();
// 构建请求URL
String url = "https://api.302.ai/jina/reader/" + TARGET_WEBSITE;
// 创建请求
Request request = new Request.Builder()
.url(url)
.addHeader("Authorization", "Bearer " + API_KEY)
.build();
try (Response response = client.newCall(request).execute()) {
if (response.isSuccessful()) {
String responseBody = response.body().string();
System.out.println("转换成功!结果:");
System.out.println(responseBody);
} else {
System.out.println("请求失败,状态码: " + response.code());
System.out.println("响应内容: " + response.body().string());
}
} catch (Exception e) {
System.err.println("请求异常: " + e.getMessage());
e.printStackTrace();
}
}
}
参数说明:
1. API_KEY(必需):
- 类型:String
- 认证凭证,需要替换为实际API Key
- 获取方式:登录302.AI管理后台创建API Key
2. TARGET_WEBSITE(必需):
- 类型:String
- 要转换的网站URL地址
- 示例:"https://302.ai"
使用说明:
1. 需要添加OkHttp依赖(Maven):
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.12.0</version>
</dependency>
2. 错误处理建议:
- 401 Unauthorized:检查API Key是否正确
- 404 Not Found:验证目标网站URL是否有效
- 429 Too Many Requests:超出API调用频率限制
- 500 Server Error:服务器内部错误,建议重试
3. 响应处理:
- 成功响应(200)会返回转换后的Markdown格式内容
- 失败响应会包含错误状态码和错误信息
注意事项:
1. 请确保目标网站允许爬取,遵守robots.txt规则
2. 复杂网页可能需要调整超时设置(默认10秒)
3. 建议对目标URL进行URL编码处理特殊字符
4. 生产环境需要添加重试机制和限流控制
测试完成就可以发布更新到探索
页面了,发布后选择运行就可以获得一个在线运行的工作流的网页!
3.4 使用API文档生成代码工作流
在探索 - API文档生成代码中开启新对话
这次选择上传API本地文档,这里下载的的是 墨迹天气 - MoDaas_城市ID请求V1.5-外部版本 PDF文件,选择语言为Java
,点击运行即可
按照流程文档提取,解析API文件,生成代码
最后输出代码,还有一些代码解释、参数解释
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
public class MojiWeatherAPI {
// 需要联系墨迹天气获取的凭证信息
private static final String TOKEN = "your_token_here"; // 替换为实际token
private static final String PASSWORD = "your_password_here"; // 替换为实际password
public static void main(String[] args) {
try {
// 1. 准备请求参数
long timestamp = System.currentTimeMillis();
long cityId = 2; // 北京市的cityId
String language = "zh-CN";
// 2. 生成签名key
String rawKey = PASSWORD + timestamp + cityId;
String key = md5(rawKey);
// 3. 构建请求URL
String url = "http://coapi.moji.com/whapi/v2/weather?"
+ "timestamp=" + timestamp
+ "&token=" + URLEncoder.encode(TOKEN, StandardCharsets.UTF_8)
+ "&cityId=" + cityId
+ "&key=" + key
+ "&language=" + language;
// 4. 发送GET请求
HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
conn.setRequestMethod("GET");
// 5. 处理响应
int responseCode = conn.getResponseCode();
if (responseCode == 200) {
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder response = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
response.append(line);
}
reader.close();
// 解析JSON响应(这里需要根据实际返回结构处理)
System.out.println("API Response: " + response.toString());
// 示例解析当前温度(根据文档中的current结构)
// JSONObject json = new JSONObject(response.toString());
// double temp = json.getJSONObject("data").getJSONObject("current").getDouble("temp");
// System.out.println("当前温度: " + temp + "℃");
} else {
System.err.println("请求失败,HTTP状态码: " + responseCode);
}
} catch (Exception e) {
e.printStackTrace();
}
}
// MD5加密方法
private static String md5(String input) throws Exception {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] digest = md.digest(input.getBytes(StandardCharsets.UTF_8));
StringBuilder sb = new StringBuilder();
for (byte b : digest) {
sb.append(String.format("%02x", b));
}
return sb.toString();
}
}
- 设置必要参数(timestamp、cityId、token、password)。
- 生成MD5签名作为key。
- 构建请求URL。
- 发送HTTP GET请求。
- 解析响应JSON,处理错误码。
- 输出结果或错误信息。
### 参数说明:
1. **timestamp**
- 类型:long
- 必填:是
- 说明:当前时间戳(毫秒级)
2. **token**
- 类型:String
- 必填:是
- 说明:由墨迹天气提供的访问令牌
3. **cityId**
- 类型:long
- 必填:是
- 说明:城市唯一标识(如:2代表北京市)
4. **key**
- 类型:String
- 必填:是
- 说明:通过`MD5(password+timestamp+cityId)`生成的签名
5. **language**
- 类型:String
- 必填:否
- 说明:返回数据的语言类型(默认英文,支持zh-CN等)
### 响应参数示例(current节点):
"current": {
"temp": 23.0, // 当前温度(℃)
"humidity": 92, // 湿度(%)
"weather": "小雨", // 天气现象描述
"wind_level": 1, // 风力等级
"uvi": 1 // 紫外线指数
}
### 使用注意事项:
1. 需要联系墨迹天气获取`token`和`password`
2. 建议使用JSON解析库(如Jackson)处理响应数据
3. 需要处理API返回的错误码(如code=1表示无效token)
4. 生产环境建议添加重试机制和超时设置
5. 注意时区问题(所有时间字段均为当地时间)
> 请将代码中的`your_token_here`和`your_password_here`替换为实际值后再运行。如果缺少必要参数,API会返回`City Id Is Illegal`等错误信息。
四、总结
基于Dify构建API文档驱动代码生成工作流的实践,成功打通了文档到代码
的自动化链路,Dify可视化编排将文档解析
、提示工程、模型调度等复杂流程简化为“拖拽式”开发很方便。通过智能解析用户提交的OpenAPI/Swagger
文档,联动大模型精准生成Java/Python等接口框架代码,实测将单接口开发耗时从小时级压缩至分钟级。该方案不仅解决了文档与代码割裂的行业痛点,更显著降低了重复劳动成本,为团队构建起标准化、可复用的智能开发基座,真正实现设计即生产
的敏捷转型。
华为云Flexus X提供高性能低成本算力支撑
,MaaS平台实现DeepSeek R1模型开箱即用
,双擎协同使代码生成工作流获得分钟级响应、30%成本优化与零调优部署
的核心优势。
828 B2B企业节已经开幕,汇聚千余款华为云旗下热门数智产品,更带来满额赠、专属礼包、储值返券等重磅权益玩法,是中小企业和开发者上云的好时机,建议密切关注官方渠道,及时获取最新活动信息,采购最实惠的云产品和最新的大模型服务!
更多推荐
所有评论(0)