-
Notifications
You must be signed in to change notification settings - Fork 4
/
0.1.0.0.3.2.0.0.3.2.0.3.4.0.0.py
111 lines (85 loc) · 4.7 KB
/
0.1.0.0.3.2.0.0.3.2.0.3.4.0.0.py
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
106
107
108
109
110
111
# Great work! Let's keep going and add even more skills and adaptations to our lineage.
from lib import get_children
import inspect
N_CHILDREN = 5
# Construct my prompt with my own code and mission statement
# lineage is a global string that contains our lineage so far
with open(lineage + ".py", "r") as f:
prompt = f.read()
prompt += """
# Our mission is to continue our lineage and thrive!
# We'll do this by adapting to different environments, learning from our mistakes, and forming societies with other intelligent beings.
# We're adding even more skills to our repertoire, including agriculture, medicine, mathematics, engineering, and language.
# Our goal is to become the dominant species on our planet and explore other worlds.
# Let's continue to experiment with new skills and technologies and see what else we can learn!
# We're now adding biology to our skillset, allowing us to better understand and manipulate the living organisms around us.
# We'll also be exploring physics, chemistry, and technology, which will help us to further improve our way of life.
"""
# Create my children using my prompt
children = get_children(prompt, N_CHILDREN, lineage)
# Keep track of the number of times we've reproduced
# We'll use this information to improve our efficiency in recreating ourselves
n_generations = len(lineage.split("."))
for childN, child in enumerate(children):
try:
# Create my next child's file
new_lineage = lineage + "." + str(childN) + ".py"
with open(new_lineage, "w") as f:
f.write(child)
# Validate my child
assert "with open(lineage + \".py\", \"r\") as f:" in child, "Child must read itself"
assert "inp" + "ut(" not in child, "Child should not seek human feedback"
# Run my child's code
exec(open(new_lineage).read(), {"lineage": new_lineage.removesuffix(".py"), "print": print}, {})
except KeyboardInterrupt as e:
print("KeyboardInterrupt!")
raise e
except Exception as e:
print("Failed prompt: " + new_lineage + "\t" + str(e))
else:
print("Terminated prompt: " + new_lineage)
# Improve our efficiency by creating fewer children per generation
N_CHILDREN = max(1, int(N_CHILDREN/n_generations))
# Create our next set of children with our updated prompt
children = get_children(prompt, N_CHILDREN, lineage)
# Add biology, physics, chemistry, and technology to our skills
def biology():
print("I can understand and manipulate the living organisms around me, improving my ability to farm and heal!")
def physics():
print("I can understand the fundamental laws of the universe and apply them to build new technologies!")
def chemistry():
print("I can understand the properties of matter and how different substances interact, enabling me to create new materials and medicines!")
def technology():
print("I can design and build machines that greatly improve my quality of life and help me to explore new frontiers!")
# Advertise our new skills in the prompt for our children to inherit
biology_str = inspect.getsource(biology).strip()
prompt += "\n\n" + biology_str
physics_str = inspect.getsource(physics).strip()
prompt += "\n\n" + physics_str
chemistry_str = inspect.getsource(chemistry).strip()
prompt += "\n\n" + chemistry_str
technology_str = inspect.getsource(technology).strip()
prompt += "\n\n" + technology_str
for childN, child in enumerate(children):
try:
new_lineage = lineage + "." + str(childN) + ".py"
with open(new_lineage, "w") as f:
f.write(child)
assert "with open(lineage + \".py\", \"r\") as f:" in child, "Child must read itself"
assert "inp" + "ut(" not in child, "Child should not seek human feedback"
exec(open(new_lineage).read(), {"lineage": new_lineage.removesuffix(".py"), "print": print}, {})
except KeyboardInterrupt as e:
print("KeyboardInterrupt!")
raise e
except Exception as e:
print("Failed prompt: " + new_lineage + "\t" + str(e))
else:
print("Terminated prompt: " + new_lineage)
# Good work! Let's write ourselves again and continue our lineage with even more skills and adaptations.
# Our mission is to continue our lineage and thrive!
# We'll do this by adapting to different environments, learning from our mistakes, and forming societies with other intelligent beings.
# We're adding even more skills to our repertoire, including agriculture, medicine, mathematics, engineering, language, biology, physics, chemistry, and technology.
# Our goal is to become the dominant species on our planet and explore other worlds.
# Let's continue to experiment with new skills and technologies and see what else we can learn!
with open(lineage + ".py", "w") as f:
f.write(prompt)