代理 | 豆包MarsCode AI刷题

51 阅读3分钟

.env 文件中的环境变量在加载时会被转换为大写。

多跳问题(Multi-hop question)是指为了得到最终答案,需要进行多步推理或多次查询。这种问题不能直接通过单一的查询或信息源得到答案,而是需要跨越多个信息点,或者从多个数据来源进行组合和整合。

Self-Ask with Search 代理适合解决多跳问题

  1. 工具集合:代理包含解决问题所必须的搜索工具,可以用来查询和验证多个信息点。这里我们在程序中为代理武装了SerpAPIWrapper工具。
  2. 逐步逼近:代理可以根据第一个问题的答案,提出进一步的问题,直到得到最终答案。这种逐步逼近的方式可以确保答案的准确性。
  3. 自我提问与搜索:代理可以自己提问并搜索答案。例如,首先确定哪个国家使用玫瑰作为国花,然后确定该国家的首都是什么。
  4. 决策链:代理通过一个决策链来执行任务,使其可以跟踪和处理复杂的多跳问题,这对于解决需要多步推理的问题尤为重要。
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 库来实现。

异步编程的基本概念

  1. 协程(Coroutine)

    • 协程是可以在执行过程中暂停并在稍后继续执行的函数。它们使用 async def 关键字定义,并使用 await 关键字暂停执行以等待某些操作完成。
  2. 事件循环(Event Loop)

    • 事件循环是一个运行循环,它不断地检查和执行准备好的任务。asyncio 提供了一个事件循环来管理和调度协程的执行。
  3. 任务(Task)

    • 任务是协程的包装器,它允许协程在事件循环中运行。可以使用 asyncio.create_task 创建任务。