ITPub博客

首页 > 人工智能 > 人工智能 > 代码注释、API文档生成(使用千问AI助手)

代码注释、API文档生成(使用千问AI助手)

原创 人工智能 作者:brucexia 时间:2026-04-14 09:21:04 0 删除 编辑

代码注释是 “ 给未来的自己和同事看 ” ,核心是 “ 说明‘为什么这么写’+ ‘怎么用’ ” 。API 文档是 “ 给调用者看 ” ,核心是 “ 说明‘接口怎么调’+ ‘参数/ 响应是什么’ ” 。

代码注释与API 文档是代码可维护性与可复用性的核心。传统模式下,开发人员常因时间紧张导致注释缺失、文档不规范,影响后续维护与协作。千问可自动生成代码注释(单行注释、函数注释、类注释)与标准化API 文档(如Swagger 风格),确保代码可读性与文档规范性。

示例:生成代码注释和API 文档

某公司后端团队正在开发一个基于Flask 的用户登录接口。开发人员小张完成了核心逻辑,但尚未添加注释和文档。该接口接收POST 请求,参数为username (必填)、password (必填)、captcha (可选),成功后返回JWT 令牌。按照公司规范,他需要在今天下班前提交符合PEP8 标准的代码注释和一份可用于Swagger 的API 文档。但他正忙于修复另一个紧急bug ,急需一个工具能帮他快速生成初稿。

在代码对话框中输入如下提示词:

你是一名技术文档工程师,请为以下任务生成规范文档:

【任务类型】 Python 代码注释生成 +RESTful API 文档生成

【核心信息】

- 功能描述:用户登录认证

- 代码 / 接口详情:

    - 请求方式: POST

    - 接口路径: /api/v1/login

    - 参数: username (str, 必填 ), password (str, 必填 ), captcha (str, 可选 )

    - 响应: JSON ,成功时包含 code=200, message, data(token, expire_time, username)

【输出要求】

1. 代码注释:符合 Python PEP8 规范,包含功能、参数、返回值、异常、备注。

2. API 文档:包含接口路径、请求方法、参数详情、响应示例、错误码说明。

3. 格式清晰,支持直接复制到代码 /Swagger 。

输出结果如下:

Flask 用户登录接口:

"""

@Author: 技术文档助手

@Version: 1.0

@Description: 用户登录认证接口模块,负责验证用户身份合法性,返回认证令牌

@Date: 2025-01-20

"""

from flask import Flask, request, jsonify

import jwt

import datetime

 

app = Flask(__name__)

app.config['SECRET_KEY'] = 'your-secret-key'  # 实际生产环境需使用环境变量存储

 

def verify_password(username: str, password: str) -> bool:

    """

    验证用户名与密码合法性(模拟数据库校验逻辑)

   

    Args:

        username: 用户名(字符串,长度 6-20 位,仅含字母 / 数字)

        password: 密码(字符串,长度 8-20 位,含字母 + 数字 + 特殊字符)

   

    Returns:

        bool: 验证通过返回 True ,否则返回 False

   

    Notes:

        实际场景需对接数据库查询,此处为简化模拟;

        生产环境需使用密码哈希校验(如 bcrypt ),禁止明文比对

    """

    # 模拟数据库存储的用户名与加密后密码(示例数据)

    mock_users = {

        "test_user": "$2b$12$EixZaYb4xU58Gpq1R0yWbeb00LU5qUaK6x6hTOj0K2qCk2aK6z2a"  # 密码: Test@1234

    }

    if username not in mock_users:

        return False

    # 模拟哈希密码校验(实际需用 bcrypt.checkpw(password.encode(), mock_users[username].encode()) )

    return password == "Test@1234"

 

@app.route('/api/v1/login', methods=['POST'])

