From 6c2e3cc53cdb769f80d7fbb4df418cd4ab8aaabb Mon Sep 17 00:00:00 2001 From: abc <98614666+xtekky@users.noreply.github.com> Date: Sat, 23 Sep 2023 11:16:19 +0100 Subject: ~ | improve Vercel & g4f.Completion.create added `.Completion.create` class. ```py response = g4f.Completion.create( model='text-davinci-003', prompt="Hello") print(response) ``` --- g4f/__init__.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'g4f/__init__.py') diff --git a/g4f/__init__.py b/g4f/__init__.py index f3a887f6..c0f70d8a 100644 --- a/g4f/__init__.py +++ b/g4f/__init__.py @@ -68,3 +68,30 @@ class ChatCompletion: raise Exception(f"Provider: {provider.__name__} doesn't support create_async") return await provider.create_async(model.name, messages, **kwargs) + +class Completion: + @staticmethod + def create( + model : Union[models.Model, str], + prompt : str, + provider : Union[type[BaseProvider], None] = None, + stream : bool = False, **kwargs) -> Union[CreateResult, str]: + + allowed_models = [ + 'code-davinci-002', + 'text-ada-001', + 'text-babbage-001', + 'text-curie-001', + 'text-davinci-002', + 'text-davinci-003' + ] + + if model not in allowed_models: + raise Exception(f'ValueError: Can\'t use {model} with Completion.create()') + + model, provider = get_model_and_provider(model, provider, stream) + + result = provider.create_completion(model.name, + [{"role": "user", "content": prompt}], stream, **kwargs) + + return result if stream else ''.join(result) \ No newline at end of file -- cgit v1.2.3