3
3
import subprocess
4
4
5
5
from enum import Enum
6
+ from typing import Callable , TypeVar
6
7
7
8
from gpt_engineer .ai import AI
8
9
from gpt_engineer .chat_to_files import to_files
9
10
from gpt_engineer .db import DBs
10
11
11
12
12
13
def setup_sys_prompt (dbs ):
13
- return dbs .identity ["generate" ] + "\n Useful to know:\n " + dbs .identity ["philosophy" ]
14
+ return (
15
+ dbs .preprompts ["generate" ] + "\n Useful to know:\n " + dbs .preprompts ["philosophy" ]
16
+ )
17
+
18
+
19
+ Step = TypeVar ("Step" , bound = Callable [[AI , DBs ], list [dict ]])
14
20
15
21
16
22
def simple_gen (ai : AI , dbs : DBs ):
@@ -27,7 +33,7 @@ def clarify(ai: AI, dbs: DBs):
27
33
"""
28
34
Ask the user if they want to clarify anything and save the results to the workspace
29
35
"""
30
- messages = [ai .fsystem (dbs .identity ["qa" ])]
36
+ messages = [ai .fsystem (dbs .preprompts ["qa" ])]
31
37
user = dbs .input ["main_prompt" ]
32
38
while True :
33
39
messages = ai .next (messages , user )
@@ -64,7 +70,7 @@ def gen_spec(ai: AI, dbs: DBs):
64
70
ai .fsystem (f"Instructions: { dbs .input ['main_prompt' ]} " ),
65
71
]
66
72
67
- messages = ai .next (messages , dbs .identity ["spec" ])
73
+ messages = ai .next (messages , dbs .preprompts ["spec" ])
68
74
69
75
dbs .memory ["specification" ] = messages [- 1 ]["content" ]
70
76
@@ -73,7 +79,7 @@ def gen_spec(ai: AI, dbs: DBs):
73
79
74
80
def respec (ai : AI , dbs : DBs ):
75
81
messages = json .loads (dbs .logs [gen_spec .__name__ ])
76
- messages += [ai .fsystem (dbs .identity ["respec" ])]
82
+ messages += [ai .fsystem (dbs .preprompts ["respec" ])]
77
83
78
84
messages = ai .next (messages )
79
85
messages = ai .next (
@@ -102,7 +108,7 @@ def gen_unit_tests(ai: AI, dbs: DBs):
102
108
ai .fuser (f"Specification:\n \n { dbs .memory ['specification' ]} " ),
103
109
]
104
110
105
- messages = ai .next (messages , dbs .identity ["unit_tests" ])
111
+ messages = ai .next (messages , dbs .preprompts ["unit_tests" ])
106
112
107
113
dbs .memory ["unit_tests" ] = messages [- 1 ]["content" ]
108
114
to_files (dbs .memory ["unit_tests" ], dbs .workspace )
@@ -118,7 +124,7 @@ def gen_clarified_code(ai: AI, dbs: DBs):
118
124
messages = [
119
125
ai .fsystem (setup_sys_prompt (dbs )),
120
126
] + messages [1 :]
121
- messages = ai .next (messages , dbs .identity ["use_qa" ])
127
+ messages = ai .next (messages , dbs .preprompts ["use_qa" ])
122
128
123
129
to_files (messages [- 1 ]["content" ], dbs .workspace )
124
130
return messages
@@ -133,7 +139,7 @@ def gen_code(ai: AI, dbs: DBs):
133
139
ai .fuser (f"Specification:\n \n { dbs .memory ['specification' ]} " ),
134
140
ai .fuser (f"Unit tests:\n \n { dbs .memory ['unit_tests' ]} " ),
135
141
]
136
- messages = ai .next (messages , dbs .identity ["use_qa" ])
142
+ messages = ai .next (messages , dbs .preprompts ["use_qa" ])
137
143
to_files (messages [- 1 ]["content" ], dbs .workspace )
138
144
return messages
139
145
@@ -170,7 +176,7 @@ def gen_entrypoint(ai, dbs):
170
176
"From this you will answer with code blocks that includes all the necessary "
171
177
"unix terminal commands to "
172
178
"a) install dependencies "
173
- "b) run all necessary parts of the codebase (in parallel if necessary).\n "
179
+ "b) run all necessary parts of the codebase (in parallell if necessary).\n "
174
180
"Do not install globally. Do not use sudo.\n "
175
181
"Do not explain the code, just give the commands.\n "
176
182
"Do not use placeholders, use example values (like . for a folder argument) "
@@ -191,7 +197,7 @@ def use_feedback(ai: AI, dbs: DBs):
191
197
ai .fsystem (setup_sys_prompt (dbs )),
192
198
ai .fuser (f"Instructions: { dbs .input ['main_prompt' ]} " ),
193
199
ai .fassistant (dbs .workspace ["all_output.txt" ]),
194
- ai .fsystem (dbs .identity ["use_feedback" ]),
200
+ ai .fsystem (dbs .preprompts ["use_feedback" ]),
195
201
]
196
202
messages = ai .next (messages , dbs .input ["feedback" ])
197
203
to_files (messages [- 1 ]["content" ], dbs .workspace )
@@ -204,7 +210,7 @@ def fix_code(ai: AI, dbs: DBs):
204
210
ai .fsystem (setup_sys_prompt (dbs )),
205
211
ai .fuser (f"Instructions: { dbs .input ['main_prompt' ]} " ),
206
212
ai .fuser (code_output ),
207
- ai .fsystem (dbs .identity ["fix_code" ]),
213
+ ai .fsystem (dbs .preprompts ["fix_code" ]),
208
214
]
209
215
messages = ai .next (messages , "Please fix any errors in the code above." )
210
216
to_files (messages [- 1 ]["content" ], dbs .workspace )
0 commit comments