#2516 ChatGPT o1-preview: Python Application to Read/Submit CSV File of Prompts to ChatGPT
#2516 Create: Python application to read a CSV file of system instructions and user prompts and submit them to ChatGPT.
The application shall create an HTML landing page, creating a list of links to each of the instructions and prompts, and create separate HTML pages to show each prompt and response.
The CSV includes a key field with possible values "Required Input", "System Instructions", "Prompt" and "Comment". The application shall prompt the user for each Required Input value and substitute it into each system instruction and prompt as needed.
The application shall sequence through the system instructions and prompts, submitting each to ChatGPT and logging the prompts and responses as previously stated.
...[Thought for 9 seconds]...
Creating a Python app
I’m outlining a Python application that reads a CSV file of system instructions and user prompts. It will generate an HTML landing page with links to each instruction and prompt, and create separate HTML pages for each prompt and response.
Understanding the task
I’m reading through the application's requirements: reading a CSV file, processing inputs, interacting with ChatGPT, and logging responses. The interface will involve HTML for tracking interactions.
CHUNK:
I’m gathering details on reading a CSV file with key/value pairs, where "Required Input" prompts the user, sequences system instructions and prompts, submits them to ChatGPT, and creates an HTML landing page with separate HTML pages for each prompt and response.
Building the application
I’m gathering requirements for an application that reads CSV files, processes data, collects user input, substitutes inputs into system instructions, sends them to ChatGPT, logs the prompts and responses, and creates HTML pages for each.
Formulating the code plan
I’m pulling together the necessary modules and outlining the steps to read the CSV file, gather inputs, substitute those inputs into system instructions, call the OpenAI API, log prompts and responses, and generate HTML pages.
Crafting the plan
I’m laying out a step-by-step strategy: reading CSV files, interacting with the OpenAI API, and creating HTML files with responses. Ensuring necessary API key inclusion is crucial.
Here's a Python application that fulfills your requirements:
import csv
import openai
import os
import re
openai.api_key = 'YOUR_OPENAI_API_KEY'
def read_csv(file_path):
data = []
with open(file_path, newline='', encoding='utf-8') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
data.append(row)
return data
def collect_required_inputs(data):
inputs = {}
for row in data:
if row['Key'] == 'Required Input':
input_name = row['Value']
user_input = input(f"Please provide input for '{input_name}': ")
inputs[input_name] = user_input
return inputs
def substitute_inputs(text, inputs):
pattern = re.compile(r"\{\{(.*?)\}\}")
return pattern.sub(lambda m: inputs.get(m.group(1).strip(), m.group(0)), text)
def generate_responses(data, inputs):
responses = []
system_message = ''
for idx, row in enumerate(data):
key = row['Key']
value = substitute_inputs(row['Value'], inputs)
if key == 'System Instructions':
system_message = value
elif key == 'Prompt':
messages = []
if system_message:
messages.append({"role": "system", "content": system_message})
messages.append({"role": "user", "content": value})
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=messages
)
responses.append({
'index': idx,
'prompt': value,
'response': response['choices'][0]['message']['content']
})
return responses
def create_html_pages(responses):
if not os.path.exists('output'):
os.makedirs('output')
links = []
for resp in responses:
filename = f"output/prompt_response_{resp['index']}.html"
with open(filename, 'w', encoding='utf-8') as f:
f.write(f"<h1>Prompt</h1><p>{resp['prompt']}</p>")
f.write(f"<h1>Response</h1><p>{resp['response']}</p>")
links.append(f"<li><a href='{filename}'>Prompt {resp['index']}</a></li>")
with open('output/index.html', 'w', encoding='utf-8') as f:
f.write("<h1>Prompt and Response Links</h1><ul>")
f.write('\n'.join(links))
f.write("</ul>")
def main():
csv_file_path = 'input.csv'
data = read_csv(csv_file_path)
inputs = collect_required_inputs(data)
responses = generate_responses(data, inputs)
create_html_pages(responses)
print("HTML pages have been generated in the 'output' directory.")
if __name__ == "__main__":
main()
Instructions to use the application:
Install Required Libraries:
Make sure you have the openai
library installed. If not, install it using:
Set Your OpenAI API Key:
Replace 'YOUR_OPENAI_API_KEY'
with your actual OpenAI API key in the code.
Prepare Your CSV File:
Create a CSV file named input.csv
(or update the path in the code) with the following columns: Key
, Value
. Populate it with your data.
Example CSV content:
Key,Value
Required Input,Name
System Instructions,You are a helpful assistant.
Prompt,Hello {{Name}}, how can I assist you today?
Run the Application:
Execute the script:
python your_script_name.py
Provide Required Inputs:
The application will prompt you to enter values for each Required Input
specified in your CSV.
View Generated HTML Pages:
After running, the application will create an output
directory containing the HTML files. Open output/index.html
in a web browser to see the landing page with links to each prompt and response.
Notes:
Input Substitution:
The application looks for placeholders in the format {{PlaceholderName}}
within your system instructions and prompts. It replaces them with the corresponding user-provided inputs.
HTML Generation:
Each prompt-response pair is saved in a separate HTML file for easy viewing. The landing page (index.html
) links to all these files.
Error Handling:
For brevity, error handling is minimal. You might want to add checks for missing keys or handle API errors in a production environment.
Example Flow:
Given the CSV content above, when you run the script, it will ask:
Please provide input for 'Name':
If you enter Alice
, the prompt sent to ChatGPT will be:
Hello Alice, how can I assist you today?
The assistant's response will be saved and linked in the generated HTML files.
Disclaimer: Ensure you comply with OpenAI's usage policies when using the API, especially regarding the handling of user data and generated content.
From <https://chatgpt.com/> ChatGPT o1-preview
Comments
Post a Comment