Text-Generator / app.py
IFMedTechdemo's picture
Update app.py
2190920 verified
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,
}
# Add optional parameters
if use_json:
params["json"] = "true"
if system_prompt:
params["system"] = system_prompt
# Encode the prompt
encoded_prompt = urllib.parse.quote(prompt)
# Build URL
url = f"https://text.pollinations.ai/{encoded_prompt}"
try:
response = requests.get(url, params=params)
response.raise_for_status()
if use_json:
# Parse JSON response
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}"
# Create Gradio interface
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
)
# Event handler
submit_btn.click(
fn=get_pollinations_response,
inputs=[prompt_input, model_dropdown, seed_number, json_checkbox, system_input],
outputs=output_text
)
# Also trigger on Enter key press in prompt
prompt_input.submit(
fn=get_pollinations_response,
inputs=[prompt_input, model_dropdown, seed_number, json_checkbox, system_input],
outputs=output_text
)
# Examples
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()