The Problem
I want to integrate OpenAI API in Python to generate custom texts, but I don't have a ready script. In 2 lines, I solve this with simple code that calls the API and returns output.What We Build
In this tutorial, we create a Python script that uses OpenAI API to generate text from user prompts, in about 30 lines of code.Prerequisites
- OpenAI account with active API key
- Python 3.8 or higher installed
- Openai library installed via pip
Step-by-step
Install Dependencies
First, install the openai library with this command. After this step, you have the library ready for use.pip install openai
Configure the API Key
In my setup, I load the API key from an environment variable for security. Here's how I do it: after this step, you have the key configured in the code.import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
Assume you've set the OPENAI_API_KEY variable in your environment.
Create the Function to Generate Text
Now, I write a function that calls the API to generate text. This function takes a prompt and returns the generated text. After this step, you have a function that produces output in 5 seconds for a simple prompt.def generate_text(prompt):
response = openai.Completion.create(
engine="text-davinci-003",
prompt=prompt,
max_tokens=100
)
return response.choices[0].text.strip()
Integrate and Test the Script
In my code, I integrate the function into a main script and test it with a prompt. After this step, you have a script that generates text, for example: "Hello world" from a prompt like "Greet in English".# Full script
if __name__ == "__main__":
prompt = "Write a short description of a cat"
generated_text = generate_text(prompt)
print("Generated text:", generated_text)
Run the script and get an output like: "The cat is an affectionate and independent pet.".
Handle Errors and Improvements
I add error handling to avoid crashes. After this step, you have a robust script that handles 90% of common cases.import traceback
def generate_text(prompt):
try:
response = openai.Completion.create(
engine="text-davinci-003",
prompt=prompt,
max_tokens=100
)
return response.choices[0].text.strip()
except Exception as e:
print("Error:", str(e))
traceback.print_exc()
return "Generation failed"