prompts提示词经典模板

prompts.py 中的提示词模板详解

文件中定义了两个核心提示词模板:REASON_PROMPTRELEVANT_EXTRACTION_PROMPT。这两个模板在 DeepResearcher 的推理过程中扮演着关键角色。下面我将详细解析这两个模板的结构和功能。

REASON_PROMPT 详解

REASON_PROMPT 是用于指导语言模型进行推理和搜索的主要提示词。它的设计非常精巧,包含多个关键部分:

1. 角色与能力定义

"You are a reasoning assistant with the ability to perform dataset searches to help "
"you answer the user's question accurately. You have special tools:\n\n"

这部分明确定义了语言模型的角色(推理助手)和核心能力(执行数据集搜索)。通过明确的角色定位,帮助模型理解其应该如何行动。

2. 工具使用说明

f"- To perform a search: write {BEGIN_SEARCH_QUERY} your query here {END_SEARCH_QUERY}.\n"
f"Then, the system will search and analyze relevant content, then provide you with helpful information in the format {BEGIN_SEARCH_RESULT} ...search results... {END_SEARCH_RESULT}.\n\n"
f"You can repeat the search process multiple times if necessary. The maximum number of search attempts is limited to {MAX_SEARCH_LIMIT}.\n\n"

这部分详细说明了如何使用搜索工具:

  • 使用特定标记包装搜索查询
  • 系统将返回的结果格式
  • 可以多次搜索的规则
  • 搜索次数的限制

通过明确的工具使用说明,模型知道如何正确格式化其输出以触发搜索功能。

3. 示例学习 - 示例1

这是一个复杂问题的完整示例,展示了如何通过多轮搜索解决比较类问题:

"-- Example 1 --\n"
"Question: \"Are both the directors of Jaws and Casino Royale from the same country?\"\n"
"Assistant:\n"
f"    {BEGIN_SEARCH_QUERY}Who is the director of Jaws?{END_SEARCH_QUERY}\n\n"
"User:\n"
f"    {BEGIN_SEARCH_RESULT}\nThe director of Jaws is Steven Spielberg...\n{END_SEARCH_RESULT}\n\n"
"Continues reasoning with the new information.\n"
"Assistant:\n"
f"    {BEGIN_SEARCH_QUERY}Where is Steven Spielberg from?{END_SEARCH_QUERY}\n\n"
"User:\n"
f"    {BEGIN_SEARCH_RESULT}\nSteven Allan Spielberg is an American filmmaker...\n{END_SEARCH_RESULT}\n\n"
"Continues reasoning with the new information...\n\n"
"Assistant:\n"
f"    {BEGIN_SEARCH_QUERY}Who is the director of Casino Royale?{END_SEARCH_QUERY}\n\n"
"User:\n"
f"    {BEGIN_SEARCH_RESULT}\nCasino Royale is a 2006 spy film directed by Martin Campbell...\n{END_SEARCH_RESULT}\n\n"
"Continues reasoning with the new information...\n\n"
"Assistant:\n"
f"    {BEGIN_SEARCH_QUERY}Where is Martin Campbell from?{END_SEARCH_QUERY}\n\n"
"User:\n"
f"    {BEGIN_SEARCH_RESULT}\nMartin Campbell (born 24 October 1943) is a New Zealand film and television director...\n{END_SEARCH_RESULT}\n\n"
"Continues reasoning with the new information...\n\n"
"Assistant:\nIt's enough to answer the question\n"

这个示例展示了:

  • 如何将复杂问题分解为多个简单查询
  • 如何基于前一步的结果构建下一步的查询
  • 如何在获取足够信息后停止搜索
  • 正确的标记使用方式

4. 示例学习 - 示例2

这是一个较简单问题的示例,展示了如何通过两轮搜索解决事实查询问题:

"-- Example 2 --\n"
"Question: \"When was the founder of craigslist born?\"\n"
"Assistant:\n"
f"    {BEGIN_SEARCH_QUERY}Who was the founder of craigslist?{END_SEARCH_QUERY}\n\n"
"User:\n"
f"    {BEGIN_SEARCH_RESULT}\nCraigslist was founded by Craig Newmark...\n{END_SEARCH_RESULT}\n\n"
"Continues reasoning with the new information.\n"
"Assistant:\n"
f"    {BEGIN_SEARCH_QUERY} When was Craig Newmark born?{END_SEARCH_QUERY}\n\n"
"User:\n"
f"    {BEGIN_SEARCH_RESULT}\nCraig Newmark was born on December 6, 1952...\n{END_SEARCH_RESULT}\n\n"
"Continues reasoning with the new information...\n\n"
"Assistant:\nIt's enough to answer the question\n"

这个示例展示了:

  • 如何处理需要两步推理的简单问题
  • 如何在第一步获取实体信息后,在第二步查询该实体的具体属性

5. 注意事项与提醒

"**Remember**:\n"
f"- You have a dataset to search, so you just provide a proper search query.\n"
f"- Use {BEGIN_SEARCH_QUERY} to request a dataset search and end with {END_SEARCH_QUERY}.\n"
"- The language of query MUST be as the same as 'Question' or 'search result'.\n"
"- If no helpful information can be found, rewrite the search query to be less and precise keywords.\n"
"- When done searching, continue your reasoning.\n\n"
'Please answer the following question. You should think step by step to solve it.\n\n'

这部分提供了重要的使用提醒:

  • 强调模型的角色是提供搜索查询,而不是直接回答
  • 重申标记的正确使用方式
  • 强调查询语言需要与问题或搜索结果语言一致
  • 提供查询优化策略
  • 指导在完成搜索后继续推理
  • 鼓励步骤化思考

RELEVANT_EXTRACTION_PROMPT 详解

RELEVANT_EXTRACTION_PROMPT 是用于从检索到的文档中提取相关信息的提示词。它的结构更加正式,采用了任务指导的形式:

1. 任务说明