def user_login():

    """

    用户登录认证接口:验证用户身份并生成 JWT 令牌

   

    Request:

        Content-Type: application/json

        Body: {

            "username": string,  // 用户名(必填)

            "password": string,  // 密码(必填)

            "captcha": string   // 验证码(可选,生产环境建议必填)

        }

   

    Response:

        200 OK: {

            "code": 200,

            "message": " 登录成功 ",

            "data": {

                "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",  // JWT 令牌(有效期 2 小时)

                "expire_time": "2025-01-20T16:30:00Z",

                "username": "test_user"

            }

        }

        400 Bad Request: {

            "code": 400,

            "message": " 参数缺失:用户名不能为空 "

        }

        401 Unauthorized: {

            "code": 401,

            "message": " 用户名或密码错误 "

        }

   

    Errors:

        400: 参数缺失 / 格式错误

        401: 身份验证失败

        500: 服务器内部错误

   

    Notes:

        1. JWT 令牌有效期 2 小时,过期需重新登录;

        2. 验证码功能需对接第三方验证码服务(如极验),此处简化省略;

        3. 生产环境需添加 HTTPS 加密传输,避免密码泄露

    """

    try:

        data = request.get_json()

        # 参数校验

        if not data.get("username"):

            return jsonify({"code": 400, "message": " 参数缺失:用户名不能为空 "}), 400

        if not data.get("password"):

            return jsonify({"code": 400, "message": " 参数缺失:密码不能为空 "}), 400

       

        # 密码验证

        if not verify_password(data["username"], data["password"]):

            return jsonify({"code": 401, "message": " 用户名或密码错误 "}), 401

       

        # 生成 JWT 令牌

        expire = datetime.datetime.utcnow() + datetime.timedelta(hours=2)

        token = jwt.encode(

            {"username": data["username"], "exp": expire},

            app.config['SECRET_KEY'],

            algorithm="HS256"

        )

       

        return jsonify({

            "code": 200,

            "message": " 登录成功 ",

            "data": {

                "token": token,

                "expire_time": expire.isoformat() + "Z",

                "username": data["username"]

            }

        }), 200

    except Exception as e:

        return jsonify({"code": 500, "message": f" 服务器内部错误: {str(e)}"}), 500

 

if __name__ == "__main__":

    app.run(debug=True, host="0.0.0.0", port=5000)

OpenAPI 3.0 用户文档认证API 文档:

openapi: 3.0.3

info:

  title: 用户认证 API

  description: 提供用户登录、令牌验证等认证相关接口

  version: 1.0.0

paths:

  /api/v1/login:

    post:

      summary: 用户登录认证

      description: 验证用户用户名和密码,生成有效期 2 小时的 JWT 令牌

      requestBody:

        required: true

        content:

          application/json:

            schema:

              type: object

              properties:

                username:

                  type: string

                  description: 用户名( 6-20 位,仅含字母 / 数字)

                  example: "test_user"

                password:

                  type: string

                  description: 密码( 8-20 位,含字母 + 数字 + 特殊字符)

                  example: "Test@1234"

                captcha:

                  type: string

                  description: 验证码(可选,生产环境建议必填)

                  example: "8F3D2A"

              required:

                - username

                - password

      responses:

        '200':

          description: 登录成功

          content:

            application/json:

              schema:

                type: object

                properties:

                  code:

                    type: integer

                    example: 200

                  message:

                    type: string

                    example: " 登录成功 "

                  data:

                    type: object

                    properties:

                      token:

                        type: string

                        example: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."

                      expire_time:

                        type: string

                        format: date-time

                        example: "2025-01-20T16:30:00Z"

                      username:

                        type: string

                        example: "test_user"

        '400':

          description: 参数缺失或格式错误

          content:

            application/json:

              schema:

                type: object

                properties:

                  code:

                    type: integer

                    example: 400

                  message:

                    type: string

                    example: " 参数缺失:用户名不能为空 "

        '401':

          description: 身份验证失败

          content:

            application/json:

              schema:

                type: object

                properties:

                  code:

                    type: integer

                    example: 401

                  message:

                    type: string

                    example: " 用户名或密码错误 "

        '500':

          description: 服务器内部错误

          content:

            application/json:

              schema:

                type: object

                properties:

                  code:

                    type: integer

                    example: 500

                  message:

                    type: string

                    example: " 服务器内部错误: xxx"

components:

  securitySchemes:

    bearerAuth:

      type: http

      scheme: bearer

      bearerFormat: JWT

security:

  - bearerAuth: []

代码注释符合 PEP8 规范(含功能、参数、备注),API 文档支持 Swagger 导入(结构完整、包含参数/ 响应/ 错误码),可直接复制到项目中使用,方便同事调用和维护。


本文 节选自《千问高效办公的方法和技巧》,获出版社和作者授权发布。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/18841117/viewspace-3115974/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2022-02-14

  • 博文量
    219
  • 访问量
    196446