PhilSad
convert to flask + cors
a3c44d4
from flask import Flask, request, jsonify, abort
import os
import httpx
from flask_cors import CORS
# Load Mistral API token from environment variables
MISTRAL_API_TOKEN = os.getenv("MISTRAL_API_TOKEN")
if not MISTRAL_API_TOKEN:
raise EnvironmentError("MISTRAL_API_TOKEN environment variable not set.")
# Initialize Flask app
app = Flask(__name__)
CORS(app)
@app.route("/proxy/mistral", methods=["POST"])
def proxy_mistral():
"""Proxy endpoint to send requests to Mistral API."""
# Mistral endpoint and headers
url = "https://api.mistral.ai/v1/chat/completions"
headers = {
"Authorization": f"Bearer {MISTRAL_API_TOKEN}",
"Content-Type": "application/json"
}
# Parse the JSON body from the incoming request
request_data = request.get_json()
print("Attempting to send the request to Mistral")
print(request_data)
# Send the request to the Mistral API using httpx (synchronous)
with httpx.Client() as client:
response = client.post(url, headers=headers, json=request_data, timeout=None)
# If Mistral doesn’t return a 200, propagate the error
if response.status_code != 200:
# In Flask, you can either return an error explicitly:
# return (response.text, response.status_code)
# or raise an HTTPException via `abort()`.
return (response.text, response.status_code)
# Print the Mistral API response (for debug) and return it
print("Mistral response:", response.json())
return jsonify(response.json())
if __name__ == "__main__":
# Run the Flask app (use your desired host and port)
app.run(host="0.0.0.0", port=8000, debug=True)