OpenAI ChatGPT (GPT-3.5) API: How to implement a for loop with a list of questions in Python?

Question:

I’ve been trying to run a for loop to run through the OpenAI ChatCompletion API, but I don’t seem to make it work – I’m puzzled. My goal is to have a list of all the responses

Basically, I have a list of sentences; let’s call this list input_list. Here’s an example of how this would look like

['Who won the Champions League in 2017?', 'Who won the World Cup in 2014?', ...]

And here’s how I tried to loop through the input:

output = []
for i in range(len(input_list)):
  response = openai.ChatCompletion.create(
      model="gpt-3.5-turbo",
      messages=[
          {"role": "system", "content": "You are a chatbot."},
          {"role": "user", "content": input_list[i]},
          ]
          )
  
  chat_response = response['choices'][0]['message']['content']
  output.append(chat_response)

When running this, however, the responses don’t seem to append – I only ever see the very first answer in the output list. Why is this the case? And how can I fix it? I would like to see all responses.

Many thanks in advance for your help!

Asked By: yannick

||

Answers:

You need to print the output.

If you run test.py the OpenAI API will return a completion:

[‘The winner of the UEFA Champions League in 2017 was Real Madrid.’,
‘The 2014 FIFA World Cup was won by Germany.’]

test.py

import openai
import os

openai.api_key = os.getenv('OPENAI_API_KEY')

input_list = ['Who won the Champions League in 2017?', 'Who won the World Cup in 2014?']

output = []

for i in range(len(input_list)):
  response = openai.ChatCompletion.create(
    model = 'gpt-3.5-turbo',
    messages = [
      {'role': 'system', 'content': 'You are a chatbot.'},
      {'role': 'user', 'content': input_list[i]},
    ]
  )
  
  chat_response = response['choices'][0]['message']['content']
  output.append(chat_response)

print(output)
Answered By: Rok Benko