乐于分享
好东西不私藏

Javaer的AI学习之路——Spring AI 入门:(4)提示词、提示词模板、提示词工程与模型参数

Javaer的AI学习之路——Spring AI 入门:(4)提示词、提示词模板、提示词工程与模型参数

本章导读:你向AI提问的方式,直接决定了它回答的质量。就像与人沟通一样,把需求表达得越清楚,对方理解得就越准确。在Spring AI中,提示词的设计和构造有着一套完整的体系——从基础的四种消息角色,到动态的提示模板,再到工程化的最佳实践。本章将带你系统掌握这些知识,让你从“随意提问”进阶到“专业引导”。

4.1 提示词的本质

4.1.1 什么是Prompt

Prompt(提示词)是我们与AI沟通的唯一方式。你可以把它理解为给AI下达的指令或提出的问题——就像和人沟通一样,你说得越清楚,对方理解得就越准确,Prompt写得好不好,直接决定了AI输出的质量。

一个有效的Prompt并非简单的提问,而是指令与上下文的巧妙融合。它告诉模型你期望它做什么(指令),并为其提供完成任务所需的背景信息(上下文)。模型接收到Prompt后,会基于其庞大的知识库和对语言的理解,生成符合你指令和上下文的输出。

从API层面来看,Spring AI中的Prompt并非简单的字符串,而是一个容器。Prompt类充当一系列有组织的Message对象和请求ChatOptions的容器。每条Message在提示中都包含一个独特的角色,其内容和意图不同。这些角色可以包含各种元素,从用户查询到AI生成的对相关背景信息的响应。这种安排支持与AI模型进行复杂而详细的交互。

4.1.2 Prompt的组成要素

