Skip to content

Commit ff35f17

Browse files
committed
Create gpt_4_fallback method
1 parent 817d137 commit ff35f17

File tree

1 file changed

+46
-6
lines changed

1 file changed

+46
-6
lines changed

operate/models/apis.py

Lines changed: 46 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ async def get_next_action(model, messages, objective, session_id):
5151
operation = await call_gpt_4_vision_preview_labeled(messages, objective)
5252
return operation, None
5353
if model == "gpt-4-with-ocr":
54-
operation = await call_gpt_4_vision_preview_ocr(messages, objective)
54+
operation = await call_gpt_4_vision_preview_ocr(messages, objective, model)
5555
return operation, None
5656
elif model == "agent-1":
5757
return "coming soon"
@@ -192,14 +192,16 @@ def call_gemini_pro_vision(messages, objective):
192192
return call_gpt_4_vision_preview(messages)
193193

194194

195-
async def call_gpt_4_vision_preview_ocr(messages, objective):
195+
async def call_gpt_4_vision_preview_ocr(messages, objective, model):
196196
if VERBOSE:
197-
print("[call_gpt_4_vision_preview_ocr] extracted_text")
198-
time.sleep(1)
199-
client = config.initialize_openai()
197+
print("[call_gpt_4_vision_preview_ocr]")
200198

201199
# Construct the path to the file within the package
202200
try:
201+
time.sleep(1)
202+
client = config.initialize_openai()
203+
204+
confirm_system_prompt(messages, objective, model)
203205
screenshots_dir = "screenshots"
204206
if not os.path.exists(screenshots_dir):
205207
os.makedirs(screenshots_dir)
@@ -312,7 +314,8 @@ async def call_gpt_4_vision_preview_ocr(messages, objective):
312314
f"{ANSI_GREEN}[Self-Operating Computer]{ANSI_RED}[Error] Something went wrong. Trying another method {ANSI_RESET}",
313315
e,
314316
)
315-
return call_gpt_4_vision_preview(messages)
317+
traceback.print_exc()
318+
return gpt_4_fallback(messages, objective, model)
316319

317320

318321
async def call_gpt_4_vision_preview_labeled(messages, objective):
@@ -447,6 +450,7 @@ async def call_gpt_4_vision_preview_labeled(messages, objective):
447450
f"{ANSI_GREEN}[Self-Operating Computer]{ANSI_RED}[Error] Something went wrong. Trying another method {ANSI_RESET}",
448451
e,
449452
)
453+
traceback.print_exc()
450454
return call_gpt_4_vision_preview(messages)
451455

452456

@@ -462,3 +466,39 @@ def get_last_assistant_message(messages):
462466
else:
463467
return messages[index]
464468
return None # Return None if no assistant message is found
469+
470+
471+
def gpt_4_fallback(messages, objective, model):
472+
if VERBOSE:
473+
print("[gpt_4_fallback]")
474+
system_prompt = get_system_prompt("gpt-4-vision-preview", objective)
475+
new_system_message = {"role": "system", "content": system_prompt}
476+
# remove and replace the first message in `messages` with `new_system_message`
477+
478+
messages[0] = new_system_message
479+
if VERBOSE:
480+
print("[gpt_4_fallback] new messages", messages)
481+
482+
if VERBOSE:
483+
print("[gpt_4_fallback][updated]")
484+
print("[gpt_4_fallback][updated] len(messages)", len(messages))
485+
486+
return call_gpt_4_vision_preview(messages)
487+
488+
489+
def confirm_system_prompt(messages, objective, model):
490+
"""
491+
On `Exception` we default to `call_gpt_4_vision_preview` so we have this function to reassign system prompt in case of a previous failure
492+
"""
493+
if VERBOSE:
494+
print("[confirm_system_prompt]")
495+
496+
system_prompt = get_system_prompt(model, objective)
497+
new_system_message = {"role": "system", "content": system_prompt}
498+
# remove and replace the first message in `messages` with `new_system_message`
499+
500+
messages[0] = new_system_message
501+
502+
if VERBOSE:
503+
print("[confirm_system_prompt][updated]")
504+
print("[confirm_system_prompt][updated] len(messages)", len(messages))

0 commit comments

Comments
 (0)