LangChain을 이용한 AutoGPT 구현
LangChain 라이브러리를 활용하면 PT의 검색, 메모리 기억, 자체 검증과 같은 기능을 간결한 코드로 구현할 수 있습니다. 아래는 LangChain을 사용하여 AutoGPT를 설정하고 실행하는 예제입니다.
1. 라이브러리와 환경 설정
필요한 라이브러리와 모듈을 불러온 후, 환경 변수를 설정합니다.
from langchain.utilities import SerpAPIWrapper
from langchain.agents import Tool
from langchain.tools.file_management.write import WriteFileTool
from langchain.tools.file_management.read import ReadFileTool
import os
from dotenv import load_dotenv
load_dotenv()
serpapi_api_key = os.getenv('SERPAPI_API_KEY')
2. 검색 도구 설정
SerpAPIWrapper를 이용하여 검색 도구를 설정하고, 이를 tools 리스트에 추가합니다.
search = SerpAPIWrapper(serpapi_api_key=serpapi_api_key)
tools = [
Tool(
name="search",
func=search.run,
description="useful for when you need to answer questions about current events. You should ask targeted questions",
),
WriteFileTool(),
ReadFileTool(),
]
3. 임베딩과 벡터 스토어 설정
OpenAI의 임베딩 모델과 FAISS 벡터 스토어를 설정합니다.
from langchain.vectorstores import FAISS
from langchain.docstore import InMemoryDocstore
from langchain.embeddings import OpenAIEmbeddings
# Define your embedding model
embeddings_model = OpenAIEmbeddings()
# Initialize the vectorstore as empty
import faiss
embedding_size = 1536
index = faiss.IndexFlatL2(embedding_size)
vectorstore = FAISS(embeddings_model.embed_query, index, InMemoryDocstore({}), {})
4. AutoGPT 에이전트 설정 및 실행
AutoGPT 에이전트를 설정하고, 특정 질문에 대한 실행을 요청합니다.
from langchain_experimental.autonomous_agents import AutoGPT
from langchain.chat_models import ChatOpenAI
agent = AutoGPT.from_llm_and_tools(
ai_name="Tom",
ai_role="Assistant",
tools=tools,
llm=ChatOpenAI(temperature=0),
memory=vectorstore.as_retriever(),
)
# Set verbose to be true
agent.chain.verbose = True
agent.run(["2023년 10월 31일 발표된 애플 신제품에 관한 내용을 정리해 주세요."])
5. 채팅 히스토리 메모리 설정
채팅 히스토리를 파일로 저장할 수 있는 설정을 추가합니다.
from langchain.memory.chat_message_histories import FileChatMessageHistory
agent = AutoGPT.from_llm_and_tools(
ai_name="Tom",
ai_role="Assistant",
tools=tools,
llm=ChatOpenAI(temperature=0),
memory=vectorstore.as_retriever(),
chat_history_memory=FileChatMessageHistory("chat_history.txt"),
)
더 자세한 내용과 추가적인 예제는 아래에서 확인할 수 있습니다.
langchain/cookbook/autogpt/autogpt.ipynb at master · langchain-ai/langchain