|
|
import gradio as gr |
|
|
import requests |
|
|
import urllib.parse |
|
|
import json |
|
|
|
|
|
def get_pollinations_response(prompt, model="openai", seed=42, use_json=False, system_prompt=""): |
|
|
""" |
|
|
Function to call Pollinations AI API |
|
|
""" |
|
|
params = { |
|
|
"model": model, |
|
|
"seed": seed, |
|
|
} |
|
|
|
|
|
|
|
|
if use_json: |
|
|
params["json"] = "true" |
|
|
if system_prompt: |
|
|
params["system"] = system_prompt |
|
|
|
|
|
|
|
|
encoded_prompt = urllib.parse.quote(prompt) |
|
|
|
|
|
|
|
|
url = f"https://text.pollinations.ai/{encoded_prompt}" |
|
|
|
|
|
try: |
|
|
response = requests.get(url, params=params) |
|
|
response.raise_for_status() |
|
|
|
|
|
if use_json: |
|
|
|
|
|
try: |
|
|
data = json.loads(response.text) |
|
|
return json.dumps(data, indent=2) |
|
|
except json.JSONDecodeError: |
|
|
return f"Error: API returned invalid JSON.\nRaw response: {response.text}" |
|
|
else: |
|
|
return response.text |
|
|
|
|
|
except requests.exceptions.RequestException as e: |
|
|
return f"Error fetching text: {e}" |
|
|
|
|
|
|
|
|
with gr.Blocks(title="AI Text API") as demo: |
|
|
gr.Markdown("# AI Text Generator") |
|
|
gr.Markdown("Generate text using AI API with customizable parameters") |
|
|
|
|
|
with gr.Row(): |
|
|
with gr.Column(): |
|
|
prompt_input = gr.Textbox( |
|
|
label="Prompt", |
|
|
placeholder="Enter your prompt here...", |
|
|
lines=3 |
|
|
) |
|
|
|
|
|
with gr.Row(): |
|
|
model_dropdown = gr.Dropdown( |
|
|
choices=["openai", "mistral","openai-reasoning", "openai-fast","chickytutor"], |
|
|
value="openai", |
|
|
label="Model" |
|
|
) |
|
|
seed_number = gr.Number( |
|
|
value=42, |
|
|
label="Seed", |
|
|
precision=0 |
|
|
) |
|
|
|
|
|
system_input = gr.Textbox( |
|
|
label="System Prompt (Optional)", |
|
|
placeholder="e.g., Explain things like I'm five.", |
|
|
lines=2 |
|
|
) |
|
|
|
|
|
json_checkbox = gr.Checkbox( |
|
|
label="Return as JSON", |
|
|
value=False |
|
|
) |
|
|
|
|
|
submit_btn = gr.Button("Generate", variant="primary") |
|
|
|
|
|
with gr.Column(): |
|
|
output_text = gr.Textbox( |
|
|
label="Response", |
|
|
lines=15, |
|
|
max_lines=20 |
|
|
) |
|
|
|
|
|
|
|
|
submit_btn.click( |
|
|
fn=get_pollinations_response, |
|
|
inputs=[prompt_input, model_dropdown, seed_number, json_checkbox, system_input], |
|
|
outputs=output_text |
|
|
) |
|
|
|
|
|
|
|
|
prompt_input.submit( |
|
|
fn=get_pollinations_response, |
|
|
inputs=[prompt_input, model_dropdown, seed_number, json_checkbox, system_input], |
|
|
outputs=output_text |
|
|
) |
|
|
|
|
|
|
|
|
gr.Examples( |
|
|
examples=[ |
|
|
["Explain the theory of relativity simply", "openai", 42, False, ""], |
|
|
["Write a haiku about coding", "openai", 42, False, "You are a creative poet"], |
|
|
["What is machine learning?", "openai", 42, False, "Explain things like I'm five."], |
|
|
], |
|
|
inputs=[prompt_input, model_dropdown, seed_number, json_checkbox, system_input] |
|
|
) |
|
|
|
|
|
if __name__ == "__main__": |
|
|
demo.launch() |
|
|
|