summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTekky <98614666+xtekky@users.noreply.github.com>2023-11-13 10:57:50 +0100
committerGitHub <noreply@github.com>2023-11-13 10:57:50 +0100
commit82f3cdc7621f0aabfe168a823f59d9f79792533b (patch)
tree612904e83f55237fcc83b68c29a3e4cadaf04e4a
parentMerge pull request #1241 from hlohaus/pi (diff)
parentRefactor item_data update to handle byte keys and convert messages to dict. (diff)
downloadgpt4free-82f3cdc7621f0aabfe168a823f59d9f79792533b.tar
gpt4free-82f3cdc7621f0aabfe168a823f59d9f79792533b.tar.gz
gpt4free-82f3cdc7621f0aabfe168a823f59d9f79792533b.tar.bz2
gpt4free-82f3cdc7621f0aabfe168a823f59d9f79792533b.tar.lz
gpt4free-82f3cdc7621f0aabfe168a823f59d9f79792533b.tar.xz
gpt4free-82f3cdc7621f0aabfe168a823f59d9f79792533b.tar.zst
gpt4free-82f3cdc7621f0aabfe168a823f59d9f79792533b.zip
-rw-r--r--g4f/api/__init__.py13
1 files changed, 11 insertions, 2 deletions
diff --git a/g4f/api/__init__.py b/g4f/api/__init__.py
index ad3b0db4..de05c377 100644
--- a/g4f/api/__init__.py
+++ b/g4f/api/__init__.py
@@ -1,3 +1,6 @@
+import ast
+import logging
+
from fastapi import FastAPI, Response, Request
from fastapi.responses import StreamingResponse
from typing import List, Union, Any, Dict, AnyStr
@@ -68,14 +71,20 @@ class Api:
'stream': False,
}
- item_data.update(item or {})
+ # item contains byte keys, and dict.get suppresses error
+ item_data.update({key.decode('utf-8') if isinstance(key, bytes) else key: str(value) for key, value in (item or {}).items()})
+ # messages is str, need dict
+ if isinstance(item_data.get('messages'), str):
+ item_data['messages'] = ast.literal_eval(item_data.get('messages'))
+
model = item_data.get('model')
stream = item_data.get('stream')
messages = item_data.get('messages')
try:
response = g4f.ChatCompletion.create(model=model, stream=stream, messages=messages)
- except:
+ except Exception as e:
+ logging.exception(e)
return Response(content=json.dumps({"error": "An error occurred while generating the response."}, indent=4), media_type="application/json")
completion_id = ''.join(random.choices(string.ascii_letters + string.digits, k=28))