I encountered an error while trying to use the tool. This was the error: ‘Exa’ object has no attribute ‘encontrar_similares’.
Tool encontrar_similares accepts these inputs: Busca por páginas similares a la URL dada.
La URL ingresada debe ser entregada por ´buscar´
from crewai import Agent, Task, Crew, Process
import os
from tools import ExaSearchToolSet
os.environ["OPENAI_API_BASE"] = 'https://api.groq.com/openai/v1'
os.environ["OPENAI_MODEL_NAME"] = 'llama3-70b-8192'
os.environ["OPENAI_API_KEY"] = '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'
# Code snippet to be explained
Query = 'Realiza las preguntas para una encuenta, sobre el porque la gente elige su sabor de helado'
# Define the explainer agent
investigador = Agent(
role="Generacion de preguntas",
goal="Crear un cuestionario que captura lo que hace un sabor de helado irresistible",
backstory=" Ha trabajado en diversas cocinas alrededor del mundo, desarrollando una profunda comprensión de los sabores y sus combinaciones. Su pasión por el helado lo llevó a querer entender científicamente por qué ciertos sabores nos encantan",
tools = ExaSearchToolSet.tools(),
verbose=True,
allow_delegation=False
)
# Define the blog writer agent
analista = Agent(
role="Analista",
goal="Diseñar preguntas que revelen los motivaciones psicológicas detrás de las elecciones de sabor.",
backstory="Ha estudiado extensamente cómo los factores emocionales, sociales y culturales influyen en nuestras decisiones de compra. Cree que el helado es más que un simple postre, es una experiencia sensorial y emocional.",
verbose=True,
allow_delegation=False
)
# Task to explain the code snippet
recopilacion_datos = Task(
description=f"realiza una búsqueda exhaustiva en páginas web para identificar y recopilar preguntas comunes y estudios relacionados con la elección de sabores de helado. Esto incluye investigar cómo diferentes factores (como la textura, el aroma, la presentación) influyen en la preferencia de sabores ",
agent=investigador,
expected_output="Un conjunto de preguntas que han sido utilizadas en investigaciones previas o encuestas sobre la elección de sabores de helado, así como un resumen de los factores que se han encontrado relevantes en estas investigaciones."
)
# Task to write a blog post based on the explanation
design_preguntas = Task(
description=f"Diseña preguntas para una encuesta que exploren las motivaciones psicológicas detrás de la elección de sabores de helado. Considera factores emocionales, sociales y culturales al formular las preguntas para revelar las razones subyacentes por las que las personas prefieren ciertos sabores.",
agent=analista,
expected_output="Un cuestionario detallado con preguntas que aborden aspectos emocionales y psicológicos relacionados con la elección de sabores de helado, acompañado de una breve justificación de por qué cada pregunta es relevante para entender las motivaciones detrás de las elecciones."
)
# Define the crew and process
crew = Crew(
agents=[investigador, analista],
tasks=[recopilacion_datos, design_preguntas],
verbose=2,
process=Process.sequential )
# Execute the process and print the output
output = crew.kickoff()
print(output)
import os
from exa_py import Exa
from langchain.agents import tool
# Inicializar la API de Exa
exa = Exa(api_key="093045b2-6cd6-4a6a-9b7d-17e9b876c354")
class ExaSearchToolSet:
@staticmethod
def exa():
return exa
@tool
def buscar(query: str):
"Busca una página basada en el query"
return ExaSearchToolSet.exa().search(f"{query}", use_autoprompt=True, num_results=3)
@tool
def encontrar_similares(url: str):
"""Busca por páginas similares a la URL dada.
La URL ingresada debe ser entregada por ´buscar´"""
return ExaSearchToolSet.exa().encontrar_similares(url, num_results=3)
@tool
def obtener_contenido(ids: str):
"""Obtén contenido de una página web
Los ids deben pasarse como una lista, una lista de identificadores devueltos desde `buscar`"""
ids = eval(ids)
contents = ExaSearchToolSet.exa().get_contents(ids)
contents = contents.split("URL:")
contents = [content[:1000] for content in contents]
return "nn".join(contents)
@staticmethod
def tools():
return [
ExaSearchToolSet.buscar,
ExaSearchToolSet.encontrar_similares,
ExaSearchToolSet.obtener_contenido
]
I tried to use the encontrar_similares method from the Exa class in my code. I expected this method to find and return similar web pages based on a given URL. The code snippet attempts to invoke this method as part of a process to generate survey questions related to ice cream flavor preferences. However, when running the code, I encountered an error indicating that the Exa object has no attribute ‘encontrar_similares’.
I expected the code to execute without errors, retrieving similar web pages as intended, so I could continue the process of generating and refining the survey questions.