diff --git a/setup.py b/setup.py index ee868a2..ffe6101 100644 --- a/setup.py +++ b/setup.py @@ -4,7 +4,7 @@ setup( name="modelmerge", - version="0.7.12", + version="0.8.0", description="modelmerge is a multi-large language model API aggregator.", long_description=Path.open(Path("README.md"), encoding="utf-8").read(), long_description_content_type="text/markdown", diff --git a/src/ModelMerge/models/chatgpt.py b/src/ModelMerge/models/chatgpt.py index 4c44d98..e0d35a8 100644 --- a/src/ModelMerge/models/chatgpt.py +++ b/src/ModelMerge/models/chatgpt.py @@ -321,7 +321,8 @@ def ask_stream( json_post["max_tokens"] = model_max_tokens print("api_url", self.api_url.chat_url) for _ in range(2): - print(json.dumps(json_post, indent=4, ensure_ascii=False)) + replaced_text = json.loads(re.sub(r'/9j/([A-Za-z0-9+/=]+)', '/9j/***', str(json_post)).replace("'", "\"")) + print(json.dumps(replaced_text, indent=4, ensure_ascii=False)) try: response = self.session.post( self.api_url.chat_url, diff --git a/src/ModelMerge/models/claude.py b/src/ModelMerge/models/claude.py index a063437..472f58d 100644 --- a/src/ModelMerge/models/claude.py +++ b/src/ModelMerge/models/claude.py @@ -1,4 +1,5 @@ import os +import re import json import copy import tiktoken @@ -318,7 +319,8 @@ def ask_stream( except: pass - print(json.dumps(json_post, indent=4, ensure_ascii=False)) + replaced_text = json.loads(re.sub(r'/9j/([A-Za-z0-9+/=]+)', '/9j/***', str(json_post)).replace("'", "\"")) + print(json.dumps(replaced_text, indent=4, ensure_ascii=False)) try: response = self.session.post( diff --git a/src/ModelMerge/models/genimi.py b/src/ModelMerge/models/genimi.py index 42b9010..281c9ea 100644 --- a/src/ModelMerge/models/genimi.py +++ b/src/ModelMerge/models/genimi.py @@ -1,4 +1,5 @@ import os +import re import json import requests import tiktoken @@ -37,7 +38,7 @@ def add_to_conversation( if convo_id not in self.conversation or pass_history == False: self.reset(convo_id=convo_id) # print("message", message) - self.conversation[convo_id].append({"role": role, "parts": [{"text": message}]}) + self.conversation[convo_id].append({"role": role, "parts": message}) if total_tokens: self.tokens_usage[convo_id] += total_tokens @@ -124,7 +125,8 @@ def ask_stream( } ], } - print(json.dumps(json_post, indent=4, ensure_ascii=False)) + replaced_text = json.loads(re.sub(r'/9j/([A-Za-z0-9+/=]+)', '/9j/***', str(json_post)).replace("'", "\"")) + print(json.dumps(replaced_text, indent=4, ensure_ascii=False)) url = self.api_url.format(model=model or self.engine, stream="streamGenerateContent", api_key=self.api_key) @@ -166,4 +168,4 @@ def ask_stream( except Exception as e: print("An error occurred:", e) - self.add_to_conversation(full_response, response_role, convo_id=convo_id) \ No newline at end of file + self.add_to_conversation([{"text": full_response}], response_role, convo_id=convo_id) \ No newline at end of file diff --git a/src/ModelMerge/utils/scripts.py b/src/ModelMerge/utils/scripts.py index 066a77a..fe79628 100644 --- a/src/ModelMerge/utils/scripts.py +++ b/src/ModelMerge/utils/scripts.py @@ -69,6 +69,15 @@ def get_image_message(image_url, message, engine = None): } } ) + if os.environ.get('GOOGLE_AI_API_KEY', None) and "gemini" in engine: + message.append( + { + "inlineData": { + "mimeType": "image/jpeg", + "data": base64_image.split(",")[1], + } + } + ) return message def Document_extract(docurl, docpath=None, engine = None):