summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md2
-rw-r--r--g4f/Provider/Liaobots.py2
-rw-r--r--g4f/gui/client/html/index.html8
-rw-r--r--g4f/gui/client/js/chat.v1.js9
-rw-r--r--g4f/gui/server/internet.py2
-rw-r--r--requirements.txt4
-rw-r--r--setup.py6
7 files changed, 15 insertions, 18 deletions
diff --git a/README.md b/README.md
index 19995645..53891817 100644
--- a/README.md
+++ b/README.md
@@ -234,11 +234,11 @@ set G4F_PROXY=http://host:port
| Website | Provider | GPT-3.5 | GPT-4 | Stream | Status | Auth |
| ------ | ------- | ------- | ----- | ------ | ------ | ---- |
| [bing.com](https://bing.com/chat) | `g4f.Provider.Bing` | ❌ | ✔️ | ✔️ | ![Active](https://img.shields.io/badge/Active-brightgreen) | ❌ |
-| [liaobots.site](https://liaobots.site) | `g4f.Provider.Liaobots` | ✔️ | ✔️ | ✔️ | ![Active](https://img.shields.io/badge/Active-brightgreen) | ❌ |
| [chat.openai.com](https://chat.openai.com) | `g4f.Provider.OpenaiChat` | ✔️ | ✔️ | ✔️ | ![Unknown](https://img.shields.io/badge/Active-brightgreen) | ✔️ |
| [raycast.com](https://raycast.com) | `g4f.Provider.Raycast` | ✔️ | ✔️ | ✔️ | ![Unknown](https://img.shields.io/badge/Unknown-grey) | ✔️ |
| [you.com](https://you.com) | `g4f.Provider.You` | ✔️ | ✔️ | ✔️ | ![Active](https://img.shields.io/badge/Active-brightgreen) | ❌ |
| [chat.geekgpt.org](https://chat.geekgpt.org) | `g4f.Provider.GeekGpt` | ✔️ | ✔️ | ✔️ | ![Inactive](https://img.shields.io/badge/Inactive-red) | ❌ |
+| [liaobots.site](https://liaobots.site) | `g4f.Provider.Liaobots` | ✔️ | ✔️ | ✔️ | ![Inactive](https://img.shields.io/badge/Inactive-red) | ❌ |
### GPT-3.5
diff --git a/g4f/Provider/Liaobots.py b/g4f/Provider/Liaobots.py
index 159c8488..79e48ace 100644
--- a/g4f/Provider/Liaobots.py
+++ b/g4f/Provider/Liaobots.py
@@ -73,7 +73,7 @@ models = {
class Liaobots(AsyncGeneratorProvider, ProviderModelMixin):
url = "https://liaobots.site"
- working = True
+ working = False
supports_message_history = True
supports_gpt_35_turbo = True
supports_gpt_4 = True
diff --git a/g4f/gui/client/html/index.html b/g4f/gui/client/html/index.html
index 96829b2c..887562c2 100644
--- a/g4f/gui/client/html/index.html
+++ b/g4f/gui/client/html/index.html
@@ -31,12 +31,16 @@
</script>
<script id="MathJax-script" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js" async></script>
<script type="module" src="https://cdn.jsdelivr.net/npm/mistral-tokenizer-js" async>
- import mistralTokenizer from 'mistral-tokenizer-js'
+ import mistralTokenizer from "mistral-tokenizer-js"
</script>
<script type="module" src="https://belladoreai.github.io/llama-tokenizer-js/llama-tokenizer.js" async>
- import llamaTokenizer from 'llama-tokenizer-js'
+ import llamaTokenizer from "llama-tokenizer-js"
</script>
<script src="https://unpkg.com/gpt-tokenizer/dist/cl100k_base.js" async></script>
+ <script type="module" async>
+ import { countWords } from 'https://esm.run/alfaaz';
+ window.countWords = countWords;
+ </script>
<script>
const user_image = '<img src="/assets/img/user.png" alt="your avatar">';
const gpt_image = '<img src="/assets/img/gpt.png" alt="your avatar">';
diff --git a/g4f/gui/client/js/chat.v1.js b/g4f/gui/client/js/chat.v1.js
index 9772fbf7..7135b8f6 100644
--- a/g4f/gui/client/js/chat.v1.js
+++ b/g4f/gui/client/js/chat.v1.js
@@ -66,7 +66,6 @@ const register_remove_message = async () => {
}
const delete_conversations = async () => {
- localStorage.clear();
for (let i = 0; i < localStorage.length; i++){
let key = localStorage.key(i);
if (key.startsWith("conversation:")) {
@@ -476,12 +475,6 @@ const load_conversation = async (conversation_id) => {
}, 500);
};
-// https://stackoverflow.com/questions/20396456/how-to-do-word-counts-for-a-mixture-of-english-and-chinese-in-javascript
-function count_words(str) {
- var matches = str.match(/[\u00ff-\uffff]|\S+/g);
- return matches ? matches.length : 0;
-}
-
function count_tokens(model, text) {
if (model.startsWith("gpt-3") || model.startsWith("gpt-4")) {
return GPTTokenizer_cl100k_base?.encode(text).length;
@@ -497,7 +490,7 @@ function count_tokens(model, text) {
function count_words_and_tokens(text, model) {
const tokens_count = model ? count_tokens(model, text) : null;
const tokens_append = tokens_count ? `, ${tokens_count} tokens` : "";
- return `(${count_words(text)} words${tokens_append})`
+ return countWords ? `(${countWords(text)} words${tokens_append})` : "";
}
const get_conversation = async (conversation_id) => {
diff --git a/g4f/gui/server/internet.py b/g4f/gui/server/internet.py
index e784e52d..a1fafa7d 100644
--- a/g4f/gui/server/internet.py
+++ b/g4f/gui/server/internet.py
@@ -101,7 +101,7 @@ async def search(query: str, n_results: int = 5, max_words: int = 2500, add_text
raise MissingRequirementsError('Install "duckduckgo-search" and "beautifulsoup4" package')
async with AsyncDDGS() as ddgs:
results = []
- async for result in ddgs.text(
+ for result in await ddgs.text(
query,
region="wt-wt",
safesearch="moderate",
diff --git a/requirements.txt b/requirements.txt
index 4310a96c..f9a9c330 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,11 +1,11 @@
requests
pycryptodome
-curl_cffi>=0.6.0b9
+curl_cffi>=0.6.2
aiohttp
certifi
browser_cookie3
PyExecJS
-duckduckgo-search>=4.4.3
+duckduckgo-search>=5.0
nest_asyncio
werkzeug
loguru
diff --git a/setup.py b/setup.py
index 944445c1..3ac0f0cb 100644
--- a/setup.py
+++ b/setup.py
@@ -15,13 +15,13 @@ INSTALL_REQUIRE = [
EXTRA_REQUIRE = {
'all': [
- "curl_cffi>=0.6.0b9",
+ "curl_cffi>=0.6.2",
"certifi",
"async-property", # openai
"py-arkose-generator", # openai
"browser_cookie3", # get_cookies
"PyExecJS", # GptForLove
- "duckduckgo-search>=4.4.3",# internet.search
+ "duckduckgo-search>=5.0" ,# internet.search
"beautifulsoup4", # internet.search and bing.create_images
"brotli", # openai
"platformdirs", # webdriver
@@ -56,7 +56,7 @@ EXTRA_REQUIRE = {
"gui": [
"werkzeug", "flask",
"beautifulsoup4", "pillow",
- "duckduckgo-search>=4.4.3",
+ "duckduckgo-search>=5.0",
"browser_cookie3"
]
}