Skip to content
本页导航

构建工具

在智能体(agent)系统中,工具的设计与使用具有重要的作用。工具(如API、数据库、爬虫等)为大模型提供了与外界交互的接口,使其能够执行复杂任务或获取实时信息,而不仅仅依赖语言模型的知识。因此,工具的合理构建和使用能够显著增强智能体的实用性与精确性。

为了让大模型更容易理解和使用工具,工具的设计应遵循以下规范性原则:

  • 功能明确性

    每个工具的功能应具有单一性,避免复杂混合功能。清晰的功能描述和输入/输出参数能够帮助大模型快速理解工具的作用并有效调用。

  • 接口标准化

    工具的接口应遵循统一的标准(如RESTful API规范),包括使用一致的命名规则、数据格式和错误处理机制,以便于大模型解析和调用。

  • 输入输出的简洁性

    工具的输入参数应尽量简洁明确,避免冗余信息,同时输出结果应具有结构化格式(如JSON),方便模型解析和处理。

  • 可扩展性与文档化

    每个工具的设计都应支持扩展,允许未来根据需求增添新功能。同时,详细的文档和示例能够帮助大模型更好地理解工具的使用场景和限制。

  • 容错性设计

    工具的使用过程中可能会发生异常或错误,容错设计应包括详细的错误反馈信息,以帮助大模型识别问题并采取相应措施。

构建规范

要求

使用Swagger 3在代码中进行Rest接口描述

  • Java 使用 Springdoc
  • Python 使用 flask_restx 或 基于 Pydantic的注解

示例 (以Java示例)

工具入口 ToolsController

此controller作为所有LLM工具入口,用于根据业务需求进行接口整合并发布为工具。

注意,其中 descriptionoperationId等描述需符合自然语言理解。

入参要求

  • 禁止使用数组或集合等复杂结构数据格式,比如
javascript
// bad, stockCodes 是数组的方式入参,agent在调用工具时传入值格式错误率很高
{
	stockCodes: ["000001", "000002"]
}

// good, stockCodes 以字符串且逗号分隔的方式入参,agent在参数传递时正确率高。
{
	stockCodes: "000001,000002"
}
// bad, stockCodes 是数组的方式入参,agent在调用工具时传入值格式错误率很高
{
	stockCodes: ["000001", "000002"]
}

// good, stockCodes 以字符串且逗号分隔的方式入参,agent在参数传递时正确率高。
{
	stockCodes: "000001,000002"
}

示例

java
@Tag(name = "ToolsController", description = "工具")
@RestController
@RequestMapping(value = "/tools")
public class ToolsController {

	@Resource
	QuoteV2Controller quoteV2Controller;

	@Resource
	StockData stockData;

