0
0
mirror of https://github.com/MIDORIBIN/langchain-gpt4free.git synced 2024-12-23 19:22:58 +03:00

Merge pull request #5 from Ludobico/Ludobico/AsyncStreaming

feat : AsyncStreaming
This commit is contained in:
MIDORIBIN 2023-09-07 12:08:25 +09:00 committed by GitHub
commit 25c435aa3f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,9 +1,10 @@
from typing import Any, List, Mapping, Optional, Union
from functools import partial
from g4f import ChatCompletion
from g4f.models import Model
from g4f.Provider.base_provider import BaseProvider
from langchain.callbacks.manager import CallbackManagerForLLMRun
from langchain.callbacks.manager import CallbackManagerForLLMRun, AsyncCallbackManagerForLLMRun
from langchain.llms.base import LLM
from langchain.llms.utils import enforce_stop_tokens
@ -42,6 +43,24 @@ class G4FLLM(LLM):
if stop is not None:
text = enforce_stop_tokens(text, stop)
return text
async def _acall(self, prompt: str, stop: Optional[List[str]] = None, run_manager: Optional[AsyncCallbackManagerForLLMRun] = None, **kwargs: Any) -> str:
create_kwargs = {} if self.create_kwargs is None else self.create_kwargs.copy()
create_kwargs["model"] = self.model
if self.provider is not None:
create_kwargs["provider"] = self.provider
if self.auth is not None:
create_kwargs["auth"] = self.auth
text_callback = None
if run_manager:
text_callback = partial(run_manager.on_llm_new_token)
text = ""
for token in ChatCompletion.create(messages=[{"role": "user", "content": prompt}], stream=True, **create_kwargs):
if text_callback:
await text_callback(token)
text += token
return text
@property
def _identifying_params(self) -> Mapping[str, Any]: