DEV Community

dan
dan

Posted on • Edited on

6

How to Set Up the OpenAI API with Python and Flask

I found it intriguing to develop a user-friendly front end for OpenAI's API to enhance customization. This project marks the initial stages of that project.

The primary focus was on establishing a strong foundation, given my intent to integrate this tool into my daily routine. By following this guide, you can create a simple web interface for interacting with OpenAI's chatGPT. As a learner myself, I understand some of the challenges in finding guides, so I tailored this content with beginners in mind but also short and to the point.

Moving forward, my goal is to expand this project by adding features like a chat history and individual user accounts. This serves as the first installment of the project.

How to Set Up the OpenAI API with Python and Flask

Create your project folder.



mkdir homeGPT
cd homeGPT

Enter fullscreen mode Exit fullscreen mode




Create your virtual environment




python3 -m venv homeGPT

Enter fullscreen mode Exit fullscreen mode




Activate the virtual environment




source homeGPT/bin/activate

Enter fullscreen mode Exit fullscreen mode




Install flask, requests, python-dotenv




pip install flask requests python-dotenv

Enter fullscreen mode Exit fullscreen mode




Create file app.py. I use vim.




vim app.py

Enter fullscreen mode Exit fullscreen mode




Add this code to app.py




from flask import Flask, render_template, request
import os
from openai import OpenAI
from dotenv import load_dotenv

load_dotenv() # Load environment variables from .env
OPENAI_API_KEY = os.getenv('OPENAI_API_KEY')
client = OpenAI(api_key=OPENAI_API_KEY)

app = Flask(name)

@app.route('/', methods=['GET', 'POST'])
def index():
if request.method == 'POST':
prompt = request.form['prompt']
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a poetic assistant, skilled in explaining complex programming concepts with creative flair."},
{"role": "user", "content": prompt}
]
)
return render_template('home.html', prompt=prompt, response=response.choices[0].message.content)
else:
return render_template('home.html')

if name == 'main':
app.run(debug=True)

Enter fullscreen mode Exit fullscreen mode




Create a templates folder




mkdir templates

Enter fullscreen mode Exit fullscreen mode




Create a file home.html within templates




vim home.html

Enter fullscreen mode Exit fullscreen mode




Add this code to home.html




<!DOCTYPE html>
<html>
<head>
<title>HomeGPT</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.3.1/dist/css/bootstrap.min.css">
</head>
<body>
<div class="container mt-5">
<h1>HomeGPT</h1>
<form method="POST">
<div class="form-group">
<input type="text" name="prompt" class="form-control" placeholder="Enter your prompt">
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>

    {% if response %}
        &lt;div class="mt-3"&gt;
            &lt;h2&gt;The AI Says:&lt;/h2&gt;
            &lt;pre class="bg-light p-3"&gt;{{ response }}&lt;/pre&gt;
        &lt;/div&gt;
    {% endif %}
&lt;/div&gt;
Enter fullscreen mode Exit fullscreen mode

</body>
</html>

Enter fullscreen mode Exit fullscreen mode




Your file structure should look like this.




project_folder/
├── app.py
├── templates/
│ └── home.html

Enter fullscreen mode Exit fullscreen mode




Grab your OpenAI API key Link

Set it as an environment variable



vim ~/.bashrc

Enter fullscreen mode Exit fullscreen mode




Add this line at the end with your own api key.




export OPENAI_API_KEY="yourAPIkey"

Enter fullscreen mode Exit fullscreen mode




This will let you use your new key.




source ~/.bashrc

Enter fullscreen mode Exit fullscreen mode




Now let's test, you should see your api key.




echo $OPENAI_API_KEY

Enter fullscreen mode Exit fullscreen mode




Startup the app




flask run

Enter fullscreen mode Exit fullscreen mode




Assuming no errors, you should see this!

homegpt

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay