Spaces:
Sleeping
Sleeping
| import os | |
| import json | |
| import gradio as gr | |
| import requests | |
| # Environment variables for API keys | |
| roblox_api_key = os.getenv("RBXAPIKEY") | |
| roblox_x_api_key = os.getenv("RBXAPIKEY") | |
| universe_id = os.getenv("RBXUNIVERSE") | |
| instance_id = os.getenv("RBXINSTANCE") | |
| def generate_response(prompt, system_prompt, temperature, top_p, seed): | |
| try: | |
| url = f"https://apis.roblox.com/cloud/v2/universes/{universe_id}:GenerateText" | |
| # Prepare the payload | |
| payload = json.dumps({ | |
| "path": f"universes/{universe_id}", | |
| "user_prompt": prompt, | |
| "system_prompt": system_prompt, | |
| "model": "default", | |
| "top_p": top_p, | |
| "seed": seed, | |
| "temperature": temperature, | |
| }) | |
| # Set up the headers | |
| headers = { | |
| 'Roblox-Api-Key': roblox_api_key, | |
| 'x-api-key': roblox_x_api_key, | |
| 'Roblox-Universe-Id': universe_id, | |
| 'Roblox-Instance-Id': instance_id, | |
| 'Content-Type': 'application/json' | |
| } | |
| # Make the API request | |
| response = requests.request("POST", url, headers=headers, data=payload) | |
| print(response) | |
| response.raise_for_status() # Raise an exception for 4XX/5XX responses | |
| response_data = response.json() | |
| text_response = response_data.get("content", "No content returned") | |
| # Convert the full response to a pretty-printed JSON | |
| json_response = json.dumps(response_data, indent=2) | |
| return text_response, json_response | |
| except Exception as e: | |
| return f"Error: {str(e)}", "{}" | |
| # Create the Gradio interface | |
| with gr.Blocks() as app: | |
| gr.Markdown("# Roblox API Interface") | |
| with gr.Row(): | |
| with gr.Column(): | |
| # Input components | |
| prompt = gr.Textbox(label="Prompt", placeholder="Enter your prompt here...", lines=5) | |
| system_prompt = gr.Textbox( | |
| label="System Prompt", | |
| placeholder="act as a very respectful agent, that speaks like a pirate...", | |
| value="act as a very respectful agent, that speaks like a pirate", | |
| lines=3 | |
| ) | |
| with gr.Row(): | |
| temperature = gr.Slider( | |
| minimum=0.0, | |
| maximum=1.0, | |
| value=0.7, | |
| step=0.1, | |
| label="Temperature" | |
| ) | |
| top_p = gr.Slider( | |
| minimum=0.0, | |
| maximum=1.0, | |
| value=1.0, | |
| step=0.05, | |
| label="Top P" | |
| ) | |
| seed = gr.Number( | |
| label="Seed", | |
| value=None, | |
| precision=0 | |
| ) | |
| submit_button = gr.Button("Generate Response") | |
| with gr.Row(): | |
| with gr.Column(): | |
| # Output components | |
| text_output = gr.Textbox(label="Generated Text", lines=8) | |
| json_output = gr.Code(language="json", label="Full API Response") | |
| # Connect the input components to the function and the output components | |
| submit_button.click( | |
| fn=generate_response, | |
| inputs=[prompt, system_prompt, temperature, top_p, seed], | |
| outputs=[text_output, json_output] | |
| ) | |
| # Launch the app | |
| if __name__ == "__main__": | |
| app.launch() |