	@Parameters({
			@Parameter(name = "stockCodes", description = "股票代码,多个代码以英文逗号隔开。", in = ParameterIn.QUERY)
	})
	@Operation(operationId = "listStockRealQuote", description = "获取指定股票代码的最新开盘价、最高价、最低价、收盘价和交易量等信息。")
	@GetMapping("/real-quote/stock")
	public Map<String, StockRealQuoteTool> getStockRealQuote(String stockCodes){
		if(BeanUtils.isEmpty(stockCodes)){
			return null;
		}

		// 参数转换
		List<String> codes = Arrays.asList(stockCodes.split(","));
		StockCodeParams stockCodeParams = new StockCodeParams();
		stockCodeParams.setStockCodes(codes);

		int page = 1;
		int pageSize = 9999;
		String sortColumn = "stockCode";
		String sortOrder = "asc";
		// 实时行情
		List<StockRealQuote> realQuotes = quoteV2Controller.listStockRealQuotesFromCache(stockCodeParams);
		Map<String, StockRealQuote> realQuoteMap = realQuotes.stream()
				.collect(Collectors.toMap(StockRealQuote::getStockCode, o -> o));

		// 扩展行情
		List<StockRealQuoteExtRest> realQuoteExt = quoteV2Controller.listStockRealQuoteExt(stockCodeParams,
				sortColumn, sortOrder, null, page, pageSize).getData();
		Map<String, StockRealQuoteExtRest> realQuoteExtMap = realQuoteExt.stream()
				.collect(Collectors.toMap(StockRealQuoteExtRest::getStockCode, o -> o));

		// 扩展价格行情
		List<StockQuotePriceExtRest> realQuotePriceExt = quoteV2Controller.listStockQuotePriceExtAtRest(stockCodeParams,
				sortColumn, sortOrder, page, pageSize).getData();
		Map<String, StockQuotePriceExtRest> realQuotePriceExtMap =  realQuotePriceExt.stream()
				.collect(Collectors.toMap(StockQuotePriceExtRest::getStockCode, o -> o));

		// 涨停信息
		List<StockQuoteKeepLimitRest> keepLimit = quoteV2Controller.listKeepLimitAtRest(stockCodeParams,
				sortColumn, sortOrder, page, pageSize).getData();
		Map<String, StockQuoteKeepLimitRest> keepLimitMap = keepLimit.stream()
				.collect(Collectors.toMap(StockQuoteKeepLimitRest::getStockCode, o -> o));

		Map<String, StockRealQuoteTool> result = new HashMap<>(0);
		for (String code : stockCodeParams.getStockCodes()){
			StockRealQuoteTool stockRealQuoteTool = new StockRealQuoteTool();
			stockRealQuoteTool.setStockCode(code);
			stockRealQuoteTool.setStockName(stockData.getStockNameFromCache(code));
			stockRealQuoteTool.setStockRealQuote(realQuoteMap.get(code));
			stockRealQuoteTool.setStockRealQuoteExt(realQuoteExtMap.get(code));
			stockRealQuoteTool.setStockRealQuotePriceExt(realQuotePriceExtMap.get(code));
			stockRealQuoteTool.setStockRealQuoteKeepLimit(keepLimitMap.get(code));
			result.put(code, stockRealQuoteTool);
		}
		return result;
	}
}
@Tag(name = "ToolsController", description = "工具")
@RestController
@RequestMapping(value = "/tools")
public class ToolsController {

	@Resource
	QuoteV2Controller quoteV2Controller;

	@Resource
	StockData stockData;

	@Parameters({
			@Parameter(name = "stockCodes", description = "股票代码,多个代码以英文逗号隔开。", in = ParameterIn.QUERY)
	})
	@Operation(operationId = "listStockRealQuote", description = "获取指定股票代码的最新开盘价、最高价、最低价、收盘价和交易量等信息。")
	@GetMapping("/real-quote/stock")
	public Map<String, StockRealQuoteTool> getStockRealQuote(String stockCodes){
		if(BeanUtils.isEmpty(stockCodes)){
			return null;
		}

		// 参数转换
		List<String> codes = Arrays.asList(stockCodes.split(","));
		StockCodeParams stockCodeParams = new StockCodeParams();
		stockCodeParams.setStockCodes(codes);

		int page = 1;
		int pageSize = 9999;
		String sortColumn = "stockCode";
		String sortOrder = "asc";
		// 实时行情
		List<StockRealQuote> realQuotes = quoteV2Controller.listStockRealQuotesFromCache(stockCodeParams);
		Map<String, StockRealQuote> realQuoteMap = realQuotes.stream()
				.collect(Collectors.toMap(StockRealQuote::getStockCode, o -> o));

		// 扩展行情
		List<StockRealQuoteExtRest> realQuoteExt = quoteV2Controller.listStockRealQuoteExt(stockCodeParams,
				sortColumn, sortOrder, null, page, pageSize).getData();
		Map<String, StockRealQuoteExtRest> realQuoteExtMap = realQuoteExt.stream()
				.collect(Collectors.toMap(StockRealQuoteExtRest::getStockCode, o -> o));

		// 扩展价格行情
		List<StockQuotePriceExtRest> realQuotePriceExt = quoteV2Controller.listStockQuotePriceExtAtRest(stockCodeParams,
				sortColumn, sortOrder, page, pageSize).getData();
		Map<String, StockQuotePriceExtRest> realQuotePriceExtMap =  realQuotePriceExt.stream()
				.collect(Collectors.toMap(StockQuotePriceExtRest::getStockCode, o -> o));

		// 涨停信息
		List<StockQuoteKeepLimitRest> keepLimit = quoteV2Controller.listKeepLimitAtRest(stockCodeParams,
				sortColumn, sortOrder, page, pageSize).getData();
		Map<String, StockQuoteKeepLimitRest> keepLimitMap = keepLimit.stream()
				.collect(Collectors.toMap(StockQuoteKeepLimitRest::getStockCode, o -> o));

		Map<String, StockRealQuoteTool> result = new HashMap<>(0);
		for (String code : stockCodeParams.getStockCodes()){
			StockRealQuoteTool stockRealQuoteTool = new StockRealQuoteTool();
			stockRealQuoteTool.setStockCode(code);
			stockRealQuoteTool.setStockName(stockData.getStockNameFromCache(code));
			stockRealQuoteTool.setStockRealQuote(realQuoteMap.get(code));
			stockRealQuoteTool.setStockRealQuoteExt(realQuoteExtMap.get(code));
			stockRealQuoteTool.setStockRealQuotePriceExt(realQuotePriceExtMap.get(code));
			stockRealQuoteTool.setStockRealQuoteKeepLimit(keepLimitMap.get(code));
			result.put(code, stockRealQuoteTool);
		}
		return result;
	}
}

