17
17
import sys
18
18
import tempfile
19
19
import time
20
+ import filetype
20
21
import traceback
21
22
import wave
22
23
import zipfile
@@ -581,63 +582,6 @@ def get_chat_model(is_g4f=False):
581
582
all_models .extend (obj .get ("model_list" , []))
582
583
return all_models
583
584
584
- def get_gemini_argument (model , system , messages , cur_text , stream , images ):
585
- try :
586
- args = {
587
- "system" : system ,
588
- "model" : model ,
589
- "messages" : messages ,
590
- "stream" : stream ,
591
- }
592
- if len (images ) > 0 :
593
- args ["images" ] = [PIL .Image .open (BytesIO (image )) for image in images ]
594
- args ["messages" ].append ({"role" : "user" , "content" : cur_text })
595
- return args
596
- except Exception as e :
597
- print (e )
598
- raise e
599
-
600
-
601
- def get_claude_argument (model , system , messages , cur_text , stream , images ):
602
- try :
603
- args = {
604
- "model" : model ,
605
- "system" : system ,
606
- "messages" : messages ,
607
- "max_tokens" : DEFAULT_TOKEN_CHUNK_SIZE ,
608
- "stream" : stream ,
609
- }
610
- # TODO REFACTORING (FOR COMMON FUNCTION FOR VISION)
611
- # Vision
612
- if len (images ) > 0 :
613
- multiple_images_content = []
614
- for image in images :
615
- multiple_images_content .append (
616
- {
617
- "type" : "image" ,
618
- "source" : {
619
- "type" : "base64" ,
620
- "media_type" : "image/png" ,
621
- "data" : get_image_url_from_local (image ),
622
- },
623
- }
624
- )
625
-
626
- multiple_images_content = multiple_images_content [:] + [
627
- {"type" : "text" , "text" : cur_text }
628
- ]
629
-
630
- args ["messages" ].append (
631
- {"role" : "user" , "content" : multiple_images_content }
632
- )
633
- else :
634
- args ["messages" ].append ({"role" : "user" , "content" : cur_text })
635
- return args
636
- except Exception as e :
637
- print (e )
638
- raise e
639
-
640
-
641
585
def set_api_key (env_var_name , api_key ):
642
586
api_key = api_key .strip () if api_key else ""
643
587
if env_var_name == "OPENAI_API_KEY" :
@@ -655,7 +599,14 @@ def set_api_key(env_var_name, api_key):
655
599
# Set environment variables dynamically
656
600
os .environ [env_var_name ] = api_key
657
601
658
- def get_image_url_from_local (image , is_openai = False ):
602
+ def get_mime_type_from_bytes (byte_data ):
603
+ kind = filetype .guess (byte_data )
604
+ if kind is None :
605
+ raise ValueError ("Could not determine MIME type from bytes" )
606
+ print (kind .mime )
607
+ return kind .mime
608
+
609
+ def get_image_url_from_local (image ):
659
610
"""
660
611
Image is bytes, this function converts it to base64 and returns the image url
661
612
"""
@@ -665,10 +616,7 @@ def encode_image(image):
665
616
return base64 .b64encode (image ).decode ("utf-8" )
666
617
667
618
base64_image = encode_image (image )
668
- if is_openai :
669
- return f"data:image/jpeg;base64,{ base64_image } "
670
- else :
671
- return base64_image
619
+ return f"data:{ get_mime_type_from_bytes (image )} ;base64,{ base64_image } "
672
620
673
621
674
622
def get_message_obj (role , content ):
@@ -839,7 +787,7 @@ def get_api_argument(
839
787
{
840
788
"type" : "image_url" ,
841
789
"image_url" : {
842
- "url" : get_image_url_from_local (image , is_openai = True ),
790
+ "url" : get_image_url_from_local (image ),
843
791
},
844
792
}
845
793
)
0 commit comments