|
|
@ -44,11 +44,12 @@ class WorkerNodeInitializer:
|
|
|
|
|
|
|
|
|
|
|
|
self.llm = llm if llm is not None else ChatOpenAI()
|
|
|
|
self.llm = llm if llm is not None else ChatOpenAI()
|
|
|
|
self.tools = tools if tools is not None else [ReadFileTool(), WriteFileTool()]
|
|
|
|
self.tools = tools if tools is not None else [ReadFileTool(), WriteFileTool()]
|
|
|
|
self.vectorstore = vectorstore #if vectorstore is not None else #FAISS(faiss.IndexFlatIP(512))
|
|
|
|
self.vectorstore = vectorstore
|
|
|
|
|
|
|
|
|
|
|
|
# Initializing agent in the constructor
|
|
|
|
# Initializing agent in the constructor
|
|
|
|
self.worker_name = worker_name
|
|
|
|
self.worker_name = worker_name
|
|
|
|
self.worker_role = worker_role
|
|
|
|
self.worker_role = worker_role
|
|
|
|
|
|
|
|
self.embedding_size = embedding_size
|
|
|
|
self.human_in_the_loop = human_in_the_loop
|
|
|
|
self.human_in_the_loop = human_in_the_loop
|
|
|
|
self.search_kwargs = search_kwargs
|
|
|
|
self.search_kwargs = search_kwargs
|
|
|
|
self.verbose = verbose
|
|
|
|
self.verbose = verbose
|
|
|
@ -60,14 +61,16 @@ class WorkerNodeInitializer:
|
|
|
|
|
|
|
|
|
|
|
|
logging.info("Creating agent in WorkerNode")
|
|
|
|
logging.info("Creating agent in WorkerNode")
|
|
|
|
try:
|
|
|
|
try:
|
|
|
|
if self.vectorstore is None:
|
|
|
|
# if self.vectorstore is None:
|
|
|
|
raise ValueError("Vectorstore is not initialized in WorkerNodeInitializer")
|
|
|
|
# raise ValueError("Vectorstore is not initialized in WorkerNodeInitializer")
|
|
|
|
|
|
|
|
vectorstore = self.initialize_vectorstore()
|
|
|
|
|
|
|
|
|
|
|
|
self.agent = AutoGPT.from_llm_and_tools(
|
|
|
|
self.agent = AutoGPT.from_llm_and_tools(
|
|
|
|
worker_name=self.worker_name,
|
|
|
|
worker_name=self.worker_name,
|
|
|
|
worker_role=self.worker_role,
|
|
|
|
worker_role=self.worker_role,
|
|
|
|
tools=self.tools,
|
|
|
|
tools=self.tools,
|
|
|
|
llm=self.llm,
|
|
|
|
llm=self.llm,
|
|
|
|
memory=self.vectorstore.as_retriever(search_kwargs=self.search_kwargs),
|
|
|
|
memory=vectorstore,
|
|
|
|
human_in_the_loop=self.human_in_the_loop,
|
|
|
|
human_in_the_loop=self.human_in_the_loop,
|
|
|
|
chat_history_memory=FileChatMessageHistory(self.chat_history_file),
|
|
|
|
chat_history_memory=FileChatMessageHistory(self.chat_history_file),
|
|
|
|
)
|
|
|
|
)
|
|
|
@ -86,6 +89,17 @@ class WorkerNodeInitializer:
|
|
|
|
|
|
|
|
|
|
|
|
self.tools.append(tool)
|
|
|
|
self.tools.append(tool)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def initialize_vectorstore(self):
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
|
|
|
embeddings_model = OpenAIEmbeddings(openai_api_key=self.openai_api_key)
|
|
|
|
|
|
|
|
embedding_size = self.embedding_size
|
|
|
|
|
|
|
|
index = faiss.IndexFlatL2(embedding_size=embedding_size)
|
|
|
|
|
|
|
|
return FAISS(embeddings_model.embed_query, index, InMemoryDocstore({}), {})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
except Exception as e:
|
|
|
|
|
|
|
|
logging.error(f"Failed to initialize vector store: {e}")
|
|
|
|
|
|
|
|
return None
|
|
|
|
|
|
|
|
|
|
|
|
def run(self, prompt) -> str:
|
|
|
|
def run(self, prompt) -> str:
|
|
|
|
if not isinstance(prompt, str):
|
|
|
|
if not isinstance(prompt, str):
|
|
|
|
logging.error("Prompt must be a string.")
|
|
|
|
logging.error("Prompt must be a string.")
|
|
|
|