实体类

在描述实体类时,需明确的对该实体类及实体类的属性含义做描述,包含但不限于 周期、单位、范围等

java
/**
 * @author kenneth
 * @date 2024/10/9
 **/
@Schema(description = "股票行情信息(工具)")
@Data
public class StockRealQuoteTool {

	@Schema(description = "股票代码")
	private String stockCode;

	@Schema(description = "股票名称")
	private String stockName;

	@Schema(description = "基本实时行情信息")
	private StockRealQuote stockRealQuote;

	@Schema(description = "扩展实时行情信息")
	private StockRealQuoteExtRest stockRealQuoteExt;

	@Schema(description = "扩展实时行情价格信息")
	private StockQuotePriceExtRest stockRealQuotePriceExt;

	@Schema(description = "扩展实时行情涨停信息")
	private StockQuoteKeepLimitRest stockRealQuoteKeepLimit;

}

/**
 * @author kenneth
 * @date 2024/9/18
 **/
@ApiModel(value = "StockCodeParams", description = "股票代码")
@Data
public class StockCodeParams {

	@ApiModelProperty("股票代码")
	@Schema(description = "股票代码(单股票示例:['000001'],多股票示例: ['600839','000002'])")
	private List<String> stockCodes;

}
/**
 * @author kenneth
 * @date 2024/10/9
 **/
@Schema(description = "股票行情信息(工具)")
@Data
public class StockRealQuoteTool {

	@Schema(description = "股票代码")
	private String stockCode;

	@Schema(description = "股票名称")
	private String stockName;

	@Schema(description = "基本实时行情信息")
	private StockRealQuote stockRealQuote;

	@Schema(description = "扩展实时行情信息")
	private StockRealQuoteExtRest stockRealQuoteExt;

	@Schema(description = "扩展实时行情价格信息")
	private StockQuotePriceExtRest stockRealQuotePriceExt;

	@Schema(description = "扩展实时行情涨停信息")
	private StockQuoteKeepLimitRest stockRealQuoteKeepLimit;

}

/**
 * @author kenneth
 * @date 2024/9/18
 **/
@ApiModel(value = "StockCodeParams", description = "股票代码")
@Data
public class StockCodeParams {

	@ApiModelProperty("股票代码")
	@Schema(description = "股票代码(单股票示例:['000001'],多股票示例: ['600839','000002'])")
	private List<String> stockCodes;

}

工具导出和管理

通过Swagger的描述语言 OpenAPI

通过apifox导出 ToolsController下的swagger描述,并上传至工具git仓库

注意:

  • 目录结构: 分类/服务名/工具名.json,如:

    | - stock

    |---- common-services

    |------ 股票实时行情.json

  • 保存的文件名为 {title}.json,比如 股票实时行情.json

  • openapi描述中的 info.titleinfo.description 必须符合自然语言的逻辑配置。这两个值用于dify、coze等平台配置的工具名称,所有平台需保持一致。

描述示例如下:

