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