.env 文件中的环境变量在加载时会被转换为大写。
多跳问题(Multi-hop question)是指为了得到最终答案,需要进行多步推理或多次查询。这种问题不能直接通过单一的查询或信息源得到答案,而是需要跨越多个信息点,或者从多个数据来源进行组合和整合。
Self-Ask with Search 代理适合解决多跳问题
- 工具集合:代理包含解决问题所必须的搜索工具,可以用来查询和验证多个信息点。这里我们在程序中为代理武装了SerpAPIWrapper工具。
- 逐步逼近:代理可以根据第一个问题的答案,提出进一步的问题,直到得到最终答案。这种逐步逼近的方式可以确保答案的准确性。
- 自我提问与搜索:代理可以自己提问并搜索答案。例如,首先确定哪个国家使用玫瑰作为国花,然后确定该国家的首都是什么。
- 决策链:代理通过一个决策链来执行任务,使其可以跟踪和处理复杂的多跳问题,这对于解决需要多步推理的问题尤为重要。
SELF_ASK_WITH_SEARCH = "self-ask-with-search"
"""An agent that breaks down a complex question into a series of simpler questions.
This agent uses a search tool to look up answers to the simpler questions
in order to answer the original complex question.
"""
Plan and execute 代理
计划和执行代理通过首先计划要做什么,然后执行子任务来实现目标。
这种代理的独特之处在于,它的计划和执行不再是由同一个代理所完成,而是:
- 计划由一个大语言模型代理(负责推理)完成。
- 执行由另一个大语言模型代理(负责调用工具)完成。
Playwright
Playwright是一个开源的自动化框架,它可以让你模拟真实用户操作网页,帮助开发者和测试者自动化网页交互和测试。
Playwright脚本,它打开了一个新的浏览器实例。过程是:导航到指定的URL;获取页面标题并打印页面的标题;最后关闭浏览器。
异步编程是一种编程范式,它允许程序在等待某些操作(如 I/O 操作、网络请求等)完成时,不阻塞主线程,从而提高程序的效率和响应速度。在 Python 中,异步编程主要通过 asyncio 库来实现。
异步编程的基本概念
-
协程(Coroutine) :
- 协程是可以在执行过程中暂停并在稍后继续执行的函数。它们使用
async def关键字定义,并使用await关键字暂停执行以等待某些操作完成。
- 协程是可以在执行过程中暂停并在稍后继续执行的函数。它们使用
-
事件循环(Event Loop) :
- 事件循环是一个运行循环,它不断地检查和执行准备好的任务。
asyncio提供了一个事件循环来管理和调度协程的执行。
- 事件循环是一个运行循环,它不断地检查和执行准备好的任务。
-
任务(Task) :
- 任务是协程的包装器,它允许协程在事件循环中运行。可以使用
asyncio.create_task创建任务。
- 任务是协程的包装器,它允许协程在事件循环中运行。可以使用