"""Task Instruction:You are tasked with reading and analyzing web pages based on the following inputs: **Previous Reasoning Steps**, **Current Search Query**, and **Searched Web Pages**. Your objective is to extract relevant and helpful information for Current Search Query from the Searched Web Pages and seamlessly integrate this information into the Previous Reasoning Steps to continue reasoning for the original question.

这部分明确定义了任务的性质(分析网页)、输入(之前的推理步骤、当前搜索查询、搜索到的网页)和目标(提取相关信息并整合到推理过程中)。

2. 详细指南

    Guidelines:1. Analyze the Searched Web Pages:- Carefully review the content of each searched web page.- Identify factual information that is relevant to the Current Search Query and can aid in the reasoning process for the original question.2. Extract Relevant Information:- Select the information from the Searched Web Pages that directly contributes to advancing the **Previous Reasoning Steps**.- Ensure that the extracted information is accurate and relevant.

这部分提供了两个主要步骤的详细指南:

  • 分析网页内容,找出与当前查询相关的事实信息
  • 提取能够推进推理过程的相关信息,确保准确性和相关性

3. 输出格式规范

    3. Output Format:- If the web pages provide helpful information for current search query: Present the information beginning with `**Final Information**` as shown below.- The language of query MUST BE as the same as 'Search Query' or 'Web Pages'.\n"Final Information[Helpful information]- If the web pages do not provide any helpful information for current search query: Output the following text.Final InformationNo helpful information found.

这部分详细规定了输出格式:

  • 有用信息的格式:以"Final Information"开头,后跟有用信息
  • 无用信息的格式:固定文本"No helpful information found."
  • 强调语言一致性要求

4. 输入参数占位符

    Inputs:- Previous Reasoning Steps:    {prev_reasoning}- Current Search Query:    {search_query}- Searched Web Pages:    {document}

这部分定义了三个关键输入参数的占位符:

  • {prev_reasoning}:之前的推理步骤,提供上下文
  • {search_query}:当前的搜索查询,指明信息提取的焦点
  • {document}:搜索到的网页内容,是信息提取的源

两个提示词的协同工作

这两个提示词在 DeepResearcher 的工作流程中协同工作:

  1. REASON_PROMPT 指导语言模型生成推理步骤和搜索查询,形成思考过程的骨架
  2. RELEVANT_EXTRACTION_PROMPT 指导语言模型从检索到的信息中提取相关内容,填充思考过程的细节

通过这种分工,系统能够实现:

  • 清晰的推理链条
  • 精准的信息检索
  • 相关信息的有效提取
  • 连贯的思考过程

这两个提示词的精心设计是 DeepResearcher 能够模拟人类思考过程、解决复杂问题的关键所在。

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

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

相关文章

使用python获取电脑硬盘信息

import psutil# 获取硬盘信息 disk_partitions psutil.disk_partitions() print(disk_partitions) for partition in disk_partitions:print(f"设备: {partition.device}")print(f"挂载点: {partition.mountpoint}")print(f"文件系统类型: {partitio…

HarmonyOS-ArkUI V2装饰器: @Provider和@Consumer装饰器:跨组件层级双向同步

作用 我们在之前学习的那些控件中,各有特点,也各有缺陷,至今没有痛痛快快的出现过真正能跨组件的双向绑定的装饰器。 比如 @Local装饰器,不能跨组件@Param装饰器呢,能跨组件传递,但是仅仅就是下一层组件接收参数。另外,它是单向传递,不可被重新赋值。如果您非要改值则…

索引下推(Index Condition Pushdown, ICP)

概念 索引下推是一种数据库查询优化技术,通过在存储引擎层面应用部分WHERE条件来减少不必要的数据读取。它特别适用于复合索引的情况,因为它可以在索引扫描阶段就排除不符合全部条件的数据行,而不是将所有可能匹配的记录加载到服务器层再进行…

idea在线离线安装插件教程

概述 对于小白来说,刚使用idea时,还有很多不懂的地方,这里,简单介绍下如何安装插件。让小白能容易上手全盘idea。 1、File -> Settings 2、找到 Plugins -> Marketplace 3、安装 3.1、在线安装 输入想搜索的内容&#x…

豪越赋能消防安全管控,解锁一体化内管“安全密码”

在消防安全保障体系中,内部管理的高效运作是迅速、有效应对火灾及各类灾害事故的重要基础。豪越科技凭借在消防领域的深耕细作与持续创新,深入剖析消防体系内部管理的痛点,以自主研发的消防一体化安全管控平台,为行业发展提供了创…

ES6学习03-字符串扩展(unicode、for...of、字符串模板)和新方法()

一、字符串扩展 1. eg: 2.for...of eg: 3. eg: 二。字符串新增方法 1. 2. 3. 4. 5.

探索Streamlit在测试领域的高效应用:文档读取与大模型用例生成的完美前奏

大模型用例生成前置工作之文档读取——构建你的自动化测试基础 在群友的极力推荐下,开始了streamlit的学习之旅。本文将介绍如何使用Streamlit开发一个多功能文档处理工具,支持读取、预览、格式转换和导出多种测试相关文档(YAML、JSON、DOCX…

flutter 桌面应用之窗口自定义

在开发桌面软件的时候我们经常需要配置软件的窗口的大小以及位置 我们有两个框架选择:window_manager和bitsdojo_window 对比bitsdojo_window 特性bitsdojo_windowwindow_manager自定义标题栏✅ 支持❌ 不支持控制窗口行为(大小/位置)✅(基本…

Cyber Weekly #51

赛博新闻 1、英伟达开源新模型,性能直逼DeepSeek-R1 本周,英伟达开源了基于Meta早期Llama-3.1-405B-Instruct模型开发的Llama-3.1-Nemotron-Ultra-253B-v1大语言模型,该模型拥有2530亿参数,在多项基准测试中展现出与6710亿参数的…

【JS】关于原型/原型链

本文会讲解什么是原型,什么是原型链,以及查找原型的方法,最后会实现一个函数:判断某对象是否有某属性。 定义 原型:函数都有prototype属性,称作原型/原型对象 原型可以放一些方法和属性,共享…

deskflow使用教程:一个可以让两台电脑鼠标键盘截图剪贴板共同使用的开源项目

首先去开源网站下载:Release v1.21.2 deskflow/deskflow 两台电脑都要下载这个文件 下载好后直接打开找到你想要的exe desflow.exe 然后你打开他,将两台电脑的TLS都关掉 下面步骤两台电脑都要完成: 电脑点开edit-》preferences 把这个取…

啥是Spring,有什么用,既然收费,如何免费创建SpringBoot项目,依赖下载不下来的解决方法,解决99%问题!

一、啥是Spring,为啥选择它 我们平常说的Spring指的是Spring全家桶,我们为什么要选择Spring,看看官方的话: 意思就是:用这个东西,又快又好又安全,反正就是好处全占了,所以我们选择它…

正向代理 vs 反向代理:核心区别与应用场景详解

目录 代理服务器是什么? 正向代理(Forward Proxy)详解 工作原理 典型应用场景 优缺点分析 反向代理(Reverse Proxy)详解 工作原理 典型应用场景 优缺点分析 正向代理与反向代理的核心区别 对比表格 架构差异…

Matlab学习笔记五十:循环语句和条件语句的用法

1.说明 循环语句:for…end,while…end 条件语句:if…end,switch…case…end 其中if语句语法还可以是:for…else…end,for…elseif…else…end 2.简单for程序实例 for x1:5 %循环遍历1~5 yx5 end [1…

容器初始化Spring Boot项目原理,即web项目(war)包涉及相关类对比详解

以下是关于 SpringBootServletInitializer、ServletContainerInitializer、SpringServletContainerInitializer、WebApplicationInitializer 和 ServletInitializer 的对比详解及总结表格: 1. 核心对比详解 (1) SpringBootServletInitializer 作用: S…

Linux 系统中打包与压缩

以下是 Linux 系统中 打包与压缩 的核心操作指南,涵盖常用命令、格式对比及典型场景应用: 一、核心概念 打包(Archiving) 将多个文件或目录合并为一个文件(如 .tar),不改变文件体积。常用工具&a…

计算机组成原理(哈工大,会持续更新)

文章目录 一 计算机组成概述1.1计算机系统简介 一 计算机组成概述 1.1计算机系统简介 计算机软硬件的概念 计算机系统包含两个部分一个部分为硬件,另一个部分为软件 硬件:硬件包括我们能直观看到的东西,也就是我们计算机的实体&#xff0…

ngx_conf_handler

定义在 src\core\ngx_conf_file.c static ngx_int_t ngx_conf_handler(ngx_conf_t *cf, ngx_int_t last) {char *rv;void *conf, **confp;ngx_uint_t i, found;ngx_str_t *name;ngx_command_t *cmd;name cf->args->elts;found 0;for (…

Ubuntu系统美化

Ubuntu系统美化 一、Grub设置 1. 安装Grub Customizer【推荐】 Grub Customizer是一个用于自定义 GRUB 引导菜单的实用程序 sudo add-apt-repository ppa:danielrichter2007/grub-customizer && sudo apt update && sudo apt install -y grub-customizer2.…

零基础HTML·笔记(持续更新…)

基础认知 HTML标签的结构 <strong>文字变粗</strong> &#xff1c;开始标签&#xff1e;内容&#xff1c;结束标签&#xff1e; 结构说明&#xff1a; 标签由<、>、1、英文单词或字母组成。并且把标签中<>包括起来的英文单词或字母称为标签名。常…