美文网首页
Autogpt 添加自定义command

Autogpt 添加自定义command

作者: NazgulSun | 来源:发表于2023-04-20 19:11 被阅读0次
    几点观察

    最近在测试Autogpt的效果,有几点观察

    • 中文goal的效果不是很好,因为整个prompt设计都是从英文出发的,google search 回来的结果也是英文的。有时间的话,可以尝试将项目汉化一下
    • debug 之后,可以发现使用了特别多的 系统prompt来规划整个gpt的行为,并且下一次执行command的时候,还会带上上一次的command的返回结果,所以token的消耗是比较大的。
    • 整个项目比较好的实现了self-prompt 的效果,自己想prompt,自己实现command,至少形式上做到了自动化。
    • 有些垂直领域的问题,效果不是太好,因为无法精确的查询到自己的需要的数据。
    • 我感觉对于垂直领域,需要我们添加自定义的command,以便可以访问我们的私有数据,所以下面简单探索了一下实现自定义command的流程,代码还是比较简单。

    在autogpt/prompt.py 下添加command

        commands = [
            # ("查询主题相关的公司,给定一个关键词,可以查询相关公司,比如给定:芯片,可以查询所有芯片相关的公司",
            #  "API-Company",{"keyword":"<keyword>"}),
           
            ("Google Search", "google", {"input": "<search>"}),
            (
                "Browse Website",
                "browse_website",
                {"url": "<url>", "question": "<what_you_want_to_find_on_website>"},
            ),
    

    系统会把所有的command 加入到prompt中,gpt在执行任务的时候,会根据command的描述信息选择具体的command。

    在autogpt/app.py execute_command函数里添加调用逻辑

            elif command_name == "send_tweet":
                return send_tweet(arguments["text"])
            elif command_name == "do_nothing":
                return "No action performed."
            elif command_name == "task_complete":
                shutdown()
            elif command_name == "API-Company":
                return get_top_company_of_theme(arguments["keyword"])
    

    这里实际是枚举了 command_name == "API-Company":
    然后,需要自己实现相关的方法。这里get_top_company_of_theme 方法可以使用任意的方式实现。
    可以看到整个过程还是特别简单的。

    国内使用google search的问题

    那么我们在系统中已经使用了系统代理,但是google 应用的时候还是会 connection refuse。
    我们需要在代码里面手动自定代理:

    def google_official_search(query: str, num_results: int = 8) -> str | list[str]:
    add_proxy()
    body()
    delete_proxy()
    

    每次搜索的时候先添加proxy,然后再delete,如果不delete的话,貌似会影响selenium模块

    def add_proxy():
        os.environ["http_proxy"] ="xxxx";
        os.environ["https_proxy"] ="xxxx";
    
    def delte_proxy():
        del os.environ['http_proxy']
        del os.environ['https_proxy']
    

    相关文章

      网友评论

          本文标题:Autogpt 添加自定义command

          本文链接:https://www.haomeiwen.com/subject/lwxdjdtx.html