random-character-tool / random_charactor_generator.py
Chris4K's picture
Update random_charactor_generator.py
bcb1873 verified
raw
history blame
3.61 kB
import requests
from transformers import Tool
class RandomCharatorGeneratorTool(Tool):
name = "random_character"
description = "This tool generates a random character. Returns json."
inputs = ["text"] # Adding an empty list for inputs
outputs = ["json"]
def __init__(self, device=None, **hub_kwargs) -> None:
#if not is_accelerate_available():
# raise ImportError("Accelerate should be installed in order to use tools.")
super().__init__()
self.device = device
self.pipeline = None
self.hub_kwargs = hub_kwargs
def setup(self):
#if self.device is None:
# self.device = get_default_device()
#self.pipeline = DiffusionPipeline.from_pretrained(self.default_checkpoint)
#self.pipeline.scheduler = DPMSolverMultistepScheduler.from_config(self.pipeline.scheduler.config)
#self.pipeline.to(self.device)
#if self.device.type == "cuda":
# self.pipeline.to(torch_dtype=torch.float16)
self.is_initialized = True
def __call__(self, input:str=""):
if not self.is_initialized:
self.setup()
API_URL = "https://randomuser.me/api/"
response = requests.get(API_URL)
data = response.json()['results'][0]
# Extract the relevant character information
character = {
"gender": data['gender'],
"name": {
"title": data['name']['title'],
"first": data['name']['first'],
"last": data['name']['last']
},
"location": {
"street": {
"number": data['location']['street']['number'],
"name": data['location']['street']['name']
},
"city": data['location']['city'],
"state": data['location']['state'],
"country": data['location']['country'],
"postcode": data['location']['postcode'],
"coordinates": {
"latitude": data['location']['coordinates']['latitude'],
"longitude": data['location']['coordinates']['longitude']
},
"timezone": {
"offset": data['location']['timezone']['offset'],
"description": data['location']['timezone']['description']
}
},
"email": data['email'],
"login": {
"uuid": data['login']['uuid'],
"username": data['login']['username'],
"password": data['login']['password'],
"salt": data['login']['salt'],
"md5": data['login']['md5'],
"sha1": data['login']['sha1'],
"sha256": data['login']['sha256']
},
"dob": {
"date": data['dob']['date'],
"age": data['dob']['age']
},
"registered": {
"date": data['registered']['date'],
"age": data['registered']['age']
},
"phone": data['phone'],
"cell": data['cell'],
"id": {
"name": data['id']['name'],
"value": data['id']['value']
},
"picture": {
"large": data['picture']['large'],
"medium": data['picture']['medium'],
"thumbnail": data['picture']['thumbnail']
},
"nat": data['nat']
}
return {"character": character}