summaryrefslogtreecommitdiffstats
path: root/g4f/Provider/Forefront.py
blob: 8f51fb579ae40c5a8c7609dc481a13bcefa7a366 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
from __future__ import annotations

import json

import requests

from ..typing import Any, CreateResult
from .base_provider import BaseProvider


class Forefront(BaseProvider):
    url                   = "https://forefront.com"
    supports_stream       = True
    supports_gpt_35_turbo = True

    @staticmethod
    def create_completion(
        model: str,
        messages: list[dict[str, str]],
        stream: bool, **kwargs: Any) -> CreateResult:
        
        json_data = {
            "text"          : messages[-1]["content"],
            "action"        : "noauth",
            "id"            : "",
            "parentId"      : "",
            "workspaceId"   : "",
            "messagePersona": "607e41fe-95be-497e-8e97-010a59b2e2c0",
            "model"         : "gpt-4",
            "messages"      : messages[:-1] if len(messages) > 1 else [],
            "internetMode"  : "auto",
        }

        response = requests.post("https://streaming.tenant-forefront-default.knative.chi.coreweave.com/free-chat",
            json=json_data, stream=True)
        
        response.raise_for_status()
        for token in response.iter_lines():
            if b"delta" in token:
                yield json.loads(token.decode().split("data: ")[1])["delta"]