summaryrefslogblamecommitdiffstats
path: root/g4f/Provider/deprecated/Forefront.py
blob: 2f807e91f9803a1f318851c6c96ae236e2796653 (plain) (tree)
1
2
3
4
5
6
7
8

                                  



               

                                        


                              

                                                   





                                       

                                                     
                     




                                                      
                                                                     


                                                                         

         


                                                                                                                  



                                                                            
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"]