@@ -150,14 +150,34 @@ def respond(interpreter):
150
150
151
151
# A common hallucination
152
152
if code .startswith ("functions.execute(" ):
153
- code = code .replace ("functions.execute(" , "" ).rstrip (")" )
154
- code_dict = json .loads (code )
155
- language = code_dict .get ("language" , language )
156
- code = code_dict .get ("code" , code )
157
- interpreter .messages [- 1 ]["content" ] = code # So the LLM can see it.
158
- interpreter .messages [- 1 ][
159
- "format"
160
- ] = language # So the LLM can see it.
153
+ edited_code = code .replace ("functions.execute(" , "" ).rstrip (")" )
154
+ try :
155
+ code_dict = json .loads (edited_code )
156
+ language = code_dict .get ("language" , language )
157
+ code = code_dict .get ("code" , code )
158
+ interpreter .messages [- 1 ][
159
+ "content"
160
+ ] = code # So the LLM can see it.
161
+ interpreter .messages [- 1 ][
162
+ "format"
163
+ ] = language # So the LLM can see it.
164
+ except :
165
+ pass
166
+
167
+ if code .replace ("\n " , "" ).replace (" " , "" ).startswith ('{"language":' ):
168
+ try :
169
+ code_dict = json .loads (code )
170
+ if set (code_dict .keys ()) == {"language" , "code" }:
171
+ language = code_dict ["language" ]
172
+ code = code_dict ["code" ]
173
+ interpreter .messages [- 1 ][
174
+ "content"
175
+ ] = code # So the LLM can see it.
176
+ interpreter .messages [- 1 ][
177
+ "format"
178
+ ] = language # So the LLM can see it.
179
+ except :
180
+ pass
161
181
162
182
if language == "text" or language == "markdown" :
163
183
# It does this sometimes just to take notes. Let it, it's useful.
0 commit comments