fix logic for image switching

This commit is contained in:
Joshua Vial 2023-12-11 21:03:30 +13:00
parent d0255ce2ae
commit 90fb538015

View file

@ -42,18 +42,19 @@ def send_with_retries(client, model_name, messages, functions, stream):
kwargs["functions"] = functions kwargs["functions"] = functions
# Check conditions to switch to gpt-4-vision-preview or strip out image_url messages # Check conditions to switch to gpt-4-vision-preview or strip out image_url messages
if client and model_name.startswith("gpt-4"): if client and model_name.startswith("gpt-4") and "api.openai.com" in client.base_url.host:
if client.base_url.host != "api.openai.com": print('switch model')
if any(isinstance(msg.get("content"), list) and any("image_url" in item for item in msg.get("content") if isinstance(item, dict)) for msg in messages): if any(isinstance(msg.get("content"), list) and any("image_url" in item for item in msg.get("content") if isinstance(item, dict)) for msg in messages):
kwargs['model'] = "gpt-4-vision-preview" kwargs['model'] = "gpt-4-vision-preview"
# gpt-4-vision is limited to max tokens of 4096 # gpt-4-vision is limited to max tokens of 4096
kwargs["max_tokens"] = 4096 kwargs["max_tokens"] = 4096
else: else:
# Strip out any image_url messages if not using gpt-4-vision-preview # Strip out any image_url messages if not using gpt-4-vision-preview
messages = [ print('strip img')
{k: v for k, v in msg.items() if k != "content" or not any(isinstance(item, dict) and "image_url" in item for item in v)} messages = [
for msg in messages if isinstance(msg.get("content"), list) {k: v for k, v in msg.items() if k != "content" or not any(isinstance(item, dict) and "image_url" in item for item in v)}
] + [msg for msg in messages if not isinstance(msg.get("content"), list)] for msg in messages if isinstance(msg.get("content"), list)
] + [msg for msg in messages if not isinstance(msg.get("content"), list)]
key = json.dumps(kwargs, sort_keys=True).encode() key = json.dumps(kwargs, sort_keys=True).encode()