mirror of
https://github.com/xtekky/gpt4free.git
synced 2025-12-06 02:30:41 -08:00
171 lines
No EOL
4.2 KiB
Markdown
171 lines
No EOL
4.2 KiB
Markdown
### G4F - Legacy API
|
|
|
|
#### ChatCompletion
|
|
|
|
```python
|
|
import g4f
|
|
|
|
g4f.debug.logging = True # Enable debug logging
|
|
g4f.debug.version_check = False # Disable automatic version checking
|
|
print(g4f.Provider.Gemini.params) # Print supported args for Gemini
|
|
|
|
# Using automatic a provider for the given model
|
|
## Streamed completion
|
|
response = g4f.ChatCompletion.create(
|
|
model="gpt-3.5-turbo",
|
|
messages=[{"role": "user", "content": "Hello"}],
|
|
stream=True,
|
|
)
|
|
for message in response:
|
|
print(message, flush=True, end='')
|
|
|
|
## Normal response
|
|
response = g4f.ChatCompletion.create(
|
|
model=g4f.models.gpt_4,
|
|
messages=[{"role": "user", "content": "Hello"}],
|
|
) # Alternative model setting
|
|
|
|
print(response)
|
|
```
|
|
|
|
##### Completion
|
|
|
|
```python
|
|
import g4f
|
|
|
|
allowed_models = [
|
|
'code-davinci-002',
|
|
'text-ada-001',
|
|
'text-babbage-001',
|
|
'text-curie-001',
|
|
'text-davinci-002',
|
|
'text-davinci-003'
|
|
]
|
|
|
|
response = g4f.Completion.create(
|
|
model='text-davinci-003',
|
|
prompt='say this is a test'
|
|
)
|
|
|
|
print(response)
|
|
```
|
|
|
|
##### Providers
|
|
|
|
```python
|
|
import g4f
|
|
|
|
# Print all available providers
|
|
print([
|
|
provider.__name__
|
|
for provider in g4f.Provider.__providers__
|
|
if provider.working
|
|
])
|
|
|
|
# Execute with a specific provider
|
|
response = g4f.ChatCompletion.create(
|
|
model="gpt-3.5-turbo",
|
|
provider=g4f.Provider.Aichat,
|
|
messages=[{"role": "user", "content": "Hello"}],
|
|
stream=True,
|
|
)
|
|
for message in response:
|
|
print(message)
|
|
```
|
|
|
|
|
|
##### Image Upload & Generation
|
|
|
|
Image upload and generation are supported by three main providers:
|
|
|
|
- **Microsoft Copilot & Other GPT-4 Providers:** Utilizes Microsoft's Image Creator.
|
|
- **Google Gemini:** Available for free accounts with IP addresses outside Europe.
|
|
- **OpenaiChat with GPT-4:** Accessible for users with a Plus subscription.
|
|
|
|
```python
|
|
import g4f
|
|
|
|
# Setting up the request for image creation
|
|
response = g4f.ChatCompletion.create(
|
|
model=g4f.models.default, # Using the default model
|
|
provider=g4f.Provider.Gemini, # Specifying the provider as Gemini
|
|
messages=[{"role": "user", "content": "Create an image like this"}],
|
|
image=open("images/g4f.png", "rb"), # Image input can be a data URI, bytes, PIL Image, or IO object
|
|
image_name="g4f.png" # Optional: specifying the filename
|
|
)
|
|
|
|
# Displaying the response
|
|
print(response)
|
|
|
|
from g4f.image import ImageResponse
|
|
|
|
# Get image links from response
|
|
for chunk in g4f.ChatCompletion.create(
|
|
model=g4f.models.default, # Using the default model
|
|
provider=g4f.Provider.OpenaiChat, # Specifying the provider as OpenaiChat
|
|
messages=[{"role": "user", "content": "Create images with dogs"}],
|
|
access_token="...", # Need a access token from a plus user
|
|
stream=True,
|
|
ignore_stream=True
|
|
):
|
|
if isinstance(chunk, ImageResponse):
|
|
print(chunk.images) # Print generated image links
|
|
print(chunk.alt) # Print used prompt for image generation
|
|
```
|
|
|
|
##### Async Support
|
|
|
|
To enhance speed and overall performance, execute providers asynchronously. The total execution time will be determined by the duration of the slowest provider's execution.
|
|
|
|
```python
|
|
import g4f
|
|
import asyncio
|
|
|
|
_providers = [
|
|
g4f.Provider.Aichat,
|
|
g4f.Provider.ChatBase,
|
|
g4f.Provider.Bing,
|
|
g4f.Provider.GptGo,
|
|
g4f.Provider.You,
|
|
g4f.Provider.Yqcloud,
|
|
]
|
|
|
|
async def run_provider(provider: g4f.Provider.BaseProvider):
|
|
try:
|
|
response = await g4f.ChatCompletion.create_async(
|
|
model=g4f.models.default,
|
|
messages=[{"role": "user", "content": "Hello"}],
|
|
provider=provider,
|
|
)
|
|
print(f"{provider.__name__}:", response)
|
|
except Exception as e:
|
|
print(f"{provider.__name__}:", e)
|
|
|
|
async def run_all():
|
|
calls = [
|
|
run_provider(provider) for provider in _providers
|
|
]
|
|
await asyncio.gather(*calls)
|
|
|
|
asyncio.run(run_all())
|
|
```
|
|
|
|
##### Proxy and Timeout Support
|
|
|
|
All providers support specifying a proxy and increasing timeout in the create functions.
|
|
|
|
```python
|
|
import g4f
|
|
|
|
response = g4f.ChatCompletion.create(
|
|
model=g4f.models.default,
|
|
messages=[{"role": "user", "content": "Hello"}],
|
|
proxy="http://host:port",
|
|
# or socks5://user:pass@host:port
|
|
timeout=120, # in secs
|
|
)
|
|
|
|
print(f"Result:", response)
|
|
```
|
|
|
|
[Return to Home](/) |