Spaces:
Runtime error
Runtime error
from typing import Optional | |
from langchain.embeddings import OpenAIEmbeddings | |
from langchain import LLMChain, PromptTemplate | |
from langchain.vectorstores import FAISS | |
from langchain.docstore import InMemoryDocstore | |
from src.baby_agi import BabyAGI | |
from langchain.agents import ZeroShotAgent, Tool | |
from langchain import OpenAI, SerpAPIWrapper, LLMChain | |
from constants import ( | |
EMBEDDING_MODEL_NAME, | |
EMBEDDING_SIZE, | |
TODO_CHAIN_MODEL_NAME, | |
BABY_AGI_MODEL_NAME | |
) | |
def run_agent( | |
user_input, | |
num_iterations, | |
baby_agi_model=BABY_AGI_MODEL_NAME, | |
todo_chaining_model=TODO_CHAIN_MODEL_NAME, | |
embedding_model=EMBEDDING_MODEL_NAME | |
): | |
# Define your embedding model | |
embeddings_model = OpenAIEmbeddings(model=embedding_model) | |
# Initialize the vectorstore as empty | |
import faiss | |
embedding_size = EMBEDDING_SIZE | |
index = faiss.IndexFlatL2(embedding_size) | |
vectorstore = FAISS(embeddings_model.embed_query, index, InMemoryDocstore({}), {}) | |
todo_prompt = PromptTemplate.from_template( | |
"You are a planner who is an expert at coming up with a todo list for a given objective. Come up with a todo list for this objective: {objective}" | |
) | |
todo_chain = LLMChain( | |
llm=OpenAI(temperature=0, model_name=todo_chaining_model), | |
prompt=todo_prompt | |
) | |
search = SerpAPIWrapper() | |
tools = [ | |
Tool( | |
name="Search", | |
func=search.run, | |
description="useful for when you need to answer questions about current events", | |
), | |
Tool( | |
name="TODO", | |
func=todo_chain.run, | |
description="useful for when you need to come up with todo lists. Input: an objective to create a todo list for. Output: a todo list for that objective. Please be very clear what the objective is!", | |
), | |
] | |
prefix = """You are an AI who performs one task based on the following objective: {objective}. Take into account these previously completed tasks: {context}.""" | |
suffix = """Question: {task} | |
{agent_scratchpad}""" | |
prompt = ZeroShotAgent.create_prompt( | |
tools, | |
prefix=prefix, | |
suffix=suffix, | |
input_variables=["objective", "task", "context", "agent_scratchpad"], | |
) | |
OBJECTIVE = user_input | |
llm = OpenAI(temperature=0, model_name=baby_agi_model) | |
# Logging of LLMChains | |
verbose = False | |
# If None, will keep on going forever. Customize the number of loops you want it to go through. | |
max_iterations: Optional[int] = num_iterations | |
baby_agi = BabyAGI.from_llm( | |
prompt=prompt, | |
tools=tools, | |
llm=llm, | |
vectorstore=vectorstore, | |
verbose=verbose, | |
max_iterations=max_iterations | |
) | |
if (user_input): | |
baby_agi({"objective": OBJECTIVE}) | |