dfagg / app.py
jammss's picture
Create app.py
e84fa46 verified
import os
from flask import Flask, request, jsonify
import openai
app = Flask(__name__)
openai.api_key = os.getenv("OPENAI_API_KEY")
global requests_list
requests_list = []
@app.route("/")
def home():
return jsonify(requests_list)
@app.route("/api/completions", methods=["POST"])
def completions():
payload = request.json
requests_list.append(payload)
response = openai.Completion.create(
model=payload["model"],
prompt=payload["prompt"],
max_tokens=payload.get("max_tokens", 100),
temperature=payload.get("temperature", 0.8),
)
return jsonify(response.choices[0].text.strip())
@app.route("/api/chat/completions", methods=["POST"])
def chat():
payload = request.json
requests_list.append(payload)
response = openai.ChatCompletion.create(
model=payload["model"],
messages=payload["messages"]
)
return jsonify(response)
@app.route("/api/edits", methods=["POST"])
def edits():
payload = request.json
requests_list.append(payload)
response = openai.Edit.create(
model=payload["model"],
input=payload["input"],
instruction=payload["instruction"]
)
return jsonify(response.choices[0].text)
@app.route('/api/audio/transcriptions', methods=['POST'])
def transcriptions():
audio_file = request.files['file']
request_info = {
'filename': audio_file.filename,
'content_type': audio_file.content_type,
'headers': dict(request.headers)
}
requests_list.append(request_info)
# save to a temporary file
tmp_file_name = 'temp_audio.wav'
audio_file.save(tmp_file_name)
# use the saved file for transcription
with open(tmp_file_name, 'rb') as f:
response = openai.Audio.transcribe("whisper-1", f)
# delete the temporary file
os.remove(tmp_file_name)
return jsonify(response)
@app.route("/api/images", methods=["POST"])
def images():
payload = request.json
requests_list.append(payload)
response = openai.Image.create(
prompt=payload["prompt"],
n=payload.get("n", 1),
size=payload.get("size", "512x512")
)
return jsonify(response)
@app.route("/api/images/edits", methods=["POST"])
def image_edits():
image_file = request.files["image"]
prompt = request.form["prompt"]
n = int(request.form.get("n", 1))
size = request.form.get("size", "1024x1024")
response_format = request.form.get("response_format", "url")
request_info = {
'filename': image_file.filename,
'content_type': image_file.content_type,
'headers': dict(request.headers),
'prompt': prompt,
'n': n,
'size': size,
'response_format': response_format
}
requests_list.append(request_info)
response = openai.Image.create_edit(
image=image_file,
prompt=prompt,
n=n,
size=size,
response_format=response_format
)
return jsonify(response)
@app.route("/api/images/variations", methods=["POST"])
def image_variations():
image_file = request.files["image"]
n = request.form.get("n", 1)
size = request.form.get("size", "1024x1024")
request_info = {
'filename': image_file.filename,
'content_type': image_file.content_type,
'headers': dict(request.headers),
'n': n,
'size': size
}
requests_list.append(request_info)
response = openai.Image.create_variation(
image=image_file,
n=int(n),
size=size
)
return jsonify(response)
@app.route("/api/moderations", methods=["POST"])
def moderations():
payload = request.json
requests_list.append(payload)
response = openai.Moderation.create(
input=payload["input"]
)
return jsonify(response.results)
if __name__ == "__main__":
port = int(os.environ.get("PORT", 5000))
app.run(host="0.0.0.0", port=port)