summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorxtekky <98614666+xtekky@users.noreply.github.com>2023-07-16 19:50:00 +0200
committerGitHub <noreply@github.com>2023-07-16 19:50:00 +0200
commit821c8dcd470456143deaa34ff4edb1ae05f0f147 (patch)
treeb5e6ff34b32d6c29ea6890f06d903daebf94113c
parentMerge pull request #742 from dikos1337/fix-anchors (diff)
parentrefactor/move provider from testing folder (diff)
downloadgpt4free-821c8dcd470456143deaa34ff4edb1ae05f0f147.tar
gpt4free-821c8dcd470456143deaa34ff4edb1ae05f0f147.tar.gz
gpt4free-821c8dcd470456143deaa34ff4edb1ae05f0f147.tar.bz2
gpt4free-821c8dcd470456143deaa34ff4edb1ae05f0f147.tar.lz
gpt4free-821c8dcd470456143deaa34ff4edb1ae05f0f147.tar.xz
gpt4free-821c8dcd470456143deaa34ff4edb1ae05f0f147.tar.zst
gpt4free-821c8dcd470456143deaa34ff4edb1ae05f0f147.zip
-rw-r--r--g4f/Provider/Providers/AiService.py40
-rw-r--r--g4f/Provider/Providers/BingHuan.py27
-rw-r--r--g4f/Provider/Providers/Wewordle.py (renamed from testing/wewordle/Wewordle.py)32
-rw-r--r--g4f/Provider/Providers/helpers/binghuan.py (renamed from testing/binghuan/helpers/binghuan.py)0
-rw-r--r--g4f/Provider/__init__.py3
-rw-r--r--testing/aiservice/AiService.py62
-rw-r--r--testing/aiservice/README.md2
-rw-r--r--testing/aiservice/testing.py30
-rw-r--r--testing/binghuan/BingHuan.py49
-rw-r--r--testing/binghuan/README.md7
-rw-r--r--testing/binghuan/testing.py31
-rw-r--r--testing/wewordle/README.md1
-rw-r--r--testing/wewordle/testing.py30
13 files changed, 74 insertions, 240 deletions
diff --git a/g4f/Provider/Providers/AiService.py b/g4f/Provider/Providers/AiService.py
new file mode 100644
index 00000000..8d475118
--- /dev/null
+++ b/g4f/Provider/Providers/AiService.py
@@ -0,0 +1,40 @@
+import os,sys
+import requests
+from ...typing import get_type_hints
+
+url = "https://aiservice.vercel.app/api/chat/answer"
+model = ['gpt-3.5-turbo']
+supports_stream = False
+needs_auth = False
+
+
+def _create_completion(model: str, messages: list, stream: bool, **kwargs):
+ base = ''
+ for message in messages:
+ base += '%s: %s\n' % (message['role'], message['content'])
+ base += 'assistant:'
+
+ headers = {
+ "accept": "*/*",
+ "content-type": "text/plain;charset=UTF-8",
+ "sec-fetch-dest": "empty",
+ "sec-fetch-mode": "cors",
+ "sec-fetch-site": "same-origin",
+ "Referer": "https://aiservice.vercel.app/chat",
+ }
+ data = {
+ "input": base
+ }
+ response = requests.post(url, headers=headers, json=data)
+ if response.status_code == 200:
+ _json = response.json()
+ yield _json['data']
+ else:
+ print(f"Error Occurred::{response.status_code}")
+ return None
+
+
+
+params = f'g4f.Providers.{os.path.basename(__file__)[:-3]} supports: ' + \
+ '(%s)' % ', '.join(
+ [f"{name}: {get_type_hints(_create_completion)[name].__name__}" for name in _create_completion.__code__.co_varnames[:_create_completion.__code__.co_argcount]]) \ No newline at end of file
diff --git a/g4f/Provider/Providers/BingHuan.py b/g4f/Provider/Providers/BingHuan.py
new file mode 100644
index 00000000..7344a342
--- /dev/null
+++ b/g4f/Provider/Providers/BingHuan.py
@@ -0,0 +1,27 @@
+import os,sys
+import json
+import subprocess
+from ...typing import sha256, Dict, get_type_hints
+
+url = 'https://b.ai-huan.xyz'
+model = ['gpt-3.5-turbo', 'gpt-4']
+supports_stream = True
+needs_auth = False
+
+def _create_completion(model: str, messages: list, stream: bool, **kwargs):
+ path = os.path.dirname(os.path.realpath(__file__))
+ config = json.dumps({
+ 'messages': messages,
+ 'model': model}, separators=(',', ':'))
+ cmd = ['python', f'{path}/helpers/binghuan.py', config]
+
+ p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+
+ for line in iter(p.stdout.readline, b''):
+ yield line.decode('cp1252')
+
+
+
+params = f'g4f.Providers.{os.path.basename(__file__)[:-3]} supports: ' + \
+ '(%s)' % ', '.join(
+ [f"{name}: {get_type_hints(_create_completion)[name].__name__}" for name in _create_completion.__code__.co_varnames[:_create_completion.__code__.co_argcount]]) \ No newline at end of file
diff --git a/testing/wewordle/Wewordle.py b/g4f/Provider/Providers/Wewordle.py
index 0d79c5c7..95966fbd 100644
--- a/testing/wewordle/Wewordle.py
+++ b/g4f/Provider/Providers/Wewordle.py
@@ -4,7 +4,7 @@ import json
import random
import time
import string
-# from ...typing import sha256, Dict, get_type_hints
+from ...typing import sha256, Dict, get_type_hints
url = "https://wewordle.org/gptapi/v1/android/turbo"
model = ['gpt-3.5-turbo']
@@ -68,30 +68,6 @@ def _create_completion(model: str, messages: list, stream: bool, **kwargs):
print(f"Error Occurred::{response.status_code}")
return None
-# params = f'g4f.Providers.{os.path.basename(__file__)[:-3]} supports: ' + \
-# '(%s)' % ', '.join(
-# [f"{name}: {get_type_hints(_create_completion)[name].__name__}" for name in _create_completion.__code__.co_varnames[:_create_completion.__code__.co_argcount]])
-
-
-# Temporary For ChatCompletion Class
-class ChatCompletion:
- @staticmethod
- def create(model: str, messages: list, provider: None or str, stream: bool = False, auth: str = False, **kwargs):
- kwargs['auth'] = auth
-
- if provider and needs_auth and not auth:
- print(
- f'ValueError: {provider} requires authentication (use auth="cookie or token or jwt ..." param)', file=sys.stderr)
- sys.exit(1)
-
- try:
-
-
- return (_create_completion(model, messages, stream, **kwargs)
- if stream else ''.join(_create_completion(model, messages, stream, **kwargs)))
- except TypeError as e:
- print(e)
- arg: str = str(e).split("'")[1]
- print(
- f"ValueError: {provider} does not support '{arg}' argument", file=sys.stderr)
- sys.exit(1)
+params = f'g4f.Providers.{os.path.basename(__file__)[:-3]} supports: ' + \
+ '(%s)' % ', '.join(
+ [f"{name}: {get_type_hints(_create_completion)[name].__name__}" for name in _create_completion.__code__.co_varnames[:_create_completion.__code__.co_argcount]]) \ No newline at end of file
diff --git a/testing/binghuan/helpers/binghuan.py b/g4f/Provider/Providers/helpers/binghuan.py
index 203bbe45..203bbe45 100644
--- a/testing/binghuan/helpers/binghuan.py
+++ b/g4f/Provider/Providers/helpers/binghuan.py
diff --git a/g4f/Provider/__init__.py b/g4f/Provider/__init__.py
index 3a86291d..e8fbf617 100644
--- a/g4f/Provider/__init__.py
+++ b/g4f/Provider/__init__.py
@@ -19,6 +19,9 @@ from .Providers import (
EasyChat,
Acytoo,
DFEHub,
+ AiService,
+ BingHuan,
+ Wewordle
)
Palm = Bard
diff --git a/testing/aiservice/AiService.py b/testing/aiservice/AiService.py
deleted file mode 100644
index 287a39ef..00000000
--- a/testing/aiservice/AiService.py
+++ /dev/null
@@ -1,62 +0,0 @@
-import os,sys
-import requests
-# from ...typing import get_type_hints
-
-url = "https://aiservice.vercel.app/api/chat/answer"
-model = ['gpt-3.5-turbo']
-supports_stream = False
-needs_auth = False
-
-
-def _create_completion(model: str, messages: list, stream: bool, **kwargs):
- base = ''
- for message in messages:
- base += '%s: %s\n' % (message['role'], message['content'])
- base += 'assistant:'
-
- headers = {
- "accept": "*/*",
- "content-type": "text/plain;charset=UTF-8",
- "sec-fetch-dest": "empty",
- "sec-fetch-mode": "cors",
- "sec-fetch-site": "same-origin",
- "Referer": "https://aiservice.vercel.app/chat",
- }
- data = {
- "input": base
- }
- response = requests.post(url, headers=headers, json=data)
- if response.status_code == 200:
- _json = response.json()
- yield _json['data']
- else:
- print(f"Error Occurred::{response.status_code}")
- return None
-
-
-
-# params = f'g4f.Providers.{os.path.basename(__file__)[:-3]} supports: ' + \
-# '(%s)' % ', '.join(
-# [f"{name}: {get_type_hints(_create_completion)[name].__name__}" for name in _create_completion.__code__.co_varnames[:_create_completion.__code__.co_argcount]])
-
-
-# Temporary For ChatCompletion Class
-class ChatCompletion:
- @staticmethod
- def create(model: str, messages: list, provider: None or str, stream: bool = False, auth: str = False, **kwargs):
- kwargs['auth'] = auth
-
- if provider and needs_auth and not auth:
- print(
- f'ValueError: {provider} requires authentication (use auth="cookie or token or jwt ..." param)', file=sys.stderr)
- sys.exit(1)
-
- try:
- return (_create_completion(model, messages, stream, **kwargs)
- if stream else ''.join(_create_completion(model, messages, stream, **kwargs)))
- except TypeError as e:
- print(e)
- arg: str = str(e).split("'")[1]
- print(
- f"ValueError: {provider} does not support '{arg}' argument", file=sys.stderr)
- sys.exit(1) \ No newline at end of file
diff --git a/testing/aiservice/README.md b/testing/aiservice/README.md
deleted file mode 100644
index 83b06481..00000000
--- a/testing/aiservice/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-https://github.com/xtekky/gpt4free/issues/40#issuecomment-1629152431
-probably gpt-3.5 \ No newline at end of file
diff --git a/testing/aiservice/testing.py b/testing/aiservice/testing.py
deleted file mode 100644
index 5cb6c5ef..00000000
--- a/testing/aiservice/testing.py
+++ /dev/null
@@ -1,30 +0,0 @@
-from AiService import ChatCompletion
-
-# Test 1
-response = ChatCompletion.create(model="gpt-3.5-turbo",
- provider="AiService",
- stream=False,
- messages=[{'role': 'user', 'content': 'who are you?'}])
-
-print(response)
-
-# Test 2
-response = ChatCompletion.create(model="gpt-3.5-turbo",
- provider="AiService",
- stream=False,
- messages=[{'role': 'user', 'content': 'what you can do?'}])
-
-print(response)
-
-
-# Test 3
-response = ChatCompletion.create(model="gpt-3.5-turbo",
- provider="AiService",
- stream=False,
- messages=[
- {'role': 'user', 'content': 'now your name is Bob'},
- {'role': 'assistant', 'content': 'Hello Im Bob, you asistant'},
- {'role': 'user', 'content': 'what your name again?'},
- ])
-
-print(response) \ No newline at end of file
diff --git a/testing/binghuan/BingHuan.py b/testing/binghuan/BingHuan.py
deleted file mode 100644
index 8c859c08..00000000
--- a/testing/binghuan/BingHuan.py
+++ /dev/null
@@ -1,49 +0,0 @@
-import os,sys
-import json
-import subprocess
-# from ...typing import sha256, Dict, get_type_hints
-
-url = 'https://b.ai-huan.xyz'
-model = ['gpt-3.5-turbo', 'gpt-4']
-supports_stream = True
-needs_auth = False
-
-def _create_completion(model: str, messages: list, stream: bool, **kwargs):
- path = os.path.dirname(os.path.realpath(__file__))
- config = json.dumps({
- 'messages': messages,
- 'model': model}, separators=(',', ':'))
- cmd = ['python', f'{path}/helpers/binghuan.py', config]
-
- p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
-
- for line in iter(p.stdout.readline, b''):
- yield line.decode('cp1252')
-
-
-
-# params = f'g4f.Providers.{os.path.basename(__file__)[:-3]} supports: ' + \
-# '(%s)' % ', '.join(
-# [f"{name}: {get_type_hints(_create_completion)[name].__name__}" for name in _create_completion.__code__.co_varnames[:_create_completion.__code__.co_argcount]])
-
-
-# Temporary For ChatCompletion Class
-class ChatCompletion:
- @staticmethod
- def create(model: str, messages: list, provider: None or str, stream: bool = False, auth: str = False, **kwargs):
- kwargs['auth'] = auth
-
- if provider and needs_auth and not auth:
- print(
- f'ValueError: {provider} requires authentication (use auth="cookie or token or jwt ..." param)', file=sys.stderr)
- sys.exit(1)
-
- try:
- return (_create_completion(model, messages, stream, **kwargs)
- if stream else ''.join(_create_completion(model, messages, stream, **kwargs)))
- except TypeError as e:
- print(e)
- arg: str = str(e).split("'")[1]
- print(
- f"ValueError: {provider} does not support '{arg}' argument", file=sys.stderr)
- sys.exit(1) \ No newline at end of file
diff --git a/testing/binghuan/README.md b/testing/binghuan/README.md
deleted file mode 100644
index 642f1fee..00000000
--- a/testing/binghuan/README.md
+++ /dev/null
@@ -1,7 +0,0 @@
-https://github.com/xtekky/gpt4free/issues/40#issuecomment-1630946450
-flow chat process is realy like real Bing (create conversation,listern to websocket and more)
-so i just use code Bing Provider from https://gitler.moe/g4f/gpt4free/ version and replace API endpoint and some conversationstyles and work fine
-
-but bing dont realy support multi/continues conversation (using prompt template from original Provider : def convert(messages) : https://github.com/xtekky/gpt4free/blob/e594500c4e7a8443e9b3f4af755c72f42dae83f0/g4f/Provider/Providers/Bing.py#L322)
-
-also i have problem with emoji encoding idk how to fix that \ No newline at end of file
diff --git a/testing/binghuan/testing.py b/testing/binghuan/testing.py
deleted file mode 100644
index 2db0b427..00000000
--- a/testing/binghuan/testing.py
+++ /dev/null
@@ -1,31 +0,0 @@
-from BingHuan import ChatCompletion
-
-# Test 1
-response = ChatCompletion.create(model="gpt-3.5-turbo",
- provider="BingHuan",
- stream=False,
- messages=[{'role': 'user', 'content': 'who are you?'}])
-
-print(response)
-
-# Test 2
-# this prompt will return emoji in end of response
-response = ChatCompletion.create(model="gpt-3.5-turbo",
- provider="BingHuan",
- stream=False,
- messages=[{'role': 'user', 'content': 'what you can do?'}])
-
-print(response)
-
-
-# Test 3
-response = ChatCompletion.create(model="gpt-4",
- provider="BingHuan",
- stream=False,
- messages=[
- {'role': 'user', 'content': 'now your name is Bob'},
- {'role': 'assistant', 'content': 'Hello Im Bob, you asistant'},
- {'role': 'user', 'content': 'what your name again?'},
- ])
-
-print(response) \ No newline at end of file
diff --git a/testing/wewordle/README.md b/testing/wewordle/README.md
deleted file mode 100644
index ec2289c2..00000000
--- a/testing/wewordle/README.md
+++ /dev/null
@@ -1 +0,0 @@
-original from website https://chat-gpt.com/chat https://github.com/xtekky/gpt4free/issues/40#issuecomment-1629152431, i got api https://wewordle.org/gptapi/v1/web/turbo but it got limit so i try to try reverse they android app and i got api https://wewordle.org/gptapi/v1/android/turbo and just randomize user id to bypass limit \ No newline at end of file
diff --git a/testing/wewordle/testing.py b/testing/wewordle/testing.py
deleted file mode 100644
index cebcaeed..00000000
--- a/testing/wewordle/testing.py
+++ /dev/null
@@ -1,30 +0,0 @@
-from Wewordle import ChatCompletion
-
-# Test 1
-response = ChatCompletion.create(model="gpt-3.5-turbo",
- provider="Wewordle",
- stream=False,
- messages=[{'role': 'user', 'content': 'who are you?'}])
-
-print(response)
-
-# Test 2
-response = ChatCompletion.create(model="gpt-3.5-turbo",
- provider="Wewordle",
- stream=False,
- messages=[{'role': 'user', 'content': 'what you can do?'}])
-
-print(response)
-
-
-# Test 3
-response = ChatCompletion.create(model="gpt-3.5-turbo",
- provider="Wewordle",
- stream=False,
- messages=[
- {'role': 'user', 'content': 'now your name is Bob'},
- {'role': 'assistant', 'content': 'Hello Im Bob, you asistant'},
- {'role': 'user', 'content': 'what your name again?'},
- ])
-
-print(response)