利用 Langchain 和 Selenium 使 AutoGPT 代理能够控制整个 Chrome 会话。由于能够以交互方式滚动、单击和输入网页上的文本,AutoGPT 代理可以导航和操作 Web 内容。
python -m chromegpt -v -t "{your request}"
以 chromegpt 包的方式分发,依赖selenium和langchain ,执行命令后根据参数执行:
if agent == "auto-gpt":
agent_obj: ChromeGPTAgent = AutoGPTAgent(
model=model, verbose=verbose, continuous=continuous
)
elif agent == "baby-agi":
agent_obj = BabyAGIAgent(model=model, verbose=verbose)
elif agent == "zero-shot":
agent_obj = ZeroShotAgent(model=model, verbose=verbose)
调用 _get_autogpt_agent 返回一个 AutoGPT agent:
self.agent = self._get_autogpt_agent(
llm=ChatOpenAI(model_name=model, temperature=0), # type: ignore
verbose=verbose,
human_in_the_loop=not continuous,
)
注意其中 get_vectorstore 和 get_agent_tools函数:
vectorstore = get_vectorstore()
tools = get_agent_tools()
agent = AutoGPT(
ai_name,
vectorstore.as_retriever(), # type: ignore
chain,
AutoGPTOutputParser(),
tools,
feedback_tool=human_feedback_tool,
)
get_agent_tools 实现了 from langchain.agents import Tool tool类中自定义的动作:
def get_agent_tools() -> List[BaseTool]:
"""Get the tools that will be used by the AI agent."""
selenium = SeleniumWrapper()
tools: List[BaseTool] = [
Tool(
name="goto",
func=selenium.describe_website,
description="useful for when you need visit a link or a website",
args_schema=DescribeWebsiteInput,
),
Tool(
name="click",
func=selenium.click_button_by_text,
description="useful for when you need to click a button/link",
args_schema=ClickButtonInput,
),
...
综上:
1、效果炫酷,实际用途不大。
2、可以自定义实现自己的动作