How to beginner · 3 min read

How to create a response with OpenAI API

Quick answer
Use the openai Python SDK v1+ by importing OpenAI, initializing the client with your API key from os.environ, then call client.chat.completions.create() with your model and messages to get a response. Extract the text from response.choices[0].message.content.

PREREQUISITES

  • Python 3.8+
  • OpenAI API key (free tier works)
  • pip install openai>=1.0

Setup

Install the official openai Python package version 1.0 or higher and set your OpenAI API key as an environment variable.

  • Install package: pip install openai>=1.0
  • Set environment variable in your shell:
    export OPENAI_API_KEY='your_api_key_here' (Linux/macOS)
    setx OPENAI_API_KEY "your_api_key_here" (Windows)
bash
pip install openai>=1.0

Step by step

Use the OpenAI SDK to create a chat completion response with the gpt-4o model. Pass a list of messages with roles and content. Extract the assistant's reply from the response object.

python
import os
from openai import OpenAI

client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])

response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Hello, how are you?"}]
)

print("Assistant reply:", response.choices[0].message.content)
output
Assistant reply: Hello! I'm doing well, thank you. How can I assist you today?

Common variations

You can use different models like gpt-4o-mini for faster responses or gpt-4o for higher quality. To stream responses, set stream=True and iterate over the response chunks. Async usage is supported with async clients. Always use os.environ for API keys and the latest SDK syntax.

python
import os
import asyncio
from openai import OpenAI

async def async_chat():
    client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])
    stream = await client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{"role": "user", "content": "Stream a response please."}],
        stream=True
    )
    async for chunk in stream:
        print(chunk.choices[0].delta.content or "", end="", flush=True)

asyncio.run(async_chat())
output
Streaming response text appears here in chunks...

Troubleshooting

  • If you get an authentication error, verify your OPENAI_API_KEY environment variable is set correctly.
  • If the response is empty, check that your messages parameter is a non-empty list with valid roles (user, assistant, or system).
  • For rate limit errors, consider retrying with exponential backoff or upgrading your plan.

Key Takeaways

  • Always use the latest OpenAI SDK v1+ with OpenAI client and chat.completions.create() method.
  • Pass your API key securely via os.environ environment variables, never hardcode it.
  • Extract the assistant's reply from response.choices[0].message.content.
  • Use stream=True for streaming responses and async clients for asynchronous calls.
  • Verify message format and roles to avoid empty or invalid responses.
Verified 2026-04 · gpt-4o, gpt-4o-mini
Verify ↗