一个完整的Prompt在Spring AI中由两个核心部分组成:

  • 消息列表(List<Message>:包含系统消息、用户消息、助手消息等,每条消息都有特定的角色。

  • ChatOptions:控制模型行为的参数,如temperaturemaxTokens等。

4.1.3 四种Message角色详解

在Spring AI中,消息被抽象为几个类,每种类型对应对话中的一个特定角色,“同一句话,放在不同消息角色里,效果可能完全不同”——Prompt的本质不是提问,而是精确表达任务。

消息类型
说明
典型用途
SystemMessage
系统提示词,设定AI角色和行为
“你是一个专业的Java技术专家”
UserMessage
用户消息,实际的问题或指令
“什么是Spring AI?”
AssistantMessage
AI的回复消息
记录对话历史
ToolResponseMessage
工具调用返回的结果
天气查询结果

SystemMessage(系统消息) 是最重要也最容易被忽视的消息类型。它在对话开始前设定AI的身份、行为准则、输出风格或知识边界,通常用户不可见,但深刻影响AI的所有响应。简而言之,SystemMessage告诉模型“你是谁”和“你应该怎么做”。

UserMessage(用户消息) 承载用户的真实需求——问题、指令或陈述,这是AI生成响应的直接依据。

AssistantMessage(助理消息) 代表AI模型对之前消息的回复,主要用于构造多轮对话历史。

ToolResponseMessage(工具响应消息) 将工具执行的结果反馈给AI,供其生成最终回答。框架的@Tool注解已经封装了这一细节,开发者通常无需直接操作。

理解这些消息类型是构造高质量Prompt的基础。SystemMessage设定角色和边界,UserMessage提出具体任务,两者分工明确,切忌将所有内容混入UserMessage。

4.2 提示工程基础

提示工程(Prompt Engineering)是指通过精心设计提示词来优化AI模型输出效果的一套方法论。以下是三种核心的提示工程技术。

4.2.1 零样本提示(Zero-shot Prompting)

零样本提示是最基础的提示模式:直接向AI模型发出指令,不提供任何示例,让模型依靠其训练时获得的知识来理解和执行任务。第三章中的所有示例都属于零样本提示。

@GetMapping("/chat")public String chat(@RequestParam(defaultValue = "你好") String msg) {return chatClient.prompt()            .user(msg)            .call()            .content();}

4.2.2 少样本提示(Few-shot Prompting)

与零样本相反,少样本提示在发出指令的同时提供一两个示例,让模型参考示例的格式和风格来生成输出。这种方式在需要模型模仿特定输出格式时特别有效。

以下示例展示了如何让AI输出固定格式的回答:

@GetMapping("/classification")public String classifySentiment(@RequestParam String review) {return chatClient.prompt()            .system("""                    你是一个情感分析助手。将用户评论分类为「好评」「中评」或「差评」。                    示例:                    输入:"这个产品质量太差了,完全不符合预期"                    输出:差评                    输入:"物超所值,非常满意!"                    输出:好评                    输入:"还行吧,没有特别惊艳但也不差"                    输出:中评                    """)            .user(review)            .call()            .content();}

4.2.3 思维链提示(Chain-of-Thought)

对于复杂推理问题,思维链提示通过引导模型“一步一步思考”来提升推理准确性。在提示中要求模型展示推理过程,而非直接给出结论。

@GetMapping("/reasoning")public String solveProblem(@RequestParam String problem) {return chatClient.prompt()            .system("""                     你是一个逻辑推理专家。对于复杂问题,请按以下步骤分析:                    1. 拆解问题的关键要素                    2. 逐步推理每个要素的逻辑                    3. 综合得出结论                    请一步一步分析,不要直接给出最终答案。                    """)            .user(problem)            .call()            .content();}

4.2.4 系统提示词的设计原则

一个高质量的SystemMessage通常包含多个关键要素,常见的设计框架是“角色+任务+格式+示例”的四段式结构。

要素
说明
示例
角色
告诉模型“你是谁”
“你是一个专业的Java技术助手”
任务
你要做什么
“回答技术问题、帮助debug代码”
约束
什么能做、什么不能做
“不确定的内容要说明,不要编造”
格式
用什么格式返回
“使用Markdown格式,代码用代码块包裹”
示例
给一两个示例让模型参考
Few-shot Prompting

在代码中,可以通过ChatClient.BuilderdefaultSystem()来配置默认的系统消息。这样配置后,这段文本会作为基础角色设定,注入到每次对话的上下文中。

@RestControllerpublicclassSystemPromptController {privatefinal ChatClient chatClient;publicSystemPromptController(ChatClient.Builder builder) {this.chatClient = builder                .defaultSystem("""                    你是一个专业的Java技术助手。                    职责:                    - 回答Java、Spring Boot相关的技术问题                    - 帮助用户理解代码原理                    - 提供最佳实践建议                    规则:                    - 代码示例使用Java 17+语法                    - 回答简洁,不要过度解释                    - 不确定的内容要说明,不要编造                    """)                .build();    }@GetMapping("/ask")public String ask(@RequestParam String question) {return chatClient.prompt()                .user(question)                .call()                .content();    }}

4.3 使用PromptTemplate动态构造提示

在实际开发中,我们经常需要根据不同的用户输入动态构造提示词。如果不用模板,每个问题都要写一个新的请求,代码会变得重复、难以维护。

PromptTemplate正是为解决这个问题而设计。使用模板,你可以定义一套包含占位符的提示结构,运行时动态替换占位符的值,实现“一套模板,复用多个场景”。

4.3.1 基本语法

PromptTemplate是Spring AI中用于创建带变量模板的Prompt的核心类,使用{}包裹占位符:

// 1. 创建模板,使用{}包裹占位符PromptTemplatetemplate=newPromptTemplate("你好,我叫{name},今年{age}岁");// 2. 填充变量,Map的key对应模板中的占位符Promptprompt= template.create(Map.of("name""张三""age""25"));// 3. 调用AIStringresult= chatClient.prompt(prompt).call().content();// 输出:你好,我叫张三,今年25岁

4.3.2 在ChatClient中直接使用模板

ChatClient也支持在链式调用中直接使用模板,语法更加简洁:

@GetMapping("/introduce")public String introduce(@RequestParam String name, @RequestParamint age) {return chatClient.prompt()            .user(u -> u.text("你好,我叫{name},今年{age}岁")                .param("name", name)                .param("age", age))            .call()            .content();}

4.3.3 SystemPromptTemplate:系统消息专用模板

SystemPromptTemplate是专门用于创建系统消息的模板,用法与PromptTemplate几乎一致:

// 创建系统消息模板SystemPromptTemplatesystemTemplate=newSystemPromptTemplate("你是一个{profession}专家,擅长{skill}");// 填充变量,生成SystemMessageMessagesystemMessage= systemTemplate.createMessage(Map.of("profession""Java","skill""后端开发"));// 输出:你是一个Java专家,擅长后端开发

4.3.4 从外部文件加载模板

将模板内容从代码中分离到外部文件,是一种良好的工程实践。模板与代码解耦,便于维护和版本控制。

步骤一:创建模板文件

src/main/resources/prompts/目录下创建模板文件qa-template.txt

请基于以下背景信息回答问题。【背景信息】{context}【问题】{question}【要求】- 如果背景信息中包含答案,请基于背景信息回答- 如果背景信息中不包含答案,请明确告知用户"根据现有信息无法回答"- 回答要简洁、准确

步骤二:在Java代码中加载

import org.springframework.core.io.ClassPathResource;import org.springframework.ai.chat.prompt.PromptTemplate;@GetMapping("/rag-answer")public String answerWithTemplate(@RequestParam String context,@RequestParam String question)throws IOException {// 从resources/prompts/qa-template.txt加载模板Resourceresource=newClassPathResource("prompts/qa-template.txt");StringtemplateContent= resource.getContentAsString(StandardCharsets.UTF_8);PromptTemplatepromptTemplate=newPromptTemplate(templateContent);Promptprompt= promptTemplate.create(Map.of("context", context,"question", question    ));return chatClient.prompt(prompt).call().content();}

这种模板文件化管理方式将提示词与Java代码分离,对于提示词较长、格式复杂或需要频繁调整的场景,强烈推荐使用。

4.4 模型参数详解

在发起请求与大模型交互时,可以配置各类核心参数,以此控制模型的生成行为、回复长度、随机性等关键特性。

ChatOptions是Spring AI中管理这些配置的核心接口,它继承了ModelOptions根接口。ChatOptions除了一个默认实现类DefaultChatOptions外,还有两个子接口:ToolCallingChatOptions(工具调用配置)和StructuredOutputChatOptions(结构化输出配置)。

4.4.1 核心参数说明

参数
作用
取值范围
推荐场景
temperature
控制输出随机性,越低越确定,越高越有创意
0~2(不同模型范围略有差异)
代码生成用0.10.3,创意写作用0.81.0
maxTokens
限制模型输出的最大Token数量
取决于模型上下文窗口
短问答用500,长内容生成用2000+
topP
核采样,选择概率和质量达到P的token集
0~1
通常与temperature配合,推荐调整其中一个即可
frequencyPenalty
惩罚重复token,抑制模型重复内容
-2~2
需要多样化输出时可设为0.5~1.0
presencePenalty
惩罚已出现过的主题,鼓励引入新话题
-2~2
需要探索新话题时可设为0.5~1.0

temperature(温度)详解:温度参数可能是影响模型输出最直观的配置。低温度(0.1-0.3)使模型倾向于选择高概率的token,输出更确定、更稳定;高温度(0.8-1.0)增加低概率token被选中的机会,输出更多样、更有创意。

maxTokens(最大输出长度):限制模型单次回复的Token数量上限,同时直接影响API调用成本(按Token计费)。

4.4.2 在ChatClient中配置参数

ChatClient提供了链式的参数配置方式:

@GetMapping("/code")public String generateCode(@RequestParam String requirement) {return chatClient.prompt()            .user(requirement)            .options(ChatOptions.builder()                .temperature(0.2D)      // 低温度保证代码准确                .maxTokens(1000)        // 限制输出长度                .topP(0.95D)            // 核采样                .build())            .call()            .content();}

也可以通过ChatOptions.builder快速构建配置,兼容所有厂商:

ChatOptionsoptions= ChatOptions.builder()    .model("qwen-plus")           // 指定模型    .temperature(0.1D)            // 低随机性,适合精准回答    .maxTokens(1024)              // 最大输出1024 Token    .topP(0.9D)                   // 核采样参数    .stopSequences(List.of("###")) // 停止词    .build();

4.4.3 厂商专属配置

每个大模型厂商都有自己独有的API参数,Spring AI为特定厂商大模型提供了不同的ChatOptions实现类。例如,如果使用通义千问并通过DashScope OpenAI兼容端点接入,标准ChatOptions即可满足大部分需求;如果直接使用其他厂商的专有SDK,可以使用对应的专属配置类。

4.5 综合实战:可配置的智能问答助手

现在,让我们将本章所学内容整合起来,构建一个完整的可配置智能问答助手。这个助手支持:

  • 动态系统提示词(用户可指定AI角色)
  • 模型参数可调节
  • 从外部模板文件加载提示词
  • 支持多轮对话参数配置

4.5.1 完整代码实现

@RestController@RequestMapping("/configurable")publicclassConfigurableChatController {privatefinal ChatClient chatClient;publicConfigurableChatController(ChatClient.Builder builder) {this.chatClient = builder.build();    }/**     * 核心问答接口     * @param question 用户问题     * @param systemPrompt 可选系统提示词,默认值为"你是一个乐于助人的AI助手"     * @param role AI角色,用于模板替换     * @param temperature 温度参数,控制输出随机性,默认0.7     * @param maxTokens 最大输出Token数,默认500     */@GetMapping("/ask")public String ask(@RequestParam String question,@RequestParam(defaultValue = "你是一个乐于助人的AI助手") String systemPrompt,@RequestParam(defaultValue = "普通助手") String role,@RequestParam(defaultValue = "0.7")double temperature,@RequestParam(defaultValue = "500")int maxTokens) {// 方式1:直接使用传入的系统提示词// 方式2:也可以从模板文件中加载系统提示词StringfinalSystemPrompt="你是一个" + role + "。" + systemPrompt;return chatClient.prompt()                .system(finalSystemPrompt)                .user(question)                .options(ChatOptions.builder()                    .temperature(temperature)                    .maxTokens(maxTokens)                    .build())                .call()                .content();    }/**     * 使用模板文件的问答接口(演示外部模板加载)     */@GetMapping("/ask-with-template")public String askWithTemplate(@RequestParam String role,@RequestParam String topic,@RequestParam String question)throws IOException {// 从外部文件加载系统消息模板Resourceresource=newClassPathResource("prompts/system-template.txt");StringsystemTemplateStr= resource.getContentAsString(StandardCharsets.UTF_8);SystemPromptTemplatesystemTemplate=newSystemPromptTemplate(systemTemplateStr);// 创建系统消息MessagesystemMessage= systemTemplate.createMessage(Map.of("role", role,"topic", topic        ));// 构建完整的Prompt并调用return chatClient.prompt()                .messages(systemMessage)                .user(question)                .options(ChatOptions.builder()                    .temperature(0.7)                    .maxTokens(800)                    .build())                .call()                .content();    }}

其中src/main/resources/prompts/system-template.txt代码如下:

你是一个{role},专注于{topic}领域。你的回答风格:- 专业、准确、简洁- 使用中文回答- 如果需要代码示例,请使用适当的代码块格式请基于以上角色和领域知识,回答用户的问题。

4.5.2 测试示例

测试1:零样本问答

GET /configurable/ask?question=什么是Spring AI&role=Java专家&temperature=0.2

输出结果会更确定、更专业,适合技术问答场景。

测试2:带创意的回答

GET /configurable/ask-with-template?question=讲一下Java面向对象&role=Java专家&topic=编程

输出结果按照你的文件的风格展示。

4.6 常见误区与最佳实践

4.6.1 ❌ 误区一:把控制参数写进提示词

很多人写Prompt时喜欢加这些句子:

  • “请保持稳定输出”
  • “不要超过200字”
  • “回答要随机一些”

这些说法不是完全没用,但Spring AI提供了更专业的控制方式——通过ChatOptions配置temperaturemaxTokens等参数来控制生成行为。上面的示例已给出正确示范。

4.6.2 ❌ 误区二:提示词和代码不分家

当提示词内容较长时,散落在Java代码字符串中既不便于维护,也难以协作。正确的做法是将提示词模板抽取到外部文件(src/main/resources/prompts/目录下)或数据库中,实现提示词与代码的分离。

4.6.3 ✅ 良好提示词的标准

一个工程化良好的Prompt在代码中应具备以下特征:

┌─────────────────────────────────────────────────────┐│ SystemMessage: 角色 + 任务 + 约束 + 格式            │├─────────────────────────────────────────────────────┤│ UserMessage: 具体问题(支持参数化)                 │├─────────────────────────────────────────────────────┤│ ChatOptions: temperature / maxTokens 等参数配置     │└─────────────────────────────────────────────────────┘

将这些要素拆开、参数化,而不是揉成一团堆在一个字符串里,这才是工程化的方式。

4.7 本章小结

在本章中,我们系统学习了Spring AI的提示词体系:

  • 四种消息类型SystemMessage设定AI角色,UserMessage承载用户任务,AssistantMessage记录AI回复,ToolResponseMessage反馈工具执行结果

  • 提示工程基础:零样本提示、少样本提示(通过示例让模型模仿)、思维链提示(引导模型一步步思考)

  • PromptTemplate:使用模板实现提示词参数化和复用,支持从外部文件加载,将提示词与Java代码分离

  • 模型参数temperature控制输出随机性,maxTokens限制输出长度,ChatOptions统一管理

  • 综合实战:构建了一个完整的可配置智能问答助手,演示了上述所有技术的整合使用

  • 最佳实践:区分系统消息和用户消息、使用ChatOptions控制参数、提示词与代码分离

提示词质量在很大程度上决定了AI应用的输出质量。从本章开始,你不再是“随意提问”的用户,而是能够“专业引导”AI的开发者。

下一章,我们将学习如何让AI输出结构化的数据——将模型返回的自然语言直接映射为Java对象,让AI的输出真正可以被业务代码直接消费。

参考来源

  • Spring AI官方Prompt API文档
  • Spring AI ChatClient源码分析
  • 阿里云DashScope API参数参考

项目源码请私信回复:Spring AI

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-06-04 12:28:39 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/709510.html
  2. 运行时间 : 3.853579s [ 吞吐率:0.26req/s ] 内存消耗:4,800.12kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=87a26f134f2e33aa3267bca72e64525b
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.059856s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.045230s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.218571s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.031672s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000997s ]
  6. SELECT * FROM `set` [ RunTime:0.123569s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001000s ]
  8. SELECT * FROM `article` WHERE `id` = 709510 LIMIT 1 [ RunTime:0.628384s ]
  9. UPDATE `article` SET `lasttime` = 1780547321 WHERE `id` = 709510 [ RunTime:0.142936s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000690s ]
  11. SELECT * FROM `article` WHERE `id` < 709510 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.002445s ]
  12. SELECT * FROM `article` WHERE `id` > 709510 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.003557s ]
  13. SELECT * FROM `article` WHERE `id` < 709510 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.217767s ]
  14. SELECT * FROM `article` WHERE `id` < 709510 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.868790s ]
  15. SELECT * FROM `article` WHERE `id` < 709510 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.384600s ]
3.873712s