From 0bdfd990bdb61d8ed95893ad660a861f2168fe79 Mon Sep 17 00:00:00 2001
From: hlohaus <983577+hlohaus@users.noreply.github.com>
Date: Mon, 27 Jan 2025 13:04:30 +0100
Subject: Support token in OpenaiTemplate Fix image selection on mobile
Support boxed inline MathJax
---
g4f/Provider/needs_auth/OpenaiTemplate.py | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
(limited to 'g4f/Provider/needs_auth/OpenaiTemplate.py')
diff --git a/g4f/Provider/needs_auth/OpenaiTemplate.py b/g4f/Provider/needs_auth/OpenaiTemplate.py
index bbf5b7cf..72481c9b 100644
--- a/g4f/Provider/needs_auth/OpenaiTemplate.py
+++ b/g4f/Provider/needs_auth/OpenaiTemplate.py
@@ -1,13 +1,14 @@
from __future__ import annotations
import json
+import time
import requests
from ..helper import filter_none
from ..base_provider import AsyncGeneratorProvider, ProviderModelMixin, RaiseErrorMixin
from ...typing import Union, Optional, AsyncResult, Messages, ImagesType
from ...requests import StreamSession, raise_for_status
-from ...providers.response import FinishReason, ToolCalls, Usage
+from ...providers.response import FinishReason, ToolCalls, Usage, Reasoning
from ...errors import MissingAuthError, ResponseError
from ...image import to_data_uri
from ... import debug
@@ -121,6 +122,7 @@ class OpenaiTemplate(AsyncGeneratorProvider, ProviderModelMixin, RaiseErrorMixin
elif content_type.startswith("text/event-stream"):
await raise_for_status(response)
first = True
+ is_thinking = 0
async for line in response.iter_lines():
if line.startswith(b"data: "):
chunk = line[6:]
@@ -135,7 +137,17 @@ class OpenaiTemplate(AsyncGeneratorProvider, ProviderModelMixin, RaiseErrorMixin
delta = delta.lstrip()
if delta:
first = False
- yield delta
+ if is_thinking:
+ if "" in delta:
+ yield Reasoning(None, f"Finished in {round(time.time()-is_thinking, 2)} seconds")
+ is_thinking = 0
+ else:
+ yield Reasoning(delta)
+ elif "" in delta:
+ is_thinking = time.time()
+ yield Reasoning(None, "Is thinking...")
+ else:
+ yield delta
if "usage" in data and data["usage"]:
yield Usage(**data["usage"])
if "finish_reason" in choice and choice["finish_reason"] is not None:
--
cgit v1.2.3