登录功能网站怎么做,电商网站服务排名,广东网络推广项目,网站开发要多钱AutoGPT 示例#xff1a;查找马拉松获胜成绩
实现 https://github.com/Significant-Gravitas/Auto-GPT#xff0c;使用LangChain基础组件#xff08;大型语言模型(LLMs)、提示模板(PromptTemplates)、向量存储(VectorStores)、嵌入(Embeddings)、工具(Tools)#xff09;。…AutoGPT 示例查找马拉松获胜成绩
实现 https://github.com/Significant-Gravitas/Auto-GPT使用LangChain基础组件大型语言模型(LLMs)、提示模板(PromptTemplates)、向量存储(VectorStores)、嵌入(Embeddings)、工具(Tools)。
!pip install bs4!pip install nest_asyncio# 导入必要的库
import asyncio
import osimport nest_asyncio
import pandas as pd
from langchain.docstore.document import Document
from langchain_experimental.agents.agent_toolkits.pandas.base import (create_pandas_dataframe_agent,
)
from langchain_experimental.autonomous_agents import AutoGPT
from langchain_openai import ChatOpenAI# Jupyter运行异步事件循环需要同步
nest_asyncio.apply()# 设置大型语言模型
llm ChatOpenAI(modelgpt-4, temperature1.0)# 设置工具
# 我们将设置一个AutoGPT包括搜索工具、写文件工具、读文件工具、网页浏览工具以及通过Python REPL与CSV文件交互的工具# 在下方定义您想要使用的任何其他工具# 工具定义
import os
from contextlib import contextmanager
from typing import Optionalfrom langchain.agents import tool
from langchain_community.tools.file_management.read import ReadFileTool
from langchain_community.tools.file_management.write import WriteFileToolROOT_DIR ./data/contextmanager
def pushd(new_dir):上下文管理器用于更改当前工作目录。prev_dir os.getcwd()os.chdir(new_dir)try:yieldfinally:os.chdir(prev_dir)tool
def process_csv(csv_file_path: str, instructions: str, output_path: Optional[str] None
) - str:通过pandas在有限的REPL中处理CSV文件。只有在将数据作为csv文件写入磁盘后才使用此功能。任何图表都必须保存到磁盘才能由人类查看。指令应该用自然语言编写而不是代码。假定数据帧已经加载完毕。with pushd(ROOT_DIR):try:df pd.read_csv(csv_file_path)except Exception as e:return f错误{e}agent create_pandas_dataframe_agent(llm, df, max_iterations30, verboseTrue)if output_path is not None:instructions f 将输出保存到磁盘上的{output_path}try:result agent.run(instructions)return resultexcept Exception as e:return f错误{e}# 使用PlayWright浏览网页!pip install playwright!playwright installasync def async_load_playwright(url: str) - str:使用Playwright加载指定的URL并使用BeautifulSoup解析。from bs4 import BeautifulSoupfrom playwright.async_api import async_playwrightdef run_async(coro):event_loop asyncio.get_event_loop()return event_loop.run_until_complete(coro)tool
def browse_web_page(url: str) - str:详细的方式用于抓取整个网页。解析时可能会出现问题。return run_async(async_load_playwright(url))# 在网页上进行问答
# 帮助模型向网页提出更有针对性的问题避免其记忆混乱from langchain.chains.qa_with_sources.loading import (BaseCombineDocumentsChain,load_qa_with_sources_chain,
)
from langchain.tools import BaseTool, DuckDuckGoSearchRun
from langchain_text_splitters import RecursiveCharacterTextSplitter
from pydantic import Fielddef _get_text_splitter():return RecursiveCharacterTextSplitter(# 设置一个非常小的块大小只是为了展示。chunk_size500,chunk_overlap20,length_functionlen,)class WebpageQATool(BaseTool):name query_webpagedescription (浏览网页并检索与问题相关的信息。)text_splitter: RecursiveCharacterTextSplitter Field(default_factory_get_text_splitter)qa_chain: BaseCombineDocumentsChain# 设置记忆
# 这里的记忆用于代理的中间步骤import faiss
from langchain.docstore import InMemoryDocstore
from langchain_community.vectorstores import FAISS
from langchain_openai import OpenAIEmbeddingsembeddings_model OpenAIEmbeddings()
embedding_size 1536
index faiss.IndexFlatL2(embedding_size)
vectorstore FAISS(embeddings_model.embed_query, index, InMemoryDocstore({}), {})# 设置模型和AutoGPT
# 模型设置!pip install duckduckgo_searchweb_search DuckDuckGoSearchRun()tools [web_search,WriteFileTool(root_dir./data),ReadFileTool(root_dir./data),process_csv,query_website_tool,# HumanInputRun(), # 如果您希望在每个步骤中请求人类帮助请激活
]agent AutoGPT.from_llm_and_tools(ai_nameTom,ai_roleAssistant,toolstools,llmllm,memoryvectorstore.as_retriever(search_kwargs{k: 8}),# human_in_the_loopTrue, # 如果您希望添加每个步骤的反馈请设置为True。
)agent.chain.verbose True# 使用AutoGPT查询网络
# 多年来我花了很多时间爬取数据源和清理数据。让我们看看AutoGPT是否能在这方面提供帮助# 以下是查找过去5年截至2022年波士顿马拉松获胜成绩并将其转换为表格形式的提示。
agent.run([过去5年截至2022年的波士顿马拉松获胜成绩是什么生成一个包含年份、姓名、原籍国和成绩的表格。
])