|
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) |
|
|
|
|
|
|
|
|
|
|
|
tmp_file_name = 'temp_audio.wav' |
|
|
|
audio_file.save(tmp_file_name) |
|
|
|
|
|
|
|
|
|
|
|
with open(tmp_file_name, 'rb') as f: |
|
|
|
response = openai.Audio.transcribe("whisper-1", f) |
|
|
|
|
|
|
|
|
|
|
|
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) |