summaryrefslogtreecommitdiffstats
path: root/g4f/Provider/ChatgptDuo.py
diff options
context:
space:
mode:
Diffstat (limited to 'g4f/Provider/ChatgptDuo.py')
-rw-r--r--g4f/Provider/ChatgptDuo.py28
1 files changed, 17 insertions, 11 deletions
diff --git a/g4f/Provider/ChatgptDuo.py b/g4f/Provider/ChatgptDuo.py
index 07f4c16c..119ff16b 100644
--- a/g4f/Provider/ChatgptDuo.py
+++ b/g4f/Provider/ChatgptDuo.py
@@ -1,6 +1,6 @@
from __future__ import annotations
-from g4f.requests import AsyncSession
+from curl_cffi.requests import AsyncSession
from .base_provider import AsyncProvider, format_prompt
@@ -14,26 +14,32 @@ class ChatgptDuo(AsyncProvider):
cls,
model: str,
messages: list[dict[str, str]],
+ proxy: str = None,
+ timeout: int = 30,
**kwargs
) -> str:
- async with AsyncSession(impersonate="chrome107") as session:
+ async with AsyncSession(
+ impersonate="chrome107",
+ proxies={"https": proxy},
+ timeout=timeout
+ ) as session:
prompt = format_prompt(messages),
data = {
"prompt": prompt,
"search": prompt,
"purpose": "ask",
}
- async with session.post(f"{cls.url}/", data=data) as response:
- response.raise_for_status()
- data = await response.json()
+ response = await session.post(f"{cls.url}/", data=data)
+ response.raise_for_status()
+ data = response.json()
- cls._sources = [{
- "title": source["title"],
- "url": source["link"],
- "snippet": source["snippet"]
- } for source in data["results"]]
+ cls._sources = [{
+ "title": source["title"],
+ "url": source["link"],
+ "snippet": source["snippet"]
+ } for source in data["results"]]
- return data["answer"]
+ return data["answer"]
@classmethod
def get_sources(cls):