CompleteAlfred / retriever.py
DiogoPinheiro's picture
Complete Alfred smolagents
be6f51b
from smolagents import Tool
import datasets
class GuestInfoRetrieverTool(Tool):
name = "guest_info_retriever"
description = "Retrieves detailed information about gala guests based on their name or relation."
inputs = {
"query": {
"type": "string",
"description": "The name or relation of the guest you want information about."
}
}
output_type = "string"
def __init__(self, guest_list, **kwargs):
super().__init__(**kwargs)
self.guest_list = guest_list
def forward(self, query: str):
query = query.lower()
# Busca simples por correspondência de texto em qualquer campo
results = []
for guest in self.guest_list:
# Verifica se a query está no nome ou na descrição
if query in guest['name'].lower() or query in guest['description'].lower() or query in guest['relation'].lower():
info = (f"Name: {guest['name']}\n"
f"Relation: {guest['relation']}\n"
f"Description: {guest['description']}\n"
f"Email: {guest['email']}")
results.append(info)
if results:
# Retorna os 3 primeiros matches
return "\n\n---\n\n".join(results[:3])
else:
return "No matching guest information found."
def load_guest_dataset():
# Carrega o dataset da Hugging Face
dataset = datasets.load_dataset("agents-course/unit3-invitees", split="train")
# Passamos a lista crua de dicionários para a Tool
return GuestInfoRetrieverTool(guest_list=list(dataset))