File size: 3,609 Bytes
afe2831
79f852c
afe2831
79f852c
 
afe2831
bcb1873
afe2831
d26938f
539c396
3ec3001
afe2831
f61c5df
 
 
 
 
 
 
 
 
 
 
ea36138
f61c5df
 
 
 
 
 
 
 
 
 
 
 
18bbf6c
f61c5df
 
 
afe2831
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
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}