Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # run the below command in your terminal first
- # pip install flask requests
- from flask import Flask, request, render_template_string
- import requests
- import json
- from datetime import datetime
- app = Flask(__name__)
- HTML = """
- <!doctype html>
- <html>
- <head>
- <title>ChatGPT API Interface</title>
- <style>
- body {
- font-family: Arial, sans-serif;
- background-color: #f4f4f9;
- margin: 40px;
- color: #333;
- }
- form {
- background: white;
- padding: 20px;
- border-radius: 8px;
- box-shadow: 0 2px 4px rgba(0,0,0,0.1);
- }
- input[type=text], input[type=number], select, textarea {
- width: 100%;
- padding: 8px;
- margin: 8px 0;
- display: inline-block;
- border: 1px solid #ccc;
- border-radius: 4px;
- box-sizing: border-box;
- }
- input[type=submit], button {
- width: 100%;
- background-color: #4CAF50;
- color: white;
- padding: 14px 20px;
- margin: 8px 0;
- border: none;
- border-radius: 4px;
- cursor: pointer;
- }
- input[type=submit]:hover, button:hover {
- background-color: #45a049;
- }
- h2 {
- color: #333;
- }
- textarea {
- height: 100px; /* Adjust textarea height */
- }
- .response {
- background: white;
- padding: 10px;
- border-radius: 4px;
- margin-top: 20px;
- box-shadow: 0 2px 4px rgba(0,0,0,0.1);
- }
- .response-header {
- font-weight: bold;
- }
- .response-content {
- white-space: pre-wrap; /* Maintains whitespace formatting */
- margin-top: 5px;
- }
- </style>
- </head>
- <body>
- <h2>ChatGPT API Form</h2>
- <form method="post">
- API Key: <input type="text" name="api_key" value="{{ api_key }}"><br>
- Model: <select name="model">
- <option value="gpt-4o" {% if model == 'gpt-4o' %}selected{% endif %}>gpt-4o</option>
- <option value="gpt-4-turbo" {% if model == 'gpt-4-turbo' %}selected{% endif %}>gpt-4-turbo</option>
- <option value="gpt-4-turbo-2024-04-09" {% if model == 'gpt-4-turbo-2024-04-09' %}selected{% endif %}>gpt-4-turbo-2024-04-09</option>
- <option value="gpt-4" {% if model == 'gpt-4' %}selected{% endif %}>gpt-4</option>
- <option value="gpt-3.5-turbo" {% if model == 'gpt-3.5-turbo' %}selected{% endif %}>gpt-3.5-turbo</option>
- <option value="gpt-3.5" {% if model == 'gpt-3.5' %}selected{% endif %}>gpt-3.5</option>
- </select><br>
- System Message: <textarea name="system_message">{{ system_message }}</textarea><br>
- User Message: <textarea name="user_message">{{ user_message }}</textarea><br>
- Max Tokens: <input type="number" name="max_tokens" value="{{ max_tokens }}"><br>
- Temperature: <input type="number" step="0.01" name="temperature" value="{{ temperature }}"><br>
- <input type="submit" value="Send Request">
- </form>
- {% if response %}
- <div class="response">
- <div class="response-header">Response ID: {{ response.id }}</div>
- <div>Model: {{ response.model }}</div>
- <div>Created: {{ response.created|datetimeformat }}</div>
- <div class="response-content">{{ response.choices[0].message.content }}</div>
- <div>Completion Reason: {{ response.choices[0].finish_reason }}</div>
- <div>Token Usage: Prompt {{ response.usage.prompt_tokens }}, Completion {{ response.usage.completion_tokens }}, Total {{ response.usage.total_tokens }}</div>
- </div>
- {% endif %}
- </body>
- </html>
- """
- @app.template_filter('datetimeformat')
- def datetimeformat(value, format='%Y-%m-%d %H:%M:%S'):
- return datetime.utcfromtimestamp(value).strftime(format)
- @app.route('/', methods=['GET', 'POST'])
- def index():
- defaults = {
- "api_key": "",
- "model": "gpt-4-turbo",
- "system_message": "Start a conversation about space adventures.",
- "user_message": "Tell me a story about a space adventure.",
- "max_tokens": 150,
- "temperature": 0.7,
- "response": None
- }
- if request.method == 'POST':
- defaults.update({
- "api_key": request.form['api_key'],
- "model": request.form['model'],
- "system_message": request.form['system_message'],
- "user_message": request.form['user_message'],
- "max_tokens": int(request.form['max_tokens']),
- "temperature": float(request.form['temperature'])
- })
- data = {
- "model": defaults['model'],
- "messages": [
- {"role": "system", "content": defaults['system_message']},
- {"role": "user", "content": defaults['user_message']}
- ],
- "max_tokens": defaults['max_tokens'],
- "temperature": defaults['temperature']
- }
- headers = {
- 'Authorization': f'Bearer {defaults["api_key"]}',
- 'Content-Type': 'application/json'
- }
- url = "https://api.openai.com/v1/chat/completions"
- response = requests.post(url, headers=headers, data=json.dumps(data))
- defaults['response'] = response.json()
- return render_template_string(HTML, **defaults)
- if __name__ == '__main__':
- app.run(debug=True)
Add Comment
Please, Sign In to add comment