json
{
    "openapi": "3.0.1",
    "info": {
        "title": "股票实时行情",
        "description": "获取指定股票代码的最新开盘价、最高价、最低价、收盘价和交易量等信息。",
        "version": "1.0.0"
    },
    "tags": [
        {
            "name": "springdoc"
        },
        {
            "name": "springdoc/ToolsController"
        },
        {
            "name": "ToolsController"
        }
    ],
    "paths": {
        "/common/tools/real-quote/stock": {
            "get": {
                "summary": "listStockRealQuote",
                "deprecated": false,
                "description": "获取股票实时行情数据",
                "operationId": "listStockRealQuote",
                "tags": [
                    "springdoc/ToolsController",
                    "ToolsController"
                ],
                "parameters": [
                    {
                        "name": "stockCodes",
                        "in": "query",
                        "description": "股票代码,多个代码以英文逗号隔开。",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": {
                                        "$ref": "#/components/schemas/StockRealQuoteTool"
                                    },
                                    "properties": {}
                                }
                            }
                        },
                        "headers": {}
                    },
                    "400": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": {
                                        "type": "object"
                                    },
                                    "properties": {}
                                }
                            }
                        },
                        "headers": {}
                    },
                    "451": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": {
                                        "type": "object"
                                    },
                                    "properties": {}
                                }
                            }
                        },
                        "headers": {}
                    }
                },
                "security": []
            }
        }
    },
    "components": {
        "schemas": {
            "StockQuoteKeepLimitRest": {
                "type": "object",
                "properties": {
                    "stockCode": {
                        "type": "string",
                        "description": "股票代码"
                    },
                    "keepLimitUpAmount": {
                        "type": "integer",
                        "description": "今日连续涨停次数",
                        "format": "int32"
                    },
                    "limitUpTime": {
                        "type": "string",
                        "description": "今日涨停时间",
                        "format": "date-time"
                    },
                    "preKeepLimitUpAmount": {
                        "type": "integer",
                        "description": "昨日连续涨停次数",
                        "format": "int32"
                    },
                    "prePubDate": {
                        "type": "string",
                        "description": "昨日发布日期",
                        "format": "date-time"
                    },
                    "stockName": {
                        "type": "string",
                        "description": "股票名称"
                    },
                    "price": {
                        "type": "number",
                        "description": "价格",
                        "format": "double"
                    },
                    "industryCode": {
                        "type": "string",
                        "description": "行业代码"
                    },
                    "industryName": {
                        "type": "string",
                        "description": "行业名称"
                    }
                },
                "description": "股票涨跌停信息"
            },
            "StockRealQuote": {
                "type": "object",
                "properties": {
                    "stockCode": {
                        "type": "string",
                        "description": "股票代码"
                    },
                    "stockName": {
                        "type": "string",
                        "description": "股票名称"
                    },
                    "marketType": {
                        "type": "string",
                        "description": "市场类型"
                    },
                    "openPrice": {
                        "type": "number",
                        "description": "开盘价",
                        "format": "double"
                    },
                    "closePriceYDay": {
                        "type": "number",
                        "description": "昨收价",
                        "format": "double"
                    },
                    "currentPrice": {
                        "type": "number",
                        "description": "最新价",
                        "format": "double"
                    },
                    "changeRatio": {
                        "type": "number",
                        "description": "涨跌幅",
                        "format": "double"
                    },
                    "highPrice": {
                        "type": "number",
                        "description": "最高价",
                        "format": "double"
                    },
                    "lowPrice": {
                        "type": "number",
                        "description": "最低价",
                        "format": "double"
                    },
                    "dataTime": {
                        "type": "string",
                        "description": "数据时间",
                        "format": "date-time"
                    },
                    "sysTime": {
                        "type": "string",
                        "description": "系统时间",
                        "format": "date-time"
                    },
                    "status": {
                        "type": "string",
                        "description": "状态"
                    }
                },
                "description": "实时行情"
            },
            "StockRealQuoteTool": {
                "type": "object",
                "properties": {
                    "stockCode": {
                        "type": "string",
                        "description": "股票代码"
                    },
                    "stockName": {
                        "type": "string",
                        "description": "股票名称"
                    },
                    "stockRealQuote": {
                        "$ref": "#/components/schemas/StockRealQuote"
                    },
                    "stockRealQuoteExt": {
                        "type": "object",
                        "properties": {}
                    },
                    "stockRealQuotePriceExt": {
                        "type": "object",
                        "properties": {}
                    },
                    "stockRealQuoteKeepLimit": {
                        "$ref": "#/components/schemas/StockQuoteKeepLimitRest"
                    }
                },
                "description": "股票行情信息(工具)"
            },
            "StockQuotePriceExtRest": {
                "type": "object",
                "properties": {
                    "stockCode": {
                        "type": "string",
                        "description": "股票代码"
                    },
                    "price": {
                        "type": "number",
                        "description": "股价",
                        "format": "double"
                    },
                    "changeRatio": {
                        "type": "number",
                        "description": "涨跌幅",
                        "format": "double"
                    },
                    "prePrice": {
                        "type": "number",
                        "description": "昨收价",
                        "format": "double"
                    },
                    "dateB4D": {
                        "type": "string",
                        "description": "近4D日期",
                        "format": "date-time"
                    },
                    "priceB4D": {
                        "type": "number",
                        "description": "近4D价格",
                        "format": "double"
                    },
                    "changeRatioB1W": {
                        "type": "number",
                        "description": "近1周涨跌幅",
                        "format": "double"
                    },
                    "dateB9D": {
                        "type": "string",
                        "description": "近9D日期",
                        "format": "date-time"
                    },
                    "priceB9D": {
                        "type": "number",
                        "description": "近9D日价格",
                        "format": "double"
                    },
                    "changeRatioB10D": {
                        "type": "number",
                        "description": "近10日涨跌幅",
                        "format": "double"
                    },
                    "dateB29D": {
                        "type": "string",
                        "description": "近29D日期",
                        "format": "date-time"
                    },
                    "priceB29D": {
                        "type": "number",
                        "description": "近29D价格",
                        "format": "double"
                    },
                    "changeRatioB1M": {
                        "type": "number",
                        "description": "近1月涨跌幅",
                        "format": "double"
                    },
                    "highPriceDate60D": {
                        "type": "string",
                        "description": "创新高日期(60D)",
                        "format": "date-time"
                    },
                    "highPrice60D": {
                        "type": "number",
                        "description": "创新高价格(60D)",
                        "format": "double"
                    },
                    "highVolumeDate60D": {
                        "type": "string",
                        "description": "成交量新高日期(60D)",
                        "format": "date-time"
                    },
                    "highVolume60D": {
                        "type": "number",
                        "description": "成交量新高(60D)",
                        "format": "double"
                    },
                    "highTurnoverDate60D": {
                        "type": "string",
                        "description": "成交额新高(60D)",
                        "format": "date-time"
                    },
                    "highTurnover60D": {
                        "type": "number",
                        "description": "成交额新高(60D)",
                        "format": "double"
                    },
                    "stockName": {
                        "type": "string",
                        "description": "股票名称"
                    }
                },
                "description": "股票行情价格信息"
            },
            "StockRealQuoteExtRest": {
                "type": "object",
                "properties": {
                    "stockCode": {
                        "type": "string",
                        "description": "股票代码"
                    },
                    "stockName": {
                        "type": "string",
                        "description": "股票名称"
                    },
                    "marketType": {
                        "type": "string",
                        "description": "市场类型"
                    },
                    "openPrice": {
                        "type": "number",
                        "description": "开盘价",
                        "format": "double"
                    },
                    "closePriceYDay": {
                        "type": "number",
                        "description": "昨收价",
                        "format": "double"
                    },
                    "currentPrice": {
                        "type": "number",
                        "description": "最新价",
                        "format": "double"
                    },
                    "changeRatio": {
                        "type": "number",
                        "description": "涨跌幅",
                        "format": "double"
                    },
                    "highPrice": {
                        "type": "number",
                        "description": "最高价",
                        "format": "double"
                    },
                    "lowPrice": {
                        "type": "number",
                        "description": "最低价",
                        "format": "double"
                    },
                    "dataTime": {
                        "type": "string",
                        "description": "数据时间",
                        "format": "date-time"
                    },
                    "sysTime": {
                        "type": "string",
                        "description": "系统时间",
                        "format": "date-time"
                    },
                    "status": {
                        "type": "string",
                        "description": "状态"
                    },
                    "dealStockAmount": {
                        "type": "number",
                        "description": "成交股票数(单位:股)",
                        "format": "double"
                    },
                    "dealMoney": {
                        "type": "number",
                        "description": "成交金额(单位:元)",
                        "format": "double"
                    },
                    "limitUpTime": {
                        "type": "string",
                        "description": "涨停时间(Last)",
                        "format": "date-time"
                    },
                    "limitDownTime": {
                        "type": "string",
                        "description": "跌停时间(Last)",
                        "format": "date-time"
                    },
                    "limitUpPrice": {
                        "type": "number",
                        "description": "涨停价",
                        "format": "double"
                    },
                    "limitDownPrice": {
                        "type": "number",
                        "description": "跌停价",
                        "format": "double"
                    },
                    "industryCode": {
                        "type": "string",
                        "description": "行业代码(申万二级)"
                    },
                    "industryName": {
                        "type": "string",
                        "description": "行业名称(申万二级)"
                    },
                    "industryLV1Code": {
                        "type": "string",
                        "description": "行业代码(申万一级)"
                    },
                    "industryLV1Name": {
                        "type": "string",
                        "description": "行业名称(申万一级)"
                    },
                    "circulationValue": {
                        "type": "number",
                        "description": "流通市值(T-1日)",
                        "format": "double"
                    },
                    "totalValue": {
                        "type": "number",
                        "description": "总市值(T日)",
                        "format": "double"
                    }
                },
                "description": "股票行情扩展信息"
            }
        },
        "securitySchemes": {}
    },
    "servers": [
		{
			"url": "https://aistock-retail.test.investoday.net",
			"description": "测试环境"
		},
		{
			"url": "https://ai.investoday.net",
			"description": "正式环境(外网)"
		},
		{
			"url": "http://10.9.1.27:9306",
			"description": "正式环境(内网)(无API"
		},
		{
			"url": "http://10.9.1.27:9306/api",
			"description": "正式环境(内网)(有API)"
		}
	]
}
{
    "openapi": "3.0.1",
    "info": {
        "title": "股票实时行情",
        "description": "获取指定股票代码的最新开盘价、最高价、最低价、收盘价和交易量等信息。",
        "version": "1.0.0"
    },
    "tags": [
        {
            "name": "springdoc"
        },
        {
            "name": "springdoc/ToolsController"
        },
        {
            "name": "ToolsController"
        }
    ],
    "paths": {
        "/common/tools/real-quote/stock": {
            "get": {
                "summary": "listStockRealQuote",
                "deprecated": false,
                "description": "获取股票实时行情数据",
                "operationId": "listStockRealQuote",
                "tags": [
                    "springdoc/ToolsController",
                    "ToolsController"
                ],
                "parameters": [
                    {
                        "name": "stockCodes",
                        "in": "query",
                        "description": "股票代码,多个代码以英文逗号隔开。",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": {
                                        "$ref": "#/components/schemas/StockRealQuoteTool"
                                    },
                                    "properties": {}
                                }
                            }
                        },
                        "headers": {}
                    },
                    "400": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": {
                                        "type": "object"
                                    },
                                    "properties": {}
                                }
                            }
                        },
                        "headers": {}
                    },
                    "451": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": {
                                        "type": "object"
                                    },
                                    "properties": {}
                                }
                            }
                        },
                        "headers": {}
                    }
                },
                "security": []
            }
        }
    },
    "components": {
        "schemas": {
            "StockQuoteKeepLimitRest": {
                "type": "object",
                "properties": {
                    "stockCode": {
                        "type": "string",
                        "description": "股票代码"
                    },
                    "keepLimitUpAmount": {
                        "type": "integer",
                        "description": "今日连续涨停次数",
                        "format": "int32"
                    },
                    "limitUpTime": {
                        "type": "string",
                        "description": "今日涨停时间",
                        "format": "date-time"
                    },
                    "preKeepLimitUpAmount": {
                        "type": "integer",
                        "description": "昨日连续涨停次数",
                        "format": "int32"
                    },
                    "prePubDate": {
                        "type": "string",
                        "description": "昨日发布日期",
                        "format": "date-time"
                    },
                    "stockName": {
                        "type": "string",
                        "description": "股票名称"
                    },
                    "price": {
                        "type": "number",
                        "description": "价格",
                        "format": "double"
                    },
                    "industryCode": {
                        "type": "string",
                        "description": "行业代码"
                    },
                    "industryName": {
                        "type": "string",
                        "description": "行业名称"
                    }
                },
                "description": "股票涨跌停信息"
            },
            "StockRealQuote": {
                "type": "object",
                "properties": {
                    "stockCode": {
                        "type": "string",
                        "description": "股票代码"
                    },
                    "stockName": {
                        "type": "string",
                        "description": "股票名称"
                    },
                    "marketType": {
                        "type": "string",
                        "description": "市场类型"
                    },
                    "openPrice": {
                        "type": "number",
                        "description": "开盘价",
                        "format": "double"
                    },
                    "closePriceYDay": {
                        "type": "number",
                        "description": "昨收价",
                        "format": "double"
                    },
                    "currentPrice": {
                        "type": "number",
                        "description": "最新价",
                        "format": "double"
                    },
                    "changeRatio": {
                        "type": "number",
                        "description": "涨跌幅",
                        "format": "double"
                    },
                    "highPrice": {
                        "type": "number",
                        "description": "最高价",
                        "format": "double"
                    },
                    "lowPrice": {
                        "type": "number",
                        "description": "最低价",
                        "format": "double"
                    },
                    "dataTime": {
                        "type": "string",
                        "description": "数据时间",
                        "format": "date-time"
                    },
                    "sysTime": {
                        "type": "string",
                        "description": "系统时间",
                        "format": "date-time"
                    },
                    "status": {
                        "type": "string",
                        "description": "状态"
                    }
                },
                "description": "实时行情"
            },
            "StockRealQuoteTool": {
                "type": "object",
                "properties": {
                    "stockCode": {
                        "type": "string",
                        "description": "股票代码"
                    },
                    "stockName": {
                        "type": "string",
                        "description": "股票名称"
                    },
                    "stockRealQuote": {
                        "$ref": "#/components/schemas/StockRealQuote"
                    },
                    "stockRealQuoteExt": {
                        "type": "object",
                        "properties": {}
                    },
                    "stockRealQuotePriceExt": {
                        "type": "object",
                        "properties": {}
                    },
                    "stockRealQuoteKeepLimit": {
                        "$ref": "#/components/schemas/StockQuoteKeepLimitRest"
                    }
                },
                "description": "股票行情信息(工具)"
            },
            "StockQuotePriceExtRest": {
                "type": "object",
                "properties": {
                    "stockCode": {
                        "type": "string",
                        "description": "股票代码"
                    },
                    "price": {
                        "type": "number",
                        "description": "股价",
                        "format": "double"
                    },
                    "changeRatio": {
                        "type": "number",
                        "description": "涨跌幅",
                        "format": "double"
                    },
                    "prePrice": {
                        "type": "number",
                        "description": "昨收价",
                        "format": "double"
                    },
                    "dateB4D": {
                        "type": "string",
                        "description": "近4D日期",
                        "format": "date-time"
                    },
                    "priceB4D": {
                        "type": "number",
                        "description": "近4D价格",
                        "format": "double"
                    },
                    "changeRatioB1W": {
                        "type": "number",
                        "description": "近1周涨跌幅",
                        "format": "double"
                    },
                    "dateB9D": {
                        "type": "string",
                        "description": "近9D日期",
                        "format": "date-time"
                    },
                    "priceB9D": {
                        "type": "number",
                        "description": "近9D日价格",
                        "format": "double"
                    },
                    "changeRatioB10D": {
                        "type": "number",
                        "description": "近10日涨跌幅",
                        "format": "double"
                    },
                    "dateB29D": {
                        "type": "string",
                        "description": "近29D日期",
                        "format": "date-time"
                    },
                    "priceB29D": {
                        "type": "number",
                        "description": "近29D价格",
                        "format": "double"
                    },
                    "changeRatioB1M": {
                        "type": "number",
                        "description": "近1月涨跌幅",
                        "format": "double"
                    },
                    "highPriceDate60D": {
                        "type": "string",
                        "description": "创新高日期(60D)",
                        "format": "date-time"
                    },
                    "highPrice60D": {
                        "type": "number",
                        "description": "创新高价格(60D)",
                        "format": "double"
                    },
                    "highVolumeDate60D": {
                        "type": "string",
                        "description": "成交量新高日期(60D)",
                        "format": "date-time"
                    },
                    "highVolume60D": {
                        "type": "number",
                        "description": "成交量新高(60D)",
                        "format": "double"
                    },
                    "highTurnoverDate60D": {
                        "type": "string",
                        "description": "成交额新高(60D)",
                        "format": "date-time"
                    },
                    "highTurnover60D": {
                        "type": "number",
                        "description": "成交额新高(60D)",
                        "format": "double"
                    },
                    "stockName": {
                        "type": "string",
                        "description": "股票名称"
                    }
                },
                "description": "股票行情价格信息"
            },
            "StockRealQuoteExtRest": {
                "type": "object",
                "properties": {
                    "stockCode": {
                        "type": "string",
                        "description": "股票代码"
                    },
                    "stockName": {
                        "type": "string",
                        "description": "股票名称"
                    },
                    "marketType": {
                        "type": "string",
                        "description": "市场类型"
                    },
                    "openPrice": {
                        "type": "number",
                        "description": "开盘价",
                        "format": "double"
                    },
                    "closePriceYDay": {
                        "type": "number",
                        "description": "昨收价",
                        "format": "double"
                    },
                    "currentPrice": {
                        "type": "number",
                        "description": "最新价",
                        "format": "double"
                    },
                    "changeRatio": {
                        "type": "number",
                        "description": "涨跌幅",
                        "format": "double"
                    },
                    "highPrice": {
                        "type": "number",
                        "description": "最高价",
                        "format": "double"
                    },
                    "lowPrice": {
                        "type": "number",
                        "description": "最低价",
                        "format": "double"
                    },
                    "dataTime": {
                        "type": "string",
                        "description": "数据时间",
                        "format": "date-time"
                    },
                    "sysTime": {
                        "type": "string",
                        "description": "系统时间",
                        "format": "date-time"
                    },
                    "status": {
                        "type": "string",
                        "description": "状态"
                    },
                    "dealStockAmount": {
                        "type": "number",
                        "description": "成交股票数(单位:股)",
                        "format": "double"
                    },
                    "dealMoney": {
                        "type": "number",
                        "description": "成交金额(单位:元)",
                        "format": "double"
                    },
                    "limitUpTime": {
                        "type": "string",
                        "description": "涨停时间(Last)",
                        "format": "date-time"
                    },
                    "limitDownTime": {
                        "type": "string",
                        "description": "跌停时间(Last)",
                        "format": "date-time"
                    },
                    "limitUpPrice": {
                        "type": "number",
                        "description": "涨停价",
                        "format": "double"
                    },
                    "limitDownPrice": {
                        "type": "number",
                        "description": "跌停价",
                        "format": "double"
                    },
                    "industryCode": {
                        "type": "string",
                        "description": "行业代码(申万二级)"
                    },
                    "industryName": {
                        "type": "string",
                        "description": "行业名称(申万二级)"
                    },
                    "industryLV1Code": {
                        "type": "string",
                        "description": "行业代码(申万一级)"
                    },
                    "industryLV1Name": {
                        "type": "string",
                        "description": "行业名称(申万一级)"
                    },
                    "circulationValue": {
                        "type": "number",
                        "description": "流通市值(T-1日)",
                        "format": "double"
                    },
                    "totalValue": {
                        "type": "number",
                        "description": "总市值(T日)",
                        "format": "double"
                    }
                },
                "description": "股票行情扩展信息"
            }
        },
        "securitySchemes": {}
    },
    "servers": [
		{
			"url": "https://aistock-retail.test.investoday.net",
			"description": "测试环境"
		},
		{
			"url": "https://ai.investoday.net",
			"description": "正式环境(外网)"
		},
		{
			"url": "http://10.9.1.27:9306",
			"description": "正式环境(内网)(无API"
		},
		{
			"url": "http://10.9.1.27:9306/api",
			"description": "正式环境(内网)(有API)"
		}
	]
}